diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000000..d25d71bcc9 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,4 @@ +.git +.github +resources/materials +CuraEngine \ No newline at end of file diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md index b78b9b91a2..c69cf91433 100644 --- a/.github/ISSUE_TEMPLATE.md +++ b/.github/ISSUE_TEMPLATE.md @@ -1,9 +1,12 @@ @@ -23,6 +26,9 @@ Thank you for using Cura! **Display Driver** +**Printer** + + **Steps to Reproduce** diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000000..68255c56b9 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,45 @@ +FROM ultimaker/cura-build-environment:1 + +# Environment vars for easy configuration +ENV CURA_APP_DIR=/srv/cura + +# Ensure our sources dir exists +RUN mkdir $CURA_APP_DIR + +# Setup CuraEngine +ENV CURA_ENGINE_BRANCH=master +WORKDIR $CURA_APP_DIR +RUN git clone -b $CURA_ENGINE_BRANCH --depth 1 https://github.com/Ultimaker/CuraEngine +WORKDIR $CURA_APP_DIR/CuraEngine +RUN mkdir build +WORKDIR $CURA_APP_DIR/CuraEngine/build +RUN cmake3 .. +RUN make +RUN make install + +# TODO: setup libCharon + +# Setup Uranium +ENV URANIUM_BRANCH=master +WORKDIR $CURA_APP_DIR +RUN git clone -b $URANIUM_BRANCH --depth 1 https://github.com/Ultimaker/Uranium + +# Setup materials +ENV MATERIALS_BRANCH=master +WORKDIR $CURA_APP_DIR +RUN git clone -b $MATERIALS_BRANCH --depth 1 https://github.com/Ultimaker/fdm_materials materials + +# Setup Cura +WORKDIR $CURA_APP_DIR/Cura +ADD . . +RUN mv $CURA_APP_DIR/materials resources/materials + +# Make sure Cura can find CuraEngine +RUN ln -s /usr/local/bin/CuraEngine $CURA_APP_DIR/Cura + +# Run Cura +WORKDIR $CURA_APP_DIR/Cura +ENV PYTHONPATH=${PYTHONPATH}:$CURA_APP_DIR/Uranium +RUN chmod +x ./CuraEngine +RUN chmod +x ./run_in_docker.sh +CMD "./run_in_docker.sh" diff --git a/Jenkinsfile b/Jenkinsfile index 20c7303719..83104aea18 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -1,5 +1,5 @@ -timeout(time: 2, unit: "HOURS") { - parallel_nodes(['linux && cura', 'windows && cura']) { +parallel_nodes(['linux && cura', 'windows && cura']) { + timeout(time: 2, unit: "HOURS") { // Prepare building stage('Prepare') { // Ensure we start with a clean build directory. diff --git a/README.md b/README.md index 6ea839a300..70466e9c22 100644 --- a/README.md +++ b/README.md @@ -27,6 +27,10 @@ Build scripts ------------- Please checkout [cura-build](https://github.com/Ultimaker/cura-build) for detailed building instructions. +Running from Source +------------- +Please check our [Wiki page](https://github.com/Ultimaker/Cura/wiki/Running-Cura-from-Source) for details about running Cura from source. + Plugins ------------- Please check our [Wiki page](https://github.com/Ultimaker/Cura/wiki/Plugin-Directory) for details about creating and using plugins. @@ -41,25 +45,7 @@ Please check out [Wiki page](https://github.com/Ultimaker/Cura/wiki/Cura-Setting Translating Cura ---------------- -If you'd like to contribute a translation of Cura, please first look for [any existing translation](https://github.com/Ultimaker/Cura/tree/master/resources/i18n). If your language is already there in the source code but not in Cura's interface, it may be partially translated. - -There are four files that need to be translated for Cura: -1. https://github.com/Ultimaker/Cura/blob/master/resources/i18n/cura.pot -2. https://github.com/Ultimaker/Cura/blob/master/resources/i18n/fdmextruder.def.json.pot -3. https://github.com/Ultimaker/Cura/blob/master/resources/i18n/fdmprinter.def.json.pot (This one is the most work.) -4. https://github.com/Ultimaker/Uranium/blob/master/resources/i18n/uranium.pot - -Copy these files and rename them to `*.po` (remove the `t`). Then create the actual translations by filling in the empty `msgstr` entries. These are gettext files, which are plain text so you can open them with any text editor such as Notepad or GEdit, but it is probably easier with a specialised tool such as [POEdit](https://poedit.net/) or [Virtaal](http://virtaal.translatehouse.org/). - -Do not hestiate to ask us about a translation or the meaning of some text via Github Issues. - -Once the translation is complete, it's probably best to test them in Cura. Use your favourite software to convert the .po file to a .mo file (such as [GetText](https://www.gnu.org/software/gettext/)). Then put the .mo files in the `.../resources/i18n//LC_MESSAGES` folder in your Cura installation. Then find your Cura configuration file (next to the log as described above, except on Linux where it is located in `~/.config/cura`) and change the language preference to the name of the folder you just created. Then start Cura. If working correctly, your Cura should now be translated. - -To submit your translation, ideally you would make two pull requests where all `*.po` files are located in that same `` folder in the resources of both the Cura and Uranium repositories. Put `cura.po`, `fdmprinter.def.json.po` and `fdmextruder.def.json.po` in the Cura repository, and put `uranium.po` in the Uranium repository. Then submit the pull requests to Github. For people with less experience with Git, you can also e-mail the translations to the e-mail address listed at the top of the [cura.pot](https://github.com/Ultimaker/Cura/blob/master/resources/i18n/cura.pot) file as the `Report-Msgid-Bugs-To` entry and we'll make sure it gets checked and included. - -After the translation is submitted, the Cura maintainers will check for its completeness and check whether it is consistent. We will take special care to look for common mistakes, such as translating mark-up `` code and such. We are often not fluent in every language, so we expect the translator and the international users to make corrections where necessary. Of course, there will always be some mistakes in every translation. - -When the next Cura release comes around, some of the texts will have changed and some new texts will have been added. Around the time when the beta is released we will invoke a string freeze, meaning that no developer is allowed to make changes to the texts. Then we will update the translation template `.pot` files and ask all our translators to update their translations. If you are unable to update the translation in time for the actual release, we will remove the language from the drop-down menu in the Preferences window. The translation stays in Cura however, so that someone might pick it up again later and update it with the newest texts. Also, users who had previously selected the language can still continue Cura in their language but English text will appear among the original text. +Please check out [Wiki page](https://github.com/Ultimaker/Cura/wiki/Translating-Cura) about how to translate Cura into other languages. License ---------------- diff --git a/cura.appdata.xml b/cura.appdata.xml index 5c67814fae..2d8bff15ec 100644 --- a/cura.appdata.xml +++ b/cura.appdata.xml @@ -3,7 +3,7 @@ cura.desktop CC0-1.0 - AGPL-3.0 and CC-BY-SA-4.0 + LGPL-3.0 and CC-BY-SA-4.0 Cura The world's most advanced 3d printer software @@ -15,7 +15,7 @@

  • Novices can start printing right away
  • -
  • Experts are able to customize 200 settings to achieve the best results
  • +
  • Experts are able to customize 300 settings to achieve the best results
  • Optimized profiles for Ultimaker materials
  • Supported by a global network of Ultimaker certified service partners
  • Print multiple objects at once with different settings for each object
  • @@ -26,6 +26,6 @@ http://software.ultimaker.com/Cura.png - https://ultimaker.com/en/products/cura-software + https://ultimaker.com/en/products/cura-software?utm_source=cura&utm_medium=software&utm_campaign=resources Cura diff --git a/cura/BuildVolume.py b/cura/BuildVolume.py index 7a495b2064..d93ce1107d 100755 --- a/cura/BuildVolume.py +++ b/cura/BuildVolume.py @@ -1,4 +1,4 @@ -# Copyright (c) 2017 Ultimaker B.V. +# Copyright (c) 2018 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. from cura.Scene.CuraSceneNode import CuraSceneNode @@ -74,6 +74,11 @@ class BuildVolume(SceneNode): self._adhesion_type = None self._platform = Platform(self) + self._build_volume_message = Message(catalog.i18nc("@info:status", + "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."), title = catalog.i18nc("@info:title", "Build Volume")) + self._global_container_stack = None Application.getInstance().globalContainerStackChanged.connect(self._onStackChanged) self._onStackChanged() @@ -97,11 +102,6 @@ class BuildVolume(SceneNode): self._setting_change_timer.setSingleShot(True) self._setting_change_timer.timeout.connect(self._onSettingChangeTimerFinished) - self._build_volume_message = Message(catalog.i18nc("@info:status", - "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."), title = catalog.i18nc("@info:title","Build Volume")) - # Must be after setting _build_volume_message, apparently that is used in getMachineManager. # activeQualityChanged is always emitted after setActiveVariant, setActiveMaterial and setActiveQuality. # Therefore this works. @@ -111,6 +111,9 @@ class BuildVolume(SceneNode): # but it does not update the disallowed areas after material change Application.getInstance().getMachineManager().activeStackChanged.connect(self._onStackChanged) + # Enable and disable extruder + Application.getInstance().getMachineManager().extruderChanged.connect(self.updateNodeBoundaryCheck) + # list of settings which were updated self._changed_settings_since_last_rebuild = [] @@ -133,6 +136,7 @@ class BuildVolume(SceneNode): if active_extruder_changed is not None: node.callDecoration("getActiveExtruderChangedSignal").disconnect(self._updateDisallowedAreasAndRebuild) node.decoratorsChanged.disconnect(self._updateNodeListeners) + self._updateDisallowedAreasAndRebuild() # make sure we didn't miss anything before we updated the node listeners self._scene_objects = new_scene_objects self._onSettingPropertyChanged("print_sequence", "value") # Create fake event, so right settings are triggered. @@ -147,7 +151,6 @@ class BuildVolume(SceneNode): active_extruder_changed = node.callDecoration("getActiveExtruderChangedSignal") if active_extruder_changed is not None: active_extruder_changed.connect(self._updateDisallowedAreasAndRebuild) - self._updateDisallowedAreasAndRebuild() def setWidth(self, width): if width is not None: @@ -195,7 +198,8 @@ class BuildVolume(SceneNode): return True - ## For every sliceable node, update outsideBuildArea + ## For every sliceable node, update node._outside_buildarea + # def updateNodeBoundaryCheck(self): root = Application.getInstance().getController().getScene().getRoot() nodes = list(BreadthFirstIterator(root)) @@ -212,12 +216,30 @@ class BuildVolume(SceneNode): for node in nodes: # Need to check group nodes later - self.checkBoundsAndUpdate(node, bounds = build_volume_bounding_box) + if node.callDecoration("isGroup"): + group_nodes.append(node) # Keep list of affected group_nodes + + if node.callDecoration("isSliceable") or node.callDecoration("isGroup"): + if node.collidesWithBbox(build_volume_bounding_box): + node.setOutsideBuildArea(True) + continue + + if node.collidesWithArea(self.getDisallowedAreas()): + node.setOutsideBuildArea(True) + continue + + # 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: + node.setOutsideBuildArea(True) + continue + + node.setOutsideBuildArea(False) # Group nodes should override the _outside_buildarea property of their children. for group_node in group_nodes: for child_node in group_node.getAllChildren(): - child_node._outside_buildarea = group_node._outside_buildarea + 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): @@ -237,24 +259,20 @@ class BuildVolume(SceneNode): build_volume_bounding_box = bounds if node.callDecoration("isSliceable") or node.callDecoration("isGroup"): - bbox = node.getBoundingBox() - - # Mark the node as outside the build volume if the bounding box test fails. - if build_volume_bounding_box.intersectsBox(bbox) != AxisAlignedBox.IntersectionResult.FullIntersection: + if node.collidesWithBbox(build_volume_bounding_box): + node.setOutsideBuildArea(True) + return + + if node.collidesWithArea(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: node.setOutsideBuildArea(True) return - convex_hull = self.callDecoration("getConvexHull") - if convex_hull: - if not convex_hull.isValid(): - return - # Check for collisions between disallowed areas and the object - for area in self.getDisallowedAreas(): - overlap = convex_hull.intersectsPolygon(area) - if overlap is None: - continue - node.setOutsideBuildArea(True) - return node.setOutsideBuildArea(False) ## Recalculates the build volume & disallowed areas. @@ -714,12 +732,17 @@ 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 - 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], - ]) + 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], + ]) 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. @@ -798,6 +821,7 @@ 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. result[extruder_id] = [] for polygon in machine_disallowed_polygons: @@ -908,8 +932,8 @@ class BuildVolume(SceneNode): # stack. # # \return A sequence of setting values, one for each extruder. - def _getSettingFromAllExtruders(self, setting_key, property = "value"): - all_values = ExtruderManager.getInstance().getAllExtruderSettings(setting_key, property) + def _getSettingFromAllExtruders(self, setting_key): + 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"): @@ -922,7 +946,7 @@ class BuildVolume(SceneNode): # 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: + if not self._global_container_stack or not self._global_container_stack.extruders: return 0 container_stack = self._global_container_stack @@ -1000,7 +1024,7 @@ 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_size", "prime_tower_position_x", "prime_tower_position_y"] + _tower_settings = ["prime_tower_enable", "prime_tower_circular", "prime_tower_size", "prime_tower_position_x", "prime_tower_position_y"] _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"] _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. diff --git a/cura/CrashHandler.py b/cura/CrashHandler.py index b5d4001fe2..c082578218 100644 --- a/cura/CrashHandler.py +++ b/cura/CrashHandler.py @@ -1,7 +1,6 @@ -# Copyright (c) 2017 Ultimaker B.V. +# Copyright (c) 2018 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. -import sys import platform import traceback import faulthandler @@ -13,15 +12,19 @@ import json import ssl import urllib.request import urllib.error +import shutil -from PyQt5.QtCore import QT_VERSION_STR, PYQT_VERSION_STR, QCoreApplication -from PyQt5.QtWidgets import QDialog, QDialogButtonBox, QVBoxLayout, QLabel, QTextEdit, QGroupBox +from PyQt5.QtCore import QT_VERSION_STR, PYQT_VERSION_STR, Qt, QUrl +from PyQt5.QtWidgets import QDialog, QDialogButtonBox, QVBoxLayout, QLabel, QTextEdit, QGroupBox, QCheckBox, QPushButton +from PyQt5.QtGui import QDesktopServices +from UM.Resources import Resources from UM.Application import Application from UM.Logger import Logger from UM.View.GL.OpenGL import OpenGL from UM.i18n import i18nCatalog from UM.Platform import Platform +from UM.Resources import Resources catalog = i18nCatalog("cura") @@ -49,10 +52,11 @@ fatal_exception_types = [ class CrashHandler: crash_url = "https://stats.ultimaker.com/api/cura" - def __init__(self, exception_type, value, tb): + def __init__(self, exception_type, value, tb, has_started = True): self.exception_type = exception_type self.value = value self.traceback = tb + self.has_started = has_started self.dialog = None # Don't create a QDialog before there is a QApplication # While we create the GUI, the information will be stored for sending afterwards @@ -64,21 +68,143 @@ class CrashHandler: for part in line.rstrip("\n").split("\n"): Logger.log("c", part) - if not CuraDebugMode and exception_type not in fatal_exception_types: + # If Cura has fully started, we only show fatal errors. + # If Cura has not fully started yet, we always show the early crash dialog. Otherwise, Cura will just crash + # without any information. + if has_started and exception_type not in fatal_exception_types: return - application = QCoreApplication.instance() - if not application: - sys.exit(1) + if not has_started: + self._send_report_checkbox = None + self.early_crash_dialog = self._createEarlyCrashDialog() self.dialog = QDialog() self._createDialog() + def _createEarlyCrashDialog(self): + dialog = QDialog() + dialog.setMinimumWidth(500) + dialog.setMinimumHeight(170) + dialog.setWindowTitle(catalog.i18nc("@title:window", "Cura Crashed")) + dialog.finished.connect(self._closeEarlyCrashDialog) + + layout = QVBoxLayout(dialog) + + label = QLabel() + label.setText(catalog.i18nc("@label crash message", """

    A fatal error has occurred.

    +

    Unfortunately, Cura encountered an unrecoverable error during start up. It was possibly caused by some incorrect configuration files. We suggest to backup and reset your configuration.

    +

    Backups can be found in the configuration folder.

    +

    Please send us this Crash Report to fix the problem.

    + """)) + label.setWordWrap(True) + layout.addWidget(label) + + # "send report" check box and show details + self._send_report_checkbox = QCheckBox(catalog.i18nc("@action:button", "Send crash report to Ultimaker"), dialog) + self._send_report_checkbox.setChecked(True) + + show_details_button = QPushButton(catalog.i18nc("@action:button", "Show detailed crash report"), dialog) + show_details_button.setMaximumWidth(200) + show_details_button.clicked.connect(self._showDetailedReport) + + show_configuration_folder_button = QPushButton(catalog.i18nc("@action:button", "Show configuration folder"), dialog) + show_configuration_folder_button.setMaximumWidth(200) + show_configuration_folder_button.clicked.connect(self._showConfigurationFolder) + + layout.addWidget(self._send_report_checkbox) + layout.addWidget(show_details_button) + layout.addWidget(show_configuration_folder_button) + + # "backup and start clean" and "close" buttons + buttons = QDialogButtonBox() + buttons.addButton(QDialogButtonBox.Close) + buttons.addButton(catalog.i18nc("@action:button", "Backup and Reset Configuration"), QDialogButtonBox.AcceptRole) + buttons.rejected.connect(self._closeEarlyCrashDialog) + buttons.accepted.connect(self._backupAndStartClean) + + layout.addWidget(buttons) + + return dialog + + def _closeEarlyCrashDialog(self): + if self._send_report_checkbox.isChecked(): + self._sendCrashReport() + os._exit(1) + + def _backupAndStartClean(self): + # backup the current cura directories and create clean ones + from cura.CuraVersion import CuraVersion + from UM.Resources import Resources + # The early crash may happen before those information is set in Resources, so we need to set them here to + # make sure that Resources can find the correct place. + Resources.ApplicationIdentifier = "cura" + Resources.ApplicationVersion = CuraVersion + config_path = Resources.getConfigStoragePath() + data_path = Resources.getDataStoragePath() + cache_path = Resources.getCacheStoragePath() + + folders_to_backup = [] + folders_to_remove = [] # only cache folder needs to be removed + + folders_to_backup.append(config_path) + if data_path != config_path: + folders_to_backup.append(data_path) + + # Only remove the cache folder if it's not the same as data or config + if cache_path not in (config_path, data_path): + folders_to_remove.append(cache_path) + + for folder in folders_to_remove: + shutil.rmtree(folder, ignore_errors = True) + for folder in folders_to_backup: + base_name = os.path.basename(folder) + root_dir = os.path.dirname(folder) + + import datetime + date_now = datetime.datetime.now().strftime("%Y%m%d_%H%M%S") + idx = 0 + file_name = base_name + "_" + date_now + zip_file_path = os.path.join(root_dir, file_name + ".zip") + while os.path.exists(zip_file_path): + idx += 1 + file_name = base_name + "_" + date_now + "_" + idx + zip_file_path = os.path.join(root_dir, file_name + ".zip") + try: + # only create the zip backup when the folder exists + if os.path.exists(folder): + # remove the .zip extension because make_archive() adds it + zip_file_path = zip_file_path[:-4] + shutil.make_archive(zip_file_path, "zip", root_dir = root_dir, base_dir = base_name) + + # remove the folder only when the backup is successful + shutil.rmtree(folder, ignore_errors = True) + + # create an empty folder so Resources will not try to copy the old ones + os.makedirs(folder, 0o0755, exist_ok=True) + + except Exception as e: + Logger.logException("e", "Failed to backup [%s] to file [%s]", folder, zip_file_path) + if not self.has_started: + print("Failed to backup [%s] to file [%s]: %s", folder, zip_file_path, e) + + self.early_crash_dialog.close() + + def _showConfigurationFolder(self): + path = Resources.getConfigStoragePath(); + QDesktopServices.openUrl(QUrl.fromLocalFile( path )) + + def _showDetailedReport(self): + self.dialog.exec_() + ## Creates a modal dialog. def _createDialog(self): self.dialog.setMinimumWidth(640) self.dialog.setMinimumHeight(640) self.dialog.setWindowTitle(catalog.i18nc("@title:window", "Crash Report")) + # if the application has not fully started, this will be a detailed report dialog which should not + # close the application when it's closed. + if self.has_started: + self.dialog.finished.connect(self._close) layout = QVBoxLayout(self.dialog) @@ -89,6 +215,9 @@ class CrashHandler: layout.addWidget(self._userDescriptionWidget()) layout.addWidget(self._buttonsWidget()) + def _close(self): + os._exit(1) + def _messageWidget(self): label = QLabel() label.setText(catalog.i18nc("@label crash message", """

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

    @@ -130,7 +259,7 @@ class CrashHandler: opengl_instance = OpenGL.getInstance() if not opengl_instance: self.data["opengl"] = {"version": "n/a", "vendor": "n/a", "type": "n/a"} - return catalog.i18nc("@label", "not yet initialised
    ") + return catalog.i18nc("@label", "Not yet initialized
    ") info = "
      " info += catalog.i18nc("@label OpenGL version", "
    • OpenGL Version: {version}
    • ").format(version = opengl_instance.getOpenGLVersion()) @@ -148,8 +277,8 @@ class CrashHandler: layout = QVBoxLayout() text_area = QTextEdit() - trace_dict = traceback.format_exception(self.exception_type, self.value, self.traceback) - trace = "".join(trace_dict) + trace_list = traceback.format_exception(self.exception_type, self.value, self.traceback) + trace = "".join(trace_list) text_area.setText(trace) text_area.setReadOnly(True) @@ -157,14 +286,28 @@ class CrashHandler: group.setLayout(layout) # Parsing all the information to fill the dictionary - summary = trace_dict[len(trace_dict)-1].rstrip("\n") - module = trace_dict[len(trace_dict)-2].rstrip("\n").split("\n") + summary = "" + if len(trace_list) >= 1: + summary = trace_list[len(trace_list)-1].rstrip("\n") + module = [""] + if len(trace_list) >= 2: + module = trace_list[len(trace_list)-2].rstrip("\n").split("\n") module_split = module[0].split(", ") - filepath = module_split[0].split("\"")[1] + + filepath_directory_split = module_split[0].split("\"") + filepath = "" + if len(filepath_directory_split) > 1: + filepath = filepath_directory_split[1] directory, filename = os.path.split(filepath) - line = int(module_split[1].lstrip("line ")) - function = module_split[2].lstrip("in ") - code = module[1].lstrip(" ") + line = "" + if len(module_split) > 1: + line = int(module_split[1].lstrip("line ")) + function = "" + if len(module_split) > 2: + function = module_split[2].lstrip("in ") + code = "" + if len(module) > 1: + code = module[1].lstrip(" ") # Using this workaround for a cross-platform path splitting split_path = [] @@ -189,7 +332,7 @@ class CrashHandler: json_metadata_file = os.path.join(directory, "plugin.json") try: - with open(json_metadata_file, "r") as f: + with open(json_metadata_file, "r", encoding = "utf-8") as f: try: metadata = json.loads(f.read()) module_version = metadata["version"] @@ -217,9 +360,9 @@ class CrashHandler: text_area = QTextEdit() tmp_file_fd, tmp_file_path = tempfile.mkstemp(prefix = "cura-crash", text = True) os.close(tmp_file_fd) - with open(tmp_file_path, "w") as f: + with open(tmp_file_path, "w", encoding = "utf-8") as f: faulthandler.dump_traceback(f, all_threads=True) - with open(tmp_file_path, "r") as f: + with open(tmp_file_path, "r", encoding = "utf-8") as f: logdata = f.read() text_area.setText(logdata) @@ -249,9 +392,13 @@ class CrashHandler: def _buttonsWidget(self): buttons = QDialogButtonBox() buttons.addButton(QDialogButtonBox.Close) - buttons.addButton(catalog.i18nc("@action:button", "Send report"), QDialogButtonBox.AcceptRole) + # Like above, this will be served as a separate detailed report dialog if the application has not yet been + # fully loaded. In this case, "send report" will be a check box in the early crash dialog, so there is no + # need for this extra button. + if self.has_started: + buttons.addButton(catalog.i18nc("@action:button", "Send report"), QDialogButtonBox.AcceptRole) + buttons.accepted.connect(self._sendCrashReport) buttons.rejected.connect(self.dialog.close) - buttons.accepted.connect(self._sendCrashReport) return buttons @@ -269,15 +416,23 @@ class CrashHandler: kwoptions["context"] = ssl._create_unverified_context() Logger.log("i", "Sending crash report info to [%s]...", self.crash_url) + if not self.has_started: + print("Sending crash report info to [%s]...\n" % self.crash_url) try: f = urllib.request.urlopen(self.crash_url, **kwoptions) Logger.log("i", "Sent crash report info.") + if not self.has_started: + print("Sent crash report info.\n") f.close() - except urllib.error.HTTPError: + except urllib.error.HTTPError as e: Logger.logException("e", "An HTTP error occurred while trying to send crash report") - except Exception: # We don't want any exception to cause problems + if not self.has_started: + print("An HTTP error occurred while trying to send crash report: %s" % e) + except Exception as e: # We don't want any exception to cause problems Logger.logException("e", "An exception occurred while trying to send crash report") + if not self.has_started: + print("An exception occurred while trying to send crash report: %s" % e) os._exit(1) diff --git a/cura/CuraActions.py b/cura/CuraActions.py index f5aace805b..75338f17b6 100644 --- a/cura/CuraActions.py +++ b/cura/CuraActions.py @@ -94,6 +94,10 @@ class CuraActions(QObject): removed_group_nodes.append(group_node) op.addOperation(SetParentOperation(remaining_nodes_in_group[0], group_node.getParent())) op.addOperation(RemoveSceneNodeOperation(group_node)) + + # Reset the print information + Application.getInstance().getController().getScene().sceneChanged.emit(node) + op.push() ## Set the extruder that should be used to print the selection. @@ -105,10 +109,6 @@ class CuraActions(QObject): nodes_to_change = [] for node in Selection.getAllSelectedObjects(): - # Do not change any nodes that already have the right extruder set. - if node.callDecoration("getActiveExtruder") == extruder_id: - continue - # If the node is a group, apply the active extruder to all children of the group. if node.callDecoration("isGroup"): for grouped_node in BreadthFirstIterator(node): @@ -121,6 +121,10 @@ class CuraActions(QObject): nodes_to_change.append(grouped_node) continue + # Do not change any nodes that already have the right extruder set. + if node.callDecoration("getActiveExtruder") == extruder_id: + continue + nodes_to_change.append(node) if not nodes_to_change: diff --git a/cura/CuraApplication.py b/cura/CuraApplication.py index b825e456c2..b7731c5c8c 100755 --- a/cura/CuraApplication.py +++ b/cura/CuraApplication.py @@ -1,6 +1,10 @@ -# Copyright (c) 2017 Ultimaker B.V. -# Copyright (c) 2017 Ultimaker B.V. +# Copyright (c) 2018 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. + +#Type hinting. +from typing import Dict + +from PyQt5.QtCore import QObject, QTimer from PyQt5.QtNetwork import QLocalServer from PyQt5.QtNetwork import QLocalSocket @@ -11,6 +15,7 @@ from UM.Math.Vector import Vector from UM.Math.Quaternion import Quaternion from UM.Math.AxisAlignedBox import AxisAlignedBox from UM.Math.Matrix import Matrix +from UM.Platform import Platform from UM.Resources import Resources from UM.Scene.ToolHandle import ToolHandle from UM.Scene.Iterator.DepthFirstIterator import DepthFirstIterator @@ -50,13 +55,25 @@ from UM.Settings.SettingDefinition import SettingDefinition, DefinitionPropertyT from UM.Settings.ContainerRegistry import ContainerRegistry from UM.Settings.SettingFunction import SettingFunction from cura.Settings.MachineNameValidator import MachineNameValidator -from cura.Settings.ProfilesModel import ProfilesModel -from cura.Settings.MaterialsModel import MaterialsModel -from cura.Settings.QualityAndUserProfilesModel import QualityAndUserProfilesModel + +from cura.Machines.Models.BuildPlateModel import BuildPlateModel +from cura.Machines.Models.NozzleModel import NozzleModel +from cura.Machines.Models.QualityProfilesDropDownMenuModel import QualityProfilesDropDownMenuModel +from cura.Machines.Models.CustomQualityProfilesDropDownMenuModel import CustomQualityProfilesDropDownMenuModel +from cura.Machines.Models.MultiBuildPlateModel import MultiBuildPlateModel +from cura.Machines.Models.MaterialManagementModel import MaterialManagementModel +from cura.Machines.Models.GenericMaterialsModel import GenericMaterialsModel +from cura.Machines.Models.BrandMaterialsModel import BrandMaterialsModel +from cura.Machines.Models.QualityManagementModel import QualityManagementModel +from cura.Machines.Models.QualitySettingsModel import QualitySettingsModel +from cura.Machines.Models.MachineManagementModel import MachineManagementModel + +from cura.Machines.MachineErrorChecker import MachineErrorChecker + from cura.Settings.SettingInheritanceManager import SettingInheritanceManager -from cura.Settings.UserProfilesModel import UserProfilesModel from cura.Settings.SimpleModeSettingsManager import SimpleModeSettingsManager +from cura.Machines.VariantManager import VariantManager from . import PlatformPhysics from . import BuildVolume @@ -69,17 +86,14 @@ from . import CameraImageProvider from . import MachineActionManager from cura.Settings.MachineManager import MachineManager -from cura.Settings.MaterialManager import MaterialManager from cura.Settings.ExtruderManager import ExtruderManager from cura.Settings.UserChangesModel import UserChangesModel from cura.Settings.ExtrudersModel import ExtrudersModel -from cura.Settings.ContainerSettingsModel import ContainerSettingsModel from cura.Settings.MaterialSettingsVisibilityHandler import MaterialSettingsVisibilityHandler -from cura.Settings.QualitySettingsModel import QualitySettingsModel from cura.Settings.ContainerManager import ContainerManager +from cura.Settings.SettingVisibilityPresetsModel import SettingVisibilityPresetsModel from cura.ObjectsModel import ObjectsModel -from cura.BuildPlateModel import BuildPlateModel from PyQt5.QtCore import QUrl, pyqtSignal, pyqtProperty, QEvent, Q_ENUMS from UM.FlameProfiler import pyqtSlot @@ -87,6 +101,7 @@ from PyQt5.QtGui import QColor, QIcon from PyQt5.QtWidgets import QMessageBox from PyQt5.QtQml import qmlRegisterUncreatableType, qmlRegisterSingletonType, qmlRegisterType +from configparser import ConfigParser import sys import os.path import numpy @@ -95,6 +110,7 @@ import os import argparse import json + numpy.seterr(all="ignore") MYPY = False @@ -113,6 +129,8 @@ class CuraApplication(QtApplication): # changes of the settings. SettingVersion = 4 + Created = False + class ResourceTypes: QmlFiles = Resources.UserType + 1 Firmware = Resources.UserType + 2 @@ -123,17 +141,11 @@ class CuraApplication(QtApplication): MachineStack = Resources.UserType + 7 ExtruderStack = Resources.UserType + 8 DefinitionChangesContainer = Resources.UserType + 9 + SettingVisibilityPreset = Resources.UserType + 10 Q_ENUMS(ResourceTypes) - # FIXME: This signal belongs to the MachineManager, but the CuraEngineBackend plugin requires on it. - # Because plugins are initialized before the ContainerRegistry, putting this signal in MachineManager - # will make it initialized before ContainerRegistry does, and it won't find the active machine, thus - # Cura will always show the Add Machine Dialog upon start. - stacksValidationFinished = pyqtSignal() # Emitted whenever a validation is finished - def __init__(self, **kwargs): - # 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", "user", "variants"]: Resources.addExpectedDirNameInData(dir_name) @@ -177,6 +189,7 @@ class CuraApplication(QtApplication): Resources.addStorageType(self.ResourceTypes.ExtruderStack, "extruders") Resources.addStorageType(self.ResourceTypes.MachineStack, "machine_instances") Resources.addStorageType(self.ResourceTypes.DefinitionChangesContainer, "definition_changes") + Resources.addStorageType(self.ResourceTypes.SettingVisibilityPreset, "setting_visibility") ContainerRegistry.getInstance().addResourceType(self.ResourceTypes.QualityInstanceContainer, "quality") ContainerRegistry.getInstance().addResourceType(self.ResourceTypes.QualityInstanceContainer, "quality_changes") @@ -194,10 +207,10 @@ class CuraApplication(QtApplication): UM.VersionUpgradeManager.VersionUpgradeManager.getInstance().setCurrentVersions( { ("quality_changes", InstanceContainer.Version * 1000000 + self.SettingVersion): (self.ResourceTypes.QualityInstanceContainer, "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"), + ("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"), } ) @@ -209,11 +222,14 @@ class CuraApplication(QtApplication): self._machine_manager = None # This is initialized on demand. self._extruder_manager = None self._material_manager = None + self._quality_manager = None self._object_manager = None self._build_plate_model = None + self._multi_build_plate_model = None self._setting_inheritance_manager = None self._simple_mode_settings_manager = None self._cura_scene_controller = None + self._machine_error_checker = None self._additional_components = {} # Components to add to certain areas in the interface @@ -224,6 +240,12 @@ class CuraApplication(QtApplication): tray_icon_name = "cura-icon-32.png", **kwargs) + # FOR TESTING ONLY + if kwargs["parsed_command_line"].get("trigger_early_crash", False): + assert not "This crash is triggered by the trigger_early_crash command line argument." + + self._variant_manager = None + self.default_theme = "cura-light" self.setWindowIcon(QIcon(Resources.getPath(Resources.Images, "cura-icon.png"))) @@ -257,17 +279,22 @@ class CuraApplication(QtApplication): self._center_after_select = False self._camera_animation = None self._cura_actions = None - self._started = False + self.started = False self._message_box_callback = None self._message_box_callback_arguments = [] self._preferred_mimetype = "" self._i18n_catalog = i18nCatalog("cura") - self.getController().getScene().sceneChanged.connect(self.updatePlatformActivity) + self._update_platform_activity_timer = QTimer() + self._update_platform_activity_timer.setInterval(500) + self._update_platform_activity_timer.setSingleShot(True) + self._update_platform_activity_timer.timeout.connect(self.updatePlatformActivity) + + self.getController().getScene().sceneChanged.connect(self.updatePlatformActivityDelayed) self.getController().toolOperationStopped.connect(self._onToolOperationStopped) self.getController().contextMenuRequested.connect(self._onContextMenuRequested) - self.getCuraSceneController().activeBuildPlateChanged.connect(self.updatePlatformActivity) + self.getCuraSceneController().activeBuildPlateChanged.connect(self.updatePlatformActivityDelayed) Resources.addType(self.ResourceTypes.QmlFiles, "qml") Resources.addType(self.ResourceTypes.Firmware, "firmware") @@ -278,16 +305,25 @@ class CuraApplication(QtApplication): # Since they are empty, they should never be serialized and instead just programmatically created. # We need them to simplify the switching between materials. empty_container = ContainerRegistry.getInstance().getEmptyInstanceContainer() + self.empty_container = empty_container + + empty_definition_changes_container = copy.deepcopy(empty_container) + empty_definition_changes_container.setMetaDataEntry("id", "empty_definition_changes") + empty_definition_changes_container.addMetaDataEntry("type", "definition_changes") + ContainerRegistry.getInstance().addContainer(empty_definition_changes_container) + self.empty_definition_changes_container = empty_definition_changes_container empty_variant_container = copy.deepcopy(empty_container) empty_variant_container.setMetaDataEntry("id", "empty_variant") empty_variant_container.addMetaDataEntry("type", "variant") ContainerRegistry.getInstance().addContainer(empty_variant_container) + self.empty_variant_container = empty_variant_container empty_material_container = copy.deepcopy(empty_container) empty_material_container.setMetaDataEntry("id", "empty_material") empty_material_container.addMetaDataEntry("type", "material") ContainerRegistry.getInstance().addContainer(empty_material_container) + self.empty_material_container = empty_material_container empty_quality_container = copy.deepcopy(empty_container) empty_quality_container.setMetaDataEntry("id", "empty_quality") @@ -296,12 +332,14 @@ class CuraApplication(QtApplication): empty_quality_container.addMetaDataEntry("type", "quality") empty_quality_container.addMetaDataEntry("supported", False) ContainerRegistry.getInstance().addContainer(empty_quality_container) + self.empty_quality_container = empty_quality_container empty_quality_changes_container = copy.deepcopy(empty_container) empty_quality_changes_container.setMetaDataEntry("id", "empty_quality_changes") empty_quality_changes_container.addMetaDataEntry("type", "quality_changes") empty_quality_changes_container.addMetaDataEntry("quality_type", "not_supported") ContainerRegistry.getInstance().addContainer(empty_quality_changes_container) + self.empty_quality_changes_container = empty_quality_changes_container with ContainerRegistry.getInstance().lockFile(): ContainerRegistry.getInstance().loadAllMetadata() @@ -343,57 +381,9 @@ class CuraApplication(QtApplication): preferences.setDefault("local_file/last_used_type", "text/x-gcode") - preferences.setDefault("general/visible_settings", """ - machine_settings - resolution - layer_height - shell - wall_thickness - top_bottom_thickness - z_seam_x - z_seam_y - infill - infill_sparse_density - gradual_infill_steps - material - material_print_temperature - material_bed_temperature - material_diameter - material_flow - retraction_enable - speed - speed_print - speed_travel - acceleration_print - acceleration_travel - jerk_print - jerk_travel - travel - cooling - cool_fan_enabled - support - support_enable - support_extruder_nr - support_type - platform_adhesion - adhesion_type - adhesion_extruder_nr - brim_width - raft_airgap - layer_0_z_overlap - raft_surface_layers - dual - prime_tower_enable - prime_tower_size - prime_tower_position_x - prime_tower_position_y - meshfix - blackmagic - print_sequence - infill_mesh - cutting_mesh - experimental - """.replace("\n", ";").replace(" ", "")) + default_visibility_profile = SettingVisibilityPresetsModel.getInstance().getItem(0) + + preferences.setDefault("general/visible_settings", ";".join(default_visibility_profile["settings"])) self.applicationShuttingDown.connect(self.saveSettings) self.engineCreatedSignal.connect(self._onEngineCreated) @@ -405,6 +395,12 @@ class CuraApplication(QtApplication): self.getCuraSceneController().setActiveBuildPlate(0) # Initialize + self._quality_profile_drop_down_menu_model = None + self._custom_quality_profile_drop_down_menu_model = None + + CuraApplication.Created = True + + def _onEngineCreated(self): self._engine.addImageProvider("camera", CameraImageProvider.CameraImageProvider()) @@ -459,8 +455,6 @@ class CuraApplication(QtApplication): has_user_interaction = True return has_user_interaction - onDiscardOrKeepProfileChangesClosed = pyqtSignal() # Used to notify other managers that the dialog was closed - @pyqtSlot(str) def discardOrKeepProfileChangesClosed(self, option): if option == "discard": @@ -483,7 +477,6 @@ class CuraApplication(QtApplication): user_global_container.update() # notify listeners that quality has changed (after user selected discard or keep) - self.onDiscardOrKeepProfileChangesClosed.emit() self.getMachineManager().activeQualityChanged.emit() @pyqtSlot(int) @@ -499,7 +492,7 @@ class CuraApplication(QtApplication): # # Note that the AutoSave plugin also calls this method. def saveSettings(self): - if not self._started: # Do not do saving during application start + if not self.started: # Do not do saving during application start return ContainerRegistry.getInstance().saveDirtyContainers() @@ -525,7 +518,13 @@ class CuraApplication(QtApplication): def _loadPlugins(self): self._plugin_registry.addType("profile_reader", self._addProfileReader) self._plugin_registry.addType("profile_writer", self._addProfileWriter) - self._plugin_registry.addPluginLocation(os.path.join(QtApplication.getInstallPrefix(), "lib", "cura")) + + if Platform.isLinux(): + lib_suffixes = {"", "64", "32", "x32"} #A few common ones on different distributions. + else: + lib_suffixes = {""} + for suffix in lib_suffixes: + self._plugin_registry.addPluginLocation(os.path.join(QtApplication.getInstallPrefix(), "lib" + suffix, "cura")) if not hasattr(sys, "frozen"): self._plugin_registry.addPluginLocation(os.path.join(os.path.abspath(os.path.dirname(__file__)), "..", "plugins")) self._plugin_registry.loadPlugin("ConsoleLogger") @@ -653,6 +652,29 @@ class CuraApplication(QtApplication): def run(self): self.preRun() + container_registry = ContainerRegistry.getInstance() + + 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(container_registry, parent = self) + self._quality_manager.initialize() + + Logger.log("i", "Initializing machine manager") + self._machine_manager = MachineManager(self) + + Logger.log("i", "Initializing machine error checker") + self._machine_error_checker = MachineErrorChecker(self) + self._machine_error_checker.initialize() + # Check if we should run as single instance or not self._setUpSingleInstanceServer() @@ -677,9 +699,12 @@ class CuraApplication(QtApplication): for file_name in self._open_file_queue: # Open all the files that were queued up while plug-ins were loading. self._openFile(file_name) - self._started = True + self.started = True + self.initializationFinished.emit() self.exec_() + initializationFinished = pyqtSignal() + ## Run Cura without GUI elements and interaction (server mode). def runWithoutGUI(self): self._use_gui = False @@ -744,9 +769,12 @@ class CuraApplication(QtApplication): def hasGui(self): return self._use_gui + def getMachineErrorChecker(self, *args) -> MachineErrorChecker: + return self._machine_error_checker + def getMachineManager(self, *args) -> MachineManager: if self._machine_manager is None: - self._machine_manager = MachineManager.createMachineManager() + self._machine_manager = MachineManager(self) return self._machine_manager def getExtruderManager(self, *args): @@ -754,20 +782,32 @@ class CuraApplication(QtApplication): self._extruder_manager = ExtruderManager.createExtruderManager() return self._extruder_manager + def getVariantManager(self, *args): + return self._variant_manager + + @pyqtSlot(result = QObject) def getMaterialManager(self, *args): - if self._material_manager is None: - self._material_manager = MaterialManager.createMaterialManager() return self._material_manager + @pyqtSlot(result = QObject) + def getQualityManager(self, *args): + return self._quality_manager + def getObjectsModel(self, *args): if self._object_manager is None: self._object_manager = ObjectsModel.createObjectsModel() return self._object_manager + @pyqtSlot(result = QObject) + def getMultiBuildPlateModel(self, *args): + if self._multi_build_plate_model is None: + self._multi_build_plate_model = MultiBuildPlateModel(self) + return self._multi_build_plate_model + + @pyqtSlot(result = QObject) def getBuildPlateModel(self, *args): if self._build_plate_model is None: - self._build_plate_model = BuildPlateModel.createBuildPlateModel() - + self._build_plate_model = BuildPlateModel(self) return self._build_plate_model def getCuraSceneController(self, *args): @@ -805,6 +845,16 @@ class CuraApplication(QtApplication): def getPrintInformation(self): return self._print_information + def getQualityProfilesDropDownMenuModel(self, *args, **kwargs): + if self._quality_profile_drop_down_menu_model is None: + self._quality_profile_drop_down_menu_model = QualityProfilesDropDownMenuModel(self) + return self._quality_profile_drop_down_menu_model + + def getCustomQualityProfilesDropDownMenuModel(self, *args, **kwargs): + if self._custom_quality_profile_drop_down_menu_model is None: + self._custom_quality_profile_drop_down_menu_model = CustomQualityProfilesDropDownMenuModel(self) + return self._custom_quality_profile_drop_down_menu_model + ## Registers objects for the QML engine to use. # # \param engine The QML engine. @@ -819,28 +869,37 @@ class CuraApplication(QtApplication): qmlRegisterUncreatableType(CuraApplication, "Cura", 1, 0, "ResourceTypes", "Just an Enum type") - qmlRegisterSingletonType(CuraSceneController, "Cura", 1, 2, "SceneController", self.getCuraSceneController) + 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(MaterialManager, "Cura", 1, 0, "MaterialManager", self.getMaterialManager) qmlRegisterSingletonType(SettingInheritanceManager, "Cura", 1, 0, "SettingInheritanceManager", self.getSettingInheritanceManager) - qmlRegisterSingletonType(SimpleModeSettingsManager, "Cura", 1, 2, "SimpleModeSettingsManager", self.getSimpleModeSettingsManager) + qmlRegisterSingletonType(SimpleModeSettingsManager, "Cura", 1, 0, "SimpleModeSettingsManager", self.getSimpleModeSettingsManager) qmlRegisterSingletonType(MachineActionManager.MachineActionManager, "Cura", 1, 0, "MachineActionManager", self.getMachineActionManager) - qmlRegisterSingletonType(ObjectsModel, "Cura", 1, 2, "ObjectsModel", self.getObjectsModel) - qmlRegisterSingletonType(BuildPlateModel, "Cura", 1, 2, "BuildPlateModel", self.getBuildPlateModel) + qmlRegisterSingletonType(ObjectsModel, "Cura", 1, 0, "ObjectsModel", self.getObjectsModel) + qmlRegisterType(BuildPlateModel, "Cura", 1, 0, "BuildPlateModel") + qmlRegisterType(MultiBuildPlateModel, "Cura", 1, 0, "MultiBuildPlateModel") qmlRegisterType(InstanceContainer, "Cura", 1, 0, "InstanceContainer") qmlRegisterType(ExtrudersModel, "Cura", 1, 0, "ExtrudersModel") - qmlRegisterType(ContainerSettingsModel, "Cura", 1, 0, "ContainerSettingsModel") - qmlRegisterSingletonType(ProfilesModel, "Cura", 1, 0, "ProfilesModel", ProfilesModel.createProfilesModel) - qmlRegisterType(MaterialsModel, "Cura", 1, 0, "MaterialsModel") - qmlRegisterType(QualityAndUserProfilesModel, "Cura", 1, 0, "QualityAndUserProfilesModel") - qmlRegisterType(UserProfilesModel, "Cura", 1, 0, "UserProfilesModel") + + qmlRegisterType(GenericMaterialsModel, "Cura", 1, 0, "GenericMaterialsModel") + qmlRegisterType(BrandMaterialsModel, "Cura", 1, 0, "BrandMaterialsModel") + qmlRegisterType(MaterialManagementModel, "Cura", 1, 0, "MaterialManagementModel") + qmlRegisterType(QualityManagementModel, "Cura", 1, 0, "QualityManagementModel") + qmlRegisterType(MachineManagementModel, "Cura", 1, 0, "MachineManagementModel") + + qmlRegisterSingletonType(QualityProfilesDropDownMenuModel, "Cura", 1, 0, + "QualityProfilesDropDownMenuModel", self.getQualityProfilesDropDownMenuModel) + qmlRegisterSingletonType(CustomQualityProfilesDropDownMenuModel, "Cura", 1, 0, + "CustomQualityProfilesDropDownMenuModel", self.getCustomQualityProfilesDropDownMenuModel) + qmlRegisterType(NozzleModel, "Cura", 1, 0, "NozzleModel") + qmlRegisterType(MaterialSettingsVisibilityHandler, "Cura", 1, 0, "MaterialSettingsVisibilityHandler") qmlRegisterType(QualitySettingsModel, "Cura", 1, 0, "QualitySettingsModel") qmlRegisterType(MachineNameValidator, "Cura", 1, 0, "MachineNameValidator") - qmlRegisterType(UserChangesModel, "Cura", 1, 1, "UserChangesModel") + qmlRegisterType(UserChangesModel, "Cura", 1, 0, "UserChangesModel") qmlRegisterSingletonType(ContainerManager, "Cura", 1, 0, "ContainerManager", ContainerManager.createContainerManager) + qmlRegisterSingletonType(SettingVisibilityPresetsModel, "Cura", 1, 0, "SettingVisibilityPresetsModel", SettingVisibilityPresetsModel.createSettingVisibilityPresetsModel) # As of Qt5.7, it is necessary to get rid of any ".." in the path for the singleton to work. actions_url = QUrl.fromLocalFile(os.path.abspath(Resources.getPath(CuraApplication.ResourceTypes.QmlFiles, "Actions.qml"))) @@ -916,12 +975,16 @@ class CuraApplication(QtApplication): def getSceneBoundingBoxString(self): return self._i18n_catalog.i18nc("@info 'width', 'depth' and 'height' are variable names that must NOT be translated; just translate the format of ##x##x## mm.", "%(width).1f x %(depth).1f x %(height).1f mm") % {'width' : self._scene_bounding_box.width.item(), 'depth': self._scene_bounding_box.depth.item(), 'height' : self._scene_bounding_box.height.item()} + def updatePlatformActivityDelayed(self, node = None): + if node is not None and node.getMeshData() is not None: + self._update_platform_activity_timer.start() + ## Update scene bounding box for current build plate def updatePlatformActivity(self, node = None): count = 0 scene_bounding_box = None is_block_slicing_node = False - active_build_plate = self.getBuildPlateModel().activeBuildPlate + active_build_plate = self.getMultiBuildPlateModel().activeBuildPlate for node in DepthFirstIterator(self.getController().getScene().getRoot()): if ( not issubclass(type(node), CuraSceneNode) or @@ -1058,8 +1121,9 @@ class CuraApplication(QtApplication): Selection.add(node) ## Delete all nodes containing mesh data in the scene. + # \param only_selectable. Set this to False to delete objects from all build plates @pyqtSlot() - def deleteAll(self): + def deleteAll(self, only_selectable = True): Logger.log("i", "Clearing scene") if not self.getController().getToolsEnabled(): return @@ -1070,7 +1134,9 @@ class CuraApplication(QtApplication): 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 not node.isSelectable(): + if only_selectable and not node.isSelectable(): + continue + if not node.callDecoration("isSliceable") and not node.callDecoration("getLayerData") and not node.callDecoration("isGroup"): continue # Only remove nodes that are selectable. if node.getParent() and node.getParent().callDecoration("isGroup"): continue # Grouped nodes don't need resetting as their parent (the group) is resetted) @@ -1081,16 +1147,12 @@ class CuraApplication(QtApplication): for node in nodes: op.addOperation(RemoveSceneNodeOperation(node)) + # Reset the print information + self.getController().getScene().sceneChanged.emit(node) + op.push() Selection.clear() - # Reset the print information: - self.getController().getScene().sceneChanged.emit(node) - # self._print_information.setToZeroPrintInformation(self.getBuildPlateModel().activeBuildPlate) - - # stay on the same build plate - #self.getCuraSceneController().setActiveBuildPlate(0) # Select first build plate - ## Reset all translation on nodes with mesh data. @pyqtSlot() def resetAllTranslation(self): @@ -1171,7 +1233,7 @@ class CuraApplication(QtApplication): @pyqtSlot() def arrangeAll(self): nodes = [] - active_build_plate = self.getBuildPlateModel().activeBuildPlate + active_build_plate = self.getMultiBuildPlateModel().activeBuildPlate for node in DepthFirstIterator(self.getController().getScene().getRoot()): if not isinstance(node, SceneNode): continue @@ -1225,7 +1287,7 @@ class CuraApplication(QtApplication): Logger.log("i", "Reloading all loaded mesh data.") nodes = [] for node in DepthFirstIterator(self.getController().getScene().getRoot()): - if not isinstance(node, SceneNode) or not node.getMeshData(): + if not isinstance(node, CuraSceneNode) or not node.getMeshData(): continue nodes.append(node) @@ -1320,7 +1382,7 @@ class CuraApplication(QtApplication): group_decorator = GroupDecorator() group_node.addDecorator(group_decorator) group_node.addDecorator(ConvexHullDecorator()) - group_node.addDecorator(BuildPlateDecorator(self.getBuildPlateModel().activeBuildPlate)) + group_node.addDecorator(BuildPlateDecorator(self.getMultiBuildPlateModel().activeBuildPlate)) group_node.setParent(self.getController().getScene().getRoot()) group_node.setSelectable(True) center = Selection.getSelectionCenter() @@ -1450,7 +1512,7 @@ class CuraApplication(QtApplication): self._currently_loading_files.append(f) if extension in self._non_sliceable_extensions: - self.deleteAll() + self.deleteAll(only_selectable = False) job = ReadMeshJob(f) job.finished.connect(self._readMeshFinished) @@ -1465,7 +1527,7 @@ class CuraApplication(QtApplication): arrange_objects_on_load = ( not Preferences.getInstance().getValue("cura/use_multi_build_plate") or not Preferences.getInstance().getValue("cura/not_arrange_objects_on_load")) - target_build_plate = self.getBuildPlateModel().activeBuildPlate if arrange_objects_on_load else -1 + target_build_plate = self.getMultiBuildPlateModel().activeBuildPlate if arrange_objects_on_load else -1 root = self.getController().getScene().getRoot() fixed_nodes = [] @@ -1474,12 +1536,22 @@ class CuraApplication(QtApplication): fixed_nodes.append(node_) arranger = Arrange.create(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() for original_node in nodes: # Create a CuraSceneNode just if the original node is not that type - node = original_node if isinstance(original_node, CuraSceneNode) else CuraSceneNode() - node.setMeshData(original_node.getMeshData()) + if isinstance(original_node, CuraSceneNode): + node = original_node + else: + node = CuraSceneNode() + node.setMeshData(original_node.getMeshData()) + + #Setting meshdata does not apply scaling. + if(original_node.getScale() != Vector(1.0, 1.0, 1.0)): + node.scale(original_node.getScale()) + node.setSelectable(True) node.setName(os.path.basename(filename)) @@ -1531,6 +1603,8 @@ class CuraApplication(QtApplication): op = AddSceneNodeOperation(node, scene.getRoot()) op.push() + + node.callDecoration("setActiveExtruder", default_extruder_id) scene.sceneChanged.emit(node) self.fileCompleted.emit(filename) @@ -1551,7 +1625,7 @@ class CuraApplication(QtApplication): result = workspace_reader.preRead(file_path, show_dialog=False) return result == WorkspaceReader.PreReadResult.accepted except Exception as e: - Logger.log("e", "Could not check file %s: %s", file_url, e) + Logger.logException("e", "Could not check file %s: %s", file_url) return False def _onContextMenuRequested(self, x: float, y: float) -> None: diff --git a/cura/Machines/ContainerNode.py b/cura/Machines/ContainerNode.py new file mode 100644 index 0000000000..6a839fb921 --- /dev/null +++ b/cura/Machines/ContainerNode.py @@ -0,0 +1,49 @@ +# Copyright (c) 2018 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +from typing import Optional + +from collections import OrderedDict + +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. +# +class ContainerNode: + __slots__ = ("metadata", "container", "children_map") + + def __init__(self, metadata: Optional[dict] = None): + self.metadata = metadata + self.container = None + self.children_map = OrderedDict() + + def getChildNode(self, child_key: str) -> Optional["ContainerNode"]: + return self.children_map.get(child_key) + + def getContainer(self) -> "InstanceContainer": + if self.metadata is None: + raise RuntimeError("Cannot get container for a ContainerNode without metadata") + + if self.container is None: + container_id = self.metadata["id"] + Logger.log("i", "Lazy-loading container [%s]", container_id) + from UM.Settings.ContainerRegistry import ContainerRegistry + container_list = ContainerRegistry.getInstance().findInstanceContainers(id = container_id) + if not container_list: + raise RuntimeError("Failed to lazy-load container [%s], cannot find it" % container_id) + self.container = container_list[0] + + return self.container + + def __str__(self) -> str: + return "%s[%s]" % (self.__class__.__name__, self.metadata.get("id")) diff --git a/cura/Machines/MachineErrorChecker.py b/cura/Machines/MachineErrorChecker.py new file mode 100644 index 0000000000..37de4f30ce --- /dev/null +++ b/cura/Machines/MachineErrorChecker.py @@ -0,0 +1,181 @@ +# Copyright (c) 2018 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +import time + +from collections import deque + +from PyQt5.QtCore import QObject, QTimer, pyqtSignal, pyqtProperty + +from UM.Application import Application +from UM.Logger import Logger +from UM.Settings.SettingDefinition import SettingDefinition +from UM.Settings.Validator import ValidatorState + + +# +# This class performs setting error checks for the currently active machine. +# +# The whole error checking process is pretty heavy which can take ~0.5 secs, so it can cause GUI to lag. +# The idea here is to split the whole error check into small tasks, each of which only checks a single setting key +# in a stack. According to my profiling results, the maximal runtime for such a sub-task is <0.03 secs, which should +# be good enough. Moreover, if any changes happened to the machine, we can cancel the check in progress without wait +# for it to finish the complete work. +# +class MachineErrorChecker(QObject): + + def __init__(self, parent = None): + super().__init__(parent) + + self._global_stack = None + + self._has_errors = True # Result of the error check, indicating whether there are errors in the stack + self._error_keys = set() # A set of settings keys that have errors + self._error_keys_in_progress = set() # The variable that stores the results of the currently in progress check + + self._stacks_and_keys_to_check = None # a FIFO queue of tuples (stack, key) to check for errors + + self._need_to_check = False # Whether we need to schedule a new check or not. This flag is set when a new + # error check needs to take place while there is already one running at the moment. + self._check_in_progress = False # Whether there is an error check running in progress at the moment. + + self._application = Application.getInstance() + self._machine_manager = self._application.getMachineManager() + + self._start_time = 0 # measure checking time + + # This timer delays the starting of error check so we can react less frequently if the user is frequently + # changing settings. + self._error_check_timer = QTimer(self) + self._error_check_timer.setInterval(100) + self._error_check_timer.setSingleShot(True) + + def initialize(self): + self._error_check_timer.timeout.connect(self._rescheduleCheck) + + # Reconnect all signals when the active machine gets changed. + self._machine_manager.globalContainerChanged.connect(self._onMachineChanged) + + # 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() + + def _onMachineChanged(self): + if self._global_stack: + self._global_stack.propertyChanged.disconnect(self.startErrorCheck) + self._global_stack.containersChanged.disconnect(self.startErrorCheck) + + for extruder in self._global_stack.extruders.values(): + extruder.propertyChanged.disconnect(self.startErrorCheck) + extruder.containersChanged.disconnect(self.startErrorCheck) + + self._global_stack = self._machine_manager.activeMachine + + if self._global_stack: + self._global_stack.propertyChanged.connect(self.startErrorCheck) + self._global_stack.containersChanged.connect(self.startErrorCheck) + + for extruder in self._global_stack.extruders.values(): + extruder.propertyChanged.connect(self.startErrorCheck) + extruder.containersChanged.connect(self.startErrorCheck) + + hasErrorUpdated = pyqtSignal() + needToWaitForResultChanged = pyqtSignal() + errorCheckFinished = pyqtSignal() + + @pyqtProperty(bool, notify = hasErrorUpdated) + def hasError(self) -> bool: + return self._has_errors + + @pyqtProperty(bool, notify = needToWaitForResultChanged) + def needToWaitForResult(self) -> bool: + return self._need_to_check or self._check_in_progress + + # Starts the error check timer to schedule a new error check. + def startErrorCheck(self, *args): + if not self._check_in_progress: + self._need_to_check = True + self.needToWaitForResultChanged.emit() + self._error_check_timer.start() + + # This function is called by the timer to reschedule a new error check. + # If there is no check in progress, it will start a new one. If there is any, it sets the "_need_to_check" flag + # to notify the current check to stop and start a new one. + def _rescheduleCheck(self): + if self._check_in_progress and not self._need_to_check: + self._need_to_check = True + self.needToWaitForResultChanged.emit() + return + + self._error_keys_in_progress = set() + self._need_to_check = False + self.needToWaitForResultChanged.emit() + + global_stack = self._machine_manager.activeMachine + if global_stack is None: + Logger.log("i", "No active machine, nothing to check.") + return + + # 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 key in stack.getAllKeys(): + self._stacks_and_keys_to_check.append((stack, key)) + + self._application.callLater(self._checkStack) + self._start_time = time.time() + Logger.log("d", "New error check scheduled.") + + def _checkStack(self): + if self._need_to_check: + Logger.log("d", "Need to check for errors again. Discard the current progress and reschedule a check.") + self._check_in_progress = False + self._application.callLater(self.startErrorCheck) + return + + self._check_in_progress = True + + # If there is nothing to check any more, it means there is no error. + if not self._stacks_and_keys_to_check: + # Finish + self._setResult(False) + return + + # Get the next stack and key to check + stack, key = self._stacks_and_keys_to_check.popleft() + + enabled = stack.getProperty(key, "enabled") + if not enabled: + self._application.callLater(self._checkStack) + return + + validation_state = stack.getProperty(key, "validationState") + if validation_state is None: + # Setting is not validated. This can happen if there is only a setting definition. + # We do need to validate it, because a setting definitions value can be set by a function, which could + # be an invalid setting. + definition = stack.getSettingDefinition(key) + validator_type = SettingDefinition.getValidatorForType(definition.type) + if validator_type: + validator = validator_type(key) + validation_state = validator(stack) + if validation_state in (ValidatorState.Exception, ValidatorState.MaximumError, ValidatorState.MinimumError): + # Finish + self._setResult(True) + return + + # Schedule the check for the next key + self._application.callLater(self._checkStack) + + def _setResult(self, result: bool): + if result != self._has_errors: + self._has_errors = result + self.hasErrorUpdated.emit() + self._machine_manager.stacksValidationChanged.emit() + self._need_to_check = False + self._check_in_progress = False + self.needToWaitForResultChanged.emit() + self.errorCheckFinished.emit() + Logger.log("i", "Error check finished, result = %s, time = %0.1fs", result, time.time() - self._start_time) diff --git a/cura/Machines/MaterialGroup.py b/cura/Machines/MaterialGroup.py new file mode 100644 index 0000000000..93c8a227a8 --- /dev/null +++ b/cura/Machines/MaterialGroup.py @@ -0,0 +1,28 @@ +# Copyright (c) 2018 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +from typing import List +from cura.Machines.MaterialNode import MaterialNode #For type checking. + +## A MaterialGroup represents a group of material InstanceContainers that are derived from a single material profile. +# The main InstanceContainer which has the ID of the material profile file name is called the "root_material". For +# example: "generic_abs" is the root material (ID) of "generic_abs_ultimaker3" and "generic_abs_ultimaker3_AA_0.4", +# and "generic_abs_ultimaker3" and "generic_abs_ultimaker3_AA_0.4" are derived materials of "generic_abs". +# +# Using "generic_abs" as an example, the MaterialGroup for "generic_abs" will contain the following information: +# - name: "generic_abs", root_material_id +# - root_material_node: MaterialNode of "generic_abs" +# - derived_material_node_list: A list of MaterialNodes that are derived from "generic_abs", +# so "generic_abs_ultimaker3", "generic_abs_ultimaker3_AA_0.4", etc. +# +class MaterialGroup: + __slots__ = ("name", "is_read_only", "root_material_node", "derived_material_node_list") + + def __init__(self, name: str, root_material_node: MaterialNode): + self.name = name + self.is_read_only = False + self.root_material_node = root_material_node + self.derived_material_node_list = [] #type: List[MaterialNode] + + def __str__(self) -> str: + return "%s[%s]" % (self.__class__.__name__, self.name) diff --git a/cura/Machines/MaterialManager.py b/cura/Machines/MaterialManager.py new file mode 100644 index 0000000000..0a82fcc764 --- /dev/null +++ b/cura/Machines/MaterialManager.py @@ -0,0 +1,511 @@ +# 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 Optional, TYPE_CHECKING + +from PyQt5.Qt import QTimer, QObject, pyqtSignal, pyqtSlot + +from UM.Application import Application +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 + +if TYPE_CHECKING: + from cura.Settings.GlobalStack import GlobalStack + + +# +# 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. + + def __init__(self, container_registry, parent = None): + super().__init__(parent) + self._application = Application.getInstance() + self._container_registry = container_registry # type: ContainerRegistry + + self._fallback_materials_map = dict() # material_type -> generic material metadata + self._material_group_map = dict() # root_material_id -> MaterialGroup + self._diameter_machine_variant_material_map = dict() # approximate diameter str -> dict(machine_definition_id -> 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 + self._material_diameter_map = defaultdict(dict) # root_material_id -> approximate diameter str -> root_material_id for that diameter + self._diameter_material_map = dict() # material id including diameter (generic_pla_175) -> material root id (generic_pla) + + # This is used in Legacy UM3 send material function and the material management page. + self._guid_material_groups_map = defaultdict(list) # GUID -> a list of material_groups + + # 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) + + def initialize(self): + # 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")} + + self._material_group_map = dict() + + # Map #1 + # root_material_id -> MaterialGroup + for material_id, material_metadata in material_metadatas.items(): + # We don't store empty material in the lookup tables + if material_id == "empty_material": + continue + + root_material_id = material_metadata.get("base_file") + if root_material_id not in self._material_group_map: + self._material_group_map[root_material_id] = MaterialGroup(root_material_id, MaterialNode(material_metadatas[root_material_id])) + self._material_group_map[root_material_id].is_read_only = self._container_registry.isReadOnly(root_material_id) + group = self._material_group_map[root_material_id] + + #Store this material in the group of the appropriate root material. + if material_id != root_material_id: + new_node = MaterialNode(material_metadata) + group.derived_material_node_list.append(new_node) + + # Order this map alphabetically so it's easier to navigate in a debugger + self._material_group_map = OrderedDict(sorted(self._material_group_map.items(), key = lambda x: x[0])) + + # Map #1.5 + # GUID -> material group list + self._guid_material_groups_map = defaultdict(list) + for root_material_id, material_group in self._material_group_map.items(): + guid = material_group.root_material_node.metadata["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() + for root_material_id, material_node in self._material_group_map.items(): + if not self._container_registry.isReadOnly(root_material_id): + continue + material_type = material_node.root_material_node.metadata["material"] + if material_type not in grouped_by_type_dict: + grouped_by_type_dict[material_type] = {"generic": None, + "others": []} + brand = material_node.root_material_node.metadata["brand"] + if brand.lower() == "generic": + to_add = True + if material_type in grouped_by_type_dict: + diameter = material_node.root_material_node.metadata.get("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: + grouped_by_type_dict[material_type] = material_node.root_material_node.metadata + 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() + keys_to_fetch = ("name", "material", "brand", "color") + for root_material_id, machine_node in self._material_group_map.items(): + if not self._container_registry.isReadOnly(root_material_id): + continue + + root_material_metadata = machine_node.root_material_node.metadata + + key_data = [] + for key in keys_to_fetch: + key_data.append(root_material_metadata.get(key)) + key_data = tuple(key_data) + + if key_data not in material_group_dict: + material_group_dict[key_data] = dict() + approximate_diameter = root_material_metadata.get("approximate_diameter") + material_group_dict[key_data][approximate_diameter] = root_material_metadata["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" -> "variant_name" -> "root material ID" -> specific material InstanceContainer + # Construct the "machine" -> "variant" -> "root material ID" -> specific material InstanceContainer + self._diameter_machine_variant_material_map = dict() + for material_metadata in material_metadatas.values(): + # We don't store empty material in the lookup tables + if material_metadata["id"] == "empty_material": + continue + + root_material_id = material_metadata["base_file"] + definition = material_metadata["definition"] + approximate_diameter = material_metadata["approximate_diameter"] + + if approximate_diameter not in self._diameter_machine_variant_material_map: + self._diameter_machine_variant_material_map[approximate_diameter] = {} + + machine_variant_material_map = self._diameter_machine_variant_material_map[approximate_diameter] + if definition not in machine_variant_material_map: + machine_variant_material_map[definition] = MaterialNode() + + machine_node = machine_variant_material_map[definition] + variant_name = material_metadata.get("variant_name") + if not variant_name: + # if there is no variant, this material is for the machine, so put its metadata in the machine node. + machine_node.material_map[root_material_id] = MaterialNode(material_metadata) + else: + # this material is variant-specific, so we save it in a variant-specific node under the + # machine-specific node + if variant_name not in machine_node.children_map: + machine_node.children_map[variant_name] = MaterialNode() + + variant_node = machine_node.children_map[variant_name] + if root_material_id not in variant_node.material_map: + variant_node.material_map[root_material_id] = MaterialNode(material_metadata) + else: + # Sanity check: make sure we don't have duplicated variant-specific materials for the same machine + raise RuntimeError("Found duplicate variant name [%s] for machine [%s] in material [%s]" % + (variant_name, definition, material_metadata["id"])) + + self.materialsUpdated.emit() + + 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]: + return self._guid_material_groups_map.get(guid) + + # + # Return a dict with all root material IDs (k) and ContainerNodes (v) that's suitable for the given setup. + # + def getAvailableMaterials(self, machine_definition_id: str, extruder_variant_name: Optional[str], + diameter: float) -> dict: + # round the diameter to get the approximate diameter + rounded_diameter = str(round(diameter)) + if rounded_diameter not in self._diameter_machine_variant_material_map: + Logger.log("i", "Cannot find materials with diameter [%s] (rounded to [%s])", diameter, rounded_diameter) + return dict() + + # If there are variant materials, get the variant material + machine_variant_material_map = self._diameter_machine_variant_material_map[rounded_diameter] + machine_node = machine_variant_material_map.get(machine_definition_id) + default_machine_node = machine_variant_material_map.get(self._default_machine_definition_id) + variant_node = None + if extruder_variant_name is not None and machine_node is not None: + variant_node = machine_node.getChildNode(extruder_variant_name) + + nodes_to_check = [variant_node, machine_node, default_machine_node] + + # Fallback mechanism of finding materials: + # 1. variant-specific material + # 2. machine-specific material + # 3. generic material (for fdmprinter) + material_id_metadata_dict = dict() + for node in nodes_to_check: + if node is not None: + for material_id, node in node.material_map.items(): + if material_id not in material_id_metadata_dict: + material_id_metadata_dict[material_id] = node + + 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]: + machine_definition_id = machine.definition.getId() + variant_name = None + if extruder_stack.variant.getId() != "empty_variant": + variant_name = extruder_stack.variant.getName() + diameter = extruder_stack.approximateMaterialDiameter + + # Fetch the available materials (ContainerNode) for the current active machine and extruder setup. + return self.getAvailableMaterials(machine_definition_id, variant_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, extruder_variant_name: Optional[str], + diameter: float, root_material_id: str) -> Optional["InstanceContainer"]: + # round the diameter to get the approximate diameter + rounded_diameter = str(round(diameter)) + if rounded_diameter not in self._diameter_machine_variant_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 variant materials, get the variant material + machine_variant_material_map = self._diameter_machine_variant_material_map[rounded_diameter] + machine_node = machine_variant_material_map.get(machine_definition_id) + variant_node = None + + # Fallback for "fdmprinter" if the machine-specific materials cannot be found + if machine_node is None: + machine_node = machine_variant_material_map.get(self._default_machine_definition_id) + if machine_node is not None and extruder_variant_name is not None: + variant_node = machine_node.getChildNode(extruder_variant_name) + + # Fallback mechanism of finding materials: + # 1. variant-specific material + # 2. machine-specific material + # 3. generic material (for fdmprinter) + nodes_to_check = [variant_node, machine_node, + machine_variant_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", extruder_variant_name: str, material_guid: str) -> Optional["MaterialNode"]: + node = None + machine_definition = global_stack.definition + if parseBool(machine_definition.getMetaDataEntry("has_materials", False)): + material_diameter = machine_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]: + if material_group.is_read_only: + root_material_id = material_group.root_material_node.metadata["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(), extruder_variant_name, + material_diameter, root_material_id) + return node + + # + # 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 + + def getDefaultMaterial(self, global_stack: "GlobalStack", extruder_variant_name: Optional[str]) -> Optional["MaterialNode"]: + node = None + machine_definition = global_stack.definition + if parseBool(global_stack.getMetaDataEntry("has_materials", False)): + material_diameter = machine_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(), extruder_variant_name, + material_diameter, root_material_id) + return node + + def removeMaterialByRootId(self, root_material_id: str): + material_group = self.getMaterialGroup(root_material_id) + if not material_group: + Logger.log("i", "Unable to remove the material with id %s, because it doesn't exist.", root_material_id) + return + + nodes_to_remove = [material_group.root_material_node] + material_group.derived_material_node_list + for node in nodes_to_remove: + self._container_registry.removeContainer(node.metadata["id"]) + + # + # Methods for GUI + # + + # + # Sets the new name for the given material. + # + @pyqtSlot("QVariant", str) + def setMaterialName(self, material_node: "MaterialNode", name: str): + root_material_id = material_node.metadata["base_file"] + 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) + material_group.root_material_node.getContainer().setName(name) + + # + # Removes the given material. + # + @pyqtSlot("QVariant") + def removeMaterial(self, material_node: "MaterialNode"): + root_material_id = material_node.metadata["base_file"] + 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, new_base_id = None, new_metadata = None) -> Optional[str]: + root_material_id = material_node.metadata["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() + + # 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() + # 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"): + variant_name = container_to_copy.getMetaDataEntry("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: + 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) + return new_base_id + + # + # Create a new material by cloning Generic PLA for the current material diameter and generate a new GUID. + # + @pyqtSlot(result = str) + def createMaterial(self) -> str: + from UM.i18n import i18nCatalog + catalog = i18nCatalog("cura") + # Ensure all settings are saved. + self._application.saveSettings() + + global_stack = self._application.getGlobalContainerStack() + approximate_diameter = str(round(global_stack.getProperty("material_diameter", "value"))) + root_material_id = "generic_pla" + root_material_id = self.getRootMaterialIDForDiameter(root_material_id, approximate_diameter) + material_group = self.getMaterialGroup(root_material_id) + + # 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 diff --git a/cura/Machines/MaterialNode.py b/cura/Machines/MaterialNode.py new file mode 100644 index 0000000000..fde11186c2 --- /dev/null +++ b/cura/Machines/MaterialNode.py @@ -0,0 +1,21 @@ +# Copyright (c) 2018 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +from typing import Optional + +from .ContainerNode import ContainerNode + + +# +# 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. +# +# +class MaterialNode(ContainerNode): + __slots__ = ("material_map", "children_map") + + def __init__(self, metadata: Optional[dict] = None): + super().__init__(metadata = metadata) + self.material_map = {} # material_root_id -> material_node + self.children_map = {} # mapping for the child nodes diff --git a/cura/Machines/Models/BaseMaterialsModel.py b/cura/Machines/Models/BaseMaterialsModel.py new file mode 100644 index 0000000000..0a1337feeb --- /dev/null +++ b/cura/Machines/Models/BaseMaterialsModel.py @@ -0,0 +1,68 @@ +# Copyright (c) 2018 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +from PyQt5.QtCore import Qt, pyqtSignal, pyqtProperty + +from UM.Application import Application +from UM.Qt.ListModel import ListModel + + +# +# This is the base model class for GenericMaterialsModel and BrandMaterialsModel +# 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 +# +class BaseMaterialsModel(ListModel): + RootMaterialIdRole = Qt.UserRole + 1 + IdRole = Qt.UserRole + 2 + NameRole = Qt.UserRole + 3 + BrandRole = Qt.UserRole + 4 + MaterialRole = Qt.UserRole + 5 + ColorRole = Qt.UserRole + 6 + ContainerNodeRole = Qt.UserRole + 7 + + extruderPositionChanged = pyqtSignal() + + def __init__(self, parent = None): + super().__init__(parent) + self._application = Application.getInstance() + self._machine_manager = self._application.getMachineManager() + + self.addRoleName(self.RootMaterialIdRole, "root_material_id") + self.addRoleName(self.IdRole, "id") + self.addRoleName(self.NameRole, "name") + self.addRoleName(self.BrandRole, "brand") + self.addRoleName(self.MaterialRole, "material") + self.addRoleName(self.ColorRole, "color_name") + self.addRoleName(self.ContainerNodeRole, "container_node") + + self._extruder_position = 0 + self._extruder_stack = None + + def _updateExtruderStack(self): + global_stack = self._machine_manager.activeMachine + if global_stack is None: + return + + if self._extruder_stack is not None: + self._extruder_stack.pyqtContainersChanged.disconnect(self._update) + self._extruder_stack = global_stack.extruders.get(str(self._extruder_position)) + if self._extruder_stack is not None: + self._extruder_stack.pyqtContainersChanged.connect(self._update) + + def setExtruderPosition(self, position: int): + if self._extruder_position != position: + self._extruder_position = position + self._updateExtruderStack() + self.extruderPositionChanged.emit() + + @pyqtProperty(int, fset = setExtruderPosition, notify = extruderPositionChanged) + def extruderPosition(self) -> int: + return self._extruder_position + + # + # This is an abstract method that needs to be implemented by + # + def _update(self): + pass diff --git a/cura/Machines/Models/BrandMaterialsModel.py b/cura/Machines/Models/BrandMaterialsModel.py new file mode 100644 index 0000000000..f6c9a14632 --- /dev/null +++ b/cura/Machines/Models/BrandMaterialsModel.py @@ -0,0 +1,137 @@ +# Copyright (c) 2018 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +from PyQt5.QtCore import Qt, pyqtSignal, pyqtProperty + +from UM.Qt.ListModel import ListModel +from UM.Logger import Logger +from cura.Machines.Models.BaseMaterialsModel import BaseMaterialsModel + + +# +# This is an intermediate model to group materials with different colours for a same brand and type. +# +class MaterialsModelGroupedByType(ListModel): + NameRole = Qt.UserRole + 1 + ColorsRole = Qt.UserRole + 2 + + def __init__(self, parent = None): + super().__init__(parent) + + self.addRoleName(self.NameRole, "name") + self.addRoleName(self.ColorsRole, "colors") + + +# +# This model is used to show branded materials in the material drop down menu. +# The structure of the menu looks like this: +# Brand -> Material Type -> list of materials +# +# To illustrate, a branded material menu may look like this: +# Ultimaker -> PLA -> Yellow PLA +# -> Black PLA +# -> ... +# -> ABS -> White ABS +# ... +# +class BrandMaterialsModel(ListModel): + NameRole = Qt.UserRole + 1 + MaterialsRole = Qt.UserRole + 2 + + extruderPositionChanged = pyqtSignal() + + def __init__(self, parent = None): + super().__init__(parent) + + self.addRoleName(self.NameRole, "name") + self.addRoleName(self.MaterialsRole, "materials") + + self._extruder_position = 0 + + from cura.CuraApplication import CuraApplication + self._machine_manager = CuraApplication.getInstance().getMachineManager() + self._extruder_manager = CuraApplication.getInstance().getExtruderManager() + self._material_manager = CuraApplication.getInstance().getMaterialManager() + + self._machine_manager.activeStackChanged.connect(self._update) #Update when switching machines. + self._material_manager.materialsUpdated.connect(self._update) #Update when the list of materials changes. + self._update() + + def setExtruderPosition(self, position: int): + if self._extruder_position != position: + self._extruder_position = position + self.extruderPositionChanged.emit() + + @pyqtProperty(int, fset = setExtruderPosition, notify = extruderPositionChanged) + def extruderPosition(self) -> int: + return self._extruder_position + + def _update(self): + Logger.log("d", "Updating {model_class_name}.".format(model_class_name = self.__class__.__name__)) + global_stack = self._machine_manager.activeMachine + if global_stack is None: + self.setItems([]) + return + extruder_position = str(self._extruder_position) + if extruder_position not in global_stack.extruders: + self.setItems([]) + return + extruder_stack = global_stack.extruders[str(self._extruder_position)] + + available_material_dict = self._material_manager.getAvailableMaterialsForMachineExtruder(global_stack, + extruder_stack) + if available_material_dict is None: + self.setItems([]) + return + + brand_item_list = [] + brand_group_dict = {} + for root_material_id, container_node in available_material_dict.items(): + metadata = container_node.metadata + brand = metadata["brand"] + # Only add results for generic materials + if brand.lower() == "generic": + continue + + if brand not in brand_group_dict: + brand_group_dict[brand] = {} + + material_type = metadata["material"] + if material_type not in brand_group_dict[brand]: + brand_group_dict[brand][material_type] = [] + + item = {"root_material_id": root_material_id, + "id": metadata["id"], + "name": metadata["name"], + "brand": metadata["brand"], + "material": metadata["material"], + "color_name": metadata["color_name"], + "container_node": container_node + } + brand_group_dict[brand][material_type].append(item) + + for brand, material_dict in brand_group_dict.items(): + brand_item = {"name": brand, + "materials": MaterialsModelGroupedByType(self)} + + material_type_item_list = [] + for material_type, material_list in material_dict.items(): + material_type_item = {"name": material_type, + "colors": BaseMaterialsModel(self)} + material_type_item["colors"].clear() + + # Sort materials by name + material_list = sorted(material_list, key = lambda x: x["name"].upper()) + material_type_item["colors"].setItems(material_list) + + material_type_item_list.append(material_type_item) + + # Sort material type by name + material_type_item_list = sorted(material_type_item_list, key = lambda x: x["name"].upper()) + brand_item["materials"].setItems(material_type_item_list) + + brand_item_list.append(brand_item) + + # Sort brand by name + brand_item_list = sorted(brand_item_list, key = lambda x: x["name"].upper()) + self.setItems(brand_item_list) diff --git a/cura/Machines/Models/BuildPlateModel.py b/cura/Machines/Models/BuildPlateModel.py new file mode 100644 index 0000000000..e1b4f40d8e --- /dev/null +++ b/cura/Machines/Models/BuildPlateModel.py @@ -0,0 +1,51 @@ +# Copyright (c) 2018 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.VariantManager import VariantType + + +class BuildPlateModel(ListModel): + NameRole = Qt.UserRole + 1 + ContainerNodeRole = Qt.UserRole + 2 + + def __init__(self, parent = None): + super().__init__(parent) + + 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) diff --git a/cura/Machines/Models/CustomQualityProfilesDropDownMenuModel.py b/cura/Machines/Models/CustomQualityProfilesDropDownMenuModel.py new file mode 100644 index 0000000000..dcade8cb0d --- /dev/null +++ b/cura/Machines/Models/CustomQualityProfilesDropDownMenuModel.py @@ -0,0 +1,37 @@ +# Copyright (c) 2018 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +from UM.Logger import Logger + +from cura.Machines.Models.QualityProfilesDropDownMenuModel import QualityProfilesDropDownMenuModel + + +# +# This model is used for the custom profile items in the profile drop down menu. +# +class CustomQualityProfilesDropDownMenuModel(QualityProfilesDropDownMenuModel): + + def _update(self): + Logger.log("d", "Updating {model_class_name}.".format(model_class_name = self.__class__.__name__)) + + active_global_stack = self._machine_manager.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) + + item_list = [] + for key in sorted(quality_changes_group_dict, key = lambda name: name.upper()): + quality_changes_group = quality_changes_group_dict[key] + + item = {"name": quality_changes_group.name, + "layer_height": "", + "layer_height_without_unit": "", + "available": quality_changes_group.is_available, + "quality_changes_group": quality_changes_group} + + item_list.append(item) + + self.setItems(item_list) diff --git a/cura/Machines/Models/GenericMaterialsModel.py b/cura/Machines/Models/GenericMaterialsModel.py new file mode 100644 index 0000000000..2fac919f3e --- /dev/null +++ b/cura/Machines/Models/GenericMaterialsModel.py @@ -0,0 +1,61 @@ +# Copyright (c) 2018 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +from UM.Logger import Logger +from cura.Machines.Models.BaseMaterialsModel import BaseMaterialsModel + + +class GenericMaterialsModel(BaseMaterialsModel): + + def __init__(self, parent = None): + super().__init__(parent) + + from cura.CuraApplication import CuraApplication + self._machine_manager = CuraApplication.getInstance().getMachineManager() + self._extruder_manager = CuraApplication.getInstance().getExtruderManager() + self._material_manager = CuraApplication.getInstance().getMaterialManager() + + self._machine_manager.activeStackChanged.connect(self._update) #Update when switching machines. + self._material_manager.materialsUpdated.connect(self._update) #Update when the list of materials changes. + 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 + if global_stack is None: + self.setItems([]) + return + extruder_position = str(self._extruder_position) + if extruder_position not in global_stack.extruders: + self.setItems([]) + return + extruder_stack = global_stack.extruders[extruder_position] + + available_material_dict = self._material_manager.getAvailableMaterialsForMachineExtruder(global_stack, + extruder_stack) + if available_material_dict is None: + self.setItems([]) + return + + item_list = [] + for root_material_id, container_node in available_material_dict.items(): + metadata = container_node.metadata + # Only add results for generic materials + if metadata["brand"].lower() != "generic": + continue + + item = {"root_material_id": root_material_id, + "id": metadata["id"], + "name": metadata["name"], + "brand": metadata["brand"], + "material": metadata["material"], + "color_name": metadata["color_name"], + "container_node": container_node + } + item_list.append(item) + + # Sort the item list by material name alphabetically + item_list = sorted(item_list, key = lambda d: d["name"].upper()) + + self.setItems(item_list) diff --git a/cura/Machines/Models/MachineManagementModel.py b/cura/Machines/Models/MachineManagementModel.py new file mode 100644 index 0000000000..481a692675 --- /dev/null +++ b/cura/Machines/Models/MachineManagementModel.py @@ -0,0 +1,79 @@ +# Copyright (c) 2018 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +from UM.Qt.ListModel import ListModel + +from PyQt5.QtCore import pyqtSlot, pyqtProperty, Qt, pyqtSignal + +from UM.Settings.ContainerRegistry import ContainerRegistry +from UM.Settings.ContainerStack import ContainerStack + +from UM.i18n import i18nCatalog +catalog = i18nCatalog("cura") + +# +# This the QML model for the quality management page. +# +class MachineManagementModel(ListModel): + NameRole = Qt.UserRole + 1 + IdRole = Qt.UserRole + 2 + MetaDataRole = Qt.UserRole + 3 + GroupRole = Qt.UserRole + 4 + + def __init__(self, parent = None): + super().__init__(parent) + self.addRoleName(self.NameRole, "name") + self.addRoleName(self.IdRole, "id") + self.addRoleName(self.MetaDataRole, "metadata") + self.addRoleName(self.GroupRole, "group") + self._local_container_stacks = [] + self._network_container_stacks = [] + + # Listen to changes + ContainerRegistry.getInstance().containerAdded.connect(self._onContainerChanged) + ContainerRegistry.getInstance().containerMetaDataChanged.connect(self._onContainerChanged) + ContainerRegistry.getInstance().containerRemoved.connect(self._onContainerChanged) + self._filter_dict = {} + self._update() + + ## Handler for container added/removed events from registry + def _onContainerChanged(self, container): + # We only need to update when the added / removed container is a stack. + if isinstance(container, ContainerStack): + self._update() + + ## Private convenience function to reset & repopulate the model. + def _update(self): + items = [] + + # Get first the network enabled printers + network_filter_printers = {"type": "machine", "um_network_key": "*", "hidden": "False"} + self._network_container_stacks = ContainerRegistry.getInstance().findContainerStacks(**network_filter_printers) + self._network_container_stacks.sort(key = lambda i: i.getMetaDataEntry("connect_group_name")) + + for container in self._network_container_stacks: + metadata = container.getMetaData().copy() + if container.getBottom(): + metadata["definition_name"] = container.getBottom().getName() + + items.append({"name": metadata["connect_group_name"], + "id": container.getId(), + "metadata": metadata, + "group": catalog.i18nc("@info:title", "Network enabled printers")}) + + # Get now the local printes + local_filter_printers = {"type": "machine", "um_network_key": None} + self._local_container_stacks = ContainerRegistry.getInstance().findContainerStacks(**local_filter_printers) + self._local_container_stacks.sort(key = lambda i: i.getName()) + + for container in self._local_container_stacks: + metadata = container.getMetaData().copy() + if container.getBottom(): + metadata["definition_name"] = container.getBottom().getName() + + items.append({"name": container.getName(), + "id": container.getId(), + "metadata": metadata, + "group": catalog.i18nc("@info:title", "Local printers")}) + + self.setItems(items) diff --git a/cura/Machines/Models/MaterialManagementModel.py b/cura/Machines/Models/MaterialManagementModel.py new file mode 100644 index 0000000000..46e9cb887a --- /dev/null +++ b/cura/Machines/Models/MaterialManagementModel.py @@ -0,0 +1,104 @@ +# Copyright (c) 2018 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +from PyQt5.QtCore import Qt + +from UM.Logger import Logger +from UM.Qt.ListModel import ListModel + + +# +# This model is for the Material management page. +# +class MaterialManagementModel(ListModel): + RootMaterialIdRole = Qt.UserRole + 1 + DisplayNameRole = Qt.UserRole + 2 + BrandRole = Qt.UserRole + 3 + MaterialTypeRole = Qt.UserRole + 4 + ColorNameRole = Qt.UserRole + 5 + ColorCodeRole = Qt.UserRole + 6 + ContainerNodeRole = Qt.UserRole + 7 + ContainerIdRole = Qt.UserRole + 8 + + DescriptionRole = Qt.UserRole + 9 + AdhesionInfoRole = Qt.UserRole + 10 + ApproximateDiameterRole = Qt.UserRole + 11 + GuidRole = Qt.UserRole + 12 + DensityRole = Qt.UserRole + 13 + DiameterRole = Qt.UserRole + 14 + IsReadOnlyRole = Qt.UserRole + 15 + + def __init__(self, parent = None): + super().__init__(parent) + + self.addRoleName(self.RootMaterialIdRole, "root_material_id") + self.addRoleName(self.DisplayNameRole, "name") + self.addRoleName(self.BrandRole, "brand") + self.addRoleName(self.MaterialTypeRole, "material") + self.addRoleName(self.ColorNameRole, "color_name") + self.addRoleName(self.ColorCodeRole, "color_code") + self.addRoleName(self.ContainerNodeRole, "container_node") + self.addRoleName(self.ContainerIdRole, "container_id") + + self.addRoleName(self.DescriptionRole, "description") + self.addRoleName(self.AdhesionInfoRole, "adhesion_info") + self.addRoleName(self.ApproximateDiameterRole, "approximate_diameter") + self.addRoleName(self.GuidRole, "guid") + self.addRoleName(self.DensityRole, "density") + self.addRoleName(self.DiameterRole, "diameter") + self.addRoleName(self.IsReadOnlyRole, "is_read_only") + + from cura.CuraApplication import CuraApplication + self._container_registry = CuraApplication.getInstance().getContainerRegistry() + self._machine_manager = CuraApplication.getInstance().getMachineManager() + self._extruder_manager = CuraApplication.getInstance().getExtruderManager() + self._material_manager = CuraApplication.getInstance().getMaterialManager() + + self._machine_manager.globalContainerChanged.connect(self._update) + self._extruder_manager.activeExtruderChanged.connect(self._update) + self._material_manager.materialsUpdated.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 + if global_stack is None: + self.setItems([]) + return + active_extruder_stack = self._machine_manager.activeStack + + available_material_dict = self._material_manager.getAvailableMaterialsForMachineExtruder(global_stack, + active_extruder_stack) + if available_material_dict is None: + self.setItems([]) + return + + material_list = [] + for root_material_id, container_node in available_material_dict.items(): + keys_to_fetch = ("name", + "brand", + "material", + "color_name", + "color_code", + "description", + "adhesion_info", + "approximate_diameter",) + + item = {"root_material_id": container_node.metadata["base_file"], + "container_node": container_node, + "guid": container_node.metadata["GUID"], + "container_id": container_node.metadata["id"], + "density": container_node.metadata.get("properties", {}).get("density", ""), + "diameter": container_node.metadata.get("properties", {}).get("diameter", ""), + "is_read_only": self._container_registry.isReadOnly(container_node.metadata["id"]), + } + + for key in keys_to_fetch: + item[key] = container_node.metadata.get(key, "") + + material_list.append(item) + + material_list = sorted(material_list, key = lambda k: (k["brand"].upper(), k["name"].upper())) + self.setItems(material_list) diff --git a/cura/BuildPlateModel.py b/cura/Machines/Models/MultiBuildPlateModel.py similarity index 60% rename from cura/BuildPlateModel.py rename to cura/Machines/Models/MultiBuildPlateModel.py index 73f61202c6..958e93837a 100644 --- a/cura/BuildPlateModel.py +++ b/cura/Machines/Models/MultiBuildPlateModel.py @@ -1,24 +1,37 @@ -from PyQt5.QtCore import pyqtSignal, pyqtProperty, pyqtSlot +# Copyright (c) 2018 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +from PyQt5.QtCore import QTimer, pyqtSignal, pyqtProperty -from UM.Qt.ListModel import ListModel -from UM.Scene.Selection import Selection -from UM.Logger import Logger from UM.Application import Application +from UM.Scene.Selection import Selection +from UM.Qt.ListModel import ListModel -class BuildPlateModel(ListModel): +# +# This is the model for multi build plate feature. +# This has nothing to do with the build plate types you can choose on the sidebar for a machine. +# +class MultiBuildPlateModel(ListModel): + maxBuildPlateChanged = pyqtSignal() activeBuildPlateChanged = pyqtSignal() selectionChanged = pyqtSignal() - def __init__(self): - super().__init__() - Application.getInstance().getController().getScene().sceneChanged.connect(self._updateSelectedObjectBuildPlateNumbers) + def __init__(self, parent = None): + super().__init__(parent) + + self._update_timer = QTimer() + self._update_timer.setInterval(100) + self._update_timer.setSingleShot(True) + self._update_timer.timeout.connect(self._updateSelectedObjectBuildPlateNumbers) + + self._application = Application.getInstance() + self._application.getController().getScene().sceneChanged.connect(self._updateSelectedObjectBuildPlateNumbersDelayed) Selection.selectionChanged.connect(self._updateSelectedObjectBuildPlateNumbers) self._max_build_plate = 1 # default self._active_build_plate = -1 - self._selection_build_plates = [] def setMaxBuildPlate(self, max_build_plate): self._max_build_plate = max_build_plate @@ -37,9 +50,8 @@ class BuildPlateModel(ListModel): def activeBuildPlate(self): return self._active_build_plate - @staticmethod - def createBuildPlateModel(): - return BuildPlateModel() + def _updateSelectedObjectBuildPlateNumbersDelayed(self, *args): + self._update_timer.start() def _updateSelectedObjectBuildPlateNumbers(self, *args): result = set() diff --git a/cura/Machines/Models/NozzleModel.py b/cura/Machines/Models/NozzleModel.py new file mode 100644 index 0000000000..0879998b7d --- /dev/null +++ b/cura/Machines/Models/NozzleModel.py @@ -0,0 +1,61 @@ +# Copyright (c) 2018 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 + + +class NozzleModel(ListModel): + IdRole = Qt.UserRole + 1 + HotendNameRole = Qt.UserRole + 2 + ContainerNodeRole = Qt.UserRole + 3 + + def __init__(self, parent = None): + super().__init__(parent) + + self.addRoleName(self.IdRole, "id") + 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) + self._update() + + def _update(self): + Logger.log("d", "Updating {model_class_name}.".format(model_class_name = self.__class__.__name__)) + + self.items.clear() + + global_stack = self._machine_manager.activeMachine + if global_stack is None: + self.setItems([]) + return + + has_variants = parseBool(global_stack.getMetaDataEntry("has_variants", False)) + if not has_variants: + self.setItems([]) + return + + from cura.Machines.VariantManager import VariantType + variant_node_dict = self._variant_manager.getVariantNodes(global_stack, VariantType.NOZZLE) + if not variant_node_dict: + self.setItems([]) + return + + item_list = [] + for hotend_name, container_node in sorted(variant_node_dict.items(), key = lambda i: i[0].upper()): + item = {"id": hotend_name, + "hotend_name": hotend_name, + "container_node": container_node + } + + item_list.append(item) + + self.setItems(item_list) diff --git a/cura/Machines/Models/QualityManagementModel.py b/cura/Machines/Models/QualityManagementModel.py new file mode 100644 index 0000000000..4d2b551805 --- /dev/null +++ b/cura/Machines/Models/QualityManagementModel.py @@ -0,0 +1,124 @@ +# Copyright (c) 2018 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +from PyQt5.QtCore import Qt, pyqtSlot + +from UM.Qt.ListModel import ListModel +from UM.Logger import Logger + +# +# This the QML model for the quality management page. +# +class QualityManagementModel(ListModel): + NameRole = Qt.UserRole + 1 + IsReadOnlyRole = Qt.UserRole + 2 + QualityGroupRole = Qt.UserRole + 3 + QualityChangesGroupRole = Qt.UserRole + 4 + + def __init__(self, parent = 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.QualityChangesGroupRole, "quality_changes_group") + + 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() + + self._machine_manager.globalContainerChanged.connect(self._update) + self._quality_manager.qualitiesUpdated.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 + + quality_group_dict = self._quality_manager.getQualityGroups(global_stack) + quality_changes_group_dict = self._quality_manager.getQualityChangesGroups(global_stack) + + 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: + # Nothing to show + self.setItems([]) + return + + item_list = [] + # Create quality group items + for quality_group in quality_group_dict.values(): + if not quality_group.is_available: + continue + + item = {"name": quality_group.name, + "is_read_only": True, + "quality_group": quality_group, + "quality_changes_group": None} + item_list.append(item) + # Sort by quality names + item_list = sorted(item_list, key = lambda x: x["name"].upper()) + + # Create quality_changes group items + quality_changes_item_list = [] + for quality_changes_group in quality_changes_group_dict.values(): + if quality_changes_group.quality_type not in available_quality_types: + continue + quality_group = quality_group_dict[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_changes_item_list.append(item) + + # Sort quality_changes items by names and append to the item list + quality_changes_item_list = sorted(quality_changes_item_list, key = lambda x: x["name"].upper()) + item_list += quality_changes_item_list + + self.setItems(item_list) + + # TODO: Duplicated code here from InstanceContainersModel. Refactor and remove this later. + # + ## Gets a list of the possible file filters that the plugins have + # registered they can read or write. The convenience meta-filters + # "All Supported Types" and "All Files" are added when listing + # readers, but not when listing writers. + # + # \param io_type \type{str} name of the needed IO type + # \return A list of strings indicating file name filters for a file + # dialog. + @pyqtSlot(str, result = "QVariantList") + def getFileNameFilters(self, io_type): + from UM.i18n import i18nCatalog + catalog = i18nCatalog("uranium") + #TODO: This function should be in UM.Resources! + filters = [] + all_types = [] + for plugin_id, meta_data in self._getIOPlugins(io_type): + for io_plugin in meta_data[io_type]: + filters.append(io_plugin["description"] + " (*." + io_plugin["extension"] + ")") + all_types.append("*.{0}".format(io_plugin["extension"])) + + if "_reader" in io_type: + # if we're listing readers, add the option to show all supported files as the default option + filters.insert(0, catalog.i18nc("@item:inlistbox", "All Supported Types ({0})", " ".join(all_types))) + filters.append(catalog.i18nc("@item:inlistbox", "All Files (*)")) # Also allow arbitrary files, if the user so prefers. + return filters + + ## Gets a list of profile reader or writer plugins + # \return List of tuples of (plugin_id, meta_data). + def _getIOPlugins(self, io_type): + from UM.PluginRegistry import PluginRegistry + pr = PluginRegistry.getInstance() + active_plugin_ids = pr.getActivePlugins() + + result = [] + for plugin_id in active_plugin_ids: + meta_data = pr.getMetaData(plugin_id) + if io_type in meta_data: + result.append( (plugin_id, meta_data) ) + return result diff --git a/cura/Machines/Models/QualityProfilesDropDownMenuModel.py b/cura/Machines/Models/QualityProfilesDropDownMenuModel.py new file mode 100644 index 0000000000..d8c4b668cf --- /dev/null +++ b/cura/Machines/Models/QualityProfilesDropDownMenuModel.py @@ -0,0 +1,107 @@ +# Copyright (c) 2018 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 cura.Machines.QualityManager import QualityGroup + + +# +# QML Model for all built-in quality profiles. This model is used for the drop-down quality menu. +# +class QualityProfilesDropDownMenuModel(ListModel): + NameRole = Qt.UserRole + 1 + QualityTypeRole = Qt.UserRole + 2 + LayerHeightRole = Qt.UserRole + 3 + LayerHeightUnitRole = Qt.UserRole + 4 + AvailableRole = Qt.UserRole + 5 + QualityGroupRole = Qt.UserRole + 6 + QualityChangesGroupRole = Qt.UserRole + 7 + + def __init__(self, parent = None): + super().__init__(parent) + + self.addRoleName(self.NameRole, "name") + self.addRoleName(self.QualityTypeRole, "quality_type") + self.addRoleName(self.LayerHeightRole, "layer_height") + self.addRoleName(self.LayerHeightUnitRole, "layer_height_unit") + self.addRoleName(self.AvailableRole, "available") #Whether the quality profile is available in our current nozzle + material. + self.addRoleName(self.QualityGroupRole, "quality_group") + self.addRoleName(self.QualityChangesGroupRole, "quality_changes_group") + + self._application = Application.getInstance() + self._machine_manager = self._application.getMachineManager() + self._quality_manager = Application.getInstance().getQualityManager() + + self._application.globalContainerStackChanged.connect(self._update) + self._machine_manager.activeQualityGroupChanged.connect(self._update) + self._machine_manager.extruderChanged.connect(self._update) + self._quality_manager.qualitiesUpdated.connect(self._update) + + self._layer_height_unit = "" # This is cached + + 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 + if global_stack is None: + self.setItems([]) + Logger.log("d", "No active GlobalStack, set quality profile model as empty.") + return + + # Check for material compatibility + if not self._machine_manager.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) + + item_list = [] + for key in sorted(quality_group_dict): + quality_group = quality_group_dict[key] + + layer_height = self._fetchLayerHeight(quality_group) + + item = {"name": quality_group.name, + "quality_type": quality_group.quality_type, + "layer_height": layer_height, + "layer_height_unit": self._layer_height_unit, + "available": quality_group.is_available, + "quality_group": quality_group} + + item_list.append(item) + + # Sort items based on layer_height + item_list = sorted(item_list, key = lambda x: x["layer_height"]) + + self.setItems(item_list) + + def _fetchLayerHeight(self, quality_group: "QualityGroup"): + 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 + container = quality_group.node_for_global.getContainer() + + layer_height = default_layer_height + if 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.hasProperty("layer_height", "value"): + layer_height = container.getProperty("layer_height", "value") + return float(layer_height) diff --git a/cura/Machines/Models/QualitySettingsModel.py b/cura/Machines/Models/QualitySettingsModel.py new file mode 100644 index 0000000000..b38f6f65c8 --- /dev/null +++ b/cura/Machines/Models/QualitySettingsModel.py @@ -0,0 +1,164 @@ +# Copyright (c) 2018 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 +from UM.Logger import Logger +from UM.Qt.ListModel import ListModel +from UM.Settings.ContainerRegistry import ContainerRegistry + + +# +# This model is used to show details settings of the selected quality in the quality management page. +# +class QualitySettingsModel(ListModel): + KeyRole = Qt.UserRole + 1 + LabelRole = Qt.UserRole + 2 + UnitRole = Qt.UserRole + 3 + ProfileValueRole = Qt.UserRole + 4 + ProfileValueSourceRole = Qt.UserRole + 5 + UserValueRole = Qt.UserRole + 6 + CategoryRole = Qt.UserRole + 7 + + GLOBAL_STACK_POSITION = -1 + + def __init__(self, parent = None): + super().__init__(parent = parent) + + self.addRoleName(self.KeyRole, "key") + self.addRoleName(self.LabelRole, "label") + self.addRoleName(self.UnitRole, "unit") + self.addRoleName(self.ProfileValueRole, "profile_value") + self.addRoleName(self.ProfileValueSourceRole, "profile_value_source") + self.addRoleName(self.UserValueRole, "user_value") + self.addRoleName(self.CategoryRole, "category") + + self._container_registry = ContainerRegistry.getInstance() + self._application = Application.getInstance() + self._quality_manager = self._application.getQualityManager() + + 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() + selectedQualityItemChanged = pyqtSignal() + + def setSelectedPosition(self, selected_position): + if selected_position != self._selected_position: + self._selected_position = selected_position + self.selectedPositionChanged.emit() + self._update() + + @pyqtProperty(int, fset = setSelectedPosition, notify = selectedPositionChanged) + def selectedPosition(self): + return self._selected_position + + def setSelectedQualityItem(self, selected_quality_item): + if selected_quality_item != self._selected_quality_item: + self._selected_quality_item = selected_quality_item + self.selectedQualityItemChanged.emit() + self._update() + + @pyqtProperty("QVariantMap", fset = setSelectedQualityItem, notify = selectedQualityItemChanged) + def selectedQualityItem(self): + return self._selected_quality_item + + def _update(self): + Logger.log("d", "Updating {model_class_name}.".format(model_class_name = self.__class__.__name__)) + + if not self._selected_quality_item: + self.setItems([]) + return + + items = [] + + global_container_stack = self._application.getGlobalContainerStack() + definition_container = global_container_stack.definition + + quality_group = self._selected_quality_item["quality_group"] + quality_changes_group = self._selected_quality_item["quality_changes_group"] + + if self._selected_position == self.GLOBAL_STACK_POSITION: + quality_node = quality_group.node_for_global + else: + 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: + quality_containers.append(quality_node.getContainer()) + + # 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 + else: + quality_changes_node = quality_changes_group.nodes_for_extruders.get(str(self._selected_position)) + if quality_changes_node is not None: # it can be None if number of extruders are changed during runtime + try: + quality_containers.insert(0, quality_changes_node.getContainer()) + except RuntimeError: + # FIXME: This is to prevent incomplete update of QualityManager + Logger.logException("d", "Failed to get container for quality changes node %s", quality_changes_node) + return + settings_keys.update(quality_changes_group.getAllKeys()) + + # We iterate over all definitions instead of settings in a quality/qualtiy_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 = "" + for definition in definition_container.findDefinitions(): + if definition.type == "category": + current_category = definition.label + if self._i18n_catalog: + current_category = self._i18n_catalog.i18nc(definition.key + " label", definition.label) + continue + + profile_value = None + profile_value_source = "" + for quality_container in quality_containers: + new_value = quality_container.getProperty(definition.key, "value") + + if new_value is not None: + profile_value_source = quality_container.getMetaDataEntry("type") + profile_value = new_value + + # Global tab should use resolve (if there is one) + if self._selected_position == self.GLOBAL_STACK_POSITION: + resolve_value = global_container_stack.getProperty(definition.key, "resolve") + if resolve_value is not None and definition.key in settings_keys: + profile_value = resolve_value + + if profile_value is not None: + break + + if self._selected_position == self.GLOBAL_STACK_POSITION: + user_value = global_container_stack.userChanges.getProperty(definition.key, "value") + else: + extruder_stack = global_container_stack.extruders[str(self._selected_position)] + user_value = extruder_stack.userChanges.getProperty(definition.key, "value") + + if profile_value is None and user_value is None: + continue + + label = definition.label + if self._i18n_catalog: + label = self._i18n_catalog.i18nc(definition.key + " label", label) + + items.append({ + "key": definition.key, + "label": label, + "unit": definition.unit, + "profile_value": "" if profile_value is None else str(profile_value), # it is for display only + "profile_value_source": profile_value_source, + "user_value": "" if user_value is None else str(user_value), + "category": current_category + }) + + self.setItems(items) diff --git a/cura/Machines/Models/__init__.py b/cura/Machines/Models/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/cura/Machines/QualityChangesGroup.py b/cura/Machines/QualityChangesGroup.py new file mode 100644 index 0000000000..ad320a7006 --- /dev/null +++ b/cura/Machines/QualityChangesGroup.py @@ -0,0 +1,27 @@ +# Copyright (c) 2018 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +from UM.Application import Application + +from .QualityGroup import QualityGroup + + +class QualityChangesGroup(QualityGroup): + def __init__(self, name: str, quality_type: str, parent = None): + super().__init__(name, quality_type, parent) + self._container_registry = Application.getInstance().getContainerRegistry() + + def addNode(self, node: "QualityNode"): + extruder_position = node.metadata.get("position") + if extruder_position is None: #Then we're a global quality changes profile. + if self.node_for_global is not None: + raise RuntimeError("{group} tries to overwrite the existing node_for_global {original_global} with {new_global}".format(group = self, original_global = self.node_for_global, new_global = node)) + self.node_for_global = node + else: #This is an extruder's quality changes profile. + if extruder_position in self.nodes_for_extruders: + raise RuntimeError("%s tries to overwrite the existing nodes_for_extruders position [%s] %s with %s" % + (self, extruder_position, self.node_for_global, node)) + self.nodes_for_extruders[extruder_position] = node + + def __str__(self) -> str: + return "%s[<%s>, available = %s]" % (self.__class__.__name__, self.name, self.is_available) diff --git a/cura/Machines/QualityGroup.py b/cura/Machines/QualityGroup.py new file mode 100644 index 0000000000..02096cfb36 --- /dev/null +++ b/cura/Machines/QualityGroup.py @@ -0,0 +1,50 @@ +# Copyright (c) 2018 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +from typing import Dict, Optional, List + +from PyQt5.QtCore import QObject, pyqtSlot + + +# +# 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 +# +# 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): + super().__init__(parent) + self.name = name + self.node_for_global = None # type: Optional["QualityGroup"] + self.nodes_for_extruders = {} # type: Dict[int, "QualityGroup"] + self.quality_type = quality_type + self.is_available = False + + @pyqtSlot(result = str) + def getName(self) -> str: + return self.name + + def getAllKeys(self) -> set: + result = set() + for node in [self.node_for_global] + list(self.nodes_for_extruders.values()): + if node is None: + continue + result.update(node.getContainer().getAllKeys()) + return result + + def getAllNodes(self) -> List["QualityGroup"]: + result = [] + if self.node_for_global is not None: + result.append(self.node_for_global) + for extruder_node in self.nodes_for_extruders.values(): + result.append(extruder_node) + return result diff --git a/cura/Machines/QualityManager.py b/cura/Machines/QualityManager.py new file mode 100644 index 0000000000..8d972c9192 --- /dev/null +++ b/cura/Machines/QualityManager.py @@ -0,0 +1,493 @@ +# Copyright (c) 2018 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +from typing import TYPE_CHECKING, Optional + +from PyQt5.QtCore import QObject, QTimer, pyqtSignal, pyqtSlot + +from UM.Application import Application +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.DefinitionContainer import DefinitionContainer + from cura.Settings.GlobalStack import GlobalStack + from .QualityChangesGroup import QualityChangesGroup + + +# +# 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, container_registry, parent = None): + super().__init__(parent) + self._application = Application.getInstance() + self._material_manager = self._application.getMaterialManager() + self._container_registry = container_registry + + self._empty_quality_container = self._application.empty_quality_container + self._empty_quality_changes_container = self._application.empty_quality_changes_container + + self._machine_variant_material_quality_type_to_quality_dict = {} # for quality lookup + self._machine_quality_type_to_quality_changes_dict = {} # for quality_changes lookup + + 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): + # Initialize the lookup tree for quality profiles with following structure: + # -> -> + # -> + + self._machine_variant_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") + variant_name = metadata.get("variant") + is_global_quality = metadata.get("global_quality", False) + is_global_quality = is_global_quality or (root_material_id is None and variant_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 variant_name): + raise RuntimeError("Quality profile [%s] contains invalid data: it is a global quality but contains 'material' and 'nozzle' info." % metadata["id"]) + + if definition_id not in self._machine_variant_material_quality_type_to_quality_dict: + self._machine_variant_material_quality_type_to_quality_dict[definition_id] = QualityNode() + machine_node = self._machine_variant_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 + + if variant_name is not None: + # If variant_name is specified in the quality/quality_changes profile, check if material is specified, + # too. + if variant_name not in machine_node.children_map: + machine_node.children_map[variant_name] = QualityNode() + variant_node = machine_node.children_map[variant_name] + + if root_material_id is None: + # If only variant_name is specified but material is not, add the quality/quality_changes metadata + # into the current variant node. + variant_node.addQualityMetadata(quality_type, metadata) + else: + # If only variant_name and material are both specified, go one level deeper: create a material node + # under the current variant node, and then add the quality/quality_changes metadata into the + # material node. + if root_material_id not in variant_node.children_map: + variant_node.children_map[root_material_id] = QualityNode() + material_node = variant_node.children_map[root_material_id] + + material_node.addQualityMetadata(quality_type, metadata) + + else: + # If variant_name is not specified, check if material is specified. + if root_material_id is not None: + if root_material_id not in machine_node.children_map: + machine_node.children_map[root_material_id] = QualityNode() + material_node = machine_node.children_map[root_material_id] + + material_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): + self.initialize() + + def _onContainerMetadataChanged(self, container): + self._onContainerChanged(container) + + def _onContainerChanged(self, container): + 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): + used_extruders = set() + for i in range(machine.getProperty("machine_extruder_count", "value")): + if 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: + 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_variant_materials = parseBool(machine.getMetaDataEntry("has_variant_materials", False)) + + # 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_variant_material_quality_type_to_quality_dict.get(machine_definition_id) + default_machine_node = self._machine_variant_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 = {} + for node in nodes_to_check: + if node and node.quality_type_map: + # Only include global qualities + if has_variant_materials: + quality_node = list(node.quality_type_map.values())[0] + is_global_quality = parseBool(quality_node.metadata.get("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.metadata["name"], quality_type) + quality_group.node_for_global = quality_node + quality_group_dict[quality_type] = quality_group + break + + # Iterate over all extruders to find quality containers for each extruder + for position, extruder in machine.extruders.items(): + variant_name = None + if extruder.variant.getId() != "empty_variant": + variant_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 + 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 material + material_type = extruder.material.getMetaDataEntry("material") + fallback_root_material_id = self._material_manager.getFallbackMaterialIdByMaterialType(material_type) + if fallback_root_material_id: + root_material_id_list.append(fallback_root_material_id) + + # 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-variant-and-material-specific qualities if exist + # 2. machine-variant-specific qualities if exist + # 3. machine-material-specific qualities if exist + # 4. machine-specific qualities if exist + # 5. generic qualities if exist + # 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. + nodes_to_check = [] + + if variant_name: + # In this case, we have both a specific variant and a specific material + variant_node = machine_node.getChildNode(variant_name) + if variant_node and has_material: + for root_material_id in root_material_id_list: + material_node = variant_node.getChildNode(root_material_id) + if material_node: + nodes_to_check.append(material_node) + break + nodes_to_check.append(variant_node) + + # In this case, we only have a specific material but NOT a variant + if has_material: + for root_material_id in root_material_id_list: + material_node = machine_node.getChildNode(root_material_id) + if material_node: + nodes_to_check.append(material_node) + break + + nodes_to_check += [machine_node, default_machine_node] + for node in nodes_to_check: + if node and node.quality_type_map: + if has_variant_materials: + # Only include variant qualities; skip non global qualities + quality_node = list(node.quality_type_map.values())[0] + is_global_quality = parseBool(quality_node.metadata.get("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.metadata["name"], quality_type) + quality_group_dict[quality_type] = quality_group + + quality_group = quality_group_dict[quality_type] + quality_group.nodes_for_extruders[position] = quality_node + break + + # Update availabilities for each quality group + self._updateQualityGroupsAvailability(machine, quality_group_dict.values()) + + return quality_group_dict + + def getQualityGroupsForMachineDefinition(self, machine: "GlobalStack") -> dict: + 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_variant_material_quality_type_to_quality_dict.get(machine_definition_id) + default_machine_node = self._machine_variant_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.metadata["name"], quality_type) + quality_group.node_for_global = quality_node + quality_group_dict[quality_type] = quality_group + break + + return quality_group_dict + + # + # Methods for GUI + # + + # + # Remove the given quality changes group. + # + @pyqtSlot(QObject) + def removeQualityChangesGroup(self, quality_changes_group: "QualityChangesGroup"): + Logger.log("i", "Removing quality changes group [%s]", quality_changes_group.name) + for node in quality_changes_group.getAllNodes(): + self._container_registry.removeContainer(node.metadata["id"]) + + # + # 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(): + node.getContainer().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, quality_model_item): + global_stack = self._application.getGlobalContainerStack() + if not global_stack: + Logger.log("i", "No active global stack, cannot duplicate quality changes.") + return + + quality_group = quality_model_item["quality_group"] + quality_changes_group = quality_model_item["quality_changes_group"] + if quality_changes_group is None: + # create global quality changes only + new_quality_changes = self._createQualityChanges(quality_group.quality_type, quality_changes_name, + global_stack, None) + self._container_registry.addContainer(new_quality_changes) + else: + new_name = self._container_registry.uniqueName(quality_changes_name) + for node in quality_changes_group.getAllNodes(): + container = node.getContainer() + 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): + machine_manager = Application.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 + 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.addMetaDataEntry("type", "quality_changes") + quality_changes.addMetaDataEntry("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.addMetaDataEntry("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.addMetaDataEntry("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: "DefinitionContainer", + 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 new file mode 100644 index 0000000000..a30e219da3 --- /dev/null +++ b/cura/Machines/QualityNode.py @@ -0,0 +1,35 @@ +# Copyright (c) 2018 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +from typing import Optional + +from .ContainerNode import ContainerNode +from .QualityChangesGroup import QualityChangesGroup + + +# +# QualityNode is used for BOTH quality and quality_changes containers. +# +class QualityNode(ContainerNode): + + def __init__(self, metadata: Optional[dict] = None): + super().__init__(metadata = metadata) + self.quality_type_map = {} # quality_type -> QualityNode for InstanceContainer + + def addQualityMetadata(self, quality_type: str, metadata: dict): + if quality_type not in self.quality_type_map: + self.quality_type_map[quality_type] = QualityNode(metadata) + + def getQualityNode(self, quality_type: str) -> Optional["QualityNode"]: + return self.quality_type_map.get(quality_type) + + def addQualityChangesMetadata(self, quality_type: str, metadata: dict): + 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] + quality_changes_group.addNode(QualityNode(metadata)) diff --git a/cura/Machines/VariantManager.py b/cura/Machines/VariantManager.py new file mode 100644 index 0000000000..4e033e054e --- /dev/null +++ b/cura/Machines/VariantManager.py @@ -0,0 +1,145 @@ +# Copyright (c) 2018 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +from enum import Enum +from collections import OrderedDict +from typing import Optional, TYPE_CHECKING + +from UM.Logger import Logger +from UM.Settings.ContainerRegistry import ContainerRegistry +from UM.Util import parseBool + +from cura.Machines.ContainerNode import ContainerNode +from cura.Settings.GlobalStack import GlobalStack + +if TYPE_CHECKING: + from UM.Settings.DefinitionContainer import DefinitionContainer + + +class VariantType(Enum): + BUILD_PLATE = "buildplate" + NOZZLE = "nozzle" + + +ALL_VARIANT_TYPES = (VariantType.BUILD_PLATE, VariantType.NOZZLE) + + +# +# 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): + self._container_registry = container_registry # type: ContainerRegistry + + self._machine_to_variant_dict_map = dict() # -> + self._machine_to_buildplate_dict_map = dict() + + 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): + 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() + + variant_type = variant_metadata["hardware_type"] + 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. + raise RuntimeError("Found duplicated variant name [%s], type [%s] for machine [%s]" % + (variant_name, variant_type, variant_definition)) + + 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"]) + if not variant_container: + # ERROR: not variant container. This should never happen + raise RuntimeError("Not variant found [%s], type [%s] for machine [%s]" % + (variant_name, variant_type, variant_definition)) + buildplate_type = variant_container[0].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[machine_definition_id].get(variant_type, {}).get(variant_name) + + def getVariantNodes(self, machine: "GlobalStack", + variant_type: Optional["VariantType"] = None) -> dict: + 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. + # + def getDefaultVariantNode(self, machine_definition: "DefinitionContainer", + variant_type: VariantType) -> Optional["ContainerNode"]: + machine_definition_id = machine_definition.getId() + preferred_variant_name = None + if variant_type == VariantType.BUILD_PLATE: + if parseBool(machine_definition.getMetaDataEntry("has_variant_buildplates", False)): + preferred_variant_name = machine_definition.getMetaDataEntry("preferred_variant_buildplate_name") + else: + if parseBool(machine_definition.getMetaDataEntry("has_variants", False)): + preferred_variant_name = machine_definition.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/__init__.py b/cura/Machines/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/cura/ObjectsModel.py b/cura/ObjectsModel.py index 1516b3ee33..cfe4320e28 100644 --- a/cura/ObjectsModel.py +++ b/cura/ObjectsModel.py @@ -1,3 +1,8 @@ +# Copyright (c) 2018 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +from PyQt5.QtCore import QTimer + from UM.Application import Application from UM.Qt.ListModel import ListModel from UM.Scene.Iterator.DepthFirstIterator import DepthFirstIterator @@ -8,13 +13,19 @@ from UM.i18n import i18nCatalog catalog = i18nCatalog("cura") + ## Keep track of all objects in the project class ObjectsModel(ListModel): def __init__(self): super().__init__() - Application.getInstance().getController().getScene().sceneChanged.connect(self._update) - Preferences.getInstance().preferenceChanged.connect(self._update) + Application.getInstance().getController().getScene().sceneChanged.connect(self._updateDelayed) + Preferences.getInstance().preferenceChanged.connect(self._updateDelayed) + + self._update_timer = QTimer() + self._update_timer.setInterval(100) + self._update_timer.setSingleShot(True) + self._update_timer.timeout.connect(self._update) self._build_plate_number = -1 @@ -22,6 +33,9 @@ class ObjectsModel(ListModel): self._build_plate_number = nr self._update() + def _updateDelayed(self, *args): + self._update_timer.start() + def _update(self, *args): nodes = [] filter_current_build_plate = Preferences.getInstance().getValue("view/filter_current_build_plate") @@ -46,10 +60,15 @@ class ObjectsModel(ListModel): name = catalog.i18nc("@label", "Group #{group_nr}").format(group_nr = str(group_nr)) group_nr += 1 + if hasattr(node, "isOutsideBuildArea"): + is_outside_build_area = node.isOutsideBuildArea() + else: + is_outside_build_area = False + nodes.append({ "name": name, "isSelected": Selection.isSelected(node), - "isOutsideBuildArea": node.isOutsideBuildArea(), + "isOutsideBuildArea": is_outside_build_area, "buildPlateNumber": node_build_plate_number, "node": node }) diff --git a/cura/OneAtATimeIterator.py b/cura/OneAtATimeIterator.py index 5653c8f1fb..84d65bae8e 100644 --- a/cura/OneAtATimeIterator.py +++ b/cura/OneAtATimeIterator.py @@ -18,12 +18,13 @@ class OneAtATimeIterator(Iterator.Iterator): def _fillStack(self): node_list = [] for node in self._scene_node.getChildren(): - if not isinstance(node, SceneNode): + if not issubclass(type(node), SceneNode): continue if node.callDecoration("getConvexHull"): node_list.append(node) + if len(node_list) < 2: self._node_stack = node_list[:] return diff --git a/cura/PlatformPhysics.py b/cura/PlatformPhysics.py index 69890178e4..3d9d5d5027 100755 --- a/cura/PlatformPhysics.py +++ b/cura/PlatformPhysics.py @@ -40,6 +40,8 @@ class PlatformPhysics: Preferences.getInstance().addPreference("physics/automatic_drop_down", True) def _onSceneChanged(self, source): + if not source.getMeshData(): + return self._change_timer.start() def _onChangeTimerFinished(self): diff --git a/cura/PreviewPass.py b/cura/PreviewPass.py index c1880e82ef..de21a5dc86 100644 --- a/cura/PreviewPass.py +++ b/cura/PreviewPass.py @@ -1,7 +1,7 @@ -# Copyright (c) 2017 Ultimaker B.V. -# Uranium is released under the terms of the LGPLv3 or higher. - +# Copyright (c) 2018 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. from UM.Application import Application +from UM.Math.Color import Color from UM.Resources import Resources from UM.View.RenderPass import RenderPass @@ -17,6 +17,18 @@ MYPY = False if MYPY: from UM.Scene.Camera import Camera + +# Make color brighter by normalizing it (maximum factor 2.5 brighter) +# color_list is a list of 4 elements: [r, g, b, a], each element is a float 0..1 +def prettier_color(color_list): + maximum = max(color_list[:3]) + if maximum > 0: + factor = min(1 / maximum, 2.5) + else: + factor = 1.0 + return [min(i * factor, 1.0) for i in color_list] + + ## A render pass subclass that renders slicable objects with default parameters. # It uses the active camera by default, but it can be overridden to use a different camera. # @@ -39,7 +51,14 @@ class PreviewPass(RenderPass): def render(self) -> None: if not self._shader: - self._shader = OpenGL.getInstance().createShaderProgram(Resources.getPath(Resources.Shaders, "object.shader")) + self._shader = OpenGL.getInstance().createShaderProgram(Resources.getPath(Resources.Shaders, "overhang.shader")) + self._shader.setUniformValue("u_overhangAngle", 1.0) + 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._gl.glClearColor(0.0, 0.0, 0.0, 0.0) + self._gl.glClear(self._gl.GL_COLOR_BUFFER_BIT | self._gl.GL_DEPTH_BUFFER_BIT) # Create a new batch to be rendered batch = RenderBatch(self._shader) @@ -47,7 +66,9 @@ class PreviewPass(RenderPass): # Fill up the batch with objects that can be sliced. ` for node in DepthFirstIterator(self._scene.getRoot()): if node.callDecoration("isSliceable") and node.getMeshData() and node.isVisible(): - batch.addItem(node.getWorldTransformation(), node.getMeshData()) + uniforms = {} + uniforms["diffuse_color"] = prettier_color(node.getDiffuseColor()) + batch.addItem(node.getWorldTransformation(), node.getMeshData(), uniforms = uniforms) self.bind() if self._camera is None: @@ -55,3 +76,4 @@ class PreviewPass(RenderPass): else: batch.render(self._camera) self.release() + diff --git a/cura/PrintInformation.py b/cura/PrintInformation.py index 5d5d59ed3b..05b740637d 100644 --- a/cura/PrintInformation.py +++ b/cura/PrintInformation.py @@ -1,25 +1,22 @@ # Copyright (c) 2018 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. -from PyQt5.QtCore import QObject, pyqtSignal, pyqtProperty -from UM.FlameProfiler import pyqtSlot +from typing import Dict +import math +import os.path +import unicodedata +import json +import re # To create abbreviations for printer names. + +from PyQt5.QtCore import QObject, pyqtSignal, pyqtProperty, pyqtSlot from UM.Application import Application from UM.Logger import Logger from UM.Qt.Duration import Duration from UM.Preferences import Preferences -from UM.Settings.ContainerRegistry import ContainerRegistry - -from cura.Settings.ExtruderManager import ExtruderManager -from typing import Dict - -import math -import os.path -import unicodedata -import json -import re #To create abbreviations for printer names. - +from UM.Scene.SceneNode import SceneNode from UM.i18n import i18nCatalog + catalog = i18nCatalog("cura") ## A class for processing and calculating minimum, current and maximum print time as well as managing the job name @@ -65,7 +62,7 @@ class PrintInformation(QObject): self._backend = Application.getInstance().getBackend() if self._backend: self._backend.printDurationMessage.connect(self._onPrintDurationMessage) - Application.getInstance().getController().getScene().sceneChanged.connect(self.setToZeroPrintInformation) + Application.getInstance().getController().getScene().sceneChanged.connect(self._onSceneChanged) self._base_name = "" self._abbr_machine = "" @@ -74,16 +71,19 @@ class PrintInformation(QObject): self._active_build_plate = 0 self._initVariablesWithBuildPlate(self._active_build_plate) - Application.getInstance().globalContainerStackChanged.connect(self._updateJobName) - Application.getInstance().fileLoaded.connect(self.setBaseName) - Application.getInstance().getBuildPlateModel().activeBuildPlateChanged.connect(self._onActiveBuildPlateChanged) - Application.getInstance().workspaceLoaded.connect(self.setProjectName) + self._application = Application.getInstance() + self._multi_build_plate_model = self._application.getMultiBuildPlateModel() + + self._application.globalContainerStackChanged.connect(self._updateJobName) + self._application.globalContainerStackChanged.connect(self.setToZeroPrintInformation) + self._application.fileLoaded.connect(self.setBaseName) + self._application.workspaceLoaded.connect(self.setProjectName) + self._multi_build_plate_model.activeBuildPlateChanged.connect(self._onActiveBuildPlateChanged) Preferences.getInstance().preferenceChanged.connect(self._onPreferencesChanged) - self._active_material_container = None - Application.getInstance().getMachineManager().activeMaterialChanged.connect(self._onActiveMaterialChanged) - self._onActiveMaterialChanged() + self._application.getMachineManager().rootMaterialChanged.connect(self._onActiveMaterialsChanged) + self._onActiveMaterialsChanged() self._material_amounts = [] @@ -108,7 +108,6 @@ class PrintInformation(QObject): self._print_time_message_values = {} - def _initPrintTimeMessageValues(self, build_plate_number): # Full fill message values using keys from _print_time_message_translations self._print_time_message_values[build_plate_number] = {} @@ -199,11 +198,10 @@ class PrintInformation(QObject): self._current_print_time[build_plate_number].setDuration(total_estimated_time) def _calculateInformation(self, build_plate_number): - if Application.getInstance().getGlobalContainerStack() is None: + global_stack = Application.getInstance().getGlobalContainerStack() + if global_stack is None: return - # Material amount is sent as an amount of mm^3, so calculate length from that - radius = Application.getInstance().getGlobalContainerStack().getProperty("material_diameter", "value") / 2 self._material_lengths[build_plate_number] = [] self._material_weights[build_plate_number] = [] self._material_costs[build_plate_number] = [] @@ -211,18 +209,17 @@ class PrintInformation(QObject): material_preference_values = json.loads(Preferences.getInstance().getValue("cura/material_settings")) - extruder_stacks = list(ExtruderManager.getInstance().getMachineExtruders(Application.getInstance().getGlobalContainerStack().getId())) - for index, amount in enumerate(self._material_amounts): + extruder_stacks = global_stack.extruders + for position, extruder_stack in extruder_stacks.items(): + index = int(position) + if index >= len(self._material_amounts): + continue + amount = self._material_amounts[index] ## Find the right extruder stack. As the list isn't sorted because it's a annoying generator, we do some # list comprehension filtering to solve this for us. - material = None - if extruder_stacks: # Multi extrusion machine - extruder_stack = [extruder for extruder in extruder_stacks if extruder.getMetaDataEntry("position") == str(index)][0] - density = extruder_stack.getMetaDataEntry("properties", {}).get("density", 0) - material = extruder_stack.findContainer({"type": "material"}) - else: # Machine with no extruder stacks - density = Application.getInstance().getGlobalContainerStack().getMetaDataEntry("properties", {}).get("density", 0) - material = Application.getInstance().getGlobalContainerStack().findContainer({"type": "material"}) + density = extruder_stack.getMetaDataEntry("properties", {}).get("density", 0) + material = extruder_stack.findContainer({"type": "material"}) + radius = extruder_stack.getProperty("material_diameter", "value") / 2 weight = float(amount) * float(density) / 1000 cost = 0 @@ -241,6 +238,7 @@ class PrintInformation(QObject): else: cost = 0 + # Material amount is sent as an amount of mm^3, so calculate length from that if radius != 0: length = round((amount / (math.pi * radius ** 2)) / 1000, 2) else: @@ -259,25 +257,11 @@ class PrintInformation(QObject): if preference != "cura/material_settings": return - for build_plate_number in range(Application.getInstance().getBuildPlateModel().maxBuildPlate + 1): + for build_plate_number in range(self._multi_build_plate_model.maxBuildPlate + 1): self._calculateInformation(build_plate_number) - def _onActiveMaterialChanged(self): - if self._active_material_container: - try: - self._active_material_container.metaDataChanged.disconnect(self._onMaterialMetaDataChanged) - except TypeError: #pyQtSignal gives a TypeError when disconnecting from something that is already disconnected. - pass - - active_material_id = Application.getInstance().getMachineManager().activeMaterialId - active_material_containers = ContainerRegistry.getInstance().findInstanceContainers(id = active_material_id) - - if active_material_containers: - self._active_material_container = active_material_containers[0] - self._active_material_container.metaDataChanged.connect(self._onMaterialMetaDataChanged) - def _onActiveBuildPlateChanged(self): - new_active_build_plate = Application.getInstance().getBuildPlateModel().activeBuildPlate + new_active_build_plate = self._multi_build_plate_model.activeBuildPlate if new_active_build_plate != self._active_build_plate: self._active_build_plate = new_active_build_plate @@ -289,8 +273,8 @@ class PrintInformation(QObject): self.materialNamesChanged.emit() self.currentPrintTimeChanged.emit() - def _onMaterialMetaDataChanged(self, *args, **kwargs): - for build_plate_number in range(Application.getInstance().getBuildPlateModel().maxBuildPlate + 1): + def _onActiveMaterialsChanged(self, *args, **kwargs): + for build_plate_number in range(self._multi_build_plate_model.maxBuildPlate + 1): self._calculateInformation(build_plate_number) @pyqtSlot(str) @@ -360,10 +344,10 @@ class PrintInformation(QObject): if not global_container_stack: self._abbr_machine = "" return + active_machine_type_name = global_container_stack.definition.getName() - global_stack_name = global_container_stack.getName() abbr_machine = "" - for word in re.findall(r"[\w']+", global_stack_name): + for word in re.findall(r"[\w']+", active_machine_type_name): if word.lower() == "ultimaker": abbr_machine += "UM" elif word.isdigit(): @@ -395,12 +379,27 @@ class PrintInformation(QObject): return result # Simulate message with zero time duration - def setToZeroPrintInformation(self, build_plate_number): - temp_message = {} - if build_plate_number not in self._print_time_message_values: - self._print_time_message_values[build_plate_number] = {} - for key in self._print_time_message_values[build_plate_number].keys(): - temp_message[key] = 0 + def setToZeroPrintInformation(self, build_plate = None): + if build_plate is None: + build_plate = self._active_build_plate + # Construct the 0-time message + temp_message = {} + if build_plate not in self._print_time_message_values: + self._print_time_message_values[build_plate] = {} + for key in self._print_time_message_values[build_plate].keys(): + temp_message[key] = 0 temp_material_amounts = [0] - self._onPrintDurationMessage(build_plate_number, temp_message, temp_material_amounts) + + self._onPrintDurationMessage(build_plate, temp_message, temp_material_amounts) + + ## Listen to scene changes to check if we need to reset the print information + def _onSceneChanged(self, scene_node): + + # Ignore any changes that are not related to sliceable objects + if not isinstance(scene_node, SceneNode)\ + or not scene_node.callDecoration("isSliceable")\ + or not scene_node.callDecoration("getBuildPlateNumber") == self._active_build_plate: + return + + self.setToZeroPrintInformation(self._active_build_plate) diff --git a/cura/PrinterOutput/ConfigurationModel.py b/cura/PrinterOutput/ConfigurationModel.py new file mode 100644 index 0000000000..c03d968b9e --- /dev/null +++ b/cura/PrinterOutput/ConfigurationModel.py @@ -0,0 +1,81 @@ +# Copyright (c) 2018 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +from PyQt5.QtCore import pyqtProperty, QObject, pyqtSignal +from typing import List + +MYPY = False +if MYPY: + from cura.PrinterOutput.ExtruderConfigurationModel import ExtruderConfigurationModel + + +class ConfigurationModel(QObject): + + configurationChanged = pyqtSignal() + + def __init__(self): + super().__init__() + self._printer_type = None + self._extruder_configurations = [] # type: List[ExtruderConfigurationModel] + self._buildplate_configuration = None + + def setPrinterType(self, printer_type): + self._printer_type = printer_type + + @pyqtProperty(str, fset = setPrinterType, notify = configurationChanged) + def printerType(self): + return self._printer_type + + def setExtruderConfigurations(self, extruder_configurations): + self._extruder_configurations = extruder_configurations + + @pyqtProperty("QVariantList", fset = setExtruderConfigurations, notify = configurationChanged) + def extruderConfigurations(self): + return self._extruder_configurations + + def setBuildplateConfiguration(self, buildplate_configuration): + self._buildplate_configuration = buildplate_configuration + + @pyqtProperty(str, fset = setBuildplateConfiguration, notify = configurationChanged) + def buildplateConfiguration(self): + return self._buildplate_configuration + + ## This method is intended to indicate whether the configuration is valid or not. + # The method checks if the mandatory fields are or not set + def isValid(self): + if not self._extruder_configurations: + return False + for configuration in self._extruder_configurations: + if configuration is None: + return False + return self._printer_type is not None + + def __str__(self): + message_chunks = [] + message_chunks.append("Printer type: " + self._printer_type) + message_chunks.append("Extruders: [") + for configuration in self._extruder_configurations: + message_chunks.append(" " + str(configuration)) + message_chunks.append("]") + if self._buildplate_configuration is not None: + message_chunks.append("Buildplate: " + self._buildplate_configuration) + + return "\n".join(message_chunks) + + def __eq__(self, other): + return hash(self) == hash(other) + + ## The hash function is used to compare and create unique sets. The configuration is unique if the configuration + # of the extruders is unique (the order of the extruders matters), and the type and buildplate is the same. + def __hash__(self): + extruder_hash = hash(0) + first_extruder = None + for configuration in self._extruder_configurations: + extruder_hash ^= hash(configuration) + if configuration.position == 0: + first_extruder = configuration + # To ensure the correct order of the extruders, we add an "and" operation using the first extruder hash value + if first_extruder: + extruder_hash &= hash(first_extruder) + + return hash(self._printer_type) ^ extruder_hash ^ hash(self._buildplate_configuration) \ No newline at end of file diff --git a/cura/PrinterOutput/ExtruderConfigurationModel.py b/cura/PrinterOutput/ExtruderConfigurationModel.py new file mode 100644 index 0000000000..bc7f1a7c07 --- /dev/null +++ b/cura/PrinterOutput/ExtruderConfigurationModel.py @@ -0,0 +1,59 @@ +# Copyright (c) 2018 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +from PyQt5.QtCore import pyqtProperty, QObject, pyqtSignal + + +class ExtruderConfigurationModel(QObject): + + extruderConfigurationChanged = pyqtSignal() + + def __init__(self): + super().__init__() + self._position = -1 + self._material = None + self._hotend_id = None + + def setPosition(self, position): + self._position = position + + @pyqtProperty(int, fset = setPosition, notify = extruderConfigurationChanged) + def position(self): + return self._position + + def setMaterial(self, material): + self._material = material + + @pyqtProperty(QObject, fset = setMaterial, notify = extruderConfigurationChanged) + def material(self): + return self._material + + def setHotendID(self, hotend_id): + self._hotend_id = hotend_id + + @pyqtProperty(str, fset = setHotendID, notify = extruderConfigurationChanged) + def hotendID(self): + return self._hotend_id + + ## This method is intended to indicate whether the configuration is valid or not. + # The method checks if the mandatory fields are or not set + # At this moment is always valid since we allow to have empty material and variants. + def isValid(self): + return True + + def __str__(self): + message_chunks = [] + message_chunks.append("Position: " + str(self._position)) + message_chunks.append("-") + message_chunks.append("Material: " + self.material.type if self.material else "empty") + message_chunks.append("-") + message_chunks.append("HotendID: " + self.hotendID if self.hotendID else "empty") + return " ".join(message_chunks) + + def __eq__(self, other): + return hash(self) == hash(other) + + # Calculating a hash function using the position of the extruder, the material GUID and the hotend id to check if is + # unique within a set + def __hash__(self): + return hash(self._position) ^ (hash(self._material.guid) if self._material is not None else hash(0)) ^ hash(self._hotend_id) \ No newline at end of file diff --git a/cura/PrinterOutput/ExtruderOuputModel.py b/cura/PrinterOutput/ExtruderOutputModel.py similarity index 70% rename from cura/PrinterOutput/ExtruderOuputModel.py rename to cura/PrinterOutput/ExtruderOutputModel.py index b0be6cbbe4..e4c7f1608e 100644 --- a/cura/PrinterOutput/ExtruderOuputModel.py +++ b/cura/PrinterOutput/ExtruderOutputModel.py @@ -1,8 +1,8 @@ -# Copyright (c) 2017 Ultimaker B.V. +# Copyright (c) 2018 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. -from PyQt5.QtCore import pyqtSignal, pyqtProperty, QObject, QVariant, pyqtSlot -from UM.Logger import Logger +from PyQt5.QtCore import pyqtSignal, pyqtProperty, QObject, pyqtSlot +from cura.PrinterOutput.ExtruderConfigurationModel import ExtruderConfigurationModel from typing import Optional @@ -17,14 +17,18 @@ class ExtruderOutputModel(QObject): targetHotendTemperatureChanged = pyqtSignal() hotendTemperatureChanged = pyqtSignal() activeMaterialChanged = pyqtSignal() + extruderConfigurationChanged = pyqtSignal() - def __init__(self, printer: "PrinterOutputModel", parent=None): + def __init__(self, printer: "PrinterOutputModel", position, parent=None): super().__init__(parent) self._printer = printer + self._position = position self._target_hotend_temperature = 0 self._hotend_temperature = 0 self._hotend_id = "" self._active_material = None # type: Optional[MaterialOutputModel] + self._extruder_configuration = ExtruderConfigurationModel() + self._extruder_configuration.position = self._position @pyqtProperty(QObject, notify = activeMaterialChanged) def activeMaterial(self) -> "MaterialOutputModel": @@ -33,7 +37,9 @@ class ExtruderOutputModel(QObject): def updateActiveMaterial(self, material: Optional["MaterialOutputModel"]): if self._active_material != material: self._active_material = material + self._extruder_configuration.material = self._active_material self.activeMaterialChanged.emit() + self.extruderConfigurationChanged.emit() ## Update the hotend temperature. This only changes it locally. def updateHotendTemperature(self, temperature: float): @@ -56,7 +62,7 @@ class ExtruderOutputModel(QObject): def targetHotendTemperature(self) -> float: return self._target_hotend_temperature - @pyqtProperty(float, notify=hotendTemperatureChanged) + @pyqtProperty(float, notify = hotendTemperatureChanged) def hotendTemperature(self) -> float: return self._hotend_temperature @@ -67,4 +73,12 @@ class ExtruderOutputModel(QObject): def updateHotendID(self, id: str): if self._hotend_id != id: self._hotend_id = id + self._extruder_configuration.hotendID = self._hotend_id self.hotendIDChanged.emit() + self.extruderConfigurationChanged.emit() + + @pyqtProperty(QObject, notify = extruderConfigurationChanged) + def extruderConfiguration(self): + if self._extruder_configuration.isValid(): + return self._extruder_configuration + return None diff --git a/cura/PrinterOutput/NetworkedPrinterOutputDevice.py b/cura/PrinterOutput/NetworkedPrinterOutputDevice.py index 7cf855ee85..eefbd9ae12 100644 --- a/cura/PrinterOutput/NetworkedPrinterOutputDevice.py +++ b/cura/PrinterOutput/NetworkedPrinterOutputDevice.py @@ -55,6 +55,17 @@ class NetworkedPrinterOutputDevice(PrinterOutputDevice): self._connection_state_before_timeout = None # type: Optional[ConnectionState] + printer_type = self._properties.get(b"machine", b"").decode("utf-8") + printer_type_identifiers = { + "9066": "ultimaker3", + "9511": "ultimaker3_extended" + } + self._printer_type = "Unknown" + for key, value in printer_type_identifiers.items(): + if printer_type.startswith(key): + self._printer_type = value + break + def requestWrite(self, nodes, file_name=None, filter_by_machine=False, file_handler=None, **kwargs) -> None: raise NotImplementedError("requestWrite needs to be implemented") @@ -100,7 +111,7 @@ class NetworkedPrinterOutputDevice(PrinterOutputDevice): if batched_lines_count >= max_chars_per_line: file_data_bytes_list.append(self._compressDataAndNotifyQt("".join(batched_lines))) batched_lines = [] - batched_lines_count + batched_lines_count = 0 # Don't miss the last batch (If any) if len(batched_lines) != 0: @@ -219,6 +230,9 @@ class NetworkedPrinterOutputDevice(PrinterOutputDevice): reply.uploadProgress.connect(onProgress) self._registerOnFinishedCallback(reply, onFinished) + + return reply + def postForm(self, target: str, header_data: str, body_data: bytes, onFinished: Optional[Callable[[Any, QNetworkReply], None]], onProgress: Callable = None) -> None: post_part = QHttpPart() post_part.setHeader(QNetworkRequest.ContentDispositionHeader, header_data) @@ -298,6 +312,10 @@ class NetworkedPrinterOutputDevice(PrinterOutputDevice): def firmwareVersion(self) -> str: return self._properties.get(b"firmware_version", b"").decode("utf-8") + @pyqtProperty(str, constant=True) + def printerType(self) -> str: + return self._printer_type + ## IPadress of this printer @pyqtProperty(str, constant=True) def ipAddress(self) -> str: diff --git a/cura/PrinterOutput/PrinterOutputController.py b/cura/PrinterOutput/PrinterOutputController.py index 86ca10e2d3..1d658e79be 100644 --- a/cura/PrinterOutput/PrinterOutputController.py +++ b/cura/PrinterOutput/PrinterOutputController.py @@ -6,7 +6,7 @@ from UM.Logger import Logger MYPY = False if MYPY: from cura.PrinterOutput.PrintJobOutputModel import PrintJobOutputModel - from cura.PrinterOutput.ExtruderOuputModel import ExtruderOuputModel + from cura.PrinterOutput.ExtruderOutputModel import ExtruderOutputModel from cura.PrinterOutput.PrinterOutputModel import PrinterOutputModel @@ -18,7 +18,7 @@ class PrinterOutputController: self.can_control_manually = True self._output_device = output_device - def setTargetHotendTemperature(self, printer: "PrinterOutputModel", extruder: "ExtruderOuputModel", temperature: int): + def setTargetHotendTemperature(self, printer: "PrinterOutputModel", extruder: "ExtruderOutputModel", temperature: int): Logger.log("w", "Set target hotend temperature not implemented in controller") def setTargetBedTemperature(self, printer: "PrinterOutputModel", temperature: int): diff --git a/cura/PrinterOutput/PrinterOutputModel.py b/cura/PrinterOutput/PrinterOutputModel.py index 8234989519..712f9b5b1e 100644 --- a/cura/PrinterOutput/PrinterOutputModel.py +++ b/cura/PrinterOutput/PrinterOutputModel.py @@ -1,11 +1,11 @@ -# Copyright (c) 2017 Ultimaker B.V. +# Copyright (c) 2018 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. from PyQt5.QtCore import pyqtSignal, pyqtProperty, QObject, QVariant, pyqtSlot -from UM.Logger import Logger -from typing import Optional, List +from typing import Optional from UM.Math.Vector import Vector -from cura.PrinterOutput.ExtruderOuputModel import ExtruderOutputModel +from cura.PrinterOutput.ConfigurationModel import ConfigurationModel +from cura.PrinterOutput.ExtruderOutputModel import ExtruderOutputModel MYPY = False if MYPY: @@ -22,8 +22,10 @@ class PrinterOutputModel(QObject): nameChanged = pyqtSignal() headPositionChanged = pyqtSignal() keyChanged = pyqtSignal() - typeChanged = pyqtSignal() + printerTypeChanged = pyqtSignal() + buildplateChanged = pyqtSignal() cameraChanged = pyqtSignal() + configurationChanged = pyqtSignal() def __init__(self, output_controller: "PrinterOutputController", number_of_extruders: int = 1, parent=None, firmware_version = ""): super().__init__(parent) @@ -32,13 +34,18 @@ class PrinterOutputModel(QObject): self._name = "" self._key = "" # Unique identifier self._controller = output_controller - self._extruders = [ExtruderOutputModel(printer=self) for i in range(number_of_extruders)] + self._extruders = [ExtruderOutputModel(printer = self, position = i) for i in range(number_of_extruders)] + self._printer_configuration = ConfigurationModel() # Indicates the current configuration setup in this printer self._head_position = Vector(0, 0, 0) self._active_print_job = None # type: Optional[PrintJobOutputModel] self._firmware_version = firmware_version self._printer_state = "unknown" self._is_preheating = False - self._type = "" + self._printer_type = "" + self._buildplate_name = None + # Update the printer configuration every time any of the extruders changes its configuration + for extruder in self._extruders: + extruder.extruderConfigurationChanged.connect(self._updateExtruderConfiguration) self._camera = None @@ -64,14 +71,27 @@ class PrinterOutputModel(QObject): def camera(self): return self._camera - @pyqtProperty(str, notify = typeChanged) + @pyqtProperty(str, notify = printerTypeChanged) def type(self): - return self._type + return self._printer_type - def updateType(self, type): - if self._type != type: - self._type = type - self.typeChanged.emit() + def updateType(self, printer_type): + if self._printer_type != printer_type: + self._printer_type = printer_type + self._printer_configuration.printerType = self._printer_type + self.printerTypeChanged.emit() + self.configurationChanged.emit() + + @pyqtProperty(str, notify = buildplateChanged) + def buildplate(self): + return self._buildplate_name + + def updateBuildplateName(self, buildplate_name): + if self._buildplate_name != buildplate_name: + self._buildplate_name = buildplate_name + self._printer_configuration.buildplateConfiguration = self._buildplate_name + self.buildplateChanged.emit() + self.configurationChanged.emit() @pyqtProperty(str, notify=keyChanged) def key(self): @@ -103,32 +123,32 @@ class PrinterOutputModel(QObject): self._head_position = Vector(x, y, z) self.headPositionChanged.emit() - @pyqtProperty("long", "long", "long") - @pyqtProperty("long", "long", "long", "long") + @pyqtProperty(float, float, float) + @pyqtProperty(float, float, float, float) def setHeadPosition(self, x, y, z, speed = 3000): self.updateHeadPosition(x, y, z) self._controller.setHeadPosition(self, x, y, z, speed) - @pyqtProperty("long") - @pyqtProperty("long", "long") + @pyqtProperty(float) + @pyqtProperty(float, float) def setHeadX(self, x, speed = 3000): self.updateHeadPosition(x, self._head_position.y, self._head_position.z) self._controller.setHeadPosition(self, x, self._head_position.y, self._head_position.z, speed) - @pyqtProperty("long") - @pyqtProperty("long", "long") + @pyqtProperty(float) + @pyqtProperty(float, float) def setHeadY(self, y, speed = 3000): self.updateHeadPosition(self._head_position.x, y, self._head_position.z) self._controller.setHeadPosition(self, self._head_position.x, y, self._head_position.z, speed) - @pyqtProperty("long") - @pyqtProperty("long", "long") + @pyqtProperty(float) + @pyqtProperty(float, float) def setHeadZ(self, z, speed = 3000): self.updateHeadPosition(self._head_position.x, self._head_position.y, z) self._controller.setHeadPosition(self, self._head_position.x, self._head_position.y, z, speed) - @pyqtSlot("long", "long", "long") - @pyqtSlot("long", "long", "long", "long") + @pyqtSlot(float, float, float) + @pyqtSlot(float, float, float, float) def moveHead(self, x = 0, y = 0, z = 0, speed = 3000): self._controller.moveHead(self, x, y, z, speed) @@ -238,3 +258,14 @@ class PrinterOutputModel(QObject): if self._controller: return self._controller.can_control_manually return False + + # Returns the configuration (material, variant and buildplate) of the current printer + @pyqtProperty(QObject, notify = configurationChanged) + def printerConfiguration(self): + if self._printer_configuration.isValid(): + return self._printer_configuration + return None + + def _updateExtruderConfiguration(self): + self._printer_configuration.extruderConfigurations = [extruder.extruderConfiguration for extruder in self._extruders] + self.configurationChanged.emit() diff --git a/cura/PrinterOutputDevice.py b/cura/PrinterOutputDevice.py index 9e603b83ae..4d6ddb8dfa 100644 --- a/cura/PrinterOutputDevice.py +++ b/cura/PrinterOutputDevice.py @@ -1,12 +1,11 @@ -# Copyright (c) 2017 Ultimaker B.V. +# Copyright (c) 2018 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. from UM.i18n import i18nCatalog from UM.OutputDevice.OutputDevice import OutputDevice -from PyQt5.QtCore import pyqtProperty, QObject, QTimer, pyqtSignal +from PyQt5.QtCore import pyqtProperty, QObject, QTimer, pyqtSignal, QVariant from PyQt5.QtWidgets import QMessageBox - from UM.Logger import Logger from UM.Signal import signalemitter from UM.Application import Application @@ -17,6 +16,7 @@ from typing import List, Optional MYPY = False if MYPY: from cura.PrinterOutput.PrinterOutputModel import PrinterOutputModel + from cura.PrinterOutput.ConfigurationModel import ConfigurationModel i18n_catalog = i18nCatalog("cura") @@ -44,10 +44,14 @@ class PrinterOutputDevice(QObject, OutputDevice): # Signal to indicate that the info text about the connection has changed. connectionTextChanged = pyqtSignal() + # Signal to indicate that the configuration of one of the printers has changed. + uniqueConfigurationsChanged = pyqtSignal() + def __init__(self, device_id, parent = None): super().__init__(device_id = device_id, parent = parent) self._printers = [] # type: List[PrinterOutputModel] + self._unique_configurations = [] # type: List[ConfigurationModel] self._monitor_view_qml_path = "" self._monitor_component = None @@ -69,6 +73,8 @@ class PrinterOutputDevice(QObject, OutputDevice): self._address = "" self._connection_text = "" + self.printersChanged.connect(self._onPrintersChanged) + Application.getInstance().getOutputDeviceManager().outputDevicesChanged.connect(self._updateUniqueConfigurations) @pyqtProperty(str, notify = connectionTextChanged) def address(self): @@ -175,6 +181,23 @@ class PrinterOutputDevice(QObject, OutputDevice): self.acceptsCommandsChanged.emit() + # Returns the unique configurations of the printers within this output device + @pyqtProperty("QVariantList", notify = uniqueConfigurationsChanged) + def uniqueConfigurations(self): + return self._unique_configurations + + def _updateUniqueConfigurations(self): + self._unique_configurations = list(set([printer.printerConfiguration for printer in self._printers if printer.printerConfiguration is not None])) + self._unique_configurations.sort(key = lambda k: k.printerType) + self.uniqueConfigurationsChanged.emit() + + def _onPrintersChanged(self): + for printer in self._printers: + printer.configurationChanged.connect(self._updateUniqueConfigurations) + + # At this point there may be non-updated configurations + self._updateUniqueConfigurations() + ## The current processing state of the backend. class ConnectionState(IntEnum): diff --git a/cura/ProfileReader.py b/cura/ProfileReader.py index d4600ed99f..460fce823e 100644 --- a/cura/ProfileReader.py +++ b/cura/ProfileReader.py @@ -3,6 +3,13 @@ from UM.PluginObject import PluginObject + +# Exception when there is no profile to import from a given files. +# Note that this should not be treated as an exception but as an information instead. +class NoProfileException(Exception): + pass + + ## A type of plug-ins that reads profiles from a file. # # The profile is then stored as instance container of the type user profile. @@ -14,4 +21,4 @@ class ProfileReader(PluginObject): # # \return \type{Profile|Profile[]} The profile that was obtained from the file or a list of Profiles. def read(self, file_name): - raise NotImplementedError("Profile reader plug-in was not correctly implemented. The read function was not implemented.") \ No newline at end of file + raise NotImplementedError("Profile reader plug-in was not correctly implemented. The read function was not implemented.") diff --git a/cura/QualityManager.py b/cura/QualityManager.py deleted file mode 100644 index 76a0c86a5f..0000000000 --- a/cura/QualityManager.py +++ /dev/null @@ -1,332 +0,0 @@ -# Copyright (c) 2017 Ultimaker B.V. -# Cura is released under the terms of the LGPLv3 or higher. - -# This collects a lot of quality and quality changes related code which was split between ContainerManager -# and the MachineManager and really needs to usable from both. -from typing import Any, Dict, List, Optional, TYPE_CHECKING - -from UM.Application import Application -from UM.Settings.ContainerRegistry import ContainerRegistry -from UM.Settings.InstanceContainer import InstanceContainer -from cura.Settings.ExtruderManager import ExtruderManager - -if TYPE_CHECKING: - from cura.Settings.GlobalStack import GlobalStack - from cura.Settings.ExtruderStack import ExtruderStack - from UM.Settings.DefinitionContainer import DefinitionContainerInterface - -class QualityManager: - - ## Get the singleton instance for this class. - @classmethod - def getInstance(cls) -> "QualityManager": - # Note: Explicit use of class name to prevent issues with inheritance. - if not QualityManager.__instance: - QualityManager.__instance = cls() - return QualityManager.__instance - - __instance = None # type: "QualityManager" - - ## Find a quality by name for a specific machine definition and materials. - # - # \param quality_name - # \param machine_definition (Optional) \type{DefinitionContainerInterface} If nothing is - # specified then the currently selected machine definition is used. - # \param material_containers_metadata If nothing is specified then the - # current set of selected materials is used. - # \return the matching quality container \type{InstanceContainer} - def findQualityByName(self, quality_name: str, machine_definition: Optional["DefinitionContainerInterface"] = None, material_containers_metadata: Optional[List[Dict[str, Any]]] = None) -> Optional[InstanceContainer]: - criteria = {"type": "quality", "name": quality_name} - result = self._getFilteredContainersForStack(machine_definition, material_containers_metadata, **criteria) - - # Fall back to using generic materials and qualities if nothing could be found. - if not result and material_containers_metadata and len(material_containers_metadata) == 1: - basic_materials = self._getBasicMaterialMetadatas(material_containers_metadata[0]) - result = self._getFilteredContainersForStack(machine_definition, basic_materials, **criteria) - - return result[0] if result else None - - ## Find a quality changes container by name. - # - # \param quality_changes_name \type{str} the name of the quality changes container. - # \param machine_definition (Optional) \type{DefinitionContainer} If nothing is - # specified then the currently selected machine definition is used.. - # \return the matching quality changes containers \type{List[InstanceContainer]} - def findQualityChangesByName(self, quality_changes_name: str, machine_definition: Optional["DefinitionContainerInterface"] = None): - if not machine_definition: - global_stack = Application.getGlobalContainerStack() - if not global_stack: - return [] #No stack, so no current definition could be found, so there are no quality changes either. - machine_definition = global_stack.definition - - result = self.findAllQualityChangesForMachine(machine_definition) - result = [quality_change for quality_change in result if quality_change.getName() == quality_changes_name] - return result - - ## Fetch the list of available quality types for this combination of machine definition and materials. - # - # \param machine_definition \type{DefinitionContainer} - # \param material_containers \type{List[InstanceContainer]} - # \return \type{List[str]} - def findAllQualityTypesForMachineAndMaterials(self, machine_definition: "DefinitionContainerInterface", material_containers: List[InstanceContainer]) -> List[str]: - # Determine the common set of quality types which can be - # applied to all of the materials for this machine. - quality_type_dict = self.__fetchQualityTypeDictForMaterial(machine_definition, material_containers[0]) - common_quality_types = set(quality_type_dict.keys()) - for material_container in material_containers[1:]: - next_quality_type_dict = self.__fetchQualityTypeDictForMaterial(machine_definition, material_container) - common_quality_types.intersection_update(set(next_quality_type_dict.keys())) - - return list(common_quality_types) - - def findAllQualitiesForMachineAndMaterials(self, machine_definition: "DefinitionContainerInterface", material_containers: List[InstanceContainer]) -> List[InstanceContainer]: - # Determine the common set of quality types which can be - # applied to all of the materials for this machine. - quality_type_dict = self.__fetchQualityTypeDictForMaterial(machine_definition, material_containers[0]) - qualities = set(quality_type_dict.values()) - for material_container in material_containers[1:]: - next_quality_type_dict = self.__fetchQualityTypeDictForMaterial(machine_definition, material_container) - qualities.intersection_update(set(next_quality_type_dict.values())) - - return list(qualities) - - ## Fetches a dict of quality types names to quality profiles for a combination of machine and material. - # - # \param machine_definition \type{DefinitionContainer} the machine definition. - # \param material \type{InstanceContainer} the material. - # \return \type{Dict[str, InstanceContainer]} the dict of suitable quality type names mapping to qualities. - def __fetchQualityTypeDictForMaterial(self, machine_definition: "DefinitionContainerInterface", material: InstanceContainer) -> Dict[str, InstanceContainer]: - qualities = self.findAllQualitiesForMachineMaterial(machine_definition, material) - quality_type_dict = {} - for quality in qualities: - quality_type_dict[quality.getMetaDataEntry("quality_type")] = quality - return quality_type_dict - - ## Find a quality container by quality type. - # - # \param quality_type \type{str} the name of the quality type to search for. - # \param machine_definition (Optional) \type{InstanceContainer} If nothing is - # specified then the currently selected machine definition is used. - # \param material_containers_metadata If nothing is specified then the - # current set of selected materials is used. - # \return the matching quality container \type{InstanceContainer} - def findQualityByQualityType(self, quality_type: str, machine_definition: Optional["DefinitionContainerInterface"] = None, material_containers_metadata: Optional[List[Dict[str, Any]]] = None, **kwargs) -> InstanceContainer: - criteria = kwargs - criteria["type"] = "quality" - if quality_type: - criteria["quality_type"] = quality_type - result = self._getFilteredContainersForStack(machine_definition, material_containers_metadata, **criteria) - # Fall back to using generic materials and qualities if nothing could be found. - if not result and material_containers_metadata and len(material_containers_metadata) == 1: - basic_materials = self._getBasicMaterialMetadatas(material_containers_metadata[0]) - if basic_materials: - result = self._getFilteredContainersForStack(machine_definition, basic_materials, **criteria) - return result[0] if result else None - - ## Find all suitable qualities for a combination of machine and material. - # - # \param machine_definition \type{DefinitionContainer} the machine definition. - # \param material_container \type{InstanceContainer} the material. - # \return \type{List[InstanceContainer]} the list of suitable qualities. - def findAllQualitiesForMachineMaterial(self, machine_definition: "DefinitionContainerInterface", material_container: InstanceContainer) -> List[InstanceContainer]: - criteria = {"type": "quality"} - result = self._getFilteredContainersForStack(machine_definition, [material_container.getMetaData()], **criteria) - if not result: - basic_materials = self._getBasicMaterialMetadatas(material_container.getMetaData()) - if basic_materials: - result = self._getFilteredContainersForStack(machine_definition, basic_materials, **criteria) - - return result - - ## Find all quality changes for a machine. - # - # \param machine_definition \type{DefinitionContainer} the machine definition. - # \return \type{List[InstanceContainer]} the list of quality changes - def findAllQualityChangesForMachine(self, machine_definition: "DefinitionContainerInterface") -> List[InstanceContainer]: - if machine_definition.getMetaDataEntry("has_machine_quality"): - definition_id = machine_definition.getId() - else: - definition_id = "fdmprinter" - - filter_dict = { "type": "quality_changes", "definition": definition_id } - quality_changes_list = ContainerRegistry.getInstance().findInstanceContainers(**filter_dict) - return quality_changes_list - - def findAllExtruderDefinitionsForMachine(self, machine_definition: "DefinitionContainerInterface") -> List["DefinitionContainerInterface"]: - filter_dict = { "machine": machine_definition.getId() } - return ContainerRegistry.getInstance().findDefinitionContainers(**filter_dict) - - ## Find all quality changes for a given extruder. - # - # \param extruder_definition The extruder to find the quality changes for. - # \return The list of quality changes for the given extruder. - def findAllQualityChangesForExtruder(self, extruder_definition: "DefinitionContainerInterface") -> List[InstanceContainer]: - filter_dict = {"type": "quality_changes", "extruder": extruder_definition.getId()} - return ContainerRegistry.getInstance().findInstanceContainers(**filter_dict) - - ## Find all usable qualities for a machine and extruders. - # - # Finds all of the qualities for this combination of machine and extruders. - # Only one quality per quality type is returned. i.e. if there are 2 qualities with quality_type=normal - # then only one of then is returned (at random). - # - # \param global_container_stack \type{GlobalStack} the global machine definition - # \param extruder_stacks \type{List[ExtruderStack]} the list of extruder stacks - # \return \type{List[InstanceContainer]} the list of the matching qualities. The quality profiles - # return come from the first extruder in the given list of extruders. - def findAllUsableQualitiesForMachineAndExtruders(self, global_container_stack: "GlobalStack", extruder_stacks: List["ExtruderStack"]) -> List[InstanceContainer]: - global_machine_definition = global_container_stack.getBottom() - - machine_manager = Application.getInstance().getMachineManager() - active_stack_id = machine_manager.activeStackId - - materials = [] - - for stack in extruder_stacks: - if stack.getId() == active_stack_id and machine_manager.newMaterial: - materials.append(machine_manager.newMaterial) - else: - materials.append(stack.material) - - quality_types = self.findAllQualityTypesForMachineAndMaterials(global_machine_definition, materials) - - # Map the list of quality_types to InstanceContainers - qualities = self.findAllQualitiesForMachineMaterial(global_machine_definition, materials[0]) - quality_type_dict = {} - for quality in qualities: - quality_type_dict[quality.getMetaDataEntry("quality_type")] = quality - - return [quality_type_dict[quality_type] for quality_type in quality_types] - - ## Fetch more basic versions of a material. - # - # This tries to find a generic or basic version of the given material. - # \param material_container \type{Dict[str, Any]} The metadata of a - # material to find the basic versions of. - # \return \type{List[Dict[str, Any]]} A list of the metadata of basic - # materials, or an empty list if none could be found. - def _getBasicMaterialMetadatas(self, material_container: Dict[str, Any]) -> List[Dict[str, Any]]: - if "definition" not in material_container: - definition_id = "fdmprinter" - else: - material_container_definition = ContainerRegistry.getInstance().findDefinitionContainersMetadata(id = material_container["definition"]) - if not material_container_definition: - definition_id = "fdmprinter" - else: - material_container_definition = material_container_definition[0] - if "has_machine_quality" not in material_container_definition: - definition_id = "fdmprinter" - else: - definition_id = material_container_definition.get("quality_definition", material_container_definition["id"]) - - base_material = material_container.get("material") - if base_material: - # There is a basic material specified - criteria = { - "type": "material", - "name": base_material, - "definition": definition_id, - "variant": material_container.get("variant") - } - containers = ContainerRegistry.getInstance().findInstanceContainersMetadata(**criteria) - return containers - - return [] - - def _getFilteredContainers(self, **kwargs): - return self._getFilteredContainersForStack(None, None, **kwargs) - - def _getFilteredContainersForStack(self, machine_definition: "DefinitionContainerInterface" = None, material_metadata: Optional[List[Dict[str, Any]]] = None, **kwargs): - # Fill in any default values. - if machine_definition is None: - machine_definition = Application.getInstance().getGlobalContainerStack().getBottom() - quality_definition_id = machine_definition.getMetaDataEntry("quality_definition") - if quality_definition_id is not None: - machine_definition = ContainerRegistry.getInstance().findDefinitionContainers(id = quality_definition_id)[0] - - if not material_metadata: - active_stacks = ExtruderManager.getInstance().getActiveGlobalAndExtruderStacks() - if active_stacks: - material_metadata = [stack.material.getMetaData() for stack in active_stacks] - - criteria = kwargs - filter_by_material = False - - machine_definition = self.getParentMachineDefinition(machine_definition) - criteria["definition"] = machine_definition.getId() - found_containers_with_machine_definition = ContainerRegistry.getInstance().findInstanceContainersMetadata(**criteria) - whole_machine_definition = self.getWholeMachineDefinition(machine_definition) - if whole_machine_definition.getMetaDataEntry("has_machine_quality"): - definition_id = machine_definition.getMetaDataEntry("quality_definition", whole_machine_definition.getId()) - criteria["definition"] = definition_id - - filter_by_material = whole_machine_definition.getMetaDataEntry("has_materials") - # only fall back to "fdmprinter" when there is no container for this machine - elif not found_containers_with_machine_definition: - criteria["definition"] = "fdmprinter" - - # Stick the material IDs in a set - material_ids = set() - - for material_instance in material_metadata: - if material_instance is not None: - # Add the parent material too. - for basic_material in self._getBasicMaterialMetadatas(material_instance): - material_ids.add(basic_material["id"]) - material_ids.add(material_instance["id"]) - containers = ContainerRegistry.getInstance().findInstanceContainers(**criteria) - - result = [] - for container in containers: - # If the machine specifies we should filter by material, exclude containers that do not match any active material. - if filter_by_material and container.getMetaDataEntry("material") not in material_ids and "global_quality" not in kwargs: - continue - result.append(container) - - return result - - ## Get the parent machine definition of a machine definition. - # - # \param machine_definition \type{DefinitionContainer} This may be a normal machine definition or - # an extruder definition. - # \return \type{DefinitionContainer} the parent machine definition. If the given machine - # definition doesn't have a parent then it is simply returned. - def getParentMachineDefinition(self, machine_definition: "DefinitionContainerInterface") -> "DefinitionContainerInterface": - container_registry = ContainerRegistry.getInstance() - - machine_entry = machine_definition.getMetaDataEntry("machine") - if machine_entry is None: - # We have a normal (whole) machine defintion - quality_definition = machine_definition.getMetaDataEntry("quality_definition") - if quality_definition is not None: - parent_machine_definition = container_registry.findDefinitionContainers(id = quality_definition)[0] - return self.getParentMachineDefinition(parent_machine_definition) - else: - return machine_definition - else: - # This looks like an extruder. Find the rest of the machine. - whole_machine = container_registry.findDefinitionContainers(id = machine_entry)[0] - parent_machine = self.getParentMachineDefinition(whole_machine) - if whole_machine is parent_machine: - # This extruder already belongs to a 'parent' machine def. - return machine_definition - else: - # Look up the corresponding extruder definition in the parent machine definition. - extruder_position = machine_definition.getMetaDataEntry("position") - parent_extruder_id = parent_machine.getMetaDataEntry("machine_extruder_trains")[extruder_position] - return container_registry.findDefinitionContainers(id = parent_extruder_id)[0] - - ## Get the whole/global machine definition from an extruder definition. - # - # \param machine_definition \type{DefinitionContainer} This may be a normal machine definition or - # an extruder definition. - # \return \type{DefinitionContainerInterface} - def getWholeMachineDefinition(self, machine_definition: "DefinitionContainerInterface") -> "DefinitionContainerInterface": - machine_entry = machine_definition.getMetaDataEntry("machine") - if machine_entry is None: - # This already is a 'global' machine definition. - return machine_definition - else: - container_registry = ContainerRegistry.getInstance() - whole_machine = container_registry.findDefinitionContainers(id = machine_entry)[0] - return whole_machine diff --git a/cura/Scene/ConvexHullDecorator.py b/cura/Scene/ConvexHullDecorator.py index 3a563c2764..66bc8a7fc3 100644 --- a/cura/Scene/ConvexHullDecorator.py +++ b/cura/Scene/ConvexHullDecorator.py @@ -1,6 +1,8 @@ # Copyright (c) 2016 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. +from PyQt5.QtCore import QTimer + from UM.Application import Application from UM.Math.Polygon import Polygon from UM.Scene.SceneNodeDecorator import SceneNodeDecorator @@ -22,6 +24,10 @@ class ConvexHullDecorator(SceneNodeDecorator): self._global_stack = None + # Make sure the timer is created on the main thread + self._recompute_convex_hull_timer = None + Application.getInstance().callLater(self.createRecomputeConvexHullTimer) + self._raft_thickness = 0.0 # For raft thickness, DRY self._build_volume = Application.getInstance().getBuildVolume() @@ -33,6 +39,12 @@ class ConvexHullDecorator(SceneNodeDecorator): self._onGlobalStackChanged() + def createRecomputeConvexHullTimer(self): + self._recompute_convex_hull_timer = QTimer() + self._recompute_convex_hull_timer.setInterval(200) + self._recompute_convex_hull_timer.setSingleShot(True) + self._recompute_convex_hull_timer.timeout.connect(self.recomputeConvexHull) + def setNode(self, node): previous_node = self._node # Disconnect from previous node signals @@ -99,6 +111,12 @@ class ConvexHullDecorator(SceneNodeDecorator): return self._compute2DConvexHull() return None + def recomputeConvexHullDelayed(self): + if self._recompute_convex_hull_timer is not None: + self._recompute_convex_hull_timer.start() + else: + self.recomputeConvexHull() + def recomputeConvexHull(self): controller = Application.getInstance().getController() root = controller.getScene().getRoot() @@ -279,7 +297,8 @@ class ConvexHullDecorator(SceneNodeDecorator): def _onChanged(self, *args): self._raft_thickness = self._build_volume.getRaftThickness() - self.recomputeConvexHull() + if not args or args[0] == self._node: + self.recomputeConvexHullDelayed() def _onGlobalStackChanged(self): if self._global_stack: diff --git a/cura/Scene/ConvexHullNode.py b/cura/Scene/ConvexHullNode.py index 6c8c201498..1131958627 100644 --- a/cura/Scene/ConvexHullNode.py +++ b/cura/Scene/ConvexHullNode.py @@ -68,7 +68,7 @@ class ConvexHullNode(SceneNode): ConvexHullNode.shader.setUniformValue("u_opacity", 0.6) if self.getParent(): - if self.getMeshData() and isinstance(self._node, SceneNode) and self._node.callDecoration("getBuildPlateNumber") == Application.getInstance().getBuildPlateModel().activeBuildPlate: + if self.getMeshData() and isinstance(self._node, SceneNode) and self._node.callDecoration("getBuildPlateNumber") == Application.getInstance().getMultiBuildPlateModel().activeBuildPlate: renderer.queueNode(self, transparent = True, shader = ConvexHullNode.shader, backface_cull = True, sort = -8) if self._convex_hull_head_mesh: renderer.queueNode(self, shader = ConvexHullNode.shader, transparent = True, mesh = self._convex_hull_head_mesh, backface_cull = True, sort = -8) diff --git a/cura/Scene/CuraSceneController.py b/cura/Scene/CuraSceneController.py index a93a8769d0..749c5257a2 100644 --- a/cura/Scene/CuraSceneController.py +++ b/cura/Scene/CuraSceneController.py @@ -4,7 +4,7 @@ from PyQt5.QtCore import Qt, pyqtSlot, QObject from PyQt5.QtWidgets import QApplication from cura.ObjectsModel import ObjectsModel -from cura.BuildPlateModel import BuildPlateModel +from cura.Machines.Models.MultiBuildPlateModel import MultiBuildPlateModel from UM.Application import Application from UM.Scene.Iterator.DepthFirstIterator import DepthFirstIterator @@ -16,11 +16,11 @@ from UM.Signal import Signal class CuraSceneController(QObject): activeBuildPlateChanged = Signal() - def __init__(self, objects_model: ObjectsModel, build_plate_model: BuildPlateModel): + def __init__(self, objects_model: ObjectsModel, multi_build_plate_model: MultiBuildPlateModel): super().__init__() self._objects_model = objects_model - self._build_plate_model = build_plate_model + self._multi_build_plate_model = multi_build_plate_model self._active_build_plate = -1 self._last_selected_index = 0 @@ -41,9 +41,9 @@ class CuraSceneController(QObject): self._max_build_plate = max_build_plate changed = True if changed: - self._build_plate_model.setMaxBuildPlate(self._max_build_plate) + self._multi_build_plate_model.setMaxBuildPlate(self._max_build_plate) build_plates = [{"name": "Build Plate %d" % (i + 1), "buildPlateNumber": i} for i in range(self._max_build_plate + 1)] - self._build_plate_model.setItems(build_plates) + self._multi_build_plate_model.setItems(build_plates) if self._active_build_plate > self._max_build_plate: build_plate_number = 0 if self._last_selected_index >= 0: # go to the buildplate of the item you last selected @@ -59,6 +59,8 @@ class CuraSceneController(QObject): for node in DepthFirstIterator(Application.getInstance().getController().getScene().getRoot()): if node.callDecoration("isSliceable"): build_plate_number = node.callDecoration("getBuildPlateNumber") + if build_plate_number is None: + build_plate_number = 0 max_build_plate = max(build_plate_number, max_build_plate) return max_build_plate @@ -102,12 +104,12 @@ class CuraSceneController(QObject): self._active_build_plate = nr Selection.clear() - self._build_plate_model.setActiveBuildPlate(nr) + self._multi_build_plate_model.setActiveBuildPlate(nr) self._objects_model.setActiveBuildPlate(nr) self.activeBuildPlateChanged.emit() @staticmethod def createCuraSceneController(): objects_model = Application.getInstance().getObjectsModel() - build_plate_model = Application.getInstance().getBuildPlateModel() - return CuraSceneController(objects_model = objects_model, build_plate_model = build_plate_model) + multi_build_plate_model = Application.getInstance().getMultiBuildPlateModel() + return CuraSceneController(objects_model = objects_model, multi_build_plate_model = multi_build_plate_model) diff --git a/cura/Scene/CuraSceneNode.py b/cura/Scene/CuraSceneNode.py index 1635d37b5d..b29108d636 100644 --- a/cura/Scene/CuraSceneNode.py +++ b/cura/Scene/CuraSceneNode.py @@ -1,8 +1,13 @@ +# Copyright (c) 2018 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. +from copy import deepcopy +from typing import List + from UM.Application import Application -from UM.Logger import Logger from UM.Math.AxisAlignedBox import AxisAlignedBox from UM.Scene.SceneNode import SceneNode -from copy import deepcopy + +from cura.Settings.SettingOverrideDecorator import SettingOverrideDecorator ## Scene nodes that are models are only seen when selecting the corresponding build plate @@ -10,6 +15,8 @@ from copy import deepcopy class CuraSceneNode(SceneNode): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) + if "no_setting_override" not in kwargs: + self.addDecorator(SettingOverrideDecorator()) # now we always have a getActiveExtruderPosition, unless explicitly disabled self._outside_buildarea = False def setOutsideBuildArea(self, new_value): @@ -19,14 +26,86 @@ class CuraSceneNode(SceneNode): return self._outside_buildarea or self.callDecoration("getBuildPlateNumber") < 0 def isVisible(self): - return super().isVisible() and self.callDecoration("getBuildPlateNumber") == Application.getInstance().getBuildPlateModel().activeBuildPlate + return super().isVisible() and self.callDecoration("getBuildPlateNumber") == Application.getInstance().getMultiBuildPlateModel().activeBuildPlate def isSelectable(self) -> bool: - return super().isSelectable() and self.callDecoration("getBuildPlateNumber") == Application.getInstance().getBuildPlateModel().activeBuildPlate + return super().isSelectable() and self.callDecoration("getBuildPlateNumber") == Application.getInstance().getMultiBuildPlateModel().activeBuildPlate + + ## Get the extruder used to print this node. If there is no active node, then the extruder in position zero is returned + # TODO The best way to do it is by adding the setActiveExtruder decorator to every node when is loaded + def getPrintingExtruder(self): + global_container_stack = Application.getInstance().getGlobalContainerStack() + per_mesh_stack = self.callDecoration("getStack") + extruders = list(global_container_stack.extruders.values()) + + # Use the support extruder instead of the active extruder if this is a support_mesh + if per_mesh_stack: + if per_mesh_stack.getProperty("support_mesh", "value"): + return extruders[int(global_container_stack.getProperty("support_extruder_nr", "value"))] + + # It's only set if you explicitly choose an extruder + extruder_id = self.callDecoration("getActiveExtruder") + + for extruder in extruders: + # Find out the extruder if we know the id. + 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 + try: + if extruder.getMetaDataEntry("position", default = "0") == "0": # Check if the position is zero + return extruder + except ValueError: + continue + + # This point should never be reached + return None + + ## Return the color of the material used to print this model + def getDiffuseColor(self) -> List[float]: + printing_extruder = self.getPrintingExtruder() + + material_color = "#808080" # Fallback color + if printing_extruder is not None and printing_extruder.material: + material_color = printing_extruder.material.getMetaDataEntry("color_code", default = material_color) + + # Colors are passed as rgb hex strings (eg "#ffffff"), and the shader needs + # an rgba list of floats (eg [1.0, 1.0, 1.0, 1.0]) + return [ + int(material_color[1:3], 16) / 255, + int(material_color[3:5], 16) / 255, + int(material_color[5:7], 16) / 255, + 1.0 + ] + + ## Return if the provided bbox collides with the bbox of this scene node + def collidesWithBbox(self, check_bbox): + bbox = self.getBoundingBox() + + # 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): + convex_hull = self.callDecoration("getConvexHull") + if convex_hull: + if not convex_hull.isValid(): + return False + + # Check for collisions between disallowed areas and the object + for area in areas: + overlap = convex_hull.intersectsPolygon(area) + if overlap is None: + continue + return True + return False ## Taken from SceneNode, but replaced SceneNode with CuraSceneNode def __deepcopy__(self, memo): - copy = CuraSceneNode() + copy = CuraSceneNode(no_setting_override = True) # Setting override will be added later copy.setTransformation(self.getLocalTransformation()) copy.setMeshData(self._mesh_data) copy.setVisible(deepcopy(self._visible, memo)) diff --git a/cura/Settings/ContainerManager.py b/cura/Settings/ContainerManager.py index eefc109cbc..7161169b22 100644 --- a/cura/Settings/ContainerManager.py +++ b/cura/Settings/ContainerManager.py @@ -1,16 +1,14 @@ # Copyright (c) 2017 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. -import copy import os.path -import urllib +import urllib.parse import uuid -from typing import Any, Dict, List, Union +from typing import Dict, Union from PyQt5.QtCore import QObject, QUrl, QVariant from UM.FlameProfiler import pyqtSlot from PyQt5.QtWidgets import QMessageBox -from UM.Util import parseBool from UM.PluginRegistry import PluginRegistry from UM.SaveFile import SaveFile @@ -22,7 +20,6 @@ from UM.Application import Application from UM.Settings.ContainerStack import ContainerStack from UM.Settings.DefinitionContainer import DefinitionContainer from UM.Settings.InstanceContainer import InstanceContainer -from cura.QualityManager import QualityManager from UM.MimeTypeDatabase import MimeTypeNotFoundError from UM.Settings.ContainerRegistry import ContainerRegistry @@ -30,9 +27,11 @@ from UM.Settings.ContainerRegistry import ContainerRegistry from UM.i18n import i18nCatalog from cura.Settings.ExtruderManager import ExtruderManager +from cura.Settings.ExtruderStack import ExtruderStack catalog = i18nCatalog("cura") + ## Manager class that contains common actions to deal with containers in Cura. # # This is primarily intended as a class to be able to perform certain actions @@ -42,154 +41,12 @@ class ContainerManager(QObject): def __init__(self, parent = None): super().__init__(parent) + self._application = Application.getInstance() self._container_registry = ContainerRegistry.getInstance() - self._machine_manager = Application.getInstance().getMachineManager() + self._machine_manager = self._application.getMachineManager() + self._material_manager = self._application.getMaterialManager() self._container_name_filters = {} - ## Create a duplicate of the specified container - # - # This will create and add a duplicate of the container corresponding - # to the container ID. - # - # \param container_id \type{str} The ID of the container to duplicate. - # - # \return The ID of the new container, or an empty string if duplication failed. - @pyqtSlot(str, result = str) - def duplicateContainer(self, container_id): - #TODO: It should be able to duplicate a container of which only the metadata is known. - containers = self._container_registry.findContainers(id = container_id) - if not containers: - Logger.log("w", "Could duplicate container %s because it was not found.", container_id) - return "" - - container = containers[0] - new_container = self.duplicateContainerInstance(container) - return new_container.getId() - - ## Create a duplicate of the given container instance - # - # This will create and add a duplicate of the container that was passed. - # - # \param container \type{ContainerInterface} The container to duplicate. - # - # \return The duplicated container, or None if duplication failed. - def duplicateContainerInstance(self, container): - new_container = None - new_name = self._container_registry.uniqueName(container.getName()) - # Only InstanceContainer has a duplicate method at the moment. - # So fall back to serialize/deserialize when no duplicate method exists. - if hasattr(container, "duplicate"): - new_container = container.duplicate(new_name) - else: - new_container = container.__class__(new_name) - new_container.deserialize(container.serialize()) - new_container.setName(new_name) - - # TODO: we probably don't want to add it to the registry here! - if new_container: - self._container_registry.addContainer(new_container) - - return new_container - - ## Change the name of a specified container to a new name. - # - # \param container_id \type{str} The ID of the container to change the name of. - # \param new_id \type{str} The new ID of the container. - # \param new_name \type{str} The new name of the specified container. - # - # \return True if successful, False if not. - @pyqtSlot(str, str, str, result = bool) - def renameContainer(self, container_id, new_id, new_name): - containers = self._container_registry.findContainers(id = container_id) - if not containers: - Logger.log("w", "Could rename container %s because it was not found.", container_id) - return False - - container = containers[0] - # First, remove the container from the registry. This will clean up any files related to the container. - self._container_registry.removeContainer(container_id) - - # Ensure we have a unique name for the container - new_name = self._container_registry.uniqueName(new_name) - - # Then, update the name and ID of the container - container.setName(new_name) - container._id = new_id # TODO: Find a nicer way to set a new, unique ID - - # Finally, re-add the container so it will be properly serialized again. - self._container_registry.addContainer(container) - - return True - - ## Remove the specified container. - # - # \param container_id \type{str} The ID of the container to remove. - # - # \return True if the container was successfully removed, False if not. - @pyqtSlot(str, result = bool) - def removeContainer(self, container_id): - containers = self._container_registry.findContainers(id = container_id) - if not containers: - Logger.log("w", "Could not remove container %s because it was not found.", container_id) - return False - - self._container_registry.removeContainer(containers[0].getId()) - - return True - - ## Merge a container with another. - # - # This will try to merge one container into the other, by going through the container - # and setting the right properties on the other container. - # - # \param merge_into_id \type{str} The ID of the container to merge into. - # \param merge_id \type{str} The ID of the container to merge. - # - # \return True if successfully merged, False if not. - @pyqtSlot(str, result = bool) - def mergeContainers(self, merge_into_id, merge_id): - containers = self._container_registry.findContainers(id = merge_into_id) - if not containers: - Logger.log("w", "Could merge into container %s because it was not found.", merge_into_id) - return False - - merge_into = containers[0] - - containers = self._container_registry.findContainers(id = merge_id) - if not containers: - Logger.log("w", "Could not merge container %s because it was not found", merge_id) - return False - - merge = containers[0] - - if not isinstance(merge, type(merge_into)): - Logger.log("w", "Cannot merge two containers of different types") - return False - - self._performMerge(merge_into, merge) - - return True - - ## Clear the contents of a container. - # - # \param container_id \type{str} The ID of the container to clear. - # - # \return True if successful, False if not. - @pyqtSlot(str, result = bool) - def clearContainer(self, container_id): - if self._container_registry.isReadOnly(container_id): - Logger.log("w", "Cannot clear read-only container %s", container_id) - return False - - containers = self._container_registry.findContainers(id = container_id) - if not containers: - Logger.log("w", "Could clear container %s because it was not found.", container_id) - return False - - containers[0].clear() - - return True - @pyqtSlot(str, str, result=str) def getContainerMetaDataEntry(self, container_id, entry_name): metadatas = self._container_registry.findContainersMetadata(id = container_id) @@ -211,18 +68,15 @@ class ContainerManager(QObject): # \param entry_value The new value of the entry. # # \return True if successful, False if not. - @pyqtSlot(str, str, str, result = bool) - def setContainerMetaDataEntry(self, container_id, entry_name, entry_value): - if self._container_registry.isReadOnly(container_id): - Logger.log("w", "Cannot set metadata of read-only container %s.", container_id) + # TODO: This is ONLY used by MaterialView for material containers. Maybe refactor this. + @pyqtSlot("QVariant", str, str) + def setContainerMetaDataEntry(self, container_node, entry_name, entry_value): + root_material_id = container_node.metadata["base_file"] + if self._container_registry.isReadOnly(root_material_id): + Logger.log("w", "Cannot set metadata of read-only container %s.", root_material_id) return False - containers = self._container_registry.findContainers(id = container_id) #We need the complete container, since we need to know whether the container is read-only or not. - if not containers: - Logger.log("w", "Could not set metadata of container %s because it was not found.", container_id) - return False - - container = containers[0] + material_group = self._material_manager.getMaterialGroup(root_material_id) entries = entry_name.split("/") entry_name = entries.pop() @@ -230,7 +84,7 @@ class ContainerManager(QObject): sub_item_changed = False if entries: root_name = entries.pop(0) - root = container.getMetaDataEntry(root_name) + root = material_group.root_material_node.metadata.get(root_name) item = root for _ in range(len(entries)): @@ -243,12 +97,11 @@ class ContainerManager(QObject): entry_name = root_name entry_value = root + container = material_group.root_material_node.getContainer() 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) - return True - ## Set a setting property of the specified container. # # This will set the specified property of the specified setting of the container @@ -306,60 +159,6 @@ class ContainerManager(QObject): return container.getProperty(setting_key, property_name) - ## Set the name of the specified container. - @pyqtSlot(str, str, result = bool) - def setContainerName(self, container_id, new_name): - if self._container_registry.isReadOnly(container_id): - Logger.log("w", "Cannot set name of read-only container %s.", container_id) - return False - - containers = self._container_registry.findContainers(id = container_id) #We need to get the full container, not just metadata, since we need to know whether it's read-only. - if not containers: - Logger.log("w", "Could not set name of container %s because it was not found.", container_id) - return False - - containers[0].setName(new_name) - - return True - - ## Find instance containers matching certain criteria. - # - # This effectively forwards to - # ContainerRegistry::findInstanceContainersMetadata. - # - # \param criteria A dict of key - value pairs to search for. - # - # \return A list of container IDs that match the given criteria. - @pyqtSlot("QVariantMap", result = "QVariantList") - def findInstanceContainers(self, criteria): - return [entry["id"] for entry in self._container_registry.findInstanceContainersMetadata(**criteria)] - - @pyqtSlot(str, result = bool) - def isContainerUsed(self, container_id): - Logger.log("d", "Checking if container %s is currently used", container_id) - # check if this is a material container. If so, check if any material with the same base is being used by any - # stacks. - container_ids_to_check = [container_id] - container_results = self._container_registry.findInstanceContainersMetadata(id = container_id, type = "material") - if container_results: - this_container = container_results[0] - material_base_file = this_container["id"] - if "base_file" in this_container: - material_base_file = this_container["base_file"] - # check all material container IDs with the same base - material_containers = self._container_registry.findInstanceContainersMetadata(base_file = material_base_file, - type = "material") - if material_containers: - container_ids_to_check = [container["id"] for container in material_containers] - - all_stacks = self._container_registry.findContainerStacks() - for stack in all_stacks: - for used_container_id in container_ids_to_check: - if used_container_id in [child.getId() for child in stack.getContainers()]: - Logger.log("d", "The container is in use by %s", stack.getId()) - return True - return False - @pyqtSlot(str, result = str) def makeUniqueName(self, original_name): return self._container_registry.uniqueName(original_name) @@ -399,7 +198,7 @@ class ContainerManager(QObject): @pyqtSlot(str, str, QUrl, result = "QVariantMap") def exportContainer(self, container_id: str, file_type: str, file_url_or_string: Union[QUrl, str]) -> Dict[str, str]: if not container_id or not file_type or not file_url_or_string: - return { "status": "error", "message": "Invalid arguments"} + return {"status": "error", "message": "Invalid arguments"} if isinstance(file_url_or_string, QUrl): file_url = file_url_or_string.toLocalFile() @@ -407,20 +206,20 @@ class ContainerManager(QObject): file_url = file_url_or_string if not file_url: - return { "status": "error", "message": "Invalid path"} + return {"status": "error", "message": "Invalid path"} mime_type = None - if not file_type in self._container_name_filters: + if file_type not in self._container_name_filters: try: mime_type = MimeTypeDatabase.getMimeTypeForFile(file_url) except MimeTypeNotFoundError: - return { "status": "error", "message": "Unknown File Type" } + return {"status": "error", "message": "Unknown File Type"} else: mime_type = self._container_name_filters[file_type]["mime"] containers = self._container_registry.findContainers(id = container_id) if not containers: - return { "status": "error", "message": "Container not found"} + return {"status": "error", "message": "Container not found"} container = containers[0] if Platform.isOSX() and "." in file_url: @@ -437,12 +236,12 @@ class ContainerManager(QObject): result = QMessageBox.question(None, catalog.i18nc("@title:window", "File Already Exists"), catalog.i18nc("@label Don't translate the XML tag !", "The file {0} already exists. Are you sure you want to overwrite it?").format(file_url)) if result == QMessageBox.No: - return { "status": "cancelled", "message": "User cancelled"} + return {"status": "cancelled", "message": "User cancelled"} try: contents = container.serialize() except NotImplementedError: - return { "status": "error", "message": "Unable to serialize container"} + return {"status": "error", "message": "Unable to serialize container"} if contents is None: return {"status": "error", "message": "Serialization returned None. Unable to write to file"} @@ -450,7 +249,7 @@ class ContainerManager(QObject): with SaveFile(file_url, "w") as f: f.write(contents) - return { "status": "success", "message": "Succesfully exported container", "path": file_url} + return {"status": "success", "message": "Successfully exported container", "path": file_url} ## Imports a profile from a file # @@ -459,9 +258,9 @@ class ContainerManager(QObject): # \return \type{Dict} dict with a 'status' key containing the string 'success' or 'error', and a 'message' key # containing a message for the user @pyqtSlot(QUrl, result = "QVariantMap") - def importContainer(self, file_url_or_string: Union[QUrl, str]) -> Dict[str, str]: + def importMaterialContainer(self, file_url_or_string: Union[QUrl, str]) -> Dict[str, str]: if not file_url_or_string: - return { "status": "error", "message": "Invalid path"} + return {"status": "error", "message": "Invalid path"} if isinstance(file_url_or_string, QUrl): file_url = file_url_or_string.toLocalFile() @@ -469,16 +268,16 @@ class ContainerManager(QObject): file_url = file_url_or_string if not file_url or not os.path.exists(file_url): - return { "status": "error", "message": "Invalid path" } + return {"status": "error", "message": "Invalid path"} try: mime_type = MimeTypeDatabase.getMimeTypeForFile(file_url) except MimeTypeNotFoundError: - return { "status": "error", "message": "Could not determine mime type of file" } + return {"status": "error", "message": "Could not determine mime type of file"} container_type = self._container_registry.getContainerForMimeType(mime_type) if not container_type: - return { "status": "error", "message": "Could not find a container to handle the specified file."} + 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) @@ -486,16 +285,18 @@ class ContainerManager(QObject): container = container_type(container_id) try: - with open(file_url, "rt") as f: + with open(file_url, "rt", encoding = "utf-8") as f: container.deserialize(f.read()) except PermissionError: - return { "status": "error", "message": "Permission denied when trying to read the file"} + return {"status": "error", "message": "Permission denied when trying to read the file"} + except Exception as ex: + return {"status": "error", "message": str(ex)} - container.setName(container_id) + container.setDirty(True) self._container_registry.addContainer(container) - return { "status": "success", "message": "Successfully imported container {0}".format(container.getName()) } + return {"status": "success", "message": "Successfully imported container {0}".format(container.getName())} ## Update the current active quality changes container with the settings from the user container. # @@ -520,7 +321,7 @@ class ContainerManager(QObject): self._performMerge(quality_changes, stack.getTop()) - self._machine_manager.activeQualityChanged.emit() + self._machine_manager.activeQualityChangesGroupChanged.emit() return True @@ -533,414 +334,47 @@ class ContainerManager(QObject): # Go through global and extruder stacks and clear their topmost container (the user settings). for stack in ExtruderManager.getInstance().getActiveGlobalAndExtruderStacks(): - container = stack.getTop() + container = stack.userChanges container.clear() send_emits_containers.append(container) + # user changes are possibly added to make the current setup match the current enabled extruders + Application.getInstance().getMachineManager().correctExtruderSettings() + for container in send_emits_containers: container.sendPostponedEmits() - ## 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. - # - # \return \type{bool} True if the operation was successfully, False if not. - @pyqtSlot(str, result = bool) - def createQualityChanges(self, base_name): - global_stack = Application.getInstance().getGlobalContainerStack() - if not global_stack: - return False - - active_quality_name = self._machine_manager.activeQualityName - if active_quality_name == "": - Logger.log("w", "No quality container found in stack %s, cannot create profile", global_stack.getId()) - return False - - self._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. - for stack in ExtruderManager.getInstance().getActiveGlobalAndExtruderStacks(): - user_container = stack.getTop() - 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_id = None if stack is global_stack else QualityManager.getInstance().getParentMachineDefinition(stack.getBottom()).getId() - new_changes = self._createQualityChanges(quality_container, unique_name, - Application.getInstance().getGlobalContainerStack().getBottom(), - extruder_id) - self._performMerge(new_changes, quality_changes_container, clear_settings = False) - self._performMerge(new_changes, user_container) - - self._container_registry.addContainer(new_changes) - stack.replaceContainer(stack.getContainerIndex(quality_changes_container), new_changes) - - self._machine_manager.activeQualityChanged.emit() - return True - - ## Remove all quality changes containers matching a specified name. - # - # This will search for quality_changes containers matching the supplied name and remove them. - # Note that if the machine specifies that qualities should be filtered by machine and/or material - # only the containers related to the active machine/material are removed. - # - # \param quality_name The name of the quality changes to remove. - # - # \return \type{bool} True if successful, False if not. - @pyqtSlot(str, result = bool) - def removeQualityChanges(self, quality_name): - Logger.log("d", "Attempting to remove the quality change containers with name %s", quality_name) - containers_found = False - - if not quality_name: - return containers_found # Without a name we will never find a container to remove. - - # If the container that is being removed is the currently active quality, set another quality as the active quality - activate_quality = quality_name == self._machine_manager.activeQualityName - activate_quality_type = None - - global_stack = Application.getInstance().getGlobalContainerStack() - if not global_stack or not quality_name: - return "" - machine_definition = QualityManager.getInstance().getParentMachineDefinition(global_stack.getBottom()) - - for container in QualityManager.getInstance().findQualityChangesByName(quality_name, machine_definition): - containers_found = True - if activate_quality and not activate_quality_type: - activate_quality_type = container.getMetaDataEntry("quality") - self._container_registry.removeContainer(container.getId()) - - if not containers_found: - Logger.log("d", "Unable to remove quality containers, as we did not find any by the name of %s", quality_name) - - elif activate_quality: - definition_id = "fdmprinter" if not self._machine_manager.filterQualityByMachine else self._machine_manager.activeDefinitionId - containers = self._container_registry.findInstanceContainersMetadata(type = "quality", definition = definition_id, quality_type = activate_quality_type) - if containers: - self._machine_manager.setActiveQuality(containers[0]["id"]) - self._machine_manager.activeQualityChanged.emit() - - return containers_found - - ## Rename a set of quality changes containers. - # - # This will search for quality_changes containers matching the supplied name and rename them. - # Note that if the machine specifies that qualities should be filtered by machine and/or material - # only the containers related to the active machine/material are renamed. - # - # \param quality_name The name of the quality changes containers to rename. - # \param new_name The new name of the quality changes. - # - # \return True if successful, False if not. - @pyqtSlot(str, str, result = bool) - def renameQualityChanges(self, quality_name, new_name): - Logger.log("d", "User requested QualityChanges container rename of %s to %s", quality_name, new_name) - if not quality_name or not new_name: - return False - - if quality_name == new_name: - Logger.log("w", "Unable to rename %s to %s, because they are the same.", quality_name, new_name) - return True - - global_stack = Application.getInstance().getGlobalContainerStack() - if not global_stack: - return False - - self._machine_manager.blurSettings.emit() - - new_name = self._container_registry.uniqueName(new_name) - - container_registry = self._container_registry - - containers_to_rename = self._container_registry.findInstanceContainersMetadata(type = "quality_changes", name = quality_name) - - for container in containers_to_rename: - stack_id = global_stack.getId() - if "extruder" in container: - stack_id = container["extruder"] - container_registry.renameContainer(container["id"], new_name, self._createUniqueId(stack_id, new_name)) - - if not containers_to_rename: - Logger.log("e", "Unable to rename %s, because we could not find the profile", quality_name) - - self._machine_manager.activeQualityChanged.emit() - return True - - ## Duplicate a specified set of quality or quality_changes containers. - # - # This will search for containers matching the specified name. If the container is a "quality" type container, a new - # quality_changes container will be created with the specified quality as base. If the container is a "quality_changes" - # container, it is simply duplicated and renamed. - # - # \param quality_name The name of the quality to duplicate. - # - # \return A string containing the name of the duplicated containers, or an empty string if it failed. - @pyqtSlot(str, str, result = str) - def duplicateQualityOrQualityChanges(self, quality_name, base_name): - global_stack = Application.getInstance().getGlobalContainerStack() - if not global_stack or not quality_name: - return "" - machine_definition = global_stack.definition - - active_stacks = ExtruderManager.getInstance().getActiveGlobalAndExtruderStacks() - if active_stacks is None: - return "" - material_metadatas = [stack.material.getMetaData() for stack in active_stacks] - - result = self._duplicateQualityOrQualityChangesForMachineType(quality_name, base_name, - QualityManager.getInstance().getParentMachineDefinition(machine_definition), - material_metadatas) - return result[0].getName() if result else "" - - ## Duplicate a quality or quality changes profile specific to a machine type - # - # \param quality_name The name of the quality or quality changes container to duplicate. - # \param base_name The desired name for the new container. - # \param machine_definition The machine with the specific machine type. - # \param material_metadatas Metadata of materials - # \return List of duplicated quality profiles. - def _duplicateQualityOrQualityChangesForMachineType(self, quality_name: str, base_name: str, machine_definition: DefinitionContainer, material_metadatas: List[Dict[str, Any]]) -> List[InstanceContainer]: - Logger.log("d", "Attempting to duplicate the quality %s", quality_name) - - if base_name is None: - base_name = quality_name - # Try to find a Quality with the name. - container = QualityManager.getInstance().findQualityByName(quality_name, machine_definition, material_metadatas) - if container: - Logger.log("d", "We found a quality to duplicate.") - return self._duplicateQualityForMachineType(container, base_name, machine_definition) - Logger.log("d", "We found a quality_changes to duplicate.") - # Assume it is a quality changes. - return self._duplicateQualityChangesForMachineType(quality_name, base_name, machine_definition) - - # Duplicate a quality profile - def _duplicateQualityForMachineType(self, quality_container, base_name, machine_definition) -> List[InstanceContainer]: - if base_name is None: - base_name = quality_container.getName() - new_name = self._container_registry.uniqueName(base_name) - - new_change_instances = [] - - # Handle the global stack first. - global_changes = self._createQualityChanges(quality_container, new_name, machine_definition, None) - new_change_instances.append(global_changes) - self._container_registry.addContainer(global_changes) - - # Handle the extruders if present. - extruders = machine_definition.getMetaDataEntry("machine_extruder_trains") - if extruders: - for extruder_id in extruders: - extruder = extruders[extruder_id] - new_changes = self._createQualityChanges(quality_container, new_name, machine_definition, extruder) - new_change_instances.append(new_changes) - self._container_registry.addContainer(new_changes) - - return new_change_instances - - # Duplicate a quality changes container - def _duplicateQualityChangesForMachineType(self, quality_changes_name, base_name, machine_definition) -> List[InstanceContainer]: - new_change_instances = [] - for container in QualityManager.getInstance().findQualityChangesByName(quality_changes_name, - machine_definition): - base_id = container.getMetaDataEntry("extruder") - if not base_id: - base_id = container.getDefinition().getId() - new_unique_id = self._createUniqueId(base_id, base_name) - new_container = container.duplicate(new_unique_id, base_name) - new_change_instances.append(new_container) - self._container_registry.addContainer(new_container) - - return new_change_instances - - ## Create a duplicate of a material, which has the same GUID and base_file metadata - # - # \return \type{str} the id of the newly created container. - @pyqtSlot(str, result = str) - def duplicateMaterial(self, material_id: str) -> str: - original = self._container_registry.findContainersMetadata(id = material_id) - if not original: - Logger.log("d", "Unable to duplicate the material with id %s, because it doesn't exist.", material_id) - return "" - original = original[0] - - base_container_id = original.get("base_file") - base_container = self._container_registry.findContainers(id = base_container_id) - if not base_container: - Logger.log("d", "Unable to duplicate the material with id {material_id}, because base_file {base_container_id} doesn't exist.".format(material_id = material_id, base_container_id = base_container_id)) - return "" - base_container = base_container[0] - - #We'll copy all containers with the same base. - #This way the correct variant and machine still gets assigned when loading the copy of the material. - containers_to_copy = self._container_registry.findInstanceContainers(base_file = base_container_id) - - # Ensure all settings are saved. - Application.getInstance().saveSettings() - - # Create a new ID & container to hold the data. - new_containers = [] - 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 - new_containers.append(new_base_container) - - #Clone all of them. - clone_of_original = None #Keeping track of which one is the clone of the original material, since we need to return that. - for container_to_copy in containers_to_copy: - #Create unique IDs for every clone. - current_id = container_to_copy.getId() - 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"): - variant = self._container_registry.findContainers(id = container_to_copy.getMetaDataEntry("variant"))[0] - new_id += "_" + variant.getName().replace(" ", "_") - if current_id == material_id: - clone_of_original = new_id - - new_container = copy.deepcopy(container_to_copy) - new_container.getMetaData()["id"] = new_id - new_container.getMetaData()["base_file"] = new_base_id - new_containers.append(new_container) - - for container_to_add in new_containers: - container_to_add.setDirty(True) - ContainerRegistry.getInstance().addContainer(container_to_add) - return self._getMaterialContainerIdForActiveMachine(clone_of_original) - - ## Create a duplicate of a material or it's original entry - # - # \return \type{str} the id of the newly created container. - @pyqtSlot(str, result = str) - def duplicateOriginalMaterial(self, material_id): - - # check if the given material has a base file (i.e. was shipped by default) - base_file = self.getContainerMetaDataEntry(material_id, "base_file") - - if base_file == "": - # there is no base file, so duplicate by ID - return self.duplicateMaterial(material_id) - else: - # there is a base file, so duplicate the original material - return self.duplicateMaterial(base_file) - - ## Create a new material by cloning Generic PLA for the current material diameter and setting the GUID to something unqiue - # - # \return \type{str} the id of the newly created container. - @pyqtSlot(result = str) - def createMaterial(self) -> str: - # Ensure all settings are saved. - Application.getInstance().saveSettings() - - global_stack = Application.getInstance().getGlobalContainerStack() - if not global_stack: - return "" - - approximate_diameter = str(round(global_stack.getProperty("material_diameter", "value"))) - containers = self._container_registry.findInstanceContainersMetadata(id = "generic_pla*", approximate_diameter = approximate_diameter) - if not containers: - Logger.log("d", "Unable to create a new material by cloning Generic PLA, because it cannot be found for the material diameter for this machine.") - return "" - - base_file = containers[0].get("base_file") - containers = self._container_registry.findInstanceContainers(id = base_file) - if not containers: - Logger.log("d", "Unable to create a new material by cloning Generic PLA, because the base file for Generic PLA for this machine can not be found.") - return "" - - # Create a new ID & container to hold the data. - new_id = self._container_registry.uniqueName("custom_material") - container_type = type(containers[0]) # Always XMLMaterialProfile, since we specifically clone the base_file - duplicated_container = container_type(new_id) - - # Instead of duplicating we load the data from the basefile again. - # This ensures that the inheritance goes well and all "cut up" subclasses of the xmlMaterial profile - # are also correctly created. - with open(containers[0].getPath(), encoding="utf-8") as f: - duplicated_container.deserialize(f.read()) - - duplicated_container.setMetaDataEntry("GUID", str(uuid.uuid4())) - duplicated_container.setMetaDataEntry("brand", catalog.i18nc("@label", "Custom")) - # We're defaulting to PLA, as machines with material profiles don't like material types they don't know. - # TODO: This is a hack, the only reason this is in now is to bandaid the problem as we're close to a release! - duplicated_container.setMetaDataEntry("material", "PLA") - duplicated_container.setName(catalog.i18nc("@label", "Custom Material")) - - self._container_registry.addContainer(duplicated_container) - return self._getMaterialContainerIdForActiveMachine(new_id) - - ## Find the id of a material container based on the new material - # Utilty function that is shared between duplicateMaterial and createMaterial - # - # \param base_file \type{str} the id of the created container. - def _getMaterialContainerIdForActiveMachine(self, base_file): - global_stack = Application.getInstance().getGlobalContainerStack() - if not global_stack: - return base_file - - has_machine_materials = parseBool(global_stack.getMetaDataEntry("has_machine_materials", default = False)) - has_variant_materials = parseBool(global_stack.getMetaDataEntry("has_variant_materials", default = False)) - has_variants = parseBool(global_stack.getMetaDataEntry("has_variants", default = False)) - if has_machine_materials or has_variant_materials: - if has_variants: - materials = self._container_registry.findInstanceContainersMetadata(type = "material", base_file = base_file, definition = global_stack.getBottom().getId(), variant = self._machine_manager.activeVariantId) - else: - materials = self._container_registry.findInstanceContainersMetadata(type = "material", base_file = base_file, definition = global_stack.getBottom().getId()) - - if materials: - return materials[0]["id"] - - Logger.log("w", "Unable to find a suitable container based on %s for the current machine.", base_file) - return "" # do not activate a new material if a container can not be found - - return base_file - ## 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 - @pyqtSlot(str, result = "QStringList") - def getLinkedMaterials(self, material_id: str): - containers = self._container_registry.findInstanceContainersMetadata(id = material_id) - if not containers: - Logger.log("d", "Unable to find materials linked to material with id %s, because it doesn't exist.", material_id) - return [] + @pyqtSlot("QVariant", result = "QStringList") + def getLinkedMaterials(self, material_node): + guid = material_node.metadata["GUID"] - material_container = containers[0] - material_base_file = material_container.get("base_file", "") - material_guid = material_container.get("GUID", "") - if not material_guid: - Logger.log("d", "Unable to find materials linked to material with id %s, because it doesn't have a GUID.", material_id) - return [] + material_group_list = self._material_manager.getMaterialGroupListByGUID(guid) - containers = self._container_registry.findInstanceContainersMetadata(type = "material", GUID = material_guid) linked_material_names = [] - for container in containers: - if container["id"] in [material_id, material_base_file] or container.get("base_file") != container["id"]: - continue - - linked_material_names.append(container["name"]) + if material_group_list: + for material_group in material_group_list: + linked_material_names.append(material_group.root_material_node.metadata["name"]) return linked_material_names ## 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(str) - def unlinkMaterial(self, material_id: str): - containers = self._container_registry.findInstanceContainers(id=material_id) - if not containers: - Logger.log("d", "Unable to make the material with id %s unique, because it doesn't exist.", material_id) - return "" + @pyqtSlot("QVariant") + def unlinkMaterial(self, material_node): + # Get the material group + material_group = self._material_manager.getMaterialGroup(material_node.metadata["base_file"]) - containers[0].setMetaDataEntry("GUID", str(uuid.uuid4())) + # Generate a new GUID + new_guid = str(uuid.uuid4()) + # 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() + container.setMetaDataEntry("GUID", new_guid) ## Get the singleton instance for this class. @classmethod @@ -958,8 +392,6 @@ class ContainerManager(QObject): return ContainerManager.getInstance() def _performMerge(self, merge_into, merge, clear_settings = True): - assert isinstance(merge, type(merge_into)) - if merge == merge_into: return @@ -1013,81 +445,6 @@ class ContainerManager(QObject): name_filter = "{0} ({1})".format(mime_type.comment, suffix_list) self._container_name_filters[name_filter] = entry - ## Creates a unique ID for a container by prefixing the name with the stack ID. - # - # This method creates a unique ID for a container by prefixing it with a specified stack ID. - # This is done to ensure we have an easily identified ID for quality changes, which have the - # same name across several stacks. - # - # \param stack_id The ID of the stack to prepend. - # \param container_name The name of the container that we are creating a unique ID for. - # - # \return Container name prefixed with stack ID, in lower case with spaces replaced by underscores. - def _createUniqueId(self, stack_id, container_name): - result = stack_id + "_" + container_name - result = result.lower() - result.replace(" ", "_") - return result - - ## Create a quality changes container for a specified quality container. - # - # \param quality_container The quality container to create a changes container for. - # \param new_name The name of the new quality_changes container. - # \param machine_definition The machine definition this quality changes container is specific to. - # \param extruder_id - # - # \return A new quality_changes container with the specified container as base. - def _createQualityChanges(self, quality_container, new_name, machine_definition, extruder_id): - base_id = machine_definition.getId() if extruder_id is None else extruder_id - - # Create a new quality_changes container for the quality. - quality_changes = InstanceContainer(self._createUniqueId(base_id, new_name)) - quality_changes.setName(new_name) - quality_changes.addMetaDataEntry("type", "quality_changes") - quality_changes.addMetaDataEntry("quality_type", quality_container.getMetaDataEntry("quality_type")) - - # If we are creating a container for an extruder, ensure we add that to the container - if extruder_id is not None: - quality_changes.addMetaDataEntry("extruder", extruder_id) - - # If the machine specifies qualities should be filtered, ensure we match the current criteria. - if not machine_definition.getMetaDataEntry("has_machine_quality"): - quality_changes.setDefinition("fdmprinter") - else: - quality_changes.setDefinition(QualityManager.getInstance().getParentMachineDefinition(machine_definition).getId()) - - from cura.CuraApplication import CuraApplication - quality_changes.addMetaDataEntry("setting_version", CuraApplication.SettingVersion) - return quality_changes - - - ## Import profiles from a list of file_urls. - # Each QUrl item must end with .curaprofile, or it will not be imported. - # - # \param QVariant, essentially a list with QUrl objects. - # \return Dict with keys status, text - @pyqtSlot("QVariantList", result="QVariantMap") - def importProfiles(self, file_urls): - status = "ok" - results = {"ok": [], "error": []} - for file_url in file_urls: - if not file_url.isValid(): - continue - path = file_url.toLocalFile() - if not path: - continue - if not path.endswith(".curaprofile"): - continue - - single_result = self._container_registry.importProfile(path) - if single_result["status"] == "error": - status = "error" - results[single_result["status"]].append(single_result["message"]) - - return { - "status": status, - "message": "\n".join(results["ok"] + results["error"])} - ## Import single profile, file_url does not have to end with curaprofile @pyqtSlot(QUrl, result="QVariantMap") def importProfile(self, file_url): @@ -1098,11 +455,13 @@ class ContainerManager(QObject): return return self._container_registry.importProfile(path) - @pyqtSlot("QVariantList", QUrl, str) - def exportProfile(self, instance_id: str, file_url: QUrl, file_type: str) -> None: + @pyqtSlot(QObject, QUrl, str) + def exportQualityChangesGroup(self, quality_changes_group, file_url: QUrl, file_type: str): if not file_url.isValid(): return path = file_url.toLocalFile() if not path: return - self._container_registry.exportProfile(instance_id, path, file_type) + + container_list = [n.getContainer() for n in quality_changes_group.getAllNodes()] + self._container_registry.exportQualityProfile(container_list, path, file_type) diff --git a/cura/Settings/ContainerSettingsModel.py b/cura/Settings/ContainerSettingsModel.py deleted file mode 100644 index 2c4bef6464..0000000000 --- a/cura/Settings/ContainerSettingsModel.py +++ /dev/null @@ -1,97 +0,0 @@ -# Copyright (c) 2016 Ultimaker B.V. -# Cura is released under the terms of the LGPLv3 or higher. - -from UM.Application import Application -from UM.Qt.ListModel import ListModel - -from PyQt5.QtCore import pyqtProperty, Qt, pyqtSignal, pyqtSlot, QUrl - -from UM.Settings.ContainerRegistry import ContainerRegistry -from UM.Settings.InstanceContainer import InstanceContainer -from UM.Settings.SettingFunction import SettingFunction - -class ContainerSettingsModel(ListModel): - LabelRole = Qt.UserRole + 1 - CategoryRole = Qt.UserRole + 2 - UnitRole = Qt.UserRole + 3 - ValuesRole = Qt.UserRole + 4 - - def __init__(self, parent = None): - super().__init__(parent) - self.addRoleName(self.LabelRole, "label") - self.addRoleName(self.CategoryRole, "category") - self.addRoleName(self.UnitRole, "unit") - self.addRoleName(self.ValuesRole, "values") - - self._container_ids = [] - self._containers = [] - - def _onPropertyChanged(self, key, property_name): - if property_name == "value": - self._update() - - def _update(self): - items = [] - - if len(self._container_ids) == 0: - return - - keys = [] - for container in self._containers: - keys = keys + list(container.getAllKeys()) - - keys = list(set(keys)) # remove duplicate keys - - for key in keys: - definition = None - category = None - values = [] - for container in self._containers: - instance = container.getInstance(key) - if instance: - definition = instance.definition - - # Traverse up to find the category - category = definition - while category.type != "category": - category = category.parent - - value = container.getProperty(key, "value") - if type(value) == SettingFunction: - values.append("=\u0192") - else: - values.append(container.getProperty(key, "value")) - else: - values.append("") - - items.append({ - "key": key, - "values": values, - "label": definition.label, - "unit": definition.unit, - "category": category.label - }) - items.sort(key = lambda k: (k["category"], k["key"])) - self.setItems(items) - - ## Set the ids of the containers which have the settings this model should list. - # Also makes sure the model updates when the containers have property changes - def setContainers(self, container_ids): - for container in self._containers: - container.propertyChanged.disconnect(self._onPropertyChanged) - - self._container_ids = container_ids - self._containers = [] - - for container_id in self._container_ids: - containers = ContainerRegistry.getInstance().findContainers(id = container_id) - if containers: - containers[0].propertyChanged.connect(self._onPropertyChanged) - self._containers.append(containers[0]) - - self._update() - - containersChanged = pyqtSignal() - @pyqtProperty("QVariantList", fset = setContainers, notify = containersChanged) - def containers(self): - return self.container_ids diff --git a/cura/Settings/CuraContainerRegistry.py b/cura/Settings/CuraContainerRegistry.py index b945ec0609..0cf1c7399f 100644 --- a/cura/Settings/CuraContainerRegistry.py +++ b/cura/Settings/CuraContainerRegistry.py @@ -25,14 +25,16 @@ from UM.Resources import Resources from . import ExtruderStack from . import GlobalStack -from .ContainerManager import ContainerManager from .ExtruderManager import ExtruderManager from cura.CuraApplication import CuraApplication +from cura.Machines.QualityManager import getMachineDefinitionIDForQualitySearch +from cura.ProfileReader import NoProfileException from UM.i18n import i18nCatalog catalog = i18nCatalog("cura") + class CuraContainerRegistry(ContainerRegistry): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) @@ -102,7 +104,7 @@ class CuraContainerRegistry(ContainerRegistry): # \param instance_ids \type{list} the IDs of the profiles to export. # \param file_name \type{str} the full path and filename to export to. # \param file_type \type{str} the file type with the format " (*.)" - def exportProfile(self, instance_ids, file_name, file_type): + def exportQualityProfile(self, container_list, file_name, file_type): # 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. @@ -121,31 +123,10 @@ class CuraContainerRegistry(ContainerRegistry): catalog.i18nc("@label Don't translate the XML tag !", "The file {0} already exists. Are you sure you want to overwrite it?").format(file_name)) if result == QMessageBox.No: return - found_containers = [] - extruder_positions = [] - for instance_id in instance_ids: - containers = ContainerRegistry.getInstance().findInstanceContainers(id = instance_id) - if containers: - found_containers.append(containers[0]) - - # Determine the position of the extruder of this container - extruder_id = containers[0].getMetaDataEntry("extruder", "") - if extruder_id == "": - # Global stack - extruder_positions.append(-1) - else: - extruder_containers = ContainerRegistry.getInstance().findDefinitionContainersMetadata(id = extruder_id) - if extruder_containers: - extruder_positions.append(int(extruder_containers[0].get("position", 0))) - else: - extruder_positions.append(0) - # Ensure the profiles are always exported in order (global, extruder 0, extruder 1, ...) - found_containers = [containers for (positions, containers) in sorted(zip(extruder_positions, found_containers))] profile_writer = self._findProfileWriter(extension, description) - try: - success = profile_writer.write(file_name, found_containers) + 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)) m = Message(catalog.i18nc("@info:status Don't translate the XML tags or !", "Failed to export profile to {0}: {1}", file_name, str(e)), @@ -205,12 +186,60 @@ class CuraContainerRegistry(ContainerRegistry): profile_reader = plugin_registry.getPluginObject(plugin_id) try: profile_or_list = profile_reader.read(file_name) # Try to open the file with the profile reader. + except NoProfileException: + return { "status": "ok", "message": catalog.i18nc("@info:status Don't translate the XML tags or !", "No custom profile to import in file {0}", file_name)} except Exception as e: # Note that this will fail quickly. That is, if any profile reader throws an exception, it will stop reading. It will only continue reading if the reader returned None. Logger.log("e", "Failed to import profile from %s: %s while using profile reader. Got exception %s", file_name,profile_reader.getPluginId(), str(e)) - return { "status": "error", "message": catalog.i18nc("@info:status Don't translate the XML tags or !", "Failed to import profile from {0}: {1}", file_name, str(e))} + return { "status": "error", "message": catalog.i18nc("@info:status Don't translate the XML tags or !", "Failed to import profile from {0}: {1}", file_name, "\n" + str(e))} if profile_or_list: + # Ensure it is always a list of profiles + if not isinstance(profile_or_list, list): + profile_or_list = [profile_or_list] + + # First check if this profile is suitable for this machine + global_profile = None + if len(profile_or_list) == 1: + global_profile = profile_or_list[0] + else: + for profile in profile_or_list: + if not profile.getMetaDataEntry("position"): + global_profile = profile + break + if not global_profile: + Logger.log("e", "Incorrect profile [%s]. Could not find global profile", file_name) + return { "status": "error", + "message": catalog.i18nc("@info:status Don't translate the XML tags or !", "This profile {0} contains incorrect data, could not import it.", file_name)} + profile_definition = global_profile.getMetaDataEntry("definition") + + # Make sure we have a profile_definition in the file: + if profile_definition is None: + break + machine_definition = self.findDefinitionContainers(id = profile_definition) + if not machine_definition: + Logger.log("e", "Incorrect profile [%s]. Unknown machine type [%s]", file_name, profile_definition) + return {"status": "error", + "message": catalog.i18nc("@info:status Don't translate the XML tags or !", "This profile {0} contains incorrect data, could not import it.", file_name) + } + machine_definition = machine_definition[0] + + # 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_container_stack.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 or !", "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)} + + # 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") + name_seed = os.path.splitext(os.path.basename(file_name))[0] new_name = self.uniqueName(name_seed) @@ -218,6 +247,41 @@ class CuraContainerRegistry(ContainerRegistry): if type(profile_or_list) is not list: profile_or_list = [profile_or_list] + # Make sure that there are also extruder stacks' quality_changes, not just one for the global stack + if len(profile_or_list) == 1: + global_profile = profile_or_list[0] + extruder_profiles = [] + for idx, extruder in enumerate(global_container_stack.extruders.values()): + profile_id = ContainerRegistry.getInstance().uniqueName(global_container_stack.getId() + "_extruder_" + str(idx + 1)) + profile = InstanceContainer(profile_id) + profile.setName(quality_name) + profile.addMetaDataEntry("setting_version", CuraApplication.SettingVersion) + profile.addMetaDataEntry("type", "quality_changes") + profile.addMetaDataEntry("definition", expected_machine_definition) + profile.addMetaDataEntry("quality_type", quality_type) + profile.addMetaDataEntry("position", "0") + profile.setDirty(True) + if idx == 0: + # move all per-extruder settings to the first extruder's quality_changes + for qc_setting_key in global_profile.getAllKeys(): + settable_per_extruder = global_container_stack.getProperty(qc_setting_key, + "settable_per_extruder") + if settable_per_extruder: + setting_value = global_profile.getProperty(qc_setting_key, "value") + + setting_definition = global_container_stack.getSettingDefinition(qc_setting_key) + new_instance = SettingInstance(setting_definition, profile) + new_instance.setProperty("value", setting_value) + new_instance.resetState() # Ensure that the state is not seen as a user state. + profile.addInstance(new_instance) + profile.setDirty(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 for profile_index, profile in enumerate(profile_or_list): if profile_index == 0: @@ -226,17 +290,18 @@ class CuraContainerRegistry(ContainerRegistry): elif profile_index < len(machine_extruders) + 1: # This is assumed to be an extruder profile - extruder_id = Application.getInstance().getMachineManager().getQualityDefinitionId(machine_extruders[profile_index - 1].getBottom()) - if not profile.getMetaDataEntry("extruder"): - profile.addMetaDataEntry("extruder", extruder_id) + extruder_id = machine_extruders[profile_index - 1].definition.getId() + extruder_position = str(profile_index - 1) + if not profile.getMetaDataEntry("position"): + profile.addMetaDataEntry("position", extruder_position) else: - profile.setMetaDataEntry("extruder", extruder_id) + profile.setMetaDataEntry("position", extruder_position) profile_id = (extruder_id + "_" + name_seed).lower().replace(" ", "_") else: #More extruders in the imported file than in the machine. continue #Delete the additional profiles. - result = self._configureProfile(profile, profile_id, new_name) + 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 !", @@ -245,6 +310,9 @@ class CuraContainerRegistry(ContainerRegistry): 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 + return {"status": "error", "message": catalog.i18nc("@info:status", "File {0} does not contain any valid profile.", file_name)} + # If it hasn't returned by now, none of the plugins loaded the profile successfully. return {"status": "error", "message": catalog.i18nc("@info:status", "Profile {0} has an unknown file type or is corrupted.", file_name)} @@ -261,16 +329,17 @@ class CuraContainerRegistry(ContainerRegistry): # \param new_name The new name for the profile. # # \return None if configuring was successful or an error message if an error occurred. - def _configureProfile(self, profile: InstanceContainer, id_seed: str, new_name: str) -> Optional[str]: + def _configureProfile(self, profile: InstanceContainer, id_seed: str, new_name: str, machine_definition_id: str) -> Optional[str]: profile.setDirty(True) # Ensure the profiles are correctly saved new_id = self.createUniqueName("quality_changes", "", id_seed, catalog.i18nc("@label", "Custom profile")) - profile._id = new_id + profile.setMetaDataEntry("id", new_id) profile.setName(new_name) # Set the unique Id to the profile, so it's generating a new one even if the user imports the same profile # It also solves an issue with importing profiles from G-Codes profile.setMetaDataEntry("id", new_id) + profile.setMetaDataEntry("definition", machine_definition_id) if "type" in profile.getMetaData(): profile.setMetaDataEntry("type", "quality_changes") @@ -281,40 +350,16 @@ class CuraContainerRegistry(ContainerRegistry): if not quality_type: return catalog.i18nc("@info:status", "Profile is missing a quality type.") - quality_type_criteria = {"quality_type": quality_type} - if self._machineHasOwnQualities(): - profile.setDefinition(self._activeQualityDefinition().getId()) - if self._machineHasOwnMaterials(): - active_material_id = self._activeMaterialId() - if active_material_id and active_material_id != "empty": # only update if there is an active material - profile.addMetaDataEntry("material", active_material_id) - quality_type_criteria["material"] = active_material_id - - quality_type_criteria["definition"] = profile.getDefinition().getId() - - else: - profile.setDefinition("fdmprinter") - quality_type_criteria["definition"] = "fdmprinter" - - machine_definition = Application.getInstance().getGlobalContainerStack().getBottom() - del quality_type_criteria["definition"] - - # materials = None - - if "material" in quality_type_criteria: - # materials = ContainerRegistry.getInstance().findInstanceContainers(id = quality_type_criteria["material"]) - del quality_type_criteria["material"] - - # Do not filter quality containers here with materials because we are trying to import a profile, so it should - # NOT be restricted by the active materials on the current machine. - materials = None + global_stack = Application.getInstance().getGlobalContainerStack() + definition_id = getMachineDefinitionIDForQualitySearch(global_stack.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. - from cura.QualityManager import QualityManager - qualities = QualityManager.getInstance()._getFilteredContainersForStack(machine_definition, materials, **quality_type_criteria) - if not qualities: + quality_manager = CuraApplication.getInstance()._quality_manager + quality_group_dict = quality_manager.getQualityGroupsForMachineDefinition(global_stack) + if 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) @@ -334,18 +379,6 @@ class CuraContainerRegistry(ContainerRegistry): result.append( (plugin_id, meta_data) ) return result - ## Get the definition to use to select quality profiles for the active machine - # \return the active quality definition object or None if there is no quality definition - def _activeQualityDefinition(self): - global_container_stack = Application.getInstance().getGlobalContainerStack() - if global_container_stack: - definition_id = Application.getInstance().getMachineManager().getQualityDefinitionId(global_container_stack.getBottom()) - definition = self.findDefinitionContainers(id = definition_id)[0] - - if definition: - return definition - return None - ## Returns true if the current machine requires its own materials # \return True if the current machine requires its own materials def _machineHasOwnMaterials(self): @@ -418,7 +451,14 @@ class CuraContainerRegistry(ContainerRegistry): if not extruder_stacks: self.addExtruderStackForSingleExtrusionMachine(container, "fdmextruder") - def addExtruderStackForSingleExtrusionMachine(self, machine, extruder_id): + # + # new_global_quality_changes is optional. It is only used in project loading for a scenario like this: + # - override the current machine + # - create new for custom quality profile + # new_global_quality_changes is the new global quality changes container in this scenario. + # create_new_ids indicates if new unique ids must be created + # + def addExtruderStackForSingleExtrusionMachine(self, machine, extruder_id, new_global_quality_changes = None, create_new_ids = True): new_extruder_id = extruder_id extruder_definitions = self.findDefinitionContainers(id = new_extruder_id) @@ -427,17 +467,15 @@ class CuraContainerRegistry(ContainerRegistry): return extruder_definition = extruder_definitions[0] - unique_name = self.uniqueName(machine.getName() + " " + new_extruder_id) + unique_name = self.uniqueName(machine.getName() + " " + new_extruder_id) if create_new_ids else machine.getName() + " " + new_extruder_id extruder_stack = ExtruderStack.ExtruderStack(unique_name) extruder_stack.setName(extruder_definition.getName()) extruder_stack.setDefinition(extruder_definition) extruder_stack.addMetaDataEntry("position", extruder_definition.getMetaDataEntry("position")) - from cura.CuraApplication import CuraApplication - # create a new definition_changes container for the extruder stack - definition_changes_id = self.uniqueName(extruder_stack.getId() + "_settings") + definition_changes_id = self.uniqueName(extruder_stack.getId() + "_settings") if create_new_ids else extruder_stack.getId() + "_settings" definition_changes_name = definition_changes_id definition_changes = InstanceContainer(definition_changes_id) definition_changes.setName(definition_changes_name) @@ -464,14 +502,15 @@ class CuraContainerRegistry(ContainerRegistry): extruder_stack.setDefinitionChanges(definition_changes) # create empty user changes container otherwise - user_container_id = self.uniqueName(extruder_stack.getId() + "_user") + user_container_id = self.uniqueName(extruder_stack.getId() + "_user") if create_new_ids else extruder_stack.getId() + "_user" user_container_name = user_container_id user_container = InstanceContainer(user_container_id) user_container.setName(user_container_name) user_container.addMetaDataEntry("type", "user") - user_container.addMetaDataEntry("machine", extruder_stack.getId()) + user_container.addMetaDataEntry("machine", machine.getId()) user_container.addMetaDataEntry("setting_version", CuraApplication.SettingVersion) user_container.setDefinition(machine.definition.getId()) + user_container.setMetaDataEntry("extruder", extruder_stack.getId()) if machine.userChanges: # for the newly created extruder stack, we need to move all "per-extruder" settings to the user changes @@ -493,63 +532,73 @@ class CuraContainerRegistry(ContainerRegistry): self.addContainer(user_container) extruder_stack.setUserChanges(user_container) - variant_id = "default" + application = CuraApplication.getInstance() + empty_variant = application.empty_variant_container + empty_material = application.empty_material_container + empty_quality = application.empty_quality_container + if machine.variant.getId() not in ("empty", "empty_variant"): - variant_id = machine.variant.getId() + variant = machine.variant else: - variant_id = "empty_variant" - extruder_stack.setVariantById(variant_id) + variant = empty_variant + extruder_stack.variant = variant - material_id = "default" if machine.material.getId() not in ("empty", "empty_material"): - material_id = machine.material.getId() + material = machine.material else: - material_id = "empty_material" - extruder_stack.setMaterialById(material_id) + material = empty_material + extruder_stack.material = material - quality_id = "default" if machine.quality.getId() not in ("empty", "empty_quality"): - quality_id = machine.quality.getId() + quality = machine.quality else: - quality_id = "empty_quality" - extruder_stack.setQualityById(quality_id) + quality = empty_quality + extruder_stack.quality = quality - if machine.qualityChanges.getId() not in ("empty", "empty_quality_changes"): - extruder_quality_changes_container = self.findInstanceContainers(name = machine.qualityChanges.getName(), extruder = extruder_id) + machine_quality_changes = machine.qualityChanges + if new_global_quality_changes is not None: + machine_quality_changes = new_global_quality_changes + + if machine_quality_changes.getId() not in ("empty", "empty_quality_changes"): + extruder_quality_changes_container = self.findInstanceContainers(name = machine_quality_changes.getName(), extruder = extruder_id) if extruder_quality_changes_container: extruder_quality_changes_container = extruder_quality_changes_container[0] quality_changes_id = extruder_quality_changes_container.getId() - extruder_stack.setQualityChangesById(quality_changes_id) + extruder_stack.qualityChanges = self.findInstanceContainers(id = quality_changes_id)[0] else: # Some extruder quality_changes containers can be created at runtime as files in the qualities # folder. Those files won't be loaded in the registry immediately. So we also need to search # the folder to see if the quality_changes exists. - extruder_quality_changes_container = self._findQualityChangesContainerInCuraFolder(machine.qualityChanges.getName()) + extruder_quality_changes_container = self._findQualityChangesContainerInCuraFolder(machine_quality_changes.getName()) if extruder_quality_changes_container: quality_changes_id = extruder_quality_changes_container.getId() - extruder_stack.setQualityChangesById(quality_changes_id) + extruder_quality_changes_container.addMetaDataEntry("extruder", extruder_stack.definition.getId()) + extruder_stack.qualityChanges = self.findInstanceContainers(id = quality_changes_id)[0] else: # if we still cannot find a quality changes container for the extruder, create a new one - container_id = self.uniqueName(extruder_stack.getId() + "_user") - container_name = machine.qualityChanges.getName() + container_name = machine_quality_changes.getName() + container_id = self.uniqueName(extruder_stack.getId() + "_qc_" + container_name) extruder_quality_changes_container = InstanceContainer(container_id) extruder_quality_changes_container.setName(container_name) extruder_quality_changes_container.addMetaDataEntry("type", "quality_changes") extruder_quality_changes_container.addMetaDataEntry("setting_version", CuraApplication.SettingVersion) extruder_quality_changes_container.addMetaDataEntry("extruder", extruder_stack.definition.getId()) - extruder_quality_changes_container.addMetaDataEntry("quality_type", machine.qualityChanges.getMetaDataEntry("quality_type")) - extruder_quality_changes_container.setDefinition(machine.qualityChanges.getDefinition().getId()) + extruder_quality_changes_container.addMetaDataEntry("quality_type", machine_quality_changes.getMetaDataEntry("quality_type")) + extruder_quality_changes_container.setDefinition(machine_quality_changes.getDefinition().getId()) + + self.addContainer(extruder_quality_changes_container) + extruder_stack.qualityChanges = extruder_quality_changes_container if not extruder_quality_changes_container: Logger.log("w", "Could not find quality_changes named [%s] for extruder [%s]", - machine.qualityChanges.getName(), extruder_stack.getId()) + machine_quality_changes.getName(), extruder_stack.getId()) else: # move all per-extruder settings to the extruder's quality changes - for qc_setting_key in machine.qualityChanges.getAllKeys(): + for qc_setting_key in machine_quality_changes.getAllKeys(): settable_per_extruder = machine.getProperty(qc_setting_key, "settable_per_extruder") if settable_per_extruder: - setting_value = machine.qualityChanges.getProperty(qc_setting_key, "value") + setting_value = machine_quality_changes.getProperty(qc_setting_key, "value") setting_definition = machine.getSettingDefinition(qc_setting_key) new_instance = SettingInstance(setting_definition, definition_changes) @@ -558,16 +607,16 @@ class CuraContainerRegistry(ContainerRegistry): extruder_quality_changes_container.addInstance(new_instance) extruder_quality_changes_container.setDirty(True) - machine.qualityChanges.removeInstance(qc_setting_key, postpone_emit=True) + machine_quality_changes.removeInstance(qc_setting_key, postpone_emit=True) else: - extruder_stack.setQualityChangesById("empty_quality_changes") + extruder_stack.qualityChanges = self.findInstanceContainers(id = "empty_quality_changes")[0] self.addContainer(extruder_stack) # Also need to fix the other qualities that are suitable for this machine. Those quality changes may still have # per-extruder settings in the container for the machine instead of the extruder. - if machine.qualityChanges.getId() not in ("empty", "empty_quality_changes"): - quality_changes_machine_definition_id = machine.qualityChanges.getDefinition().getId() + if machine_quality_changes.getId() not in ("empty", "empty_quality_changes"): + quality_changes_machine_definition_id = machine_quality_changes.getDefinition().getId() else: whole_machine_definition = machine.definition machine_entry = machine.definition.getMetaDataEntry("machine") @@ -587,7 +636,7 @@ class CuraContainerRegistry(ContainerRegistry): qc_groups[qc_name] = [] qc_groups[qc_name].append(qc) # try to find from the quality changes cura directory too - quality_changes_container = self._findQualityChangesContainerInCuraFolder(machine.qualityChanges.getName()) + quality_changes_container = self._findQualityChangesContainerInCuraFolder(machine_quality_changes.getName()) if quality_changes_container: qc_groups[qc_name].append(quality_changes_container) @@ -630,7 +679,7 @@ class CuraContainerRegistry(ContainerRegistry): if not os.path.isfile(file_path): continue - parser = configparser.ConfigParser() + parser = configparser.ConfigParser(interpolation=None) try: parser.read([file_path]) except: @@ -648,7 +697,7 @@ class CuraContainerRegistry(ContainerRegistry): continue instance_container = InstanceContainer(container_id) - with open(file_path, "r") as f: + with open(file_path, "r", encoding = "utf-8") as f: serialized = f.read() instance_container.deserialize(serialized, file_path) self.addContainer(instance_container) diff --git a/cura/Settings/CuraContainerStack.py b/cura/Settings/CuraContainerStack.py index b97bb3314e..00db4f57c7 100755 --- a/cura/Settings/CuraContainerStack.py +++ b/cura/Settings/CuraContainerStack.py @@ -83,20 +83,6 @@ class CuraContainerStack(ContainerStack): def setQualityChanges(self, new_quality_changes: InstanceContainer, postpone_emit = False) -> None: self.replaceContainer(_ContainerIndexes.QualityChanges, new_quality_changes, postpone_emit = postpone_emit) - ## Set the quality changes container by an ID. - # - # This will search for the specified container and set it. If no container was found, an error will be raised. - # - # \param new_quality_changes_id The ID of the new quality changes container. - # - # \throws Exceptions.InvalidContainerError Raised when no container could be found with the specified ID. - def setQualityChangesById(self, new_quality_changes_id: str) -> None: - quality_changes = ContainerRegistry.getInstance().findInstanceContainers(id = new_quality_changes_id) - if quality_changes: - self.setQualityChanges(quality_changes[0]) - else: - raise Exceptions.InvalidContainerError("Could not find container with id {id}".format(id = new_quality_changes_id)) - ## Get the quality changes container. # # \return The quality changes container. Should always be a valid container, but can be equal to the empty InstanceContainer. @@ -110,31 +96,6 @@ class CuraContainerStack(ContainerStack): def setQuality(self, new_quality: InstanceContainer, postpone_emit = False) -> None: self.replaceContainer(_ContainerIndexes.Quality, new_quality, postpone_emit = postpone_emit) - ## Set the quality container by an ID. - # - # This will search for the specified container and set it. If no container was found, an error will be raised. - # There is a special value for ID, which is "default". The "default" value indicates the quality should be set - # to whatever the machine definition specifies as "preferred" container, or a fallback value. See findDefaultQuality - # for details. - # - # \param new_quality_id The ID of the new quality container. - # - # \throws Exceptions.InvalidContainerError Raised when no container could be found with the specified ID. - def setQualityById(self, new_quality_id: str) -> None: - quality = self._empty_quality - if new_quality_id == "default": - new_quality = self.findDefaultQuality() - if new_quality: - quality = new_quality - else: - qualities = ContainerRegistry.getInstance().findInstanceContainers(id = new_quality_id) - if qualities: - quality = qualities[0] - else: - raise Exceptions.InvalidContainerError("Could not find container with id {id}".format(id = new_quality_id)) - - self.setQuality(quality) - ## Get the quality container. # # \return The quality container. Should always be a valid container, but can be equal to the empty InstanceContainer. @@ -148,31 +109,6 @@ class CuraContainerStack(ContainerStack): def setMaterial(self, new_material: InstanceContainer, postpone_emit = False) -> None: self.replaceContainer(_ContainerIndexes.Material, new_material, postpone_emit = postpone_emit) - ## Set the material container by an ID. - # - # This will search for the specified container and set it. If no container was found, an error will be raised. - # There is a special value for ID, which is "default". The "default" value indicates the quality should be set - # to whatever the machine definition specifies as "preferred" container, or a fallback value. See findDefaultMaterial - # for details. - # - # \param new_material_id The ID of the new material container. - # - # \throws Exceptions.InvalidContainerError Raised when no container could be found with the specified ID. - def setMaterialById(self, new_material_id: str) -> None: - material = self._empty_material - if new_material_id == "default": - new_material = self.findDefaultMaterial() - if new_material: - material = new_material - else: - materials = ContainerRegistry.getInstance().findInstanceContainers(id = new_material_id) - if materials: - material = materials[0] - else: - raise Exceptions.InvalidContainerError("Could not find container with id {id}".format(id = new_material_id)) - - self.setMaterial(material) - ## Get the material container. # # \return The material container. Should always be a valid container, but can be equal to the empty InstanceContainer. @@ -186,31 +122,6 @@ class CuraContainerStack(ContainerStack): def setVariant(self, new_variant: InstanceContainer) -> None: self.replaceContainer(_ContainerIndexes.Variant, new_variant) - ## Set the variant container by an ID. - # - # This will search for the specified container and set it. If no container was found, an error will be raised. - # There is a special value for ID, which is "default". The "default" value indicates the quality should be set - # to whatever the machine definition specifies as "preferred" container, or a fallback value. See findDefaultVariant - # for details. - # - # \param new_variant_id The ID of the new variant container. - # - # \throws Exceptions.InvalidContainerError Raised when no container could be found with the specified ID. - def setVariantById(self, new_variant_id: str) -> None: - variant = self._empty_variant - if new_variant_id == "default": - new_variant = self.findDefaultVariantBuildplate() if self.getMetaDataEntry("type") == "machine" else self.findDefaultVariant() - if new_variant: - variant = new_variant - else: - variants = ContainerRegistry.getInstance().findInstanceContainers(id = new_variant_id) - if variants: - variant = variants[0] - else: - raise Exceptions.InvalidContainerError("Could not find container with id {id}".format(id = new_variant_id)) - - self.setVariant(variant) - ## Get the variant container. # # \return The variant container. Should always be a valid container, but can be equal to the empty InstanceContainer. @@ -224,18 +135,6 @@ class CuraContainerStack(ContainerStack): def setDefinitionChanges(self, new_definition_changes: InstanceContainer) -> None: self.replaceContainer(_ContainerIndexes.DefinitionChanges, new_definition_changes) - ## Set the definition changes container by an ID. - # - # \param new_definition_changes_id The ID of the new definition changes container. - # - # \throws Exceptions.InvalidContainerError Raised when no container could be found with the specified ID. - def setDefinitionChangesById(self, new_definition_changes_id: str) -> None: - new_definition_changes = ContainerRegistry.getInstance().findInstanceContainers(id = new_definition_changes_id) - if new_definition_changes: - self.setDefinitionChanges(new_definition_changes[0]) - else: - raise Exceptions.InvalidContainerError("Could not find container with id {id}".format(id = new_definition_changes_id)) - ## Get the definition changes container. # # \return The definition changes container. Should always be a valid container, but can be equal to the empty InstanceContainer. @@ -249,18 +148,6 @@ class CuraContainerStack(ContainerStack): def setDefinition(self, new_definition: DefinitionContainerInterface) -> None: self.replaceContainer(_ContainerIndexes.Definition, new_definition) - ## Set the definition container by an ID. - # - # \param new_definition_id The ID of the new definition container. - # - # \throws Exceptions.InvalidContainerError Raised when no container could be found with the specified ID. - def setDefinitionById(self, new_definition_id: str) -> None: - new_definition = ContainerRegistry.getInstance().findDefinitionContainers(id = new_definition_id) - if new_definition: - self.setDefinition(new_definition[0]) - else: - raise Exceptions.InvalidContainerError("Could not find container with id {id}".format(id = new_definition_id)) - ## Get the definition container. # # \return The definition container. Should always be a valid container, but can be equal to the empty InstanceContainer. @@ -348,6 +235,10 @@ class CuraContainerStack(ContainerStack): elif container != self._empty_instance_container and container.getMetaDataEntry("type") != expected_type: raise Exceptions.InvalidContainerError("Cannot replace container at index {index} with a container that is not of {type} type, but {actual_type} type.".format(index = index, type = expected_type, actual_type = container.getMetaDataEntry("type"))) + current_container = self._containers[index] + if current_container.getId() == container.getId(): + return + super().replaceContainer(index, container, postpone_emit) ## Overridden from ContainerStack @@ -391,243 +282,6 @@ class CuraContainerStack(ContainerStack): self._containers = new_containers - ## Find the variant that should be used as "default" variant. - # - # This will search for variants that match the current definition and pick the preferred one, - # if specified by the machine definition. - # - # The following criteria are used to find the default variant: - # - If the machine definition does not have a metadata entry "has_variants" set to True, return None - # - The definition of the variant should be the same as the machine definition for this stack. - # - The container should have a metadata entry "type" with value "variant". - # - If the machine definition has a metadata entry "preferred_variant", filter the variant IDs based on that. - # - # \return The container that should be used as default, or None if nothing was found or the machine does not use variants. - # - # \note This method assumes the stack has a valid machine definition. - def findDefaultVariant(self) -> Optional[ContainerInterface]: - definition = self._getMachineDefinition() - # has_variants can be overridden in other containers and stacks. - # In the case of UM2, it is overridden in the GlobalStack - if not self.getMetaDataEntry("has_variants"): - # If the machine does not use variants, we should never set a variant. - return None - - # First add any variant. Later, overwrite with preference if the preference is valid. - variant = None - definition_id = self._findInstanceContainerDefinitionId(definition) - variants = ContainerRegistry.getInstance().findInstanceContainers(definition = definition_id, type = "variant") - if variants: - variant = variants[0] - - preferred_variant_id = definition.getMetaDataEntry("preferred_variant") - if preferred_variant_id: - preferred_variants = ContainerRegistry.getInstance().findInstanceContainers(id = preferred_variant_id, definition = definition_id, type = "variant") - if preferred_variants: - variant = preferred_variants[0] - else: - Logger.log("w", "The preferred variant \"{variant}\" of stack {stack} does not exist or is not a variant.", variant = preferred_variant_id, stack = self.id) - # And leave it at the default variant. - - if variant: - return variant - - Logger.log("w", "Could not find a valid default variant for stack {stack}", stack = self.id) - return None - - ## Find the global variant that should be used as "default". This is used for the buildplates. - # - # This will search for variants that match the current definition and pick the preferred one, - # if specified by the machine definition. - # - # The following criteria are used to find the default global variant: - # - If the machine definition does not have a metadata entry "has_variant_buildplates" set to True, return None - # - The definition of the variant should be the same as the machine definition for this stack. - # - The container should have a metadata entry "type" with value "variant" and "hardware_type" with value "buildplate". - # - If the machine definition has a metadata entry "preferred_variant_buildplate", filter the variant IDs based on that. - # - # \return The container that should be used as default, or None if nothing was found or the machine does not use variants. - # - # \note This method assumes the stack has a valid machine definition. - def findDefaultVariantBuildplate(self) -> Optional[ContainerInterface]: - definition = self._getMachineDefinition() - # has_variant_buildplates can be overridden in other containers and stacks. - # In the case of UM2, it is overridden in the GlobalStack - if not self.getMetaDataEntry("has_variant_buildplates"): - # If the machine does not use variants, we should never set a variant. - return None - - # First add any variant. Later, overwrite with preference if the preference is valid. - variant = None - definition_id = self._findInstanceContainerDefinitionId(definition) - variants = ContainerRegistry.getInstance().findInstanceContainers(definition = definition_id, type = "variant", hardware_type = "buildplate") - if variants: - variant = variants[0] - - preferred_variant_buildplate_id = definition.getMetaDataEntry("preferred_variant_buildplate") - if preferred_variant_buildplate_id: - preferred_variant_buildplates = ContainerRegistry.getInstance().findInstanceContainers(id = preferred_variant_buildplate_id, definition = definition_id, type = "variant") - if preferred_variant_buildplates: - variant = preferred_variant_buildplates[0] - else: - Logger.log("w", "The preferred variant buildplate \"{variant}\" of stack {stack} does not exist or is not a variant.", - variant = preferred_variant_buildplate_id, stack = self.id) - # And leave it at the default variant. - - if variant: - return variant - - Logger.log("w", "Could not find a valid default buildplate variant for stack {stack}", stack = self.id) - return None - - ## Find the material that should be used as "default" material. - # - # This will search for materials that match the current definition and pick the preferred one, - # if specified by the machine definition. - # - # The following criteria are used to find the default material: - # - If the machine definition does not have a metadata entry "has_materials" set to True, return None - # - If the machine definition has a metadata entry "has_machine_materials", the definition of the material should - # be the same as the machine definition for this stack. Otherwise, the definition should be "fdmprinter". - # - The container should have a metadata entry "type" with value "material". - # - The material should have an approximate diameter that matches the machine - # - If the machine definition has a metadata entry "has_variants" and set to True, the "variant" metadata entry of - # the material should be the same as the ID of the variant in the stack. Only applies if "has_machine_materials" is also True. - # - If the stack currently has a material set, try to find a material that matches the current material by name. - # - Otherwise, if the machine definition has a metadata entry "preferred_material", try to find a material that matches the specified ID. - # - # \return The container that should be used as default, or None if nothing was found or the machine does not use materials. - def findDefaultMaterial(self) -> Optional[ContainerInterface]: - definition = self._getMachineDefinition() - if not definition.getMetaDataEntry("has_materials"): - # Machine does not use materials, never try to set it. - return None - - search_criteria = {"type": "material"} - if definition.getMetaDataEntry("has_machine_materials"): - search_criteria["definition"] = self._findInstanceContainerDefinitionId(definition) - - if definition.getMetaDataEntry("has_variants"): - search_criteria["variant"] = self.variant.id - else: - search_criteria["definition"] = "fdmprinter" - - if self.material != self._empty_material: - search_criteria["name"] = self.material.name - else: - preferred_material = definition.getMetaDataEntry("preferred_material") - if preferred_material: - search_criteria["id"] = preferred_material - - approximate_material_diameter = str(round(self.getProperty("material_diameter", "value"))) - search_criteria["approximate_diameter"] = approximate_material_diameter - - materials = ContainerRegistry.getInstance().findInstanceContainers(**search_criteria) - if not materials: - Logger.log("w", "The preferred material \"{material}\" could not be found for stack {stack}", material = preferred_material, stack = self.id) - # We failed to find any materials matching the specified criteria, drop some specific criteria and try to find - # a material that sort-of matches what we want. - search_criteria.pop("variant", None) - search_criteria.pop("id", None) - search_criteria.pop("name", None) - materials = ContainerRegistry.getInstance().findInstanceContainers(**search_criteria) - - if not materials: - Logger.log("w", "Could not find a valid material for stack {stack}", stack = self.id) - return None - - for material in materials: - # Prefer a read-only material - if ContainerRegistry.getInstance().isReadOnly(material.getId()): - return material - - return materials[0] - - - ## Find the quality that should be used as "default" quality. - # - # This will search for qualities that match the current definition and pick the preferred one, - # if specified by the machine definition. - # - # \return The container that should be used as default, or None if nothing was found. - def findDefaultQuality(self) -> Optional[ContainerInterface]: - definition = self._getMachineDefinition() - registry = ContainerRegistry.getInstance() - material_container = self.material if self.material.getId() not in (self._empty_material.getId(), self._empty_instance_container.getId()) else None - - search_criteria = {"type": "quality"} - - if definition.getMetaDataEntry("has_machine_quality"): - search_criteria["definition"] = self._findInstanceContainerDefinitionId(definition) - - if definition.getMetaDataEntry("has_materials") and material_container: - search_criteria["material"] = material_container.id - else: - search_criteria["definition"] = "fdmprinter" - - if self.quality != self._empty_quality: - search_criteria["name"] = self.quality.name - else: - preferred_quality = definition.getMetaDataEntry("preferred_quality") - if preferred_quality: - search_criteria["id"] = preferred_quality - - containers = registry.findInstanceContainers(**search_criteria) - if containers: - return containers[0] - - if "material" in search_criteria: - # First check if we can solve our material not found problem by checking if we can find quality containers - # that are assigned to the parents of this material profile. - try: - inherited_files = material_container.getInheritedFiles() - except AttributeError: # Material_container does not support inheritance. - inherited_files = [] - - if inherited_files: - for inherited_file in inherited_files: - # Extract the ID from the path we used to load the file. - search_criteria["material"] = os.path.basename(inherited_file).split(".")[0] - containers = registry.findInstanceContainers(**search_criteria) - if containers: - return containers[0] - - # We still weren't able to find a quality for this specific material. - # Try to find qualities for a generic version of the material. - material_search_criteria = {"type": "material", "material": material_container.getMetaDataEntry("material"), "color_name": "Generic"} - if definition.getMetaDataEntry("has_machine_quality"): - if self.material != self._empty_instance_container: - material_search_criteria["definition"] = material_container.getMetaDataEntry("definition") - - if definition.getMetaDataEntry("has_variants"): - material_search_criteria["variant"] = material_container.getMetaDataEntry("variant") - else: - material_search_criteria["definition"] = self._findInstanceContainerDefinitionId(definition) - - if definition.getMetaDataEntry("has_variants") and self.variant != self._empty_instance_container: - material_search_criteria["variant"] = self.variant.id - else: - material_search_criteria["definition"] = "fdmprinter" - material_containers = registry.findInstanceContainersMetadata(**material_search_criteria) - # Try all materials to see if there is a quality profile available. - for material_container in material_containers: - search_criteria["material"] = material_container["id"] - - containers = registry.findInstanceContainers(**search_criteria) - if containers: - return containers[0] - - if "name" in search_criteria or "id" in search_criteria: - # If a quality by this name can not be found, try a wider set of search criteria - search_criteria.pop("name", None) - search_criteria.pop("id", None) - - containers = registry.findInstanceContainers(**search_criteria) - if containers: - return containers[0] - - return None - ## protected: # Helper to make sure we emit a PyQt signal on container changes. diff --git a/cura/Settings/CuraStackBuilder.py b/cura/Settings/CuraStackBuilder.py index 8d2d66ea87..a8234b9de9 100644 --- a/cura/Settings/CuraStackBuilder.py +++ b/cura/Settings/CuraStackBuilder.py @@ -1,15 +1,18 @@ -# Copyright (c) 2017 Ultimaker B.V. +# Copyright (c) 2018 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. -from UM.Logger import Logger +from typing import Optional +from UM.Logger import Logger from UM.Settings.Interfaces import DefinitionContainerInterface from UM.Settings.InstanceContainer import InstanceContainer from UM.Settings.ContainerRegistry import ContainerRegistry +from UM.Settings.SettingFunction import SettingFunction +from UM.Util import parseBool +from cura.Machines.VariantManager import VariantType from .GlobalStack import GlobalStack from .ExtruderStack import ExtruderStack -from typing import Optional ## Contains helper functions to create new machines. @@ -22,7 +25,13 @@ class CuraStackBuilder: # \return The new global stack or None if an error occurred. @classmethod def createMachine(cls, name: str, definition_id: str) -> Optional[GlobalStack]: + from cura.CuraApplication import CuraApplication + application = CuraApplication.getInstance() + variant_manager = application.getVariantManager() + material_manager = application.getMaterialManager() + quality_manager = application.getQualityManager() registry = ContainerRegistry.getInstance() + definitions = registry.findDefinitionContainers(id = definition_id) if not definitions: Logger.log("w", "Definition {definition} was not found!", definition = definition_id) @@ -30,7 +39,21 @@ class CuraStackBuilder: machine_definition = definitions[0] - generated_name = registry.createUniqueName("machine", "", name, machine_definition.name) + # 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() + + # get variant container for extruders + extruder_variant_container = application.empty_variant_container + extruder_variant_node = variant_manager.getDefaultVariantNode(machine_definition, VariantType.NOZZLE) + extruder_variant_name = None + if extruder_variant_node: + extruder_variant_container = extruder_variant_node.getContainer() + extruder_variant_name = extruder_variant_container.getName() + + generated_name = registry.createUniqueName("machine", "", name, machine_definition.getName()) # Make sure the new name does not collide with any definition or (quality) profile # createUniqueName() only looks at other stacks, but not at definitions or quality profiles # Note that we don't go for uniqueName() immediately because that function matches with ignore_case set to true @@ -40,47 +63,59 @@ class CuraStackBuilder: new_global_stack = cls.createGlobalStack( new_stack_id = generated_name, definition = machine_definition, - quality = "default", - material = "default", - variant = "default", + variant_container = global_variant_container, + material_container = application.empty_material_container, + quality_container = application.empty_quality_container, ) - new_global_stack.setName(generated_name) - extruder_definition = registry.findDefinitionContainers(machine = machine_definition.getId()) + # get material container for extruders + material_container = application.empty_material_container + material_node = material_manager.getDefaultMaterial(new_global_stack, extruder_variant_name) + if material_node: + material_container = material_node.getContainer() - if not extruder_definition: - # create extruder stack for single extrusion machines that have no separate extruder definition files - extruder_definition = registry.findDefinitionContainers(id = "fdmextruder")[0] - new_extruder_id = registry.uniqueName(machine_definition.getName() + " " + extruder_definition.id) + # Create ExtruderStacks + extruder_dict = machine_definition.getMetaDataEntry("machine_extruder_trains") + + for position, extruder_definition_id in extruder_dict.items(): + # Sanity check: make sure that the positions in the extruder definitions are same as in the machine + # definition + extruder_definition = registry.findDefinitionContainers(id = extruder_definition_id)[0] + position_in_extruder_def = extruder_definition.getMetaDataEntry("position") + if position_in_extruder_def != position: + raise RuntimeError("Extruder position [%s] defined in extruder definition [%s] is not the same as in machine definition [%s] position [%s]" % + (position_in_extruder_def, extruder_definition_id, definition_id, position)) + + new_extruder_id = registry.uniqueName(extruder_definition_id) new_extruder = cls.createExtruderStack( new_extruder_id, - definition = extruder_definition, - machine_definition_id = machine_definition.getId(), - quality = "default", - material = "default", - variant = "default", - next_stack = new_global_stack + extruder_definition = extruder_definition, + machine_definition_id = definition_id, + position = position, + variant_container = extruder_variant_container, + material_container = material_container, + quality_container = application.empty_quality_container, + global_stack = new_global_stack, ) + new_extruder.setNextStack(new_global_stack) new_global_stack.addExtruder(new_extruder) - else: - # create extruder stack for each found extruder definition - for extruder_definition in registry.findDefinitionContainers(machine = machine_definition.id): - position = extruder_definition.getMetaDataEntry("position", None) - if not position: - Logger.log("w", "Extruder definition %s specifies no position metadata entry.", extruder_definition.id) + registry.addContainer(new_extruder) - new_extruder_id = registry.uniqueName(extruder_definition.id) - new_extruder = cls.createExtruderStack( - new_extruder_id, - definition = extruder_definition, - machine_definition_id = machine_definition.getId(), - quality = "default", - material = "default", - variant = "default", - next_stack = new_global_stack - ) - new_global_stack.addExtruder(new_extruder) + preferred_quality_type = machine_definition.getMetaDataEntry("preferred_quality_type") + quality_group_dict = quality_manager.getQualityGroups(new_global_stack) + quality_group = quality_group_dict.get(preferred_quality_type) + + new_global_stack.quality = quality_group.node_for_global.getContainer() + for position, extruder_stack in new_global_stack.extruders.items(): + if position in quality_group.nodes_for_extruders: + 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) return new_global_stack @@ -94,50 +129,32 @@ class CuraStackBuilder: # # \return A new Global stack instance with the specified parameters. @classmethod - def createExtruderStack(cls, new_stack_id: str, definition: DefinitionContainerInterface, machine_definition_id: str, **kwargs) -> ExtruderStack: - stack = ExtruderStack(new_stack_id) - stack.setName(definition.getName()) - stack.setDefinition(definition) - stack.addMetaDataEntry("position", definition.getMetaDataEntry("position")) - - if "next_stack" in kwargs: - # Add stacks before containers are added, since they may trigger a setting update. - stack.setNextStack(kwargs["next_stack"]) - - user_container = InstanceContainer(new_stack_id + "_user") - user_container.addMetaDataEntry("type", "user") - user_container.addMetaDataEntry("extruder", new_stack_id) + def createExtruderStack(cls, new_stack_id: str, extruder_definition: DefinitionContainerInterface, machine_definition_id: str, + position: int, + variant_container, material_container, quality_container, global_stack) -> ExtruderStack: from cura.CuraApplication import CuraApplication - user_container.addMetaDataEntry("setting_version", CuraApplication.SettingVersion) - user_container.setDefinition(machine_definition_id) + application = CuraApplication.getInstance() - stack.setUserChanges(user_container) + stack = ExtruderStack(new_stack_id, parent = global_stack) + stack.setName(extruder_definition.getName()) + stack.setDefinition(extruder_definition) - # Important! The order here matters, because that allows the stack to - # assume the material and variant have already been set. - if "definition_changes" in kwargs: - stack.setDefinitionChangesById(kwargs["definition_changes"]) - else: - stack.setDefinitionChanges(cls.createDefinitionChangesContainer(stack, new_stack_id + "_settings")) + stack.addMetaDataEntry("position", position) - if "variant" in kwargs: - stack.setVariantById(kwargs["variant"]) + user_container = cls.createUserChangesContainer(new_stack_id + "_user", machine_definition_id, new_stack_id, + is_global_stack = False) - if "material" in kwargs: - stack.setMaterialById(kwargs["material"]) - - if "quality" in kwargs: - stack.setQualityById(kwargs["quality"]) - - if "quality_changes" in kwargs: - stack.setQualityChangesById(kwargs["quality_changes"]) + stack.definitionChanges = cls.createDefinitionChangesContainer(stack, new_stack_id + "_settings") + stack.variant = variant_container + stack.material = material_container + stack.quality = quality_container + stack.qualityChanges = application.empty_quality_changes_container + stack.userChanges = user_container # Only add the created containers to the registry after we have set all the other # properties. This makes the create operation more transactional, since any problems # setting properties will not result in incomplete containers being added. - registry = ContainerRegistry.getInstance() - registry.addContainer(stack) - registry.addContainer(user_container) + ContainerRegistry.getInstance().addContainer(user_container) return stack @@ -149,46 +166,48 @@ class CuraStackBuilder: # # \return A new Global stack instance with the specified parameters. @classmethod - def createGlobalStack(cls, new_stack_id: str, definition: DefinitionContainerInterface, **kwargs) -> GlobalStack: + def createGlobalStack(cls, new_stack_id: str, definition: DefinitionContainerInterface, + variant_container, material_container, quality_container) -> GlobalStack: + from cura.CuraApplication import CuraApplication + application = CuraApplication.getInstance() + stack = GlobalStack(new_stack_id) stack.setDefinition(definition) - user_container = InstanceContainer(new_stack_id + "_user") - user_container.addMetaDataEntry("type", "user") - user_container.addMetaDataEntry("machine", new_stack_id) - from cura.CuraApplication import CuraApplication - user_container.addMetaDataEntry("setting_version", CuraApplication.SettingVersion) - user_container.setDefinition(definition.getId()) + # Create user container + user_container = cls.createUserChangesContainer(new_stack_id + "_user", definition.getId(), new_stack_id, + is_global_stack = True) - stack.setUserChanges(user_container) + stack.definitionChanges = cls.createDefinitionChangesContainer(stack, new_stack_id + "_settings") + stack.variant = variant_container + stack.material = material_container + stack.quality = quality_container + stack.qualityChanges = application.empty_quality_changes_container + stack.userChanges = user_container - # Important! The order here matters, because that allows the stack to - # assume the material and variant have already been set. - if "definition_changes" in kwargs: - stack.setDefinitionChangesById(kwargs["definition_changes"]) - else: - stack.setDefinitionChanges(cls.createDefinitionChangesContainer(stack, new_stack_id + "_settings")) - - if "variant" in kwargs: - stack.setVariantById(kwargs["variant"]) - - if "material" in kwargs: - stack.setMaterialById(kwargs["material"]) - - if "quality" in kwargs: - stack.setQualityById(kwargs["quality"]) - - if "quality_changes" in kwargs: - stack.setQualityChangesById(kwargs["quality_changes"]) - - registry = ContainerRegistry.getInstance() - registry.addContainer(stack) - registry.addContainer(user_container) + ContainerRegistry.getInstance().addContainer(user_container) return stack @classmethod - def createDefinitionChangesContainer(cls, container_stack, container_name, container_index = None): + def createUserChangesContainer(cls, container_name: str, definition_id: str, stack_id: str, + is_global_stack: bool) -> "InstanceContainer": + from cura.CuraApplication import CuraApplication + + unique_container_name = ContainerRegistry.getInstance().uniqueName(container_name) + + container = InstanceContainer(unique_container_name) + container.setDefinition(definition_id) + container.addMetaDataEntry("type", "user") + container.addMetaDataEntry("setting_version", CuraApplication.SettingVersion) + + metadata_key_to_add = "machine" if is_global_stack else "extruder" + container.addMetaDataEntry(metadata_key_to_add, stack_id) + + return container + + @classmethod + def createDefinitionChangesContainer(cls, container_stack, container_name): from cura.CuraApplication import CuraApplication unique_container_name = ContainerRegistry.getInstance().uniqueName(container_name) diff --git a/cura/Settings/ExtruderManager.py b/cura/Settings/ExtruderManager.py index b5f9a35914..2b422ec406 100755 --- a/cura/Settings/ExtruderManager.py +++ b/cura/Settings/ExtruderManager.py @@ -12,6 +12,7 @@ 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.SettingFunction import SettingFunction +from UM.Settings.SettingInstance import SettingInstance from UM.Settings.ContainerStack import ContainerStack from UM.Settings.PropertyEvaluationContext import PropertyEvaluationContext from typing import Optional, List, TYPE_CHECKING, Union @@ -30,28 +31,22 @@ class ExtruderManager(QObject): def __init__(self, parent = None): super().__init__(parent) + self._application = Application.getInstance() + self._extruder_trains = {} # Per machine, a dictionary of extruder container stack IDs. Only for separately defined extruders. self._active_extruder_index = -1 # Indicates the index of the active extruder stack. -1 means no active extruder stack self._selected_object_extruders = [] - self._global_container_stack_definition_id = None self._addCurrentMachineExtruders() - Application.getInstance().globalContainerStackChanged.connect(self.__globalContainerStackChanged) + #Application.getInstance().globalContainerStackChanged.connect(self._globalContainerStackChanged) Selection.selectionChanged.connect(self.resetSelectedObjectExtruders) ## Signal to notify other components when the list of extruders for a machine definition changes. extrudersChanged = pyqtSignal(QVariant) - ## Signal to notify other components when the global container stack is switched to a definition - # that has different extruders than the previous global container stack - globalContainerStackDefinitionChanged = pyqtSignal() - ## Notify when the user switches the currently active extruder. activeExtruderChanged = pyqtSignal() - ## The signal notifies subscribers if extruders are added - extrudersAdded = pyqtSignal() - ## Gets the unique identifier of the currently active extruder stack. # # The currently active extruder stack is the stack that is currently being @@ -184,6 +179,7 @@ class ExtruderManager(QObject): self._selected_object_extruders = [] self.selectedObjectExtrudersChanged.emit() + @pyqtSlot(result = QObject) def getActiveExtruderStack(self) -> Optional["ExtruderStack"]: global_container_stack = Application.getInstance().getGlobalContainerStack() @@ -245,6 +241,13 @@ class ExtruderManager(QObject): result.append(extruder_stack.getProperty(setting_key, prop)) return result + def extruderValueWithDefault(self, value): + machine_manager = self._application.getMachineManager() + if value == "-1": + return machine_manager.defaultExtruderPosition + else: + return value + ## Gets the extruder stacks that are actually being used at the moment. # # An extruder stack is being used if it is the extruder to print any mesh @@ -256,7 +259,7 @@ class ExtruderManager(QObject): # # \return A list of extruder stacks. def getUsedExtruderStacks(self) -> List["ContainerStack"]: - global_stack = Application.getInstance().getGlobalContainerStack() + global_stack = self._application.getGlobalContainerStack() container_registry = ContainerRegistry.getInstance() used_extruder_stack_ids = set() @@ -306,16 +309,19 @@ class ExtruderManager(QObject): # Check support extruders if support_enabled: - used_extruder_stack_ids.add(self.extruderIds[str(global_stack.getProperty("support_infill_extruder_nr", "value"))]) - used_extruder_stack_ids.add(self.extruderIds[str(global_stack.getProperty("support_extruder_nr_layer_0", "value"))]) + used_extruder_stack_ids.add(self.extruderIds[self.extruderValueWithDefault(str(global_stack.getProperty("support_infill_extruder_nr", "value")))]) + used_extruder_stack_ids.add(self.extruderIds[self.extruderValueWithDefault(str(global_stack.getProperty("support_extruder_nr_layer_0", "value")))]) if support_bottom_enabled: - used_extruder_stack_ids.add(self.extruderIds[str(global_stack.getProperty("support_bottom_extruder_nr", "value"))]) + used_extruder_stack_ids.add(self.extruderIds[self.extruderValueWithDefault(str(global_stack.getProperty("support_bottom_extruder_nr", "value")))]) if support_roof_enabled: - used_extruder_stack_ids.add(self.extruderIds[str(global_stack.getProperty("support_roof_extruder_nr", "value"))]) + used_extruder_stack_ids.add(self.extruderIds[self.extruderValueWithDefault(str(global_stack.getProperty("support_roof_extruder_nr", "value")))]) # The platform adhesion extruder. Not used if using none. if global_stack.getProperty("adhesion_type", "value") != "none": - used_extruder_stack_ids.add(self.extruderIds[str(global_stack.getProperty("adhesion_extruder_nr", "value"))]) + extruder_nr = str(global_stack.getProperty("adhesion_extruder_nr", "value")) + if extruder_nr == "-1": + extruder_nr = Application.getInstance().getMachineManager().defaultExtruderPosition + used_extruder_stack_ids.add(self.extruderIds[extruder_nr]) try: return [container_registry.findContainerStacks(id = stack_id)[0] for stack_id in used_extruder_stack_ids] @@ -371,12 +377,7 @@ class ExtruderManager(QObject): return result[:machine_extruder_count] - def __globalContainerStackChanged(self) -> None: - global_container_stack = Application.getInstance().getGlobalContainerStack() - if global_container_stack and global_container_stack.getBottom() and global_container_stack.getBottom().getId() != self._global_container_stack_definition_id: - self._global_container_stack_definition_id = global_container_stack.getBottom().getId() - self.globalContainerStackDefinitionChanged.emit() - + def _globalContainerStackChanged(self) -> None: # If the global container changed, the machine changed and might have extruders that were not registered yet self._addCurrentMachineExtruders() @@ -384,7 +385,7 @@ class ExtruderManager(QObject): ## Adds the extruders of the currently active machine. def _addCurrentMachineExtruders(self) -> None: - global_stack = Application.getInstance().getGlobalContainerStack() + global_stack = self._application.getGlobalContainerStack() extruders_changed = False if global_stack: @@ -404,14 +405,82 @@ class ExtruderManager(QObject): self._extruder_trains[global_stack_id][extruder_train.getMetaDataEntry("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 + self._fixMaterialDiameterAndNozzleSize(global_stack, extruder_trains) if extruders_changed: self.extrudersChanged.emit(global_stack_id) - self.extrudersAdded.emit() self.setActiveExtruderIndex(0) + # + # This function tries to fix the problem with per-extruder-settable nozzle size and material diameter problems + # in early versions (3.0 - 3.2.1). + # + # In earlier versions, "nozzle size" and "material diameter" are only applicable to the complete machine, so all + # extruders share the same values. In this case, "nozzle size" and "material diameter" are saved in the + # GlobalStack's DefinitionChanges container. + # + # Later, we could have different "nozzle size" for each extruder, but "material diameter" could only be set for + # the entire machine. In this case, "nozzle size" should be saved in each ExtruderStack's DefinitionChanges, but + # "material diameter" still remains in the GlobalStack's DefinitionChanges. + # + # Lateer, both "nozzle size" and "material diameter" are settable per-extruder, and both settings should be saved + # in the ExtruderStack's DefinitionChanges. + # + # There were some bugs in upgrade so the data weren't saved correct as described above. This function tries fix + # this. + # + # One more thing is about material diameter and single-extrusion machines. Most single-extrusion machines don't + # specifically define their extruder definition, so they reuse "fdmextruder", but for those machines, they may + # define "material diameter = 1.75" in their machine definition, but in "fdmextruder", it's still "2.85". This + # causes a problem with incorrect default values. + # + # This is also fixed here in this way: If no "material diameter" is specified, it will look for the default value + # in both the Extruder's definition and the Global's definition. If 2 values don't match, we will use the value + # from the Global definition by setting it in the Extruder's DefinitionChanges container. + # + def _fixMaterialDiameterAndNozzleSize(self, global_stack, extruder_stack_list): + keys_to_copy = ["material_diameter", "machine_nozzle_size"] # these will be copied over to all extruders + + extruder_positions_to_update = set() + for extruder_stack in extruder_stack_list: + for key in keys_to_copy: + # Only copy the value when this extruder doesn't have the value. + if extruder_stack.definitionChanges.hasProperty(key, "value"): + continue + + setting_value_in_global_def_changes = global_stack.definitionChanges.getProperty(key, "value") + setting_value_in_global_def = global_stack.definition.getProperty(key, "value") + setting_value = setting_value_in_global_def + if setting_value_in_global_def_changes is not None: + setting_value = setting_value_in_global_def_changes + if setting_value == extruder_stack.definition.getProperty(key, "value"): + continue + + setting_definition = global_stack.getSettingDefinition(key) + new_instance = SettingInstance(setting_definition, extruder_stack.definitionChanges) + new_instance.setProperty("value", setting_value) + new_instance.resetState() # Ensure that the state is not seen as a user state. + extruder_stack.definitionChanges.addInstance(new_instance) + extruder_stack.definitionChanges.setDirty(True) + + # Make sure the material diameter is up to date for the extruder stack. + if key == "material_diameter": + position = int(extruder_stack.getMetaDataEntry("position")) + extruder_positions_to_update.add(position) + + # We have to remove those settings here because we know that those values have been copied to all + # the extruders at this point. + for key in keys_to_copy: + if global_stack.definitionChanges.hasProperty(key, "value"): + global_stack.definitionChanges.removeInstance(key, postpone_emit = True) + + # Update material diameter for extruders + for position in extruder_positions_to_update: + self.updateMaterialForDiameter(position, global_stack = global_stack) + ## Get all extruder values for a certain setting. # # This is exposed to SettingFunction so it can be used in value functions. @@ -426,6 +495,8 @@ class ExtruderManager(QObject): result = [] for extruder in ExtruderManager.getInstance().getMachineExtruders(global_stack.getId()): + if not extruder.isEnabled: + continue # only include values from extruders that are "active" for the current machine instance if int(extruder.getMetaDataEntry("position")) >= global_stack.getProperty("machine_extruder_count", "value"): continue @@ -496,6 +567,96 @@ class ExtruderManager(QObject): def getInstanceExtruderValues(self, key): return ExtruderManager.getExtruderValues(key) + ## Updates the material container to a material that matches the material diameter set for the printer + def updateMaterialForDiameter(self, extruder_position: int, global_stack = None): + if not global_stack: + global_stack = Application.getInstance().getGlobalContainerStack() + if not global_stack: + return + + if not global_stack.getMetaDataEntry("has_materials", False): + return + + extruder_stack = global_stack.extruders[str(extruder_position)] + + material_diameter = extruder_stack.material.getProperty("material_diameter", "value") + if not material_diameter: + # in case of "empty" material + material_diameter = 0 + + material_approximate_diameter = str(round(material_diameter)) + material_diameter = extruder_stack.definitionChanges.getProperty("material_diameter", "value") + setting_provider = extruder_stack + if not material_diameter: + if extruder_stack.definition.hasProperty("material_diameter", "value"): + material_diameter = extruder_stack.definition.getProperty("material_diameter", "value") + else: + material_diameter = global_stack.definition.getProperty("material_diameter", "value") + setting_provider = global_stack + + if isinstance(material_diameter, SettingFunction): + material_diameter = material_diameter(setting_provider) + + machine_approximate_diameter = str(round(material_diameter)) + + if material_approximate_diameter != machine_approximate_diameter: + Logger.log("i", "The the currently active material(s) do not match the diameter set for the printer. Finding alternatives.") + + if global_stack.getMetaDataEntry("has_machine_materials", False): + materials_definition = global_stack.definition.getId() + has_material_variants = global_stack.getMetaDataEntry("has_variants", False) + else: + materials_definition = "fdmprinter" + has_material_variants = False + + old_material = extruder_stack.material + search_criteria = { + "type": "material", + "approximate_diameter": machine_approximate_diameter, + "material": old_material.getMetaDataEntry("material", "value"), + "brand": old_material.getMetaDataEntry("brand", "value"), + "supplier": old_material.getMetaDataEntry("supplier", "value"), + "color_name": old_material.getMetaDataEntry("color_name", "value"), + "definition": materials_definition + } + if has_material_variants: + search_criteria["variant"] = extruder_stack.variant.getId() + + container_registry = Application.getInstance().getContainerRegistry() + empty_material = container_registry.findInstanceContainers(id = "empty_material")[0] + + if old_material == empty_material: + search_criteria.pop("material", None) + search_criteria.pop("supplier", None) + search_criteria.pop("brand", None) + search_criteria.pop("definition", None) + search_criteria["id"] = extruder_stack.getMetaDataEntry("preferred_material") + + materials = container_registry.findInstanceContainers(**search_criteria) + if not materials: + # Same material with new diameter is not found, search for generic version of the same material type + search_criteria.pop("supplier", None) + search_criteria.pop("brand", None) + search_criteria["color_name"] = "Generic" + materials = container_registry.findInstanceContainers(**search_criteria) + if not materials: + # Generic material with new diameter is not found, search for preferred material + search_criteria.pop("color_name", None) + search_criteria.pop("material", None) + search_criteria["id"] = extruder_stack.getMetaDataEntry("preferred_material") + materials = container_registry.findInstanceContainers(**search_criteria) + if not materials: + # Preferred material with new diameter is not found, search for any material + search_criteria.pop("id", None) + materials = container_registry.findInstanceContainers(**search_criteria) + if not materials: + # Just use empty material as a final fallback + materials = [empty_material] + + Logger.log("i", "Selecting new material: %s", materials[0].getId()) + + extruder_stack.material = materials[0] + ## Get the value for a setting from a specific extruder. # # This is exposed to SettingFunction to use in value functions. @@ -507,6 +668,8 @@ class ExtruderManager(QObject): # global stack if not found. @staticmethod def getExtruderValue(extruder_index, key): + if extruder_index == -1: + extruder_index = int(Application.getInstance().getMachineManager().defaultExtruderPosition) extruder = ExtruderManager.getInstance().getExtruderStack(extruder_index) if extruder: diff --git a/cura/Settings/ExtruderStack.py b/cura/Settings/ExtruderStack.py index 6dffeda6c2..5cdcba68b0 100644 --- a/cura/Settings/ExtruderStack.py +++ b/cura/Settings/ExtruderStack.py @@ -3,25 +3,23 @@ from typing import Any, TYPE_CHECKING, Optional +from PyQt5.QtCore import pyqtProperty, pyqtSignal + from UM.Decorators import override from UM.MimeTypeDatabase import MimeType, MimeTypeDatabase from UM.Settings.ContainerStack import ContainerStack from UM.Settings.ContainerRegistry import ContainerRegistry from UM.Settings.Interfaces import ContainerInterface, PropertyEvaluationContext -from UM.Settings.SettingInstance import SettingInstance +from UM.Util import parseBool from . import Exceptions -from .CuraContainerStack import CuraContainerStack +from .CuraContainerStack import CuraContainerStack, _ContainerIndexes from .ExtruderManager import ExtruderManager if TYPE_CHECKING: from cura.Settings.GlobalStack import GlobalStack -_EXTRUDER_SPECIFIC_DEFINITION_CHANGES_SETTINGS = ["machine_nozzle_size", - "material_diameter"] - - ## Represents an Extruder and its related containers. # # @@ -33,11 +31,13 @@ class ExtruderStack(CuraContainerStack): self.propertiesChanged.connect(self._onPropertiesChanged) + enabledChanged = pyqtSignal() + ## Overridden from ContainerStack # # This will set the next stack and ensure that we register this stack as an extruder. @override(ContainerStack) - def setNextStack(self, stack: ContainerStack) -> None: + def setNextStack(self, stack: CuraContainerStack) -> None: super().setNextStack(stack) stack.addExtruder(self) self.addMetaDataEntry("machine", stack.id) @@ -45,37 +45,47 @@ class ExtruderStack(CuraContainerStack): # For backward compatibility: Register the extruder with the Extruder Manager ExtruderManager.getInstance().registerExtruder(self, stack.id) - # Now each machine will have at least one extruder stack. If this is the first extruder, the extruder-specific - # settings such as nozzle size and material diameter should be moved from the machine's definition_changes to - # the this extruder's definition_changes. - # - # We do this here because it is tooooo expansive to do it in the version upgrade: During the version upgrade, - # when we are upgrading a definition_changes container file, there is NO guarantee that other files such as - # machine an extruder stack files are upgraded before this, so we cannot read those files assuming they are in - # the latest format. - if self.getMetaDataEntry("position") == "0": - for key in _EXTRUDER_SPECIFIC_DEFINITION_CHANGES_SETTINGS: - setting_value = stack.definitionChanges.getProperty(key, "value") - if setting_value is None: - continue - - setting_definition = stack.getSettingDefinition(key) - new_instance = SettingInstance(setting_definition, self.definitionChanges) - new_instance.setProperty("value", setting_value) - new_instance.resetState() # Ensure that the state is not seen as a user state. - self.definitionChanges.addInstance(new_instance) - self.definitionChanges.setDirty(True) - - stack.definitionChanges.removeInstance(key, postpone_emit = True) - @override(ContainerStack) def getNextStack(self) -> Optional["GlobalStack"]: return super().getNextStack() + def setEnabled(self, enabled): + if "enabled" not in self._metadata: + self.addMetaDataEntry("enabled", "True") + self.setMetaDataEntry("enabled", str(enabled)) + self.enabledChanged.emit() + + @pyqtProperty(bool, notify = enabledChanged) + def isEnabled(self): + return parseBool(self.getMetaDataEntry("enabled", "True")) + @classmethod def getLoadingPriority(cls) -> int: return 3 + ## Return the filament diameter that the machine requires. + # + # If the machine has no requirement for the diameter, -1 is returned. + # \return The filament diameter for the printer + @property + def materialDiameter(self) -> float: + context = PropertyEvaluationContext(self) + context.context["evaluate_from_container_index"] = _ContainerIndexes.Variant + + return self.getProperty("material_diameter", "value", context = context) + + ## Return the approximate filament diameter that the machine requires. + # + # The approximate material diameter is the material diameter rounded to + # the nearest millimetre. + # + # If the machine has no requirement for the diameter, -1 is returned. + # + # \return The approximate filament diameter for the printer + @pyqtProperty(float) + def approximateMaterialDiameter(self) -> float: + return round(float(self.materialDiameter)) + ## Overridden from ContainerStack # # It will perform a few extra checks when trying to get properties. @@ -144,11 +154,6 @@ class ExtruderStack(CuraContainerStack): if has_global_dependencies: self.getNextStack().propertiesChanged.emit(key, properties) - def findDefaultVariant(self): - # The default variant is defined in the machine stack and/or definition, so use the machine stack to find - # the default variant. - return self.getNextStack().findDefaultVariant() - extruder_stack_mime = MimeType( name = "application/x-cura-extruderstack", diff --git a/cura/Settings/ExtrudersModel.py b/cura/Settings/ExtrudersModel.py index 5139b9885d..4ee5ab3c3b 100644 --- a/cura/Settings/ExtrudersModel.py +++ b/cura/Settings/ExtrudersModel.py @@ -1,7 +1,7 @@ # Copyright (c) 2017 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. -from PyQt5.QtCore import Qt, pyqtSignal, pyqtProperty, QTimer +from PyQt5.QtCore import Qt, pyqtSignal, pyqtSlot, pyqtProperty, QTimer from typing import Iterable from UM.i18n import i18nCatalog @@ -24,6 +24,8 @@ class ExtrudersModel(UM.Qt.ListModel.ListModel): ## Human-readable name of the extruder. NameRole = Qt.UserRole + 2 + ## Is the extruder enabled? + EnabledRole = Qt.UserRole + 9 ## Colour of the material loaded in the extruder. ColorRole = Qt.UserRole + 3 @@ -43,6 +45,7 @@ class ExtrudersModel(UM.Qt.ListModel.ListModel): # The variant of the extruder. VariantRole = Qt.UserRole + 7 + StackRole = Qt.UserRole + 8 ## List of colours to display if there is no material or the material has no known # colour. @@ -57,11 +60,13 @@ class ExtrudersModel(UM.Qt.ListModel.ListModel): self.addRoleName(self.IdRole, "id") self.addRoleName(self.NameRole, "name") + self.addRoleName(self.EnabledRole, "enabled") self.addRoleName(self.ColorRole, "color") self.addRoleName(self.IndexRole, "index") self.addRoleName(self.DefinitionRole, "definition") self.addRoleName(self.MaterialRole, "material") self.addRoleName(self.VariantRole, "variant") + self.addRoleName(self.StackRole, "stack") self._update_extruder_timer = QTimer() self._update_extruder_timer.setInterval(100) @@ -183,11 +188,13 @@ class ExtrudersModel(UM.Qt.ListModel.ListModel): item = { "id": extruder.getId(), "name": extruder.getName(), + "enabled": extruder.isEnabled, "color": color, "index": position, "definition": extruder.getBottom().getId(), "material": extruder.material.getName() if extruder.material else "", "variant": extruder.variant.getName() if extruder.variant else "", # e.g. print core + "stack": extruder, } items.append(item) diff --git a/cura/Settings/GlobalStack.py b/cura/Settings/GlobalStack.py index dae1c103b4..ae1f1370ed 100755 --- a/cura/Settings/GlobalStack.py +++ b/cura/Settings/GlobalStack.py @@ -1,6 +1,8 @@ # Copyright (c) 2017 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. +from collections import defaultdict +import threading from typing import Any, Dict, Optional from PyQt5.QtCore import pyqtProperty @@ -30,7 +32,8 @@ class GlobalStack(CuraContainerStack): # This property is used to track which settings we are calculating the "resolve" for # and if so, to bypass the resolve to prevent an infinite recursion that would occur # if the resolve function tried to access the same property it is a resolve for. - self._resolving_settings = set() + # Per thread we have our own resolving_settings, or strange things sometimes occur. + self._resolving_settings = defaultdict(set) # keys are thread names ## Get the list of extruders of this stack. # @@ -91,9 +94,10 @@ class GlobalStack(CuraContainerStack): # Handle the "resolve" property. if self._shouldResolve(key, property_name, context): - self._resolving_settings.add(key) + current_thread = threading.current_thread() + self._resolving_settings[current_thread.name].add(key) resolve = super().getProperty(key, "resolve", context) - self._resolving_settings.remove(key) + self._resolving_settings[current_thread.name].remove(key) if resolve is not None: return resolve @@ -121,21 +125,6 @@ class GlobalStack(CuraContainerStack): def setNextStack(self, next_stack: ContainerStack) -> None: raise Exceptions.InvalidOperationError("Global stack cannot have a next stack!") - ## Gets the approximate filament diameter that the machine requires. - # - # The approximate material diameter is the material diameter rounded to - # the nearest millimetre. - # - # If the machine has no requirement for the diameter, -1 is returned. - # - # \return The approximate filament diameter for the printer, as a string. - @pyqtProperty(str) - def approximateMaterialDiameter(self) -> str: - material_diameter = self.definition.getProperty("material_diameter", "value") - if material_diameter is None: - return "-1" - return str(round(float(material_diameter))) #Round, then convert back to string. - # protected: # Determine whether or not we should try to get the "resolve" property instead of the @@ -145,7 +134,8 @@ class GlobalStack(CuraContainerStack): # Do not try to resolve anything but the "value" property return False - if key in self._resolving_settings: + current_thread = threading.current_thread() + if key in self._resolving_settings[current_thread.name]: # To prevent infinite recursion, if getProperty is called with the same key as # we are already trying to resolve, we should not try to resolve again. Since # this can happen multiple times when trying to resolve a value, we need to diff --git a/cura/Settings/MachineManager.py b/cura/Settings/MachineManager.py index 309f27b6d7..c79d352dcb 100755 --- a/cura/Settings/MachineManager.py +++ b/cura/Settings/MachineManager.py @@ -1,30 +1,34 @@ # Copyright (c) 2017 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. +import collections +import time #Type hinting. -from typing import Union, List, Dict +from typing import List, Dict, TYPE_CHECKING, Optional + +from UM.Scene.Iterator.DepthFirstIterator import DepthFirstIterator from UM.Signal import Signal from PyQt5.QtCore import QObject, pyqtProperty, pyqtSignal, QTimer +import UM.FlameProfiler from UM.FlameProfiler import pyqtSlot -from PyQt5.QtWidgets import QMessageBox from UM import Util from UM.Application import Application from UM.Preferences import Preferences from UM.Logger import Logger from UM.Message import Message -from UM.Decorators import deprecated from UM.Settings.ContainerRegistry import ContainerRegistry -from UM.Settings.ContainerStack import ContainerStack -from UM.Settings.InstanceContainer import InstanceContainer from UM.Settings.SettingFunction import SettingFunction from UM.Signal import postponeSignals, CompressTechnique -import UM.FlameProfiler -from cura.QualityManager import QualityManager +from cura.Machines.QualityManager import getMachineDefinitionIDForQualitySearch +from cura.Machines.VariantManager import VariantType from cura.PrinterOutputDevice import PrinterOutputDevice +from cura.PrinterOutput.ConfigurationModel import ConfigurationModel +from cura.PrinterOutput.ExtruderConfigurationModel import ExtruderConfigurationModel +from cura.PrinterOutput.MaterialOutputModel import MaterialOutputModel from cura.Settings.ExtruderManager import ExtruderManager from .CuraStackBuilder import CuraStackBuilder @@ -32,49 +36,47 @@ from .CuraStackBuilder import CuraStackBuilder from UM.i18n import i18nCatalog catalog = i18nCatalog("cura") -from cura.Settings.ProfilesModel import ProfilesModel -from typing import TYPE_CHECKING, Optional - if TYPE_CHECKING: - from UM.Settings.DefinitionContainer import DefinitionContainer from cura.Settings.CuraContainerStack import CuraContainerStack from cura.Settings.GlobalStack import GlobalStack class MachineManager(QObject): + def __init__(self, parent = None): super().__init__(parent) self._active_container_stack = None # type: CuraContainerStack self._global_container_stack = None # type: GlobalStack - # Used to store the new containers until after confirming the dialog - self._new_variant_container = None - self._new_buildplate_container = None - self._new_material_container = None - self._new_quality_containers = [] + self._current_root_material_id = {} + self._current_quality_group = None + self._current_quality_changes_group = None - self._error_check_timer = QTimer() - self._error_check_timer.setInterval(250) - self._error_check_timer.setSingleShot(True) - self._error_check_timer.timeout.connect(self._updateStacksHaveErrors) + self._default_extruder_position = "0" # to be updated when extruders are switched on and off + + self.machine_extruder_material_update_dict = collections.defaultdict(list) self._instance_container_timer = QTimer() self._instance_container_timer.setInterval(250) self._instance_container_timer.setSingleShot(True) self._instance_container_timer.timeout.connect(self.__emitChangedSignals) - Application.getInstance().globalContainerStackChanged.connect(self._onGlobalContainerChanged) - Application.getInstance().getContainerRegistry().containerLoadComplete.connect(self._onInstanceContainersChanged) - self._connected_to_profiles_model = False + self._application = Application.getInstance() + self._application.globalContainerStackChanged.connect(self._onGlobalContainerChanged) + self._application.getContainerRegistry().containerLoadComplete.connect(self._onInstanceContainersChanged) ## When the global container is changed, active material probably needs to be updated. self.globalContainerChanged.connect(self.activeMaterialChanged) self.globalContainerChanged.connect(self.activeVariantChanged) self.globalContainerChanged.connect(self.activeQualityChanged) - self._stacks_have_errors = None + self.globalContainerChanged.connect(self.activeQualityChangesGroupChanged) + self.globalContainerChanged.connect(self.activeQualityGroupChanged) + self._stacks_have_errors = None # type:Optional[bool] + + self._empty_definition_changes_container = ContainerRegistry.getInstance().findContainers(id = "empty_definition_changes")[0] self._empty_variant_container = ContainerRegistry.getInstance().findContainers(id = "empty_variant")[0] self._empty_material_container = ContainerRegistry.getInstance().findContainers(id = "empty_material")[0] self._empty_quality_container = ContainerRegistry.getInstance().findContainers(id = "empty_quality")[0] @@ -94,28 +96,22 @@ class MachineManager(QObject): ExtruderManager.getInstance().activeExtruderChanged.connect(self.activeStackChanged) self.activeStackChanged.connect(self.activeStackValueChanged) - # when a user closed dialog check if any delayed material or variant changes need to be applied - Application.getInstance().onDiscardOrKeepProfileChangesClosed.connect(self._executeDelayedActiveContainerStackChanges) - Preferences.getInstance().addPreference("cura/active_machine", "") self._global_event_keys = set() - active_machine_id = Preferences.getInstance().getValue("cura/active_machine") - self._printer_output_devices = [] Application.getInstance().getOutputDeviceManager().outputDevicesChanged.connect(self._onOutputDevicesChanged) # There might already be some output devices by the time the signal is connected self._onOutputDevicesChanged() - if active_machine_id != "" and ContainerRegistry.getInstance().findContainerStacksMetadata(id = active_machine_id): - # An active machine was saved, so restore it. - self.setActiveMachine(active_machine_id) - # Make sure _active_container_stack is properly initiated - ExtruderManager.getInstance().setActiveExtruderIndex(0) + self._current_printer_configuration = ConfigurationModel() # Indicates the current configuration setup in this printer + self.activeMaterialChanged.connect(self._onCurrentConfigurationChanged) + self.activeVariantChanged.connect(self._onCurrentConfigurationChanged) + # Force to compute the current configuration + self._onCurrentConfigurationChanged() - self._auto_materials_changed = {} - self._auto_hotends_changed = {} + self._application.callLater(self.setInitialActiveMachine) self._material_incompatible_message = Message(catalog.i18nc("@info:status", "The selected material is incompatible with the selected machine or configuration."), @@ -125,11 +121,27 @@ class MachineManager(QObject): if containers: containers[0].nameChanged.connect(self._onMaterialNameChanged) + self._material_manager = self._application.getMaterialManager() + self._variant_manager = self._application.getVariantManager() + self._quality_manager = self._application.getQualityManager() + + # 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) + + activeQualityGroupChanged = pyqtSignal() + activeQualityChangesGroupChanged = pyqtSignal() + globalContainerChanged = pyqtSignal() # Emitted whenever the global stack is changed (ie: when changing between printers, changing a global profile, but not when changing a value) 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() globalValueChanged = pyqtSignal() # Emitted whenever a value inside global container is changed. activeStackValueChanged = pyqtSignal() # Emitted whenever a value inside the active stack is changed. @@ -139,32 +151,58 @@ class MachineManager(QObject): blurSettings = pyqtSignal() # Emitted to force fields in the advanced sidebar to un-focus, so they update properly outputDevicesChanged = pyqtSignal() + currentConfigurationChanged = pyqtSignal() # Emitted every time the current configurations of the machine changes + + rootMaterialChanged = pyqtSignal() + + def setInitialActiveMachine(self): + active_machine_id = Preferences.getInstance().getValue("cura/active_machine") + if active_machine_id != "" and ContainerRegistry.getInstance().findContainerStacksMetadata(id = active_machine_id): + # An active machine was saved, so restore it. + self.setActiveMachine(active_machine_id) + # Make sure _active_container_stack is properly initiated + ExtruderManager.getInstance().setActiveExtruderIndex(0) def _onOutputDevicesChanged(self) -> None: - for printer_output_device in self._printer_output_devices: - printer_output_device.hotendIdChanged.disconnect(self._onHotendIdChanged) - printer_output_device.materialIdChanged.disconnect(self._onMaterialIdChanged) - self._printer_output_devices = [] for printer_output_device in Application.getInstance().getOutputDeviceManager().getOutputDevices(): if isinstance(printer_output_device, PrinterOutputDevice): self._printer_output_devices.append(printer_output_device) - printer_output_device.hotendIdChanged.connect(self._onHotendIdChanged) - printer_output_device.materialIdChanged.connect(self._onMaterialIdChanged) self.outputDevicesChanged.emit() - @property - def newVariant(self): - return self._new_variant_container + @pyqtProperty(QObject, notify = currentConfigurationChanged) + def currentConfiguration(self): + return self._current_printer_configuration - @property - def newBuildplate(self): - return self._new_buildplate_container + def _onCurrentConfigurationChanged(self) -> None: + if not self._global_container_stack: + return - @property - def newMaterial(self): - return self._new_material_container + # 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() + # For compare just the GUID is needed at this moment + mat_type = extruder.material.getMetaDataEntry("material") if extruder.material != self._empty_material_container else None + mat_guid = extruder.material.getMetaDataEntry("GUID") if extruder.material != self._empty_material_container else None + mat_color = extruder.material.getMetaDataEntry("color_name") if extruder.material != self._empty_material_container else None + mat_brand = extruder.material.getMetaDataEntry("brand") if extruder.material != self._empty_material_container else None + mat_name = extruder.material.getMetaDataEntry("name") if extruder.material != self._empty_material_container else None + material_model = MaterialOutputModel(mat_guid, mat_type, mat_color, mat_brand, mat_name) + + extruder_configuration.position = int(extruder.getMetaDataEntry("position")) + extruder_configuration.material = material_model + extruder_configuration.hotendID = extruder.variant.getName() if extruder.variant != self._empty_variant_container else None + self._current_printer_configuration.extruderConfigurations.append(extruder_configuration) + + self._current_printer_configuration.buildplateConfiguration = self._global_container_stack.getProperty("machine_buildplate_type", "value") if self._global_container_stack.variant != self._empty_variant_container else None + self.currentConfigurationChanged.emit() + + @pyqtSlot(QObject, result = bool) + def matchesConfiguration(self, configuration: ConfigurationModel) -> bool: + return self._current_printer_configuration == configuration @pyqtProperty("QVariantList", notify = outputDevicesChanged) def printerOutputDevices(self): @@ -174,115 +212,7 @@ class MachineManager(QObject): def totalNumberOfSettings(self) -> int: return len(ContainerRegistry.getInstance().findDefinitionContainers(id = "fdmprinter")[0].getAllKeys()) - def _onHotendIdChanged(self): - if not self._global_container_stack or not self._printer_output_devices: - return - - active_printer_model = self._printer_output_devices[0].activePrinter - if not active_printer_model: - return - - change_found = False - machine_id = self.activeMachineId - extruders = sorted(ExtruderManager.getInstance().getMachineExtruders(machine_id), - key=lambda k: k.getMetaDataEntry("position")) - - for extruder_model, extruder in zip(active_printer_model.extruders, extruders): - containers = ContainerRegistry.getInstance().findInstanceContainersMetadata(type="variant", - definition=self._global_container_stack.definition.getId(), - name=extruder_model.hotendID) - if containers: - # The hotend ID is known. - machine_id = self.activeMachineId - if extruder.variant.getName() != extruder_model.hotendID: - change_found = True - self._auto_hotends_changed[extruder.getMetaDataEntry("position")] = containers[0]["id"] - - if change_found: - # A change was found, let the output device handle this. - self._printer_output_devices[0].materialHotendChangedMessage(self._materialHotendChangedCallback) - - def _onMaterialIdChanged(self): - if not self._global_container_stack or not self._printer_output_devices: - return - - active_printer_model = self._printer_output_devices[0].activePrinter - if not active_printer_model: - return - - change_found = False - machine_id = self.activeMachineId - extruders = sorted(ExtruderManager.getInstance().getMachineExtruders(machine_id), - key=lambda k: k.getMetaDataEntry("position")) - - for extruder_model, extruder in zip(active_printer_model.extruders, extruders): - if extruder_model.activeMaterial is None: - continue - containers = ContainerRegistry.getInstance().findInstanceContainersMetadata(type="material", - definition=self._global_container_stack.definition.getId(), - GUID=extruder_model.activeMaterial.guid) - if containers: - # The material is known. - if extruder.material.getMetaDataEntry("GUID") != extruder_model.activeMaterial.guid: - change_found = True - if self._global_container_stack.definition.getMetaDataEntry("has_variants") and extruder.variant: - variant_id = self.getQualityVariantId(self._global_container_stack.definition, - extruder.variant) - for container in containers: - if container.get("variant") == variant_id: - self._auto_materials_changed[extruder.getMetaDataEntry("position")] = container["id"] - break - else: - # Just use the first result we found. - self._auto_materials_changed[extruder.getMetaDataEntry("position")] = containers[0]["id"] - if change_found: - # A change was found, let the output device handle this. - self._printer_output_devices[0].materialHotendChangedMessage(self._materialHotendChangedCallback) - - def _materialHotendChangedCallback(self, button): - if button == QMessageBox.No: - self._auto_materials_changed = {} - self._auto_hotends_changed = {} - return - self._autoUpdateMaterials() - self._autoUpdateHotends() - - def _autoUpdateMaterials(self): - extruder_manager = ExtruderManager.getInstance() - for position in self._auto_materials_changed: - material_id = self._auto_materials_changed[position] - old_index = extruder_manager.activeExtruderIndex - - if old_index != int(position): - extruder_manager.setActiveExtruderIndex(int(position)) - else: - old_index = None - - Logger.log("d", "Setting material of hotend %s to %s" % (position, material_id)) - self.setActiveMaterial(material_id) - - if old_index is not None: - extruder_manager.setActiveExtruderIndex(old_index) - self._auto_materials_changed = {} #Processed all of them now. - - def _autoUpdateHotends(self): - extruder_manager = ExtruderManager.getInstance() - for position in self._auto_hotends_changed: - hotend_id = self._auto_hotends_changed[position] - old_index = extruder_manager.activeExtruderIndex - - if old_index != int(position): - extruder_manager.setActiveExtruderIndex(int(position)) - else: - old_index = None - Logger.log("d", "Setting hotend variant of hotend %s to %s" % (position, hotend_id)) - self.setActiveVariant(hotend_id) - - if old_index is not None: - extruder_manager.setActiveExtruderIndex(old_index) - self._auto_hotends_changed = {} # Processed all of them now. - - def _onGlobalContainerChanged(self): + def _onGlobalContainerChanged(self) -> None: if self._global_container_stack: try: self._global_container_stack.nameChanged.disconnect(self._onMachineNameChanged) @@ -301,9 +231,11 @@ class MachineManager(QObject): extruder_stack.propertyChanged.disconnect(self._onPropertyChanged) extruder_stack.containersChanged.disconnect(self._onInstanceContainersChanged) - # update the local global container stack reference + # Update the local global container stack reference self._global_container_stack = Application.getInstance().getGlobalContainerStack() - + if self._global_container_stack: + self.updateDefaultExtruder() + self.updateNumberExtrudersEnabled() self.globalContainerChanged.emit() # after switching the global stack we reconnect all the signals and set the variant and material references @@ -330,70 +262,94 @@ class MachineManager(QObject): extruder_stack.propertyChanged.connect(self._onPropertyChanged) extruder_stack.containersChanged.connect(self._onInstanceContainersChanged) - self._error_check_timer.start() + if self._global_container_stack.getId() in self.machine_extruder_material_update_dict: + for func in self.machine_extruder_material_update_dict[self._global_container_stack.getId()]: + Application.getInstance().callLater(func) + del self.machine_extruder_material_update_dict[self._global_container_stack.getId()] - ## Update self._stacks_valid according to _checkStacksForErrors and emit if change. - def _updateStacksHaveErrors(self): - old_stacks_have_errors = self._stacks_have_errors - self._stacks_have_errors = self._checkStacksHaveErrors() - if old_stacks_have_errors != self._stacks_have_errors: - self.stacksValidationChanged.emit() - Application.getInstance().stacksValidationFinished.emit() + self.activeQualityGroupChanged.emit() - def _onActiveExtruderStackChanged(self): + def _onActiveExtruderStackChanged(self) -> None: self.blurSettings.emit() # Ensure no-one has focus. old_active_container_stack = self._active_container_stack self._active_container_stack = ExtruderManager.getInstance().getActiveExtruderStack() - self._error_check_timer.start() - if old_active_container_stack != self._active_container_stack: # Many methods and properties related to the active quality actually depend # on _active_container_stack. If it changes, then the properties change. self.activeQualityChanged.emit() - def __emitChangedSignals(self): + def __emitChangedSignals(self) -> None: self.activeQualityChanged.emit() self.activeVariantChanged.emit() self.activeMaterialChanged.emit() - self._updateStacksHaveErrors() # Prevents unwanted re-slices after changing machine - self._error_check_timer.start() - def _onProfilesModelChanged(self, *args): - self.__emitChangedSignals() - - def _onInstanceContainersChanged(self, container): - # This should not trigger the ProfilesModel to be created, or there will be an infinite recursion - if not self._connected_to_profiles_model and ProfilesModel.hasInstance(): - # This triggers updating the qualityModel in SidebarSimple whenever ProfilesModel is updated - Logger.log("d", "Connecting profiles model...") - ProfilesModel.getInstance().itemsChanged.connect(self._onProfilesModelChanged) - self._connected_to_profiles_model = True + self.rootMaterialChanged.emit() + def _onInstanceContainersChanged(self, container) -> None: self._instance_container_timer.start() - def _onPropertyChanged(self, key: str, property_name: str): + def _onPropertyChanged(self, key: str, property_name: str) -> None: if property_name == "value": # Notify UI items, such as the "changed" star in profile pull down menu. self.activeStackValueChanged.emit() - elif property_name == "validationState": - self._error_check_timer.start() + ## 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): + 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 + 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() + + if global_quality_changes.getId() != "empty_quality_changes": + quality_changes_groups = self._application._quality_manager.getQualityChangesGroups(global_stack) + if global_quality_changes_name in quality_changes_groups: + new_quality_changes_group = quality_changes_groups[global_quality_changes_name] + self._setQualityChangesGroup(new_quality_changes_group) + else: + quality_groups = self._application._quality_manager.getQualityGroups(global_stack) + if quality_type not in quality_groups: + Logger.log("w", "Quality type [%s] not found in available qualities [%s]", quality_type, str(quality_groups.values())) + self._setEmptyQuality() + return + new_quality_group = quality_groups[quality_type] + self._setQualityGroup(new_quality_group, empty_quality_changes = True) @pyqtSlot(str) def setActiveMachine(self, stack_id: str) -> None: self.blurSettings.emit() # Ensure no-one has focus. - self._cancelDelayedActiveContainerStackChanges() container_registry = ContainerRegistry.getInstance() containers = container_registry.findContainerStacks(id = stack_id) if containers: - Application.getInstance().setGlobalContainerStack(containers[0]) + global_stack = containers[0] + ExtruderManager.getInstance().setActiveExtruderIndex(0) # Switch to first extruder + self._global_container_stack = global_stack + Application.getInstance().setGlobalContainerStack(global_stack) + ExtruderManager.getInstance()._globalContainerStackChanged() + self._initMachineState(containers[0]) + self._onGlobalContainerChanged() self.__emitChangedSignals() + ## Given a definition id, return the machine with this id. + # Optional: add a list of keys and values to filter the list of machines with the given definition id + # \param definition_id \type{str} definition id that needs to look for + # \param metadata_filter \type{dict} list of metadata keys and values used for filtering + @staticmethod + def getMachine(definition_id: str, metadata_filter: Dict[str, str] = None) -> Optional["GlobalStack"]: + machines = ContainerRegistry.getInstance().findContainerStacks(type = "machine", **metadata_filter) + for machine in machines: + if machine.definition.getId() == definition_id: + return machine + return None + @pyqtSlot(str, str) def addMachine(self, name: str, definition_id: str) -> None: new_stack = CuraStackBuilder.createMachine(name, definition_id) @@ -404,27 +360,30 @@ class MachineManager(QObject): Logger.log("w", "Failed creating a new machine!") def _checkStacksHaveErrors(self) -> bool: + time_start = time.time() if self._global_container_stack is None: #No active machine. return False if self._global_container_stack.hasErrors(): + Logger.log("d", "Checking global stack for errors took %0.2f s and we found an error" % (time.time() - time_start)) return True - for stack in ExtruderManager.getInstance().getMachineExtruders(self._global_container_stack.getId()): + + # Not a very pretty solution, but the extruder manager doesn't really know how many extruders there are + machine_extruder_count = self._global_container_stack.getProperty("machine_extruder_count", "value") + extruder_stacks = ExtruderManager.getInstance().getMachineExtruders(self._global_container_stack.getId()) + count = 1 # we start with the global stack + for stack in extruder_stacks: + md = stack.getMetaData() + if "position" in md and int(md["position"]) >= machine_extruder_count: + continue + count += 1 if stack.hasErrors(): + Logger.log("d", "Checking %s stacks for errors took %.2f s and we found an error in stack [%s]" % (count, time.time() - time_start, str(stack))) return True + Logger.log("d", "Checking %s stacks for errors took %.2f s" % (count, time.time() - time_start)) return False - ## Remove all instances from the top instanceContainer (effectively removing all user-changed settings) - @pyqtSlot() - def clearUserSettings(self): - if not self._active_container_stack: - return - - self.blurSettings.emit() - user_settings = self._active_container_stack.getTop() - user_settings.clear() - ## Check if the global_container has instances in the user container @pyqtProperty(bool, notify = activeStackValueChanged) def hasUserSettings(self) -> bool: @@ -455,7 +414,7 @@ class MachineManager(QObject): ## Delete a user setting from the global stack and all extruder stacks. # \param key \type{str} the name of the key to delete @pyqtSlot(str) - def clearUserSettingAllCurrentStacks(self, key: str): + def clearUserSettingAllCurrentStacks(self, key: str) -> None: if not self._global_container_stack: return @@ -490,25 +449,34 @@ class MachineManager(QObject): def stacksHaveErrors(self) -> bool: return bool(self._stacks_have_errors) - @pyqtProperty(str, notify = activeStackChanged) - def activeUserProfileId(self) -> str: - if self._active_container_stack: - return self._active_container_stack.getTop().getId() - + @pyqtProperty(str, notify = globalContainerChanged) + def activeMachineDefinitionName(self) -> str: + if self._global_container_stack: + return self._global_container_stack.definition.getName() return "" @pyqtProperty(str, notify = globalContainerChanged) def activeMachineName(self) -> str: if self._global_container_stack: return self._global_container_stack.getName() - return "" @pyqtProperty(str, notify = globalContainerChanged) def activeMachineId(self) -> str: if self._global_container_stack: return self._global_container_stack.getId() + return "" + @pyqtProperty(str, notify = outputDevicesChanged) + def activeMachineNetworkKey(self) -> str: + if self._global_container_stack: + return self._global_container_stack.getMetaDataEntry("um_network_key") + return "" + + @pyqtProperty(str, notify = outputDevicesChanged) + def activeMachineNetworkGroupName(self) -> str: + if self._global_container_stack: + return self._global_container_stack.getMetaDataEntry("connect_group_name") return "" @pyqtProperty(QObject, notify = globalContainerChanged) @@ -519,42 +487,11 @@ class MachineManager(QObject): def activeStackId(self) -> str: if self._active_container_stack: return self._active_container_stack.getId() - return "" - @pyqtProperty(str, notify = activeMaterialChanged) - def activeMaterialName(self) -> str: - if self._active_container_stack: - material = self._active_container_stack.material - if material: - return material.getName() - - return "" - - @pyqtProperty("QVariantList", notify=activeVariantChanged) - def activeVariantNames(self) -> List[str]: - result = [] - - active_stacks = ExtruderManager.getInstance().getActiveGlobalAndExtruderStacks() - if active_stacks is not None: - for stack in active_stacks: - variant_container = stack.variant - if variant_container and variant_container != self._empty_variant_container: - result.append(variant_container.getName()) - - return result - - @pyqtProperty("QVariantList", notify = activeMaterialChanged) - def activeMaterialNames(self) -> List[str]: - result = [] - - active_stacks = ExtruderManager.getInstance().getActiveGlobalAndExtruderStacks() - if active_stacks is not None: - for stack in active_stacks: - material_container = stack.material - if material_container and material_container != self._empty_material_container: - result.append(material_container.getName()) - return result + @pyqtProperty(QObject, notify = activeStackChanged) + def activeStack(self) -> Optional["ExtruderStack"]: + return self._active_container_stack @pyqtProperty(str, notify=activeMaterialChanged) def activeMaterialId(self) -> str: @@ -562,24 +499,8 @@ class MachineManager(QObject): material = self._active_container_stack.material if material: return material.getId() - return "" - @pyqtProperty("QVariantMap", notify = activeVariantChanged) - def allActiveVariantIds(self) -> Dict[str, str]: - result = {} - - active_stacks = ExtruderManager.getInstance().getActiveExtruderStacks() - if active_stacks is not None: #If we have a global stack. - for stack in active_stacks: - variant_container = stack.variant - if not variant_container: - continue - - result[stack.getId()] = variant_container.getId() - - return result - ## 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) # @@ -604,106 +525,45 @@ class MachineManager(QObject): # # \return The layer height of the currently active quality profile. If # there is no quality profile, this returns 0. - @pyqtProperty(float, notify=activeQualityChanged) + @pyqtProperty(float, notify = activeQualityGroupChanged) def activeQualityLayerHeight(self) -> float: if not self._global_container_stack: return 0 - - quality_changes = self._global_container_stack.qualityChanges - if quality_changes: - value = self._global_container_stack.getRawProperty("layer_height", "value", skip_until_container = quality_changes.getId()) + 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 - quality = self._global_container_stack.quality - if quality: - value = self._global_container_stack.getRawProperty("layer_height", "value", skip_until_container = quality.getId()) + 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 - return 0 # No quality profile. - - ## Get the Material ID associated with the currently active material - # \returns MaterialID (string) if found, empty string otherwise - @pyqtProperty(str, notify=activeQualityChanged) - def activeQualityMaterialId(self) -> str: - if self._active_container_stack: - quality = self._active_container_stack.quality - if quality: - material_id = quality.getMetaDataEntry("material") - if material_id: - # if the currently active machine inherits its qualities from a different machine - # definition, make sure to return a material that is relevant to that machine definition - definition_id = self.activeDefinitionId - quality_definition_id = self.activeQualityDefinitionId - if definition_id != quality_definition_id: - material_id = material_id.replace(definition_id, quality_definition_id, 1) - - return material_id - return "" - - @pyqtProperty(str, notify=activeQualityChanged) - def activeQualityName(self) -> str: - if self._active_container_stack and self._global_container_stack: - quality = self._global_container_stack.qualityChanges - if quality and not isinstance(quality, type(self._empty_quality_changes_container)): - return quality.getName() - quality = self._active_container_stack.quality - if quality: - return quality.getName() - return "" - - @pyqtProperty(str, notify=activeQualityChanged) - def activeQualityId(self) -> str: - if self._active_container_stack: - quality = self._active_container_stack.quality - if isinstance(quality, type(self._empty_quality_container)): - return "" - quality_changes = self._active_container_stack.qualityChanges - if quality and quality_changes: - if isinstance(quality_changes, type(self._empty_quality_changes_container)): - # It's a built-in profile - return quality.getId() - else: - # Custom profile - return quality_changes.getId() - return "" - - @pyqtProperty(str, notify=activeQualityChanged) - def globalQualityId(self) -> str: - if self._global_container_stack: - quality = self._global_container_stack.qualityChanges - if quality and not isinstance(quality, type(self._empty_quality_changes_container)): - return quality.getId() - quality = self._global_container_stack.quality - if quality: - return quality.getId() - return "" - - @pyqtProperty(str, notify=activeVariantChanged) - def globalVariantId(self) -> str: + @pyqtProperty(str, notify = activeVariantChanged) + def globalVariantName(self) -> str: if self._global_container_stack: variant = self._global_container_stack.variant if variant and not isinstance(variant, type(self._empty_variant_container)): - return variant.getId() + return variant.getName() return "" - @pyqtProperty(str, notify = activeQualityChanged) + @pyqtProperty(str, notify = activeQualityGroupChanged) def activeQualityType(self) -> str: + quality_type = "" if self._active_container_stack: - quality = self._active_container_stack.quality - if quality: - return quality.getMetaDataEntry("quality_type") - return "" + if self._current_quality_group: + quality_type = self._current_quality_group.quality_type + return quality_type - @pyqtProperty(bool, notify = activeQualityChanged) + @pyqtProperty(bool, notify = activeQualityGroupChanged) def isActiveQualitySupported(self) -> bool: - if self._active_container_stack: - quality = self._active_container_stack.quality - if quality: - return Util.parseBool(quality.getMetaDataEntry("supported", True)) - return False + is_supported = False + if self._global_container_stack: + if self._current_quality_group: + is_supported = self._current_quality_group.is_available + return is_supported ## Returns whether there is anything unsupported in the current set-up. # @@ -722,29 +582,6 @@ class MachineManager(QObject): return False return True - ## Get the Quality ID associated with the currently active extruder - # Note that this only returns the "quality", not the "quality_changes" - # \returns QualityID (string) if found, empty string otherwise - # \sa activeQualityId() - # \todo Ideally, this method would be named activeQualityId(), and the other one - # would be named something like activeQualityOrQualityChanges() for consistency - @pyqtProperty(str, notify = activeQualityChanged) - def activeQualityContainerId(self) -> str: - # We're using the active stack instead of the global stack in case the list of qualities differs per extruder - if self._global_container_stack: - quality = self._active_container_stack.quality - if quality: - return quality.getId() - return "" - - @pyqtProperty(str, notify = activeQualityChanged) - def activeQualityChangesId(self) -> str: - if self._active_container_stack: - quality_changes = self._active_container_stack.qualityChanges - if quality_changes and not isinstance(quality_changes, type(self._empty_quality_changes_container)): - return quality_changes.getId() - return "" - ## Check if a container is read_only @pyqtSlot(str, result = bool) def isReadOnly(self, container_id: str) -> bool: @@ -761,389 +598,6 @@ class MachineManager(QObject): if extruder_stack != self._active_container_stack and extruder_stack.getProperty(key, "value") != new_value: extruder_stack.userChanges.setProperty(key, "value", new_value) # TODO: nested property access, should be improved - ## Set the active material by switching out a container - # Depending on from/to material+current variant, a quality profile is chosen and set. - @pyqtSlot(str) - def setActiveMaterial(self, material_id: str, always_discard_changes = False): - with postponeSignals(*self._getContainerChangedSignals(), compress = CompressTechnique.CompressPerParameterValue): - containers = ContainerRegistry.getInstance().findInstanceContainers(id = material_id) - if not containers or not self._active_container_stack: - return - material_container = containers[0] - - Logger.log("d", "Attempting to change the active material to %s", material_id) - - old_material = self._active_container_stack.material - old_quality = self._active_container_stack.quality - old_quality_type = None - if old_quality and old_quality.getId() != self._empty_quality_container.getId(): - old_quality_type = old_quality.getMetaDataEntry("quality_type") - old_quality_changes = self._active_container_stack.qualityChanges - if not old_material: - Logger.log("w", "While trying to set the active material, no material was found to replace it.") - return - - if old_quality_changes and isinstance(old_quality_changes, type(self._empty_quality_changes_container)): - old_quality_changes = None - - self.blurSettings.emit() - old_material.nameChanged.disconnect(self._onMaterialNameChanged) - - self._new_material_container = material_container # self._active_container_stack will be updated with a delay - Logger.log("d", "Active material changed") - - material_container.nameChanged.connect(self._onMaterialNameChanged) - - if material_container.getMetaDataEntry("compatible") == False: - self._material_incompatible_message.show() - else: - self._material_incompatible_message.hide() - - quality_type = None - new_quality_id = None - if old_quality: - new_quality_id = old_quality.getId() - quality_type = old_quality.getMetaDataEntry("quality_type") - if old_quality_changes: - quality_type = old_quality_changes.getMetaDataEntry("quality_type") - new_quality_id = old_quality_changes.getId() - - global_stack = Application.getInstance().getGlobalContainerStack() - if global_stack: - quality_manager = QualityManager.getInstance() - - candidate_quality = None - if quality_type: - candidate_quality = quality_manager.findQualityByQualityType(quality_type, - quality_manager.getWholeMachineDefinition(global_stack.definition), - [material_container.getMetaData()]) - - if not candidate_quality or candidate_quality.getId() == self._empty_quality_changes_container: - Logger.log("d", "Attempting to find fallback quality") - # Fall back to a quality (which must be compatible with all other extruders) - new_qualities = quality_manager.findAllUsableQualitiesForMachineAndExtruders( - self._global_container_stack, ExtruderManager.getInstance().getExtruderStacks()) - - quality_types = sorted([q.getMetaDataEntry("quality_type") for q in new_qualities], reverse = True) - quality_type_to_use = None - if quality_types: - # try to use the same quality as before, otherwise the first one in the quality_types - quality_type_to_use = quality_types[0] - if old_quality_type is not None and old_quality_type in quality_type_to_use: - quality_type_to_use = old_quality_type - - new_quality = None - for q in new_qualities: - if quality_type_to_use is not None and q.getMetaDataEntry("quality_type") == quality_type_to_use: - new_quality = q - break - - if new_quality is not None: - new_quality_id = new_quality.getId() # Just pick the first available one - else: - Logger.log("w", "No quality profile found that matches the current machine and extruders.") - else: - if not old_quality_changes: - new_quality_id = candidate_quality.getId() - - self.setActiveQuality(new_quality_id, always_discard_changes = always_discard_changes) - - @pyqtSlot(str) - def setActiveVariant(self, variant_id: str, always_discard_changes = False): - with postponeSignals(*self._getContainerChangedSignals(), compress = CompressTechnique.CompressPerParameterValue): - containers = ContainerRegistry.getInstance().findInstanceContainers(id = variant_id) - if not containers or not self._active_container_stack: - return - Logger.log("d", "Attempting to change the active variant to %s", variant_id) - old_variant = self._active_container_stack.variant - old_material = self._active_container_stack.material - if old_variant: - self.blurSettings.emit() - self._new_variant_container = containers[0] # self._active_container_stack will be updated with a delay - Logger.log("d", "Active variant changed to {active_variant_id}".format(active_variant_id = containers[0].getId())) - preferred_material_name = None - if old_material: - preferred_material_name = old_material.getName() - preferred_material_id = self._updateMaterialContainer(self._global_container_stack.definition, self._global_container_stack, containers[0], preferred_material_name).id - self.setActiveMaterial(preferred_material_id, always_discard_changes = always_discard_changes) - else: - Logger.log("w", "While trying to set the active variant, no variant was found to replace.") - - @pyqtSlot(str) - def setActiveVariantBuildplate(self, variant_buildplate_id: str): - with postponeSignals(*self._getContainerChangedSignals(), compress = CompressTechnique.CompressPerParameterValue): - containers = ContainerRegistry.getInstance().findInstanceContainers(id = variant_buildplate_id) - if not containers or not self._global_container_stack: - return - Logger.log("d", "Attempting to change the active buildplate to %s", variant_buildplate_id) - old_buildplate = self._global_container_stack.variant - if old_buildplate: - self.blurSettings.emit() - self._new_buildplate_container = containers[0] # self._active_container_stack will be updated with a delay - Logger.log("d", "Active buildplate changed to {active_variant_buildplate_id}".format(active_variant_buildplate_id = containers[0].getId())) - - # Force set the active quality as it is so the values are updated - self.setActiveMaterial(self._active_container_stack.material.getId()) - else: - Logger.log("w", "While trying to set the active buildplate, no buildplate was found to replace.") - - ## set the active quality - # \param quality_id The quality_id of either a quality or a quality_changes - @pyqtSlot(str) - def setActiveQuality(self, quality_id: str, always_discard_changes = False): - with postponeSignals(*self._getContainerChangedSignals(), compress = CompressTechnique.CompressPerParameterValue): - self.blurSettings.emit() - - Logger.log("d", "Attempting to change the active quality to %s", quality_id) - - containers = ContainerRegistry.getInstance().findInstanceContainersMetadata(id = quality_id) - if not containers or not self._global_container_stack: - return - - # Quality profile come in two flavours: type=quality and type=quality_changes - # If we found a quality_changes profile then look up its parent quality profile. - container_type = containers[0].get("type") - quality_name = containers[0]["name"] - quality_type = containers[0].get("quality_type") - - # Get quality container and optionally the quality_changes container. - if container_type == "quality": - new_quality_settings_list = self.determineQualityAndQualityChangesForQualityType(quality_type) - elif container_type == "quality_changes": - new_quality_settings_list = self._determineQualityAndQualityChangesForQualityChanges(quality_name) - else: - Logger.log("e", "Tried to set quality to a container that is not of the right type: {container_id}".format(container_id = containers[0]["id"])) - return - - # Check if it was at all possible to find new settings - if new_quality_settings_list is None: - return - - # check if any of the stacks have a not supported profile - # if that is the case, all stacks should have a not supported state (otherwise it will show quality_type normal) - has_not_supported_quality = False - - # check all stacks for not supported - for setting_info in new_quality_settings_list: - if setting_info["quality"].getMetaDataEntry("quality_type") == "not_supported": - has_not_supported_quality = True - break - - # set all stacks to not supported if that's the case - if has_not_supported_quality: - for setting_info in new_quality_settings_list: - setting_info["quality"] = self._empty_quality_container - - self._new_quality_containers.clear() - - # store the upcoming quality profile changes per stack for later execution - # this prevents re-slicing before the user has made a choice in the discard or keep dialog - # (see _executeDelayedActiveContainerStackChanges) - for setting_info in new_quality_settings_list: - stack = setting_info["stack"] - stack_quality = setting_info["quality"] - stack_quality_changes = setting_info["quality_changes"] - - self._new_quality_containers.append({ - "stack": stack, - "quality": stack_quality, - "quality_changes": stack_quality_changes - }) - - Logger.log("d", "Active quality changed") - - # show the keep/discard dialog after the containers have been switched. Otherwise, the default values on - # the dialog will be the those before the switching. - self._executeDelayedActiveContainerStackChanges() - - if self.hasUserSettings and Preferences.getInstance().getValue("cura/active_mode") == 1 and not always_discard_changes: - Application.getInstance().discardOrKeepProfileChanges() - - ## Used to update material and variant in the active container stack with a delay. - # This delay prevents the stack from triggering a lot of signals (eventually resulting in slicing) - # before the user decided to keep or discard any of their changes using the dialog. - # The Application.onDiscardOrKeepProfileChangesClosed signal triggers this method. - def _executeDelayedActiveContainerStackChanges(self): - - Logger.log("d", "Applying configuration changes...") - - if self._new_variant_container is not None: - self._active_container_stack.variant = self._new_variant_container - self._new_variant_container = None - - if self._new_buildplate_container is not None: - self._global_container_stack.variant = self._new_buildplate_container - self._new_buildplate_container = None - - if self._new_material_container is not None: - self._active_container_stack.material = self._new_material_container - self._new_material_container = None - - # apply the new quality to all stacks - if self._new_quality_containers: - for new_quality in self._new_quality_containers: - self._replaceQualityOrQualityChangesInStack(new_quality["stack"], new_quality["quality"], postpone_emit = True) - self._replaceQualityOrQualityChangesInStack(new_quality["stack"], new_quality["quality_changes"], postpone_emit = True) - - for new_quality in self._new_quality_containers: - new_quality["stack"].nameChanged.connect(self._onQualityNameChanged) - new_quality["stack"].sendPostponedEmits() # Send the signals that were postponed in _replaceQualityOrQualityChangesInStack - - self._new_quality_containers.clear() - - Logger.log("d", "New configuration applied") - - ## Cancel set changes for material and variant in the active container stack. - # Used for ignoring any changes when switching between printers (setActiveMachine) - def _cancelDelayedActiveContainerStackChanges(self): - self._new_material_container = None - self._new_buildplate_container = None - self._new_variant_container = None - - ## Determine the quality and quality changes settings for the current machine for a quality name. - # - # \param quality_name \type{str} the name of the quality. - # \return \type{List[Dict]} with keys "stack", "quality" and "quality_changes". - @UM.FlameProfiler.profile - def determineQualityAndQualityChangesForQualityType(self, quality_type: str) -> List[Dict[str, Union["CuraContainerStack", InstanceContainer]]]: - quality_manager = QualityManager.getInstance() - result = [] - empty_quality_changes = self._empty_quality_changes_container - global_container_stack = self._global_container_stack - if not global_container_stack: - return [] - - global_machine_definition = quality_manager.getParentMachineDefinition(global_container_stack.definition) - extruder_stacks = ExtruderManager.getInstance().getActiveExtruderStacks() - - # find qualities for extruders - for extruder_stack in extruder_stacks: - material_metadata = extruder_stack.material.getMetaData() - - # TODO: fix this - if self._new_material_container and extruder_stack.getId() == self._active_container_stack.getId(): - material_metadata = self._new_material_container.getMetaData() - - quality = quality_manager.findQualityByQualityType(quality_type, global_machine_definition, [material_metadata]) - - if not quality: - # No quality profile is found for this quality type. - quality = self._empty_quality_container - - result.append({ - "stack": extruder_stack, - "quality": quality, - "quality_changes": empty_quality_changes - }) - - # also find a global quality for the machine - global_quality = quality_manager.findQualityByQualityType(quality_type, global_machine_definition, [], global_quality = "True") - - # if there is not global quality but we're using a single extrusion machine, copy the quality of the first extruder - CURA-4482 - if not global_quality and len(extruder_stacks) == 1: - global_quality = result[0]["quality"] - - # if there is still no global quality, set it to empty (not supported) - if not global_quality: - global_quality = self._empty_quality_container - - result.append({ - "stack": global_container_stack, - "quality": global_quality, - "quality_changes": empty_quality_changes - }) - - return result - - ## Determine the quality and quality changes settings for the current machine for a quality changes name. - # - # \param quality_changes_name \type{str} the name of the quality changes. - # \return \type{List[Dict]} with keys "stack", "quality" and "quality_changes". - def _determineQualityAndQualityChangesForQualityChanges(self, quality_changes_name: str) -> Optional[List[Dict[str, Union["CuraContainerStack", InstanceContainer]]]]: - result = [] - quality_manager = QualityManager.getInstance() - - global_container_stack = self._global_container_stack - global_machine_definition = quality_manager.getParentMachineDefinition(global_container_stack.definition) - quality_changes_profiles = quality_manager.findQualityChangesByName(quality_changes_name, global_machine_definition) - - global_quality_changes = [qcp for qcp in quality_changes_profiles if qcp.getMetaDataEntry("extruder") is None] - if global_quality_changes: - global_quality_changes = global_quality_changes[0] - else: - Logger.log("e", "Could not find the global quality changes container with name %s", quality_changes_name) - return None - - # For the global stack, find a quality which matches the quality_type in - # the quality changes profile and also satisfies any material constraints. - quality_type = global_quality_changes.getMetaDataEntry("quality_type") - - extruder_stacks = ExtruderManager.getInstance().getActiveExtruderStacks() - - # append the extruder quality changes - for extruder_stack in extruder_stacks: - extruder_definition = quality_manager.getParentMachineDefinition(extruder_stack.definition) - - quality_changes_list = [qcp for qcp in quality_changes_profiles if qcp.getMetaDataEntry("extruder") == extruder_definition.getId()] - - if quality_changes_list: - quality_changes = quality_changes_list[0] - else: - quality_changes = global_quality_changes - if not quality_changes: - quality_changes = self._empty_quality_changes_container - - material_metadata = extruder_stack.material.getMetaData() - - if self._new_material_container and self._active_container_stack.getId() == extruder_stack.getId(): - material_metadata = self._new_material_container.getMetaData() - - quality = quality_manager.findQualityByQualityType(quality_type, global_machine_definition, [material_metadata]) - - if not quality: - # No quality profile found for this quality type. - quality = self._empty_quality_container - - result.append({ - "stack": extruder_stack, - "quality": quality, - "quality_changes": quality_changes - }) - - # append the global quality changes - global_quality = quality_manager.findQualityByQualityType(quality_type, global_machine_definition, global_quality = "True") - - # if there is not global quality but we're using a single extrusion machine, copy the quality of the first extruder - CURA-4482 - if not global_quality and len(extruder_stacks) == 1: - global_quality = result[0]["quality"] - - # if still no global quality changes are found we set it to empty (not supported) - if not global_quality: - global_quality = self._empty_quality_container - - result.append({ - "stack": global_container_stack, - "quality": global_quality, - "quality_changes": global_quality_changes - }) - - return result - - def _replaceQualityOrQualityChangesInStack(self, stack: "CuraContainerStack", container: "InstanceContainer", postpone_emit = False): - # Disconnect the signal handling from the old container. - container_type = container.getMetaDataEntry("type") - if container_type == "quality": - stack.quality.nameChanged.disconnect(self._onQualityNameChanged) - stack.setQuality(container, postpone_emit = postpone_emit) - stack.quality.nameChanged.connect(self._onQualityNameChanged) - elif container_type == "quality_changes" or container_type is None: - # If the container is an empty container, we need to change the quality_changes. - # Quality can never be set to empty. - stack.qualityChanges.nameChanged.disconnect(self._onQualityNameChanged) - stack.setQualityChanges(container, postpone_emit = postpone_emit) - stack.qualityChanges.nameChanged.connect(self._onQualityNameChanged) - self._onQualityNameChanged() - @pyqtProperty(str, notify = activeVariantChanged) def activeVariantName(self) -> str: if self._active_container_stack: @@ -1153,15 +607,6 @@ class MachineManager(QObject): return "" - @pyqtProperty(str, notify = activeVariantChanged) - def activeVariantId(self) -> str: - if self._active_container_stack: - variant = self._active_container_stack.variant - if variant: - return variant.getId() - - return "" - @pyqtProperty(str, notify = activeVariantChanged) def activeVariantBuildplateName(self) -> str: if self._global_container_stack: @@ -1178,55 +623,14 @@ class MachineManager(QObject): return "" - @pyqtProperty(str, notify=globalContainerChanged) - def activeDefinitionName(self) -> str: - if self._global_container_stack: - return self._global_container_stack.definition.getName() - - return "" - ## Get the Definition ID to use to select quality profiles for the currently active machine # \returns DefinitionID (string) if found, empty string otherwise - # \sa getQualityDefinitionId @pyqtProperty(str, notify = globalContainerChanged) def activeQualityDefinitionId(self) -> str: if self._global_container_stack: - return self.getQualityDefinitionId(self._global_container_stack.definition) + return getMachineDefinitionIDForQualitySearch(self._global_container_stack.definition) return "" - ## Get the Definition ID to use to select quality profiles for machines of the specified definition - # This is normally the id of the definition itself, but machines can specify a different definition to inherit qualities from - # \param definition (DefinitionContainer) machine definition - # \returns DefinitionID (string) if found, empty string otherwise - def getQualityDefinitionId(self, definition: "DefinitionContainer") -> str: - return QualityManager.getInstance().getParentMachineDefinition(definition).getId() - - ## Get the Variant ID to use to select quality profiles for the currently active variant - # \returns VariantID (string) if found, empty string otherwise - # \sa getQualityVariantId - @pyqtProperty(str, notify = activeVariantChanged) - def activeQualityVariantId(self) -> str: - if self._active_container_stack: - variant = self._active_container_stack.variant - if variant: - return self.getQualityVariantId(self._global_container_stack.definition, variant) - return "" - - ## Get the Variant ID to use to select quality profiles for variants of the specified definitions - # This is normally the id of the variant itself, but machines can specify a different definition - # to inherit qualities from, which has consequences for the variant to use as well - # \param definition (DefinitionContainer) machine definition - # \param variant (InstanceContainer) variant definition - # \returns VariantID (string) if found, empty string otherwise - def getQualityVariantId(self, definition: "DefinitionContainer", variant: "InstanceContainer") -> str: - variant_id = variant.getId() - definition_id = definition.getId() - quality_definition_id = self.getQualityDefinitionId(definition) - - if definition_id != quality_definition_id: - variant_id = variant_id.replace(definition_id, quality_definition_id, 1) - return variant_id - ## Gets how the active definition calls variants # Caveat: per-definition-variant-title is currently not translated (though the fallback is) @pyqtProperty(str, notify = globalContainerChanged) @@ -1291,6 +695,8 @@ class MachineManager(QObject): buildplate_compatible = True # It is compatible by default extruder_stacks = self._global_container_stack.extruders.values() for stack in extruder_stacks: + if not stack.isEnabled: + continue material_container = stack.material if material_container == self._empty_material_container: continue @@ -1348,47 +754,155 @@ class MachineManager(QObject): if containers: return containers[0].definition.getId() - @staticmethod - def createMachineManager(): - return MachineManager() + def getIncompatibleSettingsOnEnabledExtruders(self, container): + extruder_count = self._global_container_stack.getProperty("machine_extruder_count", "value") + result = [] + for setting_instance in container.findInstances(): + setting_key = setting_instance.definition.key + setting_enabled = self._global_container_stack.getProperty(setting_key, "enabled") + if not setting_enabled: + # A setting is not visible anymore + result.append(setting_key) + Logger.log("d", "Reset setting [%s] from [%s] because the setting is no longer enabled", setting_key, container) + continue - @deprecated("Use ExtruderStack.material = ... and it won't be necessary", "2.7") - def _updateMaterialContainer(self, definition: "DefinitionContainer", stack: "ContainerStack", variant_container: Optional["InstanceContainer"] = None, preferred_material_name: Optional[str] = None) -> InstanceContainer: - if not definition.getMetaDataEntry("has_materials"): - return self._empty_material_container + if not self._global_container_stack.getProperty(setting_key, "type") in ("extruder", "optional_extruder"): + continue - approximate_material_diameter = str(round(stack.getProperty("material_diameter", "value"))) - search_criteria = { "type": "material", "approximate_diameter": approximate_material_diameter } + old_value = container.getProperty(setting_key, "value") + if int(old_value) >= extruder_count or not self._global_container_stack.extruders[str(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 - if definition.getMetaDataEntry("has_machine_materials"): - search_criteria["definition"] = self.getQualityDefinitionId(definition) + ## Update extruder number to a valid value when the number of extruders are changed, or when an extruder is changed + def correctExtruderSettings(self): + for setting_key in self.getIncompatibleSettingsOnEnabledExtruders(self._global_container_stack.userChanges): + self._global_container_stack.userChanges.removeInstance(setting_key) + add_user_changes = self.getIncompatibleSettingsOnEnabledExtruders(self._global_container_stack.qualityChanges) + for setting_key in add_user_changes: + # 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)), + lifetime=0, + title = catalog.i18nc("@info:title", "Settings updated")) + caution_message.show() - if definition.getMetaDataEntry("has_variants") and variant_container: - search_criteria["variant"] = self.getQualityVariantId(definition, variant_container) - else: - search_criteria["definition"] = "fdmprinter" + ## Set the amount of extruders on the active machine (global stack) + # \param extruder_count int the number of extruders to set + def setActiveMachineExtruderCount(self, extruder_count): + extruder_manager = Application.getInstance().getExtruderManager() - if preferred_material_name: - search_criteria["name"] = preferred_material_name - else: - preferred_material = definition.getMetaDataEntry("preferred_material") - if preferred_material: - search_criteria["id"] = preferred_material + definition_changes_container = self._global_container_stack.definitionChanges + if not self._global_container_stack or definition_changes_container == self._empty_definition_changes_container: + return - containers = ContainerRegistry.getInstance().findInstanceContainers(**search_criteria) - if containers: - return containers[0] + previous_extruder_count = self._global_container_stack.getProperty("machine_extruder_count", "value") + if extruder_count == previous_extruder_count: + return - if "variant" in search_criteria or "id" in search_criteria: - # If a material by this name can not be found, try a wider set of search criteria - search_criteria.pop("variant", None) - search_criteria.pop("id", None) + definition_changes_container.setProperty("machine_extruder_count", "value", extruder_count) - containers = ContainerRegistry.getInstance().findInstanceContainers(**search_criteria) - if containers: - return containers[0] - Logger.log("w", "Unable to find a material container with provided criteria, returning an empty one instead.") - return self._empty_material_container + self.updateDefaultExtruder() + self.updateNumberExtrudersEnabled() + self.correctExtruderSettings() + + # Check to see if any objects are set to print with an extruder that will no longer exist + root_node = Application.getInstance().getController().getScene().getRoot() + for node in DepthFirstIterator(root_node): + if node.getMeshData(): + extruder_nr = node.callDecoration("getActiveExtruderPosition") + + if extruder_nr is not None and int(extruder_nr) > extruder_count - 1: + node.callDecoration("setActiveExtruder", extruder_manager.getExtruderStack(extruder_count - 1).getId()) + + # Make sure one of the extruder stacks is active + extruder_manager.setActiveExtruderIndex(0) + + # Move settable_per_extruder values out of the global container + # After CURA-4482 this should not be the case anymore, but we still want to support older project files. + global_user_container = self._global_container_stack.userChanges + + # Make sure extruder_stacks exists + extruder_stacks = [] + + if previous_extruder_count == 1: + extruder_stacks = ExtruderManager.getInstance().getActiveExtruderStacks() + global_user_container = self._global_container_stack.userChanges + + for setting_instance in global_user_container.findInstances(): + setting_key = setting_instance.definition.key + settable_per_extruder = self._global_container_stack.getProperty(setting_key, "settable_per_extruder") + + if settable_per_extruder: + limit_to_extruder = int(self._global_container_stack.getProperty(setting_key, "limit_to_extruder")) + extruder_stack = extruder_stacks[max(0, limit_to_extruder)] + extruder_stack.userChanges.setProperty(setting_key, "value", global_user_container.getProperty(setting_key, "value")) + global_user_container.removeInstance(setting_key) + + # Signal that the global stack has changed + Application.getInstance().globalContainerStackChanged.emit() + self.forceUpdateAllSettings() + + @pyqtSlot(int, result = QObject) + def getExtruder(self, position: int): + extruder = None + if self._global_container_stack: + extruder = self._global_container_stack.extruders.get(str(position)) + return extruder + + def updateDefaultExtruder(self): + 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: + if extruder.isEnabled: + new_default_position = position + break + if new_default_position != old_position: + self._default_extruder_position = new_default_position + self.extruderChanged.emit() + + def updateNumberExtrudersEnabled(self): + definition_changes_container = self._global_container_stack.definitionChanges + extruder_count = 0 + for position, extruder in self._global_container_stack.extruders.items(): + if extruder.isEnabled: + extruder_count += 1 + definition_changes_container.setProperty("extruders_enabled_count", "value", extruder_count) + + @pyqtProperty(str, notify = extruderChanged) + def defaultExtruderPosition(self): + return self._default_extruder_position + + ## This will fire the propertiesChanged for all settings so they will be updated in the front-end + @pyqtSlot() + def forceUpdateAllSettings(self): + 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 setting_key in container.getAllKeys(): + container.propertiesChanged.emit(setting_key, property_names) + + @pyqtSlot(int, bool) + def setExtruderEnabled(self, position: int, enabled) -> None: + extruder = self.getExtruder(position) + extruder.setEnabled(enabled) + self.updateDefaultExtruder() + self.updateNumberExtrudersEnabled() + self.correctExtruderSettings() + # ensure that the quality profile is compatible with current combination, or choose a compatible one if available + self._updateQualityWithMaterial() + self.extruderChanged.emit() + # update material compatibility color + self.activeQualityGroupChanged.emit() + # update items in SettingExtruder + ExtruderManager.getInstance().extrudersChanged.emit(self._global_container_stack.getId()) + # Make sure the front end reflects changes + self.forceUpdateAllSettings() def _onMachineNameChanged(self): self.globalContainerChanged.emit() @@ -1403,3 +917,345 @@ class MachineManager(QObject): stacks = ExtruderManager.getInstance().getActiveExtruderStacks() stacks.append(self._global_container_stack) return [ s.containersChanged for s in stacks ] + + @pyqtSlot(str, str, str) + def setSettingForAllExtruders(self, setting_name: str, property_name: str, property_value: str): + for key, extruder in self._global_container_stack.extruders.items(): + container = extruder.userChanges + container.setProperty(setting_name, property_name, property_value) + + @pyqtProperty("QVariantList", notify = globalContainerChanged) + def currentExtruderPositions(self): + 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): + self._current_root_material_id = {} + + 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") + + @pyqtProperty("QVariant", notify = rootMaterialChanged) + def currentRootMaterialId(self): + 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): + result = {} + + active_stacks = ExtruderManager.getInstance().getActiveExtruderStacks() + if active_stacks is not None: + for stack in active_stacks: + variant_container = stack.variant + position = stack.getMetaDataEntry("position") + if variant_container and variant_container != self._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): + self._current_quality_group = None + self._current_quality_changes_group = None + self._global_container_stack.quality = self._empty_quality_container + self._global_container_stack.qualityChanges = self._empty_quality_changes_container + for extruder in self._global_container_stack.extruders.values(): + extruder.quality = self._empty_quality_container + extruder.qualityChanges = self._empty_quality_changes_container + + self.activeQualityGroupChanged.emit() + self.activeQualityChangesGroupChanged.emit() + + def _setQualityGroup(self, quality_group, empty_quality_changes = True): + 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() + if empty_quality_changes: + self._global_container_stack.qualityChanges = self._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() + if empty_quality_changes: + self._global_container_stack.extruders[str(position)].qualityChanges = self._empty_quality_changes_container + + self.activeQualityGroupChanged.emit() + self.activeQualityChangesGroupChanged.emit() + + def _setQualityChangesGroup(self, quality_changes_group): + quality_type = quality_changes_group.quality_type + quality_group_dict = self._quality_manager.getQualityGroups(self._global_container_stack) + quality_group = quality_group_dict[quality_type] + + quality_changes_container = self._empty_quality_changes_container + quality_container = self._empty_quality_changes_container + if quality_changes_group.node_for_global: + quality_changes_container = quality_changes_group.node_for_global.getContainer() + if quality_group.node_for_global: + quality_container = quality_group.node_for_global.getContainer() + + 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 = quality_group.nodes_for_extruders.get(position) + + quality_changes_container = self._empty_quality_changes_container + quality_container = self._empty_quality_container + if quality_changes_node: + quality_changes_container = quality_changes_node.getContainer() + if quality_node: + quality_container = quality_node.getContainer() + + extruder.quality = quality_container + extruder.qualityChanges = quality_changes_container + + self._current_quality_group = quality_group + self._current_quality_changes_group = quality_changes_group + self.activeQualityGroupChanged.emit() + self.activeQualityChangesGroupChanged.emit() + + def _setVariantNode(self, position, container_node): + self._global_container_stack.extruders[position].variant = container_node.getContainer() + self.activeVariantChanged.emit() + + def _setGlobalVariant(self, container_node): + self._global_container_stack.variant = container_node.getContainer() + + def _setMaterial(self, position, container_node = None): + if container_node: + self._global_container_stack.extruders[position].material = container_node.getContainer() + root_material_id = container_node.metadata["base_file"] + else: + self._global_container_stack.extruders[position].material = self._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]: + self._current_root_material_id[position] = root_material_id + self.rootMaterialChanged.emit() + + def activeMaterialsCompatible(self): + # check material - variant compatibility + if Util.parseBool(self._global_container_stack.getMetaDataEntry("has_materials", False)): + for position, extruder in self._global_container_stack.extruders.items(): + if extruder.isEnabled and not extruder.material.getMetaDataEntry("compatible"): + return False + if not extruder.material.getMetaDataEntry("compatible"): + return False + return True + + ## Update current quality type and machine after setting material + def _updateQualityWithMaterial(self, *args): + Logger.log("i", "Updating quality/quality_changes due to material change") + current_quality_type = None + if self._current_quality_group: + current_quality_type = self._current_quality_group.quality_type + candidate_quality_groups = self._quality_manager.getQualityGroups(self._global_container_stack) + 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) + if not self.activeMaterialsCompatible(): + Logger.log("i", "Active materials are not compatible, setting all qualities to empty (Not Supported).") + self._setEmptyQuality() + return + + if not available_quality_types: + Logger.log("i", "No available quality types found, setting all qualities to empty (Not Supported).") + self._setEmptyQuality() + return + + if current_quality_type in available_quality_types: + Logger.log("i", "Current available quality type [%s] is available, applying changes.", current_quality_type) + self._setQualityGroup(candidate_quality_groups[current_quality_type], empty_quality_changes = False) + return + + # 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] + preferred_quality_type = self._global_container_stack.getMetaDataEntry("preferred_quality_type") + if preferred_quality_type in available_quality_types: + quality_type = preferred_quality_type + + Logger.log("i", "The current quality type [%s] is not available, switching to [%s] instead", + current_quality_type, quality_type) + self._setQualityGroup(candidate_quality_groups[quality_type], empty_quality_changes = True) + + def _updateMaterialWithVariant(self, position: Optional[str]): + if position is None: + position_list = list(self._global_container_stack.extruders.keys()) + else: + position_list = [position] + + for position in position_list: + extruder = self._global_container_stack.extruders[position] + + current_material_base_name = extruder.material.getMetaDataEntry("base_file") + current_variant_name = None + if extruder.variant.getId() != self._empty_variant_container.getId(): + current_variant_name = extruder.variant.getMetaDataEntry("name") + + from UM.Settings.Interfaces import PropertyEvaluationContext + from cura.Settings.CuraContainerStack import _ContainerIndexes + context = PropertyEvaluationContext(extruder) + context.context["evaluate_from_container_index"] = _ContainerIndexes.DefinitionChanges + material_diameter = self._global_container_stack.getProperty("material_diameter", "value", context) + candidate_materials = self._material_manager.getAvailableMaterials( + self._global_container_stack.definition.getId(), + current_variant_name, + material_diameter) + + if not candidate_materials: + self._setMaterial(position, container_node = None) + continue + + if current_material_base_name in candidate_materials: + new_material = candidate_materials[current_material_base_name] + self._setMaterial(position, new_material) + continue + + # The current material is not available, find the preferred one + material_node = self._material_manager.getDefaultMaterial(self._global_container_stack, current_variant_name) + if material_node is not None: + self._setMaterial(position, 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): + # Don't switch if the user tries to change to the same type of printer + if self.activeMachineDefinitionName == machine_name: + return + # Get the definition id corresponding to this machine name + machine_definition_id = ContainerRegistry.getInstance().findDefinitionContainers(name = machine_name)[0].getId() + # Try to find a machine with the same network key + new_machine = self.getMachine(machine_definition_id, metadata_filter = {"um_network_key": self.activeMachineNetworkKey}) + # 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) + new_machine.addMetaDataEntry("um_network_key", self.activeMachineNetworkKey) + new_machine.addMetaDataEntry("connect_group_name", self.activeMachineNetworkGroupName) + new_machine.addMetaDataEntry("hidden", False) + else: + Logger.log("i", "Found a %s with the key %s. Let's use it!", machine_name, self.activeMachineNetworkKey) + new_machine.setMetaDataEntry("hidden", False) + + # Set the current printer instance to hidden (the metadata entry must exist) + self._global_container_stack.setMetaDataEntry("hidden", True) + + self.setActiveMachine(new_machine.getId()) + + @pyqtSlot(QObject) + def applyRemoteConfiguration(self, configuration: ConfigurationModel): + self.blurSettings.emit() + with postponeSignals(*self._getContainerChangedSignals(), compress = CompressTechnique.CompressPerParameterValue): + self.switchPrinterType(configuration.printerType) + for extruder_configuration in configuration.extruderConfigurations: + position = str(extruder_configuration.position) + 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, extruder_configuration.hotendID,extruder_configuration.material.guid) + if variant_container_node: + self._setVariantNode(position, variant_container_node) + else: + self._global_container_stack.extruders[position].variant = self._empty_variant_container + + if material_container_node: + self._setMaterial(position, material_container_node) + else: + self._global_container_stack.extruders[position].material = self._empty_material_container + self._updateMaterialWithVariant(position) + + 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 = self._empty_variant_container + else: + self._global_container_stack.variant = self._empty_variant_container + self._updateQualityWithMaterial() + + ## Find all container stacks that has the pair 'key = value' in its metadata and replaces the value with 'new_value' + def replaceContainersMetadata(self, key: str, value: str, new_value: str): + machines = ContainerRegistry.getInstance().findContainerStacks(type = "machine") + for machine in machines: + if machine.getMetaDataEntry(key) == value: + machine.setMetaDataEntry(key, new_value) + + @pyqtSlot("QVariant") + def setGlobalVariant(self, container_node): + self.blurSettings.emit() + with postponeSignals(*self._getContainerChangedSignals(), compress = CompressTechnique.CompressPerParameterValue): + self._setGlobalVariant(container_node) + self._updateMaterialWithVariant(None) # Update all materials + self._updateQualityWithMaterial() + + @pyqtSlot(str, "QVariant") + def setMaterial(self, position, container_node): + position = str(position) + self.blurSettings.emit() + with postponeSignals(*self._getContainerChangedSignals(), compress = CompressTechnique.CompressPerParameterValue): + self._setMaterial(position, container_node) + self._updateQualityWithMaterial() + + @pyqtSlot(str, "QVariant") + def setVariantGroup(self, position, container_node): + position = str(position) + self.blurSettings.emit() + with postponeSignals(*self._getContainerChangedSignals(), compress = CompressTechnique.CompressPerParameterValue): + self._setVariantNode(position, container_node) + self._updateMaterialWithVariant(position) + self._updateQualityWithMaterial() + + @pyqtSlot(QObject) + def setQualityGroup(self, quality_group, no_dialog = False): + self.blurSettings.emit() + with postponeSignals(*self._getContainerChangedSignals(), compress = CompressTechnique.CompressPerParameterValue): + self._setQualityGroup(quality_group) + + # See if we need to show the Discard or Keep changes screen + if not no_dialog and self.hasUserSettings and Preferences.getInstance().getValue("cura/active_mode") == 1: + self._application.discardOrKeepProfileChanges() + + @pyqtProperty(QObject, fset = setQualityGroup, notify = activeQualityGroupChanged) + def activeQualityGroup(self): + return self._current_quality_group + + @pyqtSlot(QObject) + def setQualityChangesGroup(self, quality_changes_group, no_dialog = False): + self.blurSettings.emit() + with postponeSignals(*self._getContainerChangedSignals(), compress = CompressTechnique.CompressPerParameterValue): + self._setQualityChangesGroup(quality_changes_group) + + # See if we need to show the Discard or Keep changes screen + if not no_dialog and self.hasUserSettings and Preferences.getInstance().getValue("cura/active_mode") == 1: + self._application.discardOrKeepProfileChanges() + + @pyqtProperty(QObject, fset = setQualityChangesGroup, notify = activeQualityChangesGroupChanged) + def activeQualityChangesGroup(self): + return self._current_quality_changes_group + + @pyqtProperty(str, notify = activeQualityGroupChanged) + def activeQualityOrQualityChangesName(self): + name = self._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 + + def _updateUponMaterialMetadataChange(self): + with postponeSignals(*self._getContainerChangedSignals(), compress = CompressTechnique.CompressPerParameterValue): + self._updateMaterialWithVariant(None) + self._updateQualityWithMaterial() diff --git a/cura/Settings/MaterialManager.py b/cura/Settings/MaterialManager.py deleted file mode 100644 index 80d2723438..0000000000 --- a/cura/Settings/MaterialManager.py +++ /dev/null @@ -1,57 +0,0 @@ -# Copyright (c) 2017 Ultimaker B.V. -# Cura is released under the terms of the LGPLv3 or higher. - -from PyQt5.QtCore import QObject, pyqtSlot #To expose data to QML. - -from cura.Settings.ContainerManager import ContainerManager -from UM.Logger import Logger -from UM.Message import Message #To create a warning message about material diameter. -from UM.i18n import i18nCatalog #Translated strings. - -catalog = i18nCatalog("cura") - -## Handles material-related data, processing requests to change them and -# providing data for the GUI. -# -# TODO: Move material-related managing over from the machine manager to here. -class MaterialManager(QObject): - ## Creates the global values for the material manager to use. - def __init__(self, parent = None): - super().__init__(parent) - - #Material diameter changed warning message. - self._material_diameter_warning_message = Message(catalog.i18nc("@info:status Has a cancel button next to it.", - "The selected material diameter causes the material to become incompatible with the current printer."), title = catalog.i18nc("@info:title", "Incompatible Material")) - self._material_diameter_warning_message.addAction("Undo", catalog.i18nc("@action:button", "Undo"), None, catalog.i18nc("@action", "Undo changing the material diameter.")) - self._material_diameter_warning_message.actionTriggered.connect(self._materialWarningMessageAction) - - ## Creates an instance of the MaterialManager. - # - # This should only be called by PyQt to create the singleton instance of - # this class. - @staticmethod - def createMaterialManager(engine = None, script_engine = None): - return MaterialManager() - - @pyqtSlot(str, str) - def showMaterialWarningMessage(self, material_id, previous_diameter): - self._material_diameter_warning_message.previous_diameter = previous_diameter #Make sure that the undo button can properly undo the action. - self._material_diameter_warning_message.material_id = material_id - self._material_diameter_warning_message.show() - - ## Called when clicking "undo" on the warning dialogue for disappeared - # materials. - # - # This executes the undo action, restoring the material diameter. - # - # \param button The identifier of the button that was pressed. - def _materialWarningMessageAction(self, message, button): - if button == "Undo": - container_manager = ContainerManager.getInstance() - container_manager.setContainerMetaDataEntry(self._material_diameter_warning_message.material_id, "properties/diameter", self._material_diameter_warning_message.previous_diameter) - approximate_previous_diameter = str(round(float(self._material_diameter_warning_message.previous_diameter))) - container_manager.setContainerMetaDataEntry(self._material_diameter_warning_message.material_id, "approximate_diameter", approximate_previous_diameter) - container_manager.setContainerProperty(self._material_diameter_warning_message.material_id, "material_diameter", "value", self._material_diameter_warning_message.previous_diameter); - message.hide() - else: - Logger.log("w", "Unknown button action for material diameter warning message: {action}".format(action = button)) \ No newline at end of file diff --git a/cura/Settings/MaterialSettingsVisibilityHandler.py b/cura/Settings/MaterialSettingsVisibilityHandler.py index 5b6050d2c0..ce545f4551 100644 --- a/cura/Settings/MaterialSettingsVisibilityHandler.py +++ b/cura/Settings/MaterialSettingsVisibilityHandler.py @@ -3,13 +3,14 @@ import UM.Settings.Models.SettingVisibilityHandler + class MaterialSettingsVisibilityHandler(UM.Settings.Models.SettingVisibilityHandler.SettingVisibilityHandler): def __init__(self, parent = None, *args, **kwargs): super().__init__(parent = parent, *args, **kwargs) material_settings = { "default_material_print_temperature", - "material_bed_temperature", + "default_material_bed_temperature", "material_standby_temperature", #"material_flow_temp_graph", "cool_fan_speed", diff --git a/cura/Settings/MaterialsModel.py b/cura/Settings/MaterialsModel.py deleted file mode 100644 index c4b0329336..0000000000 --- a/cura/Settings/MaterialsModel.py +++ /dev/null @@ -1,37 +0,0 @@ -# Copyright (c) 2017 Ultimaker B.V. -# Cura is released under the terms of the LGPLv3 or higher. - -from typing import Any, List -from UM.Settings.ContainerRegistry import ContainerRegistry #To listen for changes to the materials. -from UM.Settings.Models.InstanceContainersModel import InstanceContainersModel #We're extending this class. - -## A model that shows a list of currently valid materials. -class MaterialsModel(InstanceContainersModel): - def __init__(self, parent = None): - super().__init__(parent) - - ContainerRegistry.getInstance().containerMetaDataChanged.connect(self._onContainerMetaDataChanged) - - ## Called when the metadata of the container was changed. - # - # This makes sure that we only update when it was a material that changed. - # - # \param container The container whose metadata was changed. - def _onContainerMetaDataChanged(self, container): - if container.getMetaDataEntry("type") == "material": #Only need to update if a material was changed. - self._container_change_timer.start() - - def _onContainerChanged(self, container): - if container.getMetaDataEntry("type", "") == "material": - super()._onContainerChanged(container) - - ## Group brand together - def _sortKey(self, item) -> List[Any]: - result = [] - result.append(item["metadata"]["brand"]) - result.append(item["metadata"]["material"]) - result.append(item["metadata"]["name"]) - result.append(item["metadata"]["color_name"]) - result.append(item["metadata"]["id"]) - result.extend(super()._sortKey(item)) - return result diff --git a/cura/Settings/ProfilesModel.py b/cura/Settings/ProfilesModel.py deleted file mode 100644 index 77cd407457..0000000000 --- a/cura/Settings/ProfilesModel.py +++ /dev/null @@ -1,222 +0,0 @@ -# Copyright (c) 2017 Ultimaker B.V. -# Cura is released under the terms of the LGPLv3 or higher. - -from collections import OrderedDict - -from PyQt5.QtCore import Qt - -from UM.Application import Application -from UM.Settings.ContainerRegistry import ContainerRegistry -from UM.Settings.Models.InstanceContainersModel import InstanceContainersModel - -from cura.QualityManager import QualityManager -from cura.Settings.ExtruderManager import ExtruderManager - -from typing import List, TYPE_CHECKING - -if TYPE_CHECKING: - from cura.Settings.ExtruderStack import ExtruderStack - - -## QML Model for listing the current list of valid quality profiles. -# -class ProfilesModel(InstanceContainersModel): - LayerHeightRole = Qt.UserRole + 1001 - LayerHeightWithoutUnitRole = Qt.UserRole + 1002 - AvailableRole = Qt.UserRole + 1003 - - def __init__(self, parent = None): - super().__init__(parent) - self.addRoleName(self.LayerHeightRole, "layer_height") - self.addRoleName(self.LayerHeightWithoutUnitRole, "layer_height_without_unit") - self.addRoleName(self.AvailableRole, "available") - - Application.getInstance().globalContainerStackChanged.connect(self._update) - Application.getInstance().getMachineManager().activeVariantChanged.connect(self._update) - Application.getInstance().getMachineManager().activeStackChanged.connect(self._update) - Application.getInstance().getMachineManager().activeMaterialChanged.connect(self._update) - - self._empty_quality = ContainerRegistry.getInstance().findContainers(id = "empty_quality")[0] - - # Factory function, used by QML - @staticmethod - def createProfilesModel(engine, js_engine): - return ProfilesModel.getInstance() - - ## Get the singleton instance for this class. - @classmethod - def getInstance(cls) -> "ProfilesModel": - # Note: Explicit use of class name to prevent issues with inheritance. - if not ProfilesModel.__instance: - ProfilesModel.__instance = cls() - return ProfilesModel.__instance - - @classmethod - def hasInstance(cls) -> bool: - return ProfilesModel.__instance is not None - - __instance = None # type: "ProfilesModel" - - ## Fetch the list of containers to display. - # - # See UM.Settings.Models.InstanceContainersModel._fetchInstanceContainers(). - def _fetchInstanceContainers(self): - global_container_stack = Application.getInstance().getGlobalContainerStack() - if global_container_stack is None: - return {}, {} - global_stack_definition = global_container_stack.definition - - # Get the list of extruders and place the selected extruder at the front of the list. - extruder_stacks = self._getOrderedExtruderStacksList() - materials = [extruder.material for extruder in extruder_stacks] - - # Fetch the list of usable qualities across all extruders. - # The actual list of quality profiles come from the first extruder in the extruder list. - result = QualityManager.getInstance().findAllUsableQualitiesForMachineAndExtruders(global_container_stack, extruder_stacks) - - # The usable quality types are set - quality_type_set = set([x.getMetaDataEntry("quality_type") for x in result]) - - # Fetch all qualities available for this machine and the materials selected in extruders - all_qualities = QualityManager.getInstance().findAllQualitiesForMachineAndMaterials(global_stack_definition, materials) - - # If in the all qualities there is some of them that are not available due to incompatibility with materials - # we also add it so that they will appear in the slide quality bar. However in recomputeItems will be marked as - # not available so they will be shown in gray - for quality in all_qualities: - if quality.getMetaDataEntry("quality_type") not in quality_type_set: - result.append(quality) - - if len(result) > 1 and self._empty_quality in result: - result.remove(self._empty_quality) - - return {item.getId(): item for item in result}, {} #Only return true profiles for now, no metadata. The quality manager is not able to get only metadata yet. - - ## Re-computes the items in this model, and adds the layer height role. - def _recomputeItems(self): - # Some globals that we can re-use. - global_container_stack = Application.getInstance().getGlobalContainerStack() - if global_container_stack is None: - return - - extruder_stacks = self._getOrderedExtruderStacksList() - container_registry = ContainerRegistry.getInstance() - - # Get a list of usable/available qualities for this machine and material - qualities = QualityManager.getInstance().findAllUsableQualitiesForMachineAndExtruders(global_container_stack, extruder_stacks) - - unit = global_container_stack.getBottom().getProperty("layer_height", "unit") - if not unit: - unit = "" - - # group all quality items according to quality_types, so we know which profile suits the currently - # active machine and material, and later yield the right ones. - tmp_all_quality_items = OrderedDict() - for item in super()._recomputeItems(): - profiles = container_registry.findContainersMetadata(id = item["id"]) - if not profiles or "quality_type" not in profiles[0]: - quality_type = "" - else: - quality_type = profiles[0]["quality_type"] - - if quality_type not in tmp_all_quality_items: - tmp_all_quality_items[quality_type] = {"suitable_container": None, "all_containers": []} - - tmp_all_quality_items[quality_type]["all_containers"].append(item) - if tmp_all_quality_items[quality_type]["suitable_container"] is None: - tmp_all_quality_items[quality_type]["suitable_container"] = item - - # reverse the ordering (finest first, coarsest last) - all_quality_items = OrderedDict() - for key in reversed(tmp_all_quality_items.keys()): - all_quality_items[key] = tmp_all_quality_items[key] - - # First the suitable containers are set in the model - containers = [] - for data_item in all_quality_items.values(): - suitable_item = data_item["suitable_container"] - if suitable_item is not None: - containers.append(suitable_item) - - # Once the suitable containers are collected, the rest of the containers are appended - for data_item in all_quality_items.values(): - for item in data_item["all_containers"]: - if item not in containers: - containers.append(item) - - # Now all the containers are set - for item in containers: - profile = container_registry.findContainers(id = item["id"]) - - # When for some reason there is no profile container in the registry - if not profile: - self._setItemLayerHeight(item, "", "") - item["available"] = False - yield item - continue - - profile = profile[0] - - # When there is a profile but it's an empty quality should. It's shown in the list (they are "Not Supported" profiles) - if profile.getId() == "empty_quality": - self._setItemLayerHeight(item, "", "") - item["available"] = True - yield item - continue - - item["available"] = profile in qualities - - # Easy case: This profile defines its own layer height. - if profile.hasProperty("layer_height", "value"): - self._setItemLayerHeight(item, profile.getProperty("layer_height", "value"), unit) - yield item - continue - - machine_manager = Application.getInstance().getMachineManager() - - # Quality-changes profile that has no value for layer height. Get the corresponding quality profile and ask that profile. - quality_type = profile.getMetaDataEntry("quality_type", None) - if quality_type: - quality_results = machine_manager.determineQualityAndQualityChangesForQualityType(quality_type) - for quality_result in quality_results: - if quality_result["stack"] is global_container_stack: - quality = quality_result["quality"] - break - else: - # No global container stack in the results: - if quality_results: - # Take any of the extruders. - quality = quality_results[0]["quality"] - else: - quality = None - if quality and quality.hasProperty("layer_height", "value"): - self._setItemLayerHeight(item, quality.getProperty("layer_height", "value"), unit) - yield item - continue - - # Quality has no value for layer height either. Get the layer height from somewhere lower in the stack. - skip_until_container = global_container_stack.material - if not skip_until_container or skip_until_container == ContainerRegistry.getInstance().getEmptyInstanceContainer(): # No material in stack. - skip_until_container = global_container_stack.variant - if not skip_until_container or skip_until_container == ContainerRegistry.getInstance().getEmptyInstanceContainer(): # No variant in stack. - skip_until_container = global_container_stack.getBottom() - self._setItemLayerHeight(item, global_container_stack.getRawProperty("layer_height", "value", skip_until_container = skip_until_container.getId()), unit) # Fall through to the currently loaded material. - yield item - - ## Get a list of extruder stacks with the active extruder at the front of the list. - @staticmethod - def _getOrderedExtruderStacksList() -> List["ExtruderStack"]: - extruder_manager = ExtruderManager.getInstance() - extruder_stacks = extruder_manager.getActiveExtruderStacks() - active_extruder = extruder_manager.getActiveExtruderStack() - - if active_extruder in extruder_stacks: - extruder_stacks.remove(active_extruder) - extruder_stacks = [active_extruder] + extruder_stacks - - return extruder_stacks - - @staticmethod - def _setItemLayerHeight(item, value, unit): - item["layer_height"] = str(value) + unit - item["layer_height_without_unit"] = str(value) diff --git a/cura/Settings/QualityAndUserProfilesModel.py b/cura/Settings/QualityAndUserProfilesModel.py deleted file mode 100644 index 645e63acdb..0000000000 --- a/cura/Settings/QualityAndUserProfilesModel.py +++ /dev/null @@ -1,54 +0,0 @@ -# Copyright (c) 2016 Ultimaker B.V. -# Cura is released under the terms of the LGPLv3 or higher. -from UM.Application import Application -from UM.Settings.ContainerRegistry import ContainerRegistry - -from cura.QualityManager import QualityManager -from cura.Settings.ProfilesModel import ProfilesModel -from cura.Settings.ExtruderManager import ExtruderManager - - -## QML Model for listing the current list of valid quality and quality changes profiles. -# -class QualityAndUserProfilesModel(ProfilesModel): - def __init__(self, parent = None): - super().__init__(parent) - - self._empty_quality = ContainerRegistry.getInstance().findInstanceContainers(id = "empty_quality")[0] - - ## Fetch the list of containers to display. - # - # See UM.Settings.Models.InstanceContainersModel._fetchInstanceContainers(). - def _fetchInstanceContainers(self): - global_container_stack = Application.getInstance().getGlobalContainerStack() - if not global_container_stack: - return {}, {} - - # Fetch the list of quality changes. - quality_manager = QualityManager.getInstance() - machine_definition = quality_manager.getParentMachineDefinition(global_container_stack.definition) - quality_changes_list = quality_manager.findAllQualityChangesForMachine(machine_definition) - - extruder_manager = ExtruderManager.getInstance() - active_extruder = extruder_manager.getActiveExtruderStack() - extruder_stacks = self._getOrderedExtruderStacksList() - - # Fetch the list of usable qualities across all extruders. - # The actual list of quality profiles come from the first extruder in the extruder list. - quality_list = quality_manager.findAllUsableQualitiesForMachineAndExtruders(global_container_stack, extruder_stacks) - - # Filter the quality_change by the list of available quality_types - quality_type_set = set([x.getMetaDataEntry("quality_type") for x in quality_list]) - # Also show custom profiles based on "Not Supported" quality profile - quality_type_set.add(self._empty_quality.getMetaDataEntry("quality_type")) - filtered_quality_changes = {qc.getId(): qc for qc in quality_changes_list if - qc.getMetaDataEntry("quality_type") in quality_type_set and - qc.getMetaDataEntry("extruder") is not None and - (qc.getMetaDataEntry("extruder") == active_extruder.definition.getMetaDataEntry("quality_definition") or - qc.getMetaDataEntry("extruder") == active_extruder.definition.getId())} - - result = filtered_quality_changes - for q in quality_list: - if q.getId() != "empty_quality": - result[q.getId()] = q - return result, {} #Only return true profiles for now, no metadata. The quality manager is not able to get only metadata yet. diff --git a/cura/Settings/QualitySettingsModel.py b/cura/Settings/QualitySettingsModel.py deleted file mode 100644 index fb1aa9a6b2..0000000000 --- a/cura/Settings/QualitySettingsModel.py +++ /dev/null @@ -1,249 +0,0 @@ -# Copyright (c) 2017 Ultimaker B.V. -# Cura is released under the terms of the LGPLv3 or higher. - -from PyQt5.QtCore import pyqtProperty, pyqtSignal, Qt - -from UM.Logger import Logger -import UM.Qt -from UM.Application import Application -from UM.Settings.ContainerRegistry import ContainerRegistry -import os - -from UM.i18n import i18nCatalog - - -class QualitySettingsModel(UM.Qt.ListModel.ListModel): - KeyRole = Qt.UserRole + 1 - LabelRole = Qt.UserRole + 2 - UnitRole = Qt.UserRole + 3 - ProfileValueRole = Qt.UserRole + 4 - ProfileValueSourceRole = Qt.UserRole + 5 - UserValueRole = Qt.UserRole + 6 - CategoryRole = Qt.UserRole + 7 - - def __init__(self, parent = None): - super().__init__(parent = parent) - - self._container_registry = ContainerRegistry.getInstance() - - self._extruder_id = None - self._extruder_definition_id = None - self._quality_id = None - self._material_id = None - self._i18n_catalog = None - - self.addRoleName(self.KeyRole, "key") - self.addRoleName(self.LabelRole, "label") - self.addRoleName(self.UnitRole, "unit") - self.addRoleName(self.ProfileValueRole, "profile_value") - self.addRoleName(self.ProfileValueSourceRole, "profile_value_source") - self.addRoleName(self.UserValueRole, "user_value") - self.addRoleName(self.CategoryRole, "category") - - self._empty_quality = self._container_registry.findInstanceContainers(id = "empty_quality")[0] - - def setExtruderId(self, extruder_id): - if extruder_id != self._extruder_id: - self._extruder_id = extruder_id - self._update() - self.extruderIdChanged.emit() - - extruderIdChanged = pyqtSignal() - @pyqtProperty(str, fset = setExtruderId, notify = extruderIdChanged) - def extruderId(self): - return self._extruder_id - - def setExtruderDefinition(self, extruder_definition): - if extruder_definition != self._extruder_definition_id: - self._extruder_definition_id = extruder_definition - self._update() - self.extruderDefinitionChanged.emit() - - extruderDefinitionChanged = pyqtSignal() - @pyqtProperty(str, fset = setExtruderDefinition, notify = extruderDefinitionChanged) - def extruderDefinition(self): - return self._extruder_definition_id - - def setQuality(self, quality): - if quality != self._quality_id: - self._quality_id = quality - self._update() - self.qualityChanged.emit() - - qualityChanged = pyqtSignal() - @pyqtProperty(str, fset = setQuality, notify = qualityChanged) - def quality(self): - return self._quality_id - - def setMaterial(self, material): - if material != self._material_id: - self._material_id = material - self._update() - self.materialChanged.emit() - - materialChanged = pyqtSignal() - @pyqtProperty(str, fset = setMaterial, notify = materialChanged) - def material(self): - return self._material_id - - def _update(self): - if not self._quality_id: - return - - items = [] - - definition_container = Application.getInstance().getGlobalContainerStack().getBottom() - - containers = self._container_registry.findInstanceContainers(id = self._quality_id) - if not containers: - Logger.log("w", "Could not find a quality container with id %s", self._quality_id) - return - - quality_container = None - quality_changes_container = None - - if containers[0].getMetaDataEntry("type") == "quality": - quality_container = containers[0] - else: - quality_changes_container = containers[0] - - if quality_changes_container.getMetaDataEntry("quality_type") == self._empty_quality.getMetaDataEntry("quality_type"): - quality_container = self._empty_quality - else: - criteria = { - "type": "quality", - "quality_type": quality_changes_container.getMetaDataEntry("quality_type"), - "definition": quality_changes_container.getDefinition().getId() - } - - quality_container = self._container_registry.findInstanceContainers(**criteria) - if not quality_container: - Logger.log("w", "Could not find a quality container matching quality changes %s", quality_changes_container.getId()) - return - - quality_container = quality_container[0] - - quality_type = quality_container.getMetaDataEntry("quality_type") - - if quality_type == "not_supported": - containers = [] - else: - definition_id = Application.getInstance().getMachineManager().getQualityDefinitionId(quality_container.getDefinition()) - definition = quality_container.getDefinition() - - # Check if the definition container has a translation file. - definition_suffix = ContainerRegistry.getMimeTypeForContainer(type(definition)).preferredSuffix - catalog = i18nCatalog(os.path.basename(definition_id + "." + definition_suffix)) - if catalog.hasTranslationLoaded(): - self._i18n_catalog = catalog - - for file_name in quality_container.getDefinition().getInheritedFiles(): - catalog = i18nCatalog(os.path.basename(file_name)) - if catalog.hasTranslationLoaded(): - self._i18n_catalog = catalog - - criteria = {"type": "quality", "quality_type": quality_type, "definition": definition_id} - - if self._material_id and self._material_id != "empty_material": - criteria["material"] = self._material_id - - criteria["extruder"] = self._extruder_id - - containers = self._container_registry.findInstanceContainers(**criteria) - if not containers: - # Try again, this time without extruder - new_criteria = criteria.copy() - new_criteria.pop("extruder") - containers = self._container_registry.findInstanceContainers(**new_criteria) - - if not containers and "material" in criteria: - # Try again, this time without material - criteria.pop("material", None) - containers = self._container_registry.findInstanceContainers(**criteria) - - if not containers: - # Try again, this time without material or extruder - criteria.pop("extruder") # "material" has already been popped - containers = self._container_registry.findInstanceContainers(**criteria) - - if not containers: - Logger.log("w", "Could not find any quality containers matching the search criteria %s" % str(criteria)) - return - - if quality_changes_container: - if quality_type == "not_supported": - criteria = {"type": "quality_changes", "quality_type": quality_type, "name": quality_changes_container.getName()} - else: - criteria = {"type": "quality_changes", "quality_type": quality_type, "definition": definition_id, "name": quality_changes_container.getName()} - if self._extruder_definition_id != "": - extruder_definitions = self._container_registry.findDefinitionContainers(id = self._extruder_definition_id) - if extruder_definitions: - criteria["extruder"] = Application.getInstance().getMachineManager().getQualityDefinitionId(extruder_definitions[0]) - criteria["name"] = quality_changes_container.getName() - else: - criteria["extruder"] = None - - changes = self._container_registry.findInstanceContainers(**criteria) - if changes: - containers.extend(changes) - - global_container_stack = Application.getInstance().getGlobalContainerStack() - - current_category = "" - for definition in definition_container.findDefinitions(): - if definition.type == "category": - current_category = definition.label - if self._i18n_catalog: - current_category = self._i18n_catalog.i18nc(definition.key + " label", definition.label) - continue - - profile_value = None - profile_value_source = "" - for container in containers: - new_value = container.getProperty(definition.key, "value") - - if new_value is not None: - profile_value_source = container.getMetaDataEntry("type") - profile_value = new_value - - # Global tab should use resolve (if there is one) - if not self._extruder_id: - resolve_value = global_container_stack.getProperty(definition.key, "resolve") - if resolve_value is not None and profile_value is not None and profile_value_source != "quality_changes": - profile_value = resolve_value - - user_value = None - if not self._extruder_id: - user_value = global_container_stack.getTop().getProperty(definition.key, "value") - else: - extruder_stack = self._container_registry.findContainerStacks(id = self._extruder_id) - if extruder_stack: - user_value = extruder_stack[0].getTop().getProperty(definition.key, "value") - - if profile_value is None and user_value is None: - continue - - settable_per_extruder = global_container_stack.getProperty(definition.key, "settable_per_extruder") - # If a setting is not settable per extruder (global) and we're looking at an extruder tab, don't show this value. - if self._extruder_id != "" and not settable_per_extruder: - continue - - # If a setting is settable per extruder (not global) and we're looking at global tab, don't show this value. - if self._extruder_id == "" and settable_per_extruder: - continue - - label = definition.label - if self._i18n_catalog: - label = self._i18n_catalog.i18nc(definition.key + " label", label) - - items.append({ - "key": definition.key, - "label": label, - "unit": definition.unit, - "profile_value": "" if profile_value is None else str(profile_value), # it is for display only - "profile_value_source": profile_value_source, - "user_value": "" if user_value is None else str(user_value), - "category": current_category - }) - - self.setItems(items) diff --git a/cura/Settings/SettingInheritanceManager.py b/cura/Settings/SettingInheritanceManager.py index 0d4cd02cdb..e317b20f68 100644 --- a/cura/Settings/SettingInheritanceManager.py +++ b/cura/Settings/SettingInheritanceManager.py @@ -1,7 +1,7 @@ # Copyright (c) 2017 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 QObject, QTimer, pyqtProperty, pyqtSignal from UM.FlameProfiler import pyqtSlot from UM.Application import Application from UM.Logger import Logger @@ -30,6 +30,11 @@ class SettingInheritanceManager(QObject): 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) + settingsWithIntheritanceChanged = pyqtSignal() ## Get the keys of all children settings with an override. @@ -226,9 +231,7 @@ class SettingInheritanceManager(QObject): self._onActiveExtruderChanged() def _onContainersChanged(self, container): - # TODO: Multiple container changes in sequence now cause quite a few recalculations. - # This isn't that big of an issue, but it could be in the future. - self._update() + self._update_timer.start() @staticmethod def createSettingInheritanceManager(engine=None, script_engine=None): diff --git a/cura/Settings/SettingOverrideDecorator.py b/cura/Settings/SettingOverrideDecorator.py index b853c06c8e..9054d9d04f 100644 --- a/cura/Settings/SettingOverrideDecorator.py +++ b/cura/Settings/SettingOverrideDecorator.py @@ -3,6 +3,7 @@ import copy +from UM.Scene.Iterator.DepthFirstIterator import DepthFirstIterator from UM.Scene.SceneNodeDecorator import SceneNodeDecorator from UM.Signal import Signal, signalemitter from UM.Settings.InstanceContainer import InstanceContainer @@ -61,7 +62,7 @@ class SettingOverrideDecorator(SceneNodeDecorator): # use value from the stack because there can be a delay in signal triggering and "_is_non_printing_mesh" # has not been updated yet. - deep_copy._is_non_printing_mesh = any(bool(self._stack.getProperty(setting, "value")) for setting in self._non_printing_mesh_settings) + deep_copy._is_non_printing_mesh = self.evaluateIsNonPrintingMesh() return deep_copy @@ -89,10 +90,18 @@ class SettingOverrideDecorator(SceneNodeDecorator): def isNonPrintingMesh(self): return self._is_non_printing_mesh + def evaluateIsNonPrintingMesh(self): + return any(bool(self._stack.getProperty(setting, "value")) for setting in self._non_printing_mesh_settings) + def _onSettingChanged(self, instance, property_name): # Reminder: 'property' is a built-in function - # Trigger slice/need slicing if the value has changed. - if property_name == "value": - self._is_non_printing_mesh = any(bool(self._stack.getProperty(setting, "value")) for setting in self._non_printing_mesh_settings) + object_has_instance_setting = False + for container in self._stack.getContainers(): + if container.hasProperty(instance, "value"): + object_has_instance_setting = True + break + if property_name == "value" and object_has_instance_setting: + # Trigger slice/need slicing if the value has changed. + self._is_non_printing_mesh = self.evaluateIsNonPrintingMesh() Application.getInstance().getBackend().needsSlicing() Application.getInstance().getBackend().tickle() diff --git a/cura/Settings/SettingVisibilityPresetsModel.py b/cura/Settings/SettingVisibilityPresetsModel.py new file mode 100644 index 0000000000..e5a2e24412 --- /dev/null +++ b/cura/Settings/SettingVisibilityPresetsModel.py @@ -0,0 +1,136 @@ +# Copyright (c) 2018 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +import os +import urllib +from configparser import ConfigParser + +from PyQt5.QtCore import pyqtProperty, Qt, pyqtSignal, pyqtSlot, QUrl + +from UM.Logger import Logger +from UM.Qt.ListModel import ListModel +from UM.Preferences import Preferences +from UM.Resources import Resources +from UM.MimeTypeDatabase import MimeTypeDatabase, MimeTypeNotFoundError + +import cura.CuraApplication + + +class SettingVisibilityPresetsModel(ListModel): + IdRole = Qt.UserRole + 1 + NameRole = Qt.UserRole + 2 + SettingsRole = Qt.UserRole + 4 + + def __init__(self, parent = None): + super().__init__(parent) + self.addRoleName(self.IdRole, "id") + self.addRoleName(self.NameRole, "name") + self.addRoleName(self.SettingsRole, "settings") + + self._populate() + + self._preferences = Preferences.getInstance() + self._preferences.addPreference("cura/active_setting_visibility_preset", "custom") # Preference to store which preset is currently selected + self._preferences.addPreference("cura/custom_visible_settings", "") # Preference that stores the "custom" set so it can always be restored (even after a restart) + self._preferences.preferenceChanged.connect(self._onPreferencesChanged) + + self._active_preset = self._preferences.getValue("cura/active_setting_visibility_preset") + if self.find("id", self._active_preset) < 0: + self._active_preset = "custom" + + self.activePresetChanged.emit() + + + def _populate(self): + items = [] + for item in Resources.getAllResourcesOfType(cura.CuraApplication.CuraApplication.ResourceTypes.SettingVisibilityPreset): + try: + mime_type = MimeTypeDatabase.getMimeTypeForFile(item) + except MimeTypeNotFoundError: + Logger.log("e", "Could not determine mime type of file %s", item) + continue + + id = urllib.parse.unquote_plus(mime_type.stripExtension(os.path.basename(item))) + + if not os.path.isfile(item): + continue + + parser = ConfigParser(allow_no_value=True) # accept options without any value, + + try: + parser.read([item]) + + if not parser.has_option("general", "name") and not parser.has_option("general", "weight"): + continue + + settings = [] + for section in parser.sections(): + if section == 'general': + continue + + settings.append(section) + for option in parser[section].keys(): + settings.append(option) + + items.append({ + "id": id, + "name": parser["general"]["name"], + "weight": parser["general"]["weight"], + "settings": settings + }) + + except Exception as e: + Logger.log("e", "Failed to load setting preset %s: %s", file_path, str(e)) + + + items.sort(key = lambda k: (k["weight"], k["id"])) + self.setItems(items) + + @pyqtSlot(str) + def setActivePreset(self, preset_id): + if preset_id != "custom" and self.find("id", preset_id) == -1: + Logger.log("w", "Tried to set active preset to unknown id %s", preset_id) + return + + if preset_id == "custom" and self._active_preset == "custom": + # Copy current visibility set to custom visibility set preference so it can be restored later + visibility_string = self._preferences.getValue("general/visible_settings") + self._preferences.setValue("cura/custom_visible_settings", visibility_string) + + self._preferences.setValue("cura/active_setting_visibility_preset", preset_id) + + self._active_preset = preset_id + self.activePresetChanged.emit() + + activePresetChanged = pyqtSignal() + + @pyqtProperty(str, notify = activePresetChanged) + def activePreset(self): + return self._active_preset + + def _onPreferencesChanged(self, name): + if name != "general/visible_settings": + return + + if self._active_preset != "custom": + return + + # Copy current visibility set to custom visibility set preference so it can be restored later + visibility_string = self._preferences.getValue("general/visible_settings") + self._preferences.setValue("cura/custom_visible_settings", visibility_string) + + + # Factory function, used by QML + @staticmethod + def createSettingVisibilityPresetsModel(engine, js_engine): + return SettingVisibilityPresetsModel.getInstance() + + ## Get the singleton instance for this class. + @classmethod + def getInstance(cls) -> "SettingVisibilityPresetsModel": + # Note: Explicit use of class name to prevent issues with inheritance. + if not SettingVisibilityPresetsModel.__instance: + SettingVisibilityPresetsModel.__instance = cls() + return SettingVisibilityPresetsModel.__instance + + __instance = None # type: "SettingVisibilityPresetsModel" \ No newline at end of file diff --git a/cura/Settings/UserProfilesModel.py b/cura/Settings/UserProfilesModel.py deleted file mode 100644 index 6605f52f8a..0000000000 --- a/cura/Settings/UserProfilesModel.py +++ /dev/null @@ -1,85 +0,0 @@ -# Copyright (c) 2017 Ultimaker B.V. -# Cura is released under the terms of the LGPLv3 or higher. - -from UM.Application import Application -from UM.Settings.ContainerRegistry import ContainerRegistry - -from cura.QualityManager import QualityManager -from cura.Settings.ProfilesModel import ProfilesModel -from cura.Settings.ExtruderManager import ExtruderManager - -## QML Model for listing the current list of valid quality changes profiles. -# -class UserProfilesModel(ProfilesModel): - def __init__(self, parent = None): - super().__init__(parent) - - #Need to connect to the metaDataChanged signal of the active materials. - self.__current_extruders = [] - self.__current_materials = [] - - Application.getInstance().getExtruderManager().extrudersChanged.connect(self.__onExtrudersChanged) - self.__onExtrudersChanged() - self.__current_materials = [extruder.material for extruder in self.__current_extruders] - for material in self.__current_materials: - material.metaDataChanged.connect(self._onContainerChanged) - - self._empty_quality = ContainerRegistry.getInstance().findContainers(id = "empty_quality")[0] - - ## Fetch the list of containers to display. - # - # See UM.Settings.Models.InstanceContainersModel._fetchInstanceContainers(). - def _fetchInstanceContainers(self): - global_container_stack = Application.getInstance().getGlobalContainerStack() - if not global_container_stack: - return {}, {} - - # Fetch the list of quality changes. - quality_manager = QualityManager.getInstance() - machine_definition = quality_manager.getParentMachineDefinition(global_container_stack.definition) - quality_changes_list = quality_manager.findAllQualityChangesForMachine(machine_definition) - - extruder_manager = ExtruderManager.getInstance() - active_extruder = extruder_manager.getActiveExtruderStack() - extruder_stacks = self._getOrderedExtruderStacksList() - - # Fetch the list of usable qualities across all extruders. - # The actual list of quality profiles come from the first extruder in the extruder list. - quality_list = quality_manager.findAllUsableQualitiesForMachineAndExtruders(global_container_stack, extruder_stacks) - - # Filter the quality_change by the list of available quality_types - quality_type_set = set([x.getMetaDataEntry("quality_type") for x in quality_list]) - quality_type_set.add(self._empty_quality.getMetaDataEntry("quality_type")) - - filtered_quality_changes = {qc.getId():qc for qc in quality_changes_list if - qc.getMetaDataEntry("quality_type") in quality_type_set and - qc.getMetaDataEntry("extruder") is not None and - (qc.getMetaDataEntry("extruder") == active_extruder.definition.getMetaDataEntry("quality_definition") or - qc.getMetaDataEntry("extruder") == active_extruder.definition.getId())} - - return filtered_quality_changes, {} #Only return true profiles for now, no metadata. The quality manager is not able to get only metadata yet. - - ## Called when a container changed on an extruder stack. - # - # If it's the material we need to connect to the metaDataChanged signal of - # that. - def __onContainerChanged(self, new_container): - #Careful not to update when a quality or quality changes profile changed! - #If you then update you're going to have an infinite recursion because the update may change the container. - if new_container.getMetaDataEntry("type") == "material": - for material in self.__current_materials: - material.metaDataChanged.disconnect(self._onContainerChanged) - self.__current_materials = [extruder.material for extruder in self.__current_extruders] - for material in self.__current_materials: - material.metaDataChanged.connect(self._onContainerChanged) - - ## Called when the current set of extruders change. - # - # This makes sure that we are listening to the signal for when the - # materials change. - def __onExtrudersChanged(self): - for extruder in self.__current_extruders: - extruder.containersChanged.disconnect(self.__onContainerChanged) - self.__current_extruders = Application.getInstance().getExtruderManager().getExtruderStacks() - for extruder in self.__current_extruders: - extruder.containersChanged.connect(self.__onContainerChanged) \ No newline at end of file diff --git a/cura/Snapshot.py b/cura/Snapshot.py new file mode 100644 index 0000000000..1f2a24aecd --- /dev/null +++ b/cura/Snapshot.py @@ -0,0 +1,116 @@ +# Copyright (c) 2018 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. +import numpy + +from PyQt5 import QtCore +from PyQt5.QtGui import QImage + +from cura.PreviewPass import PreviewPass +from cura.Scene import ConvexHullNode + +from UM.Application import Application +from UM.Math.AxisAlignedBox import AxisAlignedBox +from UM.Math.Matrix import Matrix +from UM.Math.Vector import Vector +from UM.Mesh.MeshData import transformVertices +from UM.Scene.Camera import Camera +from UM.Scene.Iterator.DepthFirstIterator import DepthFirstIterator + + +class Snapshot: + @staticmethod + def getImageBoundaries(image: QImage): + # Look at the resulting image to get a good crop. + # Get the pixels as byte array + pixel_array = image.bits().asarray(image.byteCount()) + width, height = image.width(), image.height() + # Convert to numpy array, assume it's 32 bit (it should always be) + pixels = numpy.frombuffer(pixel_array, dtype=numpy.uint8).reshape([height, width, 4]) + # Find indices of non zero pixels + nonzero_pixels = numpy.nonzero(pixels) + min_y, min_x, min_a_ = numpy.amin(nonzero_pixels, axis=1) + max_y, max_x, max_a_ = numpy.amax(nonzero_pixels, axis=1) + + return min_x, max_x, min_y, max_y + + ## Return a QImage of the scene + # Uses PreviewPass that leaves out some elements + # Aspect ratio assumes a square + @staticmethod + def snapshot(width = 300, height = 300): + scene = Application.getInstance().getController().getScene() + active_camera = scene.getActiveCamera() + render_width, render_height = active_camera.getWindowSize() + render_width = int(render_width) + render_height = int(render_height) + preview_pass = PreviewPass(render_width, render_height) + + root = scene.getRoot() + camera = Camera("snapshot", root) + + # determine zoom and look at + bbox = None + for node in DepthFirstIterator(root): + if node.callDecoration("isSliceable") and node.getMeshData() and node.isVisible(): + if bbox is None: + bbox = node.getBoundingBox() + else: + bbox = bbox + node.getBoundingBox() + + # If there is no bounding box, it means that there is no model in the buildplate + if bbox is None: + return None + + look_at = bbox.center + # guessed size so the objects are hopefully big + size = max(bbox.width, bbox.height, bbox.depth * 0.5) + + # Looking from this direction (x, y, z) in OGL coordinates + 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 + camera.setPosition(look_at + looking_from_offset) + camera.lookAt(look_at) + + satisfied = False + size = None + fovy = 30 + + while not satisfied: + if size is not None: + satisfied = True # always be satisfied after second try + projection_matrix = Matrix() + # Somehow the aspect ratio is also influenced in reverse by the screen width/height + # So you have to set it to render_width/render_height to get 1 + projection_matrix.setPerspective(fovy, render_width / render_height, 1, 500) + camera.setProjectionMatrix(projection_matrix) + preview_pass.setCamera(camera) + preview_pass.render() + pixel_output = preview_pass.getOutput() + + min_x, max_x, min_y, max_y = Snapshot.getImageBoundaries(pixel_output) + + size = max((max_x - min_x) / render_width, (max_y - min_y) / render_height) + if size > 0.5 or satisfied: + satisfied = True + else: + # make it big and allow for some empty space around + fovy *= 0.5 # strangely enough this messes up the aspect ratio: fovy *= size * 1.1 + + # make it a square + if max_x - min_x >= max_y - min_y: + # make y bigger + min_y, max_y = int((max_y + min_y) / 2 - (max_x - min_x) / 2), int((max_y + min_y) / 2 + (max_x - min_x) / 2) + else: + # make x bigger + min_x, max_x = int((max_x + min_x) / 2 - (max_y - min_y) / 2), int((max_x + min_x) / 2 + (max_y - min_y) / 2) + cropped_image = pixel_output.copy(min_x, min_y, max_x - min_x, max_y - min_y) + + # Scale it to the correct size + scaled_image = cropped_image.scaled( + width, height, + aspectRatioMode = QtCore.Qt.IgnoreAspectRatio, + transformMode = QtCore.Qt.SmoothTransformation) + + return scaled_image diff --git a/cura_app.py b/cura_app.py index 6d1ff6ab6b..6c2d1c2937 100755 --- a/cura_app.py +++ b/cura_app.py @@ -16,6 +16,12 @@ parser.add_argument('--debug', default = False, help = "Turn on the debug mode by setting this option." ) +parser.add_argument('--trigger-early-crash', + dest = 'trigger_early_crash', + action = 'store_true', + default = False, + help = "FOR TESTING ONLY. Trigger an early crash to show the crash dialog." + ) known_args = vars(parser.parse_known_args()[0]) if not known_args["debug"]: @@ -26,12 +32,12 @@ if not known_args["debug"]: return os.path.expanduser("~/.local/share/cura") elif Platform.isOSX(): return os.path.expanduser("~/Library/Logs/cura") - + if hasattr(sys, "frozen"): dirpath = get_cura_dir_path() os.makedirs(dirpath, exist_ok = True) - sys.stdout = open(os.path.join(dirpath, "stdout.log"), "w") - sys.stderr = open(os.path.join(dirpath, "stderr.log"), "w") + sys.stdout = open(os.path.join(dirpath, "stdout.log"), "w", encoding = "utf-8") + sys.stderr = open(os.path.join(dirpath, "stderr.log"), "w", encoding = "utf-8") import platform import faulthandler @@ -71,8 +77,45 @@ if "PYTHONPATH" in os.environ.keys(): # If PYTHONPATH is u def exceptHook(hook_type, value, traceback): from cura.CrashHandler import CrashHandler - _crash_handler = CrashHandler(hook_type, value, traceback) - _crash_handler.show() + from cura.CuraApplication import CuraApplication + has_started = False + if CuraApplication.Created: + has_started = CuraApplication.getInstance().started + + # + # When the exception hook is triggered, the QApplication may not have been initialized yet. In this case, we don't + # have an QApplication to handle the event loop, which is required by the Crash Dialog. + # The flag "CuraApplication.Created" is set to True when CuraApplication finishes its constructor call. + # + # Before the "started" flag is set to True, the Qt event loop has not started yet. The event loop is a blocking + # call to the QApplication.exec_(). In this case, we need to: + # 1. Remove all scheduled events so no more unnecessary events will be processed, such as loading the main dialog, + # loading the machine, etc. + # 2. Start the Qt event loop with exec_() and show the Crash Dialog. + # + # If the application has finished its initialization and was running fine, and then something causes a crash, + # we run the old routine to show the Crash Dialog. + # + from PyQt5.Qt import QApplication + if CuraApplication.Created: + _crash_handler = CrashHandler(hook_type, value, traceback, has_started) + if CuraApplication.splash is not None: + CuraApplication.splash.close() + if not has_started: + CuraApplication.getInstance().removePostedEvents(None) + _crash_handler.early_crash_dialog.show() + sys.exit(CuraApplication.getInstance().exec_()) + else: + _crash_handler.show() + else: + application = QApplication(sys.argv) + application.removePostedEvents(None) + _crash_handler = CrashHandler(hook_type, value, traceback, has_started) + # This means the QtApplication could be created and so the splash screen. Then Cura closes it + if CuraApplication.splash is not None: + CuraApplication.splash.close() + _crash_handler.early_crash_dialog.show() + sys.exit(application.exec_()) if not known_args["debug"]: sys.excepthook = exceptHook diff --git a/plugins/3MFReader/ThreeMFReader.py b/plugins/3MFReader/ThreeMFReader.py index 09ed1e126d..3a1298bdba 100755 --- a/plugins/3MFReader/ThreeMFReader.py +++ b/plugins/3MFReader/ThreeMFReader.py @@ -1,29 +1,31 @@ -# Copyright (c) 2015 Ultimaker B.V. +# Copyright (c) 2018 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. import os.path import zipfile +import numpy + +import Savitar + +from UM.Application import Application from UM.Logger import Logger from UM.Math.Matrix import Matrix from UM.Math.Vector import Vector from UM.Mesh.MeshBuilder import MeshBuilder from UM.Mesh.MeshReader import MeshReader from UM.Scene.GroupDecorator import GroupDecorator + from cura.Settings.SettingOverrideDecorator import SettingOverrideDecorator -from UM.Application import Application from cura.Settings.ExtruderManager import ExtruderManager -from cura.QualityManager import QualityManager from cura.Scene.CuraSceneNode import CuraSceneNode from cura.Scene.BuildPlateDecorator import BuildPlateDecorator from cura.Scene.SliceableObjectDecorator import SliceableObjectDecorator from cura.Scene.ZOffsetDecorator import ZOffsetDecorator +from cura.Machines.QualityManager import getMachineDefinitionIDForQualitySearch MYPY = False -import Savitar -import numpy - try: if not MYPY: import xml.etree.cElementTree as ET @@ -37,10 +39,6 @@ class ThreeMFReader(MeshReader): super().__init__() self._supported_extensions = [".3mf"] self._root = None - self._namespaces = { - "3mf": "http://schemas.microsoft.com/3dmanufacturing/core/2015/02", - "cura": "http://software.ultimaker.com/xml/cura/3mf/2015/10" - } self._base_name = "" self._unit = None self._object_count = 0 # Used to name objects as there is no node name yet. @@ -81,7 +79,7 @@ class ThreeMFReader(MeshReader): self._object_count += 1 node_name = "Object %s" % self._object_count - active_build_plate = Application.getInstance().getBuildPlateModel().activeBuildPlate + active_build_plate = Application.getInstance().getMultiBuildPlateModel().activeBuildPlate um_node = CuraSceneNode() um_node.addDecorator(BuildPlateDecorator(active_build_plate)) @@ -124,8 +122,8 @@ class ThreeMFReader(MeshReader): um_node.callDecoration("setActiveExtruder", default_stack.getId()) # Get the definition & set it - definition = QualityManager.getInstance().getParentMachineDefinition(global_container_stack.getBottom()) - um_node.callDecoration("getStack").getTop().setDefinition(definition.getId()) + definition_id = getMachineDefinitionIDForQualitySearch(global_container_stack.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 913cea4f26..f5daa77bb0 100755 --- a/plugins/3MFReader/ThreeMFWorkspaceReader.py +++ b/plugins/3MFReader/ThreeMFWorkspaceReader.py @@ -1,11 +1,19 @@ # Copyright (c) 2017 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. +from configparser import ConfigParser +import zipfile +import os +import threading + +import xml.etree.ElementTree as ET + from UM.Workspace.WorkspaceReader import WorkspaceReader from UM.Application import Application from UM.Logger import Logger from UM.i18n import i18nCatalog +from UM.Signal import postponeSignals, CompressTechnique from UM.Settings.ContainerStack import ContainerStack from UM.Settings.DefinitionContainer import DefinitionContainer from UM.Settings.InstanceContainer import InstanceContainer @@ -13,28 +21,91 @@ from UM.Settings.ContainerRegistry import ContainerRegistry from UM.MimeTypeDatabase import MimeTypeDatabase from UM.Job import Job from UM.Preferences import Preferences -from UM.Util import parseBool -from .WorkspaceDialog import WorkspaceDialog - -import xml.etree.ElementTree as ET 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.CuraContainerStack import _ContainerIndexes -from cura.QualityManager import QualityManager from cura.CuraApplication import CuraApplication -from configparser import ConfigParser -import zipfile -import io -import configparser -import os +from .WorkspaceDialog import WorkspaceDialog i18n_catalog = i18nCatalog("cura") +# +# HACK: +# +# In project loading, when override the existing machine is selected, the stacks and containers that are correctly +# active in the system will be overridden at runtime. Because the project loading is done in a different thread than +# the Qt thread, something else can kick in the middle of the process. One of them is the rendering. It will access +# the current stacks and container, which have not completely been updated yet, so Cura will crash in this case. +# +# This "@call_on_qt_thread" decorator makes sure that a function will always be called on the Qt thread (blocking). +# It is applied to the read() function of project loading so it can be guaranteed that only after the project loading +# process is completely done, everything else that needs to occupy the QT thread will be executed. +# +class InterCallObject: + def __init__(self): + self.finish_event = threading.Event() + self.result = None + + +def call_on_qt_thread(func): + def _call_on_qt_thread_wrapper(*args, **kwargs): + def _handle_call(ico, *args, **kwargs): + ico.result = func(*args, **kwargs) + ico.finish_event.set() + inter_call_object = InterCallObject() + new_args = tuple([inter_call_object] + list(args)[:]) + CuraApplication.getInstance().callLater(_handle_call, *new_args, **kwargs) + inter_call_object.finish_event.wait() + return inter_call_object.result + return _call_on_qt_thread_wrapper + + +class ContainerInfo: + def __init__(self, file_name: str, serialized: str, parser: ConfigParser): + self.file_name = file_name + self.serialized = serialized + self.parser = parser + self.container = None + self.definition_id = None + + +class QualityChangesInfo: + def __init__(self): + self.name = None + self.global_info = None + self.extruder_info_dict = {} + + +class MachineInfo: + def __init__(self): + self.container_id = None + self.name = None + self.definition_id = None + self.quality_type = None + self.custom_quality_name = None + self.quality_changes_info = None + self.variant_info = None + + self.definition_changes_info = None + self.user_changes_info = None + + self.extruder_info_dict = {} + + +class ExtruderInfo: + def __init__(self): + self.position = None + self.variant_info = None + self.root_material_id = None + + self.definition_changes_info = None + self.user_changes_info = None + + ## Base implementation for reading 3MF workspace files. class ThreeMFWorkspaceReader(WorkspaceReader): def __init__(self): @@ -65,6 +136,18 @@ class ThreeMFWorkspaceReader(WorkspaceReader): # In Cura 2.5 and 2.6, the empty profiles used to have those long names self._old_empty_profile_id_dict = {"empty_%s" % k: "empty" for k in ["material", "variant"]} + self._is_same_machine_type = False + self._old_new_materials = {} + self._materials_to_select = {} + self._machine_info = None + + def _clearState(self): + self._is_same_machine_type = False + self._id_mapping = {} + self._old_new_materials = {} + self._materials_to_select = {} + self._machine_info = None + ## Get a unique name based on the old_id. This is different from directly calling the registry in that it caches results. # This has nothing to do with speed, but with getting consistent new naming for instances & objects. def getNewId(self, old_id): @@ -90,7 +173,7 @@ class ThreeMFWorkspaceReader(WorkspaceReader): # The default ContainerStack.deserialize() will connect signals, which is not desired in this case. # Since we know that the stack files are INI files, so we directly use the ConfigParser to parse them. serialized = archive.open(file_name).read().decode("utf-8") - stack_config = ConfigParser() + stack_config = ConfigParser(interpolation = None) stack_config.read_string(serialized) # sanity check @@ -116,6 +199,8 @@ class ThreeMFWorkspaceReader(WorkspaceReader): # \param file_name # \param show_dialog In case we use preRead() to check if a file is a valid project file, we don't want to show a dialog. def preRead(self, file_name, show_dialog=True, *args, **kwargs): + self._clearState() + self._3mf_mesh_reader = Application.getInstance().getMeshFileHandler().getReaderForFile(file_name) if self._3mf_mesh_reader and self._3mf_mesh_reader.preRead(file_name) == WorkspaceReader.PreReadResult.accepted: pass @@ -123,6 +208,7 @@ class ThreeMFWorkspaceReader(WorkspaceReader): Logger.log("w", "Could not find reader that was able to read the scene data for 3MF workspace") return WorkspaceReader.PreReadResult.failed + self._machine_info = MachineInfo() machine_type = "" variant_type_name = i18n_catalog.i18nc("@label", "Nozzle") @@ -130,11 +216,6 @@ class ThreeMFWorkspaceReader(WorkspaceReader): archive = zipfile.ZipFile(file_name, "r") cura_file_names = [name for name in archive.namelist() if name.startswith("Cura/")] - # A few lists of containers in this project files. - # When loading the global stack file, it may be associated with those containers, which may or may not be - # in Cura already, so we need to provide them as alternative search lists. - instance_container_list = [] - resolve_strategy_keys = ["machine", "material", "quality_changes"] self._resolve_strategies = {k: None for k in resolve_strategy_keys} containers_found_dict = {k: False for k in resolve_strategy_keys} @@ -142,23 +223,23 @@ class ThreeMFWorkspaceReader(WorkspaceReader): # # Read definition containers # + machine_definition_id = None machine_definition_container_count = 0 extruder_definition_container_count = 0 definition_container_files = [name for name in cura_file_names if name.endswith(self._definition_container_suffix)] - for each_definition_container_file in definition_container_files: - container_id = self._stripFileToId(each_definition_container_file) + for definition_container_file in definition_container_files: + container_id = self._stripFileToId(definition_container_file) definitions = self._container_registry.findDefinitionContainersMetadata(id = container_id) + serialized = archive.open(definition_container_file).read().decode("utf-8") if not definitions: - definition_container = DefinitionContainer(container_id) - definition_container.deserialize(archive.open(each_definition_container_file).read().decode("utf-8"), file_name = each_definition_container_file) - definition_container = definition_container.getMetaData() - + definition_container = DefinitionContainer.deserializeMetadata(serialized, container_id)[0] else: definition_container = definitions[0] definition_container_type = definition_container.get("type") if definition_container_type == "machine": + machine_definition_id = container_id machine_type = definition_container["name"] variant_type_name = definition_container.get("variants_name", variant_type_name) @@ -167,22 +248,29 @@ class ThreeMFWorkspaceReader(WorkspaceReader): extruder_definition_container_count += 1 else: Logger.log("w", "Unknown definition container type %s for %s", - definition_container_type, each_definition_container_file) + definition_container_type, definition_container_file) Job.yieldThread() if machine_definition_container_count != 1: - return WorkspaceReader.PreReadResult.failed #Not a workspace file but ordinary 3MF. + return WorkspaceReader.PreReadResult.failed # Not a workspace file but ordinary 3MF. material_labels = [] material_conflict = False xml_material_profile = self._getXmlProfileClass() + reverse_material_id_dict = {} if self._material_container_suffix is None: self._material_container_suffix = ContainerRegistry.getMimeTypeForContainer(xml_material_profile).preferredSuffix if xml_material_profile: material_container_files = [name for name in cura_file_names if name.endswith(self._material_container_suffix)] for material_container_file in material_container_files: container_id = self._stripFileToId(material_container_file) - material_labels.append(self._getMaterialLabelFromSerialized(archive.open(material_container_file).read().decode("utf-8"))) + + serialized = archive.open(material_container_file).read().decode("utf-8") + metadata_list = xml_material_profile.deserializeMetadata(serialized, container_id) + reverse_map = {metadata["id"]: container_id for metadata in metadata_list} + reverse_material_id_dict.update(reverse_map) + + material_labels.append(self._getMaterialLabelFromSerialized(serialized)) if self._container_registry.findContainersMetadata(id = container_id): #This material already exists. containers_found_dict["material"] = True if not self._container_registry.isReadOnly(container_id): # Only non readonly materials can be in conflict @@ -192,49 +280,52 @@ class ThreeMFWorkspaceReader(WorkspaceReader): # 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 = "" - quality_type = "" num_settings_overriden_by_quality_changes = 0 # How many settings are changed by the quality changes - num_settings_overriden_by_definition_changes = 0 # How many settings are changed by the definition changes num_user_settings = 0 quality_changes_conflict = False - definition_changes_conflict = False - for each_instance_container_file in instance_container_files: - container_id = self._stripFileToId(each_instance_container_file) - instance_container = InstanceContainer(container_id) + self._machine_info.quality_changes_info = QualityChangesInfo() - # Deserialize InstanceContainer by converting read data from bytes to string - instance_container.deserialize(archive.open(each_instance_container_file).read().decode("utf-8"), - file_name = each_instance_container_file) - instance_container_list.append(instance_container) + quality_changes_info_list = [] + instance_container_info_dict = {} # id -> parser + for instance_container_file_name in instance_container_files: + container_id = self._stripFileToId(instance_container_file_name) - container_type = instance_container.getMetaDataEntry("type") + serialized = archive.open(instance_container_file_name).read().decode("utf-8") + serialized = InstanceContainer._updateSerialized(serialized, instance_container_file_name) + parser = ConfigParser(interpolation = None) + parser.read_string(serialized) + container_info = ContainerInfo(instance_container_file_name, serialized, parser) + instance_container_info_dict[container_id] = container_info + + container_type = parser["metadata"]["type"] if container_type == "quality_changes": - quality_name = instance_container.getName() - num_settings_overriden_by_quality_changes += len(instance_container._instances) + quality_changes_info_list.append(container_info) + + if not parser.has_option("metadata", "position"): + self._machine_info.quality_changes_info.name = parser["general"]["name"] + self._machine_info.quality_changes_info.global_info = container_info + else: + position = parser["metadata"]["position"] + self._machine_info.quality_changes_info.extruder_info_dict[position] = container_info + + quality_name = parser["general"]["name"] + values = parser["values"] if parser.has_section("values") else dict() + num_settings_overriden_by_quality_changes += len(values) # Check if quality changes already exists. quality_changes = self._container_registry.findInstanceContainers(id = container_id) if quality_changes: containers_found_dict["quality_changes"] = True # Check if there really is a conflict by comparing the values + instance_container = InstanceContainer(container_id) + instance_container.deserialize(serialized, file_name = instance_container_file_name) if quality_changes[0] != instance_container: quality_changes_conflict = True - elif container_type == "definition_changes": - definition_name = instance_container.getName() - num_settings_overriden_by_definition_changes += len(instance_container._instances) - # Check if definition changes already exists. - definition_changes = self._container_registry.findInstanceContainers(id = container_id) - # Check if there is any difference the loaded settings from the project file and the settings in Cura. - if definition_changes: - containers_found_dict["definition_changes"] = True - # Check if there really is a conflict by comparing the values - if definition_changes[0] != instance_container: - definition_changes_conflict = True elif container_type == "quality": if not quality_name: - quality_name = instance_container.getName() + quality_name = parser["general"]["name"] elif container_type == "user": - num_user_settings += len(instance_container._instances) + 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) @@ -242,6 +333,9 @@ class ThreeMFWorkspaceReader(WorkspaceReader): Job.yieldThread() + if self._machine_info.quality_changes_info.global_info is None: + self._machine_info.quality_changes_info = None + # Load ContainerStack files and ExtruderStack files global_stack_file, extruder_stack_files = self._determineGlobalAndExtruderStackFiles( file_name, cura_file_names) @@ -250,10 +344,11 @@ class ThreeMFWorkspaceReader(WorkspaceReader): # - the global stack exists but some/all of the extruder stacks DON'T exist # - the global stack DOESN'T exist but some/all of the extruder stacks exist # To simplify this, only check if the global stack exists or not - container_id = self._stripFileToId(global_stack_file) + global_stack_id = self._stripFileToId(global_stack_file) serialized = archive.open(global_stack_file).read().decode("utf-8") machine_name = self._getMachineNameFromSerializedStack(serialized) - stacks = self._container_registry.findContainerStacks(id = container_id) + stacks = self._container_registry.findContainerStacks(name = machine_name, type = "machine") + self._is_same_machine_type = True if stacks: global_stack = stacks[0] containers_found_dict["machine"] = True @@ -265,30 +360,79 @@ class ThreeMFWorkspaceReader(WorkspaceReader): if global_stack.getContainer(index).getId() != container_id: machine_conflict = True break + self._is_same_machine_type = global_stack.definition.getId() == machine_definition_id + + # Get quality type + parser = ConfigParser(interpolation = None) + parser.read_string(serialized) + quality_container_id = parser["containers"][str(_ContainerIndexes.Quality)] + quality_type = instance_container_info_dict[quality_container_id].parser["metadata"]["quality_type"] + + # Get machine info + serialized = archive.open(global_stack_file).read().decode("utf-8") + serialized = GlobalStack._updateSerialized(serialized, global_stack_file) + parser = ConfigParser(interpolation = None) + parser.read_string(serialized) + definition_changes_id = parser["containers"][str(_ContainerIndexes.DefinitionChanges)] + if definition_changes_id not in ("empty", "empty_definition_changes"): + self._machine_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"): + self._machine_info.user_changes_info = instance_container_info_dict[user_changes_id] + + # Also check variant and material in case it doesn't have extruder stacks + if not extruder_stack_files: + position = "0" + + extruder_info = ExtruderInfo() + extruder_info.position = position + variant_id = parser["containers"][str(_ContainerIndexes.Variant)] + material_id = parser["containers"][str(_ContainerIndexes.Material)] + if variant_id not in ("empty", "empty_variant"): + 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 + self._machine_info.extruder_info_dict[position] = extruder_info + else: + 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] + Job.yieldThread() # if the global stack is found, we check if there are conflicts in the extruder stacks - if containers_found_dict["machine"] and not machine_conflict: - for extruder_stack_file in extruder_stack_files: - serialized = archive.open(extruder_stack_file).read().decode("utf-8") - parser = configparser.ConfigParser() - parser.read_string(serialized) + for extruder_stack_file in extruder_stack_files: + serialized = archive.open(extruder_stack_file).read().decode("utf-8") + serialized = ExtruderStack._updateSerialized(serialized, extruder_stack_file) + parser = ConfigParser(interpolation = None) + parser.read_string(serialized) - # The check should be done for the extruder stack that's associated with the existing global stack, - # and those extruder stacks may have different IDs. - # So we check according to the positions + # The check should be done for the extruder stack that's associated with the existing global stack, + # and those extruder stacks may have different IDs. + # So we check according to the positions + position = parser["metadata"]["position"] + variant_id = parser["containers"][str(_ContainerIndexes.Variant)] + material_id = parser["containers"][str(_ContainerIndexes.Material)] - position = str(parser["metadata"]["position"]) + extruder_info = ExtruderInfo() + extruder_info.position = position + if variant_id not in ("empty", "empty_variant"): + 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 + + if not machine_conflict and containers_found_dict["machine"]: if position not in global_stack.extruders: - # The extruder position defined in the project doesn't exist in this global stack. - # We can say that it is a machine conflict, but it is very hard to override the machine in this - # case because we need to override the existing extruders and add the non-existing extruders. - # - # HACK: - # To make this simple, we simply say that there is no machine conflict and create a new machine - # by default. - machine_conflict = False - break + continue existing_extruder_stack = global_stack.extruders[position] # check if there are any changes at all in any of the container stacks. @@ -329,10 +473,18 @@ class ThreeMFWorkspaceReader(WorkspaceReader): extruders = num_extruders * [""] + self._machine_info.container_id = global_stack_id + self._machine_info.name = machine_name + self._machine_info.definition_id = machine_definition_id + self._machine_info.quality_type = quality_type + self._machine_info.custom_quality_name = quality_name + + if machine_conflict and not self._is_same_machine_type: + machine_conflict = False + # Show the dialog, informing the user what is about to happen. self._dialog.setMachineConflict(machine_conflict) self._dialog.setQualityChangesConflict(quality_changes_conflict) - self._dialog.setDefinitionChangesConflict(definition_changes_conflict) self._dialog.setMaterialConflict(material_conflict) self._dialog.setHasVisibleSettingsField(has_visible_settings_string) self._dialog.setNumVisibleSettings(num_visible_settings) @@ -375,7 +527,7 @@ class ThreeMFWorkspaceReader(WorkspaceReader): ## Overrides an ExtruderStack in the given GlobalStack and returns the new ExtruderStack. def _overrideExtruderStack(self, global_stack, extruder_file_content, extruder_stack_file): # Get extruder position first - extruder_config = configparser.ConfigParser() + extruder_config = ConfigParser(interpolation = None) extruder_config.read_string(extruder_file_content) if not extruder_config.has_option("metadata", "position"): msg = "Could not find 'metadata/position' in extruder stack file" @@ -401,7 +553,29 @@ class ThreeMFWorkspaceReader(WorkspaceReader): # containing global.cfg / extruder.cfg # # \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") cura_file_names = [name for name in archive.namelist() if name.startswith("Cura/")] @@ -420,6 +594,7 @@ class ThreeMFWorkspaceReader(WorkspaceReader): Logger.log("w", "Workspace did not contain visible settings. Leaving visibility unchanged") else: global_preferences.setValue("general/visible_settings", visible_settings) + global_preferences.setValue("cura/active_setting_visibility_preset", "custom") categories_expanded = temp_preferences.getValue("cura/categories_expanded") if categories_expanded is None: @@ -427,52 +602,24 @@ class ThreeMFWorkspaceReader(WorkspaceReader): else: global_preferences.setValue("cura/categories_expanded", categories_expanded) - Application.getInstance().expandedCategoriesChanged.emit() # Notify the GUI of the change + application.expandedCategoriesChanged.emit() # Notify the GUI of the change - self._id_mapping = {} + # If a machine with the same name is of a different type, always create a new one. + if not self._is_same_machine_type or self._resolve_strategies["machine"] != "override": + # We need to create a new machine + machine_name = self._container_registry.uniqueName(self._machine_info.name) - # We don't add containers right away, but wait right until right before the stack serialization. - # We do this so that if something goes wrong, it's easier to clean up. - containers_to_add = [] + global_stack = CuraStackBuilder.createMachine(machine_name, self._machine_info.definition_id) + extruder_stack_dict = global_stack.extruders - global_stack_file, extruder_stack_files = self._determineGlobalAndExtruderStackFiles(file_name, cura_file_names) + self._container_registry.addContainer(global_stack) + else: + # Find the machine + global_stack = self._container_registry.findContainerStacks(name = self._machine_info.name, type = "machine")[0] + extruder_stacks = self._container_registry.findContainerStacks(machine = global_stack.getId(), + type = "extruder_train") + extruder_stack_dict = {stack.getMetaDataEntry("position"): stack for stack in extruder_stacks} - global_stack = None - extruder_stacks = [] - extruder_stacks_added = [] - container_stacks_added = [] - machine_extruder_count = None - - containers_added = [] - - global_stack_id_original = self._stripFileToId(global_stack_file) - global_stack_id_new = global_stack_id_original - global_stack_name_original = self._getMachineNameFromSerializedStack(archive.open(global_stack_file).read().decode("utf-8")) - global_stack_name_new = global_stack_name_original - global_stack_need_rename = False - - extruder_stack_id_map = {} # new and old ExtruderStack IDs map - if self._resolve_strategies["machine"] == "new": - # We need a new id if the id already exists - if self._container_registry.findContainerStacksMetadata(id = global_stack_id_original): - global_stack_id_new = self.getNewId(global_stack_id_original) - global_stack_need_rename = True - - if self._container_registry.findContainerStacksMetadata(name = global_stack_id_original): - global_stack_name_new = self._container_registry.uniqueName(global_stack_name_original) - - for each_extruder_stack_file in extruder_stack_files: - old_container_id = self._stripFileToId(each_extruder_stack_file) - new_container_id = old_container_id - if self._container_registry.findContainerStacksMetadata(id = old_container_id): - # get a new name for this extruder - new_container_id = self.getNewId(old_container_id) - - extruder_stack_id_map[old_container_id] = new_container_id - - # TODO: For the moment we use pretty naive existence checking. If the ID is the same, we assume in quite a few - # TODO: cases that the container loaded is the same (most notable in materials & definitions). - # TODO: It might be possible that we need to add smarter checking in the future. Logger.log("d", "Workspace loading is checking definitions...") # Get all the definition files & check if they exist. If not, add them. definition_container_files = [name for name in cura_file_names if name.endswith(self._definition_container_suffix)] @@ -487,7 +634,6 @@ class ThreeMFWorkspaceReader(WorkspaceReader): Job.yieldThread() Logger.log("d", "Workspace loading is checking materials...") - material_containers = [] # Get all the material files and check if they exist. If not, add them. xml_material_profile = self._getXmlProfileClass() if self._material_container_suffix is None: @@ -495,520 +641,57 @@ class ThreeMFWorkspaceReader(WorkspaceReader): if xml_material_profile: material_container_files = [name for name in cura_file_names if name.endswith(self._material_container_suffix)] for material_container_file in material_container_files: + to_deserialize_material = False container_id = self._stripFileToId(material_container_file) + need_new_name = False materials = self._container_registry.findInstanceContainers(id = container_id) if not materials: - material_container = xml_material_profile(container_id) - material_container.deserialize(archive.open(material_container_file).read().decode("utf-8"), - file_name = material_container_file) - containers_to_add.append(material_container) + # No material found, deserialize this material later and add it + to_deserialize_material = True else: material_container = materials[0] - if not self._container_registry.isReadOnly(container_id): # Only create new materials if they are not read only. + old_material_root_id = material_container.getMetaDataEntry("base_file") + if not self._container_registry.isReadOnly(old_material_root_id): # Only create new materials if they are not read only. + to_deserialize_material = True + if self._resolve_strategies["material"] == "override": - material_container.deserialize(archive.open(material_container_file).read().decode("utf-8"), - file_name = material_container_file) + # 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) elif self._resolve_strategies["material"] == "new": # Note that we *must* deserialize it with a new ID, as multiple containers will be # auto created & added. - material_container = xml_material_profile(self.getNewId(container_id)) - material_container.deserialize(archive.open(material_container_file).read().decode("utf-8"), - file_name = material_container_file) - containers_to_add.append(material_container) + container_id = self.getNewId(container_id) + self._old_new_materials[old_material_root_id] = container_id + need_new_name = True - material_containers.append(material_container) + if to_deserialize_material: + material_container = xml_material_profile(container_id) + material_container.deserialize(archive.open(material_container_file).read().decode("utf-8"), + file_name = container_id + "." + self._material_container_suffix) + if need_new_name: + new_name = ContainerRegistry.getInstance().uniqueName(material_container.getName()) + material_container.setName(new_name) + material_container.setDirty(True) + self._container_registry.addContainer(material_container) Job.yieldThread() - Logger.log("d", "Workspace loading is checking instance containers...") - # Get quality_changes and user profiles saved in the workspace - instance_container_files = [name for name in cura_file_names if name.endswith(self._instance_container_suffix)] - user_instance_containers = [] - quality_and_definition_changes_instance_containers = [] - for instance_container_file in instance_container_files: - container_id = self._stripFileToId(instance_container_file) - serialized = archive.open(instance_container_file).read().decode("utf-8") + # Handle quality changes if any + self._processQualityChanges(global_stack) - # HACK! we ignore "quality" and "variant" instance containers! - parser = configparser.ConfigParser() - parser.read_string(serialized) - if not parser.has_option("metadata", "type"): - Logger.log("w", "Cannot find metadata/type in %s, ignoring it", instance_container_file) - continue - if parser.get("metadata", "type") in self._ignored_instance_container_types: - continue - - instance_container = InstanceContainer(container_id) - - # Deserialize InstanceContainer by converting read data from bytes to string - instance_container.deserialize(serialized, file_name = instance_container_file) - container_type = instance_container.getMetaDataEntry("type") - Job.yieldThread() - - # - # IMPORTANT: - # If an instance container (or maybe other type of container) exists, and user chooses "Create New", - # we need to rename this container and all references to it, and changing those references are VERY - # HARD. - # - if 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 - elif container_type == "user": - # Check if quality changes already exists. - user_containers = self._container_registry.findInstanceContainers(id = container_id) - if not user_containers: - containers_to_add.append(instance_container) - else: - if self._resolve_strategies["machine"] == "override" or self._resolve_strategies["machine"] is None: - instance_container = user_containers[0] - instance_container.deserialize(archive.open(instance_container_file).read().decode("utf-8"), - file_name = instance_container_file) - instance_container.setDirty(True) - elif self._resolve_strategies["machine"] == "new": - # The machine is going to get a spiffy new name, so ensure that the id's of user settings match. - old_extruder_id = instance_container.getMetaDataEntry("extruder", None) - if old_extruder_id: - new_extruder_id = extruder_stack_id_map[old_extruder_id] - new_id = new_extruder_id + "_current_settings" - instance_container.setMetaDataEntry("id", new_id) - instance_container.setName(new_id) - instance_container.setMetaDataEntry("extruder", new_extruder_id) - containers_to_add.append(instance_container) - - machine_id = instance_container.getMetaDataEntry("machine", None) - if machine_id: - new_machine_id = self.getNewId(machine_id) - new_id = new_machine_id + "_current_settings" - instance_container.setMetaDataEntry("id", new_id) - instance_container.setName(new_id) - instance_container.setMetaDataEntry("machine", new_machine_id) - containers_to_add.append(instance_container) - user_instance_containers.append(instance_container) - elif container_type in ("quality_changes", "definition_changes"): - # Check if quality changes already exists. - changes_containers = self._container_registry.findInstanceContainers(id = container_id) - if not changes_containers: - # no existing containers with the same ID, so we can safely add the new one - containers_to_add.append(instance_container) - else: - # we have found existing container with the same ID, so we need to resolve according to the - # selected strategy. - if self._resolve_strategies[container_type] == "override": - instance_container = changes_containers[0] - instance_container.deserialize(archive.open(instance_container_file).read().decode("utf-8"), - file_name = instance_container_file) - instance_container.setDirty(True) - - elif self._resolve_strategies[container_type] == "new": - # TODO: how should we handle the case "new" for quality_changes and definition_changes? - - instance_container.setName(self._container_registry.uniqueName(instance_container.getName())) - new_changes_container_id = self.getNewId(instance_container.getId()) - instance_container.setMetaDataEntry("id", new_changes_container_id) - - # TODO: we don't know the following is correct or not, need to verify - # AND REFACTOR!!! - if self._resolve_strategies["machine"] == "new": - # The machine is going to get a spiffy new name, so ensure that the id's of user settings match. - old_extruder_id = instance_container.getMetaDataEntry("extruder", None) - # Note that in case of a quality_changes extruder means the definition id of the extruder stack - # For the user settings, it means the actual extruder stack id it's assigned to. - if old_extruder_id and old_extruder_id in extruder_stack_id_map: - new_extruder_id = extruder_stack_id_map[old_extruder_id] - instance_container.setMetaDataEntry("extruder", new_extruder_id) - - machine_id = instance_container.getMetaDataEntry("machine", None) - if machine_id: - new_machine_id = self.getNewId(machine_id) - instance_container.setMetaDataEntry("machine", new_machine_id) - - containers_to_add.append(instance_container) - - elif self._resolve_strategies[container_type] is None: - # The ID already exists, but nothing in the values changed, so do nothing. - pass - quality_and_definition_changes_instance_containers.append(instance_container) - - if container_type == "definition_changes": - definition_changes_extruder_count = instance_container.getProperty("machine_extruder_count", "value") - if definition_changes_extruder_count is not None: - machine_extruder_count = definition_changes_extruder_count - - else: - existing_container = self._container_registry.findInstanceContainersMetadata(id = container_id) - if not existing_container: - containers_to_add.append(instance_container) - if global_stack_need_rename: - if instance_container.getMetaDataEntry("machine"): - instance_container.setMetaDataEntry("machine", global_stack_id_new) - - # Add all the containers right before we try to add / serialize the stack - for container in containers_to_add: - self._container_registry.addContainer(container) - container.setDirty(True) - containers_added.append(container) - - # Get the stack(s) saved in the workspace. - Logger.log("d", "Workspace loading is checking stacks containers...") - - # load global stack file - try: - stack = None - - if self._resolve_strategies["machine"] == "override": - container_stacks = self._container_registry.findContainerStacks(id = global_stack_id_original) - stack = container_stacks[0] - - # HACK - # There is a machine, check if it has authentication data. If so, keep that data. - network_authentication_id = stack.getMetaDataEntry("network_authentication_id") - network_authentication_key = stack.getMetaDataEntry("network_authentication_key") - stack.deserialize(archive.open(global_stack_file).read().decode("utf-8"), file_name = global_stack_file) - if network_authentication_id: - stack.addMetaDataEntry("network_authentication_id", network_authentication_id) - if network_authentication_key: - stack.addMetaDataEntry("network_authentication_key", network_authentication_key) - - elif self._resolve_strategies["machine"] == "new": - # create a new global stack - stack = GlobalStack(global_stack_id_new) - # Deserialize stack by converting read data from bytes to string - stack.deserialize(archive.open(global_stack_file).read().decode("utf-8"), - file_name = global_stack_file) - - # Ensure a unique ID and name - stack.setMetaDataEntry("id", global_stack_id_new) - - # Only machines need a new name, stacks may be non-unique - stack.setName(global_stack_name_new) - - container_stacks_added.append(stack) - self._container_registry.addContainer(stack) - containers_added.append(stack) - else: - Logger.log("e", "Resolve strategy of %s for machine is not supported", self._resolve_strategies["machine"]) - - # Create a new definition_changes container if it was empty - if stack.definitionChanges == self._container_registry.getEmptyInstanceContainer(): - stack.setDefinitionChanges(CuraStackBuilder.createDefinitionChangesContainer(stack, stack.getId() + "_settings")) - global_stack = stack - Job.yieldThread() - except: - Logger.logException("w", "We failed to serialize the stack. Trying to clean up.") - # Something went really wrong. Try to remove any data that we added. - for container in containers_added: - self._container_registry.removeContainer(container.getId()) - return - - # load extruder stack files - try: - for extruder_stack_file in extruder_stack_files: - container_id = self._stripFileToId(extruder_stack_file) - extruder_file_content = archive.open(extruder_stack_file, "r").read().decode("utf-8") - - if self._resolve_strategies["machine"] == "override": - # deserialize new extruder stack over the current ones (if any) - stack = self._overrideExtruderStack(global_stack, extruder_file_content, extruder_stack_file) - if stack is None: - continue - - elif self._resolve_strategies["machine"] == "new": - new_id = extruder_stack_id_map[container_id] - stack = ExtruderStack(new_id) - - # HACK: the global stack can have a new name, so we need to make sure that this extruder stack - # references to the new name instead of the old one. Normally, this can be done after - # deserialize() by setting the metadata, but in the case of ExtruderStack, deserialize() - # also does addExtruder() to its machine stack, so we have to make sure that it's pointing - # to the right machine BEFORE deserialization. - extruder_config = configparser.ConfigParser() - extruder_config.read_string(extruder_file_content) - extruder_config.set("metadata", "machine", global_stack_id_new) - tmp_string_io = io.StringIO() - extruder_config.write(tmp_string_io) - extruder_file_content = tmp_string_io.getvalue() - - stack.deserialize(extruder_file_content, file_name = extruder_stack_file) - - # Ensure a unique ID and name - stack.setMetaDataEntry("id", new_id) - - self._container_registry.addContainer(stack) - extruder_stacks_added.append(stack) - containers_added.append(stack) - else: - Logger.log("w", "Unknown resolve strategy: %s", self._resolve_strategies["machine"]) - - # Create a new definition_changes container if it was empty - if stack.definitionChanges == self._container_registry.getEmptyInstanceContainer(): - stack.setDefinitionChanges(CuraStackBuilder.createDefinitionChangesContainer(stack, stack.getId() + "_settings")) - - if stack.getMetaDataEntry("type") == "extruder_train": - extruder_stacks.append(stack) - - # If not extruder stacks were saved in the project file (pre 3.1) create one manually - # We re-use the container registry's addExtruderStackForSingleExtrusionMachine method for this - if not extruder_stacks: - if self._resolve_strategies["machine"] == "new": - stack = self._container_registry.addExtruderStackForSingleExtrusionMachine(global_stack, "fdmextruder") - else: - stack = global_stack.extruders.get("0") - if not stack: - # this should not happen - Logger.log("e", "Cannot find any extruder in an existing global stack [%s].", global_stack.getId()) - if stack: - if global_stack.quality.getId() in ("empty", "empty_quality"): - stack.quality = empty_quality_container - if self._resolve_strategies["machine"] == "override": - # in case the extruder is newly created (for a single-extrusion machine), we need to override - # the existing extruder stack. - existing_extruder_stack = global_stack.extruders[stack.getMetaDataEntry("position")] - for idx in range(len(_ContainerIndexes.IndexTypeMap)): - existing_extruder_stack.replaceContainer(idx, stack._containers[idx], postpone_emit = True) - extruder_stacks.append(existing_extruder_stack) - else: - extruder_stacks.append(stack) - - except: - Logger.logException("w", "We failed to serialize the stack. Trying to clean up.") - # Something went really wrong. Try to remove any data that we added. - for container in containers_added: - self._container_registry.removeContainer(container.getId()) - return - - - # Check quality profiles to make sure that if one stack has the "not supported" quality profile, - # all others should have the same. - # - # This block code tries to fix the following problems in Cura 3.0 and earlier: - # 1. The upgrade script can rename all "Not Supported" quality profiles to "empty_quality", but it cannot fix - # the problem that the global stack the extruder stacks may have different quality profiles. The code - # below loops over all stacks and make sure that if there is one stack with "Not Supported" profile, the - # rest should also use the "Not Supported" profile. - # 2. In earlier versions (at least 2.7 and 3.0), a wrong quality profile could be assigned to a stack. For - # example, a UM3 can have a BB 0.8 variant with "aa04_pla_fast" quality profile enabled. To fix this, - # in the code below we also check the actual available quality profiles for the machine. - # - has_not_supported = False - for stack in [global_stack] + extruder_stacks: - if stack.quality.getId() in ("empty", "empty_quality"): - has_not_supported = True - break - - # We filter out extruder stacks that are not actually used, for example the UM3 and custom FDM printer extruder count setting. - extruder_stacks_in_use = extruder_stacks - if machine_extruder_count is not None: - extruder_stacks_in_use = extruder_stacks[:machine_extruder_count] - - available_quality = QualityManager.getInstance().findAllUsableQualitiesForMachineAndExtruders(global_stack, - extruder_stacks_in_use) - if not has_not_supported: - has_not_supported = not available_quality - - quality_has_been_changed = False - - if has_not_supported: - empty_quality_container = self._container_registry.findInstanceContainers(id = "empty_quality")[0] - for stack in [global_stack] + extruder_stacks_in_use: - stack.replaceContainer(_ContainerIndexes.Quality, empty_quality_container) - empty_quality_changes_container = self._container_registry.findInstanceContainers(id = "empty_quality_changes")[0] - for stack in [global_stack] + extruder_stacks_in_use: - stack.replaceContainer(_ContainerIndexes.QualityChanges, empty_quality_changes_container) - quality_has_been_changed = True - - else: - empty_quality_changes_container = self._container_registry.findInstanceContainers(id="empty_quality_changes")[0] - - # The machine in the project has non-empty quality and there are usable qualities for this machine. - # We need to check if the current quality_type is still usable for this machine, if not, then the quality - # will be reset to the "preferred quality" if present, otherwise "normal". - available_quality_types = [q.getMetaDataEntry("quality_type") for q in available_quality] - - if global_stack.quality.getMetaDataEntry("quality_type") not in available_quality_types: - # We are here because the quality_type specified in the project is not supported any more, - # so we need to switch it to the "preferred quality" if present, otherwise "normal". - quality_has_been_changed = True - - # find the preferred quality - preferred_quality_id = global_stack.getMetaDataEntry("preferred_quality", None) - if preferred_quality_id is not None: - definition_id = global_stack.definition.getId() - definition_id = global_stack.definition.getMetaDataEntry("quality_definition", definition_id) - if not parseBool(global_stack.getMetaDataEntry("has_machine_quality", "False")): - definition_id = "fdmprinter" - - containers = self._container_registry.findInstanceContainers(id = preferred_quality_id, - type = "quality", - definition = definition_id) - containers = [c for c in containers if not c.getMetaDataEntry("material", "")] - if containers: - global_stack.quality = containers[0] - global_stack.qualityChanges = empty_quality_changes_container - # also find the quality containers for the extruders - for extruder_stack in extruder_stacks_in_use: - search_criteria = {"id": preferred_quality_id, - "type": "quality", - "definition": definition_id} - if global_stack.getMetaDataEntry("has_machine_materials") and extruder_stack.material.getId() not in ("empty", "empty_material"): - search_criteria["material"] = extruder_stack.material.getId() - containers = self._container_registry.findInstanceContainers(**search_criteria) - if containers: - extruder_stack.quality = containers[0] - extruder_stack.qualityChanges = empty_quality_changes_container - else: - Logger.log("e", "Cannot find preferred quality for extruder [%s].", extruder_stack.getId()) - - else: - # we cannot find the preferred quality. THIS SHOULD NOT HAPPEN - Logger.log("e", "Cannot find the preferred quality for machine [%s]", global_stack.getId()) - else: - # The quality_type specified in the project file is usable, but the quality container itself may not - # be correct. For example, for UM2, the quality container can be "draft" while it should be "um2_draft" - # instead. - # In this code branch, we try to fix those incorrect quality containers. - # - # ***IMPORTANT***: We only do this fix for single-extrusion machines. - # We will first find the correct quality profile for the extruder, then apply the same - # quality profile for the global stack. - # - if len(extruder_stacks) == 1: - extruder_stack = extruder_stacks[0] - - search_criteria = {"type": "quality", "quality_type": global_stack.quality.getMetaDataEntry("quality_type")} - search_criteria["definition"] = global_stack.definition.getId() - if not parseBool(global_stack.getMetaDataEntry("has_machine_quality", "False")): - search_criteria["definition"] = "fdmprinter" - - if global_stack.getMetaDataEntry("has_machine_materials") and extruder_stack.material.getId() not in ("empty", "empty_material"): - search_criteria["material"] = extruder_stack.material.getId() - containers = self._container_registry.findInstanceContainers(**search_criteria) - if containers: - new_quality_container = containers[0] - extruder_stack.quality = new_quality_container - global_stack.quality = new_quality_container - - # Replacing the old containers if resolve is "new". - # When resolve is "new", some containers will get renamed, so all the other containers that reference to those - # MUST get updated too. - # - if self._resolve_strategies["machine"] == "new": - # A new machine was made, but it was serialized with the wrong user container. Fix that now. - for container in user_instance_containers: - # replacing the container ID for user instance containers for the extruders - extruder_id = container.getMetaDataEntry("extruder", None) - if extruder_id: - for extruder in extruder_stacks: - if extruder.getId() == extruder_id: - extruder.userChanges = container - continue - - # replacing the container ID for user instance containers for the machine - machine_id = container.getMetaDataEntry("machine", None) - if machine_id: - if global_stack.getId() == machine_id: - global_stack.userChanges = container - continue - - changes_container_types = ("quality_changes", "definition_changes") - if quality_has_been_changed: - # DO NOT replace quality_changes if the current quality_type is not supported - changes_container_types = ("definition_changes",) - for changes_container_type in changes_container_types: - if self._resolve_strategies[changes_container_type] == "new": - # Quality changes needs to get a new ID, added to registry and to the right stacks - for each_changes_container in quality_and_definition_changes_instance_containers: - # NOTE: The renaming and giving new IDs are possibly redundant because they are done in the - # instance container loading part. - new_id = each_changes_container.getId() - - # Find the old (current) changes container in the global stack - if changes_container_type == "quality_changes": - old_container = global_stack.qualityChanges - elif changes_container_type == "definition_changes": - old_container = global_stack.definitionChanges - - # sanity checks - # NOTE: The following cases SHOULD NOT happen!!!! - if not old_container: - Logger.log("e", "We try to get [%s] from the global stack [%s] but we got None instead!", - changes_container_type, global_stack.getId()) - - # Replace the quality/definition changes container if it's in the GlobalStack - # NOTE: we can get an empty container here, but the IDs will not match, - # so this comparison is fine. - if self._id_mapping.get(old_container.getId()) == new_id: - if changes_container_type == "quality_changes": - global_stack.qualityChanges = each_changes_container - elif changes_container_type == "definition_changes": - global_stack.definitionChanges = each_changes_container - continue - - # Replace the quality/definition changes container if it's in one of the ExtruderStacks - for each_extruder_stack in extruder_stacks: - changes_container = None - if changes_container_type == "quality_changes": - changes_container = each_extruder_stack.qualityChanges - elif changes_container_type == "definition_changes": - changes_container = each_extruder_stack.definitionChanges - - # sanity checks - # NOTE: The following cases SHOULD NOT happen!!!! - if not changes_container: - Logger.log("e", "We try to get [%s] from the extruder stack [%s] but we got None instead!", - changes_container_type, each_extruder_stack.getId()) - - # NOTE: we can get an empty container here, but the IDs will not match, - # so this comparison is fine. - if self._id_mapping.get(changes_container.getId()) == new_id: - if changes_container_type == "quality_changes": - each_extruder_stack.qualityChanges = each_changes_container - elif changes_container_type == "definition_changes": - each_extruder_stack.definitionChanges = each_changes_container - - if self._resolve_strategies["material"] == "new": - # the actual material instance container can have an ID such as - # __ - # which cannot be determined immediately, so here we use a HACK to find the right new material - # instance ID: - # - get the old material IDs for all material - # - find the old material with the longest common prefix in ID, that's the old material - # - update the name by replacing the old prefix with the new - # - find the new material container and set it to the stack - old_to_new_material_dict = {} - for each_material in material_containers: - # find the material's old name - for old_id, new_id in self._id_mapping.items(): - if each_material.getId() == new_id: - old_to_new_material_dict[old_id] = each_material - break - - # replace old material in global and extruder stacks with new - self._replaceStackMaterialWithNew(global_stack, old_to_new_material_dict) - if extruder_stacks: - for each_extruder_stack in extruder_stacks: - self._replaceStackMaterialWithNew(each_extruder_stack, old_to_new_material_dict) - - if extruder_stacks: - for stack in extruder_stacks: - ExtruderManager.getInstance().registerExtruder(stack, global_stack.getId()) + # Prepare the machine + self._applyChangesToMachine(global_stack, extruder_stack_dict) Logger.log("d", "Workspace loading is notifying rest of the code of changes...") - - if self._resolve_strategies["machine"] == "new": - for stack in extruder_stacks: - stack.setNextStack(global_stack) - stack.containersChanged.emit(stack.getTop()) - else: - if quality_has_been_changed: - CuraApplication.getInstance().getMachineManager().activeQualityChanged.emit() - # Actually change the active machine. - Application.getInstance().setGlobalContainerStack(global_stack) - - # Notify everything/one that is to notify about changes. - global_stack.containersChanged.emit(global_stack.getTop()) + # + # This is scheduled for later is because it depends on the Variant/Material/Qualitiy Managers to have the latest + # data, but those managers will only update upon a container/container metadata changed signal. Because this + # function is running on the main thread (Qt thread), although those "changed" signals have been emitted, but + # they won't take effect until this function is done. + # To solve this, we schedule _updateActiveMachine() for later so it will have the latest data. + self._updateActiveMachine(global_stack) # Load all the nodes / meshdata of the workspace nodes = self._3mf_mesh_reader.read(file_name) @@ -1021,60 +704,275 @@ class ThreeMFWorkspaceReader(WorkspaceReader): self.setWorkspaceName(base_file_name) return nodes - ## HACK: Replaces the material container in the given stack with a newly created material container. - # This function is used when the user chooses to resolve material conflicts by creating new ones. - def _replaceStackMaterialWithNew(self, stack, old_new_material_dict): - # The material containers in the project file are 'parent' material such as "generic_pla", - # but a material container used in a global/extruder stack is a 'child' material, - # such as "generic_pla_ultimaker3_AA_0.4", which can be formalised as the following: - # - # __ - # - # In the project loading, when a user chooses to resolve material conflicts by creating new ones, - # the old 'parent' material ID and the new 'parent' material ID are known, but not the child material IDs. - # In this case, the global stack and the extruder stacks need to use the newly created material, but the - # material containers they use are 'child' material. So, here, we need to find the right 'child' material for - # the stacks. - # - # This hack approach works as follows: - # - No matter there is a child material or not, the actual material we are looking for has the prefix - # "", which is the old material name. For the material in a stack, we know that the new - # material's ID will be "_blabla..", so we just need to replace the old material ID - # with the new one to get the new 'child' material. - # - Because the material containers have IDs such as "m #nn", if we use simple prefix matching, there can - # be a problem in the following scenario: - # - there are two materials in the project file, namely "m #1" and "m #11" - # - the child materials in use are for example: "m #1_um3_aa04", "m #11_um3_aa04" - # - if we only check for a simple prefix match, then "m #11_um3_aa04" will match with "m #1", but they - # are not the same material - # To avoid this, when doing the prefix matching, we use the result with the longest mactching prefix. + def _processQualityChanges(self, global_stack): + if self._machine_info.quality_changes_info is None: + return - # find the old material ID - old_material_id_in_stack = stack.material.getId() - best_matching_old_material_id = None - best_matching_old_material_prefix_length = -1 - for old_parent_material_id in old_new_material_dict: - if len(old_parent_material_id) < best_matching_old_material_prefix_length: + 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: + Logger.log("i", "Loading custom profile [%s] from project file", + 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_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_name = quality_changes_info.name + create_new = self._resolve_strategies.get("quality_changes") != "override" + if create_new: + container_info_dict = {None: self._machine_info.quality_changes_info.global_info} + container_info_dict.update(quality_changes_info.extruder_info_dict) + + quality_changes_name = self._container_registry.uniqueName(quality_changes_name) + for position, container_info in container_info_dict.items(): + extruder_stack = None + 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) + container_info.container = container + container.setDirty(True) + self._container_registry.addContainer(container) + + Logger.log("d", "Created new quality changes container [%s]", container.getId()) + + else: + # Find the existing containers + quality_changes_containers = self._container_registry.findInstanceContainers(name = quality_changes_name, + type = "quality_changes") + for container in quality_changes_containers: + extruder_position = container.getMetaDataEntry("position") + if extruder_position is None: + quality_changes_info.global_info.container = container + else: + if extruder_position not in quality_changes_info.extruder_info_dict: + quality_changes_info.extruder_info_dict[extruder_position] = ContainerInfo(None, None, None) + container_info = quality_changes_info.extruder_info_dict[extruder_position] + container_info.container = container + + # If there is no quality changes for any extruder, create one. + if not quality_changes_info.extruder_info_dict: + container_info = ContainerInfo(None, None, None) + quality_changes_info.extruder_info_dict["0"] = container_info + extruder_stack = global_stack.extruders["0"] + + container = quality_manager._createQualityChanges(quality_changes_quality_type, quality_changes_name, + global_stack, extruder_stack) + container_info.container = container + container.setDirty(True) + self._container_registry.addContainer(container) + + Logger.log("d", "Created new quality changes container [%s]", container.getId()) + + # Clear all existing containers + quality_changes_info.global_info.container.clear() + for container_info in quality_changes_info.extruder_info_dict.values(): + container_info.container.clear() + + # Loop over everything and override the existing containers + global_info = quality_changes_info.global_info + global_info.container.clear() # Clear all + for key, value in global_info.parser["values"].items(): + if not machine_definition_for_quality.getProperty(key, "settable_per_extruder"): + global_info.container.setProperty(key, "value", value) + else: + quality_changes_info.extruder_info_dict["0"].container.setProperty(key, "value", value) + + for position, container_info in quality_changes_info.extruder_info_dict.items(): + if container_info.parser is None: + continue + + 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) + container_info.container = container + + for key, value in container_info.parser["values"].items(): + container_info.container.setProperty(key, "value", value) + + self._machine_info.quality_changes_info.name = quality_changes_name + + def _clearStack(self, stack): + application = CuraApplication.getInstance() + + stack.definitionChanges.clear() + stack.variant = application.empty_variant_container + stack.material = application.empty_material_container + stack.quality = application.empty_quality_container + stack.qualityChanges = application.empty_quality_changes_container + stack.userChanges.clear() + + def _applyDefinitionChanges(self, global_stack, extruder_stack_dict): + values_to_set_for_extruders = {} + if self._machine_info.definition_changes_info is not None: + parser = self._machine_info.definition_changes_info.parser + for key, value in parser["values"].items(): + if global_stack.getProperty(key, "settable_per_extruder"): + values_to_set_for_extruders[key] = value + else: + global_stack.definitionChanges.setProperty(key, "value", value) + + for position, extruder_stack in extruder_stack_dict.items(): + if position not in self._machine_info.extruder_info_dict: continue - if len(old_parent_material_id) <= len(old_material_id_in_stack): - if old_parent_material_id == old_material_id_in_stack[0:len(old_parent_material_id)]: - best_matching_old_material_prefix_length = len(old_parent_material_id) - best_matching_old_material_id = old_parent_material_id - if best_matching_old_material_id is None: - Logger.log("w", "Cannot find any matching old material ID for stack [%s] material [%s]. Something can go wrong", - stack.getId(), old_material_id_in_stack) - return + extruder_info = self._machine_info.extruder_info_dict[position] + if extruder_info.definition_changes_info is None: + continue + parser = extruder_info.definition_changes_info.parser + for key, value in values_to_set_for_extruders.items(): + extruder_stack.definitionChanges.setProperty(key, "value", value) + if parser is not None: + for key, value in parser["values"].items(): + extruder_stack.definitionChanges.setProperty(key, "value", value) - # find the new material container - new_material_id = old_new_material_dict[best_matching_old_material_id].getId() + old_material_id_in_stack[len(best_matching_old_material_id):] - new_material_containers = self._container_registry.findInstanceContainers(id = new_material_id, type = "material") - if not new_material_containers: - Logger.log("e", "Cannot find new material container [%s]", new_material_id) - return + def _applyUserChanges(self, global_stack, extruder_stack_dict): + values_to_set_for_extruder_0 = {} + if self._machine_info.user_changes_info is not None: + parser = self._machine_info.user_changes_info.parser + for key, value in parser["values"].items(): + if global_stack.getProperty(key, "settable_per_extruder"): + values_to_set_for_extruder_0[key] = value + else: + global_stack.userChanges.setProperty(key, "value", value) - # replace the material in the given stack - stack.material = new_material_containers[0] + 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.user_changes_info is not None: + parser = self._machine_info.extruder_info_dict[position].user_changes_info.parser + if position == "0": + for key, value in values_to_set_for_extruder_0.items(): + extruder_stack.userChanges.setProperty(key, "value", value) + if parser is not None: + for key, value in parser["values"].items(): + extruder_stack.userChanges.setProperty(key, "value", value) + + def _applyVariants(self, global_stack, extruder_stack_dict): + application = CuraApplication.getInstance() + variant_manager = application.getVariantManager() + + if self._machine_info.variant_info is not None: + parser = self._machine_info.variant_info.parser + variant_name = parser["general"]["name"] + + from cura.Machines.VariantManager import VariantType + variant_type = VariantType.BUILD_PLATE + + node = variant_manager.getVariantNode(global_stack.definition.getId(), variant_name, variant_type) + if node is not None: + global_stack.variant = node.getContainer() + + 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"] + from cura.Machines.VariantManager import VariantType + variant_type = VariantType.NOZZLE + + node = variant_manager.getVariantNode(global_stack.definition.getId(), variant_name, variant_type) + if node is not None: + extruder_stack.variant = node.getContainer() + + def _applyMaterials(self, global_stack, extruder_stack_dict): + application = CuraApplication.getInstance() + material_manager = application.getMaterialManager() + + # Force update lookup tables first + material_manager.initialize() + + 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.root_material_id is None: + continue + + root_material_id = extruder_info.root_material_id + root_material_id = self._old_new_materials.get(root_material_id, root_material_id) + + # get material diameter of this extruder + machine_material_diameter = extruder_stack.materialDiameter + material_node = material_manager.getMaterialNode(global_stack.definition.getId(), + extruder_stack.variant.getName(), + machine_material_diameter, + root_material_id) + if material_node is not None: + extruder_stack.material = material_node.getContainer() + + def _applyChangesToMachine(self, global_stack, extruder_stack_dict): + # Clear all first + self._clearStack(global_stack) + for extruder_stack in extruder_stack_dict.values(): + self._clearStack(extruder_stack) + + self._applyDefinitionChanges(global_stack, extruder_stack_dict) + self._applyUserChanges(global_stack, extruder_stack_dict) + self._applyVariants(global_stack, extruder_stack_dict) + self._applyMaterials(global_stack, extruder_stack_dict) + + # prepare the quality to select + self._quality_changes_to_apply = None + self._quality_type_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 + + 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() + + machine_manager.setActiveMachine(global_stack.getId()) + + 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: + 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) + 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) + + if quality_group is not None: + machine_manager.setQualityGroup(quality_group, no_dialog = True) + + # Notify everything/one that is to notify about changes. + global_stack.containersChanged.emit(global_stack.getTop()) def _stripFileToId(self, file): mime_type = MimeTypeDatabase.getMimeTypeForFile(file) @@ -1086,7 +984,7 @@ class ThreeMFWorkspaceReader(WorkspaceReader): ## Get the list of ID's of all containers in a container stack by partially parsing it's serialized data. def _getContainerIdListFromSerialized(self, serialized): - parser = configparser.ConfigParser(interpolation=None, empty_lines_in_values=False) + parser = ConfigParser(interpolation=None, empty_lines_in_values=False) parser.read_string(serialized) container_ids = [] @@ -1107,7 +1005,7 @@ class ThreeMFWorkspaceReader(WorkspaceReader): return container_ids def _getMachineNameFromSerializedStack(self, serialized): - parser = configparser.ConfigParser(interpolation=None, empty_lines_in_values=False) + parser = ConfigParser(interpolation=None, empty_lines_in_values=False) parser.read_string(serialized) return parser["general"].get("name", "") diff --git a/plugins/3MFReader/WorkspaceDialog.py b/plugins/3MFReader/WorkspaceDialog.py index 5b474843d5..bb31afd40b 100644 --- a/plugins/3MFReader/WorkspaceDialog.py +++ b/plugins/3MFReader/WorkspaceDialog.py @@ -52,7 +52,6 @@ class WorkspaceDialog(QObject): machineConflictChanged = pyqtSignal() qualityChangesConflictChanged = pyqtSignal() - definitionChangesConflictChanged = pyqtSignal() materialConflictChanged = pyqtSignal() numVisibleSettingsChanged = pyqtSignal() activeModeChanged = pyqtSignal() @@ -196,10 +195,6 @@ class WorkspaceDialog(QObject): def qualityChangesConflict(self): return self._has_quality_changes_conflict - @pyqtProperty(bool, notify=definitionChangesConflictChanged) - def definitionChangesConflict(self): - return self._has_definition_changes_conflict - @pyqtProperty(bool, notify=materialConflictChanged) def materialConflict(self): return self._has_material_conflict @@ -229,18 +224,11 @@ class WorkspaceDialog(QObject): self._has_quality_changes_conflict = quality_changes_conflict self.qualityChangesConflictChanged.emit() - def setDefinitionChangesConflict(self, definition_changes_conflict): - if self._has_definition_changes_conflict != definition_changes_conflict: - self._has_definition_changes_conflict = definition_changes_conflict - self.definitionChangesConflictChanged.emit() - def getResult(self): if "machine" in self._result and not self._has_machine_conflict: self._result["machine"] = None if "quality_changes" in self._result and not self._has_quality_changes_conflict: self._result["quality_changes"] = None - if "definition_changes" in self._result and not self._has_definition_changes_conflict: - self._result["definition_changes"] = None if "material" in self._result and not self._has_material_conflict: self._result["material"] = None diff --git a/plugins/3MFReader/WorkspaceDialog.qml b/plugins/3MFReader/WorkspaceDialog.qml index 826b488e02..5418dcef6d 100644 --- a/plugins/3MFReader/WorkspaceDialog.qml +++ b/plugins/3MFReader/WorkspaceDialog.qml @@ -390,6 +390,13 @@ UM.Dialog } } + function accept() { + manager.closeBackend(); + manager.onOkButtonClicked(); + base.visible = false; + base.accept(); + } + function reject() { manager.onCancelButtonClicked(); base.visible = false; diff --git a/plugins/3MFWriter/ThreeMFWorkspaceWriter.py b/plugins/3MFWriter/ThreeMFWorkspaceWriter.py index f07a37a25f..3f5e69317e 100644 --- a/plugins/3MFWriter/ThreeMFWorkspaceWriter.py +++ b/plugins/3MFWriter/ThreeMFWorkspaceWriter.py @@ -1,14 +1,15 @@ -# Copyright (c) 2017 Ultimaker B.V. +# Copyright (c) 2018 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. -from UM.Workspace.WorkspaceWriter import WorkspaceWriter +import configparser +from io import StringIO +import zipfile + from UM.Application import Application +from UM.Logger import Logger from UM.Preferences import Preferences from UM.Settings.ContainerRegistry import ContainerRegistry -from cura.Settings.ExtruderManager import ExtruderManager -import zipfile -from io import StringIO -import configparser +from UM.Workspace.WorkspaceWriter import WorkspaceWriter class ThreeMFWorkspaceWriter(WorkspaceWriter): @@ -16,7 +17,10 @@ class ThreeMFWorkspaceWriter(WorkspaceWriter): super().__init__() def write(self, stream, nodes, mode=WorkspaceWriter.OutputMode.BinaryMode): - mesh_writer = Application.getInstance().getMeshFileHandler().getWriter("3MFWriter") + application = Application.getInstance() + machine_manager = application.getMachineManager() + + mesh_writer = application.getMeshFileHandler().getWriter("3MFWriter") if not mesh_writer: # We need to have the 3mf mesh writer, otherwise we can't save the entire workspace return False @@ -29,17 +33,17 @@ class ThreeMFWorkspaceWriter(WorkspaceWriter): if archive is None: # This happens if there was no mesh data to write. archive = zipfile.ZipFile(stream, "w", compression = zipfile.ZIP_DEFLATED) - global_container_stack = Application.getInstance().getGlobalContainerStack() + global_stack = machine_manager.activeMachine # Add global container stack data to the archive. - self._writeContainerToArchive(global_container_stack, archive) + self._writeContainerToArchive(global_stack, archive) # Also write all containers in the stack to the file - for container in global_container_stack.getContainers(): + for container in global_stack.getContainers(): self._writeContainerToArchive(container, archive) # Check if the machine has extruders and save all that data as well. - for extruder_stack in ExtruderManager.getInstance().getMachineExtruders(global_container_stack.getId()): + for extruder_stack in global_stack.extruders.values(): self._writeContainerToArchive(extruder_stack, archive) for container in extruder_stack.getContainers(): self._writeContainerToArchive(container, archive) @@ -57,11 +61,11 @@ class ThreeMFWorkspaceWriter(WorkspaceWriter): # Save Cura version version_file = zipfile.ZipInfo("Cura/version.ini") - version_config_parser = configparser.ConfigParser() + version_config_parser = configparser.ConfigParser(interpolation = None) version_config_parser.add_section("versions") - version_config_parser.set("versions", "cura_version", Application.getInstance().getVersion()) - version_config_parser.set("versions", "build_type", Application.getInstance().getBuildType()) - version_config_parser.set("versions", "is_debug_mode", str(Application.getInstance().getIsDebugMode())) + version_config_parser.set("versions", "cura_version", application.getVersion()) + version_config_parser.set("versions", "build_type", application.getBuildType()) + version_config_parser.set("versions", "is_debug_mode", str(application.getIsDebugMode())) version_file_string = StringIO() version_config_parser.write(version_file_string) @@ -85,7 +89,8 @@ class ThreeMFWorkspaceWriter(WorkspaceWriter): # Some containers have a base file, which should then be the file to use. if "base_file" in container.getMetaData(): base_file = container.getMetaDataEntry("base_file") - container = ContainerRegistry.getInstance().findContainers(id = base_file)[0] + if base_file != container.getId(): + container = ContainerRegistry.getInstance().findContainers(id = base_file)[0] file_name = "Cura/%s.%s" % (container.getId(), file_suffix) @@ -97,7 +102,7 @@ class ThreeMFWorkspaceWriter(WorkspaceWriter): file_in_archive.compress_type = zipfile.ZIP_DEFLATED # Do not include the network authentication keys - ignore_keys = {"network_authentication_id", "network_authentication_key"} + ignore_keys = {"network_authentication_id", "network_authentication_key", "octoprint_api_key"} serialized_data = container.serialize(ignored_metadata_keys = ignore_keys) archive.writestr(file_in_archive, serialized_data) diff --git a/plugins/3MFWriter/ThreeMFWriter.py b/plugins/3MFWriter/ThreeMFWriter.py index c4b7035cf1..ff6333763a 100644 --- a/plugins/3MFWriter/ThreeMFWriter.py +++ b/plugins/3MFWriter/ThreeMFWriter.py @@ -68,7 +68,7 @@ class ThreeMFWriter(MeshWriter): if not isinstance(um_node, SceneNode): return None - active_build_plate_nr = CuraApplication.getInstance().getBuildPlateModel().activeBuildPlate + active_build_plate_nr = CuraApplication.getInstance().getMultiBuildPlateModel().activeBuildPlate if um_node.callDecoration("getBuildPlateNumber") != active_build_plate_nr: return diff --git a/plugins/AutoSave/AutoSave.py b/plugins/AutoSave/AutoSave.py index 331f328f2d..5fdac502b5 100644 --- a/plugins/AutoSave/AutoSave.py +++ b/plugins/AutoSave/AutoSave.py @@ -9,6 +9,7 @@ from UM.Application import Application from UM.Resources import Resources from UM.Logger import Logger + class AutoSave(Extension): def __init__(self): super().__init__() @@ -16,18 +17,40 @@ class AutoSave(Extension): Preferences.getInstance().preferenceChanged.connect(self._triggerTimer) self._global_stack = None - Application.getInstance().globalContainerStackChanged.connect(self._onGlobalStackChanged) - self._onGlobalStackChanged() Preferences.getInstance().addPreference("cura/autosave_delay", 1000 * 10) self._change_timer = QTimer() self._change_timer.setInterval(Preferences.getInstance().getValue("cura/autosave_delay")) self._change_timer.setSingleShot(True) - self._change_timer.timeout.connect(self._onTimeout) self._saving = False + # At this point, the Application instance has not finished its constructor call yet, so directly using something + # like Application.getInstance() is not correct. The initialisation now will only gets triggered after the + # application finishes its start up successfully. + self._init_timer = QTimer() + self._init_timer.setInterval(1000) + self._init_timer.setSingleShot(True) + self._init_timer.timeout.connect(self.initialize) + self._init_timer.start() + + def initialize(self): + # only initialise if the application is created and has started + from cura.CuraApplication import CuraApplication + if not CuraApplication.Created: + self._init_timer.start() + return + if not CuraApplication.getInstance().started: + self._init_timer.start() + return + + self._change_timer.timeout.connect(self._onTimeout) + Application.getInstance().globalContainerStackChanged.connect(self._onGlobalStackChanged) + self._onGlobalStackChanged() + + self._triggerTimer() + def _triggerTimer(self, *args): if not self._saving: self._change_timer.start() diff --git a/plugins/ChangeLogPlugin/ChangeLog.txt b/plugins/ChangeLogPlugin/ChangeLog.txt index de895b3e41..8a031c9eae 100755 --- a/plugins/ChangeLogPlugin/ChangeLog.txt +++ b/plugins/ChangeLogPlugin/ChangeLog.txt @@ -1,3 +1,55 @@ +[3.2.1] +*Bug fixes +- Fixed issues where Cura crashes on startup and loading profiles +- Updated translations +- Fixed an issue where the text would not render properly + +[3.2.0] +*Tree support +Experimental tree-like support structure that uses ‘branches’ to support prints. Branches ‘grow’ and multiply towards the model, with fewer contact points than alternative support methods. This results in better surface finishes for organic-shaped prints. + +*Adaptive layers +Prints with a variable layer thickness which adapts to the angle of the model’s surfaces. The result is high-quality surface finishes with a marginally increased print time. This setting can be found under the experimental category. + +*Faster startup +Printer definitions are now loaded when adding a printer, instead of loading all available printers on startup. + +*Backface culling in layer view +Doubled frame rate by only rendering visible surfaces of the model in the layer view, instead of rendering the entire model. Good for lower spec GPUs as it is less resource-intensive. + +*Multi build plate +Experimental feature that creates separate build plates with shared settings in a single session, eliminating the need to clear the build plate multiple times. Multiple build plates can be sliced and sent to a printer or printer group in Cura Connect. This feature must be enabled manually in the preferences ‘general’ tab. + +*Improved mesh type selection +New button in the left toolbar to edit per model settings, giving the user more control over where to place support. Objects can be used as meshes, with a drop down list where ‘Print as support’, ‘Don't overlap support with other models’, ‘Modify settings for overlap with other models’, or ‘Modify settings for infill of other models’ can be specified. Contributed by fieldOfView. + +*View optimization +Quick camera controls introduced in version 3.1 have been revised to create more accurate isometric, front, left, and right views. + +*Updated sidebar to QtQuick 2.0 +Application framework updated to increase speed, achieve a better width and style fit, and gives users dropdown menus that are styled to fit the enabled Ultimaker Cura theme, instead of the operating system’s theme. + +*Hide sidebar +The sidebar can now be hidden/shown by selecting View > Expand/Collapse Sidebar, or with the hotkey CMD + E (Mac) or CTRL + E (PC and Linux). + +*Disable ‘Send slice information’ +A shortcut to disable ‘Send slice information’ has been added to the first launch to make it easier for privacy-conscious users to keep slice information private. + +*Signed binaries (Windows) +For security-conscious users, the Windows installer and Windows binaries have been digitally signed to prevent “Unknown application” warnings and virus scanner false-positives. + +*Start/end gcode script per extruder +Variables from both extruders in the start and end gcode snippets can now be accessed and edited, creating uniformity between profiles in different slicing environments. Contributed by fieldOfView. + +*OctoPrint plugin added to plugin browser +This plugin enables printers managed with OctoPrint to print via Ultimaker Cura interface (version 3.2 or later). + +*Bugfixes +- Fixed a bug where the mirror tool and center model options when used together would reset the model transformations +- Updated config file path to fix crashes caused by user config files that are located on remote drives +- Updated Arduino drivers to fix triggering errors during OTA updates in shared environments. This also fixes an issue when upgrading the firmware of the Ultimaker Original. +- Fixed an issue where arranging small models would fail, due to conflict with small model files combined with the “Ensure models are kept apart” option + [3.1.0] *Profile added for 0.25 mm print core This new print core gives extra fine line widths which gives prints extra definition and surface quality. diff --git a/plugins/CuraEngineBackend/CuraEngineBackend.py b/plugins/CuraEngineBackend/CuraEngineBackend.py index 06d38eccd0..af6162c8d5 100755 --- a/plugins/CuraEngineBackend/CuraEngineBackend.py +++ b/plugins/CuraEngineBackend/CuraEngineBackend.py @@ -10,7 +10,6 @@ from UM.Logger import Logger from UM.Message import Message from UM.PluginRegistry import PluginRegistry from UM.Resources import Resources -from UM.Settings.Validator import ValidatorState #To find if a setting is in an error state. We can't slice then. from UM.Platform import Platform from UM.Scene.Iterator.DepthFirstIterator import DepthFirstIterator from UM.Qt.Duration import DurationFormat @@ -32,7 +31,11 @@ import Arcus from UM.i18n import i18nCatalog catalog = i18nCatalog("cura") + class CuraEngineBackend(QObject, Backend): + + backendError = Signal() + ## Starts the back-end plug-in. # # This registers all the signal listeners and prepares for communication @@ -59,23 +62,26 @@ class CuraEngineBackend(QObject, Backend): default_engine_location = execpath break + self._application = Application.getInstance() + self._multi_build_plate_model = None + self._machine_error_checker = None + if not default_engine_location: raise EnvironmentError("Could not find CuraEngine") - Logger.log("i", "Found CuraEngine at: %s" %(default_engine_location)) + Logger.log("i", "Found CuraEngine at: %s", default_engine_location) default_engine_location = os.path.abspath(default_engine_location) Preferences.getInstance().addPreference("backend/location", default_engine_location) # Workaround to disable layer view processing if layer view is not active. self._layer_view_active = False - Application.getInstance().getController().activeViewChanged.connect(self._onActiveViewChanged) - Application.getInstance().getBuildPlateModel().activeBuildPlateChanged.connect(self._onActiveViewChanged) self._onActiveViewChanged() + self._stored_layer_data = [] self._stored_optimized_layer_data = {} # key is build plate number, then arrays are stored until they go to the ProcessSlicesLayersJob - self._scene = Application.getInstance().getController().getScene() + self._scene = self._application.getController().getScene() self._scene.sceneChanged.connect(self._onSceneChanged) # Triggers for auto-slicing. Auto-slicing is triggered as follows: @@ -83,19 +89,10 @@ class CuraEngineBackend(QObject, Backend): # - whenever there is a value change, we start the timer # - sometimes an error check can get scheduled for a value change, in that case, we ONLY want to start the # auto-slicing timer when that error check is finished - # If there is an error check, it will set the "_is_error_check_scheduled" flag, stop the auto-slicing timer, - # and only wait for the error check to be finished to start the auto-slicing timer again. + # If there is an error check, stop the auto-slicing timer, and only wait for the error check to be finished + # to start the auto-slicing timer again. # self._global_container_stack = None - Application.getInstance().globalContainerStackChanged.connect(self._onGlobalStackChanged) - Application.getInstance().getExtruderManager().extrudersAdded.connect(self._onGlobalStackChanged) - self._onGlobalStackChanged() - - Application.getInstance().stacksValidationFinished.connect(self._onStackErrorCheckFinished) - - # A flag indicating if an error check was scheduled - # If so, we will stop the auto-slice timer and start upon the error check - self._is_error_check_scheduled = False # Listeners for receiving messages from the back-end. self._message_handlers["cura.proto.Layer"] = self._onLayerMessage @@ -121,13 +118,6 @@ class CuraEngineBackend(QObject, Backend): self._last_num_objects = defaultdict(int) # Count number of objects to see if there is something changed self._postponed_scene_change_sources = [] # scene change is postponed (by a tool) - self.backendQuit.connect(self._onBackendQuit) - self.backendConnected.connect(self._onBackendConnected) - - # When a tool operation is in progress, don't slice. So we need to listen for tool operations. - Application.getInstance().getController().toolOperationStarted.connect(self._onToolOperationStarted) - Application.getInstance().getController().toolOperationStopped.connect(self._onToolOperationStopped) - self._slice_start_time = None Preferences.getInstance().addPreference("general/auto_slice", True) @@ -142,6 +132,30 @@ class CuraEngineBackend(QObject, Backend): self.determineAutoSlicing() Preferences.getInstance().preferenceChanged.connect(self._onPreferencesChanged) + self._application.initializationFinished.connect(self.initialize) + + def initialize(self): + self._multi_build_plate_model = self._application.getMultiBuildPlateModel() + + self._application.getController().activeViewChanged.connect(self._onActiveViewChanged) + self._multi_build_plate_model.activeBuildPlateChanged.connect(self._onActiveViewChanged) + + self._application.globalContainerStackChanged.connect(self._onGlobalStackChanged) + self._onGlobalStackChanged() + + # extruder enable / disable. Actually wanted to use machine manager here, but the initialization order causes it to crash + ExtruderManager.getInstance().extrudersChanged.connect(self._extruderChanged) + + self.backendQuit.connect(self._onBackendQuit) + self.backendConnected.connect(self._onBackendConnected) + + # When a tool operation is in progress, don't slice. So we need to listen for tool operations. + self._application.getController().toolOperationStarted.connect(self._onToolOperationStarted) + self._application.getController().toolOperationStopped.connect(self._onToolOperationStopped) + + self._machine_error_checker = self._application.getMachineErrorChecker() + self._machine_error_checker.errorCheckFinished.connect(self._onStackErrorCheckFinished) + ## Terminate the engine process. # # This function should terminate the engine process. @@ -187,14 +201,12 @@ class CuraEngineBackend(QObject, Backend): ## Manually triggers a reslice @pyqtSlot() def forceSlice(self): - if self._use_timer: - self._change_timer.start() - else: - self.slice() + self.markSliceAll() + self.slice() ## Perform a slice of the scene. def slice(self): - Logger.log("d", "starting to slice!") + Logger.log("d", "Starting to slice...") self._slice_start_time = time() if not self._build_plates_to_be_sliced: self.processingProgress.emit(1.0) @@ -202,14 +214,14 @@ class CuraEngineBackend(QObject, Backend): return if self._process_layers_job: - Logger.log("d", " ## Process layers job still busy, trying later") + Logger.log("d", "Process layers job still busy, trying later.") return if not hasattr(self._scene, "gcode_dict"): self._scene.gcode_dict = {} # see if we really have to slice - active_build_plate = Application.getInstance().getBuildPlateModel().activeBuildPlate + active_build_plate = Application.getInstance().getMultiBuildPlateModel().activeBuildPlate build_plate_to_be_sliced = self._build_plates_to_be_sliced.pop(0) Logger.log("d", "Going to slice build plate [%s]!" % build_plate_to_be_sliced) num_objects = self._numObjects() @@ -292,6 +304,7 @@ class CuraEngineBackend(QObject, Backend): if job.isCancelled() or job.getError() or job.getResult() == StartSliceJob.StartJobResult.Error: self.backendStateChange.emit(BackendState.Error) + self.backendError.emit(job) return if job.getResult() == StartSliceJob.StartJobResult.MaterialIncompatible: @@ -300,6 +313,7 @@ class CuraEngineBackend(QObject, Backend): "Unable to slice with the current material as it is incompatible with the selected machine or configuration."), title = catalog.i18nc("@info:title", "Unable to slice")) self._error_message.show() self.backendStateChange.emit(BackendState.Error) + self.backendError.emit(job) else: self.backendStateChange.emit(BackendState.NotStarted) return @@ -328,6 +342,7 @@ class CuraEngineBackend(QObject, Backend): title = catalog.i18nc("@info:title", "Unable to slice")) self._error_message.show() self.backendStateChange.emit(BackendState.Error) + self.backendError.emit(job) else: self.backendStateChange.emit(BackendState.NotStarted) return @@ -350,6 +365,7 @@ class CuraEngineBackend(QObject, Backend): title = catalog.i18nc("@info:title", "Unable to slice")) self._error_message.show() self.backendStateChange.emit(BackendState.Error) + self.backendError.emit(job) return if job.getResult() == StartSliceJob.StartJobResult.BuildPlateError: @@ -358,6 +374,7 @@ class CuraEngineBackend(QObject, Backend): title = catalog.i18nc("@info:title", "Unable to slice")) self._error_message.show() self.backendStateChange.emit(BackendState.Error) + self.backendError.emit(job) else: self.backendStateChange.emit(BackendState.NotStarted) @@ -367,9 +384,9 @@ class CuraEngineBackend(QObject, Backend): title = catalog.i18nc("@info:title", "Unable to slice")) self._error_message.show() self.backendStateChange.emit(BackendState.Error) + self.backendError.emit(job) else: self.backendStateChange.emit(BackendState.NotStarted) - pass self._invokeSlice() return @@ -427,12 +444,10 @@ class CuraEngineBackend(QObject, Backend): if not isinstance(source, SceneNode): return - # This case checks if the source node is a node that contains a GCode. In this case the - # cached layer data is removed so the previous data is not rendered - CURA-4821 + # This case checks if the source node is a node that contains GCode. In this case the + # current layer data is removed so the previous data is not rendered - CURA-4821 if source.callDecoration("isBlockSlicing") and source.callDecoration("getLayerData"): - if self._stored_optimized_layer_data: - print(self._stored_optimized_layer_data) - del self._stored_optimized_layer_data[source.callDecoration("getBuildPlateNumber")] + self._stored_optimized_layer_data = {} build_plate_changed = set() source_build_plate_number = source.callDecoration("getBuildPlateNumber") @@ -502,7 +517,7 @@ class CuraEngineBackend(QObject, Backend): node.getParent().removeChild(node) def markSliceAll(self): - for build_plate_number in range(Application.getInstance().getBuildPlateModel().maxBuildPlate + 1): + for build_plate_number in range(Application.getInstance().getMultiBuildPlateModel().maxBuildPlate + 1): if build_plate_number not in self._build_plates_to_be_sliced: self._build_plates_to_be_sliced.append(build_plate_number) @@ -526,11 +541,9 @@ class CuraEngineBackend(QObject, Backend): elif property == "validationState": if self._use_timer: - self._is_error_check_scheduled = True self._change_timer.stop() def _onStackErrorCheckFinished(self): - self._is_error_check_scheduled = False if not self._slicing and self._build_plates_to_be_sliced: self.needsSlicing() self._onChanged() @@ -545,6 +558,8 @@ class CuraEngineBackend(QObject, Backend): # # \param message The protobuf message containing sliced layer data. def _onOptimizedLayerMessage(self, message): + if self._start_slice_job_build_plate not in self._stored_optimized_layer_data: + self._stored_optimized_layer_data[self._start_slice_job_build_plate] = [] self._stored_optimized_layer_data[self._start_slice_job_build_plate].append(message) ## Called when a progress message is received from the engine. @@ -554,12 +569,15 @@ class CuraEngineBackend(QObject, Backend): self.processingProgress.emit(message.amount) self.backendStateChange.emit(BackendState.Processing) - # testing def _invokeSlice(self): if self._use_timer: # if the error check is scheduled, wait for the error check finish signal to trigger auto-slice, # otherwise business as usual - if self._is_error_check_scheduled: + if self._machine_error_checker is None: + self._change_timer.stop() + return + + if self._machine_error_checker.needToWaitForResult: self._change_timer.stop() else: self._change_timer.start() @@ -585,7 +603,7 @@ class CuraEngineBackend(QObject, Backend): Logger.log("d", "Slicing took %s seconds", time() - self._slice_start_time ) # See if we need to process the sliced layers job. - active_build_plate = Application.getInstance().getBuildPlateModel().activeBuildPlate + active_build_plate = Application.getInstance().getMultiBuildPlateModel().activeBuildPlate if self._layer_view_active and (self._process_layers_job is None or not self._process_layers_job.isRunning()) and active_build_plate == self._start_slice_job_build_plate: self._startProcessSlicedLayersJob(active_build_plate) # self._onActiveViewChanged() @@ -625,7 +643,11 @@ class CuraEngineBackend(QObject, Backend): if self._use_timer: # if the error check is scheduled, wait for the error check finish signal to trigger auto-slice, # otherwise business as usual - if self._is_error_check_scheduled: + if self._machine_error_checker is None: + self._change_timer.stop() + return + + if self._machine_error_checker.needToWaitForResult: self._change_timer.stop() else: self._change_timer.start() @@ -705,7 +727,7 @@ class CuraEngineBackend(QObject, Backend): application = Application.getInstance() view = application.getController().getActiveView() if view: - active_build_plate = application.getBuildPlateModel().activeBuildPlate + active_build_plate = application.getMultiBuildPlateModel().activeBuildPlate if view.getPluginId() == "SimulationView": # If switching to layer view, we should process the layers if that hasn't been done yet. self._layer_view_active = True # There is data and we're not slicing at the moment @@ -777,3 +799,9 @@ class CuraEngineBackend(QObject, Backend): def tickle(self): if self._use_timer: self._change_timer.start() + + def _extruderChanged(self): + for build_plate_number in range(self._multi_build_plate_model.maxBuildPlate + 1): + if build_plate_number not in self._build_plates_to_be_sliced: + self._build_plates_to_be_sliced.append(build_plate_number) + self._invokeSlice() diff --git a/plugins/CuraEngineBackend/ProcessGCodeJob.py b/plugins/CuraEngineBackend/ProcessGCodeJob.py index ed430f8fa9..817daa9f85 100644 --- a/plugins/CuraEngineBackend/ProcessGCodeJob.py +++ b/plugins/CuraEngineBackend/ProcessGCodeJob.py @@ -12,6 +12,6 @@ class ProcessGCodeLayerJob(Job): self._message = message def run(self): - active_build_plate_id = Application.getInstance().getBuildPlateModel().activeBuildPlate + active_build_plate_id = Application.getInstance().getMultiBuildPlateModel().activeBuildPlate gcode_list = self._scene.gcode_dict[active_build_plate_id] gcode_list.append(self._message.data.decode("utf-8", "replace")) diff --git a/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py b/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py index c1fc597d80..cbc097bb33 100644 --- a/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py +++ b/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py @@ -81,7 +81,8 @@ class ProcessSlicedLayersJob(Job): Application.getInstance().getController().activeViewChanged.connect(self._onActiveViewChanged) - new_node = CuraSceneNode() + # The no_setting_override is here because adding the SettingOverrideDecorator will trigger a reslice + new_node = CuraSceneNode(no_setting_override = True) new_node.addDecorator(BuildPlateDecorator(self._build_plate_number)) # Force garbage collection. diff --git a/plugins/CuraEngineBackend/StartSliceJob.py b/plugins/CuraEngineBackend/StartSliceJob.py index fa5473ba38..96124a3514 100644 --- a/plugins/CuraEngineBackend/StartSliceJob.py +++ b/plugins/CuraEngineBackend/StartSliceJob.py @@ -5,6 +5,7 @@ import numpy from string import Formatter from enum import IntEnum import time +import re from UM.Job import Job from UM.Application import Application @@ -15,7 +16,7 @@ from UM.Scene.Iterator.DepthFirstIterator import DepthFirstIterator from UM.Settings.Validator import ValidatorState from UM.Settings.SettingRelation import RelationType -from cura.Scene.CuraSceneNode import CuraSceneNode as SceneNode +from cura.Scene.CuraSceneNode import CuraSceneNode from cura.OneAtATimeIterator import OneAtATimeIterator from cura.Settings.ExtruderManager import ExtruderManager @@ -54,19 +55,19 @@ class GcodeStartEndFormatter(Formatter): extruder_nr = int(kwargs["-1"][key_fragments[1]]) # get extruder_nr values from the global stack except (KeyError, ValueError): # either the key does not exist, or the value is not an int - Logger.log("w", "Unable to determine stack nr '%s' for key '%s' in start/end gcode, using global stack", key_fragments[1], key_fragments[0]) + Logger.log("w", "Unable to determine stack nr '%s' for key '%s' in start/end g-code, using global stack", key_fragments[1], key_fragments[0]) elif len(key_fragments) != 1: - Logger.log("w", "Incorrectly formatted placeholder '%s' in start/end gcode", key) + Logger.log("w", "Incorrectly formatted placeholder '%s' in start/end g-code", key) return "{" + str(key) + "}" key = key_fragments[0] try: return kwargs[str(extruder_nr)][key] except KeyError: - Logger.log("w", "Unable to replace '%s' placeholder in start/end gcode", key) + Logger.log("w", "Unable to replace '%s' placeholder in start/end g-code", key) return "{" + key + "}" else: - Logger.log("w", "Incorrectly formatted placeholder '%s' in start/end gcode", key) + Logger.log("w", "Incorrectly formatted placeholder '%s' in start/end g-code", key) return "{" + str(key) + "}" @@ -128,16 +129,19 @@ class StartSliceJob(Job): self.setResult(StartJobResult.MaterialIncompatible) return - for extruder_stack in ExtruderManager.getInstance().getMachineExtruders(stack.getId()): + for position, extruder_stack in stack.extruders.items(): material = extruder_stack.findContainer({"type": "material"}) + if not extruder_stack.isEnabled: + continue if material: if material.getMetaDataEntry("compatible") == False: self.setResult(StartJobResult.MaterialIncompatible) return + # Don't slice if there is a per object setting with an error value. for node in DepthFirstIterator(self._scene.getRoot()): - if type(node) is not SceneNode or not node.isSelectable(): + if not isinstance(node, CuraSceneNode) or not node.isSelectable(): continue if self._checkStackForErrors(node.callDecoration("getStack")): @@ -161,10 +165,15 @@ class StartSliceJob(Job): if getattr(node, "_outside_buildarea", False): continue + # Filter on current build plate + build_plate_number = node.callDecoration("getBuildPlateNumber") + if build_plate_number is not None and build_plate_number != self._build_plate_number: + continue + children = node.getAllChildren() children.append(node) for child_node in children: - if type(child_node) is SceneNode and child_node.getMeshData() and child_node.getMeshData().getVertices() is not None: + if child_node.getMeshData() and child_node.getMeshData().getVertices() is not None: temp_list.append(child_node) if temp_list: @@ -176,17 +185,24 @@ class StartSliceJob(Job): temp_list = [] has_printing_mesh = False for node in DepthFirstIterator(self._scene.getRoot()): - if node.callDecoration("isSliceable") and type(node) is SceneNode and node.getMeshData() and node.getMeshData().getVertices() is not None: + if node.callDecoration("isSliceable") and node.getMeshData() and node.getMeshData().getVertices() is not None: per_object_stack = node.callDecoration("getStack") is_non_printing_mesh = False if per_object_stack: is_non_printing_mesh = any(per_object_stack.getProperty(key, "value") for key in NON_PRINTING_MESH_SETTINGS) - if (node.callDecoration("getBuildPlateNumber") == self._build_plate_number): - if not getattr(node, "_outside_buildarea", False) or is_non_printing_mesh: - temp_list.append(node) - if not is_non_printing_mesh: - has_printing_mesh = True + # Find a reason not to add the node + if node.callDecoration("getBuildPlateNumber") != self._build_plate_number: + continue + if getattr(node, "_outside_buildarea", False) and not is_non_printing_mesh: + continue + node_position = node.callDecoration("getActiveExtruderPosition") + if not stack.extruders[str(node_position)].isEnabled: + continue + + temp_list.append(node) + if not is_non_printing_mesh: + has_printing_mesh = True Job.yieldThread() @@ -262,9 +278,15 @@ class StartSliceJob(Job): # \return A dictionary of replacement tokens to the values they should be # replaced with. def _buildReplacementTokens(self, stack) -> dict: + default_extruder_position = int(Application.getInstance().getMachineManager().defaultExtruderPosition) result = {} for key in stack.getAllKeys(): - result[key] = stack.getProperty(key, "value") + setting_type = stack.definition.getProperty(key, "type") + value = stack.getProperty(key, "value") + if setting_type == "extruder" and value == -1: + # replace with the default value + value = default_extruder_position + result[key] = value Job.yieldThread() result["print_bed_temperature"] = result["material_bed_temperature"] # Renamed settings. @@ -302,7 +324,7 @@ class StartSliceJob(Job): settings["default_extruder_nr"] = default_extruder_nr return str(fmt.format(value, **settings)) except: - Logger.logException("w", "Unable to do token replacement on start/end gcode") + Logger.logException("w", "Unable to do token replacement on start/end g-code") return str(value) ## Create extruder message from stack @@ -338,10 +360,12 @@ class StartSliceJob(Job): # Pre-compute material material_bed_temp_prepend and material_print_temp_prepend start_gcode = settings["machine_start_gcode"] - bed_temperature_settings = {"material_bed_temperature", "material_bed_temperature_layer_0"} - settings["material_bed_temp_prepend"] = all(("{" + setting + "}" not in start_gcode for setting in bed_temperature_settings)) - print_temperature_settings = {"material_print_temperature", "material_print_temperature_layer_0", "default_material_print_temperature", "material_initial_print_temperature", "material_final_print_temperature", "material_standby_temperature"} - settings["material_print_temp_prepend"] = all(("{" + setting + "}" not in start_gcode for setting in print_temperature_settings)) + bed_temperature_settings = ["material_bed_temperature", "material_bed_temperature_layer_0"] + pattern = r"\{(%s)(,\s?\w+)?\}" % "|".join(bed_temperature_settings) # match {setting} as well as {setting, extruder_nr} + settings["material_bed_temp_prepend"] = re.search(pattern, start_gcode) == None + print_temperature_settings = ["material_print_temperature", "material_print_temperature_layer_0", "default_material_print_temperature", "material_initial_print_temperature", "material_final_print_temperature", "material_standby_temperature"] + pattern = r"\{(%s)(,\s?\w+)?\}" % "|".join(print_temperature_settings) # match {setting} as well as {setting, extruder_nr} + settings["material_print_temp_prepend"] = re.search(pattern, start_gcode) == None # Replace the setting tokens in start and end g-code. # Use values from the first used extruder by default so we get the expected temperatures @@ -368,11 +392,11 @@ class StartSliceJob(Job): # limit_to_extruder property. def _buildGlobalInheritsStackMessage(self, stack): for key in stack.getAllKeys(): - extruder = int(round(float(stack.getProperty(key, "limit_to_extruder")))) - if extruder >= 0: #Set to a specific extruder. + extruder_position = int(round(float(stack.getProperty(key, "limit_to_extruder")))) + if extruder_position >= 0: # Set to a specific extruder. setting_extruder = self._slice_message.addRepeatedMessage("limit_to_extruder") setting_extruder.name = key - setting_extruder.extruder = extruder + setting_extruder.extruder = extruder_position Job.yieldThread() ## Check if a node has per object settings and ensure that they are set correctly in the message diff --git a/plugins/CuraProfileReader/CuraProfileReader.py b/plugins/CuraProfileReader/CuraProfileReader.py index 5631d138aa..69b2187541 100644 --- a/plugins/CuraProfileReader/CuraProfileReader.py +++ b/plugins/CuraProfileReader/CuraProfileReader.py @@ -39,7 +39,7 @@ class CuraProfileReader(ProfileReader): except zipfile.BadZipFile: # It must be an older profile from Cura 2.1. - with open(file_name, encoding="utf-8") as fhandle: + 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)] @@ -52,10 +52,10 @@ class CuraProfileReader(ProfileReader): parser = configparser.ConfigParser(interpolation=None) parser.read_string(serialized) - if not "general" in parser: + if "general" not in parser: Logger.log("w", "Missing required section 'general'.") return [] - if not "version" in parser["general"]: + if "version" not in parser["general"]: Logger.log("w", "Missing required 'version' property") return [] diff --git a/plugins/FirmwareUpdateChecker/FirmwareUpdateChecker.py b/plugins/FirmwareUpdateChecker/FirmwareUpdateChecker.py index 458aca5787..23a040f2e2 100644 --- a/plugins/FirmwareUpdateChecker/FirmwareUpdateChecker.py +++ b/plugins/FirmwareUpdateChecker/FirmwareUpdateChecker.py @@ -20,7 +20,7 @@ i18n_catalog = i18nCatalog("cura") # The plugin is currently only usable for applications maintained by Ultimaker. But it should be relatively easy # to change it to work for other applications. class FirmwareUpdateChecker(Extension): - JEDI_VERSION_URL = "http://software.ultimaker.com/jedi/releases/latest.version" + JEDI_VERSION_URL = "http://software.ultimaker.com/jedi/releases/latest.version?utm_source=cura&utm_medium=software&utm_campaign=resources" def __init__(self): super().__init__() @@ -49,7 +49,6 @@ class FirmwareUpdateChecker(Extension): def _onContainerAdded(self, container): # Only take care when a new GlobalStack was added if isinstance(container, GlobalStack): - Logger.log("i", "You have a '%s' in printer list. Let's check the firmware!", container.getId()) self.checkFirmwareVersion(container, True) ## Connect with software.ultimaker.com, load latest.version and check version info. diff --git a/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py b/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py index 6dd7338cfd..fd6c4680e8 100644 --- a/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py +++ b/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py @@ -44,6 +44,8 @@ class FirmwareUpdateCheckerJob(Job): # Now we just do that if the active printer is Ultimaker 3 or Ultimaker 3 Extended or any # other Ultimaker 3 that will come in the future if len(machine_name_parts) >= 2 and machine_name_parts[:2] == ["ultimaker", "3"]: + Logger.log("i", "You have a UM3 in printer list. Let's check the firmware!") + # Nothing to parse, just get the string # TODO: In the future may be done by parsing a JSON file with diferent version for each printer model current_version = reader(current_version_file).readline().rstrip() diff --git a/plugins/GCodeProfileReader/GCodeProfileReader.py b/plugins/GCodeProfileReader/GCodeProfileReader.py index 9d7f0059f9..d6bda85a48 100644 --- a/plugins/GCodeProfileReader/GCodeProfileReader.py +++ b/plugins/GCodeProfileReader/GCodeProfileReader.py @@ -9,7 +9,7 @@ from UM.Logger import Logger from UM.i18n import i18nCatalog catalog = i18nCatalog("cura") -from cura.ProfileReader import ProfileReader +from cura.ProfileReader import ProfileReader, NoProfileException ## A class that reads profile data from g-code files. # @@ -66,12 +66,17 @@ class GCodeProfileReader(ProfileReader): return None serialized = unescapeGcodeComment(serialized) + serialized = serialized.strip() + + if not serialized: + Logger.log("i", "No custom profile to import from this g-code: %s", file_name) + raise NoProfileException() # serialized data can be invalid JSON try: json_data = json.loads(serialized) except Exception as e: - Logger.log("e", "Could not parse serialized JSON data from GCode %s, error: %s", file_name, e) + Logger.log("e", "Could not parse serialized JSON data from g-code %s, error: %s", file_name, e) return None profiles = [] diff --git a/plugins/GCodeProfileReader/plugin.json b/plugins/GCodeProfileReader/plugin.json index 8111bc687c..f8f7d4c291 100644 --- a/plugins/GCodeProfileReader/plugin.json +++ b/plugins/GCodeProfileReader/plugin.json @@ -1,5 +1,5 @@ { - "name": "GCode Profile Reader", + "name": "G-code Profile Reader", "author": "Ultimaker B.V.", "version": "1.0.0", "description": "Provides support for importing profiles from g-code files.", diff --git a/plugins/GCodeReader/FlavorParser.py b/plugins/GCodeReader/FlavorParser.py index f63ba3ca69..c064ffbf10 100644 --- a/plugins/GCodeReader/FlavorParser.py +++ b/plugins/GCodeReader/FlavorParser.py @@ -437,7 +437,7 @@ class FlavorParser: scene_node.addDecorator(gcode_list_decorator) # gcode_dict stores gcode_lists for a number of build plates. - active_build_plate_id = Application.getInstance().getBuildPlateModel().activeBuildPlate + active_build_plate_id = Application.getInstance().getMultiBuildPlateModel().activeBuildPlate gcode_dict = {active_build_plate_id: gcode_list} Application.getInstance().getController().getScene().gcode_dict = gcode_dict diff --git a/plugins/GCodeReader/GCodeReader.py b/plugins/GCodeReader/GCodeReader.py index cb2f5d99e0..050f243f9b 100755 --- a/plugins/GCodeReader/GCodeReader.py +++ b/plugins/GCodeReader/GCodeReader.py @@ -26,7 +26,7 @@ class GCodeReader(MeshReader): # PreRead is used to get the correct flavor. If not, Marlin is set by default def preRead(self, file_name, *args, **kwargs): - with open(file_name, "r") as file: + with open(file_name, "r", encoding = "utf-8") as file: for line in file: if line[:len(self._flavor_keyword)] == self._flavor_keyword: try: diff --git a/plugins/GCodeWriter/GCodeWriter.py b/plugins/GCodeWriter/GCodeWriter.py index 95c48c4d9e..1b3b7264a1 100644 --- a/plugins/GCodeWriter/GCodeWriter.py +++ b/plugins/GCodeWriter/GCodeWriter.py @@ -5,6 +5,7 @@ from UM.Mesh.MeshWriter import MeshWriter from UM.Logger import Logger from UM.Application import Application from UM.Settings.InstanceContainer import InstanceContainer +from UM.Util import parseBool from cura.Settings.ExtruderManager import ExtruderManager @@ -56,10 +57,10 @@ class GCodeWriter(MeshWriter): # file. This must always be text mode. def write(self, stream, nodes, mode = MeshWriter.OutputMode.TextMode): if mode != MeshWriter.OutputMode.TextMode: - Logger.log("e", "GCode Writer does not support non-text mode.") + Logger.log("e", "GCodeWriter does not support non-text mode.") return False - active_build_plate = Application.getInstance().getBuildPlateModel().activeBuildPlate + active_build_plate = Application.getInstance().getMultiBuildPlateModel().activeBuildPlate scene = Application.getInstance().getController().getScene() gcode_dict = getattr(scene, "gcode_dict") if not gcode_dict: @@ -107,8 +108,8 @@ class GCodeWriter(MeshWriter): prefix_length = len(prefix) container_with_profile = stack.qualityChanges - if not container_with_profile: - Logger.log("e", "No valid quality profile found, not writing settings to GCode!") + if container_with_profile.getId() == "empty_quality_changes": + Logger.log("e", "No valid quality profile found, not writing settings to g-code!") return "" flat_global_container = self._createFlattenedContainerInstance(stack.getTop(), container_with_profile) @@ -120,12 +121,20 @@ class GCodeWriter(MeshWriter): if flat_global_container.getMetaDataEntry("quality_type", None) is None: flat_global_container.addMetaDataEntry("quality_type", stack.quality.getMetaDataEntry("quality_type", "normal")) + # Change the default defintion + default_machine_definition = "fdmprinter" + if parseBool(stack.getMetaDataEntry("has_machine_quality", "False")): + default_machine_definition = stack.getMetaDataEntry("quality_definition") + if not default_machine_definition: + default_machine_definition = stack.definition.getId() + flat_global_container.setMetaDataEntry("definition", default_machine_definition) + serialized = flat_global_container.serialize() data = {"global_quality": serialized} - for extruder in sorted(ExtruderManager.getInstance().getMachineExtruders(stack.getId()), key = lambda k: k.getMetaDataEntry("position")): + for extruder in sorted(stack.extruders.values(), key = lambda k: k.getMetaDataEntry("position")): extruder_quality = extruder.qualityChanges - if not extruder_quality: + if extruder_quality.getId() == "empty_quality_changes": Logger.log("w", "No extruder quality profile found, not writing quality for extruder %s to file!", extruder.getId()) continue flat_extruder_quality = self._createFlattenedContainerInstance(extruder.getTop(), extruder_quality) @@ -140,6 +149,10 @@ class GCodeWriter(MeshWriter): # Ensure that quality_type is set. (Can happen if we have empty quality changes). if flat_extruder_quality.getMetaDataEntry("quality_type", None) is None: flat_extruder_quality.addMetaDataEntry("quality_type", extruder.quality.getMetaDataEntry("quality_type", "normal")) + + # Change the default defintion + flat_extruder_quality.setMetaDataEntry("definition", default_machine_definition) + extruder_serialized = flat_extruder_quality.serialize() data.setdefault("extruder_quality", []).append(extruder_serialized) diff --git a/plugins/GCodeWriter/__init__.py b/plugins/GCodeWriter/__init__.py index a89332a371..1a5728f510 100644 --- a/plugins/GCodeWriter/__init__.py +++ b/plugins/GCodeWriter/__init__.py @@ -13,7 +13,7 @@ def getMetaData(): "mesh_writer": { "output": [{ "extension": "gcode", - "description": catalog.i18nc("@item:inlistbox", "GCode File"), + "description": catalog.i18nc("@item:inlistbox", "G-code File"), "mime_type": "text/x-gcode", "mode": GCodeWriter.GCodeWriter.OutputMode.TextMode }] diff --git a/plugins/GCodeWriter/plugin.json b/plugins/GCodeWriter/plugin.json index 5788b01375..5fcb1a3bd7 100644 --- a/plugins/GCodeWriter/plugin.json +++ b/plugins/GCodeWriter/plugin.json @@ -1,8 +1,8 @@ { - "name": "GCode Writer", + "name": "G-code Writer", "author": "Ultimaker B.V.", "version": "1.0.0", - "description": "Writes GCode to a file.", + "description": "Writes g-code to a file.", "api": 4, "i18n-catalog": "cura" } diff --git a/plugins/LegacyProfileReader/LegacyProfileReader.py b/plugins/LegacyProfileReader/LegacyProfileReader.py index 07cd8b0aad..824fc959a1 100644 --- a/plugins/LegacyProfileReader/LegacyProfileReader.py +++ b/plugins/LegacyProfileReader/LegacyProfileReader.py @@ -125,7 +125,10 @@ class LegacyProfileReader(ProfileReader): Logger.log("e", "Dictionary of Doom has no translation. Is it the correct JSON file?") return None current_printer_definition = global_container_stack.definition - profile.setDefinition(current_printer_definition.getId()) + quality_definition = current_printer_definition.getMetaDataEntry("quality_definition") + if not quality_definition: + quality_definition = current_printer_definition.getId() + profile.setDefinition(quality_definition) for new_setting in dict_of_doom["translation"]: # Evaluate all new settings that would get a value from the translations. old_setting_expression = dict_of_doom["translation"][new_setting] compiled = compile(old_setting_expression, new_setting, "eval") @@ -162,20 +165,21 @@ class LegacyProfileReader(ProfileReader): data = stream.getvalue() profile.deserialize(data) + # The definition can get reset to fdmprinter during the deserialization's upgrade. Here we set the definition + # again. + profile.setDefinition(quality_definition) + #We need to return one extruder stack and one global stack. global_container_id = container_registry.uniqueName("Global Imported Legacy Profile") global_profile = profile.duplicate(new_id = global_container_id, new_name = profile_id) #Needs to have the same name as the extruder profile. global_profile.setDirty(True) - #Only the extruder stack has an extruder metadata entry. - profile.addMetaDataEntry("extruder", ExtruderManager.getInstance().getActiveExtruderStack().definition.getId()) + profile_definition = "fdmprinter" + from UM.Util import parseBool + if parseBool(global_container_stack.getMetaDataEntry("has_machine_quality", "False")): + profile_definition = global_container_stack.getMetaDataEntry("quality_definition") + if not profile_definition: + profile_definition = global_container_stack.definition.getId() + global_profile.setDefinition(profile_definition) - #Split all settings into per-extruder and global settings. - for setting_key in profile.getAllKeys(): - settable_per_extruder = global_container_stack.getProperty(setting_key, "settable_per_extruder") - if settable_per_extruder: - global_profile.removeInstance(setting_key) - else: - profile.removeInstance(setting_key) - - return [global_profile, profile] + return [global_profile] diff --git a/plugins/MachineSettingsAction/MachineSettingsAction.py b/plugins/MachineSettingsAction/MachineSettingsAction.py index 101ba54ed0..ded59bf934 100755 --- a/plugins/MachineSettingsAction/MachineSettingsAction.py +++ b/plugins/MachineSettingsAction/MachineSettingsAction.py @@ -2,20 +2,16 @@ # Cura is released under the terms of the LGPLv3 or higher. from PyQt5.QtCore import pyqtProperty, pyqtSignal + +import UM.i18n from UM.FlameProfiler import pyqtSlot - -from cura.MachineAction import MachineAction - from UM.Application import Application from UM.Settings.ContainerRegistry import ContainerRegistry from UM.Settings.DefinitionContainer import DefinitionContainer -from UM.Scene.Iterator.DepthFirstIterator import DepthFirstIterator -from UM.Logger import Logger -from cura.Settings.ExtruderManager import ExtruderManager +from cura.MachineAction import MachineAction from cura.Settings.CuraStackBuilder import CuraStackBuilder -import UM.i18n catalog = UM.i18n.i18nCatalog("cura") @@ -26,6 +22,8 @@ class MachineSettingsAction(MachineAction): super().__init__("MachineSettingsAction", catalog.i18nc("@action", "Machine Settings")) self._qml_url = "MachineSettingsAction.qml" + self._application = Application.getInstance() + self._global_container_stack = None from cura.Settings.CuraContainerStack import _ContainerIndexes @@ -34,38 +32,44 @@ class MachineSettingsAction(MachineAction): self._container_registry = ContainerRegistry.getInstance() self._container_registry.containerAdded.connect(self._onContainerAdded) self._container_registry.containerRemoved.connect(self._onContainerRemoved) - Application.getInstance().globalContainerStackChanged.connect(self._onGlobalContainerChanged) + self._application.globalContainerStackChanged.connect(self._onGlobalContainerChanged) - self._empty_container = self._container_registry.getEmptyInstanceContainer() + self._backend = self._application.getBackend() - self._backend = Application.getInstance().getBackend() + self._empty_definition_container_id_list = [] + + def _isEmptyDefinitionChanges(self, container_id: str): + if not self._empty_definition_container_id_list: + self._empty_definition_container_id_list = [self._application.empty_container.getId(), + self._application.empty_definition_changes_container.getId()] + return container_id in self._empty_definition_container_id_list def _onContainerAdded(self, container): # Add this action as a supported action to all machine definitions if isinstance(container, DefinitionContainer) and container.getMetaDataEntry("type") == "machine": - Application.getInstance().getMachineActionManager().addSupportedAction(container.getId(), self.getKey()) + self._application.getMachineActionManager().addSupportedAction(container.getId(), self.getKey()) def _onContainerRemoved(self, container): # Remove definition_changes containers when a stack is removed if container.getMetaDataEntry("type") in ["machine", "extruder_train"]: - definition_changes_container = container.definitionChanges - if definition_changes_container == self._empty_container: + definition_changes_id = container.definitionChanges.getId() + if self._isEmptyDefinitionChanges(definition_changes_id): return - self._container_registry.removeContainer(definition_changes_container.getId()) + self._container_registry.removeContainer(definition_changes_id) def _reset(self): if not self._global_container_stack: return # Make sure there is a definition_changes container to store the machine settings - definition_changes_container = self._global_container_stack.definitionChanges - if definition_changes_container == self._empty_container: - definition_changes_container = CuraStackBuilder.createDefinitionChangesContainer( - self._global_container_stack, self._global_container_stack.getName() + "_settings") + definition_changes_id = self._global_container_stack.definitionChanges.getId() + if self._isEmptyDefinitionChanges(definition_changes_id): + CuraStackBuilder.createDefinitionChangesContainer(self._global_container_stack, + self._global_container_stack.getName() + "_settings") # Notify the UI in which container to store the machine settings data - from cura.Settings.CuraContainerStack import CuraContainerStack, _ContainerIndexes + from cura.Settings.CuraContainerStack import _ContainerIndexes container_index = _ContainerIndexes.DefinitionChanges if container_index != self._container_index: @@ -105,66 +109,15 @@ class MachineSettingsAction(MachineAction): @pyqtSlot(int) def setMachineExtruderCount(self, extruder_count): - extruder_manager = Application.getInstance().getExtruderManager() - - definition_changes_container = self._global_container_stack.definitionChanges - if not self._global_container_stack or definition_changes_container == self._empty_container: - return - - previous_extruder_count = self._global_container_stack.getProperty("machine_extruder_count", "value") - if extruder_count == previous_extruder_count: - return - - # reset all extruder number settings whose value is no longer valid - for setting_instance in self._global_container_stack.userChanges.findInstances(): - setting_key = setting_instance.definition.key - if not self._global_container_stack.getProperty(setting_key, "type") in ("extruder", "optional_extruder"): - continue - - old_value = int(self._global_container_stack.userChanges.getProperty(setting_key, "value")) - if old_value >= extruder_count: - self._global_container_stack.userChanges.removeInstance(setting_key) - Logger.log("d", "Reset [%s] because its old value [%s] is no longer valid ", setting_key, old_value) - - # Check to see if any objects are set to print with an extruder that will no longer exist - root_node = Application.getInstance().getController().getScene().getRoot() - for node in DepthFirstIterator(root_node): - if node.getMeshData(): - extruder_nr = node.callDecoration("getActiveExtruderPosition") - - if extruder_nr is not None and int(extruder_nr) > extruder_count - 1: - node.callDecoration("setActiveExtruder", extruder_manager.getExtruderStack(extruder_count - 1).getId()) - - definition_changes_container.setProperty("machine_extruder_count", "value", extruder_count) - - # Make sure one of the extruder stacks is active - extruder_manager.setActiveExtruderIndex(0) - - # Move settable_per_extruder values out of the global container - # After CURA-4482 this should not be the case anymore, but we still want to support older project files. - global_user_container = self._global_container_stack.getTop() - - if previous_extruder_count == 1: - extruder_stacks = ExtruderManager.getInstance().getActiveExtruderStacks() - global_user_container = self._global_container_stack.getTop() - - for setting_instance in global_user_container.findInstances(): - setting_key = setting_instance.definition.key - settable_per_extruder = self._global_container_stack.getProperty(setting_key, "settable_per_extruder") - - if settable_per_extruder: - limit_to_extruder = int(self._global_container_stack.getProperty(setting_key, "limit_to_extruder")) - extruder_stack = extruder_stacks[max(0, limit_to_extruder)] - extruder_stack.getTop().setProperty(setting_key, "value", global_user_container.getProperty(setting_key, "value")) - global_user_container.removeInstance(setting_key) - - self.forceUpdate() + # Note: this method was in this class before, but since it's quite generic and other plugins also need it + # it was moved to the machine manager instead. Now this method just calls the machine manager. + self._application.getMachineManager().setActiveMachineExtruderCount(extruder_count) @pyqtSlot() def forceUpdate(self): # Force rebuilding the build volume by reloading the global container stack. # This is a bit of a hack, but it seems quick enough. - Application.getInstance().globalContainerStackChanged.emit() + self._application.globalContainerStackChanged.emit() @pyqtSlot() def updateHasMaterialsMetadata(self): @@ -177,9 +130,11 @@ class MachineSettingsAction(MachineAction): # In other words: only continue for the UM2 (extended), but not for the UM2+ return - stacks = ExtruderManager.getInstance().getExtruderStacks() + machine_manager = self._application.getMachineManager() + extruder_positions = list(self._global_container_stack.extruders.keys()) has_materials = self._global_container_stack.getProperty("machine_gcode_flavor", "value") != "UltiGCode" + material_node = None if has_materials: if "has_materials" in self._global_container_stack.getMetaData(): self._global_container_stack.setMetaDataEntry("has_materials", True) @@ -187,101 +142,22 @@ class MachineSettingsAction(MachineAction): self._global_container_stack.addMetaDataEntry("has_materials", True) # Set the material container for each extruder to a sane default - for stack in stacks: - material_container = stack.material - if material_container == self._empty_container: - machine_approximate_diameter = str(round(self._global_container_stack.getProperty("material_diameter", "value"))) - search_criteria = { "type": "material", "definition": "fdmprinter", "id": self._global_container_stack.getMetaDataEntry("preferred_material"), "approximate_diameter": machine_approximate_diameter} - materials = self._container_registry.findInstanceContainers(**search_criteria) - if materials: - stack.material = materials[0] + material_manager = self._application.getMaterialManager() + material_node = material_manager.getDefaultMaterial(self._global_container_stack, None) + else: # The metadata entry is stored in an ini, and ini files are parsed as strings only. # Because any non-empty string evaluates to a boolean True, we have to remove the entry to make it False. if "has_materials" in self._global_container_stack.getMetaData(): self._global_container_stack.removeMetaDataEntry("has_materials") - for stack in stacks: - stack.material = ContainerRegistry.getInstance().getEmptyInstanceContainer() + # set materials + for position in extruder_positions: + machine_manager.setMaterial(position, material_node) - Application.getInstance().globalContainerStackChanged.emit() + self._application.globalContainerStackChanged.emit() @pyqtSlot(int) def updateMaterialForDiameter(self, extruder_position: int): # Updates the material container to a material that matches the material diameter set for the printer - if not self._global_container_stack: - return - - if not self._global_container_stack.getMetaDataEntry("has_materials", False): - return - - extruder_stack = self._global_container_stack.extruders[str(extruder_position)] - - material_diameter = extruder_stack.material.getProperty("material_diameter", "value") - if not material_diameter: - # in case of "empty" material - material_diameter = 0 - - material_approximate_diameter = str(round(material_diameter)) - machine_diameter = extruder_stack.definitionChanges.getProperty("material_diameter", "value") - if not machine_diameter: - if extruder_stack.definition.hasProperty("material_diameter", "value"): - machine_diameter = extruder_stack.definition.getProperty("material_diameter", "value") - else: - machine_diameter = self._global_container_stack.definition.getProperty("material_diameter", "value") - machine_approximate_diameter = str(round(machine_diameter)) - - if material_approximate_diameter != machine_approximate_diameter: - Logger.log("i", "The the currently active material(s) do not match the diameter set for the printer. Finding alternatives.") - - if self._global_container_stack.getMetaDataEntry("has_machine_materials", False): - materials_definition = self._global_container_stack.definition.getId() - has_material_variants = self._global_container_stack.getMetaDataEntry("has_variants", False) - else: - materials_definition = "fdmprinter" - has_material_variants = False - - old_material = extruder_stack.material - search_criteria = { - "type": "material", - "approximate_diameter": machine_approximate_diameter, - "material": old_material.getMetaDataEntry("material", "value"), - "brand": old_material.getMetaDataEntry("brand", "value"), - "supplier": old_material.getMetaDataEntry("supplier", "value"), - "color_name": old_material.getMetaDataEntry("color_name", "value"), - "definition": materials_definition - } - if has_material_variants: - search_criteria["variant"] = extruder_stack.variant.getId() - - if old_material == self._empty_container: - search_criteria.pop("material", None) - search_criteria.pop("supplier", None) - search_criteria.pop("brand", None) - search_criteria.pop("definition", None) - search_criteria["id"] = extruder_stack.getMetaDataEntry("preferred_material") - - materials = self._container_registry.findInstanceContainers(**search_criteria) - if not materials: - # Same material with new diameter is not found, search for generic version of the same material type - search_criteria.pop("supplier", None) - search_criteria.pop("brand", None) - search_criteria["color_name"] = "Generic" - materials = self._container_registry.findInstanceContainers(**search_criteria) - if not materials: - # Generic material with new diameter is not found, search for preferred material - search_criteria.pop("color_name", None) - search_criteria.pop("material", None) - search_criteria["id"] = extruder_stack.getMetaDataEntry("preferred_material") - materials = self._container_registry.findInstanceContainers(**search_criteria) - if not materials: - # Preferred material with new diameter is not found, search for any material - search_criteria.pop("id", None) - materials = self._container_registry.findInstanceContainers(**search_criteria) - if not materials: - # Just use empty material as a final fallback - materials = [self._empty_container] - - Logger.log("i", "Selecting new material: %s", materials[0].getId()) - - extruder_stack.material = materials[0] + self._application.getExtruderManager().updateMaterialForDiameter(extruder_position) diff --git a/plugins/MachineSettingsAction/MachineSettingsAction.qml b/plugins/MachineSettingsAction/MachineSettingsAction.qml index b815d71acc..b12f8f8696 100644 --- a/plugins/MachineSettingsAction/MachineSettingsAction.qml +++ b/plugins/MachineSettingsAction/MachineSettingsAction.qml @@ -70,8 +70,8 @@ Cura.MachineAction anchors.top: pageTitle.bottom anchors.topMargin: UM.Theme.getSize("default_margin").height - property real columnWidth: ((width - 3 * UM.Theme.getSize("default_margin").width) / 2) | 0 - property real labelColumnWidth: columnWidth * 0.5 + property real columnWidth: Math.round((width - 3 * UM.Theme.getSize("default_margin").width) / 2) + property real labelColumnWidth: Math.round(columnWidth / 2) Tab { @@ -165,7 +165,7 @@ Cura.MachineAction id: gcodeFlavorComboBox sourceComponent: comboBoxWithOptions property string settingKey: "machine_gcode_flavor" - property string label: catalog.i18nc("@label", "Gcode flavor") + property string label: catalog.i18nc("@label", "G-code flavor") property bool forceUpdateOnChange: true property var afterOnActivate: manager.updateHasMaterialsMetadata } @@ -244,6 +244,7 @@ Cura.MachineAction height: childrenRect.height width: childrenRect.width text: machineExtruderCountProvider.properties.description + visible: extruderCountModel.count >= 2 Row { @@ -307,7 +308,7 @@ Cura.MachineAction width: settingsTabs.columnWidth Label { - text: catalog.i18nc("@label", "Start Gcode") + text: catalog.i18nc("@label", "Start G-code") font.bold: true } Loader @@ -317,7 +318,7 @@ Cura.MachineAction property int areaWidth: parent.width property int areaHeight: parent.height - y property string settingKey: "machine_start_gcode" - property string tooltip: catalog.i18nc("@tooltip", "Gcode commands to be executed at the very start.") + property string tooltip: catalog.i18nc("@tooltip", "G-code commands to be executed at the very start.") } } @@ -326,7 +327,7 @@ Cura.MachineAction width: settingsTabs.columnWidth Label { - text: catalog.i18nc("@label", "End Gcode") + text: catalog.i18nc("@label", "End G-code") font.bold: true } Loader @@ -336,7 +337,7 @@ Cura.MachineAction property int areaWidth: parent.width property int areaHeight: parent.height - y property string settingKey: "machine_end_gcode" - property string tooltip: catalog.i18nc("@tooltip", "Gcode commands to be executed at the very end.") + property string tooltip: catalog.i18nc("@tooltip", "G-code commands to be executed at the very end.") } } } @@ -381,6 +382,11 @@ Cura.MachineAction property string settingKey: "machine_nozzle_size" property string label: catalog.i18nc("@label", "Nozzle size") property string unit: catalog.i18nc("@label", "mm") + function afterOnEditingFinished() + { + // Somehow the machine_nozzle_size dependent settings are not updated otherwise + Cura.MachineManager.forceUpdateAllSettings() + } property bool isExtruderSetting: true } @@ -390,7 +396,7 @@ Cura.MachineAction visible: Cura.MachineManager.hasMaterials sourceComponent: numericTextFieldWithUnit property string settingKey: "material_diameter" - property string label: catalog.i18nc("@label", "Material diameter") + property string label: catalog.i18nc("@label", "Compatible material diameter") property string unit: catalog.i18nc("@label", "mm") property string tooltip: catalog.i18nc("@tooltip", "The nominal diameter of filament supported by the printer. The exact diameter will be overridden by the material and/or the profile.") function afterOnEditingFinished() @@ -441,7 +447,7 @@ Cura.MachineAction width: settingsTabs.columnWidth Label { - text: catalog.i18nc("@label", "Extruder Start Gcode") + text: catalog.i18nc("@label", "Extruder Start G-code") font.bold: true } Loader @@ -459,7 +465,7 @@ Cura.MachineAction width: settingsTabs.columnWidth Label { - text: catalog.i18nc("@label", "Extruder End Gcode") + text: catalog.i18nc("@label", "Extruder End G-code") font.bold: true } Loader @@ -591,7 +597,7 @@ Cura.MachineAction const value = propertyProvider.properties.value; return value ? value : ""; } - validator: RegExpValidator { regExp: _allowNegative ? /-?[0-9\.]{0,6}/ : /[0-9\.]{0,6}/ } + validator: RegExpValidator { regExp: _allowNegative ? /-?[0-9\.,]{0,6}/ : /[0-9\.,]{0,6}/ } onEditingFinished: { if (propertyProvider && text != propertyProvider.properties.value) @@ -826,10 +832,10 @@ Cura.MachineAction printHeadPolygon[axis][side] = result; return result; } - validator: RegExpValidator { regExp: /[0-9\.]{0,6}/ } + validator: RegExpValidator { regExp: /[0-9\.,]{0,6}/ } onEditingFinished: { - printHeadPolygon[axis][side] = parseFloat(textField.text); + printHeadPolygon[axis][side] = parseFloat(textField.text.replace(',','.')); var polygon = []; polygon.push([-printHeadPolygon["x"]["min"], printHeadPolygon["y"]["max"]]); polygon.push([-printHeadPolygon["x"]["min"],-printHeadPolygon["y"]["min"]]); @@ -888,4 +894,4 @@ Cura.MachineAction watchedProperties: [ "value" ] storeIndex: manager.containerIndex } -} \ No newline at end of file +} diff --git a/plugins/MonitorStage/MonitorStage.py b/plugins/MonitorStage/MonitorStage.py index 1a999ca896..ed84a8d2ce 100644 --- a/plugins/MonitorStage/MonitorStage.py +++ b/plugins/MonitorStage/MonitorStage.py @@ -22,14 +22,7 @@ class MonitorStage(CuraStage): def _setActivePrintJob(self, print_job): if self._active_print_job != print_job: - if self._active_print_job: - self._active_print_job.stateChanged.disconnect(self._updateIconSource) self._active_print_job = print_job - if self._active_print_job: - self._active_print_job.stateChanged.connect(self._updateIconSource) - - # Ensure that the right icon source is returned. - self._updateIconSource() def _setActivePrinter(self, printer): if self._active_printer != printer: @@ -43,9 +36,6 @@ class MonitorStage(CuraStage): else: self._setActivePrintJob(None) - # Ensure that the right icon source is returned. - self._updateIconSource() - def _onActivePrintJobChanged(self): self._setActivePrintJob(self._active_printer.activePrintJob) @@ -58,19 +48,12 @@ class MonitorStage(CuraStage): new_output_device = Application.getInstance().getMachineManager().printerOutputDevices[0] if new_output_device != self._printer_output_device: if self._printer_output_device: - self._printer_output_device.acceptsCommandsChanged.disconnect(self._updateIconSource) - self._printer_output_device.connectionStateChanged.disconnect(self._updateIconSource) self._printer_output_device.printersChanged.disconnect(self._onActivePrinterChanged) self._printer_output_device = new_output_device - self._printer_output_device.acceptsCommandsChanged.connect(self._updateIconSource) self._printer_output_device.printersChanged.connect(self._onActivePrinterChanged) - self._printer_output_device.connectionStateChanged.connect(self._updateIconSource) self._setActivePrinter(self._printer_output_device.activePrinter) - - # Force an update of the icon source - self._updateIconSource() except IndexError: pass @@ -80,7 +63,6 @@ class MonitorStage(CuraStage): self._onOutputDevicesChanged() self._updateMainOverlay() self._updateSidebar() - self._updateIconSource() def _updateMainOverlay(self): main_component_path = os.path.join(PluginRegistry.getInstance().getPluginPath("MonitorStage"), "MonitorMainView.qml") @@ -90,46 +72,3 @@ class MonitorStage(CuraStage): # TODO: currently the sidebar component for prepare and monitor stages is the same, this will change with the printer output device refactor! sidebar_component_path = os.path.join(Resources.getPath(Application.getInstance().ResourceTypes.QmlFiles), "Sidebar.qml") self.addDisplayComponent("sidebar", sidebar_component_path) - - def _updateIconSource(self): - if Application.getInstance().getTheme() is not None: - icon_name = self._getActiveOutputDeviceStatusIcon() - self.setIconSource(Application.getInstance().getTheme().getIcon(icon_name)) - - ## Find the correct status icon depending on the active output device state - def _getActiveOutputDeviceStatusIcon(self): - # We assume that you are monitoring the device with the highest priority. - try: - output_device = Application.getInstance().getMachineManager().printerOutputDevices[0] - except IndexError: - return "tab_status_unknown" - - if not output_device.acceptsCommands: - return "tab_status_unknown" - - if output_device.activePrinter is None: - return "tab_status_connected" - - # TODO: refactor to use enum instead of hardcoded strings? - if output_device.activePrinter.state == "maintenance": - return "tab_status_busy" - - if output_device.activePrinter.activePrintJob is None: - return "tab_status_connected" - - if output_device.activePrinter.activePrintJob.state in ["printing", "pre_print", "pausing", "resuming"]: - return "tab_status_busy" - - if output_device.activePrinter.activePrintJob.state == "wait_cleanup": - return "tab_status_finished" - - if output_device.activePrinter.activePrintJob.state in ["ready", ""]: - return "tab_status_connected" - - if output_device.activePrinter.activePrintJob.state == "paused": - return "tab_status_paused" - - if output_device.activePrinter.activePrintJob.state == "error": - return "tab_status_stopped" - - return "tab_status_unknown" diff --git a/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml b/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml index 0976dd5df6..7872908ee8 100644 --- a/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml +++ b/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml @@ -246,7 +246,7 @@ Item { Button { - width: Math.floor(UM.Theme.getSize("setting").height / 2) + width: Math.round(UM.Theme.getSize("setting").height / 2) height: UM.Theme.getSize("setting").height onClicked: addedSettingsModel.setVisible(model.key, false) diff --git a/plugins/PluginBrowser/PluginBrowser.py b/plugins/PluginBrowser/PluginBrowser.py index 35b88b3465..c8a5e1e545 100644 --- a/plugins/PluginBrowser/PluginBrowser.py +++ b/plugins/PluginBrowser/PluginBrowser.py @@ -1,31 +1,36 @@ # Copyright (c) 2017 Ultimaker B.V. # PluginBrowser is released under the terms of the LGPLv3 or higher. + +from PyQt5.QtCore import QUrl, QObject, Qt, pyqtProperty, pyqtSignal, pyqtSlot +from PyQt5.QtNetwork import QNetworkAccessManager, QNetworkRequest, QNetworkReply + +from UM.Application import Application +from UM.Qt.ListModel import ListModel +from UM.Logger import Logger +from UM.PluginRegistry import PluginRegistry +from UM.Qt.Bindings.PluginsModel import PluginsModel from UM.Extension import Extension from UM.i18n import i18nCatalog -from UM.Logger import Logger -from UM.Qt.ListModel import ListModel -from UM.PluginRegistry import PluginRegistry -from UM.Application import Application + from UM.Version import Version from UM.Message import Message -from PyQt5.QtNetwork import QNetworkAccessManager, QNetworkRequest, QNetworkReply -from PyQt5.QtCore import QUrl, QObject, Qt, pyqtProperty, pyqtSignal, pyqtSlot - import json import os import tempfile import platform import zipfile +import shutil + +from cura.CuraApplication import CuraApplication i18n_catalog = i18nCatalog("cura") - class PluginBrowser(QObject, Extension): def __init__(self, parent=None): super().__init__(parent) - self._api_version = 2 + self._api_version = 4 self._api_url = "http://software.ultimaker.com/cura/v%s/" % self._api_version self._plugin_list_request = None @@ -34,11 +39,18 @@ class PluginBrowser(QObject, Extension): self._download_plugin_reply = None self._network_manager = None + self._plugin_registry = Application.getInstance().getPluginRegistry() self._plugins_metadata = [] self._plugins_model = None + # Can be 'installed' or 'availble' + self._view = "available" + + self._restart_required = False + self._dialog = None + self._restartDialog = None self._download_progress = 0 self._is_downloading = False @@ -52,16 +64,29 @@ class PluginBrowser(QObject, Extension): ) ] - # Installed plugins are really installed after reboot. In order to prevent the user from downloading the - # same file over and over again, we keep track of the upgraded plugins. + # Installed plugins are really installed after reboot. In order to + # prevent the user from downloading the same file over and over again, + # we keep track of the upgraded plugins. + + # NOTE: This will be depreciated in favor of the 'status' system. self._newly_installed_plugin_ids = [] + self._newly_uninstalled_plugin_ids = [] + + self._plugin_statuses = {} # type: Dict[str, str] # variables for the license agreement dialog self._license_dialog_plugin_name = "" self._license_dialog_license_content = "" self._license_dialog_plugin_file_location = "" + self._restart_dialog_message = "" showLicenseDialog = pyqtSignal() + showRestartDialog = pyqtSignal() + pluginsMetadataChanged = pyqtSignal() + onDownloadProgressChanged = pyqtSignal() + onIsDownloadingChanged = pyqtSignal() + restartRequiredChanged = pyqtSignal() + viewChanged = pyqtSignal() @pyqtSlot(result = str) def getLicenseDialogPluginName(self): @@ -75,15 +100,19 @@ class PluginBrowser(QObject, Extension): def getLicenseDialogLicenseContent(self): return self._license_dialog_license_content + @pyqtSlot(result = str) + def getRestartDialogMessage(self): + return self._restart_dialog_message + def openLicenseDialog(self, plugin_name, license_content, plugin_file_location): self._license_dialog_plugin_name = plugin_name self._license_dialog_license_content = license_content self._license_dialog_plugin_file_location = plugin_file_location self.showLicenseDialog.emit() - pluginsMetadataChanged = pyqtSignal() - onDownloadProgressChanged = pyqtSignal() - onIsDownloadingChanged = pyqtSignal() + def openRestartDialog(self, message): + self._restart_dialog_message = message + self.showRestartDialog.emit() @pyqtProperty(bool, notify = onIsDownloadingChanged) def isDownloading(self): @@ -179,17 +208,46 @@ class PluginBrowser(QObject, Extension): @pyqtSlot(str) def installPlugin(self, file_path): + # Ensure that it starts with a /, as otherwise it doesn't work on windows. if not file_path.startswith("/"): - location = "/" + file_path # Ensure that it starts with a /, as otherwise it doesn't work on windows. + location = "/" + file_path else: location = file_path + result = PluginRegistry.getInstance().installPlugin("file://" + location) self._newly_installed_plugin_ids.append(result["id"]) self.pluginsMetadataChanged.emit() + self.openRestartDialog(result["message"]) + self._restart_required = True + self.restartRequiredChanged.emit() + # Application.getInstance().messageBox(i18n_catalog.i18nc("@window:title", "Plugin browser"), result["message"]) + + @pyqtSlot(str) + def removePlugin(self, plugin_id): + result = PluginRegistry.getInstance().uninstallPlugin(plugin_id) + + self._newly_uninstalled_plugin_ids.append(result["id"]) + self.pluginsMetadataChanged.emit() + + self._restart_required = True + self.restartRequiredChanged.emit() + Application.getInstance().messageBox(i18n_catalog.i18nc("@window:title", "Plugin browser"), result["message"]) + @pyqtSlot(str) + def enablePlugin(self, plugin_id): + self._plugin_registry.enablePlugin(plugin_id) + self.pluginsMetadataChanged.emit() + Logger.log("i", "%s was set as 'active'", id) + + @pyqtSlot(str) + def disablePlugin(self, plugin_id): + self._plugin_registry.disablePlugin(plugin_id) + self.pluginsMetadataChanged.emit() + Logger.log("i", "%s was set as 'deactive'", id) + @pyqtProperty(int, notify = onDownloadProgressChanged) def downloadProgress(self): return self._download_progress @@ -221,55 +279,70 @@ class PluginBrowser(QObject, Extension): self.setDownloadProgress(0) self.setIsDownloading(False) + @pyqtSlot(str) + def setView(self, view): + self._view = view + self.viewChanged.emit() + self.pluginsMetadataChanged.emit() + @pyqtProperty(QObject, notify=pluginsMetadataChanged) def pluginsModel(self): - if self._plugins_model is None: - self._plugins_model = ListModel() - self._plugins_model.addRoleName(Qt.UserRole + 1, "name") - self._plugins_model.addRoleName(Qt.UserRole + 2, "version") - self._plugins_model.addRoleName(Qt.UserRole + 3, "short_description") - self._plugins_model.addRoleName(Qt.UserRole + 4, "author") - self._plugins_model.addRoleName(Qt.UserRole + 5, "already_installed") - self._plugins_model.addRoleName(Qt.UserRole + 6, "file_location") - self._plugins_model.addRoleName(Qt.UserRole + 7, "can_upgrade") - else: - self._plugins_model.clear() - items = [] - for metadata in self._plugins_metadata: - items.append({ - "name": metadata["label"], - "version": metadata["version"], - "short_description": metadata["short_description"], - "author": metadata["author"], - "already_installed": self._checkAlreadyInstalled(metadata["id"]), - "file_location": metadata["file_location"], - "can_upgrade": self._checkCanUpgrade(metadata["id"], metadata["version"]) - }) - self._plugins_model.setItems(items) + self._plugins_model = PluginsModel(None, self._view) + # self._plugins_model.update() + + # Check each plugin the registry for matching plugin from server + # metadata, and if found, compare the versions. Higher version sets + # 'can_upgrade' to 'True': + for plugin in self._plugins_model.items: + if self._checkCanUpgrade(plugin["id"], plugin["version"]): + plugin["can_upgrade"] = True + + for item in self._plugins_metadata: + if item["id"] == plugin["id"]: + plugin["update_url"] = item["file_location"] + return self._plugins_model + + def _checkCanUpgrade(self, id, version): - plugin_registry = PluginRegistry.getInstance() - metadata = plugin_registry.getMetaData(id) - if metadata != {}: - if id in self._newly_installed_plugin_ids: - return False # We already updated this plugin. - current_version = Version(metadata["plugin"]["version"]) - new_version = Version(version) - if new_version > current_version: - return True + + # TODO: This could maybe be done more efficiently using a dictionary... + + # Scan plugin server data for plugin with the given id: + for plugin in self._plugins_metadata: + if id == plugin["id"]: + reg_version = Version(version) + new_version = Version(plugin["version"]) + if new_version > reg_version: + Logger.log("i", "%s has an update availible: %s", plugin["id"], plugin["version"]) + return True return False def _checkAlreadyInstalled(self, id): - plugin_registry = PluginRegistry.getInstance() - metadata = plugin_registry.getMetaData(id) - if metadata != {}: + metadata = self._plugin_registry.getMetaData(id) + # We already installed this plugin, but the registry just doesn't know it yet. + if id in self._newly_installed_plugin_ids: + return True + # We already uninstalled this plugin, but the registry just doesn't know it yet: + elif id in self._newly_uninstalled_plugin_ids: + return False + elif metadata != {}: return True else: - if id in self._newly_installed_plugin_ids: - return True # We already installed this plugin, but the registry just doesn't know it yet. return False + def _checkInstallStatus(self, plugin_id): + if plugin_id in self._plugin_registry.getInstalledPlugins(): + return "installed" + else: + return "uninstalled" + + def _checkEnabled(self, id): + if id in self._plugin_registry.getActivePlugins(): + return True + return False + def _onRequestFinished(self, reply): reply_url = reply.url().toString() if reply.error() == QNetworkReply.TimeoutError: @@ -290,7 +363,10 @@ class PluginBrowser(QObject, Extension): if reply_url == self._api_url + "plugins": try: json_data = json.loads(bytes(reply.readAll()).decode("utf-8")) + + # Add metadata to the manager: self._plugins_metadata = json_data + self._plugin_registry.addExternalPlugins(self._plugins_metadata) self.pluginsMetadataChanged.emit() except json.decoder.JSONDecodeError: Logger.log("w", "Received an invalid print job state message: Not valid JSON.") @@ -316,3 +392,15 @@ class PluginBrowser(QObject, Extension): self._network_manager = QNetworkAccessManager() self._network_manager.finished.connect(self._onRequestFinished) self._network_manager.networkAccessibleChanged.connect(self._onNetworkAccesibleChanged) + + @pyqtProperty(bool, notify=restartRequiredChanged) + def restartRequired(self): + return self._restart_required + + @pyqtProperty(str, notify=viewChanged) + def viewing(self): + return self._view + + @pyqtSlot() + def restart(self): + CuraApplication.getInstance().quit() diff --git a/plugins/PluginBrowser/PluginBrowser.qml b/plugins/PluginBrowser/PluginBrowser.qml index 13000d23ad..ec4c2a9135 100644 --- a/plugins/PluginBrowser/PluginBrowser.qml +++ b/plugins/PluginBrowser/PluginBrowser.qml @@ -1,191 +1,209 @@ -import UM 1.1 as UM +// Copyright (c) 2017 Ultimaker B.V. +// PluginBrowser is released under the terms of the LGPLv3 or higher. + import QtQuick 2.2 import QtQuick.Dialogs 1.1 import QtQuick.Window 2.2 -import QtQuick.Controls 1.1 +import QtQuick.Controls 1.4 +import QtQuick.Controls.Styles 1.4 -UM.Dialog -{ +// TODO: Switch to QtQuick.Controls 2.x and remove QtQuick.Controls.Styles + +import UM 1.1 as UM + +Window { id: base - title: catalog.i18nc("@title:window", "Find & Update plugins") - width: 600 * screenScaleFactor - height: 450 * screenScaleFactor + title: catalog.i18nc("@title:tab", "Plugins"); + width: 800 * screenScaleFactor + height: 640 * screenScaleFactor minimumWidth: 350 * screenScaleFactor minimumHeight: 350 * screenScaleFactor - Item - { - anchors.fill: parent - Item - { - id: topBar - height: childrenRect.height; - width: parent.width - Label - { - id: introText - text: catalog.i18nc("@label", "Here you can find a list of Third Party plugins.") - width: parent.width - height: 30 - } + color: UM.Theme.getColor("sidebar") - Button - { - id: refresh - text: catalog.i18nc("@action:button", "Refresh") - onClicked: manager.requestPluginList() - anchors.right: parent.right - enabled: !manager.isDownloading + Item { + id: view + anchors { + fill: parent + leftMargin: UM.Theme.getSize("default_margin").width + rightMargin: UM.Theme.getSize("default_margin").width + topMargin: UM.Theme.getSize("default_margin").height + bottomMargin: UM.Theme.getSize("default_margin").height + } + + Rectangle { + id: topBar + width: parent.width + color: "transparent" + height: childrenRect.height + + Row { + spacing: 12 + height: childrenRect.height + width: childrenRect.width + anchors.horizontalCenter: parent.horizontalCenter + + Button { + text: "Install" + style: ButtonStyle { + background: Rectangle { + color: "transparent" + implicitWidth: 96 + implicitHeight: 48 + Rectangle { + visible: manager.viewing == "available" ? true : false + color: UM.Theme.getColor("primary") + anchors.bottom: parent.bottom + width: parent.width + height: 3 + } + } + label: Text { + text: control.text + color: UM.Theme.getColor("text") + font { + pixelSize: 15 + } + verticalAlignment: Text.AlignVCenter + horizontalAlignment: Text.AlignHCenter + } + } + onClicked: manager.setView("available") + } + + Button { + text: "Manage" + style: ButtonStyle { + background: Rectangle { + color: "transparent" + implicitWidth: 96 + implicitHeight: 48 + Rectangle { + visible: manager.viewing == "installed" ? true : false + color: UM.Theme.getColor("primary") + anchors.bottom: parent.bottom + width: parent.width + height: 3 + } + } + label: Text { + text: control.text + color: UM.Theme.getColor("text") + font { + pixelSize: 15 + } + verticalAlignment: Text.AlignVCenter + horizontalAlignment: Text.AlignHCenter + } + } + onClicked: manager.setView("installed") + } } } - ScrollView - { + + // Scroll view breaks in QtQuick.Controls 2.x + ScrollView { + id: installedPluginList width: parent.width - anchors.top: topBar.bottom - anchors.bottom: bottomBar.top - anchors.bottomMargin: UM.Theme.getSize("default_margin").height + height: 400 + + anchors { + top: topBar.bottom + topMargin: UM.Theme.getSize("default_margin").height + bottom: bottomBar.top + bottomMargin: UM.Theme.getSize("default_margin").height + } + frameVisible: true - ListView - { + + ListView { id: pluginList - model: manager.pluginsModel + property var activePlugin + property var filter: "installed" + anchors.fill: parent - property var activePlugin - delegate: pluginDelegate + model: manager.pluginsModel + delegate: PluginEntry {} } } - Item - { + + Rectangle { id: bottomBar width: parent.width - height: closeButton.height + height: childrenRect.height + color: "transparent" anchors.bottom: parent.bottom - anchors.left: parent.left - ProgressBar - { - id: progressbar - anchors.bottom: parent.bottom - minimumValue: 0; - maximumValue: 100 - anchors.left:parent.left + + Label { + visible: manager.restartRequired + text: "You will need to restart Cura before changes in plugins have effect." + height: 30 + verticalAlignment: Text.AlignVCenter + } + Button { + id: restartChangedButton + text: "Quit Cura" anchors.right: closeButton.left anchors.rightMargin: UM.Theme.getSize("default_margin").width - value: manager.isDownloading ? manager.downloadProgress : 0 + visible: manager.restartRequired + iconName: "dialog-restart" + onClicked: manager.restart() + style: ButtonStyle { + background: Rectangle { + implicitWidth: 96 + implicitHeight: 30 + color: UM.Theme.getColor("primary") + } + label: Text { + verticalAlignment: Text.AlignVCenter + color: UM.Theme.getColor("button_text") + font { + pixelSize: 13 + bold: true + } + text: control.text + horizontalAlignment: Text.AlignHCenter + } + } } - Button - { + Button { id: closeButton text: catalog.i18nc("@action:button", "Close") iconName: "dialog-close" - onClicked: - { - if (manager.isDownloading) - { + onClicked: { + if ( manager.isDownloading ) { manager.cancelDownload() } base.close(); } - anchors.bottom: parent.bottom anchors.right: parent.right - } - } - - Item - { - SystemPalette { id: palette } - Component - { - id: pluginDelegate - Rectangle - { - width: pluginList.width; - height: texts.height; - color: index % 2 ? palette.base : palette.alternateBase - Column - { - id: texts - width: parent.width - height: childrenRect.height - anchors.left: parent.left - anchors.leftMargin: UM.Theme.getSize("default_margin").width - anchors.right: downloadButton.left - anchors.rightMargin: UM.Theme.getSize("default_margin").width - Label - { - text: "" + model.name + "" + ((model.author !== "") ? (" - " + model.author) : "") - width: contentWidth - height: contentHeight + UM.Theme.getSize("default_margin").height - verticalAlignment: Text.AlignVCenter - } - - Label - { - text: model.short_description - width: parent.width - height: contentHeight + UM.Theme.getSize("default_margin").height - wrapMode: Text.WordWrap - verticalAlignment: Text.AlignVCenter + style: ButtonStyle { + background: Rectangle { + color: "transparent" + implicitWidth: 96 + implicitHeight: 30 + border { + width: 1 + color: UM.Theme.getColor("lining") } } - Button - { - id: downloadButton - text: - { - if (manager.isDownloading && pluginList.activePlugin == model) - { - return catalog.i18nc("@action:button", "Cancel"); - } - else if (model.already_installed) - { - if (model.can_upgrade) - { - return catalog.i18nc("@action:button", "Upgrade"); - } - return catalog.i18nc("@action:button", "Installed"); - } - return catalog.i18nc("@action:button", "Download"); - } - onClicked: - { - if(!manager.isDownloading) - { - pluginList.activePlugin = model; - manager.downloadAndInstallPlugin(model.file_location); - } - else - { - manager.cancelDownload(); - } - } - anchors.right: parent.right - anchors.rightMargin: UM.Theme.getSize("default_margin").width - anchors.verticalCenter: parent.verticalCenter - enabled: - { - if (manager.isDownloading) - { - return (pluginList.activePlugin == model); - } - else - { - return (!model.already_installed || model.can_upgrade); - } - } + label: Text { + verticalAlignment: Text.AlignVCenter + color: UM.Theme.getColor("text") + text: control.text + horizontalAlignment: Text.AlignHCenter } } - } } + UM.I18nCatalog { id: catalog; name: "cura" } - Connections - { + Connections { target: manager - onShowLicenseDialog: - { + onShowLicenseDialog: { licenseDialog.pluginName = manager.getLicenseDialogPluginName(); licenseDialog.licenseContent = manager.getLicenseDialogLicenseContent(); licenseDialog.pluginFileLocation = manager.getLicenseDialogPluginFileLocation(); @@ -193,8 +211,7 @@ UM.Dialog } } - UM.Dialog - { + UM.Dialog { id: licenseDialog title: catalog.i18nc("@title:window", "Plugin License Agreement") @@ -258,5 +275,94 @@ UM.Dialog } ] } + + Connections { + target: manager + onShowRestartDialog: { + restartDialog.message = manager.getRestartDialogMessage(); + restartDialog.show(); + } + } + + Window { + id: restartDialog + // title: catalog.i18nc("@title:tab", "Plugins"); + width: 360 * screenScaleFactor + height: 120 * screenScaleFactor + minimumWidth: 360 * screenScaleFactor + minimumHeight: 120 * screenScaleFactor + color: UM.Theme.getColor("sidebar") + property var message; + + Text { + id: message + anchors { + left: parent.left + leftMargin: UM.Theme.getSize("default_margin").width + top: parent.top + topMargin: UM.Theme.getSize("default_margin").height + } + text: restartDialog.message != null ? restartDialog.message : "" + } + Button { + id: laterButton + text: "Later" + onClicked: restartDialog.close(); + anchors { + left: parent.left + leftMargin: UM.Theme.getSize("default_margin").width + bottom: parent.bottom + bottomMargin: UM.Theme.getSize("default_margin").height + } + style: ButtonStyle { + background: Rectangle { + color: "transparent" + implicitWidth: 96 + implicitHeight: 30 + border { + width: 1 + color: UM.Theme.getColor("lining") + } + } + label: Text { + verticalAlignment: Text.AlignVCenter + color: UM.Theme.getColor("text") + text: control.text + horizontalAlignment: Text.AlignHCenter + } + } + } + + + Button { + id: restartButton + text: "Quit Cura" + anchors { + right: parent.right + rightMargin: UM.Theme.getSize("default_margin").width + bottom: parent.bottom + bottomMargin: UM.Theme.getSize("default_margin").height + } + onClicked: manager.restart() + style: ButtonStyle { + background: Rectangle { + implicitWidth: 96 + implicitHeight: 30 + color: UM.Theme.getColor("primary") + } + label: Text { + verticalAlignment: Text.AlignVCenter + color: UM.Theme.getColor("button_text") + font { + pixelSize: 13 + bold: true + } + text: control.text + horizontalAlignment: Text.AlignHCenter + } + } + } + } + } } diff --git a/plugins/PluginBrowser/PluginEntry.qml b/plugins/PluginBrowser/PluginEntry.qml new file mode 100644 index 0000000000..eff9eb8943 --- /dev/null +++ b/plugins/PluginBrowser/PluginEntry.qml @@ -0,0 +1,474 @@ +// Copyright (c) 2017 Ultimaker B.V. +// PluginBrowser is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.2 +import QtQuick.Dialogs 1.1 +import QtQuick.Window 2.2 +import QtQuick.Controls 1.4 +import QtQuick.Controls.Styles 1.4 + +// TODO: Switch to QtQuick.Controls 2.x and remove QtQuick.Controls.Styles + +import UM 1.1 as UM + +Component { + id: pluginDelegate + + Rectangle { + + // Don't show required plugins as they can't be managed anyway: + height: !model.required ? 84 : 0 + visible: !model.required ? true : false + color: "transparent" + anchors { + left: parent.left + leftMargin: UM.Theme.getSize("default_margin").width + right: parent.right + rightMargin: UM.Theme.getSize("default_margin").width + } + + + // Bottom border: + Rectangle { + color: UM.Theme.getColor("lining") + width: parent.width + height: 1 + anchors.bottom: parent.bottom + } + + // Plugin info + Column { + id: pluginInfo + + property var color: model.enabled ? UM.Theme.getColor("text") : UM.Theme.getColor("lining") + + // Styling: + height: parent.height + anchors { + left: parent.left + top: parent.top + topMargin: UM.Theme.getSize("default_margin").height + right: authorInfo.left + rightMargin: UM.Theme.getSize("default_margin").width + } + + + Label { + text: model.name + width: parent.width + height: 24 + wrapMode: Text.WordWrap + verticalAlignment: Text.AlignVCenter + font { + pixelSize: 13 + bold: true + } + color: pluginInfo.color + + } + + Text { + text: model.description + width: parent.width + height: 36 + clip: true + wrapMode: Text.WordWrap + color: pluginInfo.color + elide: Text.ElideRight + } + } + + // Author info + Column { + id: authorInfo + width: 192 + height: parent.height + anchors { + top: parent.top + topMargin: UM.Theme.getSize("default_margin").height + right: pluginActions.left + rightMargin: UM.Theme.getSize("default_margin").width + } + + Label { + text: ""+model.author+"" + width: parent.width + height: 24 + wrapMode: Text.WordWrap + verticalAlignment: Text.AlignVCenter + horizontalAlignment: Text.AlignLeft + onLinkActivated: Qt.openUrlExternally("mailto:"+model.author_email+"?Subject=Cura: "+model.name+" Plugin") + color: model.enabled ? UM.Theme.getColor("text") : UM.Theme.getColor("lining") + } + } + + // Plugin actions + Row { + id: pluginActions + + width: 96 + height: parent.height + anchors { + top: parent.top + right: parent.right + topMargin: UM.Theme.getSize("default_margin").height + } + layoutDirection: Qt.RightToLeft + spacing: UM.Theme.getSize("default_margin").width + + // For 3rd-Party Plugins: + Button { + id: installButton + text: { + if ( manager.isDownloading && pluginList.activePlugin == model ) { + return catalog.i18nc( "@action:button", "Cancel" ); + } else { + if (model.can_upgrade) { + return catalog.i18nc("@action:button", "Update"); + } + return catalog.i18nc("@action:button", "Install"); + } + } + visible: model.external && ((model.status !== "installed") || model.can_upgrade) + style: ButtonStyle { + background: Rectangle { + implicitWidth: 96 + implicitHeight: 30 + color: "transparent" + border { + width: 1 + color: UM.Theme.getColor("lining") + } + } + label: Label { + text: control.text + color: UM.Theme.getColor("text") + verticalAlignment: Text.AlignVCenter + horizontalAlignment: Text.AlignHCenter + } + } + onClicked: { + if ( manager.isDownloading && pluginList.activePlugin == model ) { + manager.cancelDownload(); + } else { + pluginList.activePlugin = model; + if ( model.can_upgrade ) { + manager.downloadAndInstallPlugin( model.update_url ); + } else { + manager.downloadAndInstallPlugin( model.file_location ); + } + + } + } + } + Button { + id: removeButton + text: "Uninstall" + visible: model.can_uninstall && model.status == "installed" + enabled: !manager.isDownloading + style: ButtonStyle { + background: Rectangle { + implicitWidth: 96 + implicitHeight: 30 + color: "transparent" + border { + width: 1 + color: UM.Theme.getColor("lining") + } + } + label: Text { + text: control.text + color: UM.Theme.getColor("text") + verticalAlignment: Text.AlignVCenter + horizontalAlignment: Text.AlignHCenter + } + } + onClicked: manager.removePlugin( model.id ) + } + + // For Ultimaker Plugins: + Button { + id: enableButton + text: "Enable" + visible: !model.external && model.enabled == false + style: ButtonStyle { + background: Rectangle { + implicitWidth: 96 + implicitHeight: 30 + color: "transparent" + border { + width: 1 + color: UM.Theme.getColor("lining") + } + } + label: Text { + text: control.text + color: UM.Theme.getColor("text") + verticalAlignment: Text.AlignVCenter + horizontalAlignment: Text.AlignHCenter + } + } + onClicked: { + manager.enablePlugin(model.id); + } + } + Button { + id: disableButton + text: "Disable" + visible: !model.external && model.enabled == true + style: ButtonStyle { + background: Rectangle { + implicitWidth: 96 + implicitHeight: 30 + color: "transparent" + border { + width: 1 + color: UM.Theme.getColor("lining") + } + } + label: Text { + text: control.text + color: UM.Theme.getColor("text") + verticalAlignment: Text.AlignVCenter + horizontalAlignment: Text.AlignHCenter + } + } + onClicked: { + manager.disablePlugin(model.id); + } + } + /* + Rectangle { + id: removeControls + visible: model.status == "installed" && model.enabled + width: 96 + height: 30 + color: "transparent" + Button { + id: removeButton + text: "Disable" + enabled: { + if ( manager.isDownloading && pluginList.activePlugin == model ) { + return false; + } else if ( model.required ) { + return false; + } else { + return true; + } + } + onClicked: { + manager.disablePlugin(model.id); + } + style: ButtonStyle { + background: Rectangle { + color: "white" + implicitWidth: 96 + implicitHeight: 30 + border { + width: 1 + color: UM.Theme.getColor("lining") + } + } + label: Text { + verticalAlignment: Text.AlignVCenter + color: "grey" + text: control.text + horizontalAlignment: Text.AlignLeft + } + } + } + Button { + id: removeDropDown + property bool open: false + UM.RecolorImage { + anchors.centerIn: parent + height: 10 + width: 10 + source: UM.Theme.getIcon("arrow_bottom") + color: "grey" + } + enabled: { + if ( manager.isDownloading && pluginList.activePlugin == model ) { + return false; + } else if ( model.required ) { + return false; + } else { + return true; + } + } + anchors.right: parent.right + style: ButtonStyle { + background: Rectangle { + color: "transparent" + implicitWidth: 30 + implicitHeight: 30 + } + label: Text { + verticalAlignment: Text.AlignVCenter + color: "grey" + text: control.text + horizontalAlignment: Text.AlignHCenter + } + } + + + + // For the disable option: + // onClicked: pluginList.model.setEnabled(model.id, checked) + + onClicked: { + if ( !removeDropDown.open ) { + removeDropDown.open = true + } + else { + removeDropDown.open = false + } + } + } + + Rectangle { + id: divider + width: 1 + height: parent.height + anchors.right: removeDropDown.left + color: UM.Theme.getColor("lining") + } + + Column { + id: options + anchors { + top: removeButton.bottom + left: parent.left + right: parent.right + } + height: childrenRect.height + visible: removeDropDown.open + + Button { + id: disableButton + text: "Remove" + height: 30 + width: parent.width + onClicked: { + removeDropDown.open = false; + manager.removePlugin( model.id ); + } + } + } + } + */ + /* + Button { + id: enableButton + visible: !model.enabled && model.status == "installed" + onClicked: manager.enablePlugin( model.id ); + + text: "Enable" + style: ButtonStyle { + background: Rectangle { + color: "transparent" + implicitWidth: 96 + implicitHeight: 30 + border { + width: 1 + color: UM.Theme.getColor("lining") + } + } + label: Text { + verticalAlignment: Text.AlignVCenter + color: UM.Theme.getColor("text") + text: control.text + horizontalAlignment: Text.AlignHCenter + } + } + } + + Button { + id: updateButton + visible: model.status == "installed" && model.can_upgrade && model.enabled + // visible: model.already_installed + text: { + // If currently downloading: + if ( manager.isDownloading && pluginList.activePlugin == model ) { + return catalog.i18nc( "@action:button", "Cancel" ); + } else { + return catalog.i18nc("@action:button", "Update"); + } + } + style: ButtonStyle { + background: Rectangle { + color: UM.Theme.getColor("primary") + implicitWidth: 96 + implicitHeight: 30 + // radius: 4 + } + label: Text { + verticalAlignment: Text.AlignVCenter + color: "white" + text: control.text + horizontalAlignment: Text.AlignHCenter + } + } + } + Button { + id: externalControls + visible: model.status == "available" ? true : false + text: { + // If currently downloading: + if ( manager.isDownloading && pluginList.activePlugin == model ) { + return catalog.i18nc( "@action:button", "Cancel" ); + } else { + return catalog.i18nc("@action:button", "Install"); + } + } + onClicked: { + if ( manager.isDownloading && pluginList.activePlugin == model ) { + manager.cancelDownload(); + } else { + pluginList.activePlugin = model; + manager.downloadAndInstallPlugin( model.file_location ); + } + } + style: ButtonStyle { + background: Rectangle { + color: "transparent" + implicitWidth: 96 + implicitHeight: 30 + border { + width: 1 + color: UM.Theme.getColor("lining") + } + } + label: Text { + verticalAlignment: Text.AlignVCenter + color: "grey" + text: control.text + horizontalAlignment: Text.AlignHCenter + } + } + } + */ + ProgressBar { + id: progressbar + minimumValue: 0; + maximumValue: 100 + anchors.left: installButton.left + anchors.right: installButton.right + anchors.top: installButton.bottom + anchors.topMargin: 4 + value: manager.isDownloading ? manager.downloadProgress : 0 + visible: manager.isDownloading && pluginList.activePlugin == model + style: ProgressBarStyle { + background: Rectangle { + color: "lightgray" + implicitHeight: 6 + } + progress: Rectangle { + color: UM.Theme.getColor("primary") + } + } + } + + } + } +} diff --git a/plugins/PostProcessingPlugin/PostProcessingPlugin.py b/plugins/PostProcessingPlugin/PostProcessingPlugin.py index fa519f48be..c4b760724b 100644 --- a/plugins/PostProcessingPlugin/PostProcessingPlugin.py +++ b/plugins/PostProcessingPlugin/PostProcessingPlugin.py @@ -54,16 +54,15 @@ class PostProcessingPlugin(QObject, Extension): ## Execute all post-processing scripts on the gcode. def execute(self, output_device): scene = Application.getInstance().getController().getScene() - gcode_dict = None - - if hasattr(scene, "gcode_dict"): - gcode_dict = getattr(scene, "gcode_dict") - + # If the scene does not have a gcode, do nothing + if not hasattr(scene, "gcode_dict"): + return + gcode_dict = getattr(scene, "gcode_dict") if not gcode_dict: return # get gcode list for the active build plate - active_build_plate_id = Application.getInstance().getBuildPlateModel().activeBuildPlate + active_build_plate_id = Application.getInstance().getMultiBuildPlateModel().activeBuildPlate gcode_list = gcode_dict[active_build_plate_id] if not gcode_list: return @@ -119,27 +118,30 @@ class PostProcessingPlugin(QObject, Extension): for loader, script_name, ispkg in scripts: # Iterate over all scripts. if script_name not in sys.modules: - spec = importlib.util.spec_from_file_location(__name__ + "." + script_name, os.path.join(path, script_name + ".py")) - loaded_script = importlib.util.module_from_spec(spec) - spec.loader.exec_module(loaded_script) - sys.modules[script_name] = loaded_script - - loaded_class = getattr(loaded_script, script_name) - temp_object = loaded_class() - Logger.log("d", "Begin loading of script: %s", script_name) try: - setting_data = temp_object.getSettingData() - if "name" in setting_data and "key" in setting_data: - self._script_labels[setting_data["key"]] = setting_data["name"] - self._loaded_scripts[setting_data["key"]] = loaded_class - else: - Logger.log("w", "Script %s.py has no name or key", script_name) - self._script_labels[script_name] = script_name - self._loaded_scripts[script_name] = loaded_class - except AttributeError: - Logger.log("e", "Script %s.py is not a recognised script type. Ensure it inherits Script", script_name) - except NotImplementedError: - Logger.log("e", "Script %s.py has no implemented settings", script_name) + spec = importlib.util.spec_from_file_location(__name__ + "." + script_name, os.path.join(path, script_name + ".py")) + loaded_script = importlib.util.module_from_spec(spec) + spec.loader.exec_module(loaded_script) + sys.modules[script_name] = loaded_script + + loaded_class = getattr(loaded_script, script_name) + temp_object = loaded_class() + Logger.log("d", "Begin loading of script: %s", script_name) + try: + setting_data = temp_object.getSettingData() + if "name" in setting_data and "key" in setting_data: + self._script_labels[setting_data["key"]] = setting_data["name"] + self._loaded_scripts[setting_data["key"]] = loaded_class + else: + Logger.log("w", "Script %s.py has no name or key", script_name) + self._script_labels[script_name] = script_name + self._loaded_scripts[script_name] = loaded_class + except AttributeError: + Logger.log("e", "Script %s.py is not a recognised script type. Ensure it inherits Script", script_name) + except NotImplementedError: + Logger.log("e", "Script %s.py has no implemented settings", script_name) + except Exception as e: + Logger.logException("e", "Exception occurred while loading post processing plugin: {error_msg}".format(error_msg = str(e))) self.loadedScriptListChanged.emit() loadedScriptListChanged = pyqtSignal() @@ -171,19 +173,19 @@ class PostProcessingPlugin(QObject, Extension): Logger.log("d", "Creating post processing plugin view.") ## Load all scripts in the scripts folders - for root in [PluginRegistry.getInstance().getPluginPath("PostProcessingPlugin"), Resources.getStoragePath(Resources.Preferences)]: - try: - path = os.path.join(root, "scripts") - if not os.path.isdir(path): - try: - os.makedirs(path) - except OSError: - Logger.log("w", "Unable to create a folder for scripts: " + path) - continue + # The PostProcessingPlugin path is for built-in scripts. + # The Resources path is where the user should store custom scripts. + # The Preferences path is legacy, where the user may previously have stored scripts. + for root in [PluginRegistry.getInstance().getPluginPath("PostProcessingPlugin"), Resources.getStoragePath(Resources.Resources), Resources.getStoragePath(Resources.Preferences)]: + path = os.path.join(root, "scripts") + if not os.path.isdir(path): + try: + os.makedirs(path) + except OSError: + Logger.log("w", "Unable to create a folder for scripts: " + path) + continue - self.loadAllScripts(path) - except Exception as e: - Logger.logException("e", "Exception occurred while loading post processing plugin: {error_msg}".format(error_msg = str(e))) + self.loadAllScripts(path) # Create the plugin dialog component path = os.path.join(PluginRegistry.getInstance().getPluginPath("PostProcessingPlugin"), "PostProcessingPlugin.qml") diff --git a/plugins/PostProcessingPlugin/PostProcessingPlugin.qml b/plugins/PostProcessingPlugin/PostProcessingPlugin.qml index d64d60a04a..489ea6dcfb 100644 --- a/plugins/PostProcessingPlugin/PostProcessingPlugin.qml +++ b/plugins/PostProcessingPlugin/PostProcessingPlugin.qml @@ -25,8 +25,8 @@ UM.Dialog { UM.I18nCatalog{id: catalog; name:"cura"} id: base - property int columnWidth: Math.floor((base.width / 2) - UM.Theme.getSize("default_margin").width) - property int textMargin: Math.floor(UM.Theme.getSize("default_margin").width / 2) + property int columnWidth: Math.round((base.width / 2) - UM.Theme.getSize("default_margin").width) + property int textMargin: Math.round(UM.Theme.getSize("default_margin").width / 2) property string activeScriptName SystemPalette{ id: palette } SystemPalette{ id: disabledPalette; colorGroup: SystemPalette.Disabled } @@ -129,8 +129,8 @@ UM.Dialog { anchors.verticalCenter: parent.verticalCenter anchors.horizontalCenter: parent.horizontalCenter - width: Math.floor(control.width / 2.7) - height: Math.floor(control.height / 2.7) + width: Math.round(control.width / 2.7) + height: Math.round(control.height / 2.7) sourceSize.width: width sourceSize.height: width color: palette.text @@ -164,8 +164,8 @@ UM.Dialog { anchors.verticalCenter: parent.verticalCenter anchors.horizontalCenter: parent.horizontalCenter - width: Math.floor(control.width / 2.5) - height: Math.floor(control.height / 2.5) + width: Math.round(control.width / 2.5) + height: Math.round(control.height / 2.5) sourceSize.width: width sourceSize.height: width color: control.enabled ? palette.text : disabledPalette.text @@ -199,8 +199,8 @@ UM.Dialog { anchors.verticalCenter: parent.verticalCenter anchors.horizontalCenter: parent.horizontalCenter - width: Math.floor(control.width / 2.5) - height: Math.floor(control.height / 2.5) + width: Math.round(control.width / 2.5) + height: Math.round(control.height / 2.5) sourceSize.width: width sourceSize.height: width color: control.enabled ? palette.text : disabledPalette.text @@ -478,15 +478,15 @@ UM.Dialog control.hovered ? UM.Theme.getColor("action_button_hovered") : UM.Theme.getColor("action_button") Behavior on color { ColorAnimation { duration: 50; } } anchors.left: parent.left - anchors.leftMargin: Math.floor(UM.Theme.getSize("save_button_text_margin").width / 2); + anchors.leftMargin: Math.round(UM.Theme.getSize("save_button_text_margin").width / 2); width: parent.height height: parent.height UM.RecolorImage { anchors.verticalCenter: parent.verticalCenter anchors.horizontalCenter: parent.horizontalCenter - width: Math.floor(parent.width / 2) - height: Math.floor(parent.height / 2) + width: Math.round(parent.width / 2) + height: Math.round(parent.height / 2) sourceSize.width: width sourceSize.height: height color: !control.enabled ? UM.Theme.getColor("action_button_disabled_text") : diff --git a/plugins/PostProcessingPlugin/Script.py b/plugins/PostProcessingPlugin/Script.py index 7d603ba11f..7f419cd422 100644 --- a/plugins/PostProcessingPlugin/Script.py +++ b/plugins/PostProcessingPlugin/Script.py @@ -105,6 +105,58 @@ class Script: except: return default + ## Convenience function to produce a line of g-code. + # + # You can put in an original g-code line and it'll re-use all the values + # in that line. + # All other keyword parameters are put in the result in g-code's format. + # For instance, if you put ``G=1`` in the parameters, it will output + # ``G1``. If you put ``G=1, X=100`` in the parameters, it will output + # ``G1 X100``. The parameters G and M will always be put first. The + # parameters T and S will be put second (or first if there is no G or M). + # The rest of the parameters will be put in arbitrary order. + # \param line The original g-code line that must be modified. If not + # provided, an entirely new g-code line will be produced. + # \return A line of g-code with the desired parameters filled in. + def putValue(self, line = "", **kwargs): + #Strip the comment. + comment = "" + if ";" in line: + comment = line[line.find(";"):] + line = line[:line.find(";")] #Strip the comment. + + #Parse the original g-code line. + for part in line.split(" "): + if part == "": + continue + parameter = part[0] + if parameter in kwargs: + continue #Skip this one. The user-provided parameter overwrites the one in the line. + value = part[1:] + kwargs[parameter] = value + + #Write the new g-code line. + result = "" + priority_parameters = ["G", "M", "T", "S", "F", "X", "Y", "Z", "E"] #First some parameters that get priority. In order of priority! + for priority_key in priority_parameters: + if priority_key in kwargs: + if result != "": + result += " " + result += priority_key + str(kwargs[priority_key]) + del kwargs[priority_key] + for key, value in kwargs.items(): + if result != "": + result += " " + result += key + str(value) + + #Put the comment back in. + if comment != "": + if result != "": + result += " " + result += ";" + comment + + return result + ## This is called when the script is executed. # It gets a list of g-code strings and needs to return a (modified) list. def execute(self, data): diff --git a/plugins/PostProcessingPlugin/scripts/TweakAtZ.py b/plugins/PostProcessingPlugin/scripts/ChangeAtZ.py similarity index 78% rename from plugins/PostProcessingPlugin/scripts/TweakAtZ.py rename to plugins/PostProcessingPlugin/scripts/ChangeAtZ.py index 7b714f6ee0..54d6fdb155 100644 --- a/plugins/PostProcessingPlugin/scripts/TweakAtZ.py +++ b/plugins/PostProcessingPlugin/scripts/ChangeAtZ.py @@ -1,10 +1,10 @@ -# TweakAtZ script - Change printing parameters at a given height +# ChangeAtZ script - Change printing parameters at a given height # This script is the successor of the TweakAtZ plugin for legacy Cura. # It contains code from the TweakAtZ plugin V1.0-V4.x and from the ExampleScript by Jaime van Kessel, Ultimaker B.V. # 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 TweakAtZ plugin / script: +#Authors of the ChangeAtZ plugin / script: # Written by Steven Morlock, smorloc@gmail.com # Modified by Ricardo Gomez, ricardoga@otulook.com, to add Bed Temperature and make it work with Cura_13.06.04+ # Modified by Stefan Heule, Dim3nsioneer@gmx.ch since V3.0 (see changelog below) @@ -46,15 +46,15 @@ from ..Script import Script #from UM.Logger import Logger import re -class TweakAtZ(Script): +class ChangeAtZ(Script): version = "5.1.1" def __init__(self): super().__init__() def getSettingDataString(self): return """{ - "name":"TweakAtZ """ + self.version + """ (Experimental)", - "key":"TweakAtZ", + "name":"ChangeAtZ """ + self.version + """ (Experimental)", + "key":"ChangeAtZ", "metadata": {}, "version": 2, "settings": @@ -69,8 +69,8 @@ class TweakAtZ(Script): }, "b_targetZ": { - "label": "Tweak Height", - "description": "Z height to tweak at", + "label": "Change Height", + "description": "Z height to change at", "unit": "mm", "type": "float", "default_value": 5.0, @@ -81,8 +81,8 @@ class TweakAtZ(Script): }, "b_targetL": { - "label": "Tweak Layer", - "description": "Layer no. to tweak at", + "label": "Change Layer", + "description": "Layer no. to change at", "unit": "", "type": "int", "default_value": 1, @@ -93,7 +93,7 @@ class TweakAtZ(Script): "c_behavior": { "label": "Behavior", - "description": "Select behavior: Tweak value and keep it for the rest, Tweak value for single layer only", + "description": "Select behavior: Change value and keep it for the rest, Change value for single layer only", "type": "enum", "options": {"keep_value":"Keep value","single_layer":"Single Layer"}, "default_value": "keep_value" @@ -101,7 +101,7 @@ class TweakAtZ(Script): "d_twLayers": { "label": "No. Layers", - "description": "No. of layers used to tweak", + "description": "No. of layers used to change", "unit": "", "type": "int", "default_value": 1, @@ -109,10 +109,10 @@ class TweakAtZ(Script): "maximum_value_warning": "50", "enabled": "c_behavior == 'keep_value'" }, - "e1_Tweak_speed": + "e1_Change_speed": { - "label": "Tweak Speed", - "description": "Select if total speed (print and travel) has to be tweaked", + "label": "Change Speed", + "description": "Select if total speed (print and travel) has to be cahnged", "type": "bool", "default_value": false }, @@ -126,12 +126,12 @@ class TweakAtZ(Script): "minimum_value": "1", "minimum_value_warning": "10", "maximum_value_warning": "200", - "enabled": "e1_Tweak_speed" + "enabled": "e1_Change_speed" }, - "f1_Tweak_printspeed": + "f1_Change_printspeed": { - "label": "Tweak Print Speed", - "description": "Select if print speed has to be tweaked", + "label": "Change Print Speed", + "description": "Select if print speed has to be changed", "type": "bool", "default_value": false }, @@ -145,12 +145,12 @@ class TweakAtZ(Script): "minimum_value": "1", "minimum_value_warning": "10", "maximum_value_warning": "200", - "enabled": "f1_Tweak_printspeed" + "enabled": "f1_Change_printspeed" }, - "g1_Tweak_flowrate": + "g1_Change_flowrate": { - "label": "Tweak Flow Rate", - "description": "Select if flow rate has to be tweaked", + "label": "Change Flow Rate", + "description": "Select if flow rate has to be changed", "type": "bool", "default_value": false }, @@ -164,12 +164,12 @@ class TweakAtZ(Script): "minimum_value": "1", "minimum_value_warning": "10", "maximum_value_warning": "200", - "enabled": "g1_Tweak_flowrate" + "enabled": "g1_Change_flowrate" }, - "g3_Tweak_flowrateOne": + "g3_Change_flowrateOne": { - "label": "Tweak Flow Rate 1", - "description": "Select if first extruder flow rate has to be tweaked", + "label": "Change Flow Rate 1", + "description": "Select if first extruder flow rate has to be changed", "type": "bool", "default_value": false }, @@ -183,12 +183,12 @@ class TweakAtZ(Script): "minimum_value": "1", "minimum_value_warning": "10", "maximum_value_warning": "200", - "enabled": "g3_Tweak_flowrateOne" + "enabled": "g3_Change_flowrateOne" }, - "g5_Tweak_flowrateTwo": + "g5_Change_flowrateTwo": { - "label": "Tweak Flow Rate 2", - "description": "Select if second extruder flow rate has to be tweaked", + "label": "Change Flow Rate 2", + "description": "Select if second extruder flow rate has to be changed", "type": "bool", "default_value": false }, @@ -202,12 +202,12 @@ class TweakAtZ(Script): "minimum_value": "1", "minimum_value_warning": "10", "maximum_value_warning": "200", - "enabled": "g5_Tweak_flowrateTwo" + "enabled": "g5_Change_flowrateTwo" }, - "h1_Tweak_bedTemp": + "h1_Change_bedTemp": { - "label": "Tweak Bed Temp", - "description": "Select if Bed Temperature has to be tweaked", + "label": "Change Bed Temp", + "description": "Select if Bed Temperature has to be changed", "type": "bool", "default_value": false }, @@ -221,12 +221,12 @@ class TweakAtZ(Script): "minimum_value": "0", "minimum_value_warning": "30", "maximum_value_warning": "120", - "enabled": "h1_Tweak_bedTemp" + "enabled": "h1_Change_bedTemp" }, - "i1_Tweak_extruderOne": + "i1_Change_extruderOne": { - "label": "Tweak Extruder 1 Temp", - "description": "Select if First Extruder Temperature has to be tweaked", + "label": "Change Extruder 1 Temp", + "description": "Select if First Extruder Temperature has to be changed", "type": "bool", "default_value": false }, @@ -240,12 +240,12 @@ class TweakAtZ(Script): "minimum_value": "0", "minimum_value_warning": "160", "maximum_value_warning": "250", - "enabled": "i1_Tweak_extruderOne" + "enabled": "i1_Change_extruderOne" }, - "i3_Tweak_extruderTwo": + "i3_Change_extruderTwo": { - "label": "Tweak Extruder 2 Temp", - "description": "Select if Second Extruder Temperature has to be tweaked", + "label": "Change Extruder 2 Temp", + "description": "Select if Second Extruder Temperature has to be changed", "type": "bool", "default_value": false }, @@ -259,12 +259,12 @@ class TweakAtZ(Script): "minimum_value": "0", "minimum_value_warning": "160", "maximum_value_warning": "250", - "enabled": "i3_Tweak_extruderTwo" + "enabled": "i3_Change_extruderTwo" }, - "j1_Tweak_fanSpeed": + "j1_Change_fanSpeed": { - "label": "Tweak Fan Speed", - "description": "Select if Fan Speed has to be tweaked", + "label": "Change Fan Speed", + "description": "Select if Fan Speed has to be changed", "type": "bool", "default_value": false }, @@ -278,17 +278,17 @@ class TweakAtZ(Script): "minimum_value": "0", "minimum_value_warning": "15", "maximum_value_warning": "255", - "enabled": "j1_Tweak_fanSpeed" + "enabled": "j1_Change_fanSpeed" } } }""" 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 ";TweakAtZ" in key and not ";LAYER:" in key): + 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 ";TweakAtZ" in key: + if ";ChangeAtZ" in key: m = re.search("^[0-4]", subPart) elif ";LAYER:" in key: m = re.search("^[+-]?[0-9]*", subPart) @@ -303,17 +303,17 @@ class TweakAtZ(Script): return default def execute(self, data): - #Check which tweaks should apply - TweakProp = {"speed": self.getSettingValueByKey("e1_Tweak_speed"), - "flowrate": self.getSettingValueByKey("g1_Tweak_flowrate"), - "flowrateOne": self.getSettingValueByKey("g3_Tweak_flowrateOne"), - "flowrateTwo": self.getSettingValueByKey("g5_Tweak_flowrateTwo"), - "bedTemp": self.getSettingValueByKey("h1_Tweak_bedTemp"), - "extruderOne": self.getSettingValueByKey("i1_Tweak_extruderOne"), - "extruderTwo": self.getSettingValueByKey("i3_Tweak_extruderTwo"), - "fanSpeed": self.getSettingValueByKey("j1_Tweak_fanSpeed")} - TweakPrintSpeed = self.getSettingValueByKey("f1_Tweak_printspeed") - TweakStrings = {"speed": "M220 S%f\n", + #Check which changes should apply + ChangeProp = {"speed": self.getSettingValueByKey("e1_Change_speed"), + "flowrate": self.getSettingValueByKey("g1_Change_flowrate"), + "flowrateOne": self.getSettingValueByKey("g3_Change_flowrateOne"), + "flowrateTwo": self.getSettingValueByKey("g5_Change_flowrateTwo"), + "bedTemp": self.getSettingValueByKey("h1_Change_bedTemp"), + "extruderOne": self.getSettingValueByKey("i1_Change_extruderOne"), + "extruderTwo": self.getSettingValueByKey("i3_Change_extruderTwo"), + "fanSpeed": self.getSettingValueByKey("j1_Change_fanSpeed")} + ChangePrintSpeed = self.getSettingValueByKey("f1_Change_printspeed") + ChangeStrings = {"speed": "M220 S%f\n", "flowrate": "M221 S%f\n", "flowrateOne": "M221 T0 S%f\n", "flowrateTwo": "M221 T1 S%f\n", @@ -369,14 +369,14 @@ class TweakAtZ(Script): for line in lines: if ";Generated with Cura_SteamEngine" in line: TWinstances += 1 - modified_gcode += ";TweakAtZ instances: %d\n" % TWinstances - if not ("M84" in line or "M25" in line or ("G1" in line and TweakPrintSpeed and (state==3 or state==4)) or - ";TweakAtZ instances:" in line): + modified_gcode += ";ChangeAtZ instances: %d\n" % TWinstances + if not ("M84" in line or "M25" in line or ("G1" in line and ChangePrintSpeed and (state==3 or state==4)) or + ";ChangeAtZ instances:" in line): modified_gcode += line + "\n" IsUM2 = ("FLAVOR:UltiGCode" in line) or IsUM2 #Flavor is UltiGCode! - if ";TweakAtZ-state" in line: #checks for state change comment - state = self.getValue(line, ";TweakAtZ-state", state) - if ";TweakAtZ instances:" in line: + if ";ChangeAtZ-state" in line: #checks for state change comment + state = self.getValue(line, ";ChangeAtZ-state", state) + if ";ChangeAtZ instances:" in line: try: tempTWi = int(line[20:]) except: @@ -390,7 +390,7 @@ class TweakAtZ(Script): state = old["state"] layer = self.getValue(line, ";LAYER:", layer) if targetL_i > -100000: #target selected by layer no. - if (state == 2 or targetL_i == 0) and layer == targetL_i: #determine targetZ from layer no.; checks for tweak on layer 0 + if (state == 2 or targetL_i == 0) and layer == targetL_i: #determine targetZ from layer no.; checks for change on layer 0 state = 2 targetZ = z + 0.001 if (self.getValue(line, "T", None) is not None) and (self.getValue(line, "M", None) is None): #looking for single T-cmd @@ -415,7 +415,7 @@ class TweakAtZ(Script): elif tmp_extruder == 1: #second extruder old["flowrateOne"] = self.getValue(line, "S", old["flowrateOne"]) if ("M84" in line or "M25" in line): - if state>0 and TweakProp["speed"]: #"finish" commands for UM Original and UM2 + if state>0 and ChangeProp["speed"]: #"finish" commands for UM Original and UM2 modified_gcode += "M220 S100 ; speed reset to 100% at the end of print\n" modified_gcode += "M117 \n" modified_gcode += line + "\n" @@ -425,14 +425,14 @@ class TweakAtZ(Script): y = self.getValue(line, "Y", None) e = self.getValue(line, "E", None) f = self.getValue(line, "F", None) - if 'G1' in line and TweakPrintSpeed and (state==3 or state==4): + if 'G1' in line and ChangePrintSpeed and (state==3 or state==4): # check for pure print movement in target range: if x != None and y != None and f != None and e != None and newZ==z: modified_gcode += "G1 F%d X%1.3f Y%1.3f E%1.5f\n" % (int(f / 100.0 * float(target_values["printspeed"])), self.getValue(line, "X"), self.getValue(line, "Y"), self.getValue(line, "E")) else: #G1 command but not a print movement modified_gcode += line + "\n" - # no tweaking on retraction hops which have no x and y coordinate: + # no changing on retraction hops which have no x and y coordinate: if (newZ != z) and (x is not None) and (y is not None): z = newZ if z < targetZ and state == 1: @@ -440,56 +440,56 @@ class TweakAtZ(Script): if z >= targetZ and state == 2: state = 3 done_layers = 0 - for key in TweakProp: - if TweakProp[key] and old[key]==-1: #old value is not known + for key in ChangeProp: + if ChangeProp[key] and old[key]==-1: #old value is not known oldValueUnknown = True - if oldValueUnknown: #the tweaking has to happen within one layer + if oldValueUnknown: #the changing has to happen within one layer twLayers = 1 if IsUM2: #Parameters have to be stored in the printer (UltiGCode=UM2) - modified_gcode += "M605 S%d;stores parameters before tweaking\n" % (TWinstances-1) - if behavior == 1: #single layer tweak only and then reset + modified_gcode += "M605 S%d;stores parameters before changing\n" % (TWinstances-1) + if behavior == 1: #single layer change only and then reset twLayers = 1 - if TweakPrintSpeed and behavior == 0: + if ChangePrintSpeed and behavior == 0: twLayers = done_layers + 1 if state==3: if twLayers-done_layers>0: #still layers to go? if targetL_i > -100000: - modified_gcode += ";TweakAtZ V%s: executed at Layer %d\n" % (self.version,layer) - modified_gcode += "M117 Printing... tw@L%4d\n" % layer + modified_gcode += ";ChangeAtZ V%s: executed at Layer %d\n" % (self.version,layer) + modified_gcode += "M117 Printing... ch@L%4d\n" % layer else: - modified_gcode += (";TweakAtZ V%s: executed at %1.2f mm\n" % (self.version,z)) - modified_gcode += "M117 Printing... tw@%5.1f\n" % z - for key in TweakProp: - if TweakProp[key]: - modified_gcode += TweakStrings[key] % float(old[key]+(float(target_values[key])-float(old[key]))/float(twLayers)*float(done_layers+1)) + modified_gcode += (";ChangeAtZ V%s: executed at %1.2f mm\n" % (self.version,z)) + modified_gcode += "M117 Printing... ch@%5.1f\n" % z + for key in ChangeProp: + if ChangeProp[key]: + modified_gcode += ChangeStrings[key] % float(old[key]+(float(target_values[key])-float(old[key]))/float(twLayers)*float(done_layers+1)) done_layers += 1 else: state = 4 if behavior == 1: #reset values after one layer if targetL_i > -100000: - modified_gcode += ";TweakAtZ V%s: reset on Layer %d\n" % (self.version,layer) + modified_gcode += ";ChangeAtZ V%s: reset on Layer %d\n" % (self.version,layer) else: - modified_gcode += ";TweakAtZ V%s: reset at %1.2f mm\n" % (self.version,z) + modified_gcode += ";ChangeAtZ V%s: reset at %1.2f mm\n" % (self.version,z) if IsUM2 and oldValueUnknown: #executes on UM2 with Ultigcode and machine setting modified_gcode += "M606 S%d;recalls saved settings\n" % (TWinstances-1) else: #executes on RepRap, UM2 with Ultigcode and Cura setting - for key in TweakProp: - if TweakProp[key]: - modified_gcode += TweakStrings[key] % float(old[key]) + for key in ChangeProp: + if ChangeProp[key]: + modified_gcode += ChangeStrings[key] % float(old[key]) # re-activates the plugin if executed by pre-print G-command, resets settings: - if (z < targetZ or layer == 0) and state >= 3: #resets if below tweak level or at level 0 + if (z < targetZ or layer == 0) and state >= 3: #resets if below change level or at level 0 state = 2 done_layers = 0 if targetL_i > -100000: - modified_gcode += ";TweakAtZ V%s: reset below Layer %d\n" % (self.version,targetL_i) + modified_gcode += ";ChangeAtZ V%s: reset below Layer %d\n" % (self.version,targetL_i) else: - modified_gcode += ";TweakAtZ V%s: reset below %1.2f mm\n" % (self.version,targetZ) + modified_gcode += ";ChangeAtZ V%s: reset below %1.2f mm\n" % (self.version,targetZ) if IsUM2 and oldValueUnknown: #executes on UM2 with Ultigcode and machine setting modified_gcode += "M606 S%d;recalls saved settings\n" % (TWinstances-1) else: #executes on RepRap, UM2 with Ultigcode and Cura setting - for key in TweakProp: - if TweakProp[key]: - modified_gcode += TweakStrings[key] % float(old[key]) + for key in ChangeProp: + if ChangeProp[key]: + modified_gcode += ChangeStrings[key] % float(old[key]) data[index] = modified_gcode index += 1 return data diff --git a/plugins/PostProcessingPlugin/scripts/ColorChange.py b/plugins/PostProcessingPlugin/scripts/FilamentChange.py similarity index 79% rename from plugins/PostProcessingPlugin/scripts/ColorChange.py rename to plugins/PostProcessingPlugin/scripts/FilamentChange.py index 8db45f4033..2bb7891634 100644 --- a/plugins/PostProcessingPlugin/scripts/ColorChange.py +++ b/plugins/PostProcessingPlugin/scripts/FilamentChange.py @@ -2,17 +2,15 @@ # under the terms of the AGPLv3 or higher from ..Script import Script -#from UM.Logger import Logger -# from cura.Settings.ExtruderManager import ExtruderManager -class ColorChange(Script): +class FilamentChange(Script): def __init__(self): super().__init__() def getSettingDataString(self): return """{ - "name":"Color Change", - "key": "ColorChange", + "name":"Filament Change", + "key": "FilamentChange", "metadata": {}, "version": 2, "settings": @@ -60,17 +58,17 @@ class ColorChange(Script): if later_retract is not None and later_retract > 0.: color_change = color_change + (" L%.2f" % later_retract) - color_change = color_change + " ; Generated by ColorChange plugin" + color_change = color_change + " ; Generated by FilamentChange plugin" - layer_targets = layer_nums.split(',') + layer_targets = layer_nums.split(",") if len(layer_targets) > 0: for layer_num in layer_targets: - layer_num = int( layer_num.strip() ) + layer_num = int(layer_num.strip()) if layer_num < len(data): - layer = data[ layer_num - 1 ] + layer = data[layer_num - 1] lines = layer.split("\n") - lines.insert(2, color_change ) - final_line = "\n".join( lines ) - data[ layer_num - 1 ] = final_line + lines.insert(2, color_change) + final_line = "\n".join(lines) + data[layer_num - 1] = final_line return data diff --git a/plugins/PostProcessingPlugin/scripts/PauseAtHeight.py b/plugins/PostProcessingPlugin/scripts/PauseAtHeight.py index 925a5a7ac5..805ab0a2c3 100644 --- a/plugins/PostProcessingPlugin/scripts/PauseAtHeight.py +++ b/plugins/PostProcessingPlugin/scripts/PauseAtHeight.py @@ -7,19 +7,40 @@ class PauseAtHeight(Script): def getSettingDataString(self): return """{ - "name":"Pause at height", + "name": "Pause at height", "key": "PauseAtHeight", "metadata": {}, "version": 2, "settings": { + "pause_at": + { + "label": "Pause at", + "description": "Whether to pause at a certain height or at a certain layer.", + "type": "enum", + "options": {"height": "Height", "layer_no": "Layer No."}, + "default_value": "height" + }, "pause_height": { "label": "Pause Height", "description": "At what height should the pause occur", "unit": "mm", "type": "float", - "default_value": 5.0 + "default_value": 5.0, + "minimum_value": "0", + "minimum_value_warning": "0.27", + "enabled": "pause_at == 'height'" + }, + "pause_layer": + { + "label": "Pause Layer", + "description": "At what layer should the pause occur", + "type": "int", + "value": "math.floor((pause_height - 0.27) / 0.1) + 1", + "minimum_value": "0", + "minimum_value_warning": "1", + "enabled": "pause_at == 'layer_no'" }, "head_park_x": { @@ -102,8 +123,9 @@ class PauseAtHeight(Script): x = 0. y = 0. - current_z = 0. + pause_at = self.getSettingValueByKey("pause_at") pause_height = self.getSettingValueByKey("pause_height") + pause_layer = self.getSettingValueByKey("pause_layer") retraction_amount = self.getSettingValueByKey("retraction_amount") retraction_speed = self.getSettingValueByKey("retraction_speed") extrude_amount = self.getSettingValueByKey("extrude_amount") @@ -121,101 +143,133 @@ class PauseAtHeight(Script): # use offset to calculate the current height: = - layer_0_z = 0. + current_z = 0 got_first_g_cmd_on_layer_0 = False - for layer in data: + for index, layer in enumerate(data): lines = layer.split("\n") for line in lines: if ";LAYER:0" in line: layers_started = True - continue - if not layers_started: continue - if self.getValue(line, 'G') == 1 or self.getValue(line, 'G') == 0: - current_z = self.getValue(line, 'Z') + if self.getValue(line, "Z") is not None: + current_z = self.getValue(line, "Z") + + if pause_at == "height": + if self.getValue(line, "G") != 1 and self.getValue(line, "G") != 0: + continue + if not got_first_g_cmd_on_layer_0: layer_0_z = current_z got_first_g_cmd_on_layer_0 = True - x = self.getValue(line, 'X', x) - y = self.getValue(line, 'Y', y) - if current_z is not None: - current_height = current_z - layer_0_z - if current_height >= pause_height: - index = data.index(layer) - prevLayer = data[index - 1] - prevLines = prevLayer.split("\n") - current_e = 0. - for prevLine in reversed(prevLines): - current_e = self.getValue(prevLine, 'E', -1) - if current_e >= 0: - break + x = self.getValue(line, "X", x) + y = self.getValue(line, "Y", y) - # include a number of previous layers - for i in range(1, redo_layers + 1): - prevLayer = data[index - i] - layer = prevLayer + layer + current_height = current_z - layer_0_z + if current_height < pause_height: + break #Try the next layer. + else: #Pause at layer. + if not line.startswith(";LAYER:"): + continue + current_layer = line[len(";LAYER:"):] + try: + current_layer = int(current_layer) + except ValueError: #Couldn't cast to int. Something is wrong with this g-code data. + continue + if current_layer < pause_layer: + break #Try the next layer. - prepend_gcode = ";TYPE:CUSTOM\n" - prepend_gcode += ";added code by post processing\n" - prepend_gcode += ";script: PauseAtHeight.py\n" - prepend_gcode += ";current z: %f \n" % current_z - prepend_gcode += ";current height: %f \n" % current_height + prevLayer = data[index - 1] + prevLines = prevLayer.split("\n") + current_e = 0. - # Retraction - prepend_gcode += "M83\n" - if retraction_amount != 0: - prepend_gcode += "G1 E-%f F%f\n" % (retraction_amount, retraction_speed * 60) - - # Move the head away - prepend_gcode += "G1 Z%f F300\n" % (current_z + 1) - prepend_gcode += "G1 X%f Y%f F9000\n" % (park_x, park_y) - if current_z < 15: - prepend_gcode += "G1 Z15 F300\n" - - # Disable the E steppers - prepend_gcode += "M84 E0\n" - - # Set extruder standby temperature - prepend_gcode += "M104 S%i; standby temperature\n" % (standby_temperature) - - # Wait till the user continues printing - prepend_gcode += "M0 ;Do the actual pause\n" - - # Set extruder resume temperature - prepend_gcode += "M109 S%i; resume temperature\n" % (resume_temperature) - - # Push the filament back, - if retraction_amount != 0: - prepend_gcode += "G1 E%f F%f\n" % (retraction_amount, retraction_speed * 60) - - # Optionally extrude material - if extrude_amount != 0: - prepend_gcode += "G1 E%f F%f\n" % (extrude_amount, extrude_speed * 60) - - # and retract again, the properly primes the nozzle - # when changing filament. - if retraction_amount != 0: - prepend_gcode += "G1 E-%f F%f\n" % (retraction_amount, retraction_speed * 60) - - # Move the head back - prepend_gcode += "G1 Z%f F300\n" % (current_z + 1) - prepend_gcode += "G1 X%f Y%f F9000\n" % (x, y) - if retraction_amount != 0: - prepend_gcode += "G1 E%f F%f\n" % (retraction_amount, retraction_speed * 60) - prepend_gcode += "G1 F9000\n" - prepend_gcode += "M82\n" - - # reset extrude value to pre pause value - prepend_gcode += "G92 E%f\n" % (current_e) - - layer = prepend_gcode + layer - - - # Override the data of this layer with the - # modified data - data[index] = layer - return data + # Access last layer, browse it backwards to find + # last extruder absolute position + for prevLine in reversed(prevLines): + current_e = self.getValue(prevLine, "E", -1) + if current_e >= 0: break + + # include a number of previous layers + for i in range(1, redo_layers + 1): + prevLayer = data[index - i] + layer = prevLayer + layer + + # Get extruder's absolute position at the + # begining of the first layer redone + # see https://github.com/nallath/PostProcessingPlugin/issues/55 + if i == redo_layers: + prevLines = prevLayer.split("\n") + for line in prevLines: + new_e = self.getValue(line, 'E', current_e) + + if new_e != current_e: + current_e = new_e + break + + prepend_gcode = ";TYPE:CUSTOM\n" + prepend_gcode += ";added code by post processing\n" + prepend_gcode += ";script: PauseAtHeight.py\n" + if pause_at == "height": + prepend_gcode += ";current z: {z}\n".format(z = current_z) + prepend_gcode += ";current height: {height}\n".format(height = current_height) + else: + prepend_gcode += ";current layer: {layer}\n".format(layer = current_layer) + + # Retraction + prepend_gcode += self.putValue(M = 83) + "\n" + if retraction_amount != 0: + 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, X = park_x, Y = park_y, F = 9000) + "\n" + if current_z < 15: + prepend_gcode += self.putValue(G = 1, Z = 15, F = 300) + "\n" + + # Disable the E steppers + prepend_gcode += self.putValue(M = 84, E = 0) + "\n" + + # Set extruder standby temperature + prepend_gcode += self.putValue(M = 104, S = standby_temperature) + "; standby temperature\n" + + # Wait till the user continues printing + prepend_gcode += self.putValue(M = 0) + ";Do the actual pause\n" + + # Set extruder resume temperature + prepend_gcode += self.putValue(M = 109, S = resume_temperature) + "; resume temperature\n" + + # Push the filament back, + if retraction_amount != 0: + prepend_gcode += self.putValue(G = 1, E = retraction_amount, F = retraction_speed * 60) + "\n" + + # Optionally extrude material + if extrude_amount != 0: + prepend_gcode += self.putValue(G = 1, E = extrude_amount, F = extrude_speed * 60) + "\n" + + # and retract again, the properly primes the nozzle + # when changing filament. + if retraction_amount != 0: + 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" + prepend_gcode += self.putValue(G = 1, X = x, Y = y, F = 9000) + "\n" + if retraction_amount != 0: + 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" + + # reset extrude value to pre pause value + prepend_gcode += self.putValue(G = 92, E = current_e) + "\n" + + layer = prepend_gcode + layer + + + # Override the data of this layer with the + # modified data + data[index] = layer + return data return data diff --git a/plugins/PostProcessingPlugin/scripts/PauseAtHeightforRepetier.py b/plugins/PostProcessingPlugin/scripts/PauseAtHeightforRepetier.py index 710baab26a..f6c93d9ae6 100644 --- a/plugins/PostProcessingPlugin/scripts/PauseAtHeightforRepetier.py +++ b/plugins/PostProcessingPlugin/scripts/PauseAtHeightforRepetier.py @@ -35,7 +35,7 @@ class PauseAtHeightforRepetier(Script): "type": "float", "default_value": 5.0 }, - "head_move_Z": + "head_move_Z": { "label": "Head move Z", "description": "The Hieght of Z-axis retraction before parking.", diff --git a/plugins/SimulationView/SimulationPass.py b/plugins/SimulationView/SimulationPass.py index 76d7127534..cd0eda2929 100644 --- a/plugins/SimulationView/SimulationPass.py +++ b/plugins/SimulationView/SimulationPass.py @@ -93,7 +93,7 @@ class SimulationPass(RenderPass): self.bind() tool_handle_batch = RenderBatch(self._tool_handle_shader, type = RenderBatch.RenderType.Overlay, backface_cull = True) - active_build_plate = Application.getInstance().getBuildPlateModel().activeBuildPlate + active_build_plate = Application.getInstance().getMultiBuildPlateModel().activeBuildPlate head_position = None # Indicates the current position of the print head nozzle_node = None diff --git a/plugins/SimulationView/SimulationSliderLabel.qml b/plugins/SimulationView/SimulationSliderLabel.qml index 1c8daf867f..6f7749df63 100644 --- a/plugins/SimulationView/SimulationSliderLabel.qml +++ b/plugins/SimulationView/SimulationSliderLabel.qml @@ -49,7 +49,7 @@ UM.PointingRectangle { anchors { left: parent.left - leftMargin: Math.floor(UM.Theme.getSize("default_margin").width / 2) + leftMargin: Math.round(UM.Theme.getSize("default_margin").width / 2) verticalCenter: parent.verticalCenter } @@ -91,7 +91,7 @@ UM.PointingRectangle { anchors { left: parent.right - leftMargin: Math.floor(UM.Theme.getSize("default_margin").width / 2) + leftMargin: Math.round(UM.Theme.getSize("default_margin").width / 2) verticalCenter: parent.verticalCenter } diff --git a/plugins/SimulationView/SimulationView.py b/plugins/SimulationView/SimulationView.py index dfecda06bb..5c3dca9fae 100644 --- a/plugins/SimulationView/SimulationView.py +++ b/plugins/SimulationView/SimulationView.py @@ -98,11 +98,14 @@ class SimulationView(View): self._solid_layers = int(Preferences.getInstance().getValue("view/top_layer_count")) self._only_show_top_layers = bool(Preferences.getInstance().getValue("view/only_show_top_layers")) - self._compatibility_mode = True # for safety + self._compatibility_mode = self._evaluateCompatibilityMode() self._wireprint_warning_message = Message(catalog.i18nc("@info:status", "Cura does not accurately display layers when Wire Printing is enabled"), title = catalog.i18nc("@info:title", "Simulation View")) + def _evaluateCompatibilityMode(self): + return OpenGLContext.isLegacyOpenGL() or bool(Preferences.getInstance().getValue("view/force_layer_view_compatibility_mode")) + def _resetSettings(self): self._layer_view_type = 0 # 0 is material color, 1 is color by linetype, 2 is speed, 3 is layer thickness self._extruder_count = 0 @@ -127,7 +130,7 @@ class SimulationView(View): # Currently the RenderPass constructor requires a size > 0 # This should be fixed in RenderPass's constructor. self._layer_pass = SimulationPass(1, 1) - self._compatibility_mode = OpenGLContext.isLegacyOpenGL() or bool(Preferences.getInstance().getValue("view/force_layer_view_compatibility_mode")) + self._compatibility_mode = self._evaluateCompatibilityMode() self._layer_pass.setSimulationView(self) return self._layer_pass @@ -155,9 +158,10 @@ class SimulationView(View): return self._nozzle_node def _onSceneChanged(self, node): - self.setActivity(False) - self.calculateMaxLayers() - self.calculateMaxPathsOnLayer(self._current_layer_num) + if node.getMeshData() is not None: + self.setActivity(False) + self.calculateMaxLayers() + self.calculateMaxPathsOnLayer(self._current_layer_num) def isBusy(self): return self._busy @@ -339,6 +343,11 @@ class SimulationView(View): min_layer_number = sys.maxsize max_layer_number = -sys.maxsize for layer_id in layer_data.getLayers(): + + # If a layer doesn't contain any polygons, skip it (for infill meshes taller than print objects + if len(layer_data.getLayer(layer_id).polygons) < 1: + continue + # Store the max and min feedrates and thicknesses for display purposes for p in layer_data.getLayer(layer_id).polygons: self._max_feedrate = max(float(p.lineFeedrates.max()), self._max_feedrate) @@ -534,8 +543,7 @@ class SimulationView(View): def _updateWithPreferences(self): self._solid_layers = int(Preferences.getInstance().getValue("view/top_layer_count")) self._only_show_top_layers = bool(Preferences.getInstance().getValue("view/only_show_top_layers")) - self._compatibility_mode = OpenGLContext.isLegacyOpenGL() or bool( - Preferences.getInstance().getValue("view/force_layer_view_compatibility_mode")) + self._compatibility_mode = self._evaluateCompatibilityMode() self.setSimulationViewType(int(float(Preferences.getInstance().getValue("layerview/layer_view_type")))); @@ -632,4 +640,3 @@ class _CreateTopLayersJob(Job): def cancel(self): self._cancel = True super().cancel() - diff --git a/plugins/SimulationView/SimulationView.qml b/plugins/SimulationView/SimulationView.qml index 11b985f77c..6aad413f9b 100644 --- a/plugins/SimulationView/SimulationView.qml +++ b/plugins/SimulationView/SimulationView.qml @@ -61,7 +61,7 @@ Item Button { id: collapseButton anchors.top: parent.top - anchors.topMargin: Math.floor(UM.Theme.getSize("default_margin").height + (UM.Theme.getSize("layerview_row").height - UM.Theme.getSize("default_margin").height) / 2) + anchors.topMargin: Math.round(UM.Theme.getSize("default_margin").height + (UM.Theme.getSize("layerview_row").height - UM.Theme.getSize("default_margin").height) / 2) anchors.right: parent.right anchors.rightMargin: UM.Theme.getSize("default_margin").width @@ -193,7 +193,7 @@ Item Item { - height: Math.floor(UM.Theme.getSize("default_margin").width / 2) + height: Math.round(UM.Theme.getSize("default_margin").width / 2) width: width } @@ -231,7 +231,7 @@ Item width: UM.Theme.getSize("layerview_legend_size").width height: UM.Theme.getSize("layerview_legend_size").height color: model.color - radius: width / 2 + radius: Math.round(width / 2) border.width: UM.Theme.getSize("default_lining").width border.color: UM.Theme.getColor("lining") visible: !viewSettings.show_legend & !viewSettings.show_gradient @@ -249,7 +249,7 @@ Item anchors.verticalCenter: parent.verticalCenter anchors.left: extrudersModelCheckBox.left; anchors.right: extrudersModelCheckBox.right; - anchors.leftMargin: UM.Theme.getSize("checkbox").width + UM.Theme.getSize("default_margin").width /2 + anchors.leftMargin: UM.Theme.getSize("checkbox").width + Math.round(UM.Theme.getSize("default_margin").width/2) anchors.rightMargin: UM.Theme.getSize("default_margin").width * 2 } } @@ -316,7 +316,7 @@ Item anchors.verticalCenter: parent.verticalCenter anchors.left: legendModelCheckBox.left; anchors.right: legendModelCheckBox.right; - anchors.leftMargin: UM.Theme.getSize("checkbox").width + UM.Theme.getSize("default_margin").width /2 + anchors.leftMargin: UM.Theme.getSize("checkbox").width + Math.round(UM.Theme.getSize("default_margin").width/2) anchors.rightMargin: UM.Theme.getSize("default_margin").width * 2 } } @@ -461,7 +461,7 @@ Item visible: viewSettings.show_feedrate_gradient anchors.left: parent.right height: parent.width - width: UM.Theme.getSize("layerview_row").height * 1.5 + width: Math.round(UM.Theme.getSize("layerview_row").height * 1.5) border.width: UM.Theme.getSize("default_lining").width border.color: UM.Theme.getColor("lining") transform: Rotation {origin.x: 0; origin.y: 0; angle: 90} @@ -485,37 +485,37 @@ Item } } - // Gradient colors for layer thickness + // Gradient colors for layer thickness (similar to parula colormap) Rectangle { // In QML 5.9 can be changed by LinearGradient // Invert values because then the bar is rotated 90 degrees id: thicknessGradient visible: viewSettings.show_thickness_gradient anchors.left: parent.right height: parent.width - width: UM.Theme.getSize("layerview_row").height * 1.5 + width: Math.round(UM.Theme.getSize("layerview_row").height * 1.5) border.width: UM.Theme.getSize("default_lining").width border.color: UM.Theme.getColor("lining") transform: Rotation {origin.x: 0; origin.y: 0; angle: 90} gradient: Gradient { GradientStop { position: 0.000 - color: Qt.rgba(1, 0, 0, 1) + color: Qt.rgba(1, 1, 0, 1) } GradientStop { position: 0.25 - color: Qt.rgba(0.5, 0.5, 0, 1) + color: Qt.rgba(1, 0.75, 0.25, 1) } GradientStop { position: 0.5 - color: Qt.rgba(0, 1, 0, 1) + color: Qt.rgba(0, 0.75, 0.5, 1) } GradientStop { position: 0.75 - color: Qt.rgba(0, 0.5, 0.5, 1) + color: Qt.rgba(0, 0.375, 0.75, 1) } GradientStop { position: 1.0 - color: Qt.rgba(0, 0, 1, 1) + color: Qt.rgba(0, 0, 0.5, 1) } } } diff --git a/plugins/SimulationView/layers3d.shader b/plugins/SimulationView/layers3d.shader index 95dc604389..03e279e9eb 100644 --- a/plugins/SimulationView/layers3d.shader +++ b/plugins/SimulationView/layers3d.shader @@ -54,9 +54,13 @@ vertex41core = vec4 layerThicknessGradientColor(float abs_value, float min_value, float max_value) { float value = (abs_value - min_value)/(max_value - min_value); - float red = max(2*value-1, 0); - float green = 1-abs(1-2*value); - float blue = max(1-2*value, 0); + float red = min(max(4*value-2, 0), 1); + float green = min(1.5*value, 0.75); + if (value > 0.75) + { + green = value; + } + float blue = 0.75-abs(0.25-value); return vec4(red, green, blue, 1.0); } diff --git a/plugins/SliceInfoPlugin/SliceInfo.py b/plugins/SliceInfoPlugin/SliceInfo.py index bcdb1bb407..971a324aa2 100755 --- a/plugins/SliceInfoPlugin/SliceInfo.py +++ b/plugins/SliceInfoPlugin/SliceInfo.py @@ -107,7 +107,7 @@ class SliceInfo(Extension): "brand": extruder.material.getMetaData().get("brand", "") } extruder_position = int(extruder.getMetaDataEntry("position", "0")) - if extruder_position in print_information.materialLengths: + if len(print_information.materialLengths) > extruder_position: extruder_dict["material_used"] = print_information.materialLengths[extruder_position] extruder_dict["variant"] = extruder.variant.getName() extruder_dict["nozzle_size"] = extruder.getProperty("machine_nozzle_size", "value") diff --git a/plugins/SolidView/SolidView.py b/plugins/SolidView/SolidView.py index 50ff2864b7..de9f922267 100644 --- a/plugins/SolidView/SolidView.py +++ b/plugins/SolidView/SolidView.py @@ -78,17 +78,13 @@ class SolidView(View): for node in DepthFirstIterator(scene.getRoot()): if not node.render(renderer): - if node.getMeshData() and node.isVisible(): + if node.getMeshData() and node.isVisible() and not node.callDecoration("getLayerData"): uniforms = {} shade_factor = 1.0 per_mesh_stack = node.callDecoration("getStack") - # Get color to render this mesh in from ExtrudersModel - extruder_index = 0 - extruder_id = node.callDecoration("getActiveExtruder") - if extruder_id: - extruder_index = max(0, self._extruders_model.find("id", extruder_id)) + extruder_index = int(node.callDecoration("getActiveExtruderPosition")) # Use the support extruder instead of the active extruder if this is a support_mesh if per_mesh_stack: diff --git a/plugins/SupportEraser/SupportEraser.py b/plugins/SupportEraser/SupportEraser.py new file mode 100644 index 0000000000..8b3ad0f4dd --- /dev/null +++ b/plugins/SupportEraser/SupportEraser.py @@ -0,0 +1,71 @@ +# Copyright (c) 2018 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. +from UM.Math.Vector import Vector +from UM.Tool import Tool +from PyQt5.QtCore import Qt, QUrl +from UM.Application import Application +from UM.Event import Event +from UM.Mesh.MeshBuilder import MeshBuilder +from UM.Operations.AddSceneNodeOperation import AddSceneNodeOperation +from UM.Settings.SettingInstance import SettingInstance +from cura.Scene.CuraSceneNode import CuraSceneNode +from cura.Scene.SliceableObjectDecorator import SliceableObjectDecorator +from cura.Scene.BuildPlateDecorator import BuildPlateDecorator +from cura.Settings.SettingOverrideDecorator import SettingOverrideDecorator + +import os +import os.path + +class SupportEraser(Tool): + def __init__(self): + super().__init__() + self._shortcut_key = Qt.Key_G + self._controller = Application.getInstance().getController() + + def event(self, event): + super().event(event) + + if event.type == Event.ToolActivateEvent: + + # Load the remover mesh: + self._createEraserMesh() + + # After we load the mesh, deactivate the tool again: + self.getController().setActiveTool(None) + + def _createEraserMesh(self): + node = CuraSceneNode() + + node.setName("Eraser") + node.setSelectable(True) + mesh = MeshBuilder() + mesh.addCube(10,10,10) + node.setMeshData(mesh.build()) + # Place the cube in the platform. Do it manually so it works if the "automatic drop models" is OFF + move_vector = Vector(0, 5, 0) + node.setPosition(move_vector) + + active_build_plate = Application.getInstance().getMultiBuildPlateModel().activeBuildPlate + + node.addDecorator(SettingOverrideDecorator()) + node.addDecorator(BuildPlateDecorator(active_build_plate)) + node.addDecorator(SliceableObjectDecorator()) + + stack = node.callDecoration("getStack") #Don't try to get the active extruder since it may be None anyway. + if not stack: + node.addDecorator(SettingOverrideDecorator()) + stack = node.callDecoration("getStack") + + settings = stack.getTop() + + if not (settings.getInstance("anti_overhang_mesh") and settings.getProperty("anti_overhang_mesh", "value")): + definition = stack.getSettingDefinition("anti_overhang_mesh") + new_instance = SettingInstance(definition, settings) + new_instance.setProperty("value", True) + new_instance.resetState() # Ensure that the state is not seen as a user state. + settings.addInstance(new_instance) + + scene = self._controller.getScene() + op = AddSceneNodeOperation(node, scene.getRoot()) + op.push() + Application.getInstance().getController().getScene().sceneChanged.emit(node) diff --git a/plugins/SupportEraser/__init__.py b/plugins/SupportEraser/__init__.py new file mode 100644 index 0000000000..72700571fe --- /dev/null +++ b/plugins/SupportEraser/__init__.py @@ -0,0 +1,20 @@ +# Copyright (c) 2018 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +from . import SupportEraser + +from UM.i18n import i18nCatalog +i18n_catalog = i18nCatalog("uranium") + +def getMetaData(): + return { + "tool": { + "name": i18n_catalog.i18nc("@label", "Support Blocker"), + "description": i18n_catalog.i18nc("@info:tooltip", "Create a volume in which supports are not printed."), + "icon": "tool_icon.svg", + "weight": 4 + } + } + +def register(app): + return { "tool": SupportEraser.SupportEraser() } diff --git a/plugins/SupportEraser/plugin.json b/plugins/SupportEraser/plugin.json new file mode 100644 index 0000000000..5ccb639913 --- /dev/null +++ b/plugins/SupportEraser/plugin.json @@ -0,0 +1,8 @@ +{ + "name": "Support Eraser", + "author": "Ultimaker B.V.", + "version": "1.0.0", + "description": "Creates an eraser mesh to block the printing of support in certain places", + "api": 4, + "i18n-catalog": "cura" +} diff --git a/plugins/SupportEraser/tool_icon.svg b/plugins/SupportEraser/tool_icon.svg new file mode 100644 index 0000000000..a0f8a3e3c3 --- /dev/null +++ b/plugins/SupportEraser/tool_icon.svg @@ -0,0 +1,11 @@ + + + Created with Sketch. + + + + + + + + diff --git a/plugins/UFPWriter/UFPWriter.py b/plugins/UFPWriter/UFPWriter.py new file mode 100644 index 0000000000..aca293e25a --- /dev/null +++ b/plugins/UFPWriter/UFPWriter.py @@ -0,0 +1,56 @@ +#Copyright (c) 2018 Ultimaker B.V. +#Cura is released under the terms of the LGPLv3 or higher. + +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.PluginRegistry import PluginRegistry #To get the g-code writer. +from PyQt5.QtCore import QBuffer + +from cura.Snapshot import Snapshot + + +class UFPWriter(MeshWriter): + def __init__(self): + super().__init__() + self._snapshot = None + Application.getInstance().getOutputDeviceManager().writeStarted.connect(self._createSnapshot) + + 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) + + def write(self, stream, nodes, mode = MeshWriter.OutputMode.BinaryMode): + archive = VirtualFile() + archive.openStream(stream, "application/x-ufp", OpenMode.WriteOnly) + + #Store the g-code from the scene. + archive.addContentType(extension = "gcode", mime_type = "text/x-gcode") + gcode_textio = StringIO() #We have to convert the g-code into bytes. + PluginRegistry.getInstance().getPluginObject("GCodeWriter").write(gcode_textio, None) + gcode = archive.getStream("/3D/model.gcode") + gcode.write(gcode_textio.getvalue().encode("UTF-8")) + archive.addRelation(virtual_path = "/3D/model.gcode", relation_type = "http://schemas.ultimaker.org/package/2018/relationships/gcode") + + #Store the thumbnail. + if self._snapshot: + archive.addContentType(extension = "png", mime_type = "image/png") + thumbnail = archive.getStream("/Metadata/thumbnail.png") + + thumbnail_buffer = QBuffer() + thumbnail_buffer.open(QBuffer.ReadWrite) + thumbnail_image = self._snapshot + thumbnail_image.save(thumbnail_buffer, "PNG") + + thumbnail.write(thumbnail_buffer.data()) + archive.addRelation(virtual_path = "/Metadata/thumbnail.png", relation_type = "http://schemas.openxmlformats.org/package/2006/relationships/metadata/thumbnail", origin = "/3D/model.gcode") + else: + Logger.log("d", "Thumbnail not created, cannot save it") + + archive.close() + return True diff --git a/plugins/UFPWriter/__init__.py b/plugins/UFPWriter/__init__.py new file mode 100644 index 0000000000..9db6b042f8 --- /dev/null +++ b/plugins/UFPWriter/__init__.py @@ -0,0 +1,38 @@ +#Copyright (c) 2018 Ultimaker B.V. +#Cura is released under the terms of the LGPLv3 or higher. + +import sys + +from UM.Logger import Logger +try: + from . import UFPWriter +except ImportError: + Logger.log("w", "Could not import UFPWriter; libCharon may be missing") + +from UM.i18n import i18nCatalog #To translate the file format description. +from UM.Mesh.MeshWriter import MeshWriter #For the binary mode flag. + +i18n_catalog = i18nCatalog("cura") + +def getMetaData(): + if "UFPWriter.UFPWriter" not in sys.modules: + return {} + + return { + "mesh_writer": { + "output": [ + { + "mime_type": "application/x-ufp", + "mode": MeshWriter.OutputMode.BinaryMode, + "extension": "ufp", + "description": i18n_catalog.i18nc("@item:inlistbox", "Ultimaker Format Package") + } + ] + } + } + +def register(app): + if "UFPWriter.UFPWriter" not in sys.modules: + return {} + + return { "mesh_writer": UFPWriter.UFPWriter() } diff --git a/plugins/UFPWriter/kitten.png b/plugins/UFPWriter/kitten.png new file mode 100644 index 0000000000..44738f94f0 Binary files /dev/null and b/plugins/UFPWriter/kitten.png differ diff --git a/plugins/UFPWriter/plugin.json b/plugins/UFPWriter/plugin.json new file mode 100644 index 0000000000..7d10b89ad4 --- /dev/null +++ b/plugins/UFPWriter/plugin.json @@ -0,0 +1,8 @@ +{ + "name": "UFP Writer", + "author": "Ultimaker B.V.", + "version": "1.0.0", + "description": "Provides support for writing Ultimaker Format Packages.", + "api": 4, + "i18n-catalog": "cura" +} \ No newline at end of file diff --git a/plugins/UM3NetworkPrinting/ClusterUM3OutputDevice.py b/plugins/UM3NetworkPrinting/ClusterUM3OutputDevice.py index b5cbc33d51..c19c86d6ce 100644 --- a/plugins/UM3NetworkPrinting/ClusterUM3OutputDevice.py +++ b/plugins/UM3NetworkPrinting/ClusterUM3OutputDevice.py @@ -22,7 +22,7 @@ from PyQt5.QtCore import pyqtSlot, QUrl, pyqtSignal, pyqtProperty, QObject from time import time from datetime import datetime -from typing import Optional +from typing import Optional, Dict, List import json import os @@ -77,11 +77,13 @@ class ClusterUM3OutputDevice(NetworkedPrinterOutputDevice): self._cluster_size = int(properties.get(b"cluster_size", 0)) + self._latest_reply_handler = None + def requestWrite(self, nodes, file_name=None, filter_by_machine=False, file_handler=None, **kwargs): self.writeStarted.emit(self) gcode_dict = getattr(Application.getInstance().getController().getScene(), "gcode_dict", []) - active_build_plate_id = Application.getInstance().getBuildPlateModel().activeBuildPlate + active_build_plate_id = Application.getInstance().getMultiBuildPlateModel().activeBuildPlate gcode_list = gcode_dict[active_build_plate_id] if not gcode_list: @@ -90,13 +92,15 @@ class ClusterUM3OutputDevice(NetworkedPrinterOutputDevice): self._gcode = gcode_list + is_job_sent = True if len(self._printers) > 1: self._spawnPrinterSelectionDialog() else: - self.sendPrintJob() + is_job_sent = self.sendPrintJob() # Notify the UI that a switch to the print monitor should happen - Application.getInstance().getController().setActiveStage("MonitorStage") + if is_job_sent: + Application.getInstance().getController().setActiveStage("MonitorStage") def _spawnPrinterSelectionDialog(self): if self._printer_selection_dialog is None: @@ -111,14 +115,14 @@ class ClusterUM3OutputDevice(NetworkedPrinterOutputDevice): @pyqtSlot() @pyqtSlot(str) - def sendPrintJob(self, target_printer = ""): + def sendPrintJob(self, target_printer: str = ""): 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 + return False self._sending_gcode = True @@ -131,7 +135,7 @@ class ClusterUM3OutputDevice(NetworkedPrinterOutputDevice): compressed_gcode = self._compressGCode() if compressed_gcode is None: # Abort was called. - return + return False parts = [] @@ -147,14 +151,16 @@ class ClusterUM3OutputDevice(NetworkedPrinterOutputDevice): parts.append(self._createFormPart("name=\"file\"; filename=\"%s\"" % file_name, compressed_gcode)) - self.postFormWithParts("print_jobs/", parts, onFinished=self._onPostPrintJobFinished, onProgress=self._onUploadPrintJobProgress) + self._latest_reply_handler = self.postFormWithParts("print_jobs/", parts, onFinished=self._onPostPrintJobFinished, onProgress=self._onUploadPrintJobProgress) + + return True @pyqtProperty(QObject, notify=activePrinterChanged) - def activePrinter(self) -> Optional["PrinterOutputModel"]: + def activePrinter(self) -> Optional[PrinterOutputModel]: return self._active_printer @pyqtSlot(QObject) - def setActivePrinter(self, printer): + def setActivePrinter(self, printer: Optional[PrinterOutputModel]): if self._active_printer != printer: if self._active_printer and self._active_printer.camera: self._active_printer.camera.stop() @@ -166,7 +172,7 @@ class ClusterUM3OutputDevice(NetworkedPrinterOutputDevice): self._compressing_gcode = False self._sending_gcode = False - def _onUploadPrintJobProgress(self, bytes_sent, bytes_total): + def _onUploadPrintJobProgress(self, bytes_sent:int, bytes_total:int): 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 @@ -179,7 +185,7 @@ class ClusterUM3OutputDevice(NetworkedPrinterOutputDevice): self._progress_message.setProgress(0) self._progress_message.hide() - def _progressMessageActionTriggered(self, message_id=None, action_id=None): + 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.") self._progress_message.hide() @@ -187,30 +193,37 @@ class ClusterUM3OutputDevice(NetworkedPrinterOutputDevice): self._sending_gcode = False Application.getInstance().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 + + @pyqtSlot() - def openPrintJobControlPanel(self): + def openPrintJobControlPanel(self) -> None: Logger.log("d", "Opening print job control panel...") QDesktopServices.openUrl(QUrl("http://" + self._address + "/print_jobs")) @pyqtSlot() - def openPrinterControlPanel(self): + 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): + def printJobs(self)-> List[PrintJobOutputModel] : return self._print_jobs @pyqtProperty("QVariantList", notify=printJobsChanged) - def queuedPrintJobs(self): - return [print_job for print_job in self._print_jobs if print_job.assignedPrinter is None] + def queuedPrintJobs(self) -> List[PrintJobOutputModel]: + return [print_job for print_job in self._print_jobs if print_job.assignedPrinter is None or print_job.state == "queued"] @pyqtProperty("QVariantList", notify=printJobsChanged) - def activePrintJobs(self): - return [print_job for print_job in self._print_jobs if print_job.assignedPrinter is not None] + def activePrintJobs(self) -> List[PrintJobOutputModel]: + 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): + def connectedPrintersTypeCount(self) -> List[PrinterOutputModel]: printer_count = {} for printer in self._printers: if printer.type in printer_count: @@ -223,22 +236,22 @@ class ClusterUM3OutputDevice(NetworkedPrinterOutputDevice): return result @pyqtSlot(int, result=str) - def formatDuration(self, seconds): + def formatDuration(self, seconds: int) -> str: return Duration(seconds).getDisplayString(DurationFormat.Format.Short) @pyqtSlot(int, result=str) - def getTimeCompleted(self, time_remaining): + def getTimeCompleted(self, time_remaining: int) -> str: current_time = time() datetime_completed = datetime.fromtimestamp(current_time + time_remaining) return "{hour:02d}:{minute:02d}".format(hour=datetime_completed.hour, minute=datetime_completed.minute) @pyqtSlot(int, result=str) - def getDateCompleted(self, time_remaining): + def getDateCompleted(self, time_remaining: int) -> str: current_time = time() datetime_completed = datetime.fromtimestamp(current_time + time_remaining) return (datetime_completed.strftime("%a %b ") + "{day}".format(day=datetime_completed.day)).upper() - def _printJobStateChanged(self): + def _printJobStateChanged(self) -> None: username = self._getUserName() if username is None: @@ -261,13 +274,13 @@ class ClusterUM3OutputDevice(NetworkedPrinterOutputDevice): # Keep a list of all completed jobs so we know if something changed next time. self._finished_jobs = finished_jobs - def _update(self): + def _update(self) -> None: if not super()._update(): return self.get("printers/", onFinished=self._onGetPrintersDataFinished) self.get("print_jobs/", onFinished=self._onGetPrintJobsFinished) - def _onGetPrintJobsFinished(self, reply: QNetworkReply): + def _onGetPrintJobsFinished(self, reply: QNetworkReply) -> None: if not checkValidGetReply(reply): return @@ -287,7 +300,11 @@ class ClusterUM3OutputDevice(NetworkedPrinterOutputDevice): self._updatePrintJob(print_job, print_job_data) if print_job.state != "queued": # Print job should be assigned to a printer. - printer = self._getPrinterByKey(print_job_data["printer_uuid"]) + if print_job.state in ["failed", "finished", "aborted"]: + # 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"]) @@ -305,7 +322,7 @@ class ClusterUM3OutputDevice(NetworkedPrinterOutputDevice): if job_list_changed: self.printJobsChanged.emit() # Do a single emit for all print job changes. - def _onGetPrintersDataFinished(self, reply: QNetworkReply): + def _onGetPrintersDataFinished(self, reply: QNetworkReply) -> None: if not checkValidGetReply(reply): return @@ -334,34 +351,45 @@ class ClusterUM3OutputDevice(NetworkedPrinterOutputDevice): if removed_printers or printer_list_changed: self.printersChanged.emit() - def _createPrinterModel(self, data): + def _createPrinterModel(self, data: Dict) -> PrinterOutputModel: printer = PrinterOutputModel(output_controller=ClusterUM3PrinterOutputController(self), number_of_extruders=self._number_of_extruders) printer.setCamera(NetworkCamera("http://" + data["ip_address"] + ":8080/?action=stream")) self._printers.append(printer) return printer - def _createPrintJobModel(self, data): + def _createPrintJobModel(self, data: Dict) -> PrintJobOutputModel: print_job = PrintJobOutputModel(output_controller=ClusterUM3PrinterOutputController(self), key=data["uuid"], name= data["name"]) print_job.stateChanged.connect(self._printJobStateChanged) self._print_jobs.append(print_job) return print_job - def _updatePrintJob(self, print_job, data): + def _updatePrintJob(self, print_job: PrintJobOutputModel, data: Dict) -> None: print_job.updateTimeTotal(data["time_total"]) print_job.updateTimeElapsed(data["time_elapsed"]) print_job.updateState(data["status"]) print_job.updateOwner(data["owner"]) - def _updatePrinter(self, printer, data): + def _updatePrinter(self, printer: PrinterOutputModel, data: Dict) -> None: # For some unknown reason the cluster wants UUID for everything, except for sending a job directly to a printer. # Then we suddenly need the unique name. So in order to not have to mess up all the other code, we save a mapping. self._printer_uuid_to_unique_name_mapping[data["uuid"]] = data["unique_name"] + definitions = ContainerRegistry.getInstance().findDefinitionContainers(name = data["machine_variant"]) + if not definitions: + Logger.log("w", "Unable to find definition for machine variant %s", data["machine_variant"]) + return + + machine_definition = definitions[0] + printer.updateName(data["friendly_name"]) printer.updateKey(data["uuid"]) printer.updateType(data["machine_variant"]) + + # Do not store the buildplate information that comes from connect if the current printer has not buildplate information + if "build_plate" in data and machine_definition.getMetaDataEntry("has_variant_buildplates", False): + printer.updateBuildplateName(data["build_plate"]["type"]) if not data["enabled"]: printer.updateState("disabled") else: @@ -392,13 +420,13 @@ class ClusterUM3OutputDevice(NetworkedPrinterOutputDevice): color = material_data["color"] brand = material_data["brand"] material_type = material_data["material"] - name = "Unknown" + name = "Empty" if material_data["material"] == "empty" else "Unknown" material = MaterialOutputModel(guid=material_data["guid"], type=material_type, brand=brand, color=color, name=name) extruder.updateActiveMaterial(material) - def _removeJob(self, job): + def _removeJob(self, job: PrintJobOutputModel): if job not in self._print_jobs: return False @@ -409,7 +437,7 @@ class ClusterUM3OutputDevice(NetworkedPrinterOutputDevice): return True - def _removePrinter(self, printer): + def _removePrinter(self, printer: PrinterOutputModel): self._printers.remove(printer) if self._active_printer == printer: self._active_printer = None diff --git a/plugins/UM3NetworkPrinting/DiscoverUM3Action.py b/plugins/UM3NetworkPrinting/DiscoverUM3Action.py index 0e872fed43..76e8721fdd 100644 --- a/plugins/UM3NetworkPrinting/DiscoverUM3Action.py +++ b/plugins/UM3NetworkPrinting/DiscoverUM3Action.py @@ -97,6 +97,25 @@ class DiscoverUM3Action(MachineAction): else: return [] + @pyqtSlot(str) + def setGroupName(self, group_name): + Logger.log("d", "Attempting to set the group name of the active machine to %s", group_name) + global_container_stack = Application.getInstance().getGlobalContainerStack() + if global_container_stack: + meta_data = global_container_stack.getMetaData() + if "connect_group_name" in meta_data: + previous_connect_group_name = meta_data["connect_group_name"] + global_container_stack.setMetaDataEntry("connect_group_name", group_name) + # Find all the places where there is the same group name and change it accordingly + Application.getInstance().getMachineManager().replaceContainersMetadata(key = "connect_group_name", value = previous_connect_group_name, new_value = group_name) + else: + global_container_stack.addMetaDataEntry("connect_group_name", group_name) + global_container_stack.addMetaDataEntry("hidden", False) + + if self._network_plugin: + # Ensure that the connection states are refreshed. + self._network_plugin.reCheckConnections() + @pyqtSlot(str) def setKey(self, key): Logger.log("d", "Attempting to set the network key of the active machine to %s", key) @@ -104,11 +123,13 @@ class DiscoverUM3Action(MachineAction): if global_container_stack: meta_data = global_container_stack.getMetaData() if "um_network_key" in meta_data: + previous_network_key= meta_data["um_network_key"] global_container_stack.setMetaDataEntry("um_network_key", key) # Delete old authentication data. Logger.log("d", "Removing old authentication id %s for device %s", global_container_stack.getMetaDataEntry("network_authentication_id", None), key) global_container_stack.removeMetaDataEntry("network_authentication_id") global_container_stack.removeMetaDataEntry("network_authentication_key") + Application.getInstance().getMachineManager().replaceContainersMetadata(key = "um_network_key", value = previous_network_key, new_value = key) else: global_container_stack.addMetaDataEntry("um_network_key", key) diff --git a/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml b/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml index 0e58d8e991..079e5dcdd3 100644 --- a/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml +++ b/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml @@ -32,10 +32,12 @@ Cura.MachineAction 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) { - manager.setKey(printerKey); - completed(); + manager.setKey(printerKey) + manager.setGroupName(printerName) // TODO To change when the groups have a name + completed() } } } @@ -114,7 +116,7 @@ Cura.MachineAction Column { - width: Math.floor(parent.width * 0.5) + width: Math.round(parent.width * 0.5) spacing: UM.Theme.getSize("default_margin").height ScrollView @@ -198,7 +200,7 @@ Cura.MachineAction } Column { - width: Math.floor(parent.width * 0.5) + width: Math.round(parent.width * 0.5) visible: base.selectedDevice ? true : false spacing: UM.Theme.getSize("default_margin").height Label @@ -216,13 +218,13 @@ Cura.MachineAction columns: 2 Label { - width: Math.floor(parent.width * 0.5) + width: Math.round(parent.width * 0.5) wrapMode: Text.WordWrap text: catalog.i18nc("@label", "Type") } Label { - width: Math.floor(parent.width * 0.5) + width: Math.round(parent.width * 0.5) wrapMode: Text.WordWrap text: { @@ -247,25 +249,25 @@ Cura.MachineAction } Label { - width: Math.floor(parent.width * 0.5) + width: Math.round(parent.width * 0.5) wrapMode: Text.WordWrap text: catalog.i18nc("@label", "Firmware version") } Label { - width: Math.floor(parent.width * 0.5) + width: Math.round(parent.width * 0.5) wrapMode: Text.WordWrap text: base.selectedDevice ? base.selectedDevice.firmwareVersion : "" } Label { - width: Math.floor(parent.width * 0.5) + width: Math.round(parent.width * 0.5) wrapMode: Text.WordWrap text: catalog.i18nc("@label", "Address") } Label { - width: Math.floor(parent.width * 0.5) + width: Math.round(parent.width * 0.5) wrapMode: Text.WordWrap text: base.selectedDevice ? base.selectedDevice.ipAddress : "" } @@ -303,7 +305,7 @@ Cura.MachineAction Button { text: catalog.i18nc("@action:button", "Connect") - enabled: (base.selectedDevice && base.completeProperties) ? true : false + enabled: (base.selectedDevice && base.completeProperties && base.selectedDevice.clusterSize > 0) ? true : false onClicked: connectToPrinter() } } diff --git a/plugins/UM3NetworkPrinting/LegacyUM3OutputDevice.py b/plugins/UM3NetworkPrinting/LegacyUM3OutputDevice.py index 647a7f822c..42f00beceb 100644 --- a/plugins/UM3NetworkPrinting/LegacyUM3OutputDevice.py +++ b/plugins/UM3NetworkPrinting/LegacyUM3OutputDevice.py @@ -184,7 +184,7 @@ class LegacyUM3OutputDevice(NetworkedPrinterOutputDevice): self.writeStarted.emit(self) gcode_dict = getattr(Application.getInstance().getController().getScene(), "gcode_dict", []) - active_build_plate_id = Application.getInstance().getBuildPlateModel().activeBuildPlate + active_build_plate_id = Application.getInstance().getMultiBuildPlateModel().activeBuildPlate gcode_list = gcode_dict[active_build_plate_id] if not gcode_list: @@ -419,8 +419,6 @@ class LegacyUM3OutputDevice(NetworkedPrinterOutputDevice): self._authentication_failed_message.show() elif status_code == 200: self.setAuthenticationState(AuthState.Authenticated) - # Now we know for sure that we are authenticated, send the material profiles to the machine. - self._sendMaterialProfiles() def _checkAuthentication(self): Logger.log("d", "Checking if authentication is correct for id %s and key %s", self._authentication_id, self._getSafeAuthKey()) diff --git a/plugins/UM3NetworkPrinting/PrintCoreConfiguration.qml b/plugins/UM3NetworkPrinting/PrintCoreConfiguration.qml index 70fa65da5e..267516091b 100644 --- a/plugins/UM3NetworkPrinting/PrintCoreConfiguration.qml +++ b/plugins/UM3NetworkPrinting/PrintCoreConfiguration.qml @@ -10,7 +10,7 @@ Item id: extruderInfo property var printCoreConfiguration - width: Math.floor(parent.width / 2) + width: Math.round(parent.width / 2) height: childrenRect.height Label { diff --git a/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml b/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml index 6d7d6c8a7d..54a34fae46 100644 --- a/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml +++ b/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml @@ -78,7 +78,7 @@ Rectangle Rectangle { - width: Math.floor(parent.width / 3) + width: Math.round(parent.width / 3) height: parent.height Label // Print job name @@ -123,7 +123,7 @@ Rectangle Rectangle { - width: Math.floor(parent.width / 3 * 2) + width: Math.round(parent.width / 3 * 2) height: parent.height Label // Friendly machine name @@ -131,7 +131,7 @@ Rectangle id: printerNameLabel anchors.top: parent.top anchors.left: parent.left - width: Math.floor(parent.width / 2 - UM.Theme.getSize("default_margin").width - showCameraIcon.width) + width: Math.round(parent.width / 2 - UM.Theme.getSize("default_margin").width - showCameraIcon.width) text: printer.name font: UM.Theme.getFont("default_bold") elide: Text.ElideRight @@ -141,7 +141,7 @@ Rectangle { id: printerTypeLabel anchors.top: printerNameLabel.bottom - width: Math.floor(parent.width / 2 - UM.Theme.getSize("default_margin").width) + width: Math.round(parent.width / 2 - UM.Theme.getSize("default_margin").width) text: printer.type anchors.left: parent.left elide: Text.ElideRight @@ -175,7 +175,7 @@ Rectangle id: extruderInfo anchors.bottom: parent.bottom - width: Math.floor(parent.width / 2 - UM.Theme.getSize("default_margin").width) + width: Math.round(parent.width / 2 - UM.Theme.getSize("default_margin").width) height: childrenRect.height spacing: UM.Theme.getSize("default_margin").width @@ -183,7 +183,7 @@ Rectangle PrintCoreConfiguration { id: leftExtruderInfo - width: Math.floor((parent.width - extruderSeperator.width) / 2) + width: Math.round((parent.width - extruderSeperator.width) / 2) printCoreConfiguration: printer.extruders[0] } @@ -198,7 +198,7 @@ Rectangle PrintCoreConfiguration { id: rightExtruderInfo - width: Math.floor((parent.width - extruderSeperator.width) / 2) + width: Math.round((parent.width - extruderSeperator.width) / 2) printCoreConfiguration: printer.extruders[1] } } @@ -209,7 +209,7 @@ Rectangle anchors.right: parent.right anchors.top: parent.top height: showExtended ? parent.height: printProgressTitleBar.height - width: Math.floor(parent.width / 2 - UM.Theme.getSize("default_margin").width) + width: Math.round(parent.width / 2 - UM.Theme.getSize("default_margin").width) border.width: UM.Theme.getSize("default_lining").width border.color: lineColor radius: cornerRadius @@ -264,6 +264,7 @@ Rectangle case "wait_for_configuration": return catalog.i18nc("@label:status", "Reserved") case "wait_cleanup": + case "wait_user_action": return catalog.i18nc("@label:status", "Finished") case "pre_print": case "sent_to_printer": @@ -278,6 +279,7 @@ Rectangle case "aborted": return catalog.i18nc("@label:status", "Print aborted"); default: + // If print job has unknown status show printer.status return printerStatusText(printer); } } @@ -413,7 +415,7 @@ Rectangle { if(printJob.state == "printing" || printJob.state == "post_print") { - return OutputDevice.getDateCompleted(printJob.time_total - printJob.time_elapsed) + return OutputDevice.getDateCompleted(printJob.timeTotal - printJob.timeElapsed) } } return ""; diff --git a/plugins/UM3NetworkPrinting/PrinterVideoStream.qml b/plugins/UM3NetworkPrinting/PrinterVideoStream.qml index 3e6f6a8fd8..7f7b2ad546 100644 --- a/plugins/UM3NetworkPrinting/PrinterVideoStream.qml +++ b/plugins/UM3NetworkPrinting/PrinterVideoStream.qml @@ -57,7 +57,7 @@ Item { id: cameraImage width: Math.min(sourceSize.width === 0 ? 800 * screenScaleFactor : sourceSize.width, maximumWidth) - height: Math.floor((sourceSize.height === 0 ? 600 * screenScaleFactor : sourceSize.height) * width / sourceSize.width) + height: Math.round((sourceSize.height === 0 ? 600 * screenScaleFactor : sourceSize.height) * width / sourceSize.width) anchors.horizontalCenter: parent.horizontalCenter anchors.verticalCenter: parent.verticalCenter z: 1 diff --git a/plugins/UM3NetworkPrinting/UM3InfoComponents.qml b/plugins/UM3NetworkPrinting/UM3InfoComponents.qml index 18b481a6ed..5a9cc096e7 100644 --- a/plugins/UM3NetworkPrinting/UM3InfoComponents.qml +++ b/plugins/UM3NetworkPrinting/UM3InfoComponents.qml @@ -10,7 +10,8 @@ Item { id: base - property bool isUM3: Cura.MachineManager.activeQualityDefinitionId == "ultimaker3" + property string activeQualityDefinitionId: Cura.MachineManager.activeQualityDefinitionId + property bool isUM3: activeQualityDefinitionId == "ultimaker3" || activeQualityDefinitionId.match("ultimaker_") != null property bool printerConnected: Cura.MachineManager.printerOutputDevices.length != 0 property bool printerAcceptsCommands: printerConnected && Cura.MachineManager.printerOutputDevices[0].acceptsCommands property bool authenticationRequested: printerConnected && (Cura.MachineManager.printerOutputDevices[0].authenticationState == 2 || Cura.MachineManager.printerOutputDevices[0].authenticationState == 5) // AuthState.AuthenticationRequested or AuthenticationReceived. diff --git a/plugins/UM3NetworkPrinting/UM3OutputDevicePlugin.py b/plugins/UM3NetworkPrinting/UM3OutputDevicePlugin.py index c639c25007..5ff5eb9e3e 100644 --- a/plugins/UM3NetworkPrinting/UM3OutputDevicePlugin.py +++ b/plugins/UM3NetworkPrinting/UM3OutputDevicePlugin.py @@ -126,7 +126,7 @@ class UM3OutputDevicePlugin(OutputDevicePlugin): def removeManualDevice(self, key, address = None): if key in self._discovered_devices: if not address: - address = self._printers[key].ipAddress + address = self._discovered_devices[key].ipAddress self._onRemoveDevice(key) if address in self._manual_instances: diff --git a/plugins/USBPrinting/AutoDetectBaudJob.py b/plugins/USBPrinting/AutoDetectBaudJob.py index 72f4f20262..50bb831ba8 100644 --- a/plugins/USBPrinting/AutoDetectBaudJob.py +++ b/plugins/USBPrinting/AutoDetectBaudJob.py @@ -22,6 +22,7 @@ class AutoDetectBaudJob(Job): def run(self): Logger.log("d", "Auto detect baud rate started.") timeout = 3 + tries = 2 programmer = Stk500v2() serial = None @@ -31,36 +32,38 @@ class AutoDetectBaudJob(Job): except: programmer.close() - for baud_rate in self._all_baud_rates: - Logger.log("d", "Checking {serial} if baud rate {baud_rate} works".format(serial= self._serial_port, baud_rate = baud_rate)) + for retry in range(tries): + for baud_rate in self._all_baud_rates: + Logger.log("d", "Checking {serial} if baud rate {baud_rate} works".format(serial= self._serial_port, baud_rate = baud_rate)) - if serial is None: - try: - serial = Serial(str(self._serial_port), baud_rate, timeout = timeout, writeTimeout = timeout) - except SerialException as e: - Logger.logException("w", "Unable to create serial") - continue - else: - # We already have a serial connection, just change the baud rate. - try: - serial.baudrate = baud_rate - except: - continue - sleep(1.5) # Ensure that we are not talking to the boot loader. 1.5 seconds seems to be the magic number - successful_responses = 0 - - serial.write(b"\n") # Ensure we clear out previous responses - serial.write(b"M105\n") - - timeout_time = time() + timeout - - while timeout_time > time(): - line = serial.readline() - if b"ok T:" in line: - successful_responses += 1 - if successful_responses >= 3: - self.setResult(baud_rate) - return + if serial is None: + try: + serial = Serial(str(self._serial_port), baud_rate, timeout = timeout, writeTimeout = timeout) + except SerialException as e: + Logger.logException("w", "Unable to create serial") + continue + else: + # We already have a serial connection, just change the baud rate. + try: + serial.baudrate = baud_rate + except: + continue + sleep(1.5) # Ensure that we are not talking to the boot loader. 1.5 seconds seems to be the magic number + successful_responses = 0 + serial.write(b"\n") # Ensure we clear out previous responses serial.write(b"M105\n") + + timeout_time = time() + timeout + + while timeout_time > time(): + line = serial.readline() + if b"ok T:" in line: + successful_responses += 1 + if successful_responses >= 3: + self.setResult(baud_rate) + return + + serial.write(b"M105\n") + sleep(15) # Give the printer some time to init and try again. self.setResult(None) # Unable to detect the correct baudrate. diff --git a/plugins/USBPrinting/USBPrinterOutputController.py b/plugins/USBPrinting/USBPrinterOutputController.py index ba45e7b0ca..f189ed5876 100644 --- a/plugins/USBPrinting/USBPrinterOutputController.py +++ b/plugins/USBPrinting/USBPrinterOutputController.py @@ -10,7 +10,7 @@ if MYPY: from cura.PrinterOutput.PrinterOutputModel import PrinterOutputModel -class USBPrinterOuptutController(PrinterOutputController): +class USBPrinterOutputController(PrinterOutputController): def __init__(self, output_device): super().__init__(output_device) diff --git a/plugins/USBPrinting/USBPrinterOutputDevice.py b/plugins/USBPrinting/USBPrinterOutputDevice.py index d372b54c38..14098b66f8 100644 --- a/plugins/USBPrinting/USBPrinterOutputDevice.py +++ b/plugins/USBPrinting/USBPrinterOutputDevice.py @@ -1,4 +1,4 @@ -# Copyright (c) 2016 Ultimaker B.V. +# Copyright (c) 2018 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. from UM.Logger import Logger @@ -12,12 +12,12 @@ from cura.PrinterOutput.PrinterOutputModel import PrinterOutputModel from cura.PrinterOutput.PrintJobOutputModel import PrintJobOutputModel from .AutoDetectBaudJob import AutoDetectBaudJob -from .USBPrinterOutputController import USBPrinterOuptutController +from .USBPrinterOutputController import USBPrinterOutputController from .avr_isp import stk500v2, intelHex from PyQt5.QtCore import pyqtSlot, pyqtSignal, pyqtProperty -from serial import Serial, SerialException +from serial import Serial, SerialException, SerialTimeoutException from threading import Thread from time import time, sleep from queue import Queue @@ -99,7 +99,7 @@ class USBPrinterOutputDevice(PrinterOutputDevice): Application.getInstance().getController().setActiveStage("MonitorStage") # find the G-code for the active build plate to print - active_build_plate_id = Application.getInstance().getBuildPlateModel().activeBuildPlate + active_build_plate_id = Application.getInstance().getMultiBuildPlateModel().activeBuildPlate gcode_dict = getattr(Application.getInstance().getController().getScene(), "gcode_dict") gcode_list = gcode_dict[active_build_plate_id] @@ -116,7 +116,8 @@ class USBPrinterOutputDevice(PrinterOutputDevice): @pyqtSlot(str) def updateFirmware(self, file): - self._firmware_location = file + # the file path is qurl encoded. + self._firmware_location = file.replace("file://", "") self.showFirmwareInterface() self.setFirmwareUpdateState(FirmwareUpdateState.updating) self._update_firmware_thread.start() @@ -126,9 +127,11 @@ class USBPrinterOutputDevice(PrinterOutputDevice): if self._connection_state != ConnectionState.closed: self.close() - hex_file = intelHex.readHex(self._firmware_location) - if len(hex_file) == 0: - Logger.log("e", "Unable to read provided hex file. Could not update firmware") + try: + hex_file = intelHex.readHex(self._firmware_location) + assert len(hex_file) > 0 + except (FileNotFoundError, AssertionError): + Logger.log("e", "Unable to read provided hex file. Could not update firmware.") self.setFirmwareUpdateState(FirmwareUpdateState.firmware_not_found_error) return @@ -198,7 +201,6 @@ class USBPrinterOutputDevice(PrinterOutputDevice): # Reset line number. If this is not done, first line is sometimes ignored self._gcode.insert(0, "M110") self._gcode_position = 0 - self._is_printing = True self._print_start_time = time() self._print_estimated_time = int(Application.getInstance().getPrintInformation().currentPrintTime.getDisplayString(DurationFormat.Format.Seconds)) @@ -206,6 +208,7 @@ class USBPrinterOutputDevice(PrinterOutputDevice): for i in range(0, 4): # Push first 4 entries before accepting other inputs self._sendNextGcodeLine() + self._is_printing = True self.writeFinished.emit(self) def _autoDetectFinished(self, job: AutoDetectBaudJob): @@ -237,7 +240,7 @@ class USBPrinterOutputDevice(PrinterOutputDevice): container_stack = Application.getInstance().getGlobalContainerStack() num_extruders = container_stack.getProperty("machine_extruder_count", "value") # Ensure that a printer is created. - self._printers = [PrinterOutputModel(output_controller=USBPrinterOuptutController(self), number_of_extruders=num_extruders)] + self._printers = [PrinterOutputModel(output_controller=USBPrinterOutputController(self), number_of_extruders=num_extruders)] self._printers[0].updateName(container_stack.getName()) self.setConnectionState(ConnectionState.connected) self._update_thread.start() @@ -266,8 +269,10 @@ class USBPrinterOutputDevice(PrinterOutputDevice): command = (command + "\n").encode() if not command.endswith(b"\n"): command += b"\n" - self._serial.write(b"\n") - self._serial.write(command) + try: + self._serial.write(command) + except SerialTimeoutException: + Logger.log("w", "Timeout when sending command to printer via USB.") def _update(self): while self._connection_state == ConnectionState.connected and self._serial is not None: @@ -281,7 +286,7 @@ class USBPrinterOutputDevice(PrinterOutputDevice): self.sendCommand("M105") self._last_temperature_request = time() - if b"ok T:" in line or line.startswith(b"T:"): # Temperature message + if b"ok T:" in line or line.startswith(b"T:") or b"ok B:" in line or line.startswith(b"B:"): # Temperature message. 'T:' for extruder and 'B:' for bed extruder_temperature_matches = re.findall(b"T(\d*): ?([\d\.]+) ?\/?([\d\.]+)?", line) # Update all temperature values for match, extruder in zip(extruder_temperature_matches, self._printers[0].extruders): @@ -299,6 +304,9 @@ class USBPrinterOutputDevice(PrinterOutputDevice): self._printers[0].updateTargetBedTemperature(float(match[1])) if self._is_printing: + if line.startswith(b'!!'): + Logger.log('e', "Printer signals fatal error. Cancelling print. {}".format(line)) + self.cancelPrint() if b"ok" in line: if not self._command_queue.empty(): self._sendCommand(self._command_queue.get()) @@ -364,7 +372,7 @@ class USBPrinterOutputDevice(PrinterOutputDevice): elapsed_time = int(time() - self._print_start_time) print_job = self._printers[0].activePrintJob if print_job is None: - print_job = PrintJobOutputModel(output_controller = USBPrinterOuptutController(self), name= Application.getInstance().getPrintInformation().jobName) + print_job = PrintJobOutputModel(output_controller = USBPrinterOutputController(self), name= Application.getInstance().getPrintInformation().jobName) print_job.updateState("printing") self._printers[0].updateActivePrintJob(print_job) diff --git a/plugins/UltimakerMachineActions/BedLevelMachineAction.py b/plugins/UltimakerMachineActions/BedLevelMachineAction.py index 04b6cf1acc..6a8a337d8c 100644 --- a/plugins/UltimakerMachineActions/BedLevelMachineAction.py +++ b/plugins/UltimakerMachineActions/BedLevelMachineAction.py @@ -1,3 +1,8 @@ +# Copyright (c) 2018 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +from typing import List + from cura.MachineAction import MachineAction from cura.PrinterOutputDevice import PrinterOutputDevice @@ -5,6 +10,7 @@ from UM.FlameProfiler import pyqtSlot from UM.Application import Application from UM.i18n import i18nCatalog +from UM.Logger import Logger catalog = i18nCatalog("cura") @@ -26,38 +32,45 @@ class BedLevelMachineAction(MachineAction): @pyqtSlot() def startBedLeveling(self): self._bed_level_position = 0 - printer_output_devices = self._getPrinterOutputDevices() - if printer_output_devices: - printer_output_devices[0].homeBed() - printer_output_devices[0].moveHead(0, 0, 3) - printer_output_devices[0].homeHead() - def _getPrinterOutputDevices(self): + printer_output_devices = self._getPrinterOutputDevices() + if not printer_output_devices: + Logger.log("e", "Can't start bed levelling. The printer connection seems to have been lost.") + return + printer = printer_output_devices[0].activePrinter + + printer.homeBed() + printer.moveHead(0, 0, 3) + printer.homeHead() + + def _getPrinterOutputDevices(self) -> List[PrinterOutputDevice]: return [printer_output_device for printer_output_device in Application.getInstance().getOutputDeviceManager().getOutputDevices() if isinstance(printer_output_device, PrinterOutputDevice)] @pyqtSlot() def moveToNextLevelPosition(self): output_devices = self._getPrinterOutputDevices() - if output_devices: # We found at least one output device - output_device = output_devices[0] + if not output_devices: #No output devices. Can't move. + Logger.log("e", "Can't move to the next position. The printer connection seems to have been lost.") + return + printer = output_devices[0].activePrinter - if self._bed_level_position == 0: - output_device.moveHead(0, 0, 3) - output_device.homeHead() - output_device.moveHead(0, 0, 3) - output_device.moveHead(Application.getInstance().getGlobalContainerStack().getProperty("machine_width", "value") - 10, 0, 0) - output_device.moveHead(0, 0, -3) - self._bed_level_position += 1 - elif self._bed_level_position == 1: - output_device.moveHead(0, 0, 3) - output_device.moveHead(-Application.getInstance().getGlobalContainerStack().getProperty("machine_width", "value" ) / 2, Application.getInstance().getGlobalContainerStack().getProperty("machine_depth", "value") - 10, 0) - output_device.moveHead(0, 0, -3) - self._bed_level_position += 1 - elif self._bed_level_position == 2: - output_device.moveHead(0, 0, 3) - output_device.moveHead(-Application.getInstance().getGlobalContainerStack().getProperty("machine_width", "value") / 2 + 10, -(Application.getInstance().getGlobalContainerStack().getProperty("machine_depth", "value") + 10), 0) - output_device.moveHead(0, 0, -3) - self._bed_level_position += 1 - elif self._bed_level_position >= 3: - output_device.sendCommand("M18") # Turn off all motors so the user can move the axes - self.setFinished() \ No newline at end of file + if self._bed_level_position == 0: + printer.moveHead(0, 0, 3) + printer.homeHead() + printer.moveHead(0, 0, 3) + printer.moveHead(Application.getInstance().getGlobalContainerStack().getProperty("machine_width", "value") - 10, 0, 0) + printer.moveHead(0, 0, -3) + self._bed_level_position += 1 + elif self._bed_level_position == 1: + printer.moveHead(0, 0, 3) + printer.moveHead(-Application.getInstance().getGlobalContainerStack().getProperty("machine_width", "value" ) / 2, Application.getInstance().getGlobalContainerStack().getProperty("machine_depth", "value") - 10, 0) + printer.moveHead(0, 0, -3) + self._bed_level_position += 1 + elif self._bed_level_position == 2: + printer.moveHead(0, 0, 3) + printer.moveHead(-Application.getInstance().getGlobalContainerStack().getProperty("machine_width", "value") / 2 + 10, -(Application.getInstance().getGlobalContainerStack().getProperty("machine_depth", "value") + 10), 0) + printer.moveHead(0, 0, -3) + self._bed_level_position += 1 + elif self._bed_level_position >= 3: + output_devices[0].sendCommand("M18") # Turn off all motors so the user can move the axes + self.setFinished() \ No newline at end of file diff --git a/plugins/UltimakerMachineActions/UM2UpgradeSelection.py b/plugins/UltimakerMachineActions/UM2UpgradeSelection.py index 1bf0b98217..e21256f6bd 100644 --- a/plugins/UltimakerMachineActions/UM2UpgradeSelection.py +++ b/plugins/UltimakerMachineActions/UM2UpgradeSelection.py @@ -1,8 +1,7 @@ -# Copyright (c) 2017 Ultimaker B.V. +# Copyright (c) 2018 Ultimaker B.V. # Uranium is released under the terms of the LGPLv3 or higher. from UM.Settings.ContainerRegistry import ContainerRegistry -from UM.Settings.InstanceContainer import InstanceContainer from cura.MachineAction import MachineAction from PyQt5.QtCore import pyqtSlot, pyqtSignal, pyqtProperty @@ -11,8 +10,6 @@ from UM.Application import Application from UM.Util import parseBool catalog = i18nCatalog("cura") -import UM.Settings.InstanceContainer - ## The Ultimaker 2 can have a few revisions & upgrades. class UM2UpgradeSelection(MachineAction): @@ -22,18 +19,28 @@ class UM2UpgradeSelection(MachineAction): 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() - @pyqtProperty(bool, notify = hasVariantsChanged) - def hasVariants(self): - global_container_stack = Application.getInstance().getGlobalContainerStack() - if global_container_stack: - return parseBool(global_container_stack.getMetaDataEntry("has_variants", "false")) - - @pyqtSlot(bool) def setHasVariants(self, has_variants = True): global_container_stack = Application.getInstance().getGlobalContainerStack() if global_container_stack: @@ -62,3 +69,9 @@ class UM2UpgradeSelection(MachineAction): 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 index 988c9d6128..793f3f00a8 100644 --- a/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml +++ b/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml @@ -13,6 +13,7 @@ import Cura 1.0 as Cura Cura.MachineAction { anchors.fill: parent; + Item { id: upgradeSelectionMachineAction @@ -39,12 +40,19 @@ Cura.MachineAction CheckBox { + id: olssonBlockCheckBox anchors.top: pageDescription.bottom anchors.topMargin: UM.Theme.getSize("default_margin").height text: catalog.i18nc("@label", "Olsson Block") checked: manager.hasVariants - onClicked: manager.setHasVariants(checked) + onClicked: manager.hasVariants = checked + + Connections + { + target: manager + onHasVariantsChanged: olssonBlockCheckBox.checked = manager.hasVariants + } } UM.I18nCatalog { id: catalog; name: "cura"; } diff --git a/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml b/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml index 5a1f8f26a7..b92638aa12 100644 --- a/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml +++ b/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml @@ -180,7 +180,7 @@ Cura.MachineAction height: childrenRect.height anchors.top: nozzleTempLabel.top anchors.left: bedTempStatus.right - anchors.leftMargin: UM.Theme.getSize("default_margin").width/2 + anchors.leftMargin: Math.round(UM.Theme.getSize("default_margin").width/2) visible: checkupMachineAction.usbConnected Button { @@ -241,7 +241,7 @@ Cura.MachineAction height: childrenRect.height anchors.top: bedTempLabel.top anchors.left: bedTempStatus.right - anchors.leftMargin: UM.Theme.getSize("default_margin").width/2 + anchors.leftMargin: Math.round(UM.Theme.getSize("default_margin").width/2) visible: checkupMachineAction.usbConnected && manager.hasHeatedBed Button { diff --git a/plugins/UserAgreementPlugin/UserAgreement.qml b/plugins/UserAgreementPlugin/UserAgreement.qml index c7f3f165e3..4ee03f4ad5 100644 --- a/plugins/UserAgreementPlugin/UserAgreement.qml +++ b/plugins/UserAgreementPlugin/UserAgreement.qml @@ -9,8 +9,8 @@ import UM 1.3 as UM UM.Dialog { id: baseDialog - minimumWidth: Math.floor(UM.Theme.getSize("modal_window_minimum").width * 0.75) - minimumHeight: Math.floor(UM.Theme.getSize("modal_window_minimum").height * 0.5) + minimumWidth: Math.round(UM.Theme.getSize("modal_window_minimum").width * 0.75) + minimumHeight: Math.round(UM.Theme.getSize("modal_window_minimum").height * 0.5) width: minimumWidth height: minimumHeight title: catalog.i18nc("@title:window", "User Agreement") diff --git a/plugins/VersionUpgrade/VersionUpgrade22to24/VersionUpgrade.py b/plugins/VersionUpgrade/VersionUpgrade22to24/VersionUpgrade.py index 19f0563f10..7505911049 100644 --- a/plugins/VersionUpgrade/VersionUpgrade22to24/VersionUpgrade.py +++ b/plugins/VersionUpgrade/VersionUpgrade22to24/VersionUpgrade.py @@ -74,7 +74,7 @@ class VersionUpgrade22to24(VersionUpgrade): def __convertVariant(self, variant_path): # Copy the variant to the machine_instances/*_settings.inst.cfg variant_config = configparser.ConfigParser(interpolation=None) - with open(variant_path, "r") as fhandle: + with open(variant_path, "r", encoding = "utf-8") as fhandle: variant_config.read_file(fhandle) config_name = "Unknown Variant" diff --git a/plugins/VersionUpgrade/VersionUpgrade30to31/VersionUpgrade30to31.py b/plugins/VersionUpgrade/VersionUpgrade30to31/VersionUpgrade30to31.py index 8c5a160ff4..a88ff5ac1c 100644 --- a/plugins/VersionUpgrade/VersionUpgrade30to31/VersionUpgrade30to31.py +++ b/plugins/VersionUpgrade/VersionUpgrade30to31/VersionUpgrade30to31.py @@ -3,14 +3,9 @@ import configparser #To parse preference files. import io #To serialise the preference files afterwards. -import os -from urllib.parse import quote_plus -from UM.Resources import Resources from UM.VersionUpgrade import VersionUpgrade #We're inheriting from this. -from cura.CuraApplication import CuraApplication - # a list of all legacy "Not Supported" quality profiles _OLD_NOT_SUPPORTED_PROFILES = [ @@ -59,6 +54,12 @@ _EMPTY_CONTAINER_DICT = { } +# Renamed definition files +_RENAMED_DEFINITION_DICT = { + "jellybox": "imade3d_jellybox", +} + + class VersionUpgrade30to31(VersionUpgrade): ## Gets the version number from a CFG file in Uranium's 3.0 format. # @@ -111,16 +112,9 @@ class VersionUpgrade30to31(VersionUpgrade): if not parser.has_section(each_section): parser.add_section(each_section) - # Copy global quality changes to extruder quality changes for single extrusion machines - if parser["metadata"]["type"] == "quality_changes": - all_quality_changes = self._getSingleExtrusionMachineQualityChanges(parser) - # Note that DO NOT!!! use the quality_changes returned from _getSingleExtrusionMachineQualityChanges(). - # Those are loaded from the hard drive which are original files that haven't been upgraded yet. - # NOTE 2: The number can be 0 or 1 depends on whether you are loading it from the qualities folder or - # from a project file. When you load from a project file, the custom profile may not be in cura - # yet, so you will get 0. - if len(all_quality_changes) <= 1 and not parser.has_option("metadata", "extruder"): - self._createExtruderQualityChangesForSingleExtrusionMachine(filename, parser) + # Check renamed definitions + if "definition" in parser["general"] and parser["general"]["definition"] in _RENAMED_DEFINITION_DICT: + parser["general"]["definition"] = _RENAMED_DEFINITION_DICT[parser["general"]["definition"]] # Update version numbers parser["general"]["version"] = "2" @@ -131,7 +125,6 @@ class VersionUpgrade30to31(VersionUpgrade): parser.write(output) return [filename], [output.getvalue()] - ## Upgrades a container stack from version 3.0 to 3.1. # # \param serialised The serialised form of a container stack. @@ -156,6 +149,10 @@ class VersionUpgrade30to31(VersionUpgrade): if parser.has_option("containers", key) and parser["containers"][key] == "empty": parser["containers"][key] = specific_empty_container + # check renamed definition + if parser.has_option("containers", "6") and parser["containers"]["6"] in _RENAMED_DEFINITION_DICT: + parser["containers"]["6"] = _RENAMED_DEFINITION_DICT[parser["containers"]["6"]] + # Update version numbers if "general" not in parser: parser["general"] = {} @@ -169,67 +166,3 @@ class VersionUpgrade30to31(VersionUpgrade): output = io.StringIO() parser.write(output) return [filename], [output.getvalue()] - - def _getSingleExtrusionMachineQualityChanges(self, quality_changes_container): - quality_changes_dir = Resources.getPath(CuraApplication.ResourceTypes.QualityInstanceContainer) - quality_changes_containers = [] - - for item in os.listdir(quality_changes_dir): - file_path = os.path.join(quality_changes_dir, item) - if not os.path.isfile(file_path): - continue - - parser = configparser.ConfigParser(interpolation = None) - try: - parser.read([file_path]) - except: - # skip, it is not a valid stack file - continue - - if not parser.has_option("metadata", "type"): - continue - if "quality_changes" != parser["metadata"]["type"]: - continue - - if not parser.has_option("general", "name"): - continue - if quality_changes_container["general"]["name"] != parser["general"]["name"]: - continue - - quality_changes_containers.append(parser) - - return quality_changes_containers - - def _createExtruderQualityChangesForSingleExtrusionMachine(self, filename, global_quality_changes): - suffix = "_" + quote_plus(global_quality_changes["general"]["name"].lower()) - machine_name = os.path.os.path.basename(filename).replace(".inst.cfg", "").replace(suffix, "") - - # Why is this here?! - # When we load a .curaprofile file the deserialize will trigger a version upgrade, creating a dangling file. - # This file can be recognized by it's lack of a machine name in the target filename. - # So when we detect that situation here, we don't create the file and return. - if machine_name == "": - return - - new_filename = machine_name + "_" + "fdmextruder" + suffix - - extruder_quality_changes_parser = configparser.ConfigParser(interpolation = None) - extruder_quality_changes_parser.add_section("general") - extruder_quality_changes_parser["general"]["version"] = str(2) - extruder_quality_changes_parser["general"]["name"] = global_quality_changes["general"]["name"] - extruder_quality_changes_parser["general"]["definition"] = global_quality_changes["general"]["definition"] - - extruder_quality_changes_parser.add_section("metadata") - extruder_quality_changes_parser["metadata"]["quality_type"] = global_quality_changes["metadata"]["quality_type"] - extruder_quality_changes_parser["metadata"]["type"] = global_quality_changes["metadata"]["type"] - extruder_quality_changes_parser["metadata"]["setting_version"] = str(4) - extruder_quality_changes_parser["metadata"]["extruder"] = "fdmextruder" - - extruder_quality_changes_output = io.StringIO() - extruder_quality_changes_parser.write(extruder_quality_changes_output) - extruder_quality_changes_filename = quote_plus(new_filename) + ".inst.cfg" - - quality_changes_dir = Resources.getPath(CuraApplication.ResourceTypes.QualityInstanceContainer) - - with open(os.path.join(quality_changes_dir, extruder_quality_changes_filename), "w") as f: - f.write(extruder_quality_changes_output.getvalue()) diff --git a/plugins/VersionUpgrade/VersionUpgrade30to31/__init__.py b/plugins/VersionUpgrade/VersionUpgrade30to31/__init__.py index b4b75dddf7..c853e2b93b 100644 --- a/plugins/VersionUpgrade/VersionUpgrade30to31/__init__.py +++ b/plugins/VersionUpgrade/VersionUpgrade30to31/__init__.py @@ -33,6 +33,10 @@ def getMetaData(): "get_version": upgrade.getCfgVersion, "location": {"./extruders"} }, + "quality": { + "get_version": upgrade.getCfgVersion, + "location": {"./quality"} + }, "quality_changes": { "get_version": upgrade.getCfgVersion, "location": {"./quality"} diff --git a/plugins/VersionUpgrade/VersionUpgrade32to33/VersionUpgrade32to33.py b/plugins/VersionUpgrade/VersionUpgrade32to33/VersionUpgrade32to33.py new file mode 100644 index 0000000000..620f367e25 --- /dev/null +++ b/plugins/VersionUpgrade/VersionUpgrade32to33/VersionUpgrade32to33.py @@ -0,0 +1,135 @@ +# Copyright (c) 2018 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +import configparser #To parse preference files. +import io #To serialise the preference files afterwards. + +from UM.VersionUpgrade import VersionUpgrade #We're inheriting from this. + +## Mapping extruder definition IDs to the positions that they are in. +_EXTRUDER_TO_POSITION = { + "builder_premium_large_front": 1, + "builder_premium_large_rear": 0, + "builder_premium_medium_front": 1, + "builder_premium_medium_rear": 0, + "builder_premium_small_front": 1, + "builder_premium_small_rear": 0, + "cartesio_extruder_0": 0, + "cartesio_extruder_1": 1, + "cartesio_extruder_2": 2, + "cartesio_extruder_3": 3, + "custom_extruder_1": 0, #Warning, non-programmers are attempting to count here. + "custom_extruder_2": 1, + "custom_extruder_3": 2, + "custom_extruder_4": 3, + "custom_extruder_5": 4, + "custom_extruder_6": 5, + "custom_extruder_7": 6, + "custom_extruder_8": 7, + "hBp_extruder_left": 0, + "hBp_extruder_right": 1, + "makeit_dual_1st": 0, + "makeit_dual_2nd": 1, + "makeit_l_dual_1st": 0, + "makeit_l_dual_2nd": 1, + "ord_extruder_0": 0, + "ord_extruder_1": 1, + "ord_extruder_2": 2, + "ord_extruder_3": 3, + "ord_extruder_4": 4, + "punchtec_connect_xl_extruder_left": 0, + "punchtec_connect_xl_extruder_right": 1, + "raise3D_N2_dual_extruder_0": 0, + "raise3D_N2_dual_extruder_1": 1, + "raise3D_N2_plus_dual_extruder_0": 0, + "raise3D_N2_plus_dual_extruder_1": 1, + "ultimaker3_extended_extruder_left": 0, + "ultimaker3_extended_extruder_right": 1, + "ultimaker3_extruder_left": 0, + "ultimaker3_extruder_right": 1, + "ultimaker_original_dual_1st": 0, + "ultimaker_original_dual_2nd": 1, + "vertex_k8400_dual_1st": 0, + "vertex_k8400_dual_2nd": 1 +} + +## Upgrades configurations from the state they were in at version 3.2 to the +# state they should be in at version 3.3. +class VersionUpgrade32to33(VersionUpgrade): + + temporary_group_name_counter = 1 + ## Gets the version number from a CFG file in Uranium's 3.2 format. + # + # Since the format may change, this is implemented for the 3.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): + 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 a container stack from version 3.2 to 3.3. + # + # \param serialised The serialised form of a container stack. + # \param filename The name of the file to upgrade. + def upgradeStack(self, serialized, filename): + parser = configparser.ConfigParser(interpolation = None) + parser.read_string(serialized) + + if "metadata" in parser and "um_network_key" in parser["metadata"]: + if "hidden" not in parser["metadata"]: + parser["metadata"]["hidden"] = "False" + if "connect_group_name" not in parser["metadata"]: + parser["metadata"]["connect_group_name"] = "Temporary group name #" + str(self.temporary_group_name_counter) + self.temporary_group_name_counter += 1 + + #Update version number. + parser["general"]["version"] = "4" + + result = io.StringIO() + parser.write(result) + return [filename], [result.getvalue()] + + ## Upgrades non-quality-changes instance containers to have the new version + # number. + def upgradeInstanceContainer(self, serialized, filename): + parser = configparser.ConfigParser(interpolation = None) + parser.read_string(serialized) + + #Update version number. + parser["general"]["version"] = "3" + + result = io.StringIO() + parser.write(result) + return [filename], [result.getvalue()] + + ## Upgrades a quality changes container to the new format. + def upgradeQualityChanges(self, serialized, filename): + parser = configparser.ConfigParser(interpolation = None) + parser.read_string(serialized) + + #Extruder quality changes profiles have the extruder position instead of the ID of the extruder definition. + if "metadata" in parser and "extruder" in parser["metadata"]: #Only do this for extruder profiles. + extruder_id = parser["metadata"]["extruder"] + if extruder_id in _EXTRUDER_TO_POSITION: + extruder_position = _EXTRUDER_TO_POSITION[extruder_id] + else: + extruder_position = 0 #The user was using custom extruder definitions. He's on his own then. + + parser["metadata"]["position"] = str(extruder_position) + del parser["metadata"]["extruder"] + + #Update version number. + parser["general"]["version"] = "3" + + result = io.StringIO() + parser.write(result) + return [filename], [result.getvalue()] \ No newline at end of file diff --git a/plugins/VersionUpgrade/VersionUpgrade32to33/__init__.py b/plugins/VersionUpgrade/VersionUpgrade32to33/__init__.py new file mode 100644 index 0000000000..72ff6e1de9 --- /dev/null +++ b/plugins/VersionUpgrade/VersionUpgrade32to33/__init__.py @@ -0,0 +1,44 @@ +# Copyright (c) 2018 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +from . import VersionUpgrade32to33 + +upgrade = VersionUpgrade32to33.VersionUpgrade32to33() + +def getMetaData(): + return { + "version_upgrade": { + # From To Upgrade function + ("machine_stack", 3000004): ("machine_stack", 4000004, upgrade.upgradeStack), + ("extruder_train", 3000004): ("extruder_train", 4000004, upgrade.upgradeStack), + + ("definition_changes", 2000004): ("definition_changes", 3000004, upgrade.upgradeInstanceContainer), + ("quality_changes", 2000004): ("quality_changes", 3000004, upgrade.upgradeQualityChanges), + ("user", 2000004): ("user", 3000004, upgrade.upgradeInstanceContainer) + }, + "sources": { + "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"} + }, + "user": { + "get_version": upgrade.getCfgVersion, + "location": {"./user"} + } + } + } + +def register(app): + return { "version_upgrade": upgrade } \ No newline at end of file diff --git a/plugins/VersionUpgrade/VersionUpgrade32to33/plugin.json b/plugins/VersionUpgrade/VersionUpgrade32to33/plugin.json new file mode 100644 index 0000000000..fbce09c807 --- /dev/null +++ b/plugins/VersionUpgrade/VersionUpgrade32to33/plugin.json @@ -0,0 +1,8 @@ + { + "name": "Version Upgrade 3.2 to 3.3", + "author": "Ultimaker B.V.", + "version": "1.0.0", + "description": "Upgrades configurations from Cura 3.2 to Cura 3.3.", + "api": 4, + "i18n-catalog": "cura" +} diff --git a/plugins/XRayView/XRayPass.py b/plugins/XRayView/XRayPass.py index 38c88a256e..a75d393b35 100644 --- a/plugins/XRayView/XRayPass.py +++ b/plugins/XRayView/XRayPass.py @@ -1,4 +1,4 @@ -# Copyright (c) 2015 Ultimaker B.V. +# Copyright (c) 2018 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. import os.path @@ -10,7 +10,7 @@ from UM.View.RenderPass import RenderPass from UM.View.RenderBatch import RenderBatch from UM.View.GL.OpenGL import OpenGL -from UM.Scene.SceneNode import SceneNode +from cura.Scene.CuraSceneNode import CuraSceneNode from UM.Scene.Iterator.DepthFirstIterator import DepthFirstIterator class XRayPass(RenderPass): @@ -27,7 +27,7 @@ class XRayPass(RenderPass): batch = RenderBatch(self._shader, type = RenderBatch.RenderType.NoType, backface_cull = False, blend_mode = RenderBatch.BlendMode.Additive) for node in DepthFirstIterator(self._scene.getRoot()): - if type(node) is SceneNode and node.getMeshData() and node.isVisible(): + if isinstance(node, CuraSceneNode) and node.getMeshData() and node.isVisible(): batch.addItem(node.getWorldTransformation(), node.getMeshData()) self.bind() diff --git a/plugins/XRayView/xray_composite.shader b/plugins/XRayView/xray_composite.shader index 82dca52cf9..0a8f6364d7 100644 --- a/plugins/XRayView/xray_composite.shader +++ b/plugins/XRayView/xray_composite.shader @@ -13,9 +13,9 @@ vertex = } fragment = - uniform sampler2D u_layer0; - uniform sampler2D u_layer1; - uniform sampler2D u_layer2; + uniform sampler2D u_layer0; //Default pass. + uniform sampler2D u_layer1; //Selection pass. + uniform sampler2D u_layer2; //X-ray pass. uniform vec2 u_offset[9]; @@ -83,9 +83,9 @@ vertex41core = fragment41core = #version 410 - uniform sampler2D u_layer0; - uniform sampler2D u_layer1; - uniform sampler2D u_layer2; + uniform sampler2D u_layer0; //Default pass. + uniform sampler2D u_layer1; //Selection pass. + uniform sampler2D u_layer2; //X-ray pass. uniform vec2 u_offset[9]; diff --git a/plugins/XmlMaterialProfile/XmlMaterialProfile.py b/plugins/XmlMaterialProfile/XmlMaterialProfile.py index 8767377db0..8b17721794 100644 --- a/plugins/XmlMaterialProfile/XmlMaterialProfile.py +++ b/plugins/XmlMaterialProfile/XmlMaterialProfile.py @@ -17,6 +17,8 @@ import UM.Dictionary from UM.Settings.InstanceContainer import InstanceContainer from UM.Settings.ContainerRegistry import ContainerRegistry +from .XmlMaterialValidator import XmlMaterialValidator + ## Handles serializing and deserializing material containers from an XML file class XmlMaterialProfile(InstanceContainer): CurrentFdmMaterialVersion = "1.3" @@ -46,18 +48,35 @@ class XmlMaterialProfile(InstanceContainer): ## Overridden from InstanceContainer # set the meta data for all machine / variant combinations - def setMetaDataEntry(self, key, value): + # + # The "apply_to_all" flag indicates whether this piece of metadata should be applied to all material containers + # or just this specific container. + # For example, when you change the material name, you want to apply it to all its derived containers, but for + # some specific settings, they should only be applied to a machine/variant-specific container. + # + def setMetaDataEntry(self, key, value, apply_to_all = True): registry = ContainerRegistry.getInstance() if registry.isReadOnly(self.getId()): return - super().setMetaDataEntry(key, value) + # Prevent recursion + if not apply_to_all: + super().setMetaDataEntry(key, value) + return - basefile = self.getMetaDataEntry("base_file", self.getId()) #if basefile is self.getId, this is a basefile. - # Update all containers that share basefile - for container in registry.findInstanceContainers(base_file = basefile): - if container.getMetaDataEntry(key, None) != value: # Prevent recursion - container.setMetaDataEntry(key, value) + # 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) + + # Update the root material container + root_material_container = material_group.root_material_node.getContainer() + root_material_container.setMetaDataEntry(key, value, apply_to_all = False) + + # Update all containers derived from it + for node in material_group.derived_material_node_list: + container = node.getContainer() + container.setMetaDataEntry(key, value, apply_to_all = False) ## Overridden from InstanceContainer, similar to setMetaDataEntry. # without this function the setName would only set the name of the specific nozzle / material / machine combination container @@ -181,28 +200,39 @@ class XmlMaterialProfile(InstanceContainer): ## Begin Settings Block builder.start("settings") - if self.getDefinition().getId() == "fdmprinter": + if self.getMetaDataEntry("definition") == "fdmprinter": for instance in self.findInstances(): self._addSettingElement(builder, instance) machine_container_map = {} - machine_nozzle_map = {} + machine_variant_map = {} + + variant_manager = CuraApplication.getInstance().getVariantManager() + 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) + + all_containers = [] + for node in [material_group.root_material_node] + material_group.derived_material_node_list: + all_containers.append(node.getContainer()) - all_containers = registry.findInstanceContainers(GUID = self.getMetaDataEntry("GUID"), base_file = self.getId()) for container in all_containers: - definition_id = container.getDefinition().getId() + definition_id = container.getMetaDataEntry("definition") if definition_id == "fdmprinter": continue if definition_id not in machine_container_map: machine_container_map[definition_id] = container - if definition_id not in machine_nozzle_map: - machine_nozzle_map[definition_id] = {} + if definition_id not in machine_variant_map: + machine_variant_map[definition_id] = {} - variant = container.getMetaDataEntry("variant") - if variant: - machine_nozzle_map[definition_id][variant] = container + 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 continue machine_container_map[definition_id] = container @@ -211,7 +241,8 @@ class XmlMaterialProfile(InstanceContainer): product_id_map = self.getProductIdMap() for definition_id, container in machine_container_map.items(): - definition = container.getDefinition() + definition_id = container.getMetaDataEntry("definition") + definition_metadata = ContainerRegistry.getInstance().findDefinitionContainersMetadata(id = definition_id)[0] product = definition_id for product_name, product_id_list in product_id_map.items(): @@ -221,45 +252,74 @@ class XmlMaterialProfile(InstanceContainer): builder.start("machine") builder.start("machine_identifier", { - "manufacturer": container.getMetaDataEntry("machine_manufacturer", definition.getMetaDataEntry("manufacturer", "Unknown")), + "manufacturer": container.getMetaDataEntry("machine_manufacturer", + definition_metadata.get("manufacturer", "Unknown")), "product": product }) builder.end("machine_identifier") for instance in container.findInstances(): - if self.getDefinition().getId() == "fdmprinter" and self.getInstance(instance.definition.key) and self.getProperty(instance.definition.key, "value") == instance.value: + if self.getMetaDataEntry("definition") == "fdmprinter" and self.getInstance(instance.definition.key) and self.getProperty(instance.definition.key, "value") == instance.value: # If the settings match that of the base profile, just skip since we inherit the base profile. continue self._addSettingElement(builder, instance) # Find all hotend sub-profiles corresponding to this material and machine and add them to this profile. - for hotend_id, hotend in machine_nozzle_map[definition_id].items(): - variant_containers = registry.findInstanceContainersMetadata(id = hotend.getMetaDataEntry("variant")) - if not variant_containers: - continue + buildplate_dict = {} + for variant_name, variant_dict in machine_variant_map[definition_id].items(): + variant_type = variant_dict["variant_node"].metadata["hardware_type"] + from cura.Machines.VariantManager import VariantType + variant_type = VariantType(variant_type) + if variant_type == VariantType.NOZZLE: + # The hotend identifier is not the containers name, but its "name". + builder.start("hotend", {"id": variant_name}) - # The hotend identifier is not the containers name, but its "name". - builder.start("hotend", {"id": variant_containers[0]["name"]}) + # Compatible is a special case, as it's added as a meta data entry (instead of an instance). + material_container = variant_dict["material_container"] + compatible = material_container.getMetaDataEntry("compatible") + if compatible is not None: + builder.start("setting", {"key": "hardware compatible"}) + if compatible: + builder.data("yes") + else: + builder.data("no") + builder.end("setting") - # Compatible is a special case, as it's added as a meta data entry (instead of an instance). - compatible = hotend.getMetaDataEntry("compatible") - if compatible is not None: - builder.start("setting", {"key": "hardware compatible"}) - if compatible: - builder.data("yes") - else: - builder.data("no") - builder.end("setting") + for instance in material_container.findInstances(): + if container.getInstance(instance.definition.key) and container.getProperty(instance.definition.key, "value") == instance.value: + # If the settings match that of the machine profile, just skip since we inherit the machine profile. + continue - for instance in hotend.findInstances(): - if container.getInstance(instance.definition.key) and container.getProperty(instance.definition.key, "value") == instance.value: - # If the settings match that of the machine profile, just skip since we inherit the machine profile. - continue + self._addSettingElement(builder, instance) - self._addSettingElement(builder, instance) + if material_container.getMetaDataEntry("buildplate_compatible") and not buildplate_dict: + buildplate_dict["buildplate_compatible"] = material_container.getMetaDataEntry("buildplate_compatible") + buildplate_dict["buildplate_recommended"] = material_container.getMetaDataEntry("buildplate_recommended") + buildplate_dict["material_container"] = material_container - builder.end("hotend") + builder.end("hotend") + + if buildplate_dict: + for variant_name in buildplate_dict["buildplate_compatible"]: + builder.start("buildplate", {"id": variant_name}) + + material_container = buildplate_dict["material_container"] + buildplate_compatible_dict = material_container.getMetaDataEntry("buildplate_compatible") + buildplate_recommended_dict = material_container.getMetaDataEntry("buildplate_recommended") + if buildplate_compatible_dict: + compatible = buildplate_compatible_dict[variant_name] + recommended = buildplate_recommended_dict[variant_name] + + builder.start("setting", {"key": "hardware compatible"}) + builder.data("yes" if compatible else "no") + builder.end("setting") + + builder.start("setting", {"key": "hardware recommended"}) + builder.data("yes" if recommended else "no") + builder.end("setting") + + builder.end("buildplate") builder.end("machine") @@ -480,6 +540,10 @@ class XmlMaterialProfile(InstanceContainer): if "adhesion_info" not in meta_data: meta_data["adhesion_info"] = "" + validation_message = XmlMaterialValidator.validateMaterialMetaData(meta_data) + if validation_message is not None: + raise Exception("Not valid material profile: %s" % (validation_message)) + property_values = {} properties = data.iterfind("./um:properties/*", self.__namespaces) for entry in properties: @@ -538,10 +602,8 @@ class XmlMaterialProfile(InstanceContainer): for machine_id in machine_id_list: definitions = ContainerRegistry.getInstance().findDefinitionContainersMetadata(id = machine_id) if not definitions: - Logger.log("w", "No definition found for machine ID %s", machine_id) continue - Logger.log("d", "Found definition for machine ID %s", machine_id) definition = definitions[0] machine_manufacturer = identifier.get("manufacturer", definition.get("manufacturer", "Unknown")) #If the XML material doesn't specify a manufacturer, use the one in the actual printer definition. @@ -586,14 +648,11 @@ class XmlMaterialProfile(InstanceContainer): if buildplate_id is None: continue - variant_containers = ContainerRegistry.getInstance().findInstanceContainersMetadata( - id = buildplate_id) - if not variant_containers: - # It is not really properly defined what "ID" is so also search for variants by name. - variant_containers = ContainerRegistry.getInstance().findInstanceContainersMetadata( - definition = machine_id, name = buildplate_id) - - if not variant_containers: + from cura.Machines.VariantManager import VariantType + 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_compatibility = machine_compatibility @@ -614,16 +673,14 @@ class XmlMaterialProfile(InstanceContainer): hotends = machine.iterfind("./um:hotend", self.__namespaces) for hotend in hotends: - hotend_id = hotend.get("id") - if hotend_id is None: + # The "id" field for hotends in material profiles are actually + hotend_name = hotend.get("id") + if hotend_name is None: continue - variant_containers = ContainerRegistry.getInstance().findInstanceContainersMetadata(id = hotend_id) - if not variant_containers: - # It is not really properly defined what "ID" is so also search for variants by name. - variant_containers = ContainerRegistry.getInstance().findInstanceContainersMetadata(definition = machine_id, name = hotend_id) - - if not variant_containers: + variant_manager = CuraApplication.getInstance().getVariantManager() + variant_node = variant_manager.getVariantNode(machine_id, hotend_name) + if not variant_node: continue hotend_compatibility = machine_compatibility @@ -639,20 +696,20 @@ class XmlMaterialProfile(InstanceContainer): else: Logger.log("d", "Unsupported material setting %s", key) - new_hotend_id = self.getId() + "_" + machine_id + "_" + hotend_id.replace(" ", "_") + new_hotend_specific_material_id = self.getId() + "_" + machine_id + "_" + hotend_name.replace(" ", "_") # Same as machine compatibility, keep the derived material containers consistent with the parent material - if ContainerRegistry.getInstance().isLoaded(new_hotend_id): - new_hotend_material = ContainerRegistry.getInstance().findContainers(id = new_hotend_id)[0] + if ContainerRegistry.getInstance().isLoaded(new_hotend_specific_material_id): + new_hotend_material = ContainerRegistry.getInstance().findContainers(id = new_hotend_specific_material_id)[0] is_new_material = False else: - new_hotend_material = XmlMaterialProfile(new_hotend_id) + new_hotend_material = XmlMaterialProfile(new_hotend_specific_material_id) is_new_material = True new_hotend_material.setMetaData(copy.deepcopy(self.getMetaData())) - new_hotend_material.getMetaData()["id"] = new_hotend_id + new_hotend_material.getMetaData()["id"] = new_hotend_specific_material_id new_hotend_material.getMetaData()["name"] = self.getName() - new_hotend_material.getMetaData()["variant"] = variant_containers[0]["id"] + new_hotend_material.getMetaData()["variant_name"] = hotend_name new_hotend_material.setDefinition(machine_id) # Don't use setMetadata, as that overrides it for all materials with same base file new_hotend_material.getMetaData()["compatible"] = hotend_compatibility @@ -772,7 +829,6 @@ class XmlMaterialProfile(InstanceContainer): for machine_id in machine_id_list: definition_metadata = ContainerRegistry.getInstance().findDefinitionContainersMetadata(id = machine_id) if not definition_metadata: - Logger.log("w", "No definition found for machine ID %s", machine_id) continue definition_metadata = definition_metadata[0] @@ -782,15 +838,11 @@ class XmlMaterialProfile(InstanceContainer): if machine_compatibility: new_material_id = container_id + "_" + machine_id - # The child or derived material container may already exist. This can happen when a material in a - # project file and the a material in Cura have the same ID. - # In the case if a derived material already exists, override that material container because if - # the data in the parent material has been changed, the derived ones should be updated too. - found_materials = ContainerRegistry.getInstance().findInstanceContainersMetadata(id = new_material_id) - if found_materials: - new_material_metadata = found_materials[0] - else: - new_material_metadata = {} + # Do not look for existing container/container metadata with the same ID although they may exist. + # In project loading and perhaps some other places, we only want to get information (metadata) + # from a file without changing the current state of the system. If we overwrite the existing + # metadata here, deserializeMetadata() will not be safe for retrieving information. + new_material_metadata = {} new_material_metadata.update(base_metadata) new_material_metadata["id"] = new_material_id @@ -798,8 +850,7 @@ class XmlMaterialProfile(InstanceContainer): new_material_metadata["machine_manufacturer"] = machine_manufacturer new_material_metadata["definition"] = machine_id - if len(found_materials) == 0: #This is a new material. - result_metadata.append(new_material_metadata) + result_metadata.append(new_material_metadata) buildplates = machine.iterfind("./um:buildplate", cls.__namespaces) buildplate_map = {} @@ -810,15 +861,17 @@ class XmlMaterialProfile(InstanceContainer): if buildplate_id is None: continue - variant_containers = ContainerRegistry.getInstance().findInstanceContainersMetadata(id = buildplate_id) - if not variant_containers: + variant_metadata = ContainerRegistry.getInstance().findInstanceContainersMetadata(id = buildplate_id) + if not variant_metadata: # It is not really properly defined what "ID" is so also search for variants by name. - variant_containers = ContainerRegistry.getInstance().findInstanceContainersMetadata(definition = machine_id, name = buildplate_id) + variant_metadata = ContainerRegistry.getInstance().findInstanceContainersMetadata(definition = machine_id, name = buildplate_id) - if not variant_containers: + if not variant_metadata: continue settings = buildplate.iterfind("./um:setting", cls.__namespaces) + buildplate_compatibility = True + buildplate_recommended = True for entry in settings: key = entry.get("key") if key == "hardware compatible": @@ -826,50 +879,36 @@ class XmlMaterialProfile(InstanceContainer): elif key == "hardware recommended": buildplate_recommended = cls._parseCompatibleValue(entry.text) - buildplate_map["buildplate_compatible"][buildplate_id] = buildplate_map["buildplate_compatible"] - buildplate_map["buildplate_recommended"][buildplate_id] = buildplate_map["buildplate_recommended"] + buildplate_map["buildplate_compatible"][buildplate_id] = buildplate_compatibility + buildplate_map["buildplate_recommended"][buildplate_id] = buildplate_recommended for hotend in machine.iterfind("./um:hotend", cls.__namespaces): - hotend_id = hotend.get("id") - if hotend_id is None: + hotend_name = hotend.get("id") + if hotend_name is None: continue - variant_containers = ContainerRegistry.getInstance().findInstanceContainersMetadata(id = hotend_id) - if not variant_containers: - # It is not really properly defined what "ID" is so also search for variants by name. - variant_containers = ContainerRegistry.getInstance().findInstanceContainersMetadata(definition = machine_id, name = hotend_id) - hotend_compatibility = machine_compatibility for entry in hotend.iterfind("./um:setting", cls.__namespaces): key = entry.get("key") if key == "hardware compatible": hotend_compatibility = cls._parseCompatibleValue(entry.text) - new_hotend_id = container_id + "_" + machine_id + "_" + hotend_id.replace(" ", "_") + new_hotend_specific_material_id = container_id + "_" + machine_id + "_" + hotend_name.replace(" ", "_") - # Same as machine compatibility, keep the derived material containers consistent with the parent material - found_materials = ContainerRegistry.getInstance().findInstanceContainersMetadata(id = new_hotend_id) - if found_materials: - new_hotend_material_metadata = found_materials[0] - else: - new_hotend_material_metadata = {} + # Same as above, do not overwrite existing metadata. + new_hotend_material_metadata = {} new_hotend_material_metadata.update(base_metadata) - if variant_containers: - new_hotend_material_metadata["variant"] = variant_containers[0]["id"] - else: - new_hotend_material_metadata["variant"] = hotend_id - _with_missing_variants.append(new_hotend_material_metadata) + new_hotend_material_metadata["variant_name"] = hotend_name new_hotend_material_metadata["compatible"] = hotend_compatibility new_hotend_material_metadata["machine_manufacturer"] = machine_manufacturer - new_hotend_material_metadata["id"] = new_hotend_id + new_hotend_material_metadata["id"] = new_hotend_specific_material_id new_hotend_material_metadata["definition"] = machine_id if buildplate_map["buildplate_compatible"]: new_hotend_material_metadata["buildplate_compatible"] = buildplate_map["buildplate_compatible"] new_hotend_material_metadata["buildplate_recommended"] = buildplate_map["buildplate_recommended"] - if len(found_materials) == 0: - result_metadata.append(new_hotend_material_metadata) + result_metadata.append(new_hotend_material_metadata) # 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 @@ -911,11 +950,11 @@ class XmlMaterialProfile(InstanceContainer): else: merged_name_parts.append(part) - id_list = [name.lower().replace(" ", ""), # simply removing all spaces + id_list = {name.lower().replace(" ", ""), # simply removing all spaces name.lower().replace(" ", "_"), # simply replacing all spaces with underscores "_".join(merged_name_parts), - ] - + } + id_list = list(id_list) return id_list ## Gets a mapping from product names in the XML files to their definition @@ -989,21 +1028,3 @@ def _indent(elem, level = 0): # before the last } def _tag_without_namespace(element): return element.tag[element.tag.rfind("}") + 1:] - -#While loading XML profiles, some of these profiles don't know what variant -#they belong to. We'd like to search by the machine ID and the variant's -#name, but we don't know the variant's ID. Not all variants have been loaded -#yet so we can't run a filter on the name and machine. The ID is unknown -#so we can't lazily load the variant either. So we have to wait until all -#the rest is loaded properly and then assign the correct variant to the -#material files that were missing it. -_with_missing_variants = [] -def _fillMissingVariants(): - registry = ContainerRegistry.getInstance() - for variant_metadata in _with_missing_variants: - variants = registry.findContainersMetadata(definition = variant_metadata["definition"], name = variant_metadata["variant"]) - if not variants: - Logger.log("w", "Could not find variant for variant-specific material {material_id}.".format(material_id = variant_metadata["id"])) - continue - variant_metadata["variant"] = variants[0]["id"] -ContainerRegistry.allMetadataLoaded.connect(_fillMissingVariants) diff --git a/plugins/XmlMaterialProfile/XmlMaterialValidator.py b/plugins/XmlMaterialProfile/XmlMaterialValidator.py new file mode 100644 index 0000000000..f11c8bea4b --- /dev/null +++ b/plugins/XmlMaterialProfile/XmlMaterialValidator.py @@ -0,0 +1,25 @@ +# Copyright (c) 2017 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + + + +class XmlMaterialValidator(): + + @classmethod + def validateMaterialMetaData(cls, validation_metadata): + + if validation_metadata.get("GUID") is None: + return "Missing GUID" + + if validation_metadata.get("brand") is None: + return "Missing Brand" + + if validation_metadata.get("material") is None: + return "Missing Material" + + if validation_metadata.get("version") is None: + return "Missing Version" + + return None + + diff --git a/resources/definitions/anycubic_i3_mega.def.json b/resources/definitions/anycubic_i3_mega.def.json index cba868900c..7106038193 100644 --- a/resources/definitions/anycubic_i3_mega.def.json +++ b/resources/definitions/anycubic_i3_mega.def.json @@ -12,7 +12,7 @@ "platform": "anycubic_i3_mega_platform.stl", "has_materials": false, "has_machine_quality": true, - "preferred_quality": "*normal*" + "preferred_quality_type": "normal" }, "overrides": diff --git a/resources/definitions/builder_premium_large.def.json b/resources/definitions/builder_premium_large.def.json index b496dc524e..deb1539a9a 100644 --- a/resources/definitions/builder_premium_large.def.json +++ b/resources/definitions/builder_premium_large.def.json @@ -12,16 +12,14 @@ "platform": "builder_premium_platform.stl", "platform_offset": [-126, -36, 117], "has_machine_quality": true, - "preferred_quality": "*Normal*", + "preferred_quality_type": "normal", "machine_extruder_trains": { "0": "builder_premium_large_rear", "1": "builder_premium_large_front" } }, - - - + "overrides": { "machine_name": { "default_value": "Builder Premium Large" }, "machine_heated_bed": { "default_value": true }, @@ -36,7 +34,7 @@ "default_material_print_temperature": { "value": "215" }, "material_print_temperature_layer_0": { "value": "material_print_temperature + 5" }, "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 }, @@ -58,9 +56,9 @@ "prime_tower_wipe_enabled": { "default_value": false }, "prime_tower_min_volume": { "default_value": 50 }, "dual_pre_wipe": { "default_value": false }, - + "prime_blob_enable": { "enabled": true }, - + "acceleration_enabled": { "value": "True" }, "acceleration_layer_0": { "value": "acceleration_topbottom" }, "acceleration_prime_tower": { "value": "math.ceil(acceleration_print * 2000 / 4000)" }, @@ -71,7 +69,7 @@ "acceleration_travel": { "value": "acceleration_print" }, "acceleration_wall": { "value": "math.ceil(acceleration_print * 1000 / 3000)" }, "acceleration_wall_0": { "value": "math.ceil(acceleration_wall * 1000 / 1000)" }, - + "cool_fan_full_at_height": { "value": "layer_height_0 + 2 * layer_height" }, "cool_min_layer_time": { "default_value": 10 }, @@ -84,9 +82,9 @@ "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)" }, - + "wall_thickness": { "value": "1.2" }, - + "retraction_amount": { "default_value": 3 }, "retraction_speed": { "default_value": 15 }, "retraction_retract_speed": { "default_value": 15 }, @@ -113,4 +111,4 @@ }, "machine_extruder_count": { "default_value": 2 } } -} \ No newline at end of file +} diff --git a/resources/definitions/builder_premium_medium.def.json b/resources/definitions/builder_premium_medium.def.json index fe8a039fc4..c28c7c5de6 100644 --- a/resources/definitions/builder_premium_medium.def.json +++ b/resources/definitions/builder_premium_medium.def.json @@ -12,16 +12,14 @@ "platform": "builder_premium_platform.stl", "platform_offset": [-126, -36, 117], "has_machine_quality": true, - "preferred_quality": "*Normal*", + "preferred_quality_type": "normal", "machine_extruder_trains": { "0": "builder_premium_medium_rear", "1": "builder_premium_medium_front" } }, - - - + "overrides": { "machine_name": { "default_value": "Builder Premium Medium" }, "machine_heated_bed": { "default_value": true }, @@ -36,7 +34,7 @@ "default_material_print_temperature": { "value": "215" }, "material_print_temperature_layer_0": { "value": "material_print_temperature + 5" }, "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 }, @@ -58,9 +56,9 @@ "prime_tower_wipe_enabled": { "default_value": false }, "prime_tower_min_volume": { "default_value": 50 }, "dual_pre_wipe": { "default_value": false }, - + "prime_blob_enable": { "enabled": true }, - + "acceleration_enabled": { "value": "True" }, "acceleration_layer_0": { "value": "acceleration_topbottom" }, "acceleration_prime_tower": { "value": "math.ceil(acceleration_print * 2000 / 4000)" }, @@ -71,7 +69,7 @@ "acceleration_travel": { "value": "acceleration_print" }, "acceleration_wall": { "value": "math.ceil(acceleration_print * 1000 / 3000)" }, "acceleration_wall_0": { "value": "math.ceil(acceleration_wall * 1000 / 1000)" }, - + "cool_fan_full_at_height": { "value": "layer_height_0 + 2 * layer_height" }, "cool_min_layer_time": { "default_value": 10 }, @@ -84,9 +82,9 @@ "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)" }, - + "wall_thickness": { "value": "1.2" }, - + "retraction_amount": { "default_value": 3 }, "retraction_speed": { "default_value": 15 }, "retraction_retract_speed": { "default_value": 15 }, @@ -113,4 +111,4 @@ }, "machine_extruder_count": { "default_value": 2 } } -} \ No newline at end of file +} diff --git a/resources/definitions/builder_premium_small.def.json b/resources/definitions/builder_premium_small.def.json index a1660b63cf..8e2fe44631 100644 --- a/resources/definitions/builder_premium_small.def.json +++ b/resources/definitions/builder_premium_small.def.json @@ -11,16 +11,14 @@ "platform": "builder_premium_platform.stl", "platform_offset": [-126, -36, 117], "has_machine_quality": true, - "preferred_quality": "*Normal*", + "preferred_quality_type": "normal", "machine_extruder_trains": { "0": "builder_premium_small_rear", "1": "builder_premium_small_front" } }, - - - + "overrides": { "machine_name": { "default_value": "Builder Premium Small" }, "machine_heated_bed": { "default_value": true }, @@ -35,7 +33,7 @@ "default_material_print_temperature": { "value": "215" }, "material_print_temperature_layer_0": { "value": "material_print_temperature + 5" }, "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 }, @@ -57,9 +55,9 @@ "prime_tower_wipe_enabled": { "default_value": false }, "prime_tower_min_volume": { "default_value": 50 }, "dual_pre_wipe": { "default_value": false }, - + "prime_blob_enable": { "enabled": true }, - + "acceleration_enabled": { "value": "True" }, "acceleration_layer_0": { "value": "acceleration_topbottom" }, "acceleration_prime_tower": { "value": "math.ceil(acceleration_print * 2000 / 4000)" }, @@ -70,7 +68,7 @@ "acceleration_travel": { "value": "acceleration_print" }, "acceleration_wall": { "value": "math.ceil(acceleration_print * 1000 / 3000)" }, "acceleration_wall_0": { "value": "math.ceil(acceleration_wall * 1000 / 1000)" }, - + "cool_fan_full_at_height": { "value": "layer_height_0 + 2 * layer_height" }, "cool_min_layer_time": { "default_value": 10 }, @@ -83,9 +81,9 @@ "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)" }, - + "wall_thickness": { "value": "1.2" }, - + "retraction_amount": { "default_value": 3 }, "retraction_speed": { "default_value": 15 }, "retraction_retract_speed": { "default_value": 15 }, @@ -112,4 +110,4 @@ }, "machine_extruder_count": { "default_value": 2 } } -} \ No newline at end of file +} diff --git a/resources/definitions/cartesio.def.json b/resources/definitions/cartesio.def.json index 44f3153015..5ca891d6c5 100644 --- a/resources/definitions/cartesio.def.json +++ b/resources/definitions/cartesio.def.json @@ -5,7 +5,7 @@ "metadata": { "visible": true, "author": "Scheepers", - "manufacturer": "Cartesio bv", + "manufacturer": "MaukCC", "file_formats": "text/x-gcode", "has_machine_quality": true, @@ -14,10 +14,10 @@ "has_variant_materials": true, "has_variants": true, - "variants_name": "Nozzle size", - "preferred_variant": "*0.8*", - "preferred_material": "*pla*", - "preferred_quality": "*normal*", + "variants_name": "Tool", + "preferred_variant_name": "0.8 mm", + "preferred_material": "generic_pla", + "preferred_quality_type": "normal", "machine_extruder_trains": { @@ -44,7 +44,7 @@ "machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" }, "material_print_temp_wait": { "default_value": false }, "material_bed_temp_wait": { "default_value": false }, - "prime_tower_enable": { "default_value": true }, + "prime_tower_enable": { "default_value": false }, "prime_tower_wall_thickness": { "resolve": 0.7 }, "prime_tower_size": { "value": 24.0 }, "prime_tower_position_x": { "value": 125 }, @@ -55,15 +55,16 @@ [[215, 135], [-215, 135], [-215, 75], [215, 75]] ]}, "machine_start_gcode": { - "default_value": "\nM92 E159 ;2288 for V5 extruder\n\nM140 S{material_bed_temperature_layer_0}\nM104 S120 T1\nM104 S120 T2\nM104 S120 T3\n\nG21\nG90\nM42 S255 P13 ;chamber lights\nM42 S255 P12 ;fume extraction\nM204 S300 ;default acceleration\nM205 X10 ;default jerk\n\nM117 Homing Y ......\nG28 Y\nM117 Homing X ......\nG28 X\nM117 Homing Z ......\nG28 Z F100\nG1 Z10 F600\nG1 X70 Y20 F9000;go to wipe point\n\nM190 S{material_bed_temperature_layer_0}\n\nM117 Heating for 50 sec.\nG4 S20\nM117 Heating for 30 sec.\nG4 S20\nM117 Heating for 10 sec.\nM300 S1200 P1000\nG4 S9\n\nM117 purging nozzle....\nT0\nG92 E0;set E\nG1 E10 F100\nG92 E0\nG1 E-1 F600\n\nM117 wiping nozzle....\nG1 X1 Y24 F3000\nG1 X70 F9000\nG1 Z10 F900\n\nM104 S21 T1\nM104 S21 T2\nM104 S21 T3\n\nM117 Printing .....\n" + "default_value": "\nM92 E159 ;2288 for V5 extruder\n\nM140 S{material_bed_temperature_layer_0}\nM104 T1 S120\nM104 T2 S120\nM104 T3 S120\n\nG21\nG90\nM42 S255 P13 ;chamber lights\nM42 S255 P12 ;fume extraction\nM204 S300 ;default acceleration\nM205 X10 ;default jerk\n\nM117 Homing Y ......\nG28 Y\nM117 Homing X ......\nG28 X\nM117 Homing Z ......\nG28 Z F100\nG1 Z10 F600\nG1 X70 Y20 F9000;go to wipe point\n\nM190 S{material_bed_temperature_layer_0}\n\nM117 Heating for 50 sec.\nG4 S20\nM117 Heating for 30 sec.\nG4 S20\nM117 Heating for 10 sec.\nM300 S1200 P1000\nG4 S9\n\nM117 purging nozzle....\nT0\nG92 E0;set E\nG1 E10 F100\nG92 E0\nG1 E-1 F600\n\nM117 wiping nozzle....\nG1 X1 Y24 F3000\nG1 X70 F9000\nG1 Z10 F900\n\nM104 T1 S21\nM104 T2 S21\nM104 T3 S21\n\nM117 Printing .....\n" }, "machine_end_gcode": { - "default_value": "; -- END GCODE --\nM117 cooling down....\nM106 S255\nM140 S5\nM104 S5 T0\nM104 S5 T1\nM104 S5 T2\nM104 S5 T3\n\nG91\nG1 Z1 F900\nG90\n\nG1 X20.0 Y260.0 F6000\nG4 S7\nM84\nG4 S90\nM107\nM42 P12 S0\nM42 P13 S0\nM84\nT0\nM117 Finished.\n; -- end of GCODE --" + "default_value": "; -- END GCODE --\nM117 cooling down....\nM106 S255\nM140 S5\nM104 T0 S5\nM104 T1 S5\nM104 T2 S5\nM104 T3 S5\n\nG91\nG1 Z1 F900\nG90\n\nG1 X20.0 Y260.0 F6000\nG4 S7\nM84\nG4 S90\nM107\nM42 P12 S0\nM42 P13 S0\nM84\nT0\nM117 Finished.\n; -- end of GCODE --" }, "layer_height": { "maximum_value": "(0.8 * min(extruderValues('machine_nozzle_size')))" }, "layer_height_0": { "maximum_value": "(0.8 * min(extruderValues('machine_nozzle_size')))" }, "retraction_extra_prime_amount": { "minimum_value_warning": "-2.0" }, "optimize_wall_printing_order": { "default_value": true }, + "material_initial_print_temperature": {"maximum_value_warning": "material_print_temperature + 15" }, "machine_nozzle_heat_up_speed": {"default_value": 20}, "machine_nozzle_cool_down_speed": {"default_value": 20}, "machine_min_cool_heat_time_window": {"default_value": 5} diff --git a/resources/definitions/creality_cr10.def.json b/resources/definitions/creality_cr10.def.json index 7a58adcd4d..eb0b8c7306 100644 --- a/resources/definitions/creality_cr10.def.json +++ b/resources/definitions/creality_cr10.def.json @@ -7,7 +7,7 @@ "author": "Michael Wildermuth", "manufacturer": "Creality3D", "file_formats": "text/x-gcode", - "preferred_quality": "*Draft*" + "preferred_quality_type": "draft" }, "overrides": { "machine_width": { diff --git a/resources/definitions/dagoma_discoeasy200.def.json b/resources/definitions/dagoma_discoeasy200.def.json index 9bcc2402f2..4f0fddc41d 100644 --- a/resources/definitions/dagoma_discoeasy200.def.json +++ b/resources/definitions/dagoma_discoeasy200.def.json @@ -7,7 +7,6 @@ "author": "Dagoma", "manufacturer": "Dagoma", "file_formats": "text/x-gcode", - "icon": "icon_discoeasy200.png", "platform": "discoeasy200.stl", "platform_offset": [ 105, -59, 280] }, @@ -39,13 +38,25 @@ "default_value": 10 }, "machine_start_gcode": { - "default_value": ";Gcode by Cura\nG90 ;absolute positioning\nM106 S250 ;fan on for the palpeur\nG28 X Y\nG1 X50\nM109 S180\nG28\nM104 S{material_print_temperature_layer_0}\n;Activation palpeur\n;bloc palpeur\nG29 ;Auto level\nM107 ;start with the fan off\nG1 X100 Y20 F3000\nG1 Z0.5\nM109 S{material_print_temperature_layer_0}\nM82 ;set extruder to absolute mode\nG92 E0 ;zero the extruded length\nG1 F200 E10 ;extrude 10mm of feed stock\nG92 E0 ;zero the extruded length again\nG1 Z3\nG1 F6000" + "default_value": ";Gcode by Cura\nG90\nM106 S250\nG28 X Y\nG1 X50\nM109 S180\nG28\nM104 S{material_print_temperature_layer_0}\nG29\nM107\nG1 X100 Y20 F3000\nG1 Z0.5\nM109 S{material_print_temperature_layer_0}\nM82\nG92 E0\nG1 F200 E10\nG92 E0\nG1 Z3\nG1 F6000\n" }, "machine_end_gcode": { - "default_value": "M104 S0\nM106 S255 ;start fan full power\nM140 S0 ;heated bed heater off (if you have it)\n;Home machine\nG91 ;relative positioning\nG1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\nG1 Z+3 F3000 ;move Z up a bit and retract filament even more\nG90\nG28 X Y\n;Ventilation forcee\nM107 ;stop fan\n;Shut down motor\nM84 ;shut down motors" + "default_value": "\nM104 S0\nM106 S255\nM140 S0\nG91\nG1 E-1 F300\nG1 Z+3 F3000\nG90\nG28 X Y\nM107\nM84\n" }, "material_diameter": { "default_value": 1.75 + }, + "speed_print": { + "default_value": 60 + }, + "speed_travel": { + "value": "100" + }, + "retraction_amount": { + "default_value": 3.5 + }, + "retraction_speed": { + "default_value": 50 } } } diff --git a/resources/definitions/dagoma_neva.def.json b/resources/definitions/dagoma_neva.def.json new file mode 100644 index 0000000000..21a557ac22 --- /dev/null +++ b/resources/definitions/dagoma_neva.def.json @@ -0,0 +1,69 @@ +{ + "id": "Dagoma_neva", + "name": "Dagoma NEVA", + "version": 2, + "inherits": "fdmprinter", + "metadata": { + "visible": true, + "author": "Dagoma", + "manufacturer": "Dagoma", + "file_formats": "text/x-gcode", + "platform": "neva.stl", + "platform_offset": [ 0, 0, 0] + }, + "overrides": { + "machine_width": { + "default_value": 195.55 + }, + "machine_height": { + "default_value": 205 + }, + "machine_depth": { + "default_value": 195.55 + }, + "machine_center_is_zero": { + "default_value": true + }, + "machine_nozzle_size": { + "default_value": 0.4 + }, + "machine_head_with_fans_polygon": { + "default_value": [ + [17, 40], + [17, -70], + [-17, -70], + [17, 40] + ] + }, + "gantry_height": { + "default_value": 0 + }, + "machine_shape": { + "default_value": "elliptic" + }, + "machine_gcode_flavor": { + "default_value": "RepRap (RepRap)" + }, + "machine_start_gcode": { + "default_value": ";Gcode by Cura\nG90\nG28\nM109 S100\nG29\nM104 S{material_print_temperature_layer_0}\nG0 X0 Y-85\nG0 Z0.26\nM109 S{material_print_temperature_layer_0}\nM82\nG92 E0\nG1 F200 E6\nG92 E0\nG1 F200 E-3.5\nG0 Z0.15\nG0 X10\nG0 Z3\nG1 F6000\n" + }, + "machine_end_gcode": { + "default_value": "\nM104 S0\nM106 S255\nM140 S0\nG91\nG1 E-1 F300\nG1 Z+3 E-2 F9000\nG90\nG28\n" + }, + "material_diameter": { + "default_value": 1.75 + }, + "speed_print": { + "default_value": 40 + }, + "speed_travel": { + "default_value": 120 + }, + "retraction_amount": { + "default_value": 3.8 + }, + "retraction_speed": { + "default_value": 60 + } + } +} diff --git a/resources/definitions/fabtotum.def.json b/resources/definitions/fabtotum.def.json index 87ce11a35c..d66de07c4a 100644 --- a/resources/definitions/fabtotum.def.json +++ b/resources/definitions/fabtotum.def.json @@ -13,18 +13,18 @@ "has_machine_quality": true, "has_variants": true, "variants_name": "Head", - "preferred_variant": "*lite04*", - "preferred_material": "*fabtotum_pla*", + "preferred_variant_name": "Lite 0.4 mm", + "preferred_material": "fabtotum_pla", "supports_usb_connection": false }, "overrides": { "machine_name": { "default_value": "FABtotum Personal Fabricator" }, "machine_start_gcode": { - "default_value": ";Layer height: {layer_height}\n;Walls: {wall_thickness}\n;Fill: {infill_sparse_density}\n;Top\\Bottom Thickness: {top_bottom_thickness}\nG90 ;absolute positioning\nM82 ;set extruder to absolute mode\nG4 S1 ;1 millisecond pause to buffer the bep bep \nM728 ;FAB bep bep (start the print, go check the oozing and skirt lines adesion) \nG4 S1 ;1 second pause to reach the printer (run fast)\nG92 E0 ;zero the extruded length \nG1 F200 E35 ;slowly extrude 35mm of filament to clean the nozzle and build up extrusion pressure \nG92 E0 ;zero the extruded length again \nG1 F{speed_travel} ;Set travel speed \n;print" + "default_value": ";Layer height: {layer_height}\n;Walls: {wall_thickness}\n;Fill: {infill_sparse_density}\n;Top\\Bottom Thickness: {top_bottom_thickness}\nG90 ;absolute positioning\nM82 ;set extruder to absolute mode\nG4 S1 ;1 millisecond pause to buffer the bep bep \nM300 S2 ;FAB bep bep (start the print, go check the oozing and skirt lines adesion) \nG4 S1 ;1 second pause to reach the printer (run fast)\nG92 E0 ;zero the extruded length \nG1 F200 E35 ;slowly extrude 35mm of filament to clean the nozzle and build up extrusion pressure \nG92 E0 ;zero the extruded length again \n;print" }, "machine_end_gcode": { - "default_value": "M104 S0 ;extruder heater off\nM140 S0 ;heated bed heater off (if you have it)\nG91 ;relative positioning\nG1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\nG1 Z+0.5 E-3 X+5 Y+5 F5000 ;move Z up a bit and retract filament even more\n;end of the print\nM84 ;steppers off\nG90 ;absolute positioning\nM728 ;FAB bep bep (end print)" + "default_value": "M104 S0 ;extruder heater off\nM140 S0 ;heated bed heater off (if you have it)\nG91 ;relative positioning\nG1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\nG1 Z+0.5 E-3 X+5 Y+5 F5000 ;move Z up a bit and retract filament even more\n;end of the print\nM84 ;steppers off\nG90 ;absolute positioning\nM300 S2 ;FAB bep bep (end print)" }, "gantry_height": { "default_value": 55 }, "machine_width": { "default_value": 214 }, diff --git a/resources/definitions/fdmextruder.def.json b/resources/definitions/fdmextruder.def.json index 2b314cd6a5..3f84ed69a4 100644 --- a/resources/definitions/fdmextruder.def.json +++ b/resources/definitions/fdmextruder.def.json @@ -216,6 +216,30 @@ "enabled": false } } + }, + "material": + { + "label": "Material", + "icon": "category_material", + "description": "Material", + "type": "category", + "children": + { + "material_diameter": + { + "label": "Diameter", + "description": "Adjusts the diameter of the filament used. Match this value with the diameter of the used filament.", + "unit": "mm", + "type": "float", + "default_value": 2.85, + "minimum_value": "0.0001", + "minimum_value_warning": "0.4", + "maximum_value_warning": "3.5", + "enabled": "machine_gcode_flavor != \"UltiGCode\"", + "settable_per_mesh": false, + "settable_per_extruder": true + } + } } } } diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 5c31c74178..21ee543333 100644 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -11,8 +11,8 @@ "file_formats": "text/x-gcode;application/x-stl-ascii;application/x-stl-binary;application/x-wavefront-obj;application/x3g", "visible": false, "has_materials": true, - "preferred_material": "*generic_pla*", - "preferred_quality": "*normal*", + "preferred_material": "generic_pla", + "preferred_quality_type": "normal", "machine_extruder_trains": { "0": "fdmextruder" @@ -51,8 +51,8 @@ }, "machine_start_gcode": { - "label": "Start GCode", - "description": "Gcode commands to be executed at the very start - separated by \\n.", + "label": "Start G-code", + "description": "G-code commands to be executed at the very start - separated by \\n.", "default_value": "G28 ;Home\nG1 Z15.0 F6000 ;Move the platform down 15mm\n;Prime the extruder\nG92 E0\nG1 F200 E3\nG92 E0", "type": "str", "settable_per_mesh": false, @@ -61,8 +61,8 @@ }, "machine_end_gcode": { - "label": "End GCode", - "description": "Gcode commands to be executed at the very end - separated by \\n.", + "label": "End G-code", + "description": "G-code commands to be executed at the very end - separated by \\n.", "default_value": "M104 S0\nM140 S0\n;Retract the filament\nG92 E1\nG1 E-1 F300\nG28 X0 Y0\nM84", "type": "str", "settable_per_mesh": false, @@ -163,7 +163,7 @@ "options": { "glass": "Glass", - "aluminium": "Aluminium" + "aluminum": "Aluminum" }, "settable_per_mesh": false, "settable_per_extruder": false, @@ -211,6 +211,18 @@ "settable_per_extruder": false, "settable_per_meshgroup": false }, + "extruders_enabled_count": + { + "label": "Number of Extruders that are enabled", + "description": "Number of extruder trains that are enabled; automatically set in software", + "value": "machine_extruder_count", + "minimum_value": "1", + "maximum_value": "16", + "type": "int", + "settable_per_mesh": false, + "settable_per_extruder": false, + "settable_per_meshgroup": false + }, "machine_nozzle_tip_outer_diameter": { "label": "Outer nozzle diameter", @@ -312,8 +324,8 @@ }, "machine_gcode_flavor": { - "label": "Gcode flavour", - "description": "The type of gcode to be generated.", + "label": "G-code flavour", + "description": "The type of g-code to be generated.", "type": "enum", "options": { @@ -620,6 +632,73 @@ "settable_per_extruder": false, "settable_per_meshgroup": false }, + "machine_steps_per_mm_x": + { + "label": "Steps per Millimeter (X)", + "description": "How many steps of the stepper motor will result in one millimeter of movement in the X direction.", + "type": "int", + "default_value": 50, + "minimum_value": "0.0000001", + "settable_per_mesh": false, + "settable_per_extruder": true + }, + "machine_steps_per_mm_y": + { + "label": "Steps per Millimeter (Y)", + "description": "How many steps of the stepper motor will result in one millimeter of movement in the Y direction.", + "type": "int", + "default_value": 50, + "minimum_value": "0.0000001", + "settable_per_mesh": false, + "settable_per_extruder": true + }, + "machine_steps_per_mm_z": + { + "label": "Steps per Millimeter (Z)", + "description": "How many steps of the stepper motor will result in one millimeter of movement in the Z direction.", + "type": "int", + "default_value": 50, + "minimum_value": "0.0000001", + "settable_per_mesh": false, + "settable_per_extruder": true + }, + "machine_steps_per_mm_e": + { + "label": "Steps per Millimeter (E)", + "description": "How many steps of the stepper motors will result in one millimeter of extrusion.", + "type": "int", + "default_value": 1600, + "minimum_value": "0.0000001", + "settable_per_mesh": false, + "settable_per_extruder": true + }, + "machine_endstop_positive_direction_x": + { + "label": "X Endstop in Positive Direction", + "description": "Whether the endstop of the X axis is in the positive direction (high X coordinate) or negative (low X coordinate).", + "type": "bool", + "default_value": false, + "settable_per_mesh": false, + "settable_per_extruder": true + }, + "machine_endstop_positive_direction_y": + { + "label": "Y Endstop in Positive Direction", + "description": "Whether the endstop of the Y axis is in the positive direction (high Y coordinate) or negative (low Y coordinate).", + "type": "bool", + "default_value": false, + "settable_per_mesh": false, + "settable_per_extruder": true + }, + "machine_endstop_positive_direction_z": + { + "label": "Z Endstop in Positive Direction", + "description": "Whether the endstop of the Z axis is in the positive direction (high Z coordinate) or negative (low Z coordinate).", + "type": "bool", + "default_value": true, + "settable_per_mesh": false, + "settable_per_extruder": true + }, "machine_minimum_feedrate": { "label": "Minimum Feedrate", @@ -630,6 +709,16 @@ "settable_per_mesh": false, "settable_per_extruder": false, "settable_per_meshgroup": false + }, + "machine_feeder_wheel_diameter": + { + "label": "Feeder Wheel Diameter", + "description": "The diameter of the wheel that drives the material in the feeder.", + "unit": "mm", + "type": "float", + "default_value": 10.0, + "settable_per_mesh": false, + "settable_per_extruder": true } } }, @@ -668,20 +757,6 @@ "settable_per_mesh": false, "settable_per_extruder": false }, - "slicing_tolerance": - { - "label": "Slicing Tolerance", - "description": "How to slice layers with diagonal surfaces. The areas of a layer can be generated based on where the middle of the layer intersects the surface (Middle). Alternatively each layer can have the areas which fall inside of the volume throughout the height of the layer (Exclusive) or a layer has the areas which fall inside anywhere within the layer (Inclusive). Exclusive retains the most details, Inclusive makes for the best fit and Middle takes the least time to process.", - "type": "enum", - "options": - { - "middle": "Middle", - "exclusive": "Exclusive", - "inclusive": "Inclusive" - }, - "default_value": "middle", - "settable_per_mesh": true - }, "line_width": { "label": "Line Width", @@ -741,21 +816,6 @@ } } }, - "roofing_line_width": - { - "label": "Top Surface Skin Line Width", - "description": "Width of a single line of the areas at the top of the print.", - "unit": "mm", - "minimum_value": "0.001", - "minimum_value_warning": "0.1 + 0.4 * machine_nozzle_size", - "maximum_value_warning": "2 * machine_nozzle_size", - "default_value": 0.4, - "type": "float", - "value": "skin_line_width", - "limit_to_extruder": "roofing_extruder_nr", - "settable_per_mesh": true, - "enabled": "roofing_layer_count > 0 and top_layers > 0" - }, "skin_line_width": { "label": "Top/Bottom Line Width", @@ -916,7 +976,7 @@ "settable_per_extruder": false, "settable_per_meshgroup": true, "settable_globally": true, - "enabled": "machine_extruder_count > 1", + "enabled": "extruders_enabled_count > 1", "children": { "wall_0_extruder_nr": { @@ -929,7 +989,7 @@ "settable_per_extruder": false, "settable_per_meshgroup": true, "settable_globally": true, - "enabled": "machine_extruder_count > 1" + "enabled": "extruders_enabled_count > 1" }, "wall_x_extruder_nr": { @@ -942,7 +1002,7 @@ "settable_per_extruder": false, "settable_per_meshgroup": true, "settable_globally": true, - "enabled": "machine_extruder_count > 1" + "enabled": "extruders_enabled_count > 1" } } }, @@ -999,7 +1059,7 @@ "settable_per_extruder": false, "settable_per_meshgroup": true, "settable_globally": true, - "enabled": "machine_extruder_count > 1 and max(extruderValues('roofing_layer_count')) > 0 and max(extruderValues('top_layers')) > 0" + "enabled": "extruders_enabled_count > 1 and max(extruderValues('roofing_layer_count')) > 0 and max(extruderValues('top_layers')) > 0" }, "roofing_layer_count": { @@ -1014,34 +1074,6 @@ "settable_per_mesh": true, "enabled": "top_layers > 0" }, - "roofing_pattern": - { - "label": "Top Surface Skin Pattern", - "description": "The pattern of the top most layers.", - "type": "enum", - "options": - { - "lines": "Lines", - "concentric": "Concentric", - "zigzag": "Zig Zag" - }, - "default_value": "lines", - "value": "top_bottom_pattern", - "limit_to_extruder": "roofing_extruder_nr", - "settable_per_mesh": true, - "enabled": "roofing_layer_count > 0 and top_layers > 0" - }, - "roofing_angles": - { - "label": "Top Surface Skin Line Directions", - "description": "A list of integer line directions to use when the top surface skin layers use the lines or zig zag pattern. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the traditional default angles (45 and 135 degrees).", - "type": "[int]", - "default_value": "[ ]", - "value": "skin_angles", - "enabled": "roofing_pattern != 'concentric' and roofing_layer_count > 0 and top_layers > 0", - "limit_to_extruder": "roofing_extruder_nr", - "settable_per_mesh": true - }, "top_bottom_extruder_nr": { "label": "Top/Bottom Extruder", @@ -1052,7 +1084,7 @@ "settable_per_extruder": false, "settable_per_meshgroup": true, "settable_globally": true, - "enabled": "machine_extruder_count > 1" + "enabled": "extruders_enabled_count > 1" }, "top_bottom_thickness": { @@ -1522,7 +1554,7 @@ "settable_per_extruder": false, "settable_per_meshgroup": true, "settable_globally": true, - "enabled": "machine_extruder_count > 1" + "enabled": "extruders_enabled_count > 1" }, "infill_sparse_density": { @@ -1584,8 +1616,10 @@ "label": "Connect Infill Lines", "description": "Connect the ends where the infill pattern meets the inner wall using a line which follows the shape of the inner wall. Enabling this setting can make the infill adhere to the walls better and reduce the effects of infill on the quality of vertical surfaces. Disabling this setting reduces the amount of material used.", "type": "bool", - "default_value": true, - "enabled": "infill_pattern == 'cross' or infill_pattern == 'cross_3d'", + "default_value": false, + "value": "infill_pattern == 'cross' or infill_pattern == 'cross_3d'", + "enabled": "infill_pattern == 'grid' or infill_pattern == 'triangles' or infill_pattern == 'trihexagon' or infill_pattern == 'cubic' or infill_pattern == 'tetrahedral' or infill_pattern == 'quarter_cubic' or infill_pattern == 'cross' or infill_pattern == 'cross_3d'", + "limit_to_extruder": "infill_extruder_nr", "settable_per_mesh": true }, "infill_angles": @@ -1876,14 +1910,6 @@ "settable_per_mesh": true } } - }, - "infill_enable_travel_optimization": - { - "label": "Enable 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", - "default_value": false, - "settable_per_mesh": true } } }, @@ -1895,16 +1921,6 @@ "type": "category", "children": { - "material_flow_dependent_temperature": - { - "label": "Auto Temperature", - "description": "Change the temperature for each layer automatically with the average flow speed of that layer.", - "type": "bool", - "default_value": false, - "enabled": "machine_nozzle_temp_enabled and False", - "settable_per_mesh": false, - "settable_per_extruder": true - }, "default_material_print_temperature": { "label": "Default Printing Temperature", @@ -1979,17 +1995,6 @@ "settable_per_mesh": false, "settable_per_extruder": true }, - "material_flow_temp_graph": - { - "label": "Flow Temperature Graph", - "description": "Data linking material flow (in mm3 per second) to temperature (degrees Celsius).", - "unit": "[[mm³,°C]]", - "type": "str", - "default_value": "[[3.5,200],[7.0,240]]", - "enabled": "False and machine_nozzle_temp_enabled and material_flow_dependent_temperature", - "settable_per_mesh": false, - "settable_per_extruder": true - }, "material_extrusion_cool_down_speed": { "label": "Extrusion Cool Down Speed Modifier", @@ -2000,7 +2005,7 @@ "minimum_value": "0", "maximum_value_warning": "10.0", "maximum_value": "machine_nozzle_heat_up_speed", - "enabled": "material_flow_dependent_temperature or (machine_extruder_count > 1 and material_final_print_temperature != material_print_temperature)", + "enabled": "material_flow_dependent_temperature or (extruders_enabled_count > 1 and material_final_print_temperature != material_print_temperature)", "settable_per_mesh": false, "settable_per_extruder": true }, @@ -2105,6 +2110,19 @@ "enabled": "machine_gcode_flavor != \"UltiGCode\"", "settable_per_mesh": true }, + "material_flow_layer_0": + { + "label": "Initial Layer Flow", + "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", + "maximum_value_warning": "150", + "settable_per_mesh": true + }, "retraction_enable": { "label": "Enable Retraction", @@ -2114,7 +2132,8 @@ "settable_per_mesh": false, "settable_per_extruder": true }, - "retract_at_layer_change":{ + "retract_at_layer_change": + { "label": "Retract at Layer Change", "description": "Retract the filament when the nozzle is moving to the next layer.", "type": "bool", @@ -2144,7 +2163,7 @@ "default_value": 25, "minimum_value": "0.0001", "minimum_value_warning": "1", - "maximum_value": "machine_max_feedrate_e", + "maximum_value": "machine_max_feedrate_e if retraction_enable else float('inf')", "maximum_value_warning": "70", "enabled": "retraction_enable and machine_gcode_flavor != \"UltiGCode\"", "settable_per_mesh": false, @@ -2159,7 +2178,7 @@ "type": "float", "default_value": 25, "minimum_value": "0.0001", - "maximum_value": "machine_max_feedrate_e", + "maximum_value": "machine_max_feedrate_e if retraction_enable else float('inf')", "minimum_value_warning": "1", "maximum_value_warning": "70", "enabled": "retraction_enable and machine_gcode_flavor != \"UltiGCode\"", @@ -2175,7 +2194,7 @@ "type": "float", "default_value": 25, "minimum_value": "0.0001", - "maximum_value": "machine_max_feedrate_e", + "maximum_value": "machine_max_feedrate_e if retraction_enable else float('inf')", "minimum_value_warning": "1", "maximum_value_warning": "70", "enabled": "retraction_enable and machine_gcode_flavor != \"UltiGCode\"", @@ -2207,6 +2226,7 @@ "default_value": 1.5, "value": "line_width * 2", "minimum_value": "0", + "minimum_value_warning": "line_width * 1.5", "maximum_value_warning": "10", "enabled": "retraction_enable", "settable_per_mesh": false, @@ -2248,7 +2268,7 @@ "minimum_value": "-273.15", "minimum_value_warning": "0", "maximum_value_warning": "260", - "enabled": "machine_extruder_count > 1 and machine_nozzle_temp_enabled", + "enabled": "extruders_enabled_count > 1 and machine_nozzle_temp_enabled", "settable_per_mesh": false, "settable_per_extruder": true }, @@ -2276,7 +2296,7 @@ "default_value": 20, "minimum_value": "0.1", "minimum_value_warning": "1", - "maximum_value": "machine_max_feedrate_e", + "maximum_value": "machine_max_feedrate_e if retraction_enable else float('inf')", "maximum_value_warning": "70", "settable_per_mesh": false, "settable_per_extruder": true, @@ -2293,7 +2313,7 @@ "value": "switch_extruder_retraction_speeds", "minimum_value": "0.1", "minimum_value_warning": "1", - "maximum_value": "machine_max_feedrate_e", + "maximum_value": "machine_max_feedrate_e if retraction_enable else float('inf')", "maximum_value_warning": "70", "settable_per_mesh": false, "settable_per_extruder": true @@ -2309,7 +2329,7 @@ "value": "switch_extruder_retraction_speeds", "minimum_value": "0.1", "minimum_value_warning": "1", - "maximum_value": "machine_max_feedrate_e", + "maximum_value": "machine_max_feedrate_e if retraction_enable else float('inf')", "maximum_value_warning": "70", "settable_per_mesh": false, "settable_per_extruder": true @@ -3350,7 +3370,7 @@ "description": "After the machine switched from one extruder to the other, the build plate is lowered to create clearance between the nozzle and the print. This prevents the nozzle from leaving oozed material on the outside of a print.", "type": "bool", "default_value": true, - "enabled": "retraction_hop_enabled and machine_extruder_count > 1", + "enabled": "retraction_hop_enabled and extruders_enabled_count > 1", "settable_per_mesh": false, "settable_per_extruder": true } @@ -3522,22 +3542,14 @@ "settable_per_mesh": true, "settable_per_extruder": false }, - "support_tree_enable": - { - "label": "Tree Support", - "description": "Generate a tree-like support with branches that support your print. This may reduce material usage and print time.", - "type": "bool", - "default_value": false, - "settable_per_mesh": true, - "settable_per_extruder": false - }, "support_extruder_nr": { "label": "Support Extruder", "description": "The extruder train to use for printing the support. This is used in multi-extrusion.", "type": "extruder", "default_value": "0", - "enabled": "(support_enable or support_tree_enable) and machine_extruder_count > 1", + "value": "-1", + "enabled": "(support_enable or support_tree_enable) and extruders_enabled_count > 1", "settable_per_mesh": false, "settable_per_extruder": false, "children": { @@ -3548,7 +3560,7 @@ "type": "extruder", "default_value": "0", "value": "support_extruder_nr", - "enabled": "(support_enable or support_tree_enable) and machine_extruder_count > 1", + "enabled": "(support_enable or support_tree_enable) and extruders_enabled_count > 1", "settable_per_mesh": false, "settable_per_extruder": false }, @@ -3559,7 +3571,7 @@ "type": "extruder", "default_value": "0", "value": "support_extruder_nr", - "enabled": "(support_enable or support_tree_enable) and machine_extruder_count > 1", + "enabled": "(support_enable or support_tree_enable) and extruders_enabled_count > 1", "settable_per_mesh": false, "settable_per_extruder": false }, @@ -3570,7 +3582,7 @@ "type": "extruder", "default_value": "0", "value": "support_extruder_nr", - "enabled": "(support_enable or support_tree_enable) and machine_extruder_count > 1", + "enabled": "(support_enable or support_tree_enable) and extruders_enabled_count > 1", "settable_per_mesh": false, "settable_per_extruder": false, "children": @@ -3582,7 +3594,7 @@ "type": "extruder", "default_value": "0", "value": "support_interface_extruder_nr", - "enabled": "(support_enable or support_tree_enable) and machine_extruder_count > 1", + "enabled": "(support_enable or support_tree_enable) and extruders_enabled_count > 1", "settable_per_mesh": false, "settable_per_extruder": false }, @@ -3593,7 +3605,7 @@ "type": "extruder", "default_value": "0", "value": "support_interface_extruder_nr", - "enabled": "(support_enable or support_tree_enable) and machine_extruder_count > 1", + "enabled": "(support_enable or support_tree_enable) and extruders_enabled_count > 1", "settable_per_mesh": false, "settable_per_extruder": false } @@ -3652,6 +3664,18 @@ "settable_per_mesh": false, "settable_per_extruder": true }, + "zig_zaggify_support": + { + "label": "Connect Support Lines", + "description": "Connect the ends of the support lines together. Enabling this setting can make your support more sturdy and reduce underextrusion, but it will cost more material.", + "type": "bool", + "default_value": false, + "value": "support_pattern == 'cross'", + "enabled": "support_pattern == 'grid' or support_pattern == 'triangles' or support_pattern == 'cross'", + "limit_to_extruder": "support_infill_extruder_nr", + "settable_per_mesh": false, + "settable_per_extruder": true + }, "support_connect_zigzags": { "label": "Connect Support ZigZags", @@ -3849,110 +3873,6 @@ "limit_to_extruder": "support_infill_extruder_nr", "settable_per_mesh": false }, - "support_tree_angle": - { - "label": "Tree Support Branch Angle", - "description": "The angle of the branches. Use a lower angle to make them more vertical and more stable. Use a higher angle to be able to have more reach.", - "unit": "°", - "type": "float", - "minimum_value": "0", - "maximum_value": "90", - "maximum_value_warning": "60", - "default_value": 40, - "limit_to_extruder": "support_infill_extruder_nr", - "enabled": "support_tree_enable", - "settable_per_mesh": false, - "settable_per_extruder": true - }, - "support_tree_branch_distance": - { - "label": "Tree Support Branch Distance", - "description": "How far apart the branches need to be when they touch the model. Making this distance small will cause the tree support to touch the model at more points, causing better overhang but making support harder to remove.", - "unit": "mm", - "type": "float", - "minimum_value": "0.001", - "default_value": 4, - "limit_to_extruder": "support_infill_extruder_nr", - "enabled": "support_tree_enable", - "settable_per_mesh": true - }, - "support_tree_branch_diameter": - { - "label": "Tree Support Branch Diameter", - "description": "The diameter of the thinnest branches of tree support. Thicker branches are more sturdy. Branches towards the base will be thicker than this.", - "unit": "mm", - "type": "float", - "minimum_value": "0.001", - "minimum_value_warning": "support_line_width * 2", - "default_value": 2, - "limit_to_extruder": "support_infill_extruder_nr", - "enabled": "support_tree_enable", - "settable_per_mesh": false, - "settable_per_extruder": true - }, - "support_tree_branch_diameter_angle": - { - "label": "Tree Support Branch Diameter Angle", - "description": "The angle of the branches' diameter as they gradually become thicker towards the bottom. An angle of 0 will cause the branches to have uniform thickness over their length. A bit of an angle can increase stability of the tree support.", - "unit": "°", - "type": "float", - "minimum_value": "0", - "maximum_value": "89.9999", - "maximum_value_warning": "15", - "default_value": 5, - "limit_to_extruder": "support_infill_extruder_nr", - "enabled": "support_tree_enable", - "settable_per_mesh": false, - "settable_per_extruder": true - }, - "support_tree_collision_resolution": - { - "label": "Tree Support Collision Resolution", - "description": "Resolution to compute collisions with to avoid hitting the model. Setting this lower will produce more accurate trees that fail less often, but increases slicing time dramatically.", - "unit": "mm", - "type": "float", - "minimum_value": "0.001", - "minimum_value_warning": "support_line_width / 4", - "maximum_value_warning": "support_line_width * 2", - "default_value": 0.4, - "value": "support_line_width / 2", - "limit_to_extruder": "support_infill_extruder_nr", - "enabled": "support_tree_enable and support_tree_branch_diameter_angle > 0", - "settable_per_mesh": false, - "settable_per_extruder": true - }, - "support_tree_wall_thickness": - { - "label": "Tree Support Wall Thickness", - "description": "The thickness of the walls of the branches of tree support. Thicker walls take longer to print but don't fall over as easily.", - "unit": "mm", - "type": "float", - "minimum_value": "0", - "minimum_value_warning": "wall_line_width", - "default_value": 0.8, - "value": "support_line_width", - "limit_to_extruder": "support_infill_extruder_nr", - "enabled": "support_tree_enable", - "settable_per_mesh": false, - "settable_per_extruder": true, - "children": - { - "support_tree_wall_count": - { - "label": "Tree Support Wall Line Count", - "description": "The number of walls of the branches of tree support. Thicker walls take longer to print but don't fall over as easily.", - "type": "int", - "minimum_value": "0", - "minimum_value_warning": "1", - "default_value": 1, - "value": "round(support_tree_wall_thickness / support_line_width)", - "limit_to_extruder": "support_infill_extruder_nr", - "enabled": "support_tree_enable", - "settable_per_mesh": false, - "settable_per_extruder": true - } - } - }, "gradual_support_infill_steps": { "label": "Gradual Support Infill Steps", @@ -4355,7 +4275,8 @@ "description": "The extruder train to use for printing the skirt/brim/raft. This is used in multi-extrusion.", "type": "extruder", "default_value": "0", - "enabled": "machine_extruder_count > 1 and resolveOrValue('adhesion_type') != 'none'", + "value": "-1", + "enabled": "extruders_enabled_count > 1 and resolveOrValue('adhesion_type') != 'none'", "settable_per_mesh": false, "settable_per_extruder": false }, @@ -4926,12 +4847,23 @@ "label": "Enable Prime Tower", "description": "Print a tower next to the print which serves to prime the material after each nozzle switch.", "type": "bool", - "enabled": "machine_extruder_count > 1", + "enabled": "extruders_enabled_count > 1", "default_value": false, "resolve": "any(extruderValues('prime_tower_enable'))", "settable_per_mesh": false, "settable_per_extruder": false }, + "prime_tower_circular": + { + "label": "Circular Prime Tower", + "description": "Make the prime tower as a circular shape.", + "type": "bool", + "enabled": "resolveOrValue('prime_tower_enable')", + "default_value": true, + "resolve": "any(extruderValues('prime_tower_circular'))", + "settable_per_mesh": false, + "settable_per_extruder": false + }, "prime_tower_size": { "label": "Prime Tower Size", @@ -4955,8 +4887,9 @@ "unit": "mm³", "type": "float", "default_value": 10, + "value": "8.48 if prime_tower_circular else 10", "minimum_value": "0", - "maximum_value_warning": "resolveOrValue('prime_tower_size') ** 2 * resolveOrValue('layer_height')", + "maximum_value_warning": "round((resolveOrValue('prime_tower_size') * 0.5) ** 2 * 3.14159 * resolveOrValue('layer_height'), 2) if prime_tower_circular else resolveOrValue('prime_tower_size') ** 2 * resolveOrValue('layer_height')", "enabled": "resolveOrValue('prime_tower_enable')", "settable_per_mesh": false, "settable_per_extruder": true, @@ -4969,7 +4902,7 @@ "unit": "mm", "type": "float", "default_value": 2, - "value": "round(max(2 * prime_tower_line_width, 0.5 * (prime_tower_size - math.sqrt(max(0, prime_tower_size ** 2 - prime_tower_min_volume / layer_height)))), 3)", + "value": "round(max(2 * prime_tower_line_width, (0.5 * (prime_tower_size - math.sqrt(max(0, prime_tower_size ** 2 - 4 * prime_tower_min_volume / (3.14159 * layer_height))))) if prime_tower_circular else (0.5 * (prime_tower_size - math.sqrt(max(0, prime_tower_size ** 2 - prime_tower_min_volume / layer_height))))), 3)", "resolve": "max(extruderValues('prime_tower_wall_thickness'))", "minimum_value": "0.001", "minimum_value_warning": "2 * min(extruderValues('prime_tower_line_width')) - 0.0001", @@ -5062,7 +4995,7 @@ "description": "Enable exterior ooze shield. This will create a shell around the model which is likely to wipe a second nozzle if it's at the same height as the first nozzle.", "type": "bool", "resolve": "any(extruderValues('ooze_shield_enabled'))", - "enabled": "machine_extruder_count > 1", + "enabled": "extruders_enabled_count > 1", "default_value": false, "settable_per_mesh": false, "settable_per_extruder": false @@ -5132,23 +5065,11 @@ "meshfix_keep_open_polygons": { "label": "Keep Disconnected Faces", - "description": "Normally Cura tries to stitch up small holes in the mesh and remove parts of a layer with big holes. Enabling this option keeps those parts which cannot be stitched. This option should be used as a last resort option when everything else fails to produce proper GCode.", + "description": "Normally Cura tries to stitch up small holes in the mesh and remove parts of a layer with big holes. Enabling this option keeps those parts which cannot be stitched. This option should be used as a last resort option when everything else fails to produce proper g-code.", "type": "bool", "default_value": false, "settable_per_mesh": true }, - "meshfix_maximum_resolution": - { - "label": "Maximum Resolution", - "description": "The minimum size of a line segment after slicing. If you increase this, the mesh will have a lower resolution. This may allow the printer to keep up with the speed it has to process g-code and will increase slice speed by removing details of the mesh that it can't process anyway.", - "type": "float", - "unit": "mm", - "default_value": 0.01, - "minimum_value": "0.001", - "minimum_value_warning": "0.005", - "maximum_value_warning": "0.1", - "settable_per_mesh": true - }, "multiple_mesh_overlap": { "label": "Merged Meshes Overlap", @@ -5167,7 +5088,7 @@ "description": "Remove areas where multiple meshes are overlapping with each other. This may be used if merged dual material objects overlap with each other.", "type": "bool", "default_value": true, - "value": "machine_extruder_count > 1", + "value": "extruders_enabled_count > 1", "settable_per_mesh": false, "settable_per_extruder": false, "settable_per_meshgroup": true @@ -5214,7 +5135,7 @@ "one_at_a_time": "One at a Time" }, "default_value": "all_at_once", - "enabled": "machine_extruder_count == 1", + "enabled": "extruders_enabled_count == 1", "settable_per_mesh": false, "settable_per_extruder": false, "settable_per_meshgroup": false @@ -5359,7 +5280,7 @@ "relative_extrusion": { "label": "Relative Extrusion", - "description": "Use relative extrusion rather than absolute extrusion. Using relative E-steps makes for easier post-processing of the Gcode. However, it's not supported by all printers and it may produce very slight deviations in the amount of deposited material compared to absolute E-steps. Irrespective of this setting, the extrusion mode will always be set to absolute before any Gcode script is output.", + "description": "Use relative extrusion rather than absolute extrusion. Using relative E-steps makes for easier post-processing of the g-code. However, it's not supported by all printers and it may produce very slight deviations in the amount of deposited material compared to absolute E-steps. Irrespective of this setting, the extrusion mode will always be set to absolute before any g-code script is output.", "type": "bool", "default_value": false, "value": "machine_gcode_flavor==\"RepRap (RepRap)\"", @@ -5377,6 +5298,217 @@ "description": "experimental!", "children": { + "support_tree_enable": + { + "label": "Tree Support", + "description": "Generate a tree-like support with branches that support your print. This may reduce material usage and print time, but greatly increases slicing time.", + "type": "bool", + "default_value": false, + "settable_per_mesh": true, + "settable_per_extruder": false + }, + "support_tree_angle": + { + "label": "Tree Support Branch Angle", + "description": "The angle of the branches. Use a lower angle to make them more vertical and more stable. Use a higher angle to be able to have more reach.", + "unit": "°", + "type": "float", + "minimum_value": "0", + "maximum_value": "90", + "maximum_value_warning": "60", + "default_value": 40, + "limit_to_extruder": "support_infill_extruder_nr", + "enabled": "support_tree_enable", + "settable_per_mesh": false, + "settable_per_extruder": true + }, + "support_tree_branch_distance": + { + "label": "Tree Support Branch Distance", + "description": "How far apart the branches need to be when they touch the model. Making this distance small will cause the tree support to touch the model at more points, causing better overhang but making support harder to remove.", + "unit": "mm", + "type": "float", + "minimum_value": "0.001", + "default_value": 4, + "limit_to_extruder": "support_infill_extruder_nr", + "enabled": "support_tree_enable", + "settable_per_mesh": true + }, + "support_tree_branch_diameter": + { + "label": "Tree Support Branch Diameter", + "description": "The diameter of the thinnest branches of tree support. Thicker branches are more sturdy. Branches towards the base will be thicker than this.", + "unit": "mm", + "type": "float", + "minimum_value": "0.001", + "minimum_value_warning": "support_line_width * 2", + "default_value": 2, + "limit_to_extruder": "support_infill_extruder_nr", + "enabled": "support_tree_enable", + "settable_per_mesh": false, + "settable_per_extruder": true + }, + "support_tree_branch_diameter_angle": + { + "label": "Tree Support Branch Diameter Angle", + "description": "The angle of the branches' diameter as they gradually become thicker towards the bottom. An angle of 0 will cause the branches to have uniform thickness over their length. A bit of an angle can increase stability of the tree support.", + "unit": "°", + "type": "float", + "minimum_value": "0", + "maximum_value": "89.9999", + "maximum_value_warning": "15", + "default_value": 5, + "limit_to_extruder": "support_infill_extruder_nr", + "enabled": "support_tree_enable", + "settable_per_mesh": false, + "settable_per_extruder": true + }, + "support_tree_collision_resolution": + { + "label": "Tree Support Collision Resolution", + "description": "Resolution to compute collisions with to avoid hitting the model. Setting this lower will produce more accurate trees that fail less often, but increases slicing time dramatically.", + "unit": "mm", + "type": "float", + "minimum_value": "0.001", + "minimum_value_warning": "support_line_width / 4", + "maximum_value_warning": "support_line_width * 2", + "default_value": 0.4, + "value": "support_line_width / 2", + "limit_to_extruder": "support_infill_extruder_nr", + "enabled": "support_tree_enable and support_tree_branch_diameter_angle > 0", + "settable_per_mesh": false, + "settable_per_extruder": true + }, + "support_tree_wall_thickness": + { + "label": "Tree Support Wall Thickness", + "description": "The thickness of the walls of the branches of tree support. Thicker walls take longer to print but don't fall over as easily.", + "unit": "mm", + "type": "float", + "minimum_value": "0", + "minimum_value_warning": "wall_line_width", + "default_value": 0.8, + "value": "support_line_width", + "limit_to_extruder": "support_infill_extruder_nr", + "enabled": "support_tree_enable", + "settable_per_mesh": false, + "settable_per_extruder": true, + "children": + { + "support_tree_wall_count": + { + "label": "Tree Support Wall Line Count", + "description": "The number of walls of the branches of tree support. Thicker walls take longer to print but don't fall over as easily.", + "type": "int", + "minimum_value": "0", + "minimum_value_warning": "1", + "default_value": 1, + "value": "round(support_tree_wall_thickness / support_line_width)", + "limit_to_extruder": "support_infill_extruder_nr", + "enabled": "support_tree_enable", + "settable_per_mesh": false, + "settable_per_extruder": true + } + } + }, + "slicing_tolerance": + { + "label": "Slicing Tolerance", + "description": "How to slice layers with diagonal surfaces. The areas of a layer can be generated based on where the middle of the layer intersects the surface (Middle). Alternatively each layer can have the areas which fall inside of the volume throughout the height of the layer (Exclusive) or a layer has the areas which fall inside anywhere within the layer (Inclusive). Exclusive retains the most details, Inclusive makes for the best fit and Middle takes the least time to process.", + "type": "enum", + "options": + { + "middle": "Middle", + "exclusive": "Exclusive", + "inclusive": "Inclusive" + }, + "default_value": "middle", + "settable_per_mesh": true + }, + "roofing_line_width": + { + "label": "Top Surface Skin Line Width", + "description": "Width of a single line of the areas at the top of the print.", + "unit": "mm", + "minimum_value": "0.001", + "minimum_value_warning": "0.1 + 0.4 * machine_nozzle_size", + "maximum_value_warning": "2 * machine_nozzle_size", + "default_value": 0.4, + "type": "float", + "value": "skin_line_width", + "limit_to_extruder": "roofing_extruder_nr", + "settable_per_mesh": true, + "enabled": "roofing_layer_count > 0 and top_layers > 0" + }, + "roofing_pattern": + { + "label": "Top Surface Skin Pattern", + "description": "The pattern of the top most layers.", + "type": "enum", + "options": + { + "lines": "Lines", + "concentric": "Concentric", + "zigzag": "Zig Zag" + }, + "default_value": "lines", + "value": "top_bottom_pattern", + "limit_to_extruder": "roofing_extruder_nr", + "settable_per_mesh": true, + "enabled": "roofing_layer_count > 0 and top_layers > 0" + }, + "roofing_angles": + { + "label": "Top Surface Skin Line Directions", + "description": "A list of integer line directions to use when the top surface skin layers use the lines or zig zag pattern. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the traditional default angles (45 and 135 degrees).", + "type": "[int]", + "default_value": "[ ]", + "value": "skin_angles", + "enabled": "roofing_pattern != 'concentric' and roofing_layer_count > 0 and top_layers > 0", + "limit_to_extruder": "roofing_extruder_nr", + "settable_per_mesh": true + }, + "infill_enable_travel_optimization": + { + "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", + "default_value": false, + "settable_per_mesh": true + }, + "material_flow_dependent_temperature": + { + "label": "Auto Temperature", + "description": "Change the temperature for each layer automatically with the average flow speed of that layer.", + "type": "bool", + "default_value": false, + "enabled": "machine_nozzle_temp_enabled and False", + "settable_per_mesh": false, + "settable_per_extruder": true + }, + "material_flow_temp_graph": + { + "label": "Flow Temperature Graph", + "description": "Data linking material flow (in mm3 per second) to temperature (degrees Celsius).", + "unit": "[[mm³,°C]]", + "type": "str", + "default_value": "[[3.5,200],[7.0,240]]", + "enabled": "False and machine_nozzle_temp_enabled and material_flow_dependent_temperature", + "settable_per_mesh": false, + "settable_per_extruder": true + }, + "meshfix_maximum_resolution": + { + "label": "Maximum Resolution", + "description": "The minimum size of a line segment after slicing. If you increase this, the mesh will have a lower resolution. This may allow the printer to keep up with the speed it has to process g-code and will increase slice speed by removing details of the mesh that it can't process anyway.", + "type": "float", + "unit": "mm", + "default_value": 0.01, + "minimum_value": "0.001", + "minimum_value_warning": "0.005", + "maximum_value_warning": "0.1", + "settable_per_mesh": true + }, "support_skip_some_zags": { "label": "Break Up Support In Chunks", @@ -6188,6 +6320,258 @@ "settable_per_mesh": false, "settable_per_extruder": false, "settable_per_meshgroup": false + }, + "bridge_settings_enabled": + { + "label": "Enable Bridge Settings", + "description": "Detect bridges and modify print speed, flow and fan settings while bridges are printed.", + "type": "bool", + "default_value": false, + "settable_per_mesh": true, + "settable_per_extruder": false, + "settable_per_meshgroup": false + }, + "bridge_wall_min_length": + { + "label": "Minimum Bridge Wall Length", + "description": "Unsupported walls shorter than this will be printed using the normal wall settings. Longer unsupported walls will be printed using the bridge wall settings.", + "unit": "mm", + "type": "float", + "minimum_value": "0", + "default_value": 5, + "enabled": "bridge_settings_enabled", + "settable_per_mesh": false, + "settable_per_extruder": true + }, + "bridge_skin_support_threshold": + { + "label": "Bridge Skin Support Threshold", + "description": "If a skin region is supported for less than this percentage of its area, print it using the bridge settings. Otherwise it is printed using the normal skin settings.", + "unit": "%", + "default_value": 50, + "type": "float", + "minimum_value": "0", + "maximum_value": "100", + "enabled": "bridge_settings_enabled", + "settable_per_mesh": true + }, + "bridge_wall_max_overhang": + { + "label": "Bridge Wall Max Overhang", + "description": "The maximum allowed width of the region of air below a wall line before the wall is printed using bridge settings. Expressed as a percentage of the wall line width. When the air gap is wider than this, the wall line is printed using the bridge settings. Otherwise, the wall line is printed using the normal settings. The lower the value, the more likely it is that overhung wall lines will be printed using bridge settings.", + "unit": "%", + "default_value": 100, + "type": "float", + "minimum_value": "0", + "maximum_value": "100", + "enabled": "bridge_settings_enabled", + "settable_per_mesh": true + }, + "bridge_wall_coast": + { + "label": "Bridge Wall Coasting", + "description": "This controls the distance the extruder should coast immediately before a bridge wall begins. Coasting before the bridge starts can reduce the pressure in the nozzle and may produce a flatter bridge.", + "unit": "%", + "default_value": 100, + "type": "float", + "minimum_value": "0", + "maximum_value": "500", + "enabled": "bridge_settings_enabled", + "settable_per_mesh": false + }, + "bridge_wall_speed": + { + "label": "Bridge Wall Speed", + "description": "The speed at which the bridge walls are printed.", + "unit": "mm/s", + "type": "float", + "minimum_value": "cool_min_speed", + "maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2)", + "maximum_value_warning": "300", + "default_value": 15, + "value": "max(cool_min_speed, speed_wall_0 / 2)", + "enabled": "bridge_settings_enabled", + "settable_per_mesh": true + }, + "bridge_wall_material_flow": + { + "label": "Bridge Wall Flow", + "description": "When printing bridge walls, the amount of material extruded is multiplied by this value.", + "unit": "%", + "default_value": 50, + "type": "float", + "minimum_value": "5", + "minimum_value_warning": "50", + "maximum_value_warning": "150", + "enabled": "bridge_settings_enabled", + "settable_per_mesh": true + }, + "bridge_skin_speed": + { + "label": "Bridge Skin Speed", + "description": "The speed at which bridge skin regions are printed.", + "unit": "mm/s", + "type": "float", + "minimum_value": "cool_min_speed", + "maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2)", + "maximum_value_warning": "300", + "default_value": 15, + "value": "max(cool_min_speed, speed_topbottom / 2)", + "enabled": "bridge_settings_enabled", + "settable_per_mesh": true + }, + "bridge_skin_material_flow": + { + "label": "Bridge Skin Flow", + "description": "When printing bridge skin regions, the amount of material extruded is multiplied by this value.", + "unit": "%", + "default_value": 60, + "type": "float", + "minimum_value": "5", + "minimum_value_warning": "50", + "maximum_value_warning": "150", + "enabled": "bridge_settings_enabled", + "settable_per_mesh": true + }, + "bridge_skin_density": + { + "label": "Bridge Skin Density", + "description": "The density of the bridge skin layer. Values less than 100 will increase the gaps between the skin lines.", + "unit": "%", + "default_value": 100, + "type": "float", + "minimum_value": "5", + "maximum_value": "100", + "minimum_value_warning": "20", + "enabled": "bridge_settings_enabled", + "settable_per_mesh": true + }, + "bridge_fan_speed": + { + "label": "Bridge Fan Speed", + "description": "Percentage fan speed to use when printing bridge walls and skin.", + "unit": "%", + "minimum_value": "0", + "maximum_value": "100", + "default_value": 100, + "type": "float", + "enabled": "bridge_settings_enabled", + "settable_per_mesh": true + }, + "bridge_enable_more_layers": + { + "label": "Bridge Has Multiple Layers", + "description": "If enabled, the second and third layers above the air are printed using the following settings. Otherwise, those layers are printed using the normal settings.", + "type": "bool", + "default_value": true, + "enabled": "bridge_settings_enabled", + "settable_per_mesh": true + }, + "bridge_skin_speed_2": + { + "label": "Bridge Second Skin Speed", + "description": "Print speed to use when printing the second bridge skin layer.", + "unit": "mm/s", + "type": "float", + "minimum_value": "cool_min_speed", + "maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2)", + "maximum_value_warning": "300", + "default_value": 25, + "value": "bridge_skin_speed", + "enabled": "bridge_settings_enabled and bridge_enable_more_layers", + "settable_per_mesh": true + }, + "bridge_skin_material_flow_2": + { + "label": "Bridge Second Skin Flow", + "description": "When printing the second bridge skin layer, the amount of material extruded is multiplied by this value.", + "unit": "%", + "default_value": 100, + "type": "float", + "minimum_value": "5", + "maximum_value": "500", + "minimum_value_warning": "50", + "maximum_value_warning": "150", + "enabled": "bridge_settings_enabled and bridge_enable_more_layers", + "settable_per_mesh": true + }, + "bridge_skin_density_2": + { + "label": "Bridge Second Skin Density", + "description": "The density of the second bridge skin layer. Values less than 100 will increase the gaps between the skin lines.", + "unit": "%", + "default_value": 75, + "type": "float", + "minimum_value": "5", + "maximum_value": "100", + "minimum_value_warning": "20", + "enabled": "bridge_settings_enabled and bridge_enable_more_layers", + "settable_per_mesh": true + }, + "bridge_fan_speed_2": + { + "label": "Bridge Second Skin Fan Speed", + "description": "Percentage fan speed to use when printing the second bridge skin layer.", + "unit": "%", + "minimum_value": "0", + "maximum_value": "100", + "default_value": 0, + "type": "float", + "enabled": "bridge_settings_enabled and bridge_enable_more_layers", + "settable_per_mesh": true + }, + "bridge_skin_speed_3": + { + "label": "Bridge Third Skin Speed", + "description": "Print speed to use when printing the third bridge skin layer.", + "unit": "mm/s", + "type": "float", + "minimum_value": "cool_min_speed", + "maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2)", + "maximum_value_warning": "300", + "default_value": 15, + "value": "bridge_skin_speed", + "enabled": "bridge_settings_enabled and bridge_enable_more_layers", + "settable_per_mesh": true + }, + "bridge_skin_material_flow_3": + { + "label": "Bridge Third Skin Flow", + "description": "When printing the third bridge skin layer, the amount of material extruded is multiplied by this value.", + "unit": "%", + "default_value": 110, + "type": "float", + "minimum_value": "5", + "maximum_value": "500", + "minimum_value_warning": "50", + "maximum_value_warning": "150", + "enabled": "bridge_settings_enabled and bridge_enable_more_layers", + "settable_per_mesh": true + }, + "bridge_skin_density_3": + { + "label": "Bridge Third Skin Density", + "description": "The density of the third bridge skin layer. Values less than 100 will increase the gaps between the skin lines.", + "unit": "%", + "default_value": 80, + "type": "float", + "minimum_value": "5", + "maximum_value": "100", + "minimum_value_warning": "20", + "enabled": "bridge_settings_enabled and bridge_enable_more_layers", + "settable_per_mesh": true + }, + "bridge_fan_speed_3": + { + "label": "Bridge Third Skin Fan Speed", + "description": "Percentage fan speed to use when printing the third bridge skin layer.", + "unit": "%", + "minimum_value": "0", + "maximum_value": "100", + "default_value": 0, + "type": "float", + "enabled": "bridge_settings_enabled and bridge_enable_more_layers", + "settable_per_mesh": true } } }, diff --git a/resources/definitions/gmax15plus.def.json b/resources/definitions/gmax15plus.def.json new file mode 100644 index 0000000000..897d492bb2 --- /dev/null +++ b/resources/definitions/gmax15plus.def.json @@ -0,0 +1,52 @@ +{ + "id": "gmax15plus", + "version": 2, + "name": "gMax 1.5 Plus", + "inherits": "fdmprinter", + "metadata": { + "visible": true, + "author": "gcreate", + "manufacturer": "gcreate", + "category": "Other", + "file_formats": "text/x-gcode", + "platform": "gmax_1-5_xt-plus_s3d_full model_150707.stl", + "has_machine_quality": true, + "has_variants": true, + "variants_name": "Hotend", + "preferred_variant_name": "0.5mm E3D (Default)" + }, + + "overrides": { + "machine_extruder_count": { "default_value": 1 }, + "machine_name": { "default_value": "gMax 1.5 Plus" }, + "machine_heated_bed": { "default_value": false }, + "machine_width": { "default_value": 406 }, + "machine_depth": { "default_value": 406 }, + "machine_height": { "default_value": 533 }, + "machine_center_is_zero": { "default_value": false }, + "material_diameter": { "default_value": 1.75 }, + "machine_nozzle_size": { "default_value": 0.5 }, + "layer_height": { "default_value": 0.2 }, + "layer_height_0": { "default_value": 0.3 }, + "retraction_amount": { "default_value": 1 }, + "retraction_speed": { "default_value": 70}, + "adhesion_type": { "default_value": "skirt" }, + "gantry_height": { "default_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 }, + "machine_max_acceleration_e": { "default_value": 10000 }, + "machine_max_jerk_xy": { "default_value": 8 }, + "machine_max_jerk_z": { "default_value": 0.4 }, + "machine_max_jerk_e": { "default_value": 5.0 }, + "machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" }, + "machine_start_gcode": { "default_value": "G21 ;metric values\nG90 ;absolute positioning\nM82 ;set extruder to absolute mode\nM107 ;start with the fan off\nG28 X0 Y0 ;move X/Y to min endstops\nG28 ;Home X/Y/Z\nG29 ; Bed level\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 } + } +} diff --git a/resources/definitions/gmax15plus_dual.def.json b/resources/definitions/gmax15plus_dual.def.json new file mode 100644 index 0000000000..8c57c8af63 --- /dev/null +++ b/resources/definitions/gmax15plus_dual.def.json @@ -0,0 +1,56 @@ +{ + "id": "gmax15plus_dual", + "version": 2, + "name": "gMax 1.5 Plus Dual Extruder", + "inherits": "fdmprinter", + "metadata": { + "visible": true, + "author": "GTL_180109", + "manufacturer": "gCreate", + "category": "Other", + "file_formats": "text/x-gcode", + "platform": "gmax_1-5_xt-plus_s3d_full model_150707.stl", + "has_variants": true, + "has_machine_quality": true, + "variants_name": "Hotend", + "preferred_variant_name": "0.5mm E3D (Default)", + "machine_extruder_trains": { + "0": "gmax15plus_dual_extruder_0", + "1": "gmax15plus_dual_extruder_1" + } + }, + + "overrides": { + "machine_name": { "default_value": "gMax 1.5 Plus Dual Extruder" }, + "machine_extruder_count": { "default_value": 2 }, + "machine_heated_bed": { "default_value": false }, + "machine_width": { "default_value": 406 }, + "machine_depth": { "default_value": 406 }, + "machine_height": { "default_value": 533 }, + "machine_center_is_zero": { "default_value": false }, + "material_diameter": { "default_value": 1.75 }, + "machine_nozzle_size": { "default_value": 0.5 }, + "layer_height": { "default_value": 0.2 }, + "layer_height_0": { "default_value": 0.3 }, + "retraction_amount": { "default_value": 1 }, + "retraction_speed": { "default_value": 70}, + "adhesion_type": { "default_value": "skirt" }, + "gantry_height": { "default_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 }, + "machine_max_acceleration_e": { "default_value": 10000 }, + "machine_max_jerk_xy": { "default_value": 8 }, + "machine_max_jerk_z": { "default_value": 0.4 }, + "machine_max_jerk_e": { "default_value": 5.0 }, + "machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" }, + "machine_start_gcode": { "default_value": "G21 ;metric values\nG90 ;absolute positioning\nM82 ;set extruder to absolute mode\nM107 ;start with the fan off\nG28 X0 Y0 ;move X/Y to min endstops\nG28 ;Home X/Y/Z\nG29 ; Bed level\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 } + } +} diff --git a/resources/definitions/imade3d_jellybox.def.json b/resources/definitions/imade3d_jellybox.def.json index 11df730408..b234e4b2cd 100644 --- a/resources/definitions/imade3d_jellybox.def.json +++ b/resources/definitions/imade3d_jellybox.def.json @@ -9,9 +9,8 @@ "platform": "imade3d_jellybox_platform.stl", "platform_offset": [ 0, -0.3, 0], "file_formats": "text/x-gcode", - "preferred_variant": "*0.4*", - "preferred_material": "*generic_pla*", - "preferred_quality": "*fast*", + "preferred_variant_name": "0.4 mm", + "preferred_quality_type": "fast", "has_materials": true, "has_variants": true, "has_machine_materials": true, diff --git a/resources/definitions/malyan_m180.def.json b/resources/definitions/malyan_m180.def.json index 5e0a6038dd..c1a424f0c9 100644 --- a/resources/definitions/malyan_m180.def.json +++ b/resources/definitions/malyan_m180.def.json @@ -25,8 +25,7 @@ "default_value": true }, "machine_nozzle_size": { - "default_value": 0.4, - "minimum_value": "0.001" + "default_value": 0.4 }, "machine_head_with_fans_polygon": { "default_value": [ @@ -36,6 +35,21 @@ [ 18, 35 ] ] }, + "machine_max_feedrate_z": { + "default_value": 400 + }, + "steps_per_mm_x": { + "default_value": 93 + }, + "steps_per_mm_y": { + "default_value": 93 + }, + "steps_per_mm_z": { + "default_value": 1600 + }, + "steps_per_mm_e": { + "default_value": 92 + }, "gantry_height": { "default_value": 55 }, diff --git a/resources/definitions/malyan_m200.def.json b/resources/definitions/malyan_m200.def.json index 9aae3a5244..a3f4f81ecf 100644 --- a/resources/definitions/malyan_m200.def.json +++ b/resources/definitions/malyan_m200.def.json @@ -11,7 +11,7 @@ "platform": "malyan_m200_platform.stl", "has_machine_quality": true, "has_materials": true, - "preferred_quality": "*normal*", + "preferred_quality_type": "normal", "supports_usb_connection": true, "visible": true, "first_start_actions": ["MachineSettingsAction"], @@ -51,7 +51,7 @@ "machine_height": { "default_value": 120 }, "machine_heated_bed": { "default_value": true }, "machine_center_is_zero": { "default_value": false }, - "material_diameter": { "value": 1.75 }, + "material_diameter": { "default_value": 1.75 }, "machine_nozzle_size": { "default_value": 0.4, "minimum_value": 0.15 diff --git a/resources/definitions/monoprice_select_mini_v2.def.json b/resources/definitions/monoprice_select_mini_v2.def.json index 87014c136b..99bb7ef50a 100644 --- a/resources/definitions/monoprice_select_mini_v2.def.json +++ b/resources/definitions/monoprice_select_mini_v2.def.json @@ -10,7 +10,7 @@ "file_formats": "text/x-gcode", "has_machine_quality": true, "has_materials": true, - "preferred_quality": "*normal*", + "preferred_quality_type": "normal", "visible": true }, diff --git a/resources/definitions/peopoly_moai.def.json b/resources/definitions/peopoly_moai.def.json index 78aca31dae..5a3cbddd14 100644 --- a/resources/definitions/peopoly_moai.def.json +++ b/resources/definitions/peopoly_moai.def.json @@ -136,7 +136,7 @@ }, "material_diameter": { "enabled": false, - "value": "1.75" + "default_value": 1.75 }, "cool_fan_enabled": { "enabled": false, diff --git a/resources/definitions/printrbot_simple_makers_kit.def.json b/resources/definitions/printrbot_simple_makers_kit.def.json new file mode 100644 index 0000000000..e2afd57826 --- /dev/null +++ b/resources/definitions/printrbot_simple_makers_kit.def.json @@ -0,0 +1,38 @@ +{ + "version": 2, + "name": "Printrbot Simple Maker's Kit (1405)", + "inherits": "fdmprinter", + "metadata": { + "visible": true, + "author": "Timur Tabi", + "manufacturer": "Printrbot", + "file_formats": "text/x-gcode" + }, + + "overrides": { + "machine_name": { "default_value": "Printrbot Simple Maker's Kit (1405)" }, + "machine_heated_bed": { "default_value": false }, + "machine_width": { "default_value": 100 }, + "machine_depth": { "default_value": 100 }, + "machine_height": { "default_value": 115 }, + "material_diameter": { "default_value": 1.75 }, + "machine_nozzle_size": { "default_value": 0.4 }, + "machine_head_with_fans_polygon": { + "default_value": [ + [-40, 1000], + [-40, -10], + [60, 1000], + [60, -10] + ] + }, + "gantry_height": { "default_value": 1000 }, + "machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" }, + + "machine_start_gcode": { + "default_value": "G21 ;metric values\nG90 ;absolute positioning\nM82 ;set extruder to absolute mode\nM107 ;start with the fan off\nG28 X0 Y0 ;home X/Y\nG28 Z0 ;home Z\nG92 E0 ;zero the extruded length\nG29 ;initiate auto bed leveling sequence" + }, + "machine_end_gcode": { + "default_value": "M104 S0 ;extruder heater off\nM140 S0 ;heated bed heater off (if you have it)\nM106 S0 ;fan off\nG91 ;relative positioning\nG1 E-1 F300 ;retract the filament a bit\nG1 Z+1 E-5 F9000 ;move Z up a bit and retract even more\nG28 X0 Y0 ;home X/Y, so the head is out of the way\nM84 ;steppers off\nG90 ;absolute positioning" + } + } +} diff --git a/resources/definitions/seemecnc_artemis.def.json b/resources/definitions/seemecnc_artemis.def.json new file mode 100644 index 0000000000..88a1b28de6 --- /dev/null +++ b/resources/definitions/seemecnc_artemis.def.json @@ -0,0 +1,43 @@ +{ + "version": 2, + "name": "SeeMeCNC Artemis", + "inherits": "fdmprinter", + "metadata": { + "visible": true, + "author": "PouncingIguana, JJ", + "manufacturer": "SeeMeCNC", + "file_formats": "text/x-gcode", + "icon": "icon_ultimaker2", + "platform": "artemis_platform.stl", + "has_materials": true + }, + + "overrides": { + "layer_height": { "default_value": 0.1618 }, + "layer_height_0": { "default_value": 0.2 }, + "machine_center_is_zero": { "default_value": true }, + "machine_depth": { "default_value": 290 }, + "machine_gcode_flavor": { "default_value": "RepRap (RepRap)" }, + "machine_heated_bed": { "default_value": true }, + "machine_height": { "default_value": 530 }, + "machine_max_feedrate_z": { "default_value": 400 }, + "machine_name": { "default_value": "Artemis" }, + "machine_nozzle_size": { "default_value": 0.5 }, + "machine_shape": { "default_value": "elliptic" }, + "machine_width": { "default_value": 290 }, + "relative_extrusion": { "default_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" + }, + "machine_end_gcode": { + "default_value": "M203 Z24000\nM104 S0\nM140 S0\nM107\nG28\nM84" + } + } +} diff --git a/resources/definitions/seemecnc_v32.def.json b/resources/definitions/seemecnc_v32.def.json new file mode 100644 index 0000000000..5932403bc5 --- /dev/null +++ b/resources/definitions/seemecnc_v32.def.json @@ -0,0 +1,43 @@ +{ + "version": 2, + "name": "SeeMeCNC Rostock Max V3.2", + "inherits": "fdmprinter", + "metadata": { + "visible": true, + "author": "PouncingIguana, JJ", + "manufacturer": "SeeMeCNC", + "file_formats": "text/x-gcode", + "icon": "icon_ultimaker2", + "platform": "rostock_platform.stl", + "has_materials": true + }, + + "overrides": { + "layer_height": { "default_value": 0.1618 }, + "layer_height_0": { "default_value": 0.2 }, + "machine_center_is_zero": { "default_value": true }, + "machine_depth": { "default_value": 265 }, + "machine_gcode_flavor": { "default_value": "RepRap (RepRap)" }, + "machine_heated_bed": { "default_value": true }, + "machine_height": { "default_value": 395 }, + "machine_max_feedrate_z": { "default_value": 300 }, + "machine_name": { "default_value": "Rostock Max V3.2" }, + "machine_nozzle_size": { "default_value": 0.5 }, + "machine_shape": { "default_value": "elliptic" }, + "machine_width": { "default_value": 265 }, + "relative_extrusion": { "default_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" + }, + "machine_end_gcode": { + "default_value": "M203 Z24000\nM104 S0\nM140 S0\nM107\nG28\nM84" + } + } +} diff --git a/resources/definitions/tevo_blackwidow.def.json b/resources/definitions/tevo_blackwidow.def.json index 04cadfb160..22f7095e17 100644 --- a/resources/definitions/tevo_blackwidow.def.json +++ b/resources/definitions/tevo_blackwidow.def.json @@ -11,7 +11,7 @@ "has_materials": false, "has_machine_quality": true, "platform": "tevo_blackwidow.stl", - "preferred_quality": "*normal*" + "preferred_quality_type": "normal" }, "overrides": { diff --git a/resources/definitions/tevo_tarantula.def.json b/resources/definitions/tevo_tarantula.def.json index a9f9cefff2..c3bfb38192 100644 --- a/resources/definitions/tevo_tarantula.def.json +++ b/resources/definitions/tevo_tarantula.def.json @@ -2,7 +2,8 @@ "version": 2, "name": "Tevo Tarantula", "inherits": "fdmprinter", - "metadata": { + "metadata": + { "visible": true, "author": "TheAssassin", "manufacturer": "Tevo", @@ -11,62 +12,39 @@ "platform": "prusai3_platform.stl" }, - "overrides": { - "machine_name": { - "default_value": "Tevo Tarantula" - }, - "machine_heated_bed": { - "default_value": true - }, - "machine_width": { - "default_value": 200 - }, - "machine_height": { - "default_value": 200 - }, - "machine_depth": { - "default_value": 200 - }, - "machine_center_is_zero": { - "default_value": false - }, - "machine_nozzle_size": { - "default_value": 0.4 - }, - "material_diameter": { - "default_value": 1.75 - }, - "machine_head_polygon": { - "default_value": [ + "overrides": + { + "machine_name": { "default_value": "Tevo Tarantula" }, + "machine_heated_bed": { "default_value": true }, + "machine_width": { "default_value": 200 }, + "machine_height": { "default_value": 200 }, + "machine_depth": { "default_value": 200 }, + "machine_center_is_zero": { "default_value": false }, + "machine_nozzle_size": { "default_value": 0.4 }, + "material_diameter": { "default_value": 1.75 }, + "machine_head_polygon": + { + "default_value": + [ [-75, -18], [-75, 35], [18, 35], [18, -18] ] }, - "gantry_height": { - "default_value": 55 - }, - "machine_gcode_flavor": { - "default_value": "RepRap (Marlin/Sprinter)" - }, - "machine_acceleration": { - "default_value": 500 - }, - "machine_max_jerk_xy": { - "default_value": 4.0 - }, - "machine_max_jerk_z": { - "default_value": 0.2 - }, - "machine_max_jerk_e": { - "default_value": 2.5 - }, - "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..." - }, - "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\nG90 ;absolute positioning\nG1 X0 Y200 F3600 ;move extruder out of the way by moving the baseplate to the front for easier access to printed object\nM84 ;steppers off" - } + "gantry_height": { "default_value": 55 }, + "machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" }, + "machine_acceleration": { "default_value": 2650 }, + "machine_max_jerk_xy": { "default_value": 15.0 }, + "machine_max_jerk_z": { "default_value": 0.4 }, + "machine_max_jerk_e": { "default_value": 5 }, + "machine_max_feedrate_x": { "default_value": 255 }, + "machine_max_feedrate_y": { "default_value": 225 }, + "machine_max_feedrate_z": { "default_value": 3 }, + "machine_max_acceleration_x": { "default_value": 2620 }, + "machine_max_acceleration_y": { "default_value": 2650 }, + "acceleration_print": { "default_value": 2650 }, + "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..." }, + "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\nG90 ;absolute positioning\nG1 X0 Y200 F3600 ;move extruder out of the way by moving the baseplate to the front for easier access to printed object\nM84 ;steppers off" } } } diff --git a/resources/definitions/ubuild-3d_mr_bot_280.def.json b/resources/definitions/ubuild-3d_mr_bot_280.def.json new file mode 100644 index 0000000000..4febdcd350 --- /dev/null +++ b/resources/definitions/ubuild-3d_mr_bot_280.def.json @@ -0,0 +1,49 @@ +{ + "id": "ubuild-3d_mr_bot_280", + "version": 2, + "name": "uBuild-3D Mr Bot 280", + "inherits": "fdmprinter", + "metadata": { + "visible": true, + "author": "uBuild-3D", + "manufacturer": "uBuild-3D", + "category": "Other", + "file_formats": "text/x-gcode", + "icon": "icon_uBuild-3D", + "platform": "mr_bot_280_platform.stl", + "has_materials": true, + "preferred_quality_type": "draft" + }, + + "overrides": { + "machine_name": { "default_value": "Mr Bot 280" }, + "machine_heated_bed": { "default_value": true }, + "machine_width": { "default_value": 275 }, + "machine_height": { "default_value": 275 }, + "machine_depth": { "default_value": 275 }, + "machine_center_is_zero": { "default_value": false }, + "material_diameter": { "default_value": 1.75 }, + "material_bed_temperature": { "default_value": 70 }, + "machine_nozzle_size": { "default_value": 0.4 }, + "layer_height_0": { "default_value": 0.1 }, + "retraction_amount": { "default_value": 2 }, + "retraction_speed": { "default_value": 50 }, + "retraction_retract_speed": { "default_value": 50 }, + "retraction_prime_speed": { "default_value": 30 }, + "adhesion_type": { "default_value": "skirt" }, + "machine_nozzle_heat_up_speed": { "default_value": 2 }, + "machine_nozzle_cool_down_speed": { "default_value": 2 }, + "machine_head_with_fans_polygon": { "default_value": [[-20,20],[10,10],[10,10],[10,10]] }, + "gantry_height": { "default_value": 275 }, + "machine_max_feedrate_z": { "default_value": 15 }, + "machine_max_feedrate_e": { "default_value": 60 }, + "machine_max_acceleration_z": { "default_value": 1000 }, + "machine_acceleration": { "default_value": 2000 }, + "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)" }, + "machine_start_gcode": { "default_value": "G21 ; set units to millimeters\nG90 ; use absolute positioning\nM82 ; absolute extrusion mode\nM140 S{material_bed_temperature} ; set bed temp\nM104 S{material_print_temperature} ; set extruder temp\nG28 ; home X, Y and Z\nG29 ; probe sequence (for auto-leveling)\nG1 Z15 F600 ; go to Z15 position\nG1 X0 Y-20 F10000 ; go to X0 Y-20 position\nM190 S{material_bed_temperature} ; wait for bed temp\nM109 S{material_print_temperature} ; wait for extruder temp\nG92 E0 ; reset extruder distance position\nG1 E25 F100 ; extrude 25mm of material\nG92 E0 ; reset extruder distance position\nM117 Printing..." }, + "machine_end_gcode": { "default_value": "M400 ; wait for moves to finish\nG92 Z0 E0 ; reset Z position\nG1 E-2 F9000 ; retract material\nG1 Z2 ; get extruder out of the way\nM104 S0 ; turn off extruder\nG1 Y285 F3000 ; present finished print\nM140 S0 ; turn off bed\nM84 ; disable motors\nM117 Print complete" } + } +} diff --git a/resources/definitions/ultimaker2.def.json b/resources/definitions/ultimaker2.def.json index 038071574f..33b48116be 100644 --- a/resources/definitions/ultimaker2.def.json +++ b/resources/definitions/ultimaker2.def.json @@ -20,12 +20,10 @@ "overrides": { "machine_name": { "default_value": "Ultimaker 2" }, "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\\nG28 Z0 ;move Z to bottom endstops\\nG28 X0 Y0 ;move X/Y to endstops\\nG1 X15 Y0 F4000 ;move X/Y to front of printer\\nG1 Z15.0 F9000 ;move the platform to 15mm\\nG92 E0 ;zero the extruded length\\nG1 F200 E10 ;extrude 10 mm of feed stock\\nG92 E0 ;zero the extruded length again\\nG1 F9000\\n;Put printing message on LCD screen\\nM117 Printing...\"" }, "machine_end_gcode" : { - "default_value": "", - "value": "\"\" if machine_gcode_flavor == \"UltiGCode\" else \"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\"" + "value": "\";Version _2.6 of the firmware can abort the print too early if the file ends\\n;too soon. However if the file hasn't ended yet because there are comments at\\n;the end of the file, it won't abort yet. Therefore we have to put at least 512\\n;bytes at the end of the g-code so that the file is not yet finished by the\\n;time that the motion planner gets flushed. With firmware version _3.3 this\\n;should be fixed, so this comment wouldn't be necessary any more. Now we have\\n;to pad this text to make precisely 512 bytes.\" if machine_gcode_flavor == \"UltiGCode\" else \"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\\n;Version _2.6 of the firmware can abort the print too early if the file ends\\n;too soon. However if the file hasn't ended yet because there are comments at\\n;the end of the file, it won't abort yet. Therefore we have to put at least 512\\n;bytes at the end of the g-code so that the file is not yet finished by the\\n;time that the motion planner gets flushed. With firmware version _3.3 this\\n;should be fixed, so this comment wouldn't be necessary any more. Now we have\\n;to pad this text to make precisely 512 bytes.\"" }, "machine_width": { "default_value": 223 diff --git a/resources/definitions/ultimaker2_plus.def.json b/resources/definitions/ultimaker2_plus.def.json index 58833904d2..935bf5b6c0 100644 --- a/resources/definitions/ultimaker2_plus.def.json +++ b/resources/definitions/ultimaker2_plus.def.json @@ -9,7 +9,7 @@ "file_formats": "text/x-gcode", "platform": "ultimaker2_platform.obj", "platform_texture": "Ultimaker2Plusbackplate.png", - "preferred_variant": "*0.4*", + "preferred_variant_name": "0.4 mm", "has_variants": true, "has_materials": true, "has_machine_materials": true, diff --git a/resources/definitions/ultimaker3.def.json b/resources/definitions/ultimaker3.def.json index e7b9b6255e..57cfbe960f 100644 --- a/resources/definitions/ultimaker3.def.json +++ b/resources/definitions/ultimaker3.def.json @@ -15,8 +15,8 @@ "has_machine_materials": true, "has_variant_materials": true, "has_variants": true, - "preferred_variant": "*aa04*", - "preferred_quality": "*Normal*", + "preferred_variant_name": "AA 0.4", + "preferred_quality_type": "normal", "variants_name": "Print core", "machine_extruder_trains": { @@ -43,10 +43,10 @@ { "default_value": [ - [ -29, 6.1 ], - [ -29, -33.9 ], - [ 71, 6.1 ], - [ 71, -33.9 ] + [ -41.9, -45.8 ], + [ -41.9, 33.9 ], + [ 59.9, 33.9 ], + [ 59.9, -45.8 ] ] }, "machine_gcode_flavor": { "default_value": "Griffin" }, @@ -90,6 +90,7 @@ "infill_overlap": { "value": "0" }, "infill_pattern": { "value": "'triangles'" }, "infill_wipe_dist": { "value": "0" }, + "initial_layer_line_width_factor": { "value": "120" }, "jerk_enabled": { "value": "True" }, "jerk_layer_0": { "value": "jerk_topbottom" }, "jerk_prime_tower": { "value": "math.ceil(jerk_print * 15 / 25)" }, @@ -109,7 +110,9 @@ "material_bed_temperature": { "maximum_value": "115" }, "material_bed_temperature_layer_0": { "maximum_value": "115" }, "material_standby_temperature": { "value": "100" }, + "meshfix_maximum_resolution": { "value": "0.04" }, "multiple_mesh_overlap": { "value": "0" }, + "optimize_wall_printing_order": { "value": "True" }, "prime_tower_enable": { "default_value": true }, "raft_airgap": { "value": "0" }, "raft_base_thickness": { "value": "0.3" }, @@ -123,7 +126,7 @@ "retraction_count_max": { "value": "10" }, "retraction_extrusion_window": { "value": "1" }, "retraction_hop": { "value": "2" }, - "retraction_hop_enabled": { "value": "True" }, + "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" }, @@ -147,9 +150,10 @@ "switch_extruder_prime_speed": { "value": "15" }, "switch_extruder_retraction_amount": { "value": "8" }, "top_bottom_thickness": { "value": "1" }, - "travel_avoid_distance": { "value": "3" }, + "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(wall_line_width * 0.3 / 0.35, 2)" }, - "wall_thickness": { "value": "1" } + "wall_thickness": { "value": "1" }, + "zig_zaggify_infill": { "value": "True" } } } diff --git a/resources/definitions/ultimaker3_extended.def.json b/resources/definitions/ultimaker3_extended.def.json index 385199f4f1..3a1be3a303 100644 --- a/resources/definitions/ultimaker3_extended.def.json +++ b/resources/definitions/ultimaker3_extended.def.json @@ -16,7 +16,7 @@ "has_variant_materials": true, "has_materials": true, "has_variants": true, - "preferred_variant": "*aa04*", + "preferred_variant_name": "AA 0.4", "variants_name": "Print core", "machine_extruder_trains": { diff --git a/resources/definitions/vertex_delta_k8800.def.json b/resources/definitions/vertex_delta_k8800.def.json index 736d17e17a..495fd5a5bc 100644 --- a/resources/definitions/vertex_delta_k8800.def.json +++ b/resources/definitions/vertex_delta_k8800.def.json @@ -6,7 +6,9 @@ "manufacturer": "Velleman nv", "file_formats": "text/x-gcode", "visible": true, - "author": "Velleman" + "author": "Velleman", + "has_machine_quality": true, + "has_materials": true }, "overrides": { "material_diameter": { @@ -59,6 +61,99 @@ }, "machine_end_gcode": { "default_value": "; Vertex Delta end code\nM107 ; Turn off fan\nG91 ; Relative positioning\nT0\nG1 E-1 F1500; Reduce filament pressure\nM104 T0 S0\nG90 ; Absolute positioning\nG92 E0 ; Reset extruder position\nM300 S4000 P500\nM300 S3000 P500\nM300 S2000 P800\nG28\nM84 ; 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 + }, + "speed_print": { + "value": 35 + }, + "speed_infill": { + "value": 40 + }, + "speed_wall": { + "value": 35 + }, + "speed_wall_x": { + "value": 35 + }, + "speed_topbottom": { + "value": 35 + }, + "speed_travel": { + "value": 190 + }, + "speed_layer_0": { + "value": 20 + }, + "speed_print_layer_0": { + "value": 20 + }, + "skirt_brim_speed": { + "value": 20 + }, + "travel_retract_before_outer_wall": { + "value": false + }, + "retraction_hop_enabled": { + "value": true + }, + "retraction_hop": { + "value": 0.1 + }, + "cool_fan_full_at_height": { + "value": 2 + }, + "cool_fan_full_layer": { + "value": 11 + }, + "cool_min_layer_time": { + "value": 8 + }, + "support_z_distance": { + "value": 0.4 + }, + "support_xy_distance": { + "value": 1 + }, + "brim_width": { + "value": 6 + }, + "skirt_line_count": { + "value": 2 + }, + "skirt_brim_minimal_length": { + "value": 50 } } } \ No newline at end of file diff --git a/resources/extruders/cartesio_extruder_0.def.json b/resources/extruders/cartesio_extruder_0.def.json index 5558d9325e..47b5b5abf5 100644 --- a/resources/extruders/cartesio_extruder_0.def.json +++ b/resources/extruders/cartesio_extruder_0.def.json @@ -16,17 +16,10 @@ "machine_nozzle_offset_x": { "default_value": 0.0 }, "machine_nozzle_offset_y": { "default_value": 0.0 }, "machine_extruder_start_code": { - "default_value": "\n;start extruder_0\n\nM117 printing...\n" + "default_value": "\n;start T0\n\nM104 T0 S{material_print_temperature_layer_0}\nG1 X65 Y35 F9000 ; go to wipe position\nM109 T0 S{material_print_temperature_layer_0}; wait for temp\nG1 E10 F300; prime\nG92 E0\nG1 X45 Y15 F3000; wipe\nG1 X55 F9000\nG1 Y35 F6000; wipe again\n\nM117 printing...\n" }, "machine_extruder_end_code": { - "default_value": "\nM104 T0 S120\n;end extruder_0\nM117 temp is {material_print_temp}\n" - }, - - "machine_extruder_start_pos_abs": { "default_value": true }, - "machine_extruder_start_pos_x": { "default_value": 24 }, - "machine_extruder_start_pos_y": { "default_value": 16 }, - "machine_extruder_end_pos_abs": { "default_value": true }, - "machine_extruder_end_pos_x": { "default_value": 48 }, - "machine_extruder_end_pos_y": { "default_value": 16 } + "default_value": "\nM104 T0 S{material_standby_temperature}\nG1 X65 Y35 F9000 ; go to wipe position\nM109 T0 R{material_standby_temperature}; wait for temp\nG1 X45 Y15 F3000; wipe\nG1 X55 F9000\nG1 Y35 F6000; wipe again\n\n;end T0\n\n" + } } } diff --git a/resources/extruders/cartesio_extruder_1.def.json b/resources/extruders/cartesio_extruder_1.def.json index f8350f8091..78bcccd12a 100644 --- a/resources/extruders/cartesio_extruder_1.def.json +++ b/resources/extruders/cartesio_extruder_1.def.json @@ -16,17 +16,10 @@ "machine_nozzle_offset_x": { "default_value": 24.0 }, "machine_nozzle_offset_y": { "default_value": 0.0 }, "machine_extruder_start_code": { - "default_value": "\n;start extruder_1\n\nM117 printing...\n" + "default_value": "\n;start T1\n\nM104 T1 S{material_print_temperature_layer_0}\nG1 X41 Y35 F9000 ; go to wipe position\nM109 T1 S{material_print_temperature_layer_0}; wait for temp\nG1 E10 F300; prime\nG92 E0\nG1 X21 Y15 F3000; wipe\nG1 X34 F9000\nG1 Y35 F6000; wipe again\n\nM117 printing...\n" }, "machine_extruder_end_code": { - "default_value": "\nM104 T1 S120\n;end extruder_1\n" - }, - - "machine_extruder_start_pos_abs": { "default_value": true }, - "machine_extruder_start_pos_x": { "default_value": 48 }, - "machine_extruder_start_pos_y": { "default_value": 16 }, - "machine_extruder_end_pos_abs": { "default_value": true }, - "machine_extruder_end_pos_x": { "default_value": 24 }, - "machine_extruder_end_pos_y": { "default_value": 16 } + "default_value": "\nM104 T1 S{material_standby_temperature}\nG1 X41 Y35 F9000 ; go to wipe position\nM109 T1 R{material_standby_temperature}; wait for temp\nG1 X21 Y15 F3000; wipe\nG1 X31 F9000\nG1 Y35 F6000; wipe again\n\n;end T1\n\n" + } } } diff --git a/resources/extruders/cartesio_extruder_2.def.json b/resources/extruders/cartesio_extruder_2.def.json index bfc10e75c3..dbd6643bfe 100644 --- a/resources/extruders/cartesio_extruder_2.def.json +++ b/resources/extruders/cartesio_extruder_2.def.json @@ -13,20 +13,13 @@ "default_value": 2, "maximum_value": "3" }, - "machine_nozzle_offset_x": { "default_value": 0.0 }, - "machine_nozzle_offset_y": { "default_value": 0.0 }, + "machine_nozzle_offset_x": { "default_value": 24.0 }, + "machine_nozzle_offset_y": { "default_value": -100.0 }, "machine_extruder_start_code": { - "default_value": "\n;start extruder_2\n\nM117 printing...\n" + "default_value": "\n;start T2\n\nM104 T2 S{material_print_temperature_layer_0}\nG1 X41 Y215 F9000 ; go to wipe position\nM109 T2 S{material_print_temperature_layer_0}; wait for temp\nG1 E10 F300; prime\nG92 E0\nG1 X21 Y235 F3000; wipe\nG1 X31 F9000\nG1 Y215 F6000; wipe again\n\nM117 printing...\n" }, "machine_extruder_end_code": { - "default_value": "\nM104 T2 S120\n;end extruder_2\n" - }, - - "machine_extruder_start_pos_abs": { "default_value": true }, - "machine_extruder_start_pos_x": { "default_value": 24 }, - "machine_extruder_start_pos_y": { "default_value": 309 }, - "machine_extruder_end_pos_abs": { "default_value": true }, - "machine_extruder_end_pos_x": { "default_value": 48 }, - "machine_extruder_end_pos_y": { "default_value": 309 } + "default_value": "\nM104 T2 S{material_standby_temperature}\nG1 X41 Y215 F9000 ; go to wipe position\nM109 T2 R{material_standby_temperature}; wait for temp\nG1 X21 Y235 F3000; wipe\nG1 X31 F9000\nG1 Y215 F6000; wipe again\n\n;end T2\n\n" + } } } diff --git a/resources/extruders/cartesio_extruder_3.def.json b/resources/extruders/cartesio_extruder_3.def.json index f0be53e564..beed117abe 100644 --- a/resources/extruders/cartesio_extruder_3.def.json +++ b/resources/extruders/cartesio_extruder_3.def.json @@ -14,19 +14,12 @@ "maximum_value": "3" }, "machine_nozzle_offset_x": { "default_value": 0.0 }, - "machine_nozzle_offset_y": { "default_value": 0.0 }, + "machine_nozzle_offset_y": { "default_value": -100.0 }, "machine_extruder_start_code": { - "default_value": "\n;start extruder_3\n\nM117 printing...\n" + "default_value": "\n;start T3\n\nM104 T3 S{material_print_temperature_layer_0}\nG1 X65 Y215 F9000 ; go to wipe position\nM109 T3 S{material_print_temperature_layer_0}; wait for temp\nG1 E10 F300; prime\nG92 E0\nG1 X45 Y235 F3000; wipe\nG1 X55 F9000\nG1 Y215 F6000; wipe again\n\nM117 printing...\n" }, "machine_extruder_end_code": { - "default_value": "\nM104 T3 S120\n;end extruder_3\n" - }, - - "machine_extruder_start_pos_abs": { "default_value": true }, - "machine_extruder_start_pos_x": { "default_value": 48 }, - "machine_extruder_start_pos_y": { "default_value": 309 }, - "machine_extruder_end_pos_abs": { "default_value": true }, - "machine_extruder_end_pos_x": { "default_value": 24 }, - "machine_extruder_end_pos_y": { "default_value": 309} + "default_value": "\nM104 T3 S{material_standby_temperature}\nG1 X65 Y215 F9000 ; go to wipe position\nM109 T3 R{material_standby_temperature}; wait for temp\nG1 X45 Y235 F3000; wipe\nG1 X55 F9000\nG1 Y215 F6000; wipe again\n\n;end T3\n\n" + } } } diff --git a/resources/extruders/gmax15plus_dual_extruder_0.def.json b/resources/extruders/gmax15plus_dual_extruder_0.def.json new file mode 100644 index 0000000000..0037b75a1c --- /dev/null +++ b/resources/extruders/gmax15plus_dual_extruder_0.def.json @@ -0,0 +1,28 @@ +{ + "id": "gmax15plus_dual_extruder_0", + "version": 2, + "name": "Left Extruder", + "inherits": "fdmextruder", + "metadata": { + "machine": "gmax15plus_dual", + "position": "0" + }, + + "overrides": { + "extruder_nr": { + "default_value": 0, + "maximum_value": "1" + }, + "machine_nozzle_offset_x": { "default_value": 0.0 }, + "machine_nozzle_offset_y": { "default_value": 0.0 }, + "machine_nozzle_size": { "default_value": 0.5 }, + + "machine_extruder_start_pos_abs": { "default_value": true }, + "machine_extruder_start_pos_x": { "value": 40 }, + "machine_extruder_start_pos_y": { "value": 210 }, + "machine_extruder_end_pos_abs": { "default_value": true }, + "machine_extruder_end_pos_x": { "value": 40 }, + "machine_extruder_end_pos_y": { "value": 210 } + + } +} diff --git a/resources/extruders/gmax15plus_dual_extruder_1.def.json b/resources/extruders/gmax15plus_dual_extruder_1.def.json new file mode 100644 index 0000000000..2db9aef3ee --- /dev/null +++ b/resources/extruders/gmax15plus_dual_extruder_1.def.json @@ -0,0 +1,30 @@ +{ + "id": "gmax15plus_dual_extruder_1", + "version": 2, + "name": "Right Extruder", + "inherits": "fdmextruder", + "metadata": { + "machine": "gmax15plus_dual", + "position": "1" + }, + + "overrides": { + "extruder_nr": { + "default_value": 1, + "maximum_value": "1" + }, + "machine_nozzle_offset_x": { "default_value": 0.0 }, + "machine_nozzle_offset_y": { "default_value": 0.0 }, + "machine_nozzle_size": { "default_value": 0.5 }, + + "machine_extruder_start_pos_abs": { "default_value": true }, + "machine_extruder_start_pos_x": { "value": 40 }, + "machine_extruder_start_pos_y": { "value": 210 }, + "machine_extruder_end_pos_abs": { "default_value": true }, + "machine_extruder_end_pos_x": { "value": 40 }, + "machine_extruder_end_pos_y": { "value": 210 } + + } +} + + diff --git a/resources/extruders/punchtec_connect_xl_extruder_left.def.json b/resources/extruders/punchtec_connect_xl_extruder_0.def.json similarity index 100% rename from resources/extruders/punchtec_connect_xl_extruder_left.def.json rename to resources/extruders/punchtec_connect_xl_extruder_0.def.json diff --git a/resources/extruders/punchtec_connect_xl_extruder_right.def.json b/resources/extruders/punchtec_connect_xl_extruder_1.def.json similarity index 100% rename from resources/extruders/punchtec_connect_xl_extruder_right.def.json rename to resources/extruders/punchtec_connect_xl_extruder_1.def.json diff --git a/resources/i18n/cura.pot b/resources/i18n/cura.pot index be6613ebf5..1620e11d81 100644 --- a/resources/i18n/cura.pot +++ b/resources/i18n/cura.pot @@ -1,14 +1,14 @@ # Cura -# Copyright (C) 2017 Ultimaker +# Copyright (C) 2018 Ultimaker # This file is distributed under the same license as the Cura package. -# Ruben Dulek , 2017. +# Ruben Dulek , 2018. # #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Cura 3.1\n" +"Project-Id-Version: Cura 3.2\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2017-08-02 16:53+0000\n" +"POT-Creation-Date: 2018-01-29 09:48+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: TEAM\n" @@ -18,7 +18,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:29 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:26 msgctxt "@action" msgid "Machine Settings" msgstr "" @@ -55,12 +55,11 @@ msgstr "" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:87 #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:155 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:874 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:646 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:875 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:659 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:370 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrintWindow.qml:78 -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:104 -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:99 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:355 #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:188 #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:376 #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:139 @@ -100,7 +99,7 @@ msgctxt "@info:tooltip" msgid "Open the Doodle3D Connect web interface" msgstr "" -#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:34 +#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:33 msgctxt "@item:inmenu" msgid "Show Changelog" msgstr "" @@ -115,80 +114,85 @@ msgctxt "@info:status" msgid "Profile has been flattened & activated." msgstr "" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:26 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:27 msgctxt "@item:inmenu" msgid "USB printing" msgstr "" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:27 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:28 msgctxt "@action:button Preceded by 'Ready to'." msgid "Print via USB" msgstr "" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:28 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:29 msgctxt "@info:tooltip" msgid "Print via USB" msgstr "" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:30 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:31 msgctxt "@info:status" msgid "Connected via USB" msgstr "" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:154 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:183 msgctxt "@info:status" msgid "Unable to start a new job because the printer is busy or not connected." msgstr "" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:154 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:183 msgctxt "@info:title" msgid "Printer Unavailable" msgstr "" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:457 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:485 msgctxt "@info:status" msgid "" "This printer does not support USB printing because it uses UltiGCode flavor." msgstr "" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:457 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:485 msgctxt "@info:title" msgid "USB Printing" msgstr "" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:461 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:489 msgctxt "@info:status" msgid "" "Unable to start a new job because the printer does not support usb printing." msgstr "" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:461 -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:108 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:489 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:103 #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:146 #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:158 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:945 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1349 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1417 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:946 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1418 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1496 msgctxt "@info:title" msgid "Warning" msgstr "" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:108 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:103 msgctxt "@info" msgid "Unable to update firmware because there are no printers connected." msgstr "" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:122 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:117 #, python-format msgctxt "@info" msgid "Could not find firmware required for the printer at %s." msgstr "" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:122 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:117 msgctxt "@info:title" msgid "Printer Firmware" msgstr "" +#: /home/ruben/Projects/Cura/plugins/PrepareStage/__init__.py:12 +msgctxt "@item:inmenu" +msgid "Prepare" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:23 msgctxt "@action:button Preceded by 'Ready to'." msgid "Save to Removable Drive" @@ -232,11 +236,11 @@ msgid "Could not save to removable drive {0}: {1}" msgstr "" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:132 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:692 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:700 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:146 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:693 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:701 #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:153 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1358 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:160 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1427 msgctxt "@info:title" msgid "Error" msgstr "" @@ -286,7 +290,7 @@ msgid "Removable Drive" msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:109 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:53 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:51 msgctxt "@action:button Preceded by 'Ready to'." msgid "Print over network" msgstr "" @@ -406,37 +410,37 @@ msgctxt "@info:title" msgid "Printer Status" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:691 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:692 #, python-brace-format msgctxt "@info:status" msgid "Unable to start a new print job. No Printcore loaded in slot {0}" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:699 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:700 #, python-brace-format msgctxt "@info:status" msgid "Unable to start a new print job. No material loaded in slot {0}" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:709 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:710 #, python-brace-format msgctxt "@label" msgid "Not enough material for spool {0}." msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:719 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:720 #, python-brace-format msgctxt "@label" msgid "Different PrintCore (Cura: {0}, Printer: {1}) selected for extruder {2}" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:733 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:734 #, python-brace-format msgctxt "@label" msgid "Different material (Cura: {0}, Printer: {1}) selected for extruder {2}" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:741 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:742 #, python-brace-format msgctxt "@label" msgid "" @@ -444,12 +448,12 @@ msgid "" "performed on the printer." msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:746 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:747 msgctxt "@label" msgid "Are you sure you wish to print with the selected configuration?" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:747 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:748 msgctxt "@label" msgid "" "There is a mismatch between the configuration or calibration of the printer " @@ -457,65 +461,65 @@ msgid "" "that are inserted in your printer." msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:753 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:754 msgctxt "@window:title" msgid "Mismatched configuration" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:864 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:262 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:865 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:258 msgctxt "@info:status" msgid "" "Sending new jobs (temporarily) blocked, still sending the previous print job." msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:873 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:874 msgctxt "@info:status" msgid "Sending data to printer" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:873 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:874 msgctxt "@info:title" msgid "Sending Data" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:944 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:945 msgctxt "@info:status" msgid "Unable to send data to printer. Is another job still active?" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1085 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1087 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:196 msgctxt "@label:MonitorStatus" msgid "Aborting print..." msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1091 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1093 msgctxt "@label:MonitorStatus" msgid "Print aborted. Please check the printer" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1097 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1099 msgctxt "@label:MonitorStatus" msgid "Pausing print..." msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1099 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1101 msgctxt "@label:MonitorStatus" msgid "Resuming print..." msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1289 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1291 msgctxt "@window:title" msgid "Sync with your printer" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1291 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1293 msgctxt "@label" msgid "Would you like to use your current printer configuration in Cura?" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1293 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1295 msgctxt "@label" msgid "" "The PrintCores and/or materials on your printer differ from those within " @@ -544,80 +548,84 @@ msgid "" msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:115 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:520 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:533 #, python-brace-format msgid "" "{printer_name} is reserved to print '{job_name}'. Please change the " "printer's configuration to match the job, for it to start printing." msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:278 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:277 msgctxt "@info:status" msgid "" "Unable to send new print job: this 3D printer is not (yet) set up to host a " "group of connected Ultimaker 3 printers." msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:410 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:423 #, python-brace-format msgctxt "@info:status" msgid "Unable to send print job to group {cluster_name}." msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:418 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:431 #, python-brace-format msgctxt "@info:status" msgid "Sent {file_name} to group {cluster_name}." msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:423 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:436 msgctxt "@action:button" msgid "Show print jobs" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:424 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:437 msgctxt "@info:tooltip" msgid "Opens the print jobs interface in your browser." msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:489 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:502 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:239 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:47 -msgctxt "@label" +msgctxt "@label Printer name" msgid "Unknown" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:492 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:505 #, python-brace-format msgctxt "@info:status" msgid "Printer '{printer_name}' has finished printing '{job_name}'." msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:494 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:497 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:507 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:510 msgctxt "@info:status" msgid "Print finished" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:522 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:525 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:535 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:538 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:282 msgctxt "@label:status" msgid "Action required" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:643 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:656 #, python-brace-format msgctxt "@info:progress" msgid "Sending {file_name} to group {cluster_name}" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.py:19 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.py:17 msgctxt "@action" msgid "Connect via Network" msgstr "" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:64 +#: /home/ruben/Projects/Cura/plugins/MonitorStage/__init__.py:12 +msgctxt "@item:inmenu" +msgid "Monitor" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:66 #, python-brace-format msgctxt "" "@info Don't translate {machine_name}, since it gets replaced by a printer " @@ -627,74 +635,118 @@ msgid "" "update the firmware on your printer." msgstr "" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:65 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:67 #, python-format msgctxt "@info:title The %s gets replaced with the printer name." msgid "New %s firmware available" msgstr "" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:66 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:68 msgctxt "@action:button" msgid "How to update" msgstr "" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:77 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:79 msgctxt "@info" msgid "Could not access update information." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksReader.py:199 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksReader.py:579 msgctxt "@info:status" msgid "" -"Errors appeared while opening your SolidWorks file! Please " -"check, whether it is possible to open your file in SolidWorks itself without " -"any problems as well!" +"SolidWorks reported errors, while opening your file. We recommend to solve " +"these issues inside SolidWorks itself." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:31 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksReader.py:591 +msgctxt "@info:status" +msgid "" +"Found no models inside your drawing. Could you please check it's content " +"again and make sure one part or assembly is inside?\n" +"\n" +" Thanks!." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksReader.py:595 +msgctxt "@info:status" +msgid "" +"Found more then one part or assembly inside your drawing. We currently only " +"support drawings with exactly one part or assembly inside.\n" +"\n" +"Sorry!" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:25 msgctxt "@item:inlistbox" msgid "SolidWorks part file" msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:35 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:29 msgctxt "@item:inlistbox" msgid "SolidWorks assembly file" msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.py:21 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:33 +msgctxt "@item:inlistbox" +msgid "SolidWorks drawing file" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:48 +msgctxt "@info:status" +msgid "" +"Dear customer,\n" +"We could not find a valid installation of SolidWorks on your system. That " +"means that either SolidWorks is not installed or you don't own an valid " +"license. Please make sure that running SolidWorks itself works without " +"issues and/or contact your ICT.\n" +"\n" +"With kind regards\n" +" - Thomas Karl Pietrowski" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:57 +msgctxt "@info:status" +msgid "" +"Dear customer,\n" +"You are currently running this plugin on an operating system other than " +"Windows. This plugin will only work on Windows with SolidWorks installed, " +"including an valid license. Please install this plugin on a Windows machine " +"with SolidWorks installed.\n" +"\n" +"With kind regards\n" +" - Thomas Karl Pietrowski" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksDialogHandler.py:70 msgid "Configure" msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/CommonComReader.py:135 -#, python-format -msgctxt "@info:status" -msgid "Error while starting %s!" +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksDialogHandler.py:71 +msgid "Installation guide for SolidWorks macro" msgstr "" #: /home/ruben/Projects/Cura/plugins/SimulationView/__init__.py:14 msgctxt "@item:inlistbox" -msgid "Simulation view" +msgid "Layer view" msgstr "" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:100 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:103 msgctxt "@info:status" msgid "Cura does not accurately display layers when Wire Printing is enabled" msgstr "" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:101 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:104 msgctxt "@info:title" msgid "Simulation View" msgstr "" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.py:26 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.py:25 msgid "Modify G-Code" msgstr "" #: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:43 msgctxt "@info" -msgid "" -"Cura collects anonymised slicing statistics. You can disable this in the " -"preferences." +msgid "Cura collects anonymized usage statistics." msgstr "" #: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:46 @@ -704,7 +756,27 @@ msgstr "" #: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:48 msgctxt "@action:button" -msgid "Dismiss" +msgid "Allow" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:49 +msgctxt "@action:tooltip" +msgid "" +"Allow Cura to send anonymized usage statistics to help prioritize future " +"improvements to Cura. Some of your preferences and settings are sent, the " +"Cura version and a hash of the models you're slicing." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:50 +msgctxt "@action:button" +msgid "Disable" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:51 +msgctxt "@action:tooltip" +msgid "" +"Don't allow Cura to send anonymized usage statistics. You can enable it " +"again in the preferences." msgstr "" #: /home/ruben/Projects/Cura/plugins/LegacyProfileReader/__init__.py:14 @@ -712,6 +784,18 @@ msgctxt "@item:inlistbox" msgid "Cura 15.04 profiles" msgstr "" +#: /home/ruben/Projects/Cura/plugins/CuraBlenderPlugin/__init__.py:15 +msgctxt "@item:inlistbox" +msgid "Blender file" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraBlenderPlugin/CadIntegrationUtils/CommonReader.py:199 +msgctxt "@info:status" +msgid "" +"Could not export using \"{}\" quality!\n" +"Felt back to \"{}\"." +msgstr "" + #: /home/ruben/Projects/Cura/plugins/GCodeProfileReader/__init__.py:14 #: /home/ruben/Projects/Cura/plugins/GCodeReader/__init__.py:14 msgctxt "@item:inlistbox" @@ -743,23 +827,23 @@ msgctxt "@item:inlistbox" msgid "GIF Image" msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:269 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:299 msgctxt "@info:status" msgid "" "Unable to slice with the current material as it is incompatible with the " "selected machine or configuration." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:269 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:297 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:319 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:299 #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:327 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:336 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:349 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:357 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:366 msgctxt "@info:title" msgid "Unable to slice" msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:296 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:326 #, python-brace-format msgctxt "@info:status" msgid "" @@ -767,7 +851,7 @@ msgid "" "errors: {0}" msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:318 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:348 #, python-brace-format msgctxt "@info:status" msgid "" @@ -775,13 +859,13 @@ msgid "" "errors on one or more models: {error_labels}" msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:326 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:356 msgctxt "@info:status" msgid "" "Unable to slice because the prime tower or prime position(s) are invalid." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:335 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:365 msgctxt "@info:status" msgid "" "Nothing to slice because none of the models fit the build volume. Please " @@ -789,12 +873,12 @@ msgid "" msgstr "" #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:50 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:239 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:242 msgctxt "@info:status" msgid "Processing Layers" msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:239 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:242 msgctxt "@info:title" msgid "Information" msgstr "" @@ -836,14 +920,14 @@ msgid "" "UGII_USER_DIR for Siemens NX." msgstr "" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:167 -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:585 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:165 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:590 msgctxt "@title:tab" msgid "Recommended" msgstr "" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:169 -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:590 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:167 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:595 msgctxt "@title:tab" msgid "Custom" msgstr "" @@ -854,24 +938,24 @@ msgctxt "@item:inlistbox" msgid "3MF File" msgstr "" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:126 -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1142 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:159 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1185 msgctxt "@label" msgid "Nozzle" msgstr "" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:164 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:152 #, python-brace-format msgctxt "@info:status" msgid "Failed to get plugin ID from {0}" msgstr "" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:165 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:153 msgctxt "@info:tile" msgid "Warning" msgstr "" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:203 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:191 msgctxt "@window:title" msgid "Plugin browser" msgstr "" @@ -886,18 +970,18 @@ msgctxt "@item:inlistbox" msgid "G File" msgstr "" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:314 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:321 msgctxt "@info:status" msgid "Parsing G-code" msgstr "" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:316 -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:426 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:323 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:464 msgctxt "@info:title" msgid "G-code Details" msgstr "" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:424 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:462 msgctxt "@info:generic" msgid "" "Make sure the g-code is suitable for your printer and printer configuration " @@ -910,6 +994,16 @@ 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:17 +msgctxt "@item:inlistbox" +msgid "Profile Assistant" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/3MFWriter/__init__.py:30 msgctxt "@item:inlistbox" msgid "3MF file" @@ -941,111 +1035,90 @@ msgctxt "@action" msgid "Level build plate" msgstr "" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:89 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:98 msgctxt "@tooltip" msgid "Outer Wall" msgstr "" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:90 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:99 msgctxt "@tooltip" msgid "Inner Walls" msgstr "" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:91 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:100 msgctxt "@tooltip" msgid "Skin" msgstr "" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:92 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:101 msgctxt "@tooltip" msgid "Infill" msgstr "" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:93 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:102 msgctxt "@tooltip" msgid "Support Infill" msgstr "" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:94 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:103 msgctxt "@tooltip" msgid "Support Interface" msgstr "" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:95 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:104 msgctxt "@tooltip" msgid "Support" msgstr "" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:96 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:105 msgctxt "@tooltip" msgid "Skirt" msgstr "" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:97 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:106 msgctxt "@tooltip" msgid "Travel" msgstr "" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:98 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:107 msgctxt "@tooltip" msgid "Retractions" msgstr "" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:99 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:108 msgctxt "@tooltip" msgid "Other" msgstr "" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:199 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:231 msgctxt "@label unknown material" msgid "Unknown" msgstr "" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:284 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:318 #, python-brace-format msgctxt "@label" msgid "Pre-sliced file {0}" msgstr "" -#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:469 +#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:440 msgctxt "@item:material" msgid "No material loaded" msgstr "" -#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:476 +#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:447 msgctxt "@item:material" msgid "Unknown material" msgstr "" -#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:30 -msgctxt "@info:status" -msgid "Finding new location for objects" -msgstr "" - -#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:34 -msgctxt "@info:title" -msgid "Finding Location" -msgstr "" - -#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:89 -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:83 -msgctxt "@info:status" -msgid "Unable to find a location within the build volume for all objects" -msgstr "" - -#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:90 -msgctxt "@info:title" -msgid "Can't Find Location" -msgstr "" - -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:431 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:113 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:437 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:120 msgctxt "@title:window" msgid "File Already Exists" msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:432 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:114 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:438 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:121 #, python-brace-format msgctxt "@label Don't translate the XML tag !" msgid "" @@ -1053,34 +1126,29 @@ msgid "" "overwrite it?" msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:815 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:872 msgctxt "@label" msgid "Custom" msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:819 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:876 msgctxt "@label" msgid "Custom Material" msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/ExtrudersModel.py:182 -msgctxt "@menuitem" -msgid "Global" -msgstr "" - -#: /home/ruben/Projects/Cura/cura/Settings/ExtrudersModel.py:229 +#: /home/ruben/Projects/Cura/cura/Settings/ExtrudersModel.py:205 msgctxt "@menuitem" msgid "Not overridden" msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:117 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:124 msgctxt "@info:status" msgid "" "The selected material is incompatible with the selected machine or " "configuration." msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:118 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:125 #: /home/ruben/Projects/Cura/cura/Settings/MaterialManager.py:24 msgctxt "@info:title" msgid "Incompatible Material" @@ -1103,14 +1171,14 @@ msgctxt "@action" msgid "Undo changing the material diameter." msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:144 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:151 #, 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:151 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:158 #, python-brace-format msgctxt "@info:status Don't translate the XML tag !" msgid "" @@ -1118,21 +1186,20 @@ msgid "" "failure." msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:156 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:163 #, 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:157 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:164 msgctxt "@info:title" msgid "Export succeeded" msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:183 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:205 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:214 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:248 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:190 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:211 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:271 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "" @@ -1140,35 +1207,62 @@ msgid "" "message>" msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:216 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:252 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:230 +#, python-brace-format +msgctxt "@info:status Don't translate the XML tags or !" +msgid "" +"This profile {0} contains incorrect data, could not " +"import it." +msgstr "" + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:240 +#, python-brace-format +msgctxt "@info:status Don't translate the XML tags or !" +msgid "" +"The machine defined in profile {0} doesn't match with " +"your current machine, could not import it." +msgstr "" + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:274 #, python-brace-format msgctxt "@info:status" msgid "Successfully imported profile {0}" msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:255 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:277 +#, python-brace-format +msgctxt "@info:status" +msgid "File {0} does not contain any valid profile." +msgstr "" + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:280 #, 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:274 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:298 msgctxt "@label" msgid "Custom profile" msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:285 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:313 msgctxt "@info:status" msgid "Profile is missing a quality type." msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:321 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:349 #, python-brace-format msgctxt "@info:status" msgid "Could not find a quality type {0} for the current configuration." msgstr "" +#: /home/ruben/Projects/Cura/cura/ObjectsModel.py:46 +#, python-brace-format +msgctxt "@label" +msgid "Group #{group_nr}" +msgstr "" + #: /home/ruben/Projects/Cura/cura/BuildVolume.py:100 msgctxt "@info:status" msgid "" @@ -1181,126 +1275,151 @@ msgctxt "@info:title" msgid "Build Volume" msgstr "" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:34 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:25 msgctxt "@info:status" msgid "Multiplying and placing objects" msgstr "" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:35 -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:83 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:26 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:78 msgctxt "@info:title" msgid "Placing Object" msgstr "" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:80 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:78 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:88 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:152 +msgctxt "@info:status" +msgid "Unable to find a location within the build volume for all objects" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:29 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:64 +msgctxt "@info:status" +msgid "Finding new location for objects" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:33 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:68 +msgctxt "@info:title" +msgid "Finding Location" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:89 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:153 +msgctxt "@info:title" +msgid "Can't Find Location" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:81 msgctxt "@title:window" msgid "Crash Report" msgstr "" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:93 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:94 msgctxt "@label crash message" msgid "" -"

      A fatal exception has occurred. Please send us this Crash Report to " -"fix the problem

      \n" +"

      A fatal error has occurred. 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 "" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:101 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:102 msgctxt "@title:groupbox" msgid "System information" msgstr "" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:109 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:110 msgctxt "@label unknown version of Cura" msgid "Unknown" msgstr "" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:111 -#, python-brace-format -msgctxt "@label Cura version" -msgid "Cura version: {version}
      " -msgstr "" - #: /home/ruben/Projects/Cura/cura/CrashHandler.py:112 -#, python-brace-format -msgctxt "@label Platform" -msgid "Platform: {platform}
      " +msgctxt "@label Cura version number" +msgid "Cura version" msgstr "" #: /home/ruben/Projects/Cura/cura/CrashHandler.py:113 -#, python-brace-format -msgctxt "@label Qt version" -msgid "Qt version: {qt}
      " +msgctxt "@label Type of platform" +msgid "Platform" msgstr "" #: /home/ruben/Projects/Cura/cura/CrashHandler.py:114 -#, python-brace-format -msgctxt "@label PyQt version" -msgid "PyQt version: {pyqt}
      " +msgctxt "@label" +msgid "Qt version" msgstr "" #: /home/ruben/Projects/Cura/cura/CrashHandler.py:115 -#, python-brace-format -msgctxt "@label OpenGL" -msgid "OpenGL: {opengl}
      " +msgctxt "@label" +msgid "PyQt version" msgstr "" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:130 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:116 +msgctxt "@label OpenGL version" +msgid "OpenGL" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:133 +msgctxt "@label" +msgid "not yet initialised
      " +msgstr "" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:136 #, python-brace-format msgctxt "@label OpenGL version" msgid "
    • OpenGL Version: {version}
    • " msgstr "" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:131 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:137 #, python-brace-format msgctxt "@label OpenGL vendor" msgid "
    • OpenGL Vendor: {vendor}
    • " msgstr "" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:132 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:138 #, python-brace-format msgctxt "@label OpenGL renderer" msgid "
    • OpenGL Renderer: {renderer}
    • " msgstr "" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:141 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:147 msgctxt "@title:groupbox" -msgid "Exception traceback" +msgid "Error traceback" msgstr "" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:208 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:214 msgctxt "@title:groupbox" msgid "Logs" msgstr "" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:231 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:237 msgctxt "@title:groupbox" msgid "User description" msgstr "" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:246 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:252 msgctxt "@action:button" msgid "Send report" msgstr "" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:256 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:274 msgctxt "@info:progress" msgid "Loading machines..." msgstr "" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:661 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:660 msgctxt "@info:progress" msgid "Setting up scene..." msgstr "" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:703 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:702 msgctxt "@info:progress" msgid "Loading interface..." msgstr "" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:874 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:899 #, python-format msgctxt "" "@info 'width', 'depth' and 'height' are variable names that must NOT be " @@ -1308,19 +1427,19 @@ msgctxt "" msgid "%(width).1f x %(depth).1f x %(height).1f mm" msgstr "" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1348 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1417 #, 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:1357 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1426 #, 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:1416 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1495 msgctxt "@info:status" msgid "The selected model was too small to load." msgstr "" @@ -1349,12 +1468,11 @@ msgstr "" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:119 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:129 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:235 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:288 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:300 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:391 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:401 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:413 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:840 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:383 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:394 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:412 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:424 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:849 msgctxt "@label" msgid "mm" msgstr "" @@ -1459,70 +1577,69 @@ msgid "" "gantry when printing \"One at a Time\"." msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:255 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:254 msgctxt "@label" msgid "Number of Extruders" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:289 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:310 +msgctxt "@label" +msgid "Start Gcode" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:320 +msgctxt "@tooltip" +msgid "Gcode commands to be executed at the very start." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:329 +msgctxt "@label" +msgid "End Gcode" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:339 +msgctxt "@tooltip" +msgid "Gcode commands to be executed at the very end." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:370 +msgctxt "@label" +msgid "Nozzle Settings" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:382 +msgctxt "@label" +msgid "Nozzle size" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:393 +msgctxt "@label" +msgid "Compatible material diameter" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:395 msgctxt "@tooltip" msgid "" "The nominal diameter of filament supported by the printer. The exact " "diameter will be overridden by the material and/or the profile." msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:291 -msgctxt "@label" -msgid "Material diameter" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:299 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:390 -msgctxt "@label" -msgid "Nozzle size" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:317 -msgctxt "@label" -msgid "Start Gcode" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:327 -msgctxt "@tooltip" -msgid "Gcode commands to be executed at the very start." -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:336 -msgctxt "@label" -msgid "End Gcode" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:346 -msgctxt "@tooltip" -msgid "Gcode commands to be executed at the very end." -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:378 -msgctxt "@label" -msgid "Nozzle Settings" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:400 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:411 msgctxt "@label" msgid "Nozzle offset X" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:412 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:423 msgctxt "@label" msgid "Nozzle offset Y" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:433 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:444 msgctxt "@label" msgid "Extruder Start Gcode" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:451 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:462 msgctxt "@label" msgid "Extruder End Gcode" msgstr "" @@ -1535,8 +1652,9 @@ msgstr "" #: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.qml:37 #: /home/ruben/Projects/Cura/plugins/USBPrinting/FirmwareUpdateWindow.qml:107 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:55 -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:445 -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:357 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:306 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:456 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:492 #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:80 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:123 #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:147 @@ -1621,7 +1739,7 @@ msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:96 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:50 #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:95 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:190 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:171 msgctxt "@action:button" msgid "Remove" msgstr "" @@ -1645,12 +1763,12 @@ msgid "Type" msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:233 -msgctxt "@label" +msgctxt "@label Printer name" msgid "Ultimaker 3" msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:236 -msgctxt "@label" +msgctxt "@label Printer name" msgid "Ultimaker 3 Extended" msgstr "" @@ -1696,8 +1814,6 @@ msgid "Enter the IP address or hostname of your printer on the network." msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:379 -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:92 -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:88 #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:181 msgctxt "@action:button" msgid "OK" @@ -1718,6 +1834,11 @@ msgctxt "@label: arg 1 is group name" msgid "%1 is not set up to host a group of connected Ultimaker 3 printers" msgstr "" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterMonitorItem.qml:55 +msgctxt "@label link to connect manager" +msgid "Add/Remove printers" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/OpenPanelButton.qml:14 msgctxt "@info:tooltip" msgid "Opens the print jobs page with your default web browser." @@ -1748,11 +1869,16 @@ msgid "Available" msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:43 -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:101 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:100 msgctxt "@label:MonitorStatus" msgid "Lost connection with the printer" msgstr "" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:47 +msgctxt "@label Printer status" +msgid "Unknown" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:257 msgctxt "@label:status" msgid "Disabled" @@ -1844,138 +1970,250 @@ msgctxt "@action:button" msgid "Activate Configuration" msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:20 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:21 msgctxt "@title:window" -msgid "Cura SolidWorks Plugin Configuration" +msgid "SolidWorks: Export wizard" msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:44 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:45 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:140 msgctxt "@action:label" -msgid "Default quality of the exported STL:" +msgid "Quality:" msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:79 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:78 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:179 msgctxt "@option:curaSolidworksStlQuality" -msgid "Always ask" +msgid "Fine (3D-printing)" msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:80 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:79 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:180 msgctxt "@option:curaSolidworksStlQuality" -msgid "Always use Fine quality" +msgid "Coarse (3D-printing)" msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:81 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:80 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:181 msgctxt "@option:curaSolidworksStlQuality" -msgid "Always use Coarse quality" +msgid "Fine (SolidWorks)" msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:20 -msgctxt "@title:window" -msgid "Import SolidWorks File as STL..." -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:43 -msgctxt "@info:tooltip" -msgid "Quality of the Exported STL" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:48 -msgctxt "@action:label" -msgid "Quality" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:62 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:81 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:182 msgctxt "@option:curaSolidworksStlQuality" -msgid "Coarse" +msgid "Coarse (SolidWorks)" msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:63 -msgctxt "@option:curaSolidworksStlQuality" -msgid "Fine" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:78 -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:82 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:94 msgctxt "@text:window" -msgid "Remember my choice" +msgid "Show this dialog again" msgstr "" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:81 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:104 +msgctxt "@action:button" +msgid "Continue" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:116 +msgctxt "@action:button" +msgid "Abort" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:21 +msgctxt "@title:window" +msgid "How to install Cura SolidWorks macro" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:62 +msgctxt "@description:label" +msgid "Steps:" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:140 +msgctxt "@action:button" +msgid "" +"Open the directory\n" +"with macro and icon" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:160 +msgctxt "@description:label" +msgid "Instructions:" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:202 +msgctxt "@action:playpause" +msgid "Play" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:206 +msgctxt "@action:playpause" +msgid "Pause" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:268 +msgctxt "@action:button" +msgid "Previous Step" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:283 +msgctxt "@action:button" +msgid "Done" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:287 +msgctxt "@action:button" +msgid "Next Step" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:21 +msgctxt "@title:window" +msgid "SolidWorks plugin: Configuration" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:39 +msgctxt "@title:tab" +msgid "Conversion settings" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:66 +msgctxt "@label" +msgid "First choice:" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:86 +msgctxt "@text:menu" +msgid "Latest installed version (Recommended)" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:95 +msgctxt "@text:menu" +msgid "Default version" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:193 +msgctxt "@label" +msgid "Show wizard before opening SolidWorks files" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:203 +msgctxt "@label" +msgid "Automatically rotate opened file into normed orientation" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:210 +msgctxt "@title:tab" +msgid "Installation(s)" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:284 +msgctxt "@label" +msgid "COM service found" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:295 +msgctxt "@label" +msgid "Executable found" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:306 +msgctxt "@label" +msgid "COM starting" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:317 +msgctxt "@label" +msgid "Revision number" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:328 +msgctxt "@label" +msgid "Functions available" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:341 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:264 +msgctxt "@action:button" +msgid "Save" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:117 msgctxt "@label" msgid "Color scheme" msgstr "" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:96 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:132 msgctxt "@label:listbox" msgid "Material Color" msgstr "" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:100 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:136 msgctxt "@label:listbox" msgid "Line Type" msgstr "" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:104 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:140 msgctxt "@label:listbox" msgid "Feedrate" msgstr "" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:108 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:144 msgctxt "@label:listbox" msgid "Layer thickness" msgstr "" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:148 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:185 msgctxt "@label" msgid "Compatibility Mode" msgstr "" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:230 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:264 msgctxt "@label" msgid "Show Travels" msgstr "" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:236 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:270 msgctxt "@label" msgid "Show Helpers" msgstr "" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:242 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:276 msgctxt "@label" msgid "Show Shell" msgstr "" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:248 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:282 msgctxt "@label" msgid "Show Infill" msgstr "" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:297 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:330 msgctxt "@label" msgid "Only Show Top Layers" msgstr "" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:306 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:339 msgctxt "@label" msgid "Show 5 Detailed Layers On Top" msgstr "" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:317 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:350 msgctxt "@label" msgid "Top / Bottom" msgstr "" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:321 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:354 msgctxt "@label" msgid "Inner Wall" msgstr "" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:378 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:410 msgctxt "@label" msgid "min" msgstr "" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:420 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:452 msgctxt "@label" msgid "max" msgstr "" @@ -2000,7 +2238,7 @@ msgctxt "@label" msgid "Settings" msgstr "" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:455 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:466 msgctxt "@info:tooltip" msgid "Change active post-processing scripts" msgstr "" @@ -2079,23 +2317,53 @@ msgctxt "@action:label" msgid "Smoothing" msgstr "" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:208 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:38 +msgctxt "@label" +msgid "Mesh Type" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:69 +msgctxt "@label" +msgid "Normal model" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:76 +msgctxt "@label" +msgid "Print as support" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:84 +msgctxt "@label" +msgid "Don't support overlap with other models" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:92 +msgctxt "@label" +msgid "Modify settings for overlap with other models" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:100 +msgctxt "@label" +msgid "Modify settings for infill of other models" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:333 msgctxt "@action:button" msgid "Select settings" msgstr "" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:248 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:375 msgctxt "@title:window" msgid "Select Settings to Customize for this model" msgstr "" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:272 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:402 #: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:91 msgctxt "@label:textbox" msgid "Filter..." msgstr "" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:296 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:426 msgctxt "@label:checkbox" msgid "Show all" msgstr "" @@ -2467,66 +2735,66 @@ msgctxt "@label" msgid "Everything is in order! You're done with your CheckUp." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:88 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:87 msgctxt "@label:MonitorStatus" msgid "Not connected to a printer" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:90 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:89 msgctxt "@label:MonitorStatus" msgid "Printer does not accept commands" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:96 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:95 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:194 msgctxt "@label:MonitorStatus" msgid "In maintenance. Please check the printer" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:103 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:102 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:184 msgctxt "@label:MonitorStatus" msgid "Printing..." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:106 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:105 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:186 msgctxt "@label:MonitorStatus" msgid "Paused" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:109 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:108 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:188 msgctxt "@label:MonitorStatus" msgid "Preparing..." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:111 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:110 msgctxt "@label:MonitorStatus" msgid "Please remove the print" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:237 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:241 msgctxt "@label:" msgid "Resume" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:241 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:245 msgctxt "@label:" msgid "Pause" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:270 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:274 msgctxt "@label:" msgid "Abort Print" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:280 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:284 msgctxt "@window:title" msgid "Abort print" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:282 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:286 msgctxt "@label" msgid "Are you sure you want to abort the print?" msgstr "" @@ -2559,19 +2827,19 @@ msgid "Customized" msgstr "" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:157 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:593 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:595 msgctxt "@option:discardOrKeep" msgid "Always ask me this" msgstr "" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:158 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:594 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:596 msgctxt "@option:discardOrKeep" msgid "Discard and never ask again" msgstr "" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:159 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:595 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:597 msgctxt "@option:discardOrKeep" msgid "Keep and never ask again" msgstr "" @@ -2606,72 +2874,72 @@ msgctxt "@label" msgid "Brand" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:92 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:88 msgctxt "@label" msgid "Material Type" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:105 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:97 msgctxt "@label" msgid "Color" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:139 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:141 msgctxt "@label" msgid "Properties" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:141 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:143 msgctxt "@label" msgid "Density" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:156 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:158 msgctxt "@label" msgid "Diameter" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:185 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:187 msgctxt "@label" msgid "Filament Cost" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:201 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:203 msgctxt "@label" msgid "Filament weight" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:218 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:220 msgctxt "@label" msgid "Filament length" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:227 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:229 msgctxt "@label" msgid "Cost per Meter" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:241 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:243 msgctxt "@label" msgid "This material is linked to %1 and shares some of its properties." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:248 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:250 msgctxt "@label" msgid "Unlink Material" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:259 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:261 msgctxt "@label" msgid "Description" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:272 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:274 msgctxt "@label" msgid "Adhesion Information" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:298 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:300 msgctxt "@label" msgid "Print settings" msgstr "" @@ -2712,7 +2980,7 @@ msgid "Unit" msgstr "" #: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:14 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:439 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:509 msgctxt "@title:tab" msgid "General" msgstr "" @@ -2727,197 +2995,197 @@ msgctxt "@label" msgid "Language:" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:205 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:207 msgctxt "@label" msgid "Currency:" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:219 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:221 msgctxt "@label" msgid "Theme:" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:279 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:281 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:296 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:298 msgctxt "@info:tooltip" msgid "Slice automatically when changing settings." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:304 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:306 msgctxt "@option:check" msgid "Slice automatically" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:318 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:320 msgctxt "@label" msgid "Viewport behavior" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:326 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:328 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:335 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:337 msgctxt "@option:check" msgid "Display overhang" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:342 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:344 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:347 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:349 msgctxt "@action:button" msgid "Center camera when item is selected" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:356 +#: /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:361 +#: /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:370 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:372 msgctxt "@info:tooltip" msgid "Should zooming move in the direction of the mouse?" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:375 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:377 msgctxt "@action:button" msgid "Zoom toward mouse direction" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:384 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:386 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:389 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:391 msgctxt "@option:check" msgid "Ensure models are kept apart" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:397 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:399 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:402 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:404 msgctxt "@option:check" msgid "Automatically drop models to the build plate" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:414 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:416 msgctxt "@info:tooltip" msgid "Show caution message in gcode reader." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:423 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:425 msgctxt "@option:check" msgid "Caution message in gcode reader" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:430 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:432 msgctxt "@info:tooltip" msgid "Should layer be forced into compatibility mode?" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:435 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:437 msgctxt "@option:check" msgid "Force layer view compatibility mode (restart required)" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:451 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:453 msgctxt "@label" msgid "Opening and saving files" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:457 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:459 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:462 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:464 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:473 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:478 msgctxt "@option:check" msgid "Scale extremely small models" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:485 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:487 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:490 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:492 msgctxt "@option:check" msgid "Add machine prefix to job name" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:499 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:501 msgctxt "@info:tooltip" msgid "Should a summary be shown when saving a project file?" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:503 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:505 msgctxt "@option:check" msgid "Show summary dialog when saving project" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:512 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:514 msgctxt "@info:tooltip" msgid "Default behavior when opening a project file" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:520 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:522 msgctxt "@window:text" msgid "Default behavior when opening a project file: " msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:533 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:535 msgctxt "@option:openProject" msgid "Always ask" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:534 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:536 msgctxt "@option:openProject" msgid "Always open as a project" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:535 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:537 msgctxt "@option:openProject" msgid "Always import models" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:571 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:573 msgctxt "@info:tooltip" msgid "" "When you have made changes to a profile and switched to a different one, a " @@ -2925,27 +3193,27 @@ 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:580 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:582 msgctxt "@label" msgid "Override Profile" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:629 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:631 msgctxt "@label" msgid "Privacy" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:636 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:638 msgctxt "@info:tooltip" msgid "Should Cura check for updates when the program is started?" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:641 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:643 msgctxt "@option:check" msgid "Check for updates on start" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:651 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:653 msgctxt "@info:tooltip" msgid "" "Should anonymous data about your print be sent to Ultimaker? Note, no " @@ -2953,20 +3221,47 @@ msgid "" "stored." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:656 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:658 msgctxt "@option:check" msgid "Send (anonymous) print information" msgstr "" +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:674 +msgctxt "@label" +msgid "Experimental" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:680 +msgctxt "@info:tooltip" +msgid "Use multi build plate functionality" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:685 +msgctxt "@option:check" +msgid "Use multi build plate functionality (restart required)" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:694 +msgctxt "@info:tooltip" +msgid "" +"Should newly loaded models be arranged on the build plate? Used in " +"conjunction with multi build plate (EXPERIMENTAL)" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:699 +msgctxt "@option:check" +msgid "Do not arrange objects on load" +msgstr "" + #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:444 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:514 msgctxt "@title:tab" msgid "Printers" msgstr "" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:37 #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:51 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:137 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:138 msgctxt "@action:button" msgid "Activate" msgstr "" @@ -3009,7 +3304,7 @@ msgid "Waiting for a printjob" msgstr "" #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:448 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:518 msgctxt "@title:tab" msgid "Profiles" msgstr "" @@ -3035,13 +3330,13 @@ msgid "Duplicate" msgstr "" #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:113 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:201 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:182 msgctxt "@action:button" msgid "Import" msgstr "" #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:119 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:212 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:193 msgctxt "@action:button" msgid "Export" msgstr "" @@ -3109,7 +3404,7 @@ msgid "Export Profile" msgstr "" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:446 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:516 msgctxt "@title:tab" msgid "Materials" msgstr "" @@ -3126,62 +3421,62 @@ msgctxt "@action:label %1 is printer name" msgid "Printer: %1" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:149 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:150 msgctxt "@action:button" msgid "Create" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:168 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:160 msgctxt "@action:button" msgid "Duplicate" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:311 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:319 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:298 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:306 msgctxt "@title:window" msgid "Import Material" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:320 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:307 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/MaterialsPage.qml:324 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:311 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully imported material %1" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:343 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:358 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:329 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:344 msgctxt "@title:window" msgid "Export Material" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:362 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:348 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/MaterialsPage.qml:368 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:354 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully exported material to %1" msgstr "" #: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:18 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:793 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:869 msgctxt "@title:window" msgid "Add Printer" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:185 +#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:194 msgctxt "@label" msgid "Printer Name:" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:208 +#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:217 msgctxt "@action:button" msgid "Add Printer" msgstr "" @@ -3303,17 +3598,17 @@ msgctxt "@label" msgid "SVG icons" msgstr "" +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:139 +msgctxt "@label" +msgid "Linux cross-distribution application deployment" +msgstr "" + #: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:41 msgctxt "@label" msgid "Profile:" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:66 -msgctxt "@" -msgid "No Profile Available" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:104 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:102 msgctxt "@tooltip" msgid "" "Some setting/override values are different from the values stored in the " @@ -3322,37 +3617,37 @@ msgid "" "Click to open the profile manager." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:152 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:150 msgctxt "@label:textbox" msgid "Search..." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:483 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:482 msgctxt "@action:menu" msgid "Copy value to all extruders" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:498 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:497 msgctxt "@action:menu" msgid "Hide this setting" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:508 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:507 msgctxt "@action:menu" msgid "Don't show this setting" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:512 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:511 msgctxt "@action:menu" msgid "Keep this setting visible" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:531 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:530 msgctxt "@action:menu" msgid "Configure setting visiblity..." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingCategory.qml:123 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingCategory.qml:250 msgctxt "@label" msgid "" "Some hidden settings use values different from their normal calculated " @@ -3361,29 +3656,29 @@ msgid "" "Click to make these settings visible." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:62 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:61 msgctxt "@label Header for list of settings." msgid "Affects" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:67 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:66 msgctxt "@label Header for list of settings." msgid "Affected By" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:157 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:156 msgctxt "@label" msgid "" "This setting is always shared between all extruders. Changing it here will " -"change the value for all extruders" +"change the value for all extruders." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:160 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:159 msgctxt "@label" msgid "The value is resolved from per-extruder values " msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:186 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:190 msgctxt "@label" msgid "" "This setting has a value that is different from the profile.\n" @@ -3391,7 +3686,7 @@ msgid "" "Click to restore the value of the profile." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:284 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:288 msgctxt "@label" msgid "" "This setting is normally calculated, but it currently has an absolute value " @@ -3400,77 +3695,77 @@ msgid "" "Click to restore the calculated value." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:120 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:128 msgctxt "@label:listbox" msgid "Print Setup" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:120 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:128 msgctxt "@label:listbox" msgid "" "Print Setup disabled\n" "G-code files cannot be modified" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:336 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:342 msgctxt "@label Hours and minutes" msgid "00h 00min" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:354 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:359 msgctxt "@tooltip" -msgid "Time specification
      " +msgid "Time specification" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:429 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:441 msgctxt "@label" msgid "Cost specification" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:434 -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:445 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:446 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:455 msgctxt "@label m for meter" msgid "%1m" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:435 -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:446 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:447 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:456 msgctxt "@label g for grams" msgid "%1g" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:444 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:454 msgctxt "@label" msgid "Total:" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:498 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:504 msgctxt "" "@label Print estimates: m for meters, g for grams, %4 is currency and %3 is " "print cost" msgid "%1m / ~ %2g / ~ %4 %3" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:503 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:509 msgctxt "@label Print estimates: m for meters, g for grams" msgid "%1m / ~ %2g" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:586 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:591 msgctxt "@tooltip" msgid "" "Recommended Print Setup

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

      Print with finegrained control over every " "last bit of the slicing process." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:49 +#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:50 msgctxt "@title:menuitem %1 is the automatically selected material" msgid "Automatic: %1" msgstr "" @@ -3480,6 +3775,16 @@ msgctxt "@title:menu menubar:toplevel" msgid "&View" msgstr "" +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:37 +msgctxt "@action:inmenu menubar:view" +msgid "&Camera position" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:52 +msgctxt "@action:inmenu menubar:view" +msgid "&Build plate" +msgstr "" + #: /home/ruben/Projects/Cura/resources/qml/Menus/NozzleMenu.qml:40 msgctxt "@title:menuitem %1 is the nozzle currently loaded in the printer" msgid "Automatic: %1" @@ -3492,14 +3797,14 @@ msgid_plural "Print Selected Models With:" msgstr[0] "" msgstr[1] "" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ContextMenu.qml:83 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ContextMenu.qml:114 msgctxt "@title:window" msgid "Multiply Selected Model" msgid_plural "Multiply Selected Models" msgstr[0] "" msgstr[1] "" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ContextMenu.qml:108 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ContextMenu.qml:139 msgctxt "@label" msgid "Number of Copies" msgstr "" @@ -3515,7 +3820,7 @@ msgid "No printer connected" msgstr "" #: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:90 -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:138 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:139 msgctxt "@label" msgid "Extruder" msgstr "" @@ -3632,254 +3937,294 @@ msgctxt "@label" msgid "Estimated time left" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:72 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:79 msgctxt "@action:inmenu" msgid "Toggle Fu&ll Screen" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:79 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:86 msgctxt "@action:inmenu menubar:edit" msgid "&Undo" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:89 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:96 msgctxt "@action:inmenu menubar:edit" msgid "&Redo" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:99 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:106 msgctxt "@action:inmenu menubar:file" msgid "&Quit" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:107 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:114 msgctxt "@action:inmenu menubar:view" -msgid "&Reset camera position" +msgid "&3D View" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:114 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:121 +msgctxt "@action:inmenu menubar:view" +msgid "&Front View" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:128 +msgctxt "@action:inmenu menubar:view" +msgid "&Top View" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:135 +msgctxt "@action:inmenu menubar:view" +msgid "&Left Side View" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:142 +msgctxt "@action:inmenu menubar:view" +msgid "&Right Side View" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:149 msgctxt "@action:inmenu" msgid "Configure Cura..." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:121 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:156 msgctxt "@action:inmenu menubar:printer" msgid "&Add Printer..." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:127 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:162 msgctxt "@action:inmenu menubar:printer" msgid "Manage Pr&inters..." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:134 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:169 msgctxt "@action:inmenu" msgid "Manage Materials..." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:142 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:177 msgctxt "@action:inmenu menubar:profile" msgid "&Update profile with current settings/overrides" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:150 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:185 msgctxt "@action:inmenu menubar:profile" msgid "&Discard current changes" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:162 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:197 msgctxt "@action:inmenu menubar:profile" msgid "&Create profile from current settings/overrides..." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:168 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:203 msgctxt "@action:inmenu menubar:profile" msgid "Manage Profiles..." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:175 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:210 msgctxt "@action:inmenu menubar:help" msgid "Show Online &Documentation" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:183 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:218 msgctxt "@action:inmenu menubar:help" msgid "Report a &Bug" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:191 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:226 msgctxt "@action:inmenu menubar:help" msgid "&About..." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:198 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:233 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:208 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:243 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:217 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:252 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:226 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:261 msgctxt "@action:inmenu" msgid "Delete Model" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:234 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:269 msgctxt "@action:inmenu" msgid "Ce&nter Model on Platform" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:240 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:275 msgctxt "@action:inmenu menubar:edit" msgid "&Group Models" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:250 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:295 msgctxt "@action:inmenu menubar:edit" msgid "Ungroup Models" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:260 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:305 msgctxt "@action:inmenu menubar:edit" msgid "&Merge Models" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:270 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:315 msgctxt "@action:inmenu" msgid "&Multiply Model..." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:277 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:322 msgctxt "@action:inmenu menubar:edit" msgid "&Select All Models" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:287 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:332 msgctxt "@action:inmenu menubar:edit" msgid "&Clear Build Plate" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:297 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:342 msgctxt "@action:inmenu menubar:file" msgid "Re&load All Models" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:306 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:351 +msgctxt "@action:inmenu menubar:edit" +msgid "Arrange All Models To All Build Plates" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:358 msgctxt "@action:inmenu menubar:edit" msgid "Arrange All Models" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:314 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:366 msgctxt "@action:inmenu menubar:edit" msgid "Arrange Selection" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:321 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:373 msgctxt "@action:inmenu menubar:edit" msgid "Reset All Model Positions" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:328 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:380 msgctxt "@action:inmenu menubar:edit" msgid "Reset All Model &Transformations" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:335 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:387 msgctxt "@action:inmenu menubar:file" msgid "&Open File(s)..." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:343 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:395 msgctxt "@action:inmenu menubar:file" msgid "&New Project..." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:350 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:402 msgctxt "@action:inmenu menubar:help" msgid "Show Engine &Log..." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:358 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:410 msgctxt "@action:inmenu menubar:help" msgid "Show Configuration Folder" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:365 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:417 msgctxt "@action:menu" msgid "Configure setting visibility..." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:372 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:424 msgctxt "@action:menu" msgid "Browse plugins..." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:379 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:431 msgctxt "@action:menu" msgid "Installed plugins..." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:28 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:438 +msgctxt "@action:inmenu menubar:view" +msgid "Expand/Collapse Sidebar" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:26 msgctxt "@label:PrintjobStatus" msgid "Please load a 3D model" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:34 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:36 msgctxt "@label:PrintjobStatus" msgid "Ready to slice" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:36 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:38 msgctxt "@label:PrintjobStatus" msgid "Slicing..." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:38 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:40 msgctxt "@label:PrintjobStatus %1 is target operation" msgid "Ready to %1" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:40 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:42 msgctxt "@label:PrintjobStatus" msgid "Unable to Slice" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:42 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:44 msgctxt "@label:PrintjobStatus" msgid "Slicing unavailable" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:162 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:171 +msgctxt "@info:tooltip" +msgid "Slice current printjob" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:171 +msgctxt "@info:tooltip" +msgid "Cancel slicing process" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:183 msgctxt "@label:Printjob" msgid "Prepare" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:162 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:183 msgctxt "@label:Printjob" msgid "Cancel" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:302 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:317 msgctxt "@info:tooltip" msgid "Select the active output device" msgstr "" #: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:19 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:620 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:696 msgctxt "@title:window" msgid "Open file(s)" msgstr "" @@ -3902,116 +4247,116 @@ msgctxt "@title:window" msgid "Ultimaker Cura" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:81 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:102 msgctxt "@title:menu menubar:toplevel" msgid "&File" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:98 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:119 msgctxt "@action:inmenu menubar:file" msgid "&Save Selection to File" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:107 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:128 msgctxt "@title:menu menubar:file" msgid "Save &As..." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:118 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:139 msgctxt "@title:menu menubar:file" -msgid "Save project" +msgid "Save &Project..." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:141 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:162 msgctxt "@title:menu menubar:toplevel" msgid "&Edit" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:158 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:179 msgctxt "@title:menu" msgid "&View" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:163 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:184 msgctxt "@title:menu" msgid "&Settings" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:165 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:186 msgctxt "@title:menu menubar:toplevel" msgid "&Printer" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:175 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:187 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:196 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:208 msgctxt "@title:menu" msgid "&Material" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:176 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:188 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:197 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:209 msgctxt "@title:menu" msgid "&Profile" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:180 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:201 msgctxt "@action:inmenu" msgid "Set as Active Extruder" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:198 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:219 msgctxt "@title:menu menubar:toplevel" msgid "E&xtensions" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:232 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:253 msgctxt "@title:menu menubar:toplevel" msgid "P&lugins" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:240 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:261 msgctxt "@title:menu menubar:toplevel" msgid "P&references" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:248 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:269 msgctxt "@title:menu menubar:toplevel" msgid "&Help" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:330 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:351 msgctxt "@action:button" msgid "Open File" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:442 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:512 msgctxt "@title:tab" msgid "Settings" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:478 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:554 msgctxt "@title:window" msgid "New project" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:479 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:555 msgctxt "@info:question" msgid "" "Are you sure you want to start a new project? This will clear the build " "plate and any unsaved settings." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:721 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:797 msgctxt "@window:title" msgid "Install Plugin" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:728 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:804 msgctxt "@title:window" msgid "Open File(s)" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:731 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:807 msgctxt "@text:window" msgid "" "We have found one or more G-Code files within the files you have selected. " @@ -4039,89 +4384,74 @@ msgctxt "@action:label" msgid "Don't show project summary on save again" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:264 -msgctxt "@action:button" -msgid "Save" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:74 -msgctxt "@title:tab" -msgid "Prepare" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:100 -msgctxt "@title:tab" -msgid "Monitor" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:163 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:175 msgctxt "@label" msgid "Layer Height" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:323 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:345 msgctxt "@tooltip" msgid "" "A custom profile is currently active. To enable the quality slider, choose a " "default quality profile in Custom tab" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:340 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:362 msgctxt "@label" msgid "Print Speed" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:350 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:374 msgctxt "@label" msgid "Slower" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:361 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:385 msgctxt "@label" msgid "Faster" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:388 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:423 msgctxt "@tooltip" msgid "" "You have modified some profile settings. If you want to change these go to " "custom mode." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:413 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:446 msgctxt "@label" msgid "Infill" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:633 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:668 msgctxt "@label" msgid "" "Gradual infill will gradually increase the amount of infill towards the top." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:645 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:680 msgctxt "@label" msgid "Enable gradual" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:712 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:747 msgctxt "@label" msgid "Generate Support" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:746 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:781 msgctxt "@label" msgid "" "Generate structures to support parts of the model which have overhangs. " "Without these structures, such parts would collapse during printing." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:764 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:799 msgctxt "@label" msgid "Support Extruder" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:816 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:851 msgctxt "@label" msgid "" "Select which extruder to use for support. This will build up supporting " @@ -4129,19 +4459,19 @@ msgid "" "mid air." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:839 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:874 msgctxt "@label" msgid "Build Plate Adhesion" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:894 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:929 msgctxt "@label" msgid "" "Enable printing a brim or raft. This will add a flat area around or under " "your object which is easy to cut off afterwards." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:934 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:969 msgctxt "@label" msgid "" "Need help improving your prints?
      Read the Ultimaker " @@ -4160,7 +4490,7 @@ msgctxt "@title:window" msgid "Open project file" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:72 +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:93 msgctxt "@text:window" msgid "" "This is a Cura project file. Would you like to open it as a project or " @@ -4168,11 +4498,16 @@ msgid "" msgstr "" #: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:103 +msgctxt "@text:window" +msgid "Remember my choice" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:122 msgctxt "@action:button" msgid "Open as project" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:122 +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:131 msgctxt "@action:button" msgid "Import models" msgstr "" @@ -4182,21 +4517,36 @@ msgctxt "@title:window" msgid "Engine Log" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:242 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:245 msgctxt "@label" msgid "Material" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:349 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:352 msgctxt "@label" -msgid "Check compatibility" +msgid "Check compatibility" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:369 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:372 msgctxt "@tooltip" msgid "Click to check the material compatibility on Ultimaker.com." msgstr "" +#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:211 +msgctxt "@option:check" +msgid "See only current build plate" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:227 +msgctxt "@action:button" +msgid "Arrange to all build plates" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:247 +msgctxt "@action:button" +msgid "Arrange current build plate" +msgstr "" + #: MachineSettingsAction/plugin.json msgctxt "description" msgid "" @@ -4290,6 +4640,26 @@ msgctxt "name" msgid "USB printing" msgstr "" +#: PrepareStage/plugin.json +msgctxt "description" +msgid "Provides a prepare stage in Cura." +msgstr "" + +#: PrepareStage/plugin.json +msgctxt "name" +msgid "Prepare Stage" +msgstr "" + +#: CuraLiveScriptingPlugin/plugin.json +msgctxt "description" +msgid "Provides an edit window for direct script editing." +msgstr "" + +#: CuraLiveScriptingPlugin/plugin.json +msgctxt "name" +msgid "Live scripting tool" +msgstr "" + #: RemovableDriveOutputDevice/plugin.json msgctxt "description" msgid "Provides removable drive hotplugging and writing support." @@ -4310,6 +4680,16 @@ msgctxt "name" msgid "UM3 Network Connection" msgstr "" +#: MonitorStage/plugin.json +msgctxt "description" +msgid "Provides a monitor stage in Cura." +msgstr "" + +#: MonitorStage/plugin.json +msgctxt "name" +msgid "Monitor Stage" +msgstr "" + #: FirmwareUpdateChecker/plugin.json msgctxt "description" msgid "Checks for firmware updates." @@ -4323,8 +4703,8 @@ msgstr "" #: CuraSolidWorksPlugin/plugin.json msgctxt "description" msgid "" -"Gives you the possibility to open certain files via SolidWorks itself. These " -"are then converted and loaded into Cura" +"Gives you the possibility to open certain files using SolidWorks itself. " +"Conversion is done by this plugin and additional optimizations." msgstr "" #: CuraSolidWorksPlugin/plugin.json @@ -4392,6 +4772,16 @@ msgctxt "name" msgid "Legacy Cura Profile Reader" msgstr "" +#: CuraBlenderPlugin/plugin.json +msgctxt "description" +msgid "Helps to open Blender files directly in Cura." +msgstr "" + +#: CuraBlenderPlugin/plugin.json +msgctxt "name" +msgid "Blender Integration (experimental)" +msgstr "" + #: GCodeProfileReader/plugin.json msgctxt "description" msgid "Provides support for importing profiles from g-code files." @@ -4552,6 +4942,18 @@ 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." diff --git a/resources/i18n/de_DE/cura.po b/resources/i18n/de_DE/cura.po index 211e75c2bc..250e3e5e1b 100644 --- a/resources/i18n/de_DE/cura.po +++ b/resources/i18n/de_DE/cura.po @@ -1,22 +1,24 @@ # Cura -# Copyright (C) 2017 Ultimaker +# Copyright (C) 2018 Ultimaker # This file is distributed under the same license as the Cura package. -# Ruben Dulek , 2017. -# +# Ruben Dulek , 2018. +# msgid "" msgstr "" -"Project-Id-Version: Cura 3.0\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-11-21 16:58+0100\n" -"PO-Revision-Date: 2017-11-30 13:05+0100\n" +"Project-Id-Version: Cura 3.2\n" +"Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" +"POT-Creation-Date: 2018-01-29 09:48+0000\n" +"PO-Revision-Date: 2018-02-12 13:25+0100\n" "Last-Translator: Bothof \n" "Language-Team: German\n" "Language: de_DE\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 2.0.4\n" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:29 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:26 msgctxt "@action" msgid "Machine Settings" msgstr "Geräteeinstellungen" @@ -53,12 +55,11 @@ msgstr "Zu Doodle3D Connect verbinden" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:87 #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:155 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:874 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:646 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:875 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:659 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:370 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrintWindow.qml:78 -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:104 -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:99 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:355 #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:188 #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:376 #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:139 @@ -98,7 +99,7 @@ msgctxt "@info:tooltip" msgid "Open the Doodle3D Connect web interface" msgstr "Doodle3D Connect Web-Schnittstelle öffnen" -#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:34 +#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:33 msgctxt "@item:inmenu" msgid "Show Changelog" msgstr "Änderungsprotokoll anzeigen" @@ -113,78 +114,83 @@ 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:26 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:27 msgctxt "@item:inmenu" msgid "USB printing" msgstr "USB-Drucken" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:27 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:28 msgctxt "@action:button Preceded by 'Ready to'." msgid "Print via USB" msgstr "Über USB drucken" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:28 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:29 msgctxt "@info:tooltip" msgid "Print via USB" msgstr "Über USB drucken" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:30 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:31 msgctxt "@info:status" msgid "Connected via USB" msgstr "Über USB verbunden" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:154 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:183 msgctxt "@info:status" msgid "Unable to start a new job because the printer is busy or not connected." msgstr "Es kann kein neuer Auftrag gestartet werden, da der Drucker beschäftigt oder nicht angeschlossen ist." -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:154 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:183 msgctxt "@info:title" msgid "Printer Unavailable" msgstr "Drucker nicht verfügbar" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:457 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:485 msgctxt "@info:status" msgid "This printer does not support USB printing because it uses UltiGCode flavor." -msgstr "Der Drucker unterstützt keinen USB-Druck, da er die UltiGCode-Variante verwendet." +msgstr "Der Drucker unterstützt keinen USB-Druck, da er UltiGCode verwendet." -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:457 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:485 msgctxt "@info:title" msgid "USB Printing" msgstr "USB-Drucken" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:461 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:489 msgctxt "@info:status" msgid "Unable to start a new job because the printer does not support usb printing." msgstr "Es kann kein neuer Auftrag gestartet werden, da der Drucker keinen Druck über USB unterstützt." -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:461 -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:108 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:489 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:103 #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:146 #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:158 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:945 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1349 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1417 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:946 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1418 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1496 msgctxt "@info:title" msgid "Warning" msgstr "Warnhinweis" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:108 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:103 msgctxt "@info" msgid "Unable to update firmware because there are no printers connected." msgstr "Die Firmware kann nicht aktualisiert werden, da keine Drucker angeschlossen sind." -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:122 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:117 #, python-format msgctxt "@info" msgid "Could not find firmware required for the printer at %s." msgstr "Die für den Drucker unter %s erforderliche Firmware wurde nicht gefunden." -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:122 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:117 msgctxt "@info:title" msgid "Printer Firmware" msgstr "Drucker-Firmware" +#: /home/ruben/Projects/Cura/plugins/PrepareStage/__init__.py:12 +msgctxt "@item:inmenu" +msgid "Prepare" +msgstr "Vorbereiten" + #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:23 msgctxt "@action:button Preceded by 'Ready to'." msgid "Save to Removable Drive" @@ -228,11 +234,11 @@ 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:132 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:692 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:700 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:146 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:693 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:701 #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:153 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1358 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:160 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1427 msgctxt "@info:title" msgid "Error" msgstr "Fehler" @@ -282,7 +288,7 @@ msgid "Removable Drive" msgstr "Wechseldatenträger" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:109 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:53 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:51 msgctxt "@action:button Preceded by 'Ready to'." msgid "Print over network" msgstr "Drucken über Netzwerk" @@ -290,7 +296,7 @@ msgstr "Drucken über Netzwerk" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:110 msgctxt "@properties:tooltip" msgid "Print over network" -msgstr "Drücken über Netzwerk" +msgstr "Drucken über Netzwerk" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:159 msgctxt "@info:status" @@ -396,110 +402,110 @@ msgctxt "@info:title" msgid "Printer Status" msgstr "Druckerstatus" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:691 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:692 #, python-brace-format msgctxt "@info:status" msgid "Unable to start a new print job. No Printcore loaded in slot {0}" msgstr "Es kann kein neuer Druckauftrag gestartet werden. Kein PrintCore in Steckplatz {0} geladen." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:699 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:700 #, python-brace-format msgctxt "@info:status" msgid "Unable to start a new print job. No material loaded in slot {0}" msgstr "Es kann kein neuer Druckauftrag gestartet werden. Kein Material in Steckplatz {0} geladen." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:709 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:710 #, python-brace-format msgctxt "@label" msgid "Not enough material for spool {0}." msgstr "Material für Spule {0} unzureichend." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:719 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:720 #, python-brace-format msgctxt "@label" msgid "Different PrintCore (Cura: {0}, Printer: {1}) selected for extruder {2}" msgstr "Abweichender PrintCore (Cura: {0}, Drucker: {1}) für Extruder {2} gewählt" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:733 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:734 #, 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/NetworkPrinterOutputDevice.py:741 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:742 #, python-brace-format msgctxt "@label" msgid "PrintCore {0} is not properly calibrated. XY calibration needs to be performed on the printer." msgstr "PrintCore {0} ist nicht korrekt kalibriert. XY-Kalibrierung muss auf dem Drucker ausgeführt werden." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:746 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:747 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/NetworkPrinterOutputDevice.py:747 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:748 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/NetworkPrinterOutputDevice.py:753 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:754 msgctxt "@window:title" msgid "Mismatched configuration" msgstr "Konfiguration nicht übereinstimmend" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:864 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:262 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:865 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:258 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/NetworkPrinterOutputDevice.py:873 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:874 msgctxt "@info:status" msgid "Sending data to printer" msgstr "Daten werden zum Drucker gesendet" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:873 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:874 msgctxt "@info:title" msgid "Sending Data" msgstr "Daten werden gesendet" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:944 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:945 msgctxt "@info:status" msgid "Unable to send data to printer. Is another job still active?" msgstr "Daten können nicht zum Drucker gesendet werden. Ist noch ein weiterer Auftrag in Bearbeitung?" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1085 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1087 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:196 msgctxt "@label:MonitorStatus" msgid "Aborting print..." msgstr "Drucken wird abgebrochen..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1091 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1093 msgctxt "@label:MonitorStatus" msgid "Print aborted. Please check the printer" msgstr "Drucken wurde abgebrochen. Den Drucker überprüfen" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1097 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1099 msgctxt "@label:MonitorStatus" msgid "Pausing print..." msgstr "Drucken wird pausiert..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1099 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1101 msgctxt "@label:MonitorStatus" msgid "Resuming print..." msgstr "Drucken wird fortgesetzt..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1289 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1291 msgctxt "@window:title" msgid "Sync with your printer" msgstr "Synchronisieren Ihres Druckers" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1291 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1293 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/NetworkPrinterOutputDevice.py:1293 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1295 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." @@ -520,145 +526,204 @@ msgid "{printer_name} has finished printing '{job_name}'. Please collect the pri msgstr "{printer_name} hat den Druck von '{job_name}‘ beendet. Bitte holen Sie den Druck ab und bestätigen Sie das Räumen des Druckbetts." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:115 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:520 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:533 #, python-brace-format msgid "{printer_name} is reserved to print '{job_name}'. Please change the printer's configuration to match the job, for it to start printing." msgstr "{printer_name} ist für das Drucken von '{job_name}‘ reserviert. Bitte ändern Sie die Druckerkonfiguration passend für den Auftrag, um mit dem Drucken zu beginnen." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:278 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:277 msgctxt "@info:status" msgid "Unable to send new print job: this 3D printer is not (yet) set up to host a group of connected Ultimaker 3 printers." msgstr "Es kann kein neuer Druckauftrag gesendet werden: Dieser 3D-Drucker ist (noch) nicht für das Hosten einer Gruppe verbundener Ultimaker 3-Drucker eingerichtet." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:410 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:423 #, python-brace-format msgctxt "@info:status" msgid "Unable to send print job to group {cluster_name}." msgstr "Es können keine Druckaufträge an die Gruppe {cluster_name} gesendet werden." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:418 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:431 #, python-brace-format msgctxt "@info:status" msgid "Sent {file_name} to group {cluster_name}." msgstr "{file_name} wurde an Gruppe {cluster_name} gesendet." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:423 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:436 msgctxt "@action:button" msgid "Show print jobs" msgstr "Druckaufträge anzeigen" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:424 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:437 msgctxt "@info:tooltip" msgid "Opens the print jobs interface in your browser." msgstr "Öffnet die Schaltfläche für Druckaufträge in Ihrem Browser." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:489 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:502 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:239 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:47 -msgctxt "@label" +msgctxt "@label Printer name" msgid "Unknown" msgstr "Unbekannt" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:492 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:505 #, 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/NetworkClusterPrinterOutputDevice.py:494 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:497 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:507 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:510 msgctxt "@info:status" msgid "Print finished" msgstr "Druck vollendet" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:522 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:525 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:535 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:538 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:282 msgctxt "@label:status" msgid "Action required" msgstr "Handlung erforderlich" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:643 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:656 #, python-brace-format msgctxt "@info:progress" msgid "Sending {file_name} to group {cluster_name}" msgstr "{file_name} wird an Gruppe {cluster_name} gesendet" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.py:19 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.py:17 msgctxt "@action" msgid "Connect via Network" msgstr "Anschluss über Netzwerk" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:64 +#: /home/ruben/Projects/Cura/plugins/MonitorStage/__init__.py:12 +msgctxt "@item:inmenu" +msgid "Monitor" +msgstr "Überwachen" + +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:66 #, python-brace-format msgctxt "@info Don't translate {machine_name}, since it gets replaced by a printer name!" msgid "New features are available for your {machine_name}! It is recommended to update the firmware on your printer." msgstr "Für Ihren {machine_name} sind neue Funktionen verfügbar! Es wird empfohlen, ein Firmware-Update für Ihren Drucker auszuführen." -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:65 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:67 #, python-format msgctxt "@info:title The %s gets replaced with the printer name." msgid "New %s firmware available" msgstr "Neue Firmware für %s verfügbar" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:66 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:68 msgctxt "@action:button" msgid "How to update" msgstr "Anleitung für die Aktualisierung" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:77 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:79 msgctxt "@info" msgid "Could not access update information." msgstr "Zugriff auf Update-Informationen nicht möglich." -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksReader.py:199 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksReader.py:579 msgctxt "@info:status" -msgid "Errors appeared while opening your SolidWorks file! Please check, whether it is possible to open your file in SolidWorks itself without any problems as well!" -msgstr "Beim Öffnen Ihrer SolidWorks Datei trat ein Fehler auf! Überprüfen Sie bitte, ob sich Ihre Datei in SolidWorks ohne Probleme öffnen lässt!" +msgid "SolidWorks reported errors, while opening your file. We recommend to solve these issues inside SolidWorks itself." +msgstr "SolidWorks hat beim Öffnen Ihrer Datei Fehler gemeldet. Wir empfehlen, diese Probleme direkt in SolidWorks zu lösen." -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:31 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksReader.py:591 +msgctxt "@info:status" +msgid "" +"Found no models inside your drawing. Could you please check it's content again and make sure one part or assembly is inside?\n" +"\n" +" Thanks!." +msgstr "" +"Keine Modelle in Ihrer Zeichnung gefunden. Bitte überprüfen Sie den Inhalt erneut und stellen Sie sicher, dass ein Teil oder eine Baugruppe enthalten ist.\n" +"\n" +" Danke!" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksReader.py:595 +msgctxt "@info:status" +msgid "" +"Found more then one part or assembly inside your drawing. We currently only support drawings with exactly one part or assembly inside.\n" +"\n" +"Sorry!" +msgstr "" +"Es wurde mehr als ein Teil oder eine Baugruppe in Ihrer Zeichnung gefunden. Wir unterstützen derzeit nur Zeichnungen mit exakt einem Teil oder einer Baugruppe.\n" +"\n" +"Es tut uns leid!" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:25 msgctxt "@item:inlistbox" msgid "SolidWorks part file" msgstr "SolidWorks Teiledatei" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:35 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:29 msgctxt "@item:inlistbox" msgid "SolidWorks assembly file" msgstr "SolidWorks Einbaudatei" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.py:21 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:33 +msgctxt "@item:inlistbox" +msgid "SolidWorks drawing file" +msgstr "SolidWorks Zeichnungsdatei" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:48 +msgctxt "@info:status" +msgid "" +"Dear customer,\n" +"We could not find a valid installation of SolidWorks on your system. That means that either SolidWorks is not installed or you don't own an valid license. Please make sure that running SolidWorks itself works without issues and/or contact your ICT.\n" +"\n" +"With kind regards\n" +" - Thomas Karl Pietrowski" +msgstr "" +"Sehr geehrter Kunde,\n" +"wir konnten keine gültige Installation von SolidWorks auf Ihrem System finden. Das bedeutet, dass SolidWorks entweder nicht installiert ist oder sie keine gültige Lizenz besitzen. Stellen Sie bitte sicher, dass SolidWorks problemlos läuft und/oder wenden Sie sich an Ihre ICT-Abteilung.\n" +"\n" +"Mit freundlichen Grüßen\n" +" - Thomas Karl Pietrowski" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:57 +msgctxt "@info:status" +msgid "" +"Dear customer,\n" +"You are currently running this plugin on an operating system other than Windows. This plugin will only work on Windows with SolidWorks installed, including an valid license. Please install this plugin on a Windows machine with SolidWorks installed.\n" +"\n" +"With kind regards\n" +" - Thomas Karl Pietrowski" +msgstr "" +"Sehr geehrter Kunde,\n" +"Sie verwenden dieses Plugin derzeit auf einem anderen Betriebssystem als Windows. Dieses Plugin funktioniert nur auf Windows mit installiertem SolidWorks und einer gültigen Lizenz. Installieren Sie dieses Plugin bitte auf einem Windows-Rechner mit installiertem SolidWorks.\n" +"\n" +"Mit freundlichen Grüßen\n" +" - Thomas Karl Pietrowski" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksDialogHandler.py:70 msgid "Configure" msgstr "Konfigurieren" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/CommonComReader.py:135 -#, python-format -msgctxt "@info:status" -msgid "Error while starting %s!" -msgstr "Fehler beim Starten %s!" +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksDialogHandler.py:71 +msgid "Installation guide for SolidWorks macro" +msgstr "Installationsanleitung für SolidWorks Makro" #: /home/ruben/Projects/Cura/plugins/SimulationView/__init__.py:14 msgctxt "@item:inlistbox" -msgid "Simulation view" -msgstr "Simulationsansicht" +msgid "Layer view" +msgstr "Schichtenansicht" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:100 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:103 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:101 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:104 msgctxt "@info:title" msgid "Simulation View" msgstr "Simulationsansicht" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.py:26 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.py:25 msgid "Modify G-Code" msgstr "G-Code ändern" #: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:43 msgctxt "@info" -msgid "Cura collects anonymised slicing statistics. You can disable this in the preferences." -msgstr "Cura erfasst anonymisierte Slice-Informationen. Sie können dies in den Einstellungen deaktivieren." +msgid "Cura collects anonymized usage statistics." +msgstr "Cura erfasst anonymisierte Nutzungsstatistiken." #: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:46 msgctxt "@info:title" @@ -667,14 +732,43 @@ msgstr "Daten werden erfasst" #: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:48 msgctxt "@action:button" -msgid "Dismiss" -msgstr "Verwerfen" +msgid "Allow" +msgstr "Zulassen" + +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:49 +msgctxt "@action:tooltip" +msgid "Allow Cura to send anonymized usage statistics to help prioritize future improvements to Cura. Some of your preferences and settings are sent, the Cura version and a hash of the models you're slicing." +msgstr "Damit lassen Sie zu, dass Cura anonymisierte Nutzungsstatistiken sendet, um zukünftige Verbesserungen für Cura zu definieren. Einige Ihrer Präferenzen und Einstellungen, die Cura-Version und ein Hash der Modelle, die Sie slicen, werden gesendet." + +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:50 +msgctxt "@action:button" +msgid "Disable" +msgstr "Deaktivieren" + +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:51 +msgctxt "@action:tooltip" +msgid "Don't allow Cura to send anonymized usage statistics. You can enable it again in the preferences." +msgstr "Damit wird Cura die Erlaubnis zum Senden von anonymisierten Nutzungsstatistiken entzogen. Sie können die Erlaubnis in den Einstellungen erneut aktivieren." #: /home/ruben/Projects/Cura/plugins/LegacyProfileReader/__init__.py:14 msgctxt "@item:inlistbox" msgid "Cura 15.04 profiles" msgstr "Cura 15.04-Profile" +#: /home/ruben/Projects/Cura/plugins/CuraBlenderPlugin/__init__.py:15 +msgctxt "@item:inlistbox" +msgid "Blender file" +msgstr "Blender-Datei" + +#: /home/ruben/Projects/Cura/plugins/CuraBlenderPlugin/CadIntegrationUtils/CommonReader.py:199 +msgctxt "@info:status" +msgid "" +"Could not export using \"{}\" quality!\n" +"Felt back to \"{}\"." +msgstr "" +"Exportieren in \"{}\" Qualität nicht möglich!\n" +"Zurückgeschaltet auf \"{}\"." + #: /home/ruben/Projects/Cura/plugins/GCodeProfileReader/__init__.py:14 #: /home/ruben/Projects/Cura/plugins/GCodeReader/__init__.py:14 msgctxt "@item:inlistbox" @@ -706,49 +800,49 @@ msgctxt "@item:inlistbox" msgid "GIF Image" msgstr "GIF-Bilddatei" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:269 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:299 msgctxt "@info:status" msgid "Unable to slice with the current material as it is incompatible with the selected machine or configuration." msgstr "Slicing mit dem aktuellen Material nicht möglich, da es mit der gewählten Maschine oder Konfiguration nicht kompatibel ist." -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:269 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:297 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:319 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:299 #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:327 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:336 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:349 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:357 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:366 msgctxt "@info:title" msgid "Unable to slice" msgstr "Slicing nicht möglich" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:296 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:326 #, python-brace-format msgctxt "@info:status" msgid "Unable to slice with the current settings. The following settings have errors: {0}" msgstr "Die aktuellen Einstellungen lassen kein Schneiden (Slicing) zu. Die folgenden Einstellungen sind fehlerhaft:{0}" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:318 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:348 #, python-brace-format msgctxt "@info:status" msgid "Unable to slice due to some per-model settings. The following settings have errors on one or more models: {error_labels}" msgstr "Aufgrund der Pro-Modell-Einstellungen ist kein Schneiden (Slicing) möglich. Die folgenden Einstellungen sind für ein oder mehrere Modelle fehlerhaft: {error_labels}" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:326 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:356 msgctxt "@info:status" msgid "Unable to slice because the prime tower or prime position(s) are invalid." msgstr "Schneiden (Slicing) ist nicht möglich, da der Einzugsturm oder die Einzugsposition(en) ungültig ist (sind)." -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:335 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:365 msgctxt "@info:status" msgid "Nothing to slice because none of the models fit the build volume. Please scale or rotate models to fit." msgstr "Es ist kein Objekt zum Schneiden vorhanden, da keines der Modelle der Druckabmessung entspricht. Bitte die Modelle passend skalieren oder drehen." #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:50 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:239 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:242 msgctxt "@info:status" msgid "Processing Layers" msgstr "Schichten werden verarbeitet" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:239 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:242 msgctxt "@info:title" msgid "Information" msgstr "Informationen" @@ -785,14 +879,14 @@ msgstr "Siemens NX Plugin-Dateien konnten nicht kopiert werden. Überprüfen Sie msgid "Failed to install Siemens NX plugin. Could not set environment variable UGII_USER_DIR for Siemens NX." msgstr "Siemens NX Plugin konnte nicht installiert werden. Umgebungsvariable UGII_USER_DIR für Siemens NX konnte nicht zugewiesen werden." -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:167 -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:585 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:165 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:590 msgctxt "@title:tab" msgid "Recommended" msgstr "Empfohlen" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:169 -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:590 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:167 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:595 msgctxt "@title:tab" msgid "Custom" msgstr "Benutzerdefiniert" @@ -803,24 +897,24 @@ msgctxt "@item:inlistbox" msgid "3MF File" msgstr "3MF-Datei" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:126 -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1142 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:159 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1185 msgctxt "@label" msgid "Nozzle" msgstr "Düse" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:164 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:152 #, python-brace-format msgctxt "@info:status" msgid "Failed to get plugin ID from {0}" msgstr "Plugin-ID von {0} wurde nicht erhalten" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:165 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:153 msgctxt "@info:tile" msgid "Warning" msgstr "Warnhinweis" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:203 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:191 msgctxt "@window:title" msgid "Plugin browser" msgstr "Plugin-Browser" @@ -835,18 +929,18 @@ msgctxt "@item:inlistbox" msgid "G File" msgstr "G-Datei" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:314 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:321 msgctxt "@info:status" msgid "Parsing G-code" msgstr "G-Code parsen" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:316 -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:426 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:323 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:464 msgctxt "@info:title" msgid "G-code Details" msgstr "G-Code-Details" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:424 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:462 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,6 +951,16 @@ 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:17 +msgctxt "@item:inlistbox" +msgid "Profile Assistant" +msgstr "Profilassistent" + #: /home/ruben/Projects/Cura/plugins/3MFWriter/__init__.py:30 msgctxt "@item:inlistbox" msgid "3MF file" @@ -888,142 +992,116 @@ msgctxt "@action" msgid "Level build plate" msgstr "Druckbett nivellieren" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:89 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:98 msgctxt "@tooltip" msgid "Outer Wall" msgstr "Außenwand" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:90 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:99 msgctxt "@tooltip" msgid "Inner Walls" msgstr "Innenwände" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:91 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:100 msgctxt "@tooltip" msgid "Skin" msgstr "Außenhaut" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:92 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:101 msgctxt "@tooltip" msgid "Infill" msgstr "Füllung" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:93 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:102 msgctxt "@tooltip" msgid "Support Infill" msgstr "Stützstruktur-Füllung" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:94 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:103 msgctxt "@tooltip" msgid "Support Interface" msgstr "Stützstruktur-Schnittstelle" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:95 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:104 msgctxt "@tooltip" msgid "Support" msgstr "Stützstruktur" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:96 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:105 msgctxt "@tooltip" msgid "Skirt" msgstr "Skirt" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:97 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:106 msgctxt "@tooltip" msgid "Travel" msgstr "Bewegungen" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:98 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:107 msgctxt "@tooltip" msgid "Retractions" msgstr "Einzüge" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:99 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:108 msgctxt "@tooltip" msgid "Other" msgstr "Sonstige" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:199 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:231 msgctxt "@label unknown material" msgid "Unknown" msgstr "Unbekannt" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:284 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:318 #, python-brace-format msgctxt "@label" msgid "Pre-sliced file {0}" msgstr "Vorgeschnittene Datei {0}" -#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:469 +#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:440 msgctxt "@item:material" msgid "No material loaded" msgstr "Kein Material geladen" -#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:476 +#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:447 msgctxt "@item:material" msgid "Unknown material" msgstr "Unbekanntes Material" -#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:30 -msgctxt "@info:status" -msgid "Finding new location for objects" -msgstr "Neue Position für Objekte finden" - -#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:34 -msgctxt "@info:title" -msgid "Finding Location" -msgstr "Position finden" - -#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:89 -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:83 -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/ArrangeObjectsJob.py:90 -msgctxt "@info:title" -msgid "Can't Find Location" -msgstr "Kann Position nicht finden" - -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:431 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:113 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:437 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:120 msgctxt "@title:window" msgid "File Already Exists" msgstr "Datei bereits vorhanden" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:432 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:114 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:438 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:121 #, 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:815 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:872 msgctxt "@label" msgid "Custom" msgstr "Benutzerdefiniert" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:819 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:876 msgctxt "@label" msgid "Custom Material" msgstr "Benutzerdefiniertes Material" -#: /home/ruben/Projects/Cura/cura/Settings/ExtrudersModel.py:182 -msgctxt "@menuitem" -msgid "Global" -msgstr "Global" - -#: /home/ruben/Projects/Cura/cura/Settings/ExtrudersModel.py:229 +#: /home/ruben/Projects/Cura/cura/Settings/ExtrudersModel.py:205 msgctxt "@menuitem" msgid "Not overridden" msgstr "Nicht überschrieben" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:117 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:124 msgctxt "@info:status" msgid "The selected material is incompatible with the selected machine or configuration." msgstr "Das gewählte Material ist mit der gewählten Maschine oder Konfiguration nicht kompatibel." -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:118 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:125 #: /home/ruben/Projects/Cura/cura/Settings/MaterialManager.py:24 msgctxt "@info:title" msgid "Incompatible Material" @@ -1044,67 +1122,89 @@ msgctxt "@action" msgid "Undo changing the material diameter." msgstr "Änderung des Materialdurchmessers rückgängig machen" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:144 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:151 #, 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:151 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:158 #, 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:156 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:163 #, 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:157 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:164 msgctxt "@info:title" msgid "Export succeeded" msgstr "Export erfolgreich ausgeführt" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:183 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:205 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:214 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:248 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:190 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:211 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:271 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to import profile from {0}: {1}" msgstr "Import des Profils aus Datei {0} fehlgeschlagen: {1}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:216 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:252 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:230 +#, python-brace-format +msgctxt "@info:status Don't translate the XML tags or !" +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:240 +#, python-brace-format +msgctxt "@info:status Don't translate the XML tags or !" +msgid "The machine defined in profile {0} doesn't match with your current machine, could not import it." +msgstr "Die Maschine, die im Profil {0} definiert wurde, entspricht nicht Ihrer derzeitigen Maschine. Importieren nicht möglich." + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:274 #, python-brace-format msgctxt "@info:status" msgid "Successfully imported profile {0}" msgstr "Profil erfolgreich importiert {0}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:255 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:277 +#, 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:280 #, 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:274 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:298 msgctxt "@label" msgid "Custom profile" msgstr "Benutzerdefiniertes Profil" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:285 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:313 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:321 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:349 #, python-brace-format msgctxt "@info:status" msgid "Could not find a quality type {0} for the current configuration." msgstr "Es konnte keine Qualitätsangabe {0} für die vorliegende Konfiguration gefunden werden." +#: /home/ruben/Projects/Cura/cura/ObjectsModel.py:46 +#, python-brace-format +msgctxt "@label" +msgid "Group #{group_nr}" +msgstr "Gruppe #{group_nr}" + #: /home/ruben/Projects/Cura/cura/BuildVolume.py:100 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." @@ -1115,142 +1215,170 @@ msgctxt "@info:title" msgid "Build Volume" msgstr "Produktabmessungen" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:34 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:25 msgctxt "@info:status" msgid "Multiplying and placing objects" msgstr "Objekte vervielfältigen und platzieren" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:35 -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:83 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:26 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:78 msgctxt "@info:title" msgid "Placing Object" msgstr "Objekt-Platzierung" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:80 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:78 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:88 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:152 +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/Arranging/ArrangeObjectsJob.py:29 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:64 +msgctxt "@info:status" +msgid "Finding new location for objects" +msgstr "Neue Position für Objekte finden" + +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:33 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:68 +msgctxt "@info:title" +msgid "Finding Location" +msgstr "Position finden" + +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:89 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:153 +msgctxt "@info:title" +msgid "Can't Find Location" +msgstr "Kann Position nicht finden" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:81 msgctxt "@title:window" msgid "Crash Report" msgstr "Crash-Bericht" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:93 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:94 msgctxt "@label crash message" msgid "" -"

      A fatal exception has occurred. Please send us this Crash Report to fix the problem

      \n" +"

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

      \n" "

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

      \n" " " -msgstr "

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

      \n

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

      \n " +msgstr "" +"

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

      \n" +"

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

      \n" +" " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:101 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:102 msgctxt "@title:groupbox" msgid "System information" msgstr "Systeminformationen" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:109 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:110 msgctxt "@label unknown version of Cura" msgid "Unknown" msgstr "Unbekannt" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:111 -#, python-brace-format -msgctxt "@label Cura version" -msgid "Cura version: {version}
      " -msgstr "Cura-Version: {version}
      " - #: /home/ruben/Projects/Cura/cura/CrashHandler.py:112 -#, python-brace-format -msgctxt "@label Platform" -msgid "Platform: {platform}
      " -msgstr "Plattform: {platform}
      " +msgctxt "@label Cura version number" +msgid "Cura version" +msgstr "Cura-Version" #: /home/ruben/Projects/Cura/cura/CrashHandler.py:113 -#, python-brace-format -msgctxt "@label Qt version" -msgid "Qt version: {qt}
      " -msgstr "Qt-Version: {qt}
      " +msgctxt "@label Type of platform" +msgid "Platform" +msgstr "Plattform" #: /home/ruben/Projects/Cura/cura/CrashHandler.py:114 -#, python-brace-format -msgctxt "@label PyQt version" -msgid "PyQt version: {pyqt}
      " -msgstr "PyQt-Version: {pyqt}
      " +msgctxt "@label" +msgid "Qt version" +msgstr "Qt Version" #: /home/ruben/Projects/Cura/cura/CrashHandler.py:115 -#, python-brace-format -msgctxt "@label OpenGL" -msgid "OpenGL: {opengl}
      " -msgstr "OpenGL: {opengl}
      " +msgctxt "@label" +msgid "PyQt version" +msgstr "PyQt Version" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:130 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:116 +msgctxt "@label OpenGL version" +msgid "OpenGL" +msgstr "OpenGL" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:133 +msgctxt "@label" +msgid "not yet initialised
      " +msgstr "noch nicht initialisiert
      " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:136 #, python-brace-format msgctxt "@label OpenGL version" msgid "
    • OpenGL Version: {version}
    • " msgstr "
    • OpenGL-Version: {version}
    • " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:131 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:137 #, python-brace-format msgctxt "@label OpenGL vendor" msgid "
    • OpenGL Vendor: {vendor}
    • " msgstr "
    • OpenGL-Anbieter: {vendor}
    • " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:132 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:138 #, python-brace-format msgctxt "@label OpenGL renderer" msgid "
    • OpenGL Renderer: {renderer}
    • " msgstr "
    • OpenGL-Renderer: {renderer}
    • " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:141 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:147 msgctxt "@title:groupbox" -msgid "Exception traceback" -msgstr "Ausnahme-Rückverfolgung" +msgid "Error traceback" +msgstr "Fehler-Rückverfolgung" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:208 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:214 msgctxt "@title:groupbox" msgid "Logs" msgstr "Protokolle" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:231 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:237 msgctxt "@title:groupbox" msgid "User description" msgstr "Benutzerbeschreibung" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:246 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:252 msgctxt "@action:button" msgid "Send report" msgstr "Bericht senden" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:256 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:274 msgctxt "@info:progress" msgid "Loading machines..." msgstr "Geräte werden geladen..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:661 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:660 msgctxt "@info:progress" msgid "Setting up scene..." msgstr "Die Szene wird eingerichtet..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:703 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:702 msgctxt "@info:progress" msgid "Loading interface..." msgstr "Die Benutzeroberfläche wird geladen..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:874 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:899 #, 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:1348 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1417 #, 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:1357 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1426 #, 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:1416 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1495 msgctxt "@info:status" msgid "The selected model was too small to load." msgstr "Das gewählte Modell war zu klein zum Laden." @@ -1279,12 +1407,11 @@ msgstr "X (Breite)" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:119 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:129 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:235 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:288 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:300 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:391 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:401 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:413 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:840 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:383 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:394 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:412 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:424 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:849 msgctxt "@label" msgid "mm" msgstr "mm" @@ -1374,68 +1501,67 @@ msgctxt "@tooltip" msgid "The height difference between the tip of the nozzle and the gantry system (X and Y axes). Used to prevent collisions between previous prints and the gantry when printing \"One at a Time\"." msgstr "Der Höhenunterschied zwischen der Düsenspitze und dem Brückensystem (X- und Y-Achsen). Wird verwendet, um Kollisionen zwischen vorherigen Drucken und der Brücke zu verhindern, wenn im Modus „Nacheinander“ gedruckt wird." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:255 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:254 msgctxt "@label" msgid "Number of Extruders" msgstr "Anzahl Extruder" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:289 -msgctxt "@tooltip" -msgid "The nominal diameter of filament supported by the printer. The exact diameter will be overridden by the material and/or the profile." -msgstr "Der Nenndurchmesser des durch den Drucker unterstützten Filaments. Der exakte Durchmesser wird durch das Material und/oder das Profil überschrieben." - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:291 -msgctxt "@label" -msgid "Material diameter" -msgstr "Materialdurchmesser" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:299 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:390 -msgctxt "@label" -msgid "Nozzle size" -msgstr "Düsengröße" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:317 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:310 msgctxt "@label" msgid "Start Gcode" msgstr "G-Code starten" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:327 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:320 msgctxt "@tooltip" msgid "Gcode commands to be executed at the very start." msgstr "G-Code-Befehle, die zum Start ausgeführt werden sollen." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:336 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:329 msgctxt "@label" msgid "End Gcode" msgstr "G-Code beenden" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:346 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:339 msgctxt "@tooltip" msgid "Gcode commands to be executed at the very end." msgstr "G-Code-Befehle, die am Ende ausgeführt werden sollen." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:378 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:370 msgctxt "@label" msgid "Nozzle Settings" msgstr "Düseneinstellungen" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:400 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:382 +msgctxt "@label" +msgid "Nozzle size" +msgstr "Düsengröße" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:393 +msgctxt "@label" +msgid "Compatible material diameter" +msgstr "Kompatibler Materialdurchmesser" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:395 +msgctxt "@tooltip" +msgid "The nominal diameter of filament supported by the printer. The exact diameter will be overridden by the material and/or the profile." +msgstr "Der Nenndurchmesser des durch den Drucker unterstützten Filaments. Der exakte Durchmesser wird durch das Material und/oder das Profil überschrieben." + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:411 msgctxt "@label" msgid "Nozzle offset X" msgstr "X-Versatz Düse" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:412 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:423 msgctxt "@label" msgid "Nozzle offset Y" msgstr "Y-Versatz Düse" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:433 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:444 msgctxt "@label" msgid "Extruder Start Gcode" msgstr "G-Code Extruder-Start" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:451 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:462 msgctxt "@label" msgid "Extruder End Gcode" msgstr "G-Code Extruder-Ende" @@ -1448,8 +1574,9 @@ msgstr "Änderungsprotokoll" #: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.qml:37 #: /home/ruben/Projects/Cura/plugins/USBPrinting/FirmwareUpdateWindow.qml:107 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:55 -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:445 -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:357 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:306 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:456 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:492 #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:80 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:123 #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:147 @@ -1506,7 +1633,7 @@ msgstr "Unbekannter Fehlercode: %1" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:55 msgctxt "@title:window" msgid "Connect to Networked Printer" -msgstr "Anschluss an vernetzten Drucker" +msgstr "Anschluss an Netzwerk Drucker" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:65 msgctxt "@label" @@ -1514,7 +1641,10 @@ msgid "" "To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer.\n" "\n" "Select your printer from the list below:" -msgstr "Um über das Netzwerk direkt auf Ihrem Drucker zu drucken, stellen Sie bitte sicher, dass der Drucker mit dem Netzwerkkabel verbunden ist oder verbinden Sie Ihren Drucker mit Ihrem WLAN-Netzwerk. Wenn Sie Cura nicht mit Ihrem Drucker verbinden, können Sie dennoch ein USB-Laufwerk für die Übertragung von G-Code-Dateien auf Ihren Drucker verwenden.\n\nWählen Sie Ihren Drucker aus der folgenden Liste:" +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:" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:75 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:44 @@ -1530,7 +1660,7 @@ msgstr "Bearbeiten" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:96 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:50 #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:95 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:190 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:171 msgctxt "@action:button" msgid "Remove" msgstr "Entfernen" @@ -1552,12 +1682,12 @@ msgid "Type" msgstr "Typ" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:233 -msgctxt "@label" +msgctxt "@label Printer name" msgid "Ultimaker 3" msgstr "Ultimaker 3" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:236 -msgctxt "@label" +msgctxt "@label Printer name" msgid "Ultimaker 3 Extended" msgstr "Ultimaker 3 Extended" @@ -1603,8 +1733,6 @@ msgid "Enter the IP address or hostname of your printer on the network." msgstr "Geben Sie die IP-Adresse oder den Hostnamen Ihres Druckers auf dem Netzwerk ein." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:379 -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:92 -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:88 #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:181 msgctxt "@action:button" msgid "OK" @@ -1625,6 +1753,11 @@ msgctxt "@label: arg 1 is group name" msgid "%1 is not set up to host a group of connected Ultimaker 3 printers" msgstr "%1 ist nicht für das Hosten einer Gruppe verbundener Ultimaker 3-Drucker eingerichtet" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterMonitorItem.qml:55 +msgctxt "@label link to connect manager" +msgid "Add/Remove printers" +msgstr "Drucker hinzufügen/entfernen" + #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/OpenPanelButton.qml:14 msgctxt "@info:tooltip" msgid "Opens the print jobs page with your default web browser." @@ -1655,11 +1788,16 @@ msgid "Available" msgstr "Verfügbar" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:43 -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:101 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:100 msgctxt "@label:MonitorStatus" msgid "Lost connection with the printer" msgstr "Verbindung zum Drucker wurde unterbrochen" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:47 +msgctxt "@label Printer status" +msgid "Unknown" +msgstr "Unbekannt" + #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:257 msgctxt "@label:status" msgid "Disabled" @@ -1751,138 +1889,252 @@ msgctxt "@action:button" msgid "Activate Configuration" msgstr "Konfiguration aktivieren" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:20 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:21 msgctxt "@title:window" -msgid "Cura SolidWorks Plugin Configuration" -msgstr "Cura SolidWorks Plugin-Konfiguration" +msgid "SolidWorks: Export wizard" +msgstr "SolidWorks: Exportassistent" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:44 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:45 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:140 msgctxt "@action:label" -msgid "Default quality of the exported STL:" -msgstr "Standardqualität des exportierten STL:" +msgid "Quality:" +msgstr "Qualität:" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:79 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:78 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:179 msgctxt "@option:curaSolidworksStlQuality" -msgid "Always ask" -msgstr "Immer nachfragen" +msgid "Fine (3D-printing)" +msgstr "Fein (3D-Druck)" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:80 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:79 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:180 msgctxt "@option:curaSolidworksStlQuality" -msgid "Always use Fine quality" -msgstr "Immer Qualität „Fein“ verwenden" +msgid "Coarse (3D-printing)" +msgstr "Grob (3D-Druck)" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:81 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:80 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:181 msgctxt "@option:curaSolidworksStlQuality" -msgid "Always use Coarse quality" -msgstr "Immer Qualität „Grob“ verwenden" +msgid "Fine (SolidWorks)" +msgstr "Fein (SolidWorks)" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:20 -msgctxt "@title:window" -msgid "Import SolidWorks File as STL..." -msgstr "SolidWorks-Datei importieren als STL ..." - -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:43 -msgctxt "@info:tooltip" -msgid "Quality of the Exported STL" -msgstr "Qualität des exportierten STL" - -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:48 -msgctxt "@action:label" -msgid "Quality" -msgstr "Qualität" - -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:62 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:81 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:182 msgctxt "@option:curaSolidworksStlQuality" -msgid "Coarse" -msgstr "Grob" +msgid "Coarse (SolidWorks)" +msgstr "Grob (SolidWorks)" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:63 -msgctxt "@option:curaSolidworksStlQuality" -msgid "Fine" -msgstr "Fein" - -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:78 -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:82 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:94 msgctxt "@text:window" -msgid "Remember my choice" -msgstr "Meine Auswahl merken" +msgid "Show this dialog again" +msgstr "Diesen Dialog erneut anzeigen" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:81 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:104 +msgctxt "@action:button" +msgid "Continue" +msgstr "Weiter" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:116 +msgctxt "@action:button" +msgid "Abort" +msgstr "Abbrechen" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:21 +msgctxt "@title:window" +msgid "How to install Cura SolidWorks macro" +msgstr "Installieren von Cura SolidWorks Makro" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:62 +msgctxt "@description:label" +msgid "Steps:" +msgstr "Schritte:" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:140 +msgctxt "@action:button" +msgid "" +"Open the directory\n" +"with macro and icon" +msgstr "" +"Verzeichnis\n" +"mit Makro und Symbol öffnen" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:160 +msgctxt "@description:label" +msgid "Instructions:" +msgstr "Anweisungen:" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:202 +msgctxt "@action:playpause" +msgid "Play" +msgstr "Wiedergeben" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:206 +msgctxt "@action:playpause" +msgid "Pause" +msgstr "Pausieren" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:268 +msgctxt "@action:button" +msgid "Previous Step" +msgstr "Vorheriger Schritt" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:283 +msgctxt "@action:button" +msgid "Done" +msgstr "Fertig" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:287 +msgctxt "@action:button" +msgid "Next Step" +msgstr "Nächster Schritt" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:21 +msgctxt "@title:window" +msgid "SolidWorks plugin: Configuration" +msgstr "SolidWorks Plugin: Konfiguration" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:39 +msgctxt "@title:tab" +msgid "Conversion settings" +msgstr "Konvertierungseinstellungen" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:66 +msgctxt "@label" +msgid "First choice:" +msgstr "Erste Wahl:" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:86 +msgctxt "@text:menu" +msgid "Latest installed version (Recommended)" +msgstr "Aktuelle installierte Version (Empfohlen)" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:95 +msgctxt "@text:menu" +msgid "Default version" +msgstr "Standardversion" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:193 +msgctxt "@label" +msgid "Show wizard before opening SolidWorks files" +msgstr "Assistent vor dem Öffnen von SolidWorks-Dateien anzeigen" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:203 +msgctxt "@label" +msgid "Automatically rotate opened file into normed orientation" +msgstr "Geöffnete Datei automatisch in normale Ausrichtung drehen" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:210 +msgctxt "@title:tab" +msgid "Installation(s)" +msgstr "Installation(en)" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:284 +msgctxt "@label" +msgid "COM service found" +msgstr "COM-Service gefunden" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:295 +msgctxt "@label" +msgid "Executable found" +msgstr "Ausführbare Datei gefunden" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:306 +msgctxt "@label" +msgid "COM starting" +msgstr "COM wird gestartet" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:317 +msgctxt "@label" +msgid "Revision number" +msgstr "Revisionsnummer" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:328 +msgctxt "@label" +msgid "Functions available" +msgstr "Verfügbare Funktionen" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:341 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:264 +msgctxt "@action:button" +msgid "Save" +msgstr "Speichern" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:117 msgctxt "@label" msgid "Color scheme" msgstr "Farbschema" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:96 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:132 msgctxt "@label:listbox" msgid "Material Color" msgstr "Materialfarbe" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:100 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:136 msgctxt "@label:listbox" msgid "Line Type" msgstr "Linientyp" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:104 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:140 msgctxt "@label:listbox" msgid "Feedrate" msgstr "Vorschub" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:108 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:144 msgctxt "@label:listbox" msgid "Layer thickness" msgstr "Schichtdicke" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:148 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:185 msgctxt "@label" msgid "Compatibility Mode" msgstr "Kompatibilitätsmodus" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:230 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:264 msgctxt "@label" msgid "Show Travels" msgstr "Bewegungen anzeigen" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:236 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:270 msgctxt "@label" msgid "Show Helpers" msgstr "Helfer anzeigen" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:242 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:276 msgctxt "@label" msgid "Show Shell" msgstr "Gehäuse anzeigen" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:248 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:282 msgctxt "@label" msgid "Show Infill" msgstr "Füllung anzeigen" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:297 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:330 msgctxt "@label" msgid "Only Show Top Layers" msgstr "Nur obere Schichten anzeigen" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:306 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:339 msgctxt "@label" msgid "Show 5 Detailed Layers On Top" msgstr "5 detaillierte Schichten oben anzeigen" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:317 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:350 msgctxt "@label" msgid "Top / Bottom" msgstr "Oben/Unten" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:321 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:354 msgctxt "@label" msgid "Inner Wall" msgstr "Innenwand" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:378 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:410 msgctxt "@label" msgid "min" msgstr "min." -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:420 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:452 msgctxt "@label" msgid "max" msgstr "max." @@ -1907,7 +2159,7 @@ msgctxt "@label" msgid "Settings" msgstr "Einstellungen" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:455 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:466 msgctxt "@info:tooltip" msgid "Change active post-processing scripts" msgstr "Aktive Skripts Nachbearbeitung ändern" @@ -1982,23 +2234,53 @@ msgctxt "@action:label" msgid "Smoothing" msgstr "Glättung" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:208 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:38 +msgctxt "@label" +msgid "Mesh Type" +msgstr "Mesh-Typ" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:69 +msgctxt "@label" +msgid "Normal model" +msgstr "Normales Modell" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:76 +msgctxt "@label" +msgid "Print as support" +msgstr "Als Stützstruktur drucken" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:84 +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:92 +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:100 +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:333 msgctxt "@action:button" msgid "Select settings" msgstr "Einstellungen wählen" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:248 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:375 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:272 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:402 #: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:91 msgctxt "@label:textbox" msgid "Filter..." msgstr "Filtern..." -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:296 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:426 msgctxt "@label:checkbox" msgid "Show all" msgstr "Alle anzeigen" @@ -2166,7 +2448,10 @@ msgid "" "This plugin contains a license.\n" "You need to accept this license to install this plugin.\n" "Do you agree with the terms below?" -msgstr "Dieses Plugin enthält eine Lizenz.\nSie müssen diese Lizenz akzeptieren, um das Plugin zu installieren.\nStimmen Sie den nachfolgenden Bedingungen zu?" +msgstr "" +"Dieses Plugin enthält eine Lizenz.\n" +"Sie müssen diese Lizenz akzeptieren, um das Plugin zu installieren.\n" +"Stimmen Sie den nachfolgenden Bedingungen zu?" #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:242 msgctxt "@action:button" @@ -2357,66 +2642,66 @@ msgctxt "@label" msgid "Everything is in order! You're done with your CheckUp." msgstr "Alles ist in Ordnung! Der Check-up ist abgeschlossen." -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:88 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:87 msgctxt "@label:MonitorStatus" msgid "Not connected to a printer" msgstr "Nicht mit einem Drucker verbunden" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:90 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:89 msgctxt "@label:MonitorStatus" msgid "Printer does not accept commands" msgstr "Drucker nimmt keine Befehle an" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:96 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:95 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:194 msgctxt "@label:MonitorStatus" msgid "In maintenance. Please check the printer" msgstr "In Wartung. Den Drucker überprüfen" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:103 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:102 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:184 msgctxt "@label:MonitorStatus" msgid "Printing..." msgstr "Es wird gedruckt..." -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:106 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:105 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:186 msgctxt "@label:MonitorStatus" msgid "Paused" msgstr "Pausiert" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:109 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:108 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:188 msgctxt "@label:MonitorStatus" msgid "Preparing..." msgstr "Vorbereitung läuft..." -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:111 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:110 msgctxt "@label:MonitorStatus" msgid "Please remove the print" msgstr "Bitte den Ausdruck entfernen" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:237 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:241 msgctxt "@label:" msgid "Resume" msgstr "Zurückkehren" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:241 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:245 msgctxt "@label:" msgid "Pause" msgstr "Pausieren" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:270 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:274 msgctxt "@label:" msgid "Abort Print" msgstr "Drucken abbrechen" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:280 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:284 msgctxt "@window:title" msgid "Abort print" msgstr "Drucken abbrechen" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:282 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:286 msgctxt "@label" msgid "Are you sure you want to abort the print?" msgstr "Soll das Drucken wirklich abgebrochen werden?" @@ -2431,7 +2716,9 @@ msgctxt "@text:window" msgid "" "You have customized some profile settings.\n" "Would you like to keep or discard those settings?" -msgstr "Sie haben einige Profileinstellungen angepasst.\nMöchten Sie diese Einstellungen übernehmen oder verwerfen?" +msgstr "" +"Sie haben einige Profileinstellungen angepasst.\n" +"Möchten Sie diese Einstellungen übernehmen oder verwerfen?" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:110 msgctxt "@title:column" @@ -2449,19 +2736,19 @@ msgid "Customized" msgstr "Angepasst" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:157 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:593 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:595 msgctxt "@option:discardOrKeep" msgid "Always ask me this" msgstr "Stets nachfragen" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:158 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:594 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:596 msgctxt "@option:discardOrKeep" msgid "Discard and never ask again" msgstr "Verwerfen und zukünftig nicht mehr nachfragen" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:159 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:595 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:597 msgctxt "@option:discardOrKeep" msgid "Keep and never ask again" msgstr "Übernehmen und zukünftig nicht mehr nachfragen" @@ -2474,7 +2761,7 @@ msgstr "Verwerfen" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:209 msgctxt "@action:button" msgid "Keep" -msgstr "Übernehmen" +msgstr "Beibehalten" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:222 msgctxt "@action:button" @@ -2496,72 +2783,72 @@ msgctxt "@label" msgid "Brand" msgstr "Marke" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:92 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:88 msgctxt "@label" msgid "Material Type" msgstr "Materialtyp" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:105 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:97 msgctxt "@label" msgid "Color" msgstr "Farbe" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:139 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:141 msgctxt "@label" msgid "Properties" msgstr "Eigenschaften" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:141 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:143 msgctxt "@label" msgid "Density" msgstr "Dichte" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:156 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:158 msgctxt "@label" msgid "Diameter" msgstr "Durchmesser" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:185 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:187 msgctxt "@label" msgid "Filament Cost" msgstr "Filamentkosten" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:201 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:203 msgctxt "@label" msgid "Filament weight" msgstr "Filamentgewicht" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:218 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:220 msgctxt "@label" msgid "Filament length" msgstr "Filamentlänge" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:227 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:229 msgctxt "@label" msgid "Cost per Meter" msgstr "Kosten pro Meter" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:241 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:243 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/MaterialView.qml:248 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:250 msgctxt "@label" msgid "Unlink Material" msgstr "Material trennen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:259 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:261 msgctxt "@label" msgid "Description" msgstr "Beschreibung" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:272 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:274 msgctxt "@label" msgid "Adhesion Information" msgstr "Haftungsinformationen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:298 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:300 msgctxt "@label" msgid "Print settings" msgstr "Druckeinstellungen" @@ -2602,7 +2889,7 @@ msgid "Unit" msgstr "Einheit" #: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:14 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:439 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:509 msgctxt "@title:tab" msgid "General" msgstr "Allgemein" @@ -2617,230 +2904,255 @@ msgctxt "@label" msgid "Language:" msgstr "Sprache:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:205 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:207 msgctxt "@label" msgid "Currency:" msgstr "Währung:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:219 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:221 msgctxt "@label" msgid "Theme:" msgstr "Thema:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:279 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:281 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:296 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:298 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:304 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:306 msgctxt "@option:check" msgid "Slice automatically" msgstr "Automatisch schneiden" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:318 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:320 msgctxt "@label" msgid "Viewport behavior" msgstr "Viewport-Verhalten" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:326 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:328 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:335 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:337 msgctxt "@option:check" msgid "Display overhang" msgstr "Überhang anzeigen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:342 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:344 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:347 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:349 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:356 +#: /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:361 +#: /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:370 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:372 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:375 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:377 msgctxt "@action:button" msgid "Zoom toward mouse direction" msgstr "In Mausrichtung zoomen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:384 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:386 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:389 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:391 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:397 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:399 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:402 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:404 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:414 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:416 msgctxt "@info:tooltip" msgid "Show caution message in gcode reader." msgstr "Warnmeldung im G-Code-Reader anzeigen." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:423 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:425 msgctxt "@option:check" msgid "Caution message in gcode reader" msgstr "Warnmeldung in G-Code-Reader" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:430 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:432 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:435 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:437 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:451 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:453 msgctxt "@label" msgid "Opening and saving files" msgstr "Dateien öffnen und speichern" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:457 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:459 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:462 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:464 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:473 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:478 msgctxt "@option:check" msgid "Scale extremely small models" msgstr "Extrem kleine Modelle skalieren" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:485 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:487 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:490 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:492 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:499 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:501 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:503 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:505 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:512 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:514 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:520 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:522 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:533 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:535 msgctxt "@option:openProject" msgid "Always ask" msgstr "Immer nachfragen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:534 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:536 msgctxt "@option:openProject" msgid "Always open as a project" msgstr "Immer als Projekt öffnen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:535 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:537 msgctxt "@option:openProject" msgid "Always import models" msgstr "Modelle immer importieren" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:571 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:573 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:580 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:582 msgctxt "@label" msgid "Override Profile" msgstr "Profil überschreiben" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:629 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:631 msgctxt "@label" msgid "Privacy" msgstr "Privatsphäre" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:636 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:638 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:641 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:643 msgctxt "@option:check" msgid "Check for updates on start" msgstr "Bei Start nach Updates suchen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:651 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:653 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:656 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:658 msgctxt "@option:check" msgid "Send (anonymous) print information" msgstr "(Anonyme) Druckinformationen senden" +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:674 +msgctxt "@label" +msgid "Experimental" +msgstr "Experimentell" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:680 +msgctxt "@info:tooltip" +msgid "Use multi build plate functionality" +msgstr "Mehrfach-Druckplattenfunktion verwenden" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:685 +msgctxt "@option:check" +msgid "Use multi build plate functionality (restart required)" +msgstr "Mehrfach-Druckplattenfunktion verwenden (Neustart erforderlich)" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:694 +msgctxt "@info:tooltip" +msgid "Should newly loaded models be arranged on the build plate? Used in conjunction with multi build plate (EXPERIMENTAL)" +msgstr "Sollen neu geladene Modelle auf der Druckplatte angeordnet werden? In Verbindung mit Mehrfach-Druckplatte verwenden (EXPERIMENTELL)" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:699 +msgctxt "@option:check" +msgid "Do not arrange objects on load" +msgstr "Keine Objekte beim Laden anordnen" + #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:444 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:514 msgctxt "@title:tab" msgid "Printers" msgstr "Drucker" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:37 #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:51 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:137 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:138 msgctxt "@action:button" msgid "Activate" msgstr "Aktivieren" @@ -2883,7 +3195,7 @@ msgid "Waiting for a printjob" msgstr "Warten auf einen Druckauftrag" #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:448 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:518 msgctxt "@title:tab" msgid "Profiles" msgstr "Profile" @@ -2909,13 +3221,13 @@ msgid "Duplicate" msgstr "Duplizieren" #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:113 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:201 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:182 msgctxt "@action:button" msgid "Import" msgstr "Import" #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:119 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:212 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:193 msgctxt "@action:button" msgid "Export" msgstr "Export" @@ -2981,7 +3293,7 @@ msgid "Export Profile" msgstr "Profil exportieren" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:446 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:516 msgctxt "@title:tab" msgid "Materials" msgstr "Materialien" @@ -2996,60 +3308,60 @@ msgctxt "@action:label %1 is printer name" msgid "Printer: %1" msgstr "Drucker: %1" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:149 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:150 msgctxt "@action:button" msgid "Create" msgstr "Erstellen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:168 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:160 msgctxt "@action:button" msgid "Duplicate" msgstr "Duplizieren" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:311 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:319 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:298 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:306 msgctxt "@title:window" msgid "Import Material" msgstr "Material importieren" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:320 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:307 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/MaterialsPage.qml:324 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:311 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/MaterialsPage.qml:343 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:358 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:329 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:344 msgctxt "@title:window" msgid "Export Material" msgstr "Material exportieren" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:362 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:348 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/MaterialsPage.qml:368 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:354 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully exported material to %1" msgstr "Material erfolgreich nach %1 exportiert" #: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:18 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:793 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:869 msgctxt "@title:window" msgid "Add Printer" msgstr "Drucker hinzufügen" -#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:185 +#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:194 msgctxt "@label" msgid "Printer Name:" msgstr "Druckername:" -#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:208 +#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:217 msgctxt "@action:button" msgid "Add Printer" msgstr "Drucker hinzufügen" @@ -3074,7 +3386,9 @@ msgctxt "@info:credit" msgid "" "Cura is developed by Ultimaker B.V. in cooperation with the community.\n" "Cura proudly uses the following open source projects:" -msgstr "Cura wurde von Ultimaker B.V. in Zusammenarbeit mit der Community entwickelt.\nCura verwendet mit Stolz die folgenden Open Source-Projekte:" +msgstr "" +"Cura wurde von Ultimaker B.V. in Zusammenarbeit mit der Community entwickelt.\n" +"Cura verwendet mit Stolz die folgenden Open Source-Projekte:" #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:118 msgctxt "@label" @@ -3171,163 +3485,177 @@ msgctxt "@label" msgid "SVG icons" msgstr "SVG-Symbole" +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:139 +msgctxt "@label" +msgid "Linux cross-distribution application deployment" +msgstr "Distributionsunabhängiges Format für Linux-Anwendungen" + #: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:41 msgctxt "@label" msgid "Profile:" msgstr "Profil:" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:66 -msgctxt "@" -msgid "No Profile Available" -msgstr "Kein Profil verfügbar" - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:104 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:102 msgctxt "@tooltip" msgid "" "Some setting/override values are different from the values stored in the profile.\n" "\n" "Click to open the profile manager." -msgstr "Einige Einstellungs-/Überschreibungswerte unterscheiden sich von den im Profil gespeicherten Werten.\n\nKlicken Sie, um den Profilmanager zu öffnen." +msgstr "" +"Einige Einstellungs-/Überschreibungswerte unterscheiden sich von den im Profil gespeicherten Werten.\n" +"\n" +"Klicken Sie, um den Profilmanager zu öffnen." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:152 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:150 msgctxt "@label:textbox" msgid "Search..." msgstr "Suchen..." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:483 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:482 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:498 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:497 msgctxt "@action:menu" msgid "Hide this setting" msgstr "Diese Einstellung ausblenden" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:508 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:507 msgctxt "@action:menu" msgid "Don't show this setting" msgstr "Diese Einstellung ausblenden" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:512 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:511 msgctxt "@action:menu" msgid "Keep this setting visible" msgstr "Diese Einstellung weiterhin anzeigen" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:531 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:530 msgctxt "@action:menu" msgid "Configure setting visiblity..." msgstr "Sichtbarkeit der Einstellung wird konfiguriert..." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingCategory.qml:123 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingCategory.qml:250 msgctxt "@label" msgid "" "Some hidden settings use values different from their normal calculated value.\n" "\n" "Click to make these settings visible." -msgstr "Einige ausgeblendete Einstellungen verwenden Werte, die von ihren normalen, berechneten Werten abweichen.\n\nKlicken Sie, um diese Einstellungen sichtbar zu machen." +msgstr "" +"Einige ausgeblendete Einstellungen verwenden Werte, die von ihren normalen, berechneten Werten abweichen.\n" +"\n" +"Klicken Sie, um diese Einstellungen sichtbar zu machen." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:62 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:61 msgctxt "@label Header for list of settings." msgid "Affects" msgstr "Hat Einfluss auf" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:67 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:66 msgctxt "@label Header for list of settings." msgid "Affected By" msgstr "Wird beeinflusst von" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:157 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:156 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" +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:160 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:159 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:186 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:190 msgctxt "@label" msgid "" "This setting has a value that is different from the profile.\n" "\n" "Click to restore the value of the profile." -msgstr "Diese Einstellung hat einen vom Profil abweichenden Wert.\n\nKlicken Sie, um den Wert des Profils wiederherzustellen." +msgstr "" +"Diese Einstellung hat einen vom Profil abweichenden Wert.\n" +"\n" +"Klicken Sie, um den Wert des Profils wiederherzustellen." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:284 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:288 msgctxt "@label" msgid "" "This setting is normally calculated, but it currently has an absolute value set.\n" "\n" "Click to restore the calculated value." -msgstr "Diese Einstellung wird normalerweise berechnet; aktuell ist jedoch ein Absolutwert eingestellt.\n\nKlicken Sie, um den berechneten Wert wiederherzustellen." +msgstr "" +"Diese Einstellung wird normalerweise berechnet; aktuell ist jedoch ein Absolutwert eingestellt.\n" +"\n" +"Klicken Sie, um den berechneten Wert wiederherzustellen." -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:120 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:128 msgctxt "@label:listbox" msgid "Print Setup" msgstr "Druckeinrichtung" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:120 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:128 msgctxt "@label:listbox" msgid "" "Print Setup disabled\n" "G-code files cannot be modified" -msgstr "Druckeinrichtung deaktiviert\nG-Code-Dateien können nicht geändert werden" +msgstr "" +"Druckeinrichtung deaktiviert\n" +"G-Code-Dateien können nicht geändert werden" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:336 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:342 msgctxt "@label Hours and minutes" msgid "00h 00min" msgstr "00 Stunden 00 Minuten" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:354 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:359 msgctxt "@tooltip" -msgid "Time specification
      " -msgstr "Zeitangabe
      " +msgid "Time specification" +msgstr "Zeitangabe" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:429 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:441 msgctxt "@label" msgid "Cost specification" msgstr "Kostenangabe" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:434 -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:445 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:446 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:455 msgctxt "@label m for meter" msgid "%1m" msgstr "%1 m" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:435 -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:446 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:447 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:456 msgctxt "@label g for grams" msgid "%1g" msgstr "%1 g" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:444 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:454 msgctxt "@label" msgid "Total:" msgstr "Insgesamt:" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:498 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:504 msgctxt "@label Print estimates: m for meters, g for grams, %4 is currency and %3 is print cost" msgid "%1m / ~ %2g / ~ %4 %3" msgstr "%1m / ~ %2g / ~ %4 %3" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:503 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:509 msgctxt "@label Print estimates: m for meters, g for grams" msgid "%1m / ~ %2g" msgstr "%1m / ~ %2g" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:586 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:591 msgctxt "@tooltip" msgid "Recommended Print Setup

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

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

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

      Druck mit Feineinstellung über jedem einzelnen Bereich des Schneidvorgangs." -#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:49 +#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:50 msgctxt "@title:menuitem %1 is the automatically selected material" msgid "Automatic: %1" msgstr "Automatisch: %1" @@ -3337,6 +3665,16 @@ msgctxt "@title:menu menubar:toplevel" msgid "&View" msgstr "&Ansicht" +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:37 +msgctxt "@action:inmenu menubar:view" +msgid "&Camera position" +msgstr "&Kameraposition" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:52 +msgctxt "@action:inmenu menubar:view" +msgid "&Build plate" +msgstr "&Druckplatte" + #: /home/ruben/Projects/Cura/resources/qml/Menus/NozzleMenu.qml:40 msgctxt "@title:menuitem %1 is the nozzle currently loaded in the printer" msgid "Automatic: %1" @@ -3349,14 +3687,14 @@ msgid_plural "Print Selected Models With:" msgstr[0] "Ausgewähltes Modell drucken mit:" msgstr[1] "Ausgewählte Modelle drucken mit:" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ContextMenu.qml:83 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ContextMenu.qml:114 msgctxt "@title:window" 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/Menus/ContextMenu.qml:108 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ContextMenu.qml:139 msgctxt "@label" msgid "Number of Copies" msgstr "Anzahl Kopien" @@ -3372,7 +3710,7 @@ msgid "No printer connected" msgstr "Es ist kein Drucker verbunden" #: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:90 -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:138 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:139 msgctxt "@label" msgid "Extruder" msgstr "Extruder" @@ -3482,254 +3820,294 @@ msgctxt "@label" msgid "Estimated time left" msgstr "Geschätzte verbleibende Zeit" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:72 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:79 msgctxt "@action:inmenu" msgid "Toggle Fu&ll Screen" msgstr "Umschalten auf Vo&llbild-Modus" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:79 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:86 msgctxt "@action:inmenu menubar:edit" msgid "&Undo" msgstr "&Rückgängig machen" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:89 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:96 msgctxt "@action:inmenu menubar:edit" msgid "&Redo" msgstr "&Wiederholen" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:99 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:106 msgctxt "@action:inmenu menubar:file" msgid "&Quit" msgstr "&Beenden" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:107 -msgctxt "@action:inmenu menubar:view" -msgid "&Reset camera position" -msgstr "&Kameraposition zurücksetzen" - #: /home/ruben/Projects/Cura/resources/qml/Actions.qml:114 +msgctxt "@action:inmenu menubar:view" +msgid "&3D View" +msgstr "&3D-Ansicht" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:121 +msgctxt "@action:inmenu menubar:view" +msgid "&Front View" +msgstr "&Vorderansicht" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:128 +msgctxt "@action:inmenu menubar:view" +msgid "&Top View" +msgstr "&Draufsicht" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:135 +msgctxt "@action:inmenu menubar:view" +msgid "&Left Side View" +msgstr "&Ansicht von links" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:142 +msgctxt "@action:inmenu menubar:view" +msgid "&Right Side View" +msgstr "&Ansicht von rechts" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:149 msgctxt "@action:inmenu" msgid "Configure Cura..." msgstr "Cura konfigurieren..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:121 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:156 msgctxt "@action:inmenu menubar:printer" msgid "&Add Printer..." msgstr "&Drucker hinzufügen..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:127 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:162 msgctxt "@action:inmenu menubar:printer" msgid "Manage Pr&inters..." msgstr "Dr&ucker verwalten..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:134 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:169 msgctxt "@action:inmenu" msgid "Manage Materials..." msgstr "Materialien werden verwaltet..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:142 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:177 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:150 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:185 msgctxt "@action:inmenu menubar:profile" msgid "&Discard current changes" msgstr "&Aktuelle Änderungen verwerfen" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:162 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:197 msgctxt "@action:inmenu menubar:profile" msgid "&Create profile from current settings/overrides..." msgstr "&Profil von aktuellen Einstellungen/Überschreibungen erstellen..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:168 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:203 msgctxt "@action:inmenu menubar:profile" msgid "Manage Profiles..." msgstr "Profile verwalten..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:175 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:210 msgctxt "@action:inmenu menubar:help" msgid "Show Online &Documentation" msgstr "Online-&Dokumentation anzeigen" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:183 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:218 msgctxt "@action:inmenu menubar:help" msgid "Report a &Bug" msgstr "&Fehler melden" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:191 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:226 msgctxt "@action:inmenu menubar:help" msgid "&About..." msgstr "&Über..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:198 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:233 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:208 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:243 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:217 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:252 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:226 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:261 msgctxt "@action:inmenu" msgid "Delete Model" msgstr "Modell löschen" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:234 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:269 msgctxt "@action:inmenu" msgid "Ce&nter Model on Platform" msgstr "Modell auf Druckplatte ze&ntrieren" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:240 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:275 msgctxt "@action:inmenu menubar:edit" msgid "&Group Models" msgstr "Modelle &gruppieren" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:250 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:295 msgctxt "@action:inmenu menubar:edit" msgid "Ungroup Models" msgstr "Gruppierung für Modelle aufheben" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:260 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:305 msgctxt "@action:inmenu menubar:edit" msgid "&Merge Models" msgstr "Modelle &zusammenführen" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:270 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:315 msgctxt "@action:inmenu" msgid "&Multiply Model..." msgstr "Modell &multiplizieren" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:277 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:322 msgctxt "@action:inmenu menubar:edit" msgid "&Select All Models" msgstr "Alle Modelle &wählen" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:287 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:332 msgctxt "@action:inmenu menubar:edit" msgid "&Clear Build Plate" msgstr "Druckplatte &reinigen" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:297 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:342 msgctxt "@action:inmenu menubar:file" msgid "Re&load All Models" msgstr "Alle Modelle neu &laden" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:306 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:351 +msgctxt "@action:inmenu menubar:edit" +msgid "Arrange All Models To All Build Plates" +msgstr "Alle Modelle an allen Druckplatten anordnen" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:358 msgctxt "@action:inmenu menubar:edit" msgid "Arrange All Models" msgstr "Alle Modelle anordnen" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:314 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:366 msgctxt "@action:inmenu menubar:edit" msgid "Arrange Selection" msgstr "Anordnung auswählen" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:321 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:373 msgctxt "@action:inmenu menubar:edit" msgid "Reset All Model Positions" msgstr "Alle Modellpositionen zurücksetzen" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:328 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:380 msgctxt "@action:inmenu menubar:edit" msgid "Reset All Model &Transformations" msgstr "Alle Modell&transformationen zurücksetzen" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:335 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:387 msgctxt "@action:inmenu menubar:file" msgid "&Open File(s)..." msgstr "&Datei(en) öffnen..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:343 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:395 msgctxt "@action:inmenu menubar:file" msgid "&New Project..." msgstr "&Neues Projekt..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:350 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:402 msgctxt "@action:inmenu menubar:help" msgid "Show Engine &Log..." msgstr "Engine-&Protokoll anzeigen..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:358 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:410 msgctxt "@action:inmenu menubar:help" msgid "Show Configuration Folder" msgstr "Konfigurationsordner anzeigen" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:365 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:417 msgctxt "@action:menu" msgid "Configure setting visibility..." msgstr "Sichtbarkeit einstellen wird konfiguriert..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:372 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:424 msgctxt "@action:menu" msgid "Browse plugins..." msgstr "Plugins durchsuchen..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:379 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:431 msgctxt "@action:menu" msgid "Installed plugins..." msgstr "Installierte plugins..." -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:28 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:438 +msgctxt "@action:inmenu menubar:view" +msgid "Expand/Collapse Sidebar" +msgstr "Seitenleiste vergrößern/verkleinern" + +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:26 msgctxt "@label:PrintjobStatus" msgid "Please load a 3D model" msgstr "Bitte laden Sie ein 3D-Modell" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:34 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:36 msgctxt "@label:PrintjobStatus" msgid "Ready to slice" msgstr "Bereit zum Slicen (Schneiden)" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:36 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:38 msgctxt "@label:PrintjobStatus" msgid "Slicing..." msgstr "Das Slicing läuft..." -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:38 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:40 msgctxt "@label:PrintjobStatus %1 is target operation" msgid "Ready to %1" msgstr "Bereit zum %1" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:40 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:42 msgctxt "@label:PrintjobStatus" msgid "Unable to Slice" msgstr "Slicing nicht möglich" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:42 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:44 msgctxt "@label:PrintjobStatus" msgid "Slicing unavailable" msgstr "Slicing ist nicht verfügbar" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:162 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:171 +msgctxt "@info:tooltip" +msgid "Slice current printjob" +msgstr "Aktuellen Druckauftrag slicen" + +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:171 +msgctxt "@info:tooltip" +msgid "Cancel slicing process" +msgstr "Slicing-Vorgang abbrechen" + +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:183 msgctxt "@label:Printjob" msgid "Prepare" msgstr "Vorbereiten" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:162 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:183 msgctxt "@label:Printjob" msgid "Cancel" msgstr "Abbrechen" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:302 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:317 msgctxt "@info:tooltip" msgid "Select the active output device" msgstr "Wählen Sie das aktive Ausgabegerät" #: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:19 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:620 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:696 msgctxt "@title:window" msgid "Open file(s)" msgstr "Datei(en) öffnen" @@ -3749,114 +4127,114 @@ msgctxt "@title:window" msgid "Ultimaker Cura" msgstr "Ultimaker Cura" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:81 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:102 msgctxt "@title:menu menubar:toplevel" msgid "&File" msgstr "&Datei" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:98 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:119 msgctxt "@action:inmenu menubar:file" msgid "&Save Selection to File" msgstr "Auswahl als Datei &speichern" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:107 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:128 msgctxt "@title:menu menubar:file" msgid "Save &As..." msgstr "Speichern &Als" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:118 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:139 msgctxt "@title:menu menubar:file" -msgid "Save project" -msgstr "Projekt speichern" +msgid "Save &Project..." +msgstr "&Projekt speichern..." -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:141 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:162 msgctxt "@title:menu menubar:toplevel" msgid "&Edit" msgstr "&Bearbeiten" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:158 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:179 msgctxt "@title:menu" msgid "&View" msgstr "&Ansicht" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:163 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:184 msgctxt "@title:menu" msgid "&Settings" msgstr "&Einstellungen" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:165 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:186 msgctxt "@title:menu menubar:toplevel" msgid "&Printer" msgstr "Dr&ucker" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:175 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:187 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:196 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:208 msgctxt "@title:menu" msgid "&Material" msgstr "&Material" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:176 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:188 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:197 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:209 msgctxt "@title:menu" msgid "&Profile" msgstr "&Profil" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:180 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:201 msgctxt "@action:inmenu" msgid "Set as Active Extruder" msgstr "Als aktiven Extruder festlegen" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:198 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:219 msgctxt "@title:menu menubar:toplevel" msgid "E&xtensions" msgstr "Er&weiterungen" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:232 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:253 msgctxt "@title:menu menubar:toplevel" msgid "P&lugins" msgstr "&Plugins" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:240 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:261 msgctxt "@title:menu menubar:toplevel" msgid "P&references" msgstr "E&instellungen" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:248 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:269 msgctxt "@title:menu menubar:toplevel" msgid "&Help" msgstr "&Hilfe" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:330 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:351 msgctxt "@action:button" msgid "Open File" msgstr "Datei öffnen" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:442 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:512 msgctxt "@title:tab" msgid "Settings" msgstr "Einstellungen" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:478 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:554 msgctxt "@title:window" msgid "New project" msgstr "Neues Projekt" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:479 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:555 msgctxt "@info:question" msgid "Are you sure you want to start a new project? This will clear the build plate and any unsaved settings." msgstr "Möchten Sie wirklich ein neues Projekt beginnen? Damit werden das Druckbett und alle nicht gespeicherten Einstellungen gelöscht." -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:721 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:797 msgctxt "@window:title" msgid "Install Plugin" msgstr "Plugin installieren" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:728 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:804 msgctxt "@title:window" msgid "Open File(s)" msgstr "Datei(en) öffnen" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:731 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:807 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." @@ -3881,97 +4259,82 @@ msgctxt "@action:label" msgid "Don't show project summary on save again" msgstr "Projektzusammenfassung beim Speichern nicht erneut anzeigen" -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:264 -msgctxt "@action:button" -msgid "Save" -msgstr "Speichern" - -#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:74 -msgctxt "@title:tab" -msgid "Prepare" -msgstr "Vorbereiten" - -#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:100 -msgctxt "@title:tab" -msgid "Monitor" -msgstr "Überwachen" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:163 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:175 msgctxt "@label" msgid "Layer Height" msgstr "Schichtdicke" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:323 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:345 msgctxt "@tooltip" msgid "A custom profile is currently active. To enable the quality slider, choose a default quality profile in Custom tab" msgstr "Ein benutzerdefiniertes Profil ist derzeit aktiv. Wählen Sie ein voreingestelltes Qualitätsprofil aus der Registerkarte „Benutzerdefiniert“, um den Schieberegler für Qualität zu aktivieren." -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:340 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:362 msgctxt "@label" msgid "Print Speed" msgstr "Druckgeschwindigkeit" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:350 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:374 msgctxt "@label" msgid "Slower" msgstr "Langsamer" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:361 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:385 msgctxt "@label" msgid "Faster" msgstr "Schneller" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:388 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:423 msgctxt "@tooltip" msgid "You have modified some profile settings. If you want to change these go to custom mode." msgstr "Sie haben einige Profileinstellungen geändert. Wenn Sie diese ändern möchten, wechseln Sie in den Modus „Benutzerdefiniert“." -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:413 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:446 msgctxt "@label" msgid "Infill" msgstr "Füllung" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:633 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:668 msgctxt "@label" msgid "Gradual infill will gradually increase the amount of infill towards the top." msgstr "Die graduelle Füllung steigert die Menge der Füllung nach oben hin schrittweise." -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:645 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:680 msgctxt "@label" msgid "Enable gradual" msgstr "Graduell aktivieren" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:712 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:747 msgctxt "@label" msgid "Generate Support" msgstr "Stützstruktur generieren" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:746 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:781 msgctxt "@label" msgid "Generate structures to support parts of the model which have overhangs. Without these structures, such parts would collapse during printing." msgstr "Damit werden Strukturen zur Unterstützung von Modellteilen mit Überhängen generiert. Ohne diese Strukturen würden solche Teile während des Druckvorgangs zusammenfallen." -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:764 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:799 msgctxt "@label" msgid "Support Extruder" msgstr "Extruder für Stützstruktur" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:816 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:851 msgctxt "@label" msgid "Select which extruder to use for support. This will build up supporting structures below the model to prevent the model from sagging or printing in mid air." msgstr "Wählen Sie, welcher Extruder für die Unterstützung verwendet wird. Dient zum Konstruieren von Stützstrukturen unter dem Modell, damit dieses nicht absinkt oder frei schwebend gedruckt wird." -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:839 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:874 msgctxt "@label" msgid "Build Plate Adhesion" msgstr "Druckplattenhaftung" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:894 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:929 msgctxt "@label" msgid "Enable printing a brim or raft. This will add a flat area around or under your object which is easy to cut off afterwards." msgstr "Drucken eines Brim- oder Raft-Elements aktivieren. Es wird ein flacher Bereich rund um oder unter Ihrem Objekt hinzugefügt, das im Anschluss leicht abgeschnitten werden kann. " -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:934 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:969 msgctxt "@label" msgid "Need help improving your prints?
      Read the Ultimaker Troubleshooting Guides" msgstr "Sie benötigen Hilfe für Ihre Drucke?
      Lesen Sie die Ultimaker Anleitungen für Fehlerbehebung>" @@ -3988,17 +4351,22 @@ msgctxt "@title:window" msgid "Open project file" msgstr "Projektdatei öffnen" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:72 +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:93 msgctxt "@text:window" msgid "This is a Cura project file. Would you like to open it as a project or import the models from it?" msgstr "Dies ist eine Cura-Projektdatei. Möchten Sie diese als Projekt öffnen oder die Modelle hieraus importieren?" #: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:103 +msgctxt "@text:window" +msgid "Remember my choice" +msgstr "Meine Auswahl merken" + +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:122 msgctxt "@action:button" msgid "Open as project" msgstr "Als Projekt öffnen" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:122 +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:131 msgctxt "@action:button" msgid "Import models" msgstr "Modelle importieren" @@ -4008,21 +4376,36 @@ msgctxt "@title:window" msgid "Engine Log" msgstr "Engine-Protokoll" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:242 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:245 msgctxt "@label" msgid "Material" msgstr "Material" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:349 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:352 msgctxt "@label" -msgid "Check compatibility" -msgstr "Kompatibilität prüfen" +msgid "Check compatibility" +msgstr "Kompatibilität prüfen" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:369 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:372 msgctxt "@tooltip" msgid "Click to check the material compatibility on Ultimaker.com." msgstr "Klicken Sie, um die Materialkompatibilität auf Ultimaker.com zu prüfen." +#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:211 +msgctxt "@option:check" +msgid "See only current build plate" +msgstr "Nur aktuelle Druckplatte anzeigen" + +#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:227 +msgctxt "@action:button" +msgid "Arrange to all build plates" +msgstr "An allen Druckplatten ausrichten" + +#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:247 +msgctxt "@action:button" +msgid "Arrange current build plate" +msgstr "An aktueller Druckplatte ausrichten" + #: MachineSettingsAction/plugin.json msgctxt "description" msgid "Provides a way to change machine settings (such as build volume, nozzle size, etc)" @@ -4113,6 +4496,26 @@ msgctxt "name" msgid "USB printing" msgstr "USB-Drucken" +#: PrepareStage/plugin.json +msgctxt "description" +msgid "Provides a prepare stage in Cura." +msgstr "Bietet eine Vorbereitungsstufe in Cura." + +#: PrepareStage/plugin.json +msgctxt "name" +msgid "Prepare Stage" +msgstr "Vorbereitungsstufe" + +#: CuraLiveScriptingPlugin/plugin.json +msgctxt "description" +msgid "Provides an edit window for direct script editing." +msgstr "Bietet ein Bearbeitungsfenster für direkte Skriptbearbeitung." + +#: CuraLiveScriptingPlugin/plugin.json +msgctxt "name" +msgid "Live scripting tool" +msgstr "Live-Scripting-Tool" + #: RemovableDriveOutputDevice/plugin.json msgctxt "description" msgid "Provides removable drive hotplugging and writing support." @@ -4133,6 +4536,16 @@ msgctxt "name" msgid "UM3 Network Connection" msgstr "UM3-Netzwerkverbindung" +#: MonitorStage/plugin.json +msgctxt "description" +msgid "Provides a monitor stage in Cura." +msgstr "Bietet eine Überwachungsstufe in Cura." + +#: MonitorStage/plugin.json +msgctxt "name" +msgid "Monitor Stage" +msgstr "Überwachungsstufe" + #: FirmwareUpdateChecker/plugin.json msgctxt "description" msgid "Checks for firmware updates." @@ -4145,8 +4558,8 @@ msgstr "Firmware-Update-Prüfer" #: CuraSolidWorksPlugin/plugin.json msgctxt "description" -msgid "Gives you the possibility to open certain files via SolidWorks itself. These are then converted and loaded into Cura" -msgstr "Bietet Ihnen die Möglichkeit, bestimmte Dateien über SolidWorks selbst zu öffnen. Diese werden anschließend konvertiert und in Cura geladen." +msgid "Gives you the possibility to open certain files using SolidWorks itself. Conversion is done by this plugin and additional optimizations." +msgstr "Bietet Ihnen die Möglichkeit, bestimmte Dateien über SolidWorks selbst zu öffnen. Die Konvertierung erfolgt über dieses Plugin und zusätzliche Optimierungen." #: CuraSolidWorksPlugin/plugin.json msgctxt "name" @@ -4213,6 +4626,16 @@ msgctxt "name" msgid "Legacy Cura Profile Reader" msgstr "Cura-Vorgängerprofil-Reader" +#: CuraBlenderPlugin/plugin.json +msgctxt "description" +msgid "Helps to open Blender files directly in Cura." +msgstr "Unterstützt das Öffnen der Blender-Dateien direkt in Cura." + +#: CuraBlenderPlugin/plugin.json +msgctxt "name" +msgid "Blender Integration (experimental)" +msgstr "Blender-Integration (experimentell)" + #: GCodeProfileReader/plugin.json msgctxt "description" msgid "Provides support for importing profiles from g-code files." @@ -4373,6 +4796,16 @@ 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." @@ -4413,6 +4846,156 @@ msgctxt "name" msgid "Cura Profile Reader" msgstr "Cura-Profil-Reader" +#~ msgctxt "@label" +#~ msgid "Unknown" +#~ msgstr "Unbekannt" + +#~ msgctxt "@info:status" +#~ msgid "Errors appeared while opening your SolidWorks file! Please check, whether it is possible to open your file in SolidWorks itself without any problems as well!" +#~ msgstr "Beim Öffnen Ihrer SolidWorks Datei trat ein Fehler auf! Überprüfen Sie bitte, ob sich Ihre Datei in SolidWorks ohne Probleme öffnen lässt!" + +#~ msgctxt "@info:status" +#~ msgid "Error while starting %s!" +#~ msgstr "Fehler beim Starten %s!" + +#~ msgctxt "@item:inlistbox" +#~ msgid "Simulation view" +#~ msgstr "Simulationsansicht" + +#~ msgctxt "@info" +#~ msgid "Cura collects anonymised slicing statistics. You can disable this in the preferences." +#~ msgstr "Cura erfasst anonymisierte Slice-Informationen. Sie können dies in den Einstellungen deaktivieren." + +#~ msgctxt "@action:button" +#~ msgid "Dismiss" +#~ msgstr "Verwerfen" + +#~ msgctxt "@menuitem" +#~ msgid "Global" +#~ msgstr "Global" + +#~ msgctxt "@label crash message" +#~ msgid "" +#~ "

      A fatal exception has occurred. Please send us this Crash Report to fix the problem

      \n" +#~ "

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

      \n" +#~ " " +#~ msgstr "" +#~ "

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

      \n" +#~ "

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

      \n" +#~ " " + +#~ msgctxt "@label Cura version" +#~ msgid "Cura version: {version}
      " +#~ msgstr "Cura-Version: {version}
      " + +#~ msgctxt "@label Platform" +#~ msgid "Platform: {platform}
      " +#~ msgstr "Plattform: {platform}
      " + +#~ msgctxt "@label Qt version" +#~ msgid "Qt version: {qt}
      " +#~ msgstr "Qt-Version: {qt}
      " + +#~ msgctxt "@label PyQt version" +#~ msgid "PyQt version: {pyqt}
      " +#~ msgstr "PyQt-Version: {pyqt}
      " + +#~ msgctxt "@label OpenGL" +#~ msgid "OpenGL: {opengl}
      " +#~ msgstr "OpenGL: {opengl}
      " + +#~ msgctxt "@title:groupbox" +#~ msgid "Exception traceback" +#~ msgstr "Ausnahme-Rückverfolgung" + +#~ msgctxt "@label" +#~ msgid "Material diameter" +#~ msgstr "Materialdurchmesser" + +#~ msgctxt "@label" +#~ msgid "Ultimaker 3" +#~ msgstr "Ultimaker 3" + +#~ msgctxt "@label" +#~ msgid "Ultimaker 3 Extended" +#~ msgstr "Ultimaker 3 Extended" + +#~ msgctxt "@title:window" +#~ msgid "Cura SolidWorks Plugin Configuration" +#~ msgstr "Cura SolidWorks Plugin-Konfiguration" + +#~ msgctxt "@action:label" +#~ msgid "Default quality of the exported STL:" +#~ msgstr "Standardqualität des exportierten STL:" + +#~ msgctxt "@option:curaSolidworksStlQuality" +#~ msgid "Always ask" +#~ msgstr "Immer nachfragen" + +#~ msgctxt "@option:curaSolidworksStlQuality" +#~ msgid "Always use Fine quality" +#~ msgstr "Immer Qualität „Fein“ verwenden" + +#~ msgctxt "@option:curaSolidworksStlQuality" +#~ msgid "Always use Coarse quality" +#~ msgstr "Immer Qualität „Grob“ verwenden" + +#~ msgctxt "@title:window" +#~ msgid "Import SolidWorks File as STL..." +#~ msgstr "SolidWorks-Datei importieren als STL ..." + +#~ msgctxt "@info:tooltip" +#~ msgid "Quality of the Exported STL" +#~ msgstr "Qualität des exportierten STL" + +#~ msgctxt "@action:label" +#~ msgid "Quality" +#~ msgstr "Qualität" + +#~ msgctxt "@option:curaSolidworksStlQuality" +#~ msgid "Coarse" +#~ msgstr "Grob" + +#~ msgctxt "@option:curaSolidworksStlQuality" +#~ msgid "Fine" +#~ msgstr "Fein" + +#~ msgctxt "@" +#~ msgid "No Profile Available" +#~ msgstr "Kein Profil verfügbar" + +#~ 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" + +#~ msgctxt "@tooltip" +#~ msgid "Time specification
      " +#~ msgstr "Zeitangabe
      " + +#~ msgctxt "@action:inmenu menubar:view" +#~ msgid "&Reset camera position" +#~ msgstr "&Kameraposition zurücksetzen" + +#~ msgctxt "@title:menu menubar:file" +#~ msgid "Save project" +#~ msgstr "Projekt speichern" + +#~ msgctxt "@title:tab" +#~ msgid "Prepare" +#~ msgstr "Vorbereiten" + +#~ msgctxt "@title:tab" +#~ msgid "Monitor" +#~ msgstr "Überwachen" + +#~ msgctxt "@label" +#~ msgid "Check compatibility" +#~ msgstr "Kompatibilität prüfen" + +#~ msgctxt "description" +#~ msgid "Gives you the possibility to open certain files via SolidWorks itself. These are then converted and loaded into Cura" +#~ msgstr "Bietet Ihnen die Möglichkeit, bestimmte Dateien über SolidWorks selbst zu öffnen. Diese werden anschließend konvertiert und in Cura geladen." + #~ msgctxt "@label:status" #~ msgid "Blocked" #~ msgstr "Blockiert" @@ -4433,13 +5016,9 @@ msgstr "Cura-Profil-Reader" #~ msgid "To ensure that your {machine_name} is equipped with the latest features it is recommended to update the firmware regularly. This can be done on the {machine_name} (when connected to the network) or via USB." #~ msgstr "Um sicherzustellen, dass Ihr {machine_name} mit den neuesten Funktionen ausgestattet ist, wird empfohlen, die Firmware regelmäßig zu aktualisieren Dies kann auf dem {machine_name} (bei Anschluss an ein Netzwerk) oder über USB erfolgen." -msgctxt "@item:inlistbox" -msgid "Layer view" -msgstr "Schichtenansicht" - -msgctxt "@info:title" -msgid "Layer View" -msgstr "Schichtenansicht" +#~ msgctxt "@info:title" +#~ msgid "Layer View" +#~ msgstr "Schichtenansicht" #~ msgctxt "@menuitem" #~ msgid "Browse plugins" @@ -4541,9 +5120,9 @@ msgstr "Schichtenansicht" #~ msgid "Provides the Layer view." #~ msgstr "Bietet eine Schichtenansicht." -msgctxt "name" -msgid "Layer View" -msgstr "Schichtenansicht" +#~ msgctxt "name" +#~ msgid "Layer View" +#~ msgstr "Schichtenansicht" #~ msgctxt "@item:inlistbox" #~ msgid "X-Ray" @@ -4864,9 +5443,9 @@ msgstr "Schichtenansicht" #~ msgid "Provides support for importing profiles from g-code files." #~ msgstr "Ermöglicht das Importieren von Profilen aus G-Code-Dateien." -msgctxt "@label" -msgid "Layer View" -msgstr "Schichtenansicht" +#~ msgctxt "@label" +#~ msgid "Layer View" +#~ msgstr "Schichtenansicht" #~ msgctxt "@info:whatsthis" #~ msgid "Provides the Layer view." diff --git a/resources/i18n/de_DE/fdmextruder.def.json.po b/resources/i18n/de_DE/fdmextruder.def.json.po index 1108f1a541..4c81c54c35 100644 --- a/resources/i18n/de_DE/fdmextruder.def.json.po +++ b/resources/i18n/de_DE/fdmextruder.def.json.po @@ -1,13 +1,13 @@ -# Cura JSON setting files -# Copyright (C) 2017 Ultimaker +# Cura +# Copyright (C) 2018 Ultimaker # This file is distributed under the same license as the Cura package. -# Ruben Dulek , 2017. -# +# Ruben Dulek , 2018. +# msgid "" msgstr "" -"Project-Id-Version: Cura 3.0\n" -"Report-Msgid-Bugs-To: http://github.com/ultimaker/uranium\n" -"POT-Creation-Date: 2017-11-21 16:58+0000\n" +"Project-Id-Version: Cura 3.2\n" +"Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" +"POT-Creation-Date: 2017-08-02 16:53+0000\n" "PO-Revision-Date: 2017-11-30 13:05+0100\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 337df8bff2..95422bb589 100644 --- a/resources/i18n/de_DE/fdmprinter.def.json.po +++ b/resources/i18n/de_DE/fdmprinter.def.json.po @@ -1,13 +1,13 @@ -# Cura JSON setting files -# Copyright (C) 2017 Ultimaker +# Cura +# Copyright (C) 2018 Ultimaker # This file is distributed under the same license as the Cura package. -# Ruben Dulek , 2017. -# +# Ruben Dulek , 2018. +# msgid "" msgstr "" -"Project-Id-Version: Cura 3.0\n" -"Report-Msgid-Bugs-To: http://github.com/ultimaker/uranium\n" -"POT-Creation-Date: 2017-11-21 16:58+0000\n" +"Project-Id-Version: Cura 3.2\n" +"Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" +"POT-Creation-Date: 2018-01-29 09:48+0000\n" "PO-Revision-Date: 2017-11-30 13:05+0100\n" "Last-Translator: Bothof \n" "Language-Team: German\n" @@ -345,6 +345,16 @@ msgctxt "machine_gcode_flavor option Repetier" msgid "Repetier" msgstr "Repetier" +#: fdmprinter.def.json +msgctxt "machine_firmware_retract label" +msgid "Firmware Retraction" +msgstr "Firmware-Einzug" + +#: fdmprinter.def.json +msgctxt "machine_firmware_retract description" +msgid "Whether to use firmware retract commands (G10/G11) instead of using the E property in G1 commands to retract the material." +msgstr "Definiert, ob Firmware-Einzugsbefehle (G10/G11) anstelle der E-Eigenschaft in G1-Befehlen verwendet wird, um das Material einzuziehen." + #: fdmprinter.def.json msgctxt "machine_disallowed_areas label" msgid "Disallowed areas" @@ -605,31 +615,6 @@ msgctxt "layer_height_0 description" msgid "The height of the initial layer in mm. A thicker initial layer makes adhesion to the build plate easier." msgstr "Die Dicke der ersten Schicht in mm. Eine dicke erste Schicht erleichtert die Haftung am Druckbett." -#: fdmprinter.def.json -msgctxt "slicing_tolerance label" -msgid "Slicing Tolerance" -msgstr "Slicing-Toleranz" - -#: fdmprinter.def.json -msgctxt "slicing_tolerance description" -msgid "How to slice layers with diagonal surfaces. The areas of a layer can be generated based on where the middle of the layer intersects the surface (Middle). Alternatively each layer can have the areas which fall inside of the volume throughout the height of the layer (Exclusive) or a layer has the areas which fall inside anywhere within the layer (Inclusive). Exclusive retains the most details, Inclusive makes for the best fit and Middle takes the least time to process." -msgstr "Slicen von Schichten mit diagonalen Flächen. Die Bereiche einer Schicht können anhand der Position generiert werden, an der die Mitte einer Schicht die Oberfläche kreuzt (Mitte). Optional kann jede Schicht die Bereiche enthalten, die in das Volumen entlang der Höhe der Schicht (Exklusiv) fallen oder eine Schicht enthält die Bereiche, die irgendwo innerhalb der Schicht positioniert sind (Inklusiv). Exklusiv bewahrt die meisten Details, Inklusiv ermöglicht die beste Passform und Mitte erfordert die kürzeste Bearbeitungszeit." - -#: fdmprinter.def.json -msgctxt "slicing_tolerance option middle" -msgid "Middle" -msgstr "Mitte" - -#: fdmprinter.def.json -msgctxt "slicing_tolerance option exclusive" -msgid "Exclusive" -msgstr "Exklusiv" - -#: fdmprinter.def.json -msgctxt "slicing_tolerance option inclusive" -msgid "Inclusive" -msgstr "Inklusiv" - #: fdmprinter.def.json msgctxt "line_width label" msgid "Line Width" @@ -670,16 +655,6 @@ msgctxt "wall_line_width_x description" msgid "Width of a single wall line for all wall lines except the outermost one." msgstr "Die Breite einer einzelnen Wandlinie für alle Wandlinien, außer der äußersten." -#: fdmprinter.def.json -msgctxt "roofing_line_width label" -msgid "Top Surface Skin Line Width" -msgstr "Oberfläche Außenhaut Linienbreite" - -#: fdmprinter.def.json -msgctxt "roofing_line_width description" -msgid "Width of a single line of the areas at the top of the print." -msgstr "Die Breite einer einzelnen Linie der oberen Druckbereiche." - #: fdmprinter.def.json msgctxt "skin_line_width label" msgid "Top/Bottom Line Width" @@ -860,41 +835,6 @@ msgctxt "roofing_layer_count description" msgid "The number of top most skin layers. Usually only one top most layer is sufficient to generate higher quality top surfaces." msgstr "Die Anzahl der obersten Außenhautschichten. Üblicherweise reicht eine einzige oberste Schicht aus, um höherwertige Oberflächen zu generieren." -#: fdmprinter.def.json -msgctxt "roofing_pattern label" -msgid "Top Surface Skin Pattern" -msgstr "Oberfläche Außenhaut Muster" - -#: fdmprinter.def.json -msgctxt "roofing_pattern description" -msgid "The pattern of the top most layers." -msgstr "Das Muster der obersten Schichten." - -#: fdmprinter.def.json -msgctxt "roofing_pattern option lines" -msgid "Lines" -msgstr "Linien" - -#: fdmprinter.def.json -msgctxt "roofing_pattern option concentric" -msgid "Concentric" -msgstr "Konzentrisch" - -#: fdmprinter.def.json -msgctxt "roofing_pattern option zigzag" -msgid "Zig Zag" -msgstr "Zickzack" - -#: fdmprinter.def.json -msgctxt "roofing_angles label" -msgid "Top Surface Skin Line Directions" -msgstr "Linienrichtungen der Oberfläche Außenhaut" - -#: fdmprinter.def.json -msgctxt "roofing_angles description" -msgid "A list of integer line directions to use when the top surface skin layers use the lines or zig zag pattern. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the traditional default angles (45 and 135 degrees)." -msgstr "Eine Liste von Ganzzahl-Linienrichtungen für den Fall, wenn die oberen Außenhautschichten die Linien- oder Zickzack-Muster verwenden. Elemente aus der Liste werden während des Aufbaus der Schichten sequentiell verwendet und wenn das Listenende erreicht wird, beginnt die Liste von vorne. 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 (45- und 135-Grad) verwendet werden." - #: fdmprinter.def.json msgctxt "top_bottom_extruder_nr label" msgid "Top/Bottom Extruder" @@ -1025,6 +965,16 @@ msgctxt "wall_0_inset description" msgid "Inset applied to the path of the outer wall. If the outer wall is smaller than the nozzle, and printed after the inner walls, use this offset to get the hole in the nozzle to overlap with the inner walls instead of the outside of the model." msgstr "Verwendete Einfügung am Pfad zur Außenwand. Wenn die Außenwand kleiner als die Düse ist und nach den Innenwänden gedruckt wird, verwenden Sie diesen Versatz, damit die Öffnung in der Düse mit den Innenwänden überlappt, anstelle mit der Außenseite des Modells." +#: fdmprinter.def.json +msgctxt "optimize_wall_printing_order label" +msgid "Optimize Wall Printing Order" +msgstr "Reihenfolge des Wanddrucks optimieren" + +#: fdmprinter.def.json +msgctxt "optimize_wall_printing_order description" +msgid "Optimize the order in which walls are printed so as to reduce the number of retractions and the distance travelled. Most parts will benefit from this being enabled but some may actually take longer so please compare the print time estimates with and without optimization." +msgstr "Optimieren Sie die Reihenfolge, in der die Wände gedruckt werden, um die Anzahl der Einzüge und die zurückgelegten Distanzen zu reduzieren. Dieser Schritt bringt für die meisten Teile Vorteile, allerdings werden einige möglicherweise länger benötigen. Vergleichen Sie deshalb bitte die Schätzung der Druckzeiten mit und ohne Optimierung." + #: fdmprinter.def.json msgctxt "outer_inset_first label" msgid "Outer Before Inner Walls" @@ -1095,6 +1045,16 @@ msgctxt "fill_perimeter_gaps option everywhere" msgid "Everywhere" msgstr "Überall" +#: fdmprinter.def.json +msgctxt "filter_out_tiny_gaps label" +msgid "Filter Out Tiny Gaps" +msgstr "Kleine Lücken ausfiltern" + +#: fdmprinter.def.json +msgctxt "filter_out_tiny_gaps description" +msgid "Filter out tiny gaps to reduce blobs on outside of model." +msgstr "Kleine Lücken ausfiltern, um Tropfen an der Außenseite des Modells zu reduzieren." + #: fdmprinter.def.json msgctxt "fill_outline_gaps label" msgid "Print Thin Walls" @@ -1477,8 +1437,8 @@ msgstr "X-Versatz Füllung" #: fdmprinter.def.json msgctxt "infill_offset_x description" -msgid "The infill pattern is offset this distance along the X axis." -msgstr "Das Füllmuster wird um diese Distanz entlang der X-Achse versetzt." +msgid "The infill pattern is moved this distance along the X axis." +msgstr "Das Füllmuster wird um diese Distanz entlang der X-Achse verschoben." #: fdmprinter.def.json msgctxt "infill_offset_y label" @@ -1487,8 +1447,8 @@ msgstr "Y-Versatz Füllung" #: fdmprinter.def.json msgctxt "infill_offset_y description" -msgid "The infill pattern is offset this distance along the Y axis." -msgstr "Das Füllmuster wird um diese Distanz entlang der Y-Achse versetzt." +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 "sub_div_rad_add label" @@ -1507,8 +1467,8 @@ msgstr "Prozentsatz Füllung überlappen" #: fdmprinter.def.json msgctxt "infill_overlap 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." +msgid "The amount of overlap between the infill and the walls as a percentage of the infill line width. 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 als Prozentwert der Füllungslinienbreite. Ein leichtes Überlappen ermöglicht es den Wänden, eine solide Verbindung mit der Füllung herzustellen." #: fdmprinter.def.json msgctxt "infill_overlap_mm label" @@ -1527,8 +1487,8 @@ msgstr "Prozentsatz Außenhaut überlappen" #: fdmprinter.def.json msgctxt "skin_overlap description" -msgid "The amount of overlap between the skin and the walls as a percentage of the line width. A slight overlap allows the walls to connect firmly to the skin. This is a percentage of the average line widths of the skin lines and the innermost wall." -msgstr "Das Ausmaß des Überlappens zwischen der Außenhaut und den Wänden als Prozentwert der Linienbreite. Ein leichtes Überlappen ermöglicht es den Wänden, eine solide Verbindung mit der Außenhaut herzustellen. Dies ist ein Prozentwert der durchschnittlichen Linienbreiten der Außenhautlinien und der innersten Wand." +msgid "The amount of overlap between the skin and the walls as a percentage of the skin line width. A slight overlap allows the walls to connect firmly to the skin. This is a percentage of the average line widths of the skin lines and the innermost wall." +msgstr "Das Ausmaß des Überlappens zwischen der Außenhaut und den Wänden als Prozentwert der Außenhaut-Linienbreite. Ein leichtes Überlappen ermöglicht es den Wänden, eine solide Verbindung mit der Außenhaut herzustellen. Dies ist ein Prozentwert der durchschnittlichen Linienbreiten der Außenhautlinien und der innersten Wand." #: fdmprinter.def.json msgctxt "skin_overlap_mm label" @@ -1690,16 +1650,6 @@ msgctxt "material description" msgid "Material" msgstr "Material" -#: fdmprinter.def.json -msgctxt "material_flow_dependent_temperature label" -msgid "Auto Temperature" -msgstr "Automatische Temperatur" - -#: fdmprinter.def.json -msgctxt "material_flow_dependent_temperature description" -msgid "Change the temperature for each layer automatically with the average flow speed of that layer." -msgstr "Die Temperatur wird für jede Schicht automatisch anhand der durchschnittlichen Fließgeschwindigkeit dieser Schicht geändert." - #: fdmprinter.def.json msgctxt "default_material_print_temperature label" msgid "Default Printing Temperature" @@ -1750,16 +1700,6 @@ msgctxt "material_final_print_temperature description" msgid "The temperature to which to already start cooling down just before the end of printing." msgstr "Die Temperatur, bei der das Abkühlen bereits beginnen kann, bevor der Druck beendet wird." -#: fdmprinter.def.json -msgctxt "material_flow_temp_graph label" -msgid "Flow Temperature Graph" -msgstr "Fließtemperaturgraf" - -#: fdmprinter.def.json -msgctxt "material_flow_temp_graph description" -msgid "Data linking material flow (in mm3 per second) to temperature (degrees Celsius)." -msgstr "Der Materialfluss (in mm3 pro Sekunde) in Bezug zur Temperatur (Grad Celsius)." - #: fdmprinter.def.json msgctxt "material_extrusion_cool_down_speed label" msgid "Extrusion Cool Down Speed Modifier" @@ -1777,8 +1717,8 @@ msgstr "Temperatur Druckplatte" #: fdmprinter.def.json msgctxt "material_bed_temperature description" -msgid "The temperature used for the heated build plate. If this is 0, the bed will not heat up for this print." -msgstr "Die Temperatur, die für die erhitzte Druckplatte verwendet wird. Wenn dieser Wert 0 beträgt, wird das Bett für diesen Druck nicht erhitzt." +msgid "The temperature used for the heated build plate. If this is 0, the bed temperature will not be adjusted." +msgstr "Die Temperatur, die für die erhitzte Druckplatte verwendet wird. Wenn dieser Wert 0 beträgt, wird die Betttemperatur nicht angepasst." #: fdmprinter.def.json msgctxt "material_bed_temperature_layer_0 label" @@ -3450,6 +3390,16 @@ msgctxt "support_tower_roof_angle description" msgid "The angle of a rooftop of a tower. A higher value results in pointed tower roofs, a lower value results in flattened tower roofs." msgstr "Der Winkel eines Pfeilerdachs. Ein höherer Wert hat spitze Pfeilerdächer zur Folge, ein niedrigerer Wert führt zu flacheren Pfeilerdächern." +#: fdmprinter.def.json +msgctxt "support_mesh_drop_down label" +msgid "Drop Down Support Mesh" +msgstr "Stütznetz ablegen" + +#: fdmprinter.def.json +msgctxt "support_mesh_drop_down description" +msgid "Make support everywhere below the support mesh, so that there's no overhang in the support mesh." +msgstr "Sorgt für Unterstützung überall unterhalb des Stütznetzes, sodass kein Überhang im Stütznetz vorhanden ist." + #: fdmprinter.def.json msgctxt "platform_adhesion label" msgid "Build Plate Adhesion" @@ -4082,16 +4032,6 @@ msgctxt "meshfix_keep_open_polygons description" msgid "Normally Cura tries to stitch up small holes in the mesh and remove parts of a layer with big holes. Enabling this option keeps those parts which cannot be stitched. This option should be used as a last resort option when everything else fails to produce proper GCode." msgstr "Normalerweise versucht Cura kleine Löcher im Netz abzudecken und Teile von Schichten, die große Löcher aufweisen, zu entfernen. Die Aktivierung dieser Option erhält jene Teile, die nicht abgedeckt werden können. Diese Option sollte nur als letzter Ausweg verwendet werden, wenn es ansonsten nicht möglich ist, einen korrekten G-Code zu berechnen." -#: 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 "multiple_mesh_overlap label" msgid "Merged Meshes Overlap" @@ -4242,16 +4182,6 @@ msgctxt "support_mesh description" msgid "Use this mesh to specify support areas. This can be used to generate support structure." msgstr "Dieses Netz wird verwendet, um festzulegen, welche Bereiche gestützt werden sollen. Dies kann verwendet werden, um eine Stützstruktur zu errichten." -#: fdmprinter.def.json -msgctxt "support_mesh_drop_down label" -msgid "Drop Down Support Mesh" -msgstr "Stütznetz ablegen" - -#: fdmprinter.def.json -msgctxt "support_mesh_drop_down description" -msgid "Make support everywhere below the support mesh, so that there's no overhang in the support mesh." -msgstr "Sorgt für Unterstützung überall unterhalb des Stütznetzes, sodass kein Überhang im Stütznetz vorhanden ist." - #: fdmprinter.def.json msgctxt "anti_overhang_mesh label" msgid "Anti Overhang Mesh" @@ -4328,14 +4258,194 @@ msgid "experimental!" msgstr "experimentell!" #: fdmprinter.def.json -msgctxt "optimize_wall_printing_order label" -msgid "Optimize Wall Printing Order" -msgstr "Reihenfolge des Wanddrucks optimieren" +msgctxt "support_tree_enable label" +msgid "Tree Support" +msgstr "Baumstruktur" #: fdmprinter.def.json -msgctxt "optimize_wall_printing_order description" -msgid "Optimize the order in which walls are printed so as to reduce the number of retractions and the distance travelled. Most parts will benefit from this being enabled but some may actually take longer so please compare the print time estimates with and without optimization." -msgstr "Optimieren Sie die Reihenfolge, in der die Wände gedruckt werden, um die Anzahl der Einzüge und die zurückgelegten Distanzen zu reduzieren. Dieser Schritt bringt für die meisten Teile Vorteile, allerdings werden einige möglicherweise länger benötigen. Vergleichen Sie deshalb bitte die Schätzung der Druckzeiten mit und ohne Optimierung." +msgctxt "support_tree_enable description" +msgid "Generate a tree-like support with branches that support your print. This may reduce material usage and print time, but greatly increases slicing time." +msgstr "Erstellen Sie eine baumähnliche Stützstruktur mit Ästen, die Ihren Druck stützen. Das reduziert möglicherweise den Materialverbrauch und die Druckdauer, erhöht jedoch die Slicing-Dauer erheblich." + +#: fdmprinter.def.json +msgctxt "support_tree_angle label" +msgid "Tree Support Branch Angle" +msgstr "Astwinkel der Baumstützstruktur" + +#: fdmprinter.def.json +msgctxt "support_tree_angle description" +msgid "The angle of the branches. Use a lower angle to make them more vertical and more stable. Use a higher angle to be able to have more reach." +msgstr "Dies bezeichnet den Winkel der Äste. Verwenden Sie einen geringeren Winkel, um sie vertikaler und stabiler zu gestalten. Verwenden Sie einen stärkeren Winkel, um mehr Reichweite zu erhalten." + +#: fdmprinter.def.json +msgctxt "support_tree_branch_distance label" +msgid "Tree Support Branch Distance" +msgstr "Astabstand der Baumstützstruktur" + +#: fdmprinter.def.json +msgctxt "support_tree_branch_distance description" +msgid "How far apart the branches need to be when they touch the model. Making this distance small will cause the tree support to touch the model at more points, causing better overhang but making support harder to remove." +msgstr "Dies beschreibt, wie weit die Äste weg sein müssen, wenn sie das Modell berühren. Eine geringe Entfernung lässt die Baumstützstruktur das Modell an mehreren Punkten berühren, und führt zu einem besseren Überhang, allerdings lässt sich die Stützstruktur auch schwieriger entfernen." + +#: fdmprinter.def.json +msgctxt "support_tree_branch_diameter label" +msgid "Tree Support Branch Diameter" +msgstr "Astdurchmesser der Baumstützstruktur" + +#: fdmprinter.def.json +msgctxt "support_tree_branch_diameter description" +msgid "The diameter of the thinnest branches of tree support. Thicker branches are more sturdy. Branches towards the base will be thicker than this." +msgstr "Dies beschreibt den Durchmesser der dünnsten Äste der Baumstützstruktur. Dickere Äste sind stabiler. Äste zur Basis hin werden dicker als diese sein." + +#: fdmprinter.def.json +msgctxt "support_tree_branch_diameter_angle label" +msgid "Tree Support Branch Diameter Angle" +msgstr "Winkel Astdurchmesser der Baumstützstruktur" + +#: fdmprinter.def.json +msgctxt "support_tree_branch_diameter_angle description" +msgid "The angle of the branches' diameter as they gradually become thicker towards the bottom. An angle of 0 will cause the branches to have uniform thickness over their length. A bit of an angle can increase stability of the tree support." +msgstr "Dies beschreibt den Winkel der Astdurchmesser, da sie stufenweise zum Boden hin dicker werden. Ein Winkel von 0 lässt die Äste über die gesamte Länge hinweg eine gleiche Dicke haben. Ein geringer Winkel kann die Stabilität der Baumstützstruktur erhöhen." + +#: fdmprinter.def.json +msgctxt "support_tree_collision_resolution label" +msgid "Tree Support Collision Resolution" +msgstr "Kollisionsauflösung der Baumstützstruktur" + +#: fdmprinter.def.json +msgctxt "support_tree_collision_resolution description" +msgid "Resolution to compute collisions with to avoid hitting the model. Setting this lower will produce more accurate trees that fail less often, but increases slicing time dramatically." +msgstr "Dies ist die Auflösung für die Berechnung von Kollisionen, um ein Anschlagen des Modells zu verhindern. Eine niedrigere Einstellung sorgt für akkuratere Bäume, die weniger häufig fehlschlagen, erhöht jedoch die Slicing-Zeit erheblich." + +#: fdmprinter.def.json +msgctxt "support_tree_wall_thickness label" +msgid "Tree Support Wall Thickness" +msgstr "Wanddicke der Baumstützstruktur" + +#: fdmprinter.def.json +msgctxt "support_tree_wall_thickness description" +msgid "The thickness of the walls of the branches of tree support. Thicker walls take longer to print but don't fall over as easily." +msgstr "Das ist die Dicke der Astwände der Baumstützstruktur. Dickere Wände benötigen eine längere Druckdauer, fallen jedoch nicht so leicht um." + +#: fdmprinter.def.json +msgctxt "support_tree_wall_count label" +msgid "Tree Support Wall Line Count" +msgstr "Anzahl der Wandlinien der Baumstützstruktur" + +#: fdmprinter.def.json +msgctxt "support_tree_wall_count description" +msgid "The number of walls of the branches of tree support. Thicker walls take longer to print but don't fall over as easily." +msgstr "Das ist die Anzahl der Astwände der Baumstützstruktur. Dickere Wände benötigen eine längere Druckdauer, fallen jedoch nicht so leicht um." + +#: fdmprinter.def.json +msgctxt "slicing_tolerance label" +msgid "Slicing Tolerance" +msgstr "Slicing-Toleranz" + +#: fdmprinter.def.json +msgctxt "slicing_tolerance description" +msgid "How to slice layers with diagonal surfaces. The areas of a layer can be generated based on where the middle of the layer intersects the surface (Middle). Alternatively each layer can have the areas which fall inside of the volume throughout the height of the layer (Exclusive) or a layer has the areas which fall inside anywhere within the layer (Inclusive). Exclusive retains the most details, Inclusive makes for the best fit and Middle takes the least time to process." +msgstr "Slicen von Schichten mit diagonalen Flächen. Die Bereiche einer Schicht können anhand der Position generiert werden, an der die Mitte einer Schicht die Oberfläche kreuzt (Mitte). Optional kann jede Schicht die Bereiche enthalten, die in das Volumen entlang der Höhe der Schicht (Exklusiv) fallen oder eine Schicht enthält die Bereiche, die irgendwo innerhalb der Schicht positioniert sind (Inklusiv). Exklusiv bewahrt die meisten Details, Inklusiv ermöglicht die beste Passform und Mitte erfordert die kürzeste Bearbeitungszeit." + +#: fdmprinter.def.json +msgctxt "slicing_tolerance option middle" +msgid "Middle" +msgstr "Mitte" + +#: fdmprinter.def.json +msgctxt "slicing_tolerance option exclusive" +msgid "Exclusive" +msgstr "Exklusiv" + +#: fdmprinter.def.json +msgctxt "slicing_tolerance option inclusive" +msgid "Inclusive" +msgstr "Inklusiv" + +#: fdmprinter.def.json +msgctxt "roofing_line_width label" +msgid "Top Surface Skin Line Width" +msgstr "Oberfläche Außenhaut Linienbreite" + +#: fdmprinter.def.json +msgctxt "roofing_line_width description" +msgid "Width of a single line of the areas at the top of the print." +msgstr "Die Breite einer einzelnen Linie der oberen Druckbereiche." + +#: fdmprinter.def.json +msgctxt "roofing_pattern label" +msgid "Top Surface Skin Pattern" +msgstr "Oberfläche Außenhaut Muster" + +#: fdmprinter.def.json +msgctxt "roofing_pattern description" +msgid "The pattern of the top most layers." +msgstr "Das Muster der obersten Schichten." + +#: fdmprinter.def.json +msgctxt "roofing_pattern option lines" +msgid "Lines" +msgstr "Linien" + +#: fdmprinter.def.json +msgctxt "roofing_pattern option concentric" +msgid "Concentric" +msgstr "Konzentrisch" + +#: fdmprinter.def.json +msgctxt "roofing_pattern option zigzag" +msgid "Zig Zag" +msgstr "Zickzack" + +#: fdmprinter.def.json +msgctxt "roofing_angles label" +msgid "Top Surface Skin Line Directions" +msgstr "Linienrichtungen der Oberfläche Außenhaut" + +#: fdmprinter.def.json +msgctxt "roofing_angles description" +msgid "A list of integer line directions to use when the top surface skin layers use the lines or zig zag pattern. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the traditional default angles (45 and 135 degrees)." +msgstr "Eine Liste von Ganzzahl-Linienrichtungen für den Fall, wenn die oberen Außenhautschichten die Linien- oder Zickzack-Muster verwenden. Elemente aus der Liste werden während des Aufbaus der Schichten sequentiell verwendet und wenn das Listenende erreicht wird, beginnt die Liste von vorne. 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 (45- und 135-Grad) verwendet werden." + +#: fdmprinter.def.json +msgctxt "infill_enable_travel_optimization label" +msgid "Infill Travel Optimization" +msgstr "Bewegungsoptimierung Füllung" + +#: fdmprinter.def.json +msgctxt "infill_enable_travel_optimization description" +msgid "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." +msgstr "Bei Aktivierung wird die Reihenfolge, in der die Fülllinien gedruckt werden, optimiert, um die gefahrene Distanz zu reduzieren. Diese erzielte Reduzierung der Bewegung ist sehr stark von dem zu slicenden Modell, dem Füllmuster, der Dichte usw. abhängig. Beachten Sie, dass die Dauer für das Slicen bei einigen Modellen mit vielen kleinen Füllbereichen erheblich länger ausfallen kann." + +#: fdmprinter.def.json +msgctxt "material_flow_dependent_temperature label" +msgid "Auto Temperature" +msgstr "Automatische Temperatur" + +#: fdmprinter.def.json +msgctxt "material_flow_dependent_temperature description" +msgid "Change the temperature for each layer automatically with the average flow speed of that layer." +msgstr "Die Temperatur wird für jede Schicht automatisch anhand der durchschnittlichen Fließgeschwindigkeit dieser Schicht geändert." + +#: fdmprinter.def.json +msgctxt "material_flow_temp_graph label" +msgid "Flow Temperature Graph" +msgstr "Fließtemperaturgraf" + +#: fdmprinter.def.json +msgctxt "material_flow_temp_graph description" +msgid "Data linking material flow (in mm3 per second) to temperature (degrees Celsius)." +msgstr "Der Materialfluss (in mm3 pro Sekunde) in Bezug zur Temperatur (Grad Celsius)." + +#: 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 "support_skip_some_zags label" @@ -4934,6 +5044,46 @@ msgctxt "wireframe_nozzle_clearance description" msgid "Distance between the nozzle and horizontally downward lines. Larger clearance results in diagonally downward lines with a less steep angle, which in turn results in less upward connections with the next layer. Only applies to Wire Printing." msgstr "Der Abstand zwischen der Düse und den horizontalen Abwärtslinien. Bei einem größeren Abstand haben die diagonalen Abwärtslinien einen weniger spitzen Winkel, was wiederum weniger Aufwärtsverbindungen zur nächsten Schicht zur Folge hat. Dies gilt nur für das Drucken mit Drahtstruktur." +#: fdmprinter.def.json +msgctxt "adaptive_layer_height_enabled label" +msgid "Use adaptive layers" +msgstr "Anpassschichten verwenden" + +#: fdmprinter.def.json +msgctxt "adaptive_layer_height_enabled description" +msgid "Adaptive layers computes the layer heights depending on the shape of the model." +msgstr "Die Funktion Anpassschichten berechnet die Schichthöhe je nach Form des Modells." + +#: fdmprinter.def.json +msgctxt "adaptive_layer_height_variation label" +msgid "Adaptive layers maximum variation" +msgstr "Maximale Abweichung für Anpassschichten" + +#: fdmprinter.def.json +msgctxt "adaptive_layer_height_variation description" +msgid "The maximum allowed height different from the base layer height in mm." +msgstr "Das ist die maximal zulässige Höhendifferenz von der Basisschichthöhe in mm." + +#: fdmprinter.def.json +msgctxt "adaptive_layer_height_variation_step label" +msgid "Adaptive layers variation step size" +msgstr "Abweichung Schrittgröße für Anpassschichten" + +#: fdmprinter.def.json +msgctxt "adaptive_layer_height_variation_step description" +msgid "The difference in height of the next layer height compared to the previous one." +msgstr "Der Höhenunterscheid der nächsten Schichthöhe im Vergleich zur vorherigen." + +#: fdmprinter.def.json +msgctxt "adaptive_layer_height_threshold label" +msgid "Adaptive layers threshold" +msgstr "Schwellenwert 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." + #: fdmprinter.def.json msgctxt "command_line_settings label" msgid "Command Line Settings" @@ -4994,6 +5144,26 @@ 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 "infill_offset_x description" +#~ msgid "The infill pattern is offset this distance along the X axis." +#~ msgstr "Das Füllmuster wird um diese Distanz entlang der X-Achse versetzt." + +#~ msgctxt "infill_offset_y description" +#~ msgid "The infill pattern is offset this distance along the Y axis." +#~ msgstr "Das Füllmuster wird um diese Distanz entlang der Y-Achse versetzt." + +#~ msgctxt "infill_overlap 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." + +#~ msgctxt "skin_overlap description" +#~ msgid "The amount of overlap between the skin and the walls as a percentage of the line width. A slight overlap allows the walls to connect firmly to the skin. This is a percentage of the average line widths of the skin lines and the innermost wall." +#~ msgstr "Das Ausmaß des Überlappens zwischen der Außenhaut und den Wänden als Prozentwert der Linienbreite. Ein leichtes Überlappen ermöglicht es den Wänden, eine solide Verbindung mit der Außenhaut herzustellen. Dies ist ein Prozentwert der durchschnittlichen Linienbreiten der Außenhautlinien und der innersten Wand." + +#~ msgctxt "material_bed_temperature description" +#~ msgid "The temperature used for the heated build plate. If this is 0, the bed will not heat up for this print." +#~ msgstr "Die Temperatur, die für die erhitzte Druckplatte verwendet wird. Wenn dieser Wert 0 beträgt, wird das Bett für diesen Druck nicht erhitzt." + #~ msgctxt "wall_x_extruder_nr label" #~ msgid "Inner Walls Extruder" #~ msgstr "Extruder Innenwände" diff --git a/resources/i18n/es_ES/cura.po b/resources/i18n/es_ES/cura.po index 3a35477fc9..fa8cf61985 100644 --- a/resources/i18n/es_ES/cura.po +++ b/resources/i18n/es_ES/cura.po @@ -1,22 +1,24 @@ # Cura -# Copyright (C) 2017 Ultimaker +# Copyright (C) 2018 Ultimaker # This file is distributed under the same license as the Cura package. -# Ruben Dulek , 2017. -# +# Ruben Dulek , 2018. +# msgid "" msgstr "" -"Project-Id-Version: Cura 3.0\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-11-21 16:58+0100\n" -"PO-Revision-Date: 2017-11-30 13:05+0100\n" +"Project-Id-Version: Cura 3.2\n" +"Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" +"POT-Creation-Date: 2018-01-29 09:48+0000\n" +"PO-Revision-Date: 2018-02-12 13:40+0100\n" "Last-Translator: Bothof \n" "Language-Team: Spanish\n" "Language: es_ES\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 2.0.6\n" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:29 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:26 msgctxt "@action" msgid "Machine Settings" msgstr "Ajustes de la máquina" @@ -53,12 +55,11 @@ msgstr "Conectar con Doodle3D Connect" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:87 #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:155 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:874 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:646 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:875 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:659 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:370 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrintWindow.qml:78 -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:104 -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:99 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:355 #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:188 #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:376 #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:139 @@ -98,7 +99,7 @@ msgctxt "@info:tooltip" msgid "Open the Doodle3D Connect web interface" msgstr "Abrir la interfaz web de Doodle3D Connect" -#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:34 +#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:33 msgctxt "@item:inmenu" msgid "Show Changelog" msgstr "Mostrar registro de cambios" @@ -113,78 +114,83 @@ 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:26 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:27 msgctxt "@item:inmenu" msgid "USB printing" msgstr "Impresión USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:27 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:28 msgctxt "@action:button Preceded by 'Ready to'." msgid "Print via USB" msgstr "Imprimir mediante USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:28 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:29 msgctxt "@info:tooltip" msgid "Print via USB" msgstr "Imprimir mediante USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:30 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:31 msgctxt "@info:status" msgid "Connected via USB" msgstr "Conectado mediante USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:154 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:183 msgctxt "@info:status" msgid "Unable to start a new job because the printer is busy or not connected." msgstr "No se puede iniciar un trabajo nuevo porque la impresora está ocupada o no está conectada." -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:154 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:183 msgctxt "@info:title" msgid "Printer Unavailable" msgstr "Impresora no disponible" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:457 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:485 msgctxt "@info:status" msgid "This printer does not support USB printing because it uses UltiGCode flavor." msgstr "Esta impresora no es compatible con la impresión USB porque utiliza el tipo UltiGCode." -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:457 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:485 msgctxt "@info:title" msgid "USB Printing" msgstr "Impresión USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:461 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:489 msgctxt "@info:status" msgid "Unable to start a new job because the printer does not support usb printing." msgstr "No se puede iniciar un trabajo nuevo porque la impresora no es compatible con la impresión USB." -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:461 -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:108 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:489 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:103 #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:146 #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:158 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:945 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1349 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1417 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:946 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1418 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1496 msgctxt "@info:title" msgid "Warning" msgstr "Advertencia" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:108 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:103 msgctxt "@info" msgid "Unable to update firmware because there are no printers connected." msgstr "No se puede actualizar el firmware porque no hay impresoras conectadas." -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:122 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:117 #, python-format msgctxt "@info" msgid "Could not find firmware required for the printer at %s." msgstr "No se pudo encontrar el firmware necesario para la impresora en %s." -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:122 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:117 msgctxt "@info:title" msgid "Printer Firmware" msgstr "Firmware de la impresora" +#: /home/ruben/Projects/Cura/plugins/PrepareStage/__init__.py:12 +msgctxt "@item:inmenu" +msgid "Prepare" +msgstr "Preparar" + #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:23 msgctxt "@action:button Preceded by 'Ready to'." msgid "Save to Removable Drive" @@ -228,11 +234,11 @@ 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:132 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:692 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:700 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:146 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:693 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:701 #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:153 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1358 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:160 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1427 msgctxt "@info:title" msgid "Error" msgstr "Error" @@ -282,7 +288,7 @@ msgid "Removable Drive" msgstr "Unidad extraíble" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:109 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:53 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:51 msgctxt "@action:button Preceded by 'Ready to'." msgid "Print over network" msgstr "Imprimir a través de la red" @@ -396,110 +402,110 @@ msgctxt "@info:title" msgid "Printer Status" msgstr "Estado de la impresora" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:691 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:692 #, python-brace-format msgctxt "@info:status" msgid "Unable to start a new print job. No Printcore loaded in slot {0}" msgstr "No se puede iniciar un trabajo nuevo de impresión. No se ha cargado ningún PrintCore en la ranura {0}." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:699 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:700 #, python-brace-format msgctxt "@info:status" msgid "Unable to start a new print job. No material loaded in slot {0}" msgstr "No se puede iniciar un trabajo nuevo de impresión. No se ha cargado material en la ranura {0}." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:709 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:710 #, python-brace-format msgctxt "@label" msgid "Not enough material for spool {0}." msgstr "No hay suficiente material para la bobina {0}." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:719 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:720 #, python-brace-format msgctxt "@label" msgid "Different PrintCore (Cura: {0}, Printer: {1}) selected for extruder {2}" msgstr "PrintCore distinto (Cura: {0}, impresora: {1}) seleccionado para extrusor {2}" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:733 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:734 #, 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/NetworkPrinterOutputDevice.py:741 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:742 #, python-brace-format msgctxt "@label" msgid "PrintCore {0} is not properly calibrated. XY calibration needs to be performed on the printer." msgstr "El PrintCore {0} no está calibrado correctamente. Debe llevarse a cabo una calibración XY de la impresora." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:746 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:747 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/NetworkPrinterOutputDevice.py:747 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:748 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/NetworkPrinterOutputDevice.py:753 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:754 msgctxt "@window:title" msgid "Mismatched configuration" msgstr "Configuración desajustada" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:864 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:262 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:865 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:258 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/NetworkPrinterOutputDevice.py:873 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:874 msgctxt "@info:status" msgid "Sending data to printer" msgstr "Enviando datos a la impresora" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:873 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:874 msgctxt "@info:title" msgid "Sending Data" msgstr "Enviando datos" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:944 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:945 msgctxt "@info:status" msgid "Unable to send data to printer. Is another job still active?" msgstr "No se puede enviar datos a la impresora. ¿Hay otro trabajo que todavía esté activo?" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1085 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1087 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:196 msgctxt "@label:MonitorStatus" msgid "Aborting print..." msgstr "Cancelando impresión..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1091 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1093 msgctxt "@label:MonitorStatus" msgid "Print aborted. Please check the printer" msgstr "Impresión cancelada. Compruebe la impresora." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1097 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1099 msgctxt "@label:MonitorStatus" msgid "Pausing print..." msgstr "Pausando impresión..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1099 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1101 msgctxt "@label:MonitorStatus" msgid "Resuming print..." msgstr "Reanudando impresión..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1289 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1291 msgctxt "@window:title" msgid "Sync with your printer" msgstr "Sincronizar con la impresora" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1291 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1293 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/NetworkPrinterOutputDevice.py:1293 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1295 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." @@ -520,145 +526,204 @@ msgid "{printer_name} has finished printing '{job_name}'. Please collect the pri msgstr "{printer_name} ha terminado de imprimir «{job_name}». Recoja el impreso y confirme que ha borrado la placa de impresión." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:115 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:520 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:533 #, python-brace-format msgid "{printer_name} is reserved to print '{job_name}'. Please change the printer's configuration to match the job, for it to start printing." msgstr "{printer_name} está reservada para imprimir «{job_name}». Modifique la configuración de la impresora de modo que se adapte al trabajo para comenzar la impresión." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:278 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:277 msgctxt "@info:status" msgid "Unable to send new print job: this 3D printer is not (yet) set up to host a group of connected Ultimaker 3 printers." msgstr "No se pudo enviar el nuevo trabajo de impresión: esta impresora 3D (todavía) no está configurada para alojar un grupo de impresoras de Ultimaker 3 conectadas." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:410 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:423 #, python-brace-format msgctxt "@info:status" msgid "Unable to send print job to group {cluster_name}." msgstr "No se puede enviar el trabajo de impresión al grupo {cluster_name}." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:418 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:431 #, python-brace-format msgctxt "@info:status" msgid "Sent {file_name} to group {cluster_name}." msgstr "Enviar {file_name} al grupo {cluster_name}." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:423 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:436 msgctxt "@action:button" msgid "Show print jobs" msgstr "Mostrar trabajos de impresión" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:424 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:437 msgctxt "@info:tooltip" msgid "Opens the print jobs interface in your browser." msgstr "Abre la interfaz de trabajos de impresión en el navegador." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:489 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:502 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:239 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:47 -msgctxt "@label" +msgctxt "@label Printer name" msgid "Unknown" msgstr "Desconocido" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:492 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:505 #, 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/NetworkClusterPrinterOutputDevice.py:494 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:497 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:507 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:510 msgctxt "@info:status" msgid "Print finished" msgstr "Impresión terminada" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:522 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:525 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:535 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:538 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:282 msgctxt "@label:status" msgid "Action required" msgstr "Acción requerida" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:643 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:656 #, python-brace-format msgctxt "@info:progress" msgid "Sending {file_name} to group {cluster_name}" msgstr "Enviando {file_name} al grupo {cluster_name}" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.py:19 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.py:17 msgctxt "@action" msgid "Connect via Network" msgstr "Conectar a través de la red" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:64 +#: /home/ruben/Projects/Cura/plugins/MonitorStage/__init__.py:12 +msgctxt "@item:inmenu" +msgid "Monitor" +msgstr "Supervisar" + +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:66 #, python-brace-format msgctxt "@info Don't translate {machine_name}, since it gets replaced by a printer name!" msgid "New features are available for your {machine_name}! It is recommended to update the firmware on your printer." msgstr "Hay nuevas funciones disponibles para {machine_name}. Se recomienda actualizar el firmware de la impresora." -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:65 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:67 #, python-format msgctxt "@info:title The %s gets replaced with the printer name." msgid "New %s firmware available" msgstr "Nuevo firmware de %s disponible" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:66 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:68 msgctxt "@action:button" msgid "How to update" msgstr "Cómo actualizar" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:77 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:79 msgctxt "@info" msgid "Could not access update information." msgstr "No se pudo acceder a la información actualizada." -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksReader.py:199 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksReader.py:579 msgctxt "@info:status" -msgid "Errors appeared while opening your SolidWorks file! Please check, whether it is possible to open your file in SolidWorks itself without any problems as well!" -msgstr "Se han producido varios errores al abrir el archivo de SolidWorks. Compruebe que el archivo se puede abrir correctamente en SolidWorks." +msgid "SolidWorks reported errors, while opening your file. We recommend to solve these issues inside SolidWorks itself." +msgstr "SolidWorks ha informado de errores al abrir el archivo. Le recomendamos que solucione estos problemas dentro del propio SolidWorks." -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:31 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksReader.py:591 +msgctxt "@info:status" +msgid "" +"Found no models inside your drawing. Could you please check it's content again and make sure one part or assembly is inside?\n" +"\n" +" Thanks!." +msgstr "" +"No se han encontrado modelos en el dibujo. ¿Puede comprobar el contenido de nuevo y asegurarse de que hay una parte o un ensamblado dentro?\n" +"\n" +" Gracias." + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksReader.py:595 +msgctxt "@info:status" +msgid "" +"Found more then one part or assembly inside your drawing. We currently only support drawings with exactly one part or assembly inside.\n" +"\n" +"Sorry!" +msgstr "" +"Se ha encontrado más de una parte o ensamblado en el dibujo. Actualmente únicamente son compatibles dibujos con una sola parte o ensamblado.\n" +"\n" +" Disculpe." + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:25 msgctxt "@item:inlistbox" msgid "SolidWorks part file" msgstr "Archivo de elementos de SolidWorks" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:35 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:29 msgctxt "@item:inlistbox" msgid "SolidWorks assembly file" msgstr "Archivo de ensamblado de SolidWorks" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.py:21 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:33 +msgctxt "@item:inlistbox" +msgid "SolidWorks drawing file" +msgstr "Archivo de dibujo de SolidWorks" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:48 +msgctxt "@info:status" +msgid "" +"Dear customer,\n" +"We could not find a valid installation of SolidWorks on your system. That means that either SolidWorks is not installed or you don't own an valid license. Please make sure that running SolidWorks itself works without issues and/or contact your ICT.\n" +"\n" +"With kind regards\n" +" - Thomas Karl Pietrowski" +msgstr "" +"Estimado cliente:\n" +"No hemos encontrado una instalación válida de SolidWorks en el sistema. Esto significa que SolidWorks no está instalado o que no dispone de una licencia válida. Asegúrese de que la ejecución del propio SolidWorks funciona sin problemas o póngase en contacto con su CDTI.\n" +"\n" +"Atentamente\n" +" - Thomas Karl Pietrowski" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:57 +msgctxt "@info:status" +msgid "" +"Dear customer,\n" +"You are currently running this plugin on an operating system other than Windows. This plugin will only work on Windows with SolidWorks installed, including an valid license. Please install this plugin on a Windows machine with SolidWorks installed.\n" +"\n" +"With kind regards\n" +" - Thomas Karl Pietrowski" +msgstr "" +"Estimado cliente:\n" +"Actualmente está ejecutando este complemento en un sistema operativo diferente a Windows. Este complemento solo funcionará en Windows con SolidWorks instalado, siempre que se disponga de una licencia válida. Instale este complemento en un equipo Windows con SolidWorks instalado.\n" +"\n" +"Atentamente\n" +" - Thomas Karl Pietrowski" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksDialogHandler.py:70 msgid "Configure" msgstr "Configurar" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/CommonComReader.py:135 -#, python-format -msgctxt "@info:status" -msgid "Error while starting %s!" -msgstr "Error al iniciar %s" +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksDialogHandler.py:71 +msgid "Installation guide for SolidWorks macro" +msgstr "Guía de instalación para la macro de SolidWorks" #: /home/ruben/Projects/Cura/plugins/SimulationView/__init__.py:14 msgctxt "@item:inlistbox" -msgid "Simulation view" -msgstr "Vista de simulación" +msgid "Layer view" +msgstr "Vista de capas" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:100 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:103 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:101 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:104 msgctxt "@info:title" msgid "Simulation View" msgstr "Vista de simulación" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.py:26 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.py:25 msgid "Modify G-Code" msgstr "Modificar GCode" #: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:43 msgctxt "@info" -msgid "Cura collects anonymised slicing statistics. You can disable this in the preferences." -msgstr "Cura recopila de forma anónima información de la segmentación. Puede desactivar esta opción en las preferencias." +msgid "Cura collects anonymized usage statistics." +msgstr "Cura recopila estadísticas de uso de forma anónima." #: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:46 msgctxt "@info:title" @@ -667,14 +732,43 @@ msgstr "Recopilando datos" #: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:48 msgctxt "@action:button" -msgid "Dismiss" -msgstr "Descartar" +msgid "Allow" +msgstr "Permitir" + +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:49 +msgctxt "@action:tooltip" +msgid "Allow Cura to send anonymized usage statistics to help prioritize future improvements to Cura. Some of your preferences and settings are sent, the Cura version and a hash of the models you're slicing." +msgstr "Permitir a Cura enviar estadísticas de uso de forma anónima para ayudar a priorizar mejoras futuras para Cura. Se envían algunas de sus preferencias y ajustes, la versión de Cura y un resumen de los modelos que está fragmentando." + +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:50 +msgctxt "@action:button" +msgid "Disable" +msgstr "Deshabilitar" + +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:51 +msgctxt "@action:tooltip" +msgid "Don't allow Cura to send anonymized usage statistics. You can enable it again in the preferences." +msgstr "No permitir a Cura enviar estadísticas de uso de forma anónima. Puede habilitarlo de nuevo en las preferencias." #: /home/ruben/Projects/Cura/plugins/LegacyProfileReader/__init__.py:14 msgctxt "@item:inlistbox" msgid "Cura 15.04 profiles" msgstr "Perfiles de Cura 15.04" +#: /home/ruben/Projects/Cura/plugins/CuraBlenderPlugin/__init__.py:15 +msgctxt "@item:inlistbox" +msgid "Blender file" +msgstr "Archivo Blender" + +#: /home/ruben/Projects/Cura/plugins/CuraBlenderPlugin/CadIntegrationUtils/CommonReader.py:199 +msgctxt "@info:status" +msgid "" +"Could not export using \"{}\" quality!\n" +"Felt back to \"{}\"." +msgstr "" +"No ha podido exportarse con la calidad \"{}\"\n" +"Retroceder a \"{}»." + #: /home/ruben/Projects/Cura/plugins/GCodeProfileReader/__init__.py:14 #: /home/ruben/Projects/Cura/plugins/GCodeReader/__init__.py:14 msgctxt "@item:inlistbox" @@ -706,49 +800,49 @@ msgctxt "@item:inlistbox" msgid "GIF Image" msgstr "Imagen GIF" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:269 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:299 msgctxt "@info:status" msgid "Unable to slice with the current material as it is incompatible with the selected machine or configuration." msgstr "No se puede segmentar con el material actual, ya que es incompatible con el dispositivo o la configuración seleccionados." -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:269 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:297 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:319 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:299 #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:327 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:336 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:349 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:357 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:366 msgctxt "@info:title" msgid "Unable to slice" msgstr "No se puede segmentar" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:296 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:326 #, python-brace-format msgctxt "@info:status" msgid "Unable to slice with the current settings. The following settings have errors: {0}" msgstr "Los ajustes actuales no permiten la segmentación. Los siguientes ajustes contienen errores: {0}" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:318 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:348 #, python-brace-format msgctxt "@info:status" msgid "Unable to slice due to some per-model settings. The following settings have errors on one or more models: {error_labels}" msgstr "Los ajustes de algunos modelos no permiten la segmentación. Los siguientes ajustes contienen errores en uno o más modelos: {error_labels}." -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:326 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:356 msgctxt "@info:status" msgid "Unable to slice because the prime tower or prime position(s) are invalid." msgstr "No se puede segmentar porque la torre auxiliar o la posición o posiciones de preparación no son válidas." -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:335 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:365 msgctxt "@info:status" msgid "Nothing to slice because none of the models fit the build volume. Please scale or rotate models to fit." msgstr "No hay nada que segmentar porque ninguno de los modelos se adapta al volumen de impresión. Escale o rote los modelos para que se adapten." #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:50 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:239 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:242 msgctxt "@info:status" msgid "Processing Layers" msgstr "Procesando capas" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:239 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:242 msgctxt "@info:title" msgid "Information" msgstr "Información" @@ -785,14 +879,14 @@ msgstr "Se ha producido un error al copiar los archivos de complemento de Siemen msgid "Failed to install Siemens NX plugin. Could not set environment variable UGII_USER_DIR for Siemens NX." msgstr "Se ha producido un error al instalar el complemento de Siemens NX. No se pudo definir la variable de entorno UGII_USER_DIR de Siemens NX." -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:167 -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:585 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:165 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:590 msgctxt "@title:tab" msgid "Recommended" msgstr "Recomendado" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:169 -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:590 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:167 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:595 msgctxt "@title:tab" msgid "Custom" msgstr "Personalizado" @@ -803,24 +897,24 @@ msgctxt "@item:inlistbox" msgid "3MF File" msgstr "Archivo 3MF" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:126 -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1142 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:159 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1185 msgctxt "@label" msgid "Nozzle" msgstr "Tobera" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:164 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:152 #, python-brace-format msgctxt "@info:status" msgid "Failed to get plugin ID from {0}" msgstr "No se pudo obtener la ID del complemento de {0}" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:165 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:153 msgctxt "@info:tile" msgid "Warning" msgstr "Advertencia" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:203 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:191 msgctxt "@window:title" msgid "Plugin browser" msgstr "Explorador de complementos" @@ -835,18 +929,18 @@ msgctxt "@item:inlistbox" msgid "G File" msgstr "Archivo G" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:314 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:321 msgctxt "@info:status" msgid "Parsing G-code" msgstr "Analizar GCode" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:316 -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:426 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:323 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:464 msgctxt "@info:title" msgid "G-code Details" msgstr "Datos de GCode" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:424 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:462 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,6 +951,16 @@ 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:17 +msgctxt "@item:inlistbox" +msgid "Profile Assistant" +msgstr "Asistente del perfil" + #: /home/ruben/Projects/Cura/plugins/3MFWriter/__init__.py:30 msgctxt "@item:inlistbox" msgid "3MF file" @@ -888,142 +992,116 @@ msgctxt "@action" msgid "Level build plate" msgstr "Nivelar placa de impresión" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:89 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:98 msgctxt "@tooltip" msgid "Outer Wall" msgstr "Pared exterior" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:90 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:99 msgctxt "@tooltip" msgid "Inner Walls" msgstr "Paredes interiores" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:91 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:100 msgctxt "@tooltip" msgid "Skin" msgstr "Forro" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:92 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:101 msgctxt "@tooltip" msgid "Infill" msgstr "Relleno" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:93 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:102 msgctxt "@tooltip" msgid "Support Infill" -msgstr "Relleno de soporte" +msgstr "Relleno del soporte" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:94 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:103 msgctxt "@tooltip" msgid "Support Interface" -msgstr "Interfaz de soporte" +msgstr "Interfaz del soporte" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:95 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:104 msgctxt "@tooltip" msgid "Support" msgstr "Soporte" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:96 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:105 msgctxt "@tooltip" msgid "Skirt" msgstr "Falda" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:97 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:106 msgctxt "@tooltip" msgid "Travel" msgstr "Desplazamiento" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:98 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:107 msgctxt "@tooltip" msgid "Retractions" msgstr "Retracciones" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:99 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:108 msgctxt "@tooltip" msgid "Other" msgstr "Otro" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:199 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:231 msgctxt "@label unknown material" msgid "Unknown" msgstr "Desconocido" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:284 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:318 #, python-brace-format msgctxt "@label" msgid "Pre-sliced file {0}" msgstr "Archivo {0} presegmentado" -#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:469 +#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:440 msgctxt "@item:material" msgid "No material loaded" msgstr "No se ha cargado material." -#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:476 +#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:447 msgctxt "@item:material" msgid "Unknown material" msgstr "Material desconocido" -#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:30 -msgctxt "@info:status" -msgid "Finding new location for objects" -msgstr "Buscando nueva ubicación para los objetos" - -#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:34 -msgctxt "@info:title" -msgid "Finding Location" -msgstr "Buscando ubicación" - -#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:89 -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:83 -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/ArrangeObjectsJob.py:90 -msgctxt "@info:title" -msgid "Can't Find Location" -msgstr "No se puede encontrar la ubicación" - -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:431 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:113 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:437 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:120 msgctxt "@title:window" msgid "File Already Exists" msgstr "El archivo ya existe" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:432 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:114 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:438 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:121 #, 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:815 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:872 msgctxt "@label" msgid "Custom" msgstr "Personalizado" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:819 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:876 msgctxt "@label" msgid "Custom Material" msgstr "Material personalizado" -#: /home/ruben/Projects/Cura/cura/Settings/ExtrudersModel.py:182 -msgctxt "@menuitem" -msgid "Global" -msgstr "Global" - -#: /home/ruben/Projects/Cura/cura/Settings/ExtrudersModel.py:229 +#: /home/ruben/Projects/Cura/cura/Settings/ExtrudersModel.py:205 msgctxt "@menuitem" msgid "Not overridden" msgstr "No reemplazado" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:117 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:124 msgctxt "@info:status" msgid "The selected material is incompatible with the selected machine or configuration." msgstr "El material seleccionado no es compatible con la máquina o la configuración seleccionada." -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:118 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:125 #: /home/ruben/Projects/Cura/cura/Settings/MaterialManager.py:24 msgctxt "@info:title" msgid "Incompatible Material" @@ -1044,67 +1122,89 @@ msgctxt "@action" msgid "Undo changing the material diameter." msgstr "Deshacer cambio del diámetro del material." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:144 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:151 #, 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:151 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:158 #, 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:156 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:163 #, 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:157 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:164 msgctxt "@info:title" msgid "Export succeeded" msgstr "Exportación correcta" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:183 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:205 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:214 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:248 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:190 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:211 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:271 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to import profile from {0}: {1}" msgstr "Error al importar el perfil de {0}: {1}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:216 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:252 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:230 +#, python-brace-format +msgctxt "@info:status Don't translate the XML tags or !" +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:240 +#, python-brace-format +msgctxt "@info:status Don't translate the XML tags or !" +msgid "The machine defined in profile {0} doesn't match with your current machine, could not import it." +msgstr "El equipo definido en el perfil {0} no coincide con su equipo actual, no se ha podido importar." + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:274 #, python-brace-format msgctxt "@info:status" msgid "Successfully imported profile {0}" msgstr "Perfil {0} importado correctamente" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:255 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:277 +#, 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:280 #, 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:274 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:298 msgctxt "@label" msgid "Custom profile" msgstr "Perfil personalizado" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:285 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:313 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:321 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:349 #, python-brace-format msgctxt "@info:status" msgid "Could not find a quality type {0} for the current configuration." msgstr "No se ha podido encontrar un tipo de calidad {0} para la configuración actual." +#: /home/ruben/Projects/Cura/cura/ObjectsModel.py:46 +#, python-brace-format +msgctxt "@label" +msgid "Group #{group_nr}" +msgstr "N.º de grupo {group_nr}" + #: /home/ruben/Projects/Cura/cura/BuildVolume.py:100 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." @@ -1115,142 +1215,170 @@ msgctxt "@info:title" msgid "Build Volume" msgstr "Volumen de impresión" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:34 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:25 msgctxt "@info:status" msgid "Multiplying and placing objects" msgstr "Multiplicar y colocar objetos" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:35 -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:83 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:26 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:78 msgctxt "@info:title" msgid "Placing Object" msgstr "Colocando objeto" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:80 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:78 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:88 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:152 +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/Arranging/ArrangeObjectsJob.py:29 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:64 +msgctxt "@info:status" +msgid "Finding new location for objects" +msgstr "Buscando nueva ubicación para los objetos" + +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:33 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:68 +msgctxt "@info:title" +msgid "Finding Location" +msgstr "Buscando ubicación" + +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:89 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:153 +msgctxt "@info:title" +msgid "Can't Find Location" +msgstr "No se puede encontrar la ubicación" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:81 msgctxt "@title:window" msgid "Crash Report" msgstr "Informe del accidente" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:93 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:94 msgctxt "@label crash message" msgid "" -"

      A fatal exception has occurred. Please send us this Crash Report to fix the problem

      \n" +"

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

      \n" "

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

      \n" " " -msgstr "

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

      \n

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

      \n " +msgstr "" +"

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

      \n" +"

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

      \n" +" " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:101 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:102 msgctxt "@title:groupbox" msgid "System information" msgstr "Información del sistema" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:109 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:110 msgctxt "@label unknown version of Cura" msgid "Unknown" msgstr "Desconocido" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:111 -#, python-brace-format -msgctxt "@label Cura version" -msgid "Cura version: {version}
      " -msgstr "Versión de Cura: {version}
      " - #: /home/ruben/Projects/Cura/cura/CrashHandler.py:112 -#, python-brace-format -msgctxt "@label Platform" -msgid "Platform: {platform}
      " -msgstr "Platforma: {platform}
      " +msgctxt "@label Cura version number" +msgid "Cura version" +msgstr "Versión de Cura" #: /home/ruben/Projects/Cura/cura/CrashHandler.py:113 -#, python-brace-format -msgctxt "@label Qt version" -msgid "Qt version: {qt}
      " -msgstr "Versión de Qt: {qt}
      " +msgctxt "@label Type of platform" +msgid "Platform" +msgstr "Plataforma" #: /home/ruben/Projects/Cura/cura/CrashHandler.py:114 -#, python-brace-format -msgctxt "@label PyQt version" -msgid "PyQt version: {pyqt}
      " -msgstr "Versión de PyQt: {pyqt}
      " +msgctxt "@label" +msgid "Qt version" +msgstr "Versión Qt" #: /home/ruben/Projects/Cura/cura/CrashHandler.py:115 -#, python-brace-format -msgctxt "@label OpenGL" -msgid "OpenGL: {opengl}
      " -msgstr "OpenGL: {opengl}
      " +msgctxt "@label" +msgid "PyQt version" +msgstr "Versión PyQt" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:130 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:116 +msgctxt "@label OpenGL version" +msgid "OpenGL" +msgstr "OpenGL" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:133 +msgctxt "@label" +msgid "not yet initialised
      " +msgstr "aún no se ha inicializado
      " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:136 #, python-brace-format msgctxt "@label OpenGL version" msgid "
    • OpenGL Version: {version}
    • " msgstr "
    • Versión de OpenGL: {version}
    • " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:131 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:137 #, python-brace-format msgctxt "@label OpenGL vendor" msgid "
    • OpenGL Vendor: {vendor}
    • " msgstr "
    • Proveedor de OpenGL: {vendor}
    • " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:132 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:138 #, python-brace-format msgctxt "@label OpenGL renderer" msgid "
    • OpenGL Renderer: {renderer}
    • " msgstr "
    • Representador de OpenGL: {renderer}
    • " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:141 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:147 msgctxt "@title:groupbox" -msgid "Exception traceback" -msgstr "Rastreabilidad de excepciones" +msgid "Error traceback" +msgstr "Rastreabilidad de errores" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:208 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:214 msgctxt "@title:groupbox" msgid "Logs" msgstr "Registros" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:231 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:237 msgctxt "@title:groupbox" msgid "User description" msgstr "Descripción del usuario" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:246 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:252 msgctxt "@action:button" msgid "Send report" msgstr "Enviar informe" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:256 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:274 msgctxt "@info:progress" msgid "Loading machines..." msgstr "Cargando máquinas..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:661 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:660 msgctxt "@info:progress" msgid "Setting up scene..." msgstr "Configurando escena..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:703 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:702 msgctxt "@info:progress" msgid "Loading interface..." msgstr "Cargando interfaz..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:874 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:899 #, 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:1348 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1417 #, 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:1357 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1426 #, 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:1416 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1495 msgctxt "@info:status" msgid "The selected model was too small to load." msgstr "No se puede cargar el modelo seleccionado, es demasiado pequeño." @@ -1279,12 +1407,11 @@ msgstr "X (anchura)" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:119 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:129 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:235 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:288 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:300 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:391 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:401 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:413 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:840 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:383 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:394 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:412 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:424 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:849 msgctxt "@label" msgid "mm" msgstr "mm" @@ -1374,68 +1501,67 @@ msgctxt "@tooltip" msgid "The height difference between the tip of the nozzle and the gantry system (X and Y axes). Used to prevent collisions between previous prints and the gantry when printing \"One at a Time\"." msgstr "Diferencia de altura entre la punta de la tobera y el sistema del puente (ejes X e Y). Se usa para evitar que colisionen la impresión anterior con el caballete al imprimir «de uno en uno»." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:255 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:254 msgctxt "@label" msgid "Number of Extruders" msgstr "Número de extrusores" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:289 -msgctxt "@tooltip" -msgid "The nominal diameter of filament supported by the printer. The exact diameter will be overridden by the material and/or the profile." -msgstr "El diámetro nominal del filamento compatible con la impresora. El diámetro exacto se sobrescribirá según el material o el perfil." - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:291 -msgctxt "@label" -msgid "Material diameter" -msgstr "Diámetro del material" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:299 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:390 -msgctxt "@label" -msgid "Nozzle size" -msgstr "Tamaño de la tobera" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:317 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:310 msgctxt "@label" msgid "Start Gcode" msgstr "Iniciar GCode" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:327 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:320 msgctxt "@tooltip" msgid "Gcode commands to be executed at the very start." msgstr "Los comandos de Gcode que se ejecutarán justo al inicio." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:336 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:329 msgctxt "@label" msgid "End Gcode" msgstr "Finalizar GCode" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:346 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:339 msgctxt "@tooltip" msgid "Gcode commands to be executed at the very end." msgstr "Los comandos de Gcode que se ejecutarán justo al final." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:378 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:370 msgctxt "@label" msgid "Nozzle Settings" msgstr "Ajustes de la tobera" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:400 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:382 +msgctxt "@label" +msgid "Nozzle size" +msgstr "Tamaño de la tobera" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:393 +msgctxt "@label" +msgid "Compatible material diameter" +msgstr "Diámetro del material compatible" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:395 +msgctxt "@tooltip" +msgid "The nominal diameter of filament supported by the printer. The exact diameter will be overridden by the material and/or the profile." +msgstr "El diámetro nominal del filamento compatible con la impresora. El diámetro exacto se sobrescribirá según el material o el perfil." + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:411 msgctxt "@label" msgid "Nozzle offset X" msgstr "Desplazamiento de la tobera sobre el eje X" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:412 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:423 msgctxt "@label" msgid "Nozzle offset Y" msgstr "Desplazamiento de la tobera sobre el eje Y" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:433 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:444 msgctxt "@label" msgid "Extruder Start Gcode" msgstr "GCode inicial del extrusor" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:451 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:462 msgctxt "@label" msgid "Extruder End Gcode" msgstr "GCode final del extrusor" @@ -1448,8 +1574,9 @@ msgstr "Registro de cambios" #: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.qml:37 #: /home/ruben/Projects/Cura/plugins/USBPrinting/FirmwareUpdateWindow.qml:107 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:55 -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:445 -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:357 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:306 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:456 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:492 #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:80 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:123 #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:147 @@ -1514,7 +1641,10 @@ msgid "" "To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer.\n" "\n" "Select your printer from the list below:" -msgstr "Para imprimir directamente en la impresora a través de la red, asegúrese de que esta está conectada a la red utilizando un cable de red o conéctela a la red wifi. Si no conecta Cura con la impresora, también puede utilizar una unidad USB para transferir archivos GCode a la impresora.\n\nSeleccione la impresora de la siguiente lista:" +msgstr "" +"Para imprimir directamente en la impresora a través de la red, asegúrese de que esta está conectada a la red utilizando un cable de red o conéctela a la red wifi. Si no conecta Cura con la impresora, también puede utilizar una unidad USB para transferir archivos GCode a la impresora.\n" +"\n" +"Seleccione la impresora de la siguiente lista:" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:75 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:44 @@ -1530,7 +1660,7 @@ msgstr "Editar" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:96 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:50 #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:95 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:190 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:171 msgctxt "@action:button" msgid "Remove" msgstr "Eliminar" @@ -1552,12 +1682,12 @@ msgid "Type" msgstr "Tipo" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:233 -msgctxt "@label" +msgctxt "@label Printer name" msgid "Ultimaker 3" msgstr "Ultimaker 3" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:236 -msgctxt "@label" +msgctxt "@label Printer name" msgid "Ultimaker 3 Extended" msgstr "Ultimaker 3 Extended" @@ -1603,8 +1733,6 @@ msgid "Enter the IP address or hostname of your printer on the network." msgstr "Introduzca la dirección IP o el nombre de host de la impresora en red." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:379 -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:92 -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:88 #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:181 msgctxt "@action:button" msgid "OK" @@ -1625,6 +1753,11 @@ msgctxt "@label: arg 1 is group name" msgid "%1 is not set up to host a group of connected Ultimaker 3 printers" msgstr "%1 no está configurada para alojar un grupo de impresoras conectadas de Ultimaker 3" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterMonitorItem.qml:55 +msgctxt "@label link to connect manager" +msgid "Add/Remove printers" +msgstr "Agregar/eliminar impresoras" + #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/OpenPanelButton.qml:14 msgctxt "@info:tooltip" msgid "Opens the print jobs page with your default web browser." @@ -1655,11 +1788,16 @@ msgid "Available" msgstr "Disponible" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:43 -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:101 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:100 msgctxt "@label:MonitorStatus" msgid "Lost connection with the printer" msgstr "Se ha perdido la conexión con la impresora." +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:47 +msgctxt "@label Printer status" +msgid "Unknown" +msgstr "Desconocido" + #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:257 msgctxt "@label:status" msgid "Disabled" @@ -1751,138 +1889,252 @@ msgctxt "@action:button" msgid "Activate Configuration" msgstr "Activar configuración" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:20 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:21 msgctxt "@title:window" -msgid "Cura SolidWorks Plugin Configuration" -msgstr "Configuración de complementos Cura SolidWorks" +msgid "SolidWorks: Export wizard" +msgstr "SolidWorks: exportar asistente" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:44 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:45 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:140 msgctxt "@action:label" -msgid "Default quality of the exported STL:" -msgstr "Calidad predeterminada del STL exportado:" +msgid "Quality:" +msgstr "Calidad:" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:79 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:78 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:179 msgctxt "@option:curaSolidworksStlQuality" -msgid "Always ask" -msgstr "Preguntar siempre" +msgid "Fine (3D-printing)" +msgstr "Fina (impresión en 3D)" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:80 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:79 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:180 msgctxt "@option:curaSolidworksStlQuality" -msgid "Always use Fine quality" -msgstr "Usar siempre calidad fina" +msgid "Coarse (3D-printing)" +msgstr "Gruesa (impresión en 3D)" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:81 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:80 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:181 msgctxt "@option:curaSolidworksStlQuality" -msgid "Always use Coarse quality" -msgstr "Usar siempre calidad gruesa" +msgid "Fine (SolidWorks)" +msgstr "Fina (SolidWorks)" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:20 -msgctxt "@title:window" -msgid "Import SolidWorks File as STL..." -msgstr "Importar el archivo SolidWorks como STL..." - -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:43 -msgctxt "@info:tooltip" -msgid "Quality of the Exported STL" -msgstr "Calidad del STL exportado" - -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:48 -msgctxt "@action:label" -msgid "Quality" -msgstr "Calidad" - -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:62 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:81 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:182 msgctxt "@option:curaSolidworksStlQuality" -msgid "Coarse" -msgstr "Gruesa" +msgid "Coarse (SolidWorks)" +msgstr "Gruesa (SolidWorks)" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:63 -msgctxt "@option:curaSolidworksStlQuality" -msgid "Fine" -msgstr "Fina" - -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:78 -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:82 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:94 msgctxt "@text:window" -msgid "Remember my choice" -msgstr "Recordar mi selección" +msgid "Show this dialog again" +msgstr "Mostrar este cuadro de diálogo de nuevo" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:81 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:104 +msgctxt "@action:button" +msgid "Continue" +msgstr "Continuar" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:116 +msgctxt "@action:button" +msgid "Abort" +msgstr "Cancelar" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:21 +msgctxt "@title:window" +msgid "How to install Cura SolidWorks macro" +msgstr "Cómo instalar la macro SolidWorks de Cura" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:62 +msgctxt "@description:label" +msgid "Steps:" +msgstr "Pasos:" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:140 +msgctxt "@action:button" +msgid "" +"Open the directory\n" +"with macro and icon" +msgstr "" +"Abra el directorio\n" +"con la macro y el icono" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:160 +msgctxt "@description:label" +msgid "Instructions:" +msgstr "Instrucciones:" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:202 +msgctxt "@action:playpause" +msgid "Play" +msgstr "Reproducir" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:206 +msgctxt "@action:playpause" +msgid "Pause" +msgstr "Pausar" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:268 +msgctxt "@action:button" +msgid "Previous Step" +msgstr "Paso anterior" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:283 +msgctxt "@action:button" +msgid "Done" +msgstr "Realizado" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:287 +msgctxt "@action:button" +msgid "Next Step" +msgstr "Paso siguiente" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:21 +msgctxt "@title:window" +msgid "SolidWorks plugin: Configuration" +msgstr "Complementos de SolidWorks: configuración" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:39 +msgctxt "@title:tab" +msgid "Conversion settings" +msgstr "Ajustes de la conversión" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:66 +msgctxt "@label" +msgid "First choice:" +msgstr "Primera opción:" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:86 +msgctxt "@text:menu" +msgid "Latest installed version (Recommended)" +msgstr "Última versión instalada (recomendada)" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:95 +msgctxt "@text:menu" +msgid "Default version" +msgstr "Versión predeterminada" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:193 +msgctxt "@label" +msgid "Show wizard before opening SolidWorks files" +msgstr "Mostrar asistente antes de abrir los archivos de SolidWorks" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:203 +msgctxt "@label" +msgid "Automatically rotate opened file into normed orientation" +msgstr "Girar automáticamente el archivo abierto a la orientación normal" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:210 +msgctxt "@title:tab" +msgid "Installation(s)" +msgstr "Instalación(es)" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:284 +msgctxt "@label" +msgid "COM service found" +msgstr "Servicio COM encontrado" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:295 +msgctxt "@label" +msgid "Executable found" +msgstr "Ejecutable encontrado" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:306 +msgctxt "@label" +msgid "COM starting" +msgstr "Iniciando COM" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:317 +msgctxt "@label" +msgid "Revision number" +msgstr "Número de revisión" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:328 +msgctxt "@label" +msgid "Functions available" +msgstr "Funciones disponibles" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:341 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:264 +msgctxt "@action:button" +msgid "Save" +msgstr "Guardar" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:117 msgctxt "@label" msgid "Color scheme" msgstr "Combinación de colores" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:96 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:132 msgctxt "@label:listbox" msgid "Material Color" msgstr "Color del material" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:100 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:136 msgctxt "@label:listbox" msgid "Line Type" msgstr "Tipo de línea" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:104 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:140 msgctxt "@label:listbox" msgid "Feedrate" msgstr "Velocidad" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:108 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:144 msgctxt "@label:listbox" msgid "Layer thickness" msgstr "Grosor de la capa" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:148 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:185 msgctxt "@label" msgid "Compatibility Mode" msgstr "Modo de compatibilidad" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:230 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:264 msgctxt "@label" msgid "Show Travels" msgstr "Mostrar desplazamientos" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:236 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:270 msgctxt "@label" msgid "Show Helpers" msgstr "Mostrar asistentes" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:242 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:276 msgctxt "@label" msgid "Show Shell" msgstr "Mostrar perímetro" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:248 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:282 msgctxt "@label" msgid "Show Infill" msgstr "Mostrar relleno" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:297 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:330 msgctxt "@label" msgid "Only Show Top Layers" msgstr "Mostrar solo capas superiores" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:306 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:339 msgctxt "@label" msgid "Show 5 Detailed Layers On Top" msgstr "Mostrar cinco capas detalladas en la parte superior" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:317 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:350 msgctxt "@label" msgid "Top / Bottom" msgstr "Superior o inferior" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:321 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:354 msgctxt "@label" msgid "Inner Wall" msgstr "Pared interior" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:378 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:410 msgctxt "@label" msgid "min" msgstr "mín." -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:420 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:452 msgctxt "@label" msgid "max" msgstr "máx." @@ -1907,7 +2159,7 @@ msgctxt "@label" msgid "Settings" msgstr "Ajustes" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:455 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:466 msgctxt "@info:tooltip" msgid "Change active post-processing scripts" msgstr "Cambia las secuencias de comandos de posprocesamiento." @@ -1982,23 +2234,53 @@ msgctxt "@action:label" msgid "Smoothing" msgstr "Suavizado" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:208 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:38 +msgctxt "@label" +msgid "Mesh Type" +msgstr "Tipo de malla" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:69 +msgctxt "@label" +msgid "Normal model" +msgstr "Modelo normal" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:76 +msgctxt "@label" +msgid "Print as support" +msgstr "Imprimir según compatibilidad" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:84 +msgctxt "@label" +msgid "Don't support overlap with other models" +msgstr "No es compatible la superposición con otros modelos" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:92 +msgctxt "@label" +msgid "Modify settings for overlap with other models" +msgstr "Modificar ajustes para superponer con otros modelos" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:100 +msgctxt "@label" +msgid "Modify settings for infill of other models" +msgstr "Modificar ajustes para rellenar con otros modelos" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:333 msgctxt "@action:button" msgid "Select settings" msgstr "Seleccionar ajustes" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:248 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:375 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:272 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:402 #: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:91 msgctxt "@label:textbox" msgid "Filter..." msgstr "Filtrar..." -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:296 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:426 msgctxt "@label:checkbox" msgid "Show all" msgstr "Mostrar todo" @@ -2166,7 +2448,10 @@ msgid "" "This plugin contains a license.\n" "You need to accept this license to install this plugin.\n" "Do you agree with the terms below?" -msgstr "Este complemento incluye una licencia.\nDebe aceptar dicha licencia para instalar el complemento.\n¿Acepta las condiciones que aparecen a continuación?" +msgstr "" +"Este complemento incluye una licencia.\n" +"Debe aceptar dicha licencia para instalar el complemento.\n" +"¿Acepta las condiciones que aparecen a continuación?" #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:242 msgctxt "@action:button" @@ -2357,66 +2642,66 @@ msgctxt "@label" msgid "Everything is in order! You're done with your CheckUp." msgstr "¡Todo correcto! Ha terminado con la comprobación." -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:88 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:87 msgctxt "@label:MonitorStatus" msgid "Not connected to a printer" msgstr "No está conectado a ninguna impresora." -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:90 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:89 msgctxt "@label:MonitorStatus" msgid "Printer does not accept commands" msgstr "La impresora no acepta comandos." -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:96 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:95 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:194 msgctxt "@label:MonitorStatus" msgid "In maintenance. Please check the printer" msgstr "En mantenimiento. Compruebe la impresora." -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:103 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:102 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:184 msgctxt "@label:MonitorStatus" msgid "Printing..." msgstr "Imprimiendo..." -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:106 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:105 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:186 msgctxt "@label:MonitorStatus" msgid "Paused" msgstr "En pausa" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:109 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:108 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:188 msgctxt "@label:MonitorStatus" msgid "Preparing..." msgstr "Preparando..." -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:111 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:110 msgctxt "@label:MonitorStatus" msgid "Please remove the print" msgstr "Retire la impresión." -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:237 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:241 msgctxt "@label:" msgid "Resume" msgstr "Reanudar" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:241 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:245 msgctxt "@label:" msgid "Pause" msgstr "Pausar" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:270 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:274 msgctxt "@label:" msgid "Abort Print" msgstr "Cancelar impresión" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:280 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:284 msgctxt "@window:title" msgid "Abort print" msgstr "Cancela la impresión" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:282 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:286 msgctxt "@label" msgid "Are you sure you want to abort the print?" msgstr "¿Está seguro de que desea cancelar la impresión?" @@ -2431,7 +2716,9 @@ msgctxt "@text:window" msgid "" "You have customized some profile settings.\n" "Would you like to keep or discard those settings?" -msgstr "Ha personalizado parte de los ajustes del perfil.\n¿Desea descartar los cambios o guardarlos?" +msgstr "" +"Ha personalizado parte de los ajustes del perfil.\n" +"¿Desea descartar los cambios o guardarlos?" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:110 msgctxt "@title:column" @@ -2449,19 +2736,19 @@ msgid "Customized" msgstr "Valor personalizado" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:157 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:593 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:595 msgctxt "@option:discardOrKeep" msgid "Always ask me this" msgstr "Preguntar siempre" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:158 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:594 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:596 msgctxt "@option:discardOrKeep" msgid "Discard and never ask again" msgstr "Descartar y no volver a preguntar" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:159 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:595 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:597 msgctxt "@option:discardOrKeep" msgid "Keep and never ask again" msgstr "Guardar y no volver a preguntar" @@ -2496,72 +2783,72 @@ msgctxt "@label" msgid "Brand" msgstr "Marca" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:92 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:88 msgctxt "@label" msgid "Material Type" msgstr "Tipo de material" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:105 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:97 msgctxt "@label" msgid "Color" msgstr "Color" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:139 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:141 msgctxt "@label" msgid "Properties" msgstr "Propiedades" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:141 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:143 msgctxt "@label" msgid "Density" msgstr "Densidad" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:156 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:158 msgctxt "@label" msgid "Diameter" msgstr "Diámetro" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:185 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:187 msgctxt "@label" msgid "Filament Cost" msgstr "Coste del filamento" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:201 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:203 msgctxt "@label" msgid "Filament weight" -msgstr "Anchura del filamento" +msgstr "Peso del filamento" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:218 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:220 msgctxt "@label" msgid "Filament length" msgstr "Longitud del filamento" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:227 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:229 msgctxt "@label" msgid "Cost per Meter" msgstr "Coste por metro" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:241 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:243 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/MaterialView.qml:248 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:250 msgctxt "@label" msgid "Unlink Material" msgstr "Desvincular material" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:259 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:261 msgctxt "@label" msgid "Description" msgstr "Descripción" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:272 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:274 msgctxt "@label" msgid "Adhesion Information" msgstr "Información sobre adherencia" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:298 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:300 msgctxt "@label" msgid "Print settings" msgstr "Ajustes de impresión" @@ -2602,7 +2889,7 @@ msgid "Unit" msgstr "Unidad" #: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:14 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:439 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:509 msgctxt "@title:tab" msgid "General" msgstr "General" @@ -2617,230 +2904,255 @@ msgctxt "@label" msgid "Language:" msgstr "Idioma:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:205 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:207 msgctxt "@label" msgid "Currency:" msgstr "Moneda:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:219 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:221 msgctxt "@label" msgid "Theme:" msgstr "Tema:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:279 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:281 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:296 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:298 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:304 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:306 msgctxt "@option:check" msgid "Slice automatically" msgstr "Segmentar automáticamente" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:318 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:320 msgctxt "@label" msgid "Viewport behavior" msgstr "Comportamiento de la ventanilla" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:326 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:328 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:335 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:337 msgctxt "@option:check" msgid "Display overhang" msgstr "Mostrar voladizos" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:342 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:344 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:347 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:349 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:356 +#: /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:361 +#: /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:370 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:372 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:375 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:377 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:384 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:386 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:389 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:391 msgctxt "@option:check" msgid "Ensure models are kept apart" msgstr "Asegúrese de que lo modelos están separados." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:397 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:399 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:402 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:404 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:414 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:416 msgctxt "@info:tooltip" msgid "Show caution message in gcode reader." msgstr "Mostrar mensaje de advertencia en el lector de GCode." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:423 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:425 msgctxt "@option:check" msgid "Caution message in gcode reader" msgstr "Mensaje de advertencia en el lector de GCode" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:430 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:432 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:435 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:437 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:451 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:453 msgctxt "@label" msgid "Opening and saving files" msgstr "Abrir y guardar archivos" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:457 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:459 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:462 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:464 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:473 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:478 msgctxt "@option:check" msgid "Scale extremely small models" msgstr "Escalar modelos demasiado pequeños" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:485 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:487 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:490 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:492 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:499 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:501 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:503 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:505 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:512 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:514 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:520 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:522 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:533 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:535 msgctxt "@option:openProject" msgid "Always ask" msgstr "Preguntar siempre" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:534 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:536 msgctxt "@option:openProject" msgid "Always open as a project" msgstr "Abrir siempre como un proyecto" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:535 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:537 msgctxt "@option:openProject" msgid "Always import models" msgstr "Importar modelos siempre" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:571 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:573 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:580 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:582 msgctxt "@label" msgid "Override Profile" msgstr "Anular perfil" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:629 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:631 msgctxt "@label" msgid "Privacy" msgstr "Privacidad" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:636 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:638 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:641 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:643 msgctxt "@option:check" msgid "Check for updates on start" msgstr "Buscar actualizaciones al iniciar" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:651 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:653 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:656 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:658 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:674 +msgctxt "@label" +msgid "Experimental" +msgstr "Experimental" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:680 +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:685 +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/GeneralPage.qml:694 +msgctxt "@info:tooltip" +msgid "Should newly loaded models be arranged on the build plate? Used in conjunction with multi build plate (EXPERIMENTAL)" +msgstr "¿Los modelos recién cargados se deben organizar en la placa de impresión? Se han usado junto con la placa de impresión múltiple (EXPERIMENTAL)" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:699 +msgctxt "@option:check" +msgid "Do not arrange objects on load" +msgstr "No organizar objetos al cargar" + #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:444 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:514 msgctxt "@title:tab" msgid "Printers" msgstr "Impresoras" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:37 #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:51 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:137 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:138 msgctxt "@action:button" msgid "Activate" msgstr "Activar" @@ -2883,7 +3195,7 @@ msgid "Waiting for a printjob" msgstr "Esperando un trabajo de impresión..." #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:448 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:518 msgctxt "@title:tab" msgid "Profiles" msgstr "Perfiles" @@ -2909,13 +3221,13 @@ msgid "Duplicate" msgstr "Duplicado" #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:113 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:201 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:182 msgctxt "@action:button" msgid "Import" msgstr "Importar" #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:119 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:212 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:193 msgctxt "@action:button" msgid "Export" msgstr "Exportar" @@ -2981,7 +3293,7 @@ msgid "Export Profile" msgstr "Exportar perfil" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:446 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:516 msgctxt "@title:tab" msgid "Materials" msgstr "Materiales" @@ -2996,60 +3308,60 @@ msgctxt "@action:label %1 is printer name" msgid "Printer: %1" msgstr "Impresora: %1" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:149 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:150 msgctxt "@action:button" msgid "Create" msgstr "Crear" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:168 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:160 msgctxt "@action:button" msgid "Duplicate" msgstr "Duplicado" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:311 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:319 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:298 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:306 msgctxt "@title:window" msgid "Import Material" msgstr "Importar material" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:320 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:307 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/MaterialsPage.qml:324 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:311 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/MaterialsPage.qml:343 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:358 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:329 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:344 msgctxt "@title:window" msgid "Export Material" msgstr "Exportar material" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:362 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:348 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/MaterialsPage.qml:368 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:354 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully exported material to %1" msgstr "El material se ha exportado correctamente a %1." #: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:18 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:793 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:869 msgctxt "@title:window" msgid "Add Printer" msgstr "Agregar impresora" -#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:185 +#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:194 msgctxt "@label" msgid "Printer Name:" msgstr "Nombre de la impresora:" -#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:208 +#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:217 msgctxt "@action:button" msgid "Add Printer" msgstr "Agregar impresora" @@ -3074,7 +3386,9 @@ msgctxt "@info:credit" msgid "" "Cura is developed by Ultimaker B.V. in cooperation with the community.\n" "Cura proudly uses the following open source projects:" -msgstr "Ultimaker B.V. ha desarrollado Cura en cooperación con la comunidad.\nCura se enorgullece de utilizar los siguientes proyectos de código abierto:" +msgstr "" +"Ultimaker B.V. ha desarrollado Cura en cooperación con la comunidad.\n" +"Cura se enorgullece de utilizar los siguientes proyectos de código abierto:" #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:118 msgctxt "@label" @@ -3176,158 +3490,167 @@ msgctxt "@label" msgid "Profile:" msgstr "Perfil:" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:66 -msgctxt "@" -msgid "No Profile Available" -msgstr "No hay perfiles disponibles." - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:104 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:102 msgctxt "@tooltip" msgid "" "Some setting/override values are different from the values stored in the profile.\n" "\n" "Click to open the profile manager." -msgstr "Algunos valores de los ajustes o sobrescrituras son distintos a los valores almacenados en el perfil.\n\nHaga clic para abrir el administrador de perfiles." +msgstr "" +"Algunos valores de los ajustes o sobrescrituras son distintos a los valores almacenados en el perfil.\n" +"\n" +"Haga clic para abrir el administrador de perfiles." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:152 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:150 msgctxt "@label:textbox" msgid "Search..." msgstr "Buscar..." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:483 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:482 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:498 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:497 msgctxt "@action:menu" msgid "Hide this setting" msgstr "Ocultar este ajuste" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:508 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:507 msgctxt "@action:menu" msgid "Don't show this setting" msgstr "No mostrar este ajuste" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:512 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:511 msgctxt "@action:menu" msgid "Keep this setting visible" msgstr "Mostrar este ajuste" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:531 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:530 msgctxt "@action:menu" msgid "Configure setting visiblity..." msgstr "Configurar la visibilidad de los ajustes..." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingCategory.qml:123 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingCategory.qml:250 msgctxt "@label" msgid "" "Some hidden settings use values different from their normal calculated value.\n" "\n" "Click to make these settings visible." -msgstr "Algunos ajustes ocultos utilizan valores diferentes de los valores normales calculados.\n\nHaga clic para mostrar estos ajustes." +msgstr "" +"Algunos ajustes ocultos utilizan valores diferentes de los valores normales calculados.\n" +"\n" +"Haga clic para mostrar estos ajustes." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:62 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:61 msgctxt "@label Header for list of settings." msgid "Affects" msgstr "Afecta a" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:67 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:66 msgctxt "@label Header for list of settings." msgid "Affected By" msgstr "Afectado por" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:157 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:156 msgctxt "@label" -msgid "This setting is always shared between all extruders. Changing it here will change the value for all extruders" +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:160 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:159 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:186 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:190 msgctxt "@label" msgid "" "This setting has a value that is different from the profile.\n" "\n" "Click to restore the value of the profile." -msgstr "Este ajuste tiene un valor distinto del perfil.\n\nHaga clic para restaurar el valor del perfil." +msgstr "" +"Este ajuste tiene un valor distinto del perfil.\n" +"\n" +"Haga clic para restaurar el valor del perfil." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:284 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:288 msgctxt "@label" msgid "" "This setting is normally calculated, but it currently has an absolute value set.\n" "\n" "Click to restore the calculated value." -msgstr "Este ajuste se calcula normalmente pero actualmente tiene un valor absoluto establecido.\n\nHaga clic para restaurar el valor calculado." +msgstr "" +"Este ajuste se calcula normalmente pero actualmente tiene un valor absoluto establecido.\n" +"\n" +"Haga clic para restaurar el valor calculado." -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:120 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:128 msgctxt "@label:listbox" msgid "Print Setup" msgstr "Configuración de impresión" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:120 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:128 msgctxt "@label:listbox" msgid "" "Print Setup disabled\n" "G-code files cannot be modified" -msgstr "Ajustes de impresión deshabilitados\nNo se pueden modificar los archivos GCode" +msgstr "" +"Ajustes de impresión deshabilitados\n" +"No se pueden modificar los archivos GCode" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:336 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:342 msgctxt "@label Hours and minutes" msgid "00h 00min" msgstr "00 h 00 min" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:354 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:359 msgctxt "@tooltip" -msgid "Time specification
      " -msgstr "Especificación de tiempo
      " +msgid "Time specification" +msgstr "Especificación de tiempos" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:429 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:441 msgctxt "@label" msgid "Cost specification" msgstr "Especificación de costes" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:434 -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:445 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:446 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:455 msgctxt "@label m for meter" msgid "%1m" msgstr "%1 m" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:435 -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:446 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:447 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:456 msgctxt "@label g for grams" msgid "%1g" msgstr "%1 g" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:444 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:454 msgctxt "@label" msgid "Total:" msgstr "Total:" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:498 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:504 msgctxt "@label Print estimates: m for meters, g for grams, %4 is currency and %3 is print cost" msgid "%1m / ~ %2g / ~ %4 %3" msgstr "%1 m/~ %2 g/~ %4 %3" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:503 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:509 msgctxt "@label Print estimates: m for meters, g for grams" msgid "%1m / ~ %2g" msgstr "%1 m/~ %2 g" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:586 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:591 msgctxt "@tooltip" msgid "Recommended Print Setup

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

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

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

      Imprimir con un control muy detallado del proceso de segmentación." -#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:49 +#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:50 msgctxt "@title:menuitem %1 is the automatically selected material" msgid "Automatic: %1" msgstr "Automático: %1" @@ -3337,6 +3660,16 @@ msgctxt "@title:menu menubar:toplevel" msgid "&View" msgstr "&Ver" +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:37 +msgctxt "@action:inmenu menubar:view" +msgid "&Camera position" +msgstr "&Posición de la cámara" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:52 +msgctxt "@action:inmenu menubar:view" +msgid "&Build plate" +msgstr "&Placa de impresión" + #: /home/ruben/Projects/Cura/resources/qml/Menus/NozzleMenu.qml:40 msgctxt "@title:menuitem %1 is the nozzle currently loaded in the printer" msgid "Automatic: %1" @@ -3349,14 +3682,14 @@ msgid_plural "Print Selected Models With:" msgstr[0] "Imprimir modelo seleccionado con:" msgstr[1] "Imprimir modelos seleccionados con:" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ContextMenu.qml:83 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ContextMenu.qml:114 msgctxt "@title:window" 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/Menus/ContextMenu.qml:108 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ContextMenu.qml:139 msgctxt "@label" msgid "Number of Copies" msgstr "Número de copias" @@ -3372,7 +3705,7 @@ msgid "No printer connected" msgstr "No hay ninguna impresora conectada" #: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:90 -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:138 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:139 msgctxt "@label" msgid "Extruder" msgstr "Extrusor" @@ -3482,254 +3815,294 @@ msgctxt "@label" msgid "Estimated time left" msgstr "Tiempo restante estimado" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:72 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:79 msgctxt "@action:inmenu" msgid "Toggle Fu&ll Screen" msgstr "A<ernar pantalla completa" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:79 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:86 msgctxt "@action:inmenu menubar:edit" msgid "&Undo" msgstr "Des&hacer" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:89 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:96 msgctxt "@action:inmenu menubar:edit" msgid "&Redo" msgstr "&Rehacer" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:99 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:106 msgctxt "@action:inmenu menubar:file" msgid "&Quit" msgstr "&Salir" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:107 -msgctxt "@action:inmenu menubar:view" -msgid "&Reset camera position" -msgstr "&Restablecer posición de la cámara" - #: /home/ruben/Projects/Cura/resources/qml/Actions.qml:114 +msgctxt "@action:inmenu menubar:view" +msgid "&3D View" +msgstr "&Vista en 3D" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:121 +msgctxt "@action:inmenu menubar:view" +msgid "&Front View" +msgstr "&Vista frontal" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:128 +msgctxt "@action:inmenu menubar:view" +msgid "&Top View" +msgstr "&Vista superior" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:135 +msgctxt "@action:inmenu menubar:view" +msgid "&Left Side View" +msgstr "&Vista del lado izquierdo" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:142 +msgctxt "@action:inmenu menubar:view" +msgid "&Right Side View" +msgstr "&Vista del lado derecho" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:149 msgctxt "@action:inmenu" msgid "Configure Cura..." msgstr "Configurar Cura..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:121 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:156 msgctxt "@action:inmenu menubar:printer" msgid "&Add Printer..." msgstr "&Agregar impresora..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:127 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:162 msgctxt "@action:inmenu menubar:printer" msgid "Manage Pr&inters..." -msgstr "Adm&inistrar impresoras ..." +msgstr "Adm&inistrar impresoras..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:134 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:169 msgctxt "@action:inmenu" msgid "Manage Materials..." msgstr "Administrar materiales..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:142 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:177 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:150 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:185 msgctxt "@action:inmenu menubar:profile" msgid "&Discard current changes" msgstr "&Descartar cambios actuales" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:162 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:197 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:168 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:203 msgctxt "@action:inmenu menubar:profile" msgid "Manage Profiles..." msgstr "Administrar perfiles..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:175 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:210 msgctxt "@action:inmenu menubar:help" msgid "Show Online &Documentation" msgstr "Mostrar &documentación en línea" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:183 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:218 msgctxt "@action:inmenu menubar:help" msgid "Report a &Bug" msgstr "Informar de un &error" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:191 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:226 msgctxt "@action:inmenu menubar:help" msgid "&About..." msgstr "&Acerca de..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:198 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:233 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:208 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:243 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:217 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:252 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:226 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:261 msgctxt "@action:inmenu" msgid "Delete Model" msgstr "Eliminar modelo" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:234 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:269 msgctxt "@action:inmenu" msgid "Ce&nter Model on Platform" msgstr "Ce&ntrar modelo en plataforma" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:240 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:275 msgctxt "@action:inmenu menubar:edit" msgid "&Group Models" msgstr "A&grupar modelos" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:250 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:295 msgctxt "@action:inmenu menubar:edit" msgid "Ungroup Models" msgstr "Desagrupar modelos" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:260 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:305 msgctxt "@action:inmenu menubar:edit" msgid "&Merge Models" msgstr "Co&mbinar modelos" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:270 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:315 msgctxt "@action:inmenu" msgid "&Multiply Model..." msgstr "&Multiplicar modelo..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:277 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:322 msgctxt "@action:inmenu menubar:edit" msgid "&Select All Models" msgstr "&Seleccionar todos los modelos" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:287 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:332 msgctxt "@action:inmenu menubar:edit" msgid "&Clear Build Plate" msgstr "&Borrar placa de impresión" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:297 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:342 msgctxt "@action:inmenu menubar:file" msgid "Re&load All Models" msgstr "&Recargar todos los modelos" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:306 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:351 +msgctxt "@action:inmenu menubar:edit" +msgid "Arrange All Models To All Build Plates" +msgstr "Organizar todos los modelos en todas las placas de impresión" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:358 msgctxt "@action:inmenu menubar:edit" msgid "Arrange All Models" msgstr "Organizar todos los modelos" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:314 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:366 msgctxt "@action:inmenu menubar:edit" msgid "Arrange Selection" msgstr "Organizar selección" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:321 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:373 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:328 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:380 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:335 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:387 msgctxt "@action:inmenu menubar:file" msgid "&Open File(s)..." msgstr "&Abrir archivo(s)..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:343 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:395 msgctxt "@action:inmenu menubar:file" msgid "&New Project..." msgstr "&Nuevo proyecto..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:350 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:402 msgctxt "@action:inmenu menubar:help" msgid "Show Engine &Log..." msgstr "&Mostrar registro del motor..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:358 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:410 msgctxt "@action:inmenu menubar:help" msgid "Show Configuration Folder" msgstr "Mostrar carpeta de configuración" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:365 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:417 msgctxt "@action:menu" msgid "Configure setting visibility..." msgstr "Configurar visibilidad de los ajustes..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:372 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:424 msgctxt "@action:menu" msgid "Browse plugins..." msgstr "Examinar complementos..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:379 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:431 msgctxt "@action:menu" msgid "Installed plugins..." msgstr "Complementos instalados..." -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:28 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:438 +msgctxt "@action:inmenu menubar:view" +msgid "Expand/Collapse Sidebar" +msgstr "Expandir/contraer barra lateral" + +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:26 msgctxt "@label:PrintjobStatus" msgid "Please load a 3D model" msgstr "Cargue un modelo en 3D" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:34 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:36 msgctxt "@label:PrintjobStatus" msgid "Ready to slice" msgstr "Preparado para segmentar" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:36 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:38 msgctxt "@label:PrintjobStatus" msgid "Slicing..." msgstr "Segmentando..." -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:38 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:40 msgctxt "@label:PrintjobStatus %1 is target operation" msgid "Ready to %1" msgstr "Listo para %1" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:40 -msgctxt "@label:PrintjobStatus" -msgid "Unable to Slice" -msgstr "No se puede segmentar." - #: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:42 msgctxt "@label:PrintjobStatus" -msgid "Slicing unavailable" +msgid "Unable to Slice" msgstr "No se puede segmentar" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:162 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:44 +msgctxt "@label:PrintjobStatus" +msgid "Slicing unavailable" +msgstr "Segmentación no disponible" + +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:171 +msgctxt "@info:tooltip" +msgid "Slice current printjob" +msgstr "Fragmentar trabajo de impresión actual" + +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:171 +msgctxt "@info:tooltip" +msgid "Cancel slicing process" +msgstr "Cancelar proceso de fragmentación" + +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:183 msgctxt "@label:Printjob" msgid "Prepare" msgstr "Preparar" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:162 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:183 msgctxt "@label:Printjob" msgid "Cancel" msgstr "Cancelar" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:302 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:317 msgctxt "@info:tooltip" msgid "Select the active output device" msgstr "Seleccione el dispositivo de salida activo" #: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:19 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:620 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:696 msgctxt "@title:window" msgid "Open file(s)" msgstr "Abrir archivo(s)" @@ -3749,114 +4122,114 @@ msgctxt "@title:window" msgid "Ultimaker Cura" msgstr "Ultimaker Cura" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:81 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:102 msgctxt "@title:menu menubar:toplevel" msgid "&File" msgstr "&Archivo" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:98 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:119 msgctxt "@action:inmenu menubar:file" msgid "&Save Selection to File" msgstr "Guardar &selección en archivo" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:107 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:128 msgctxt "@title:menu menubar:file" msgid "Save &As..." msgstr "Guardar &como..." -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:118 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:139 msgctxt "@title:menu menubar:file" -msgid "Save project" -msgstr "Guardar proyecto" +msgid "Save &Project..." +msgstr "Guardar &proyecto..." -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:141 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:162 msgctxt "@title:menu menubar:toplevel" msgid "&Edit" msgstr "&Edición" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:158 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:179 msgctxt "@title:menu" msgid "&View" msgstr "&Ver" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:163 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:184 msgctxt "@title:menu" msgid "&Settings" msgstr "A&justes" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:165 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:186 msgctxt "@title:menu menubar:toplevel" msgid "&Printer" msgstr "&Impresora" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:175 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:187 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:196 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:208 msgctxt "@title:menu" msgid "&Material" msgstr "&Material" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:176 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:188 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:197 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:209 msgctxt "@title:menu" msgid "&Profile" msgstr "&Perfil" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:180 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:201 msgctxt "@action:inmenu" msgid "Set as Active Extruder" msgstr "Definir como extrusor activo" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:198 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:219 msgctxt "@title:menu menubar:toplevel" msgid "E&xtensions" msgstr "E&xtensiones" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:232 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:253 msgctxt "@title:menu menubar:toplevel" msgid "P&lugins" msgstr "&Complementos" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:240 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:261 msgctxt "@title:menu menubar:toplevel" msgid "P&references" msgstr "Pre&ferencias" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:248 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:269 msgctxt "@title:menu menubar:toplevel" msgid "&Help" msgstr "A&yuda" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:330 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:351 msgctxt "@action:button" msgid "Open File" msgstr "Abrir archivo" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:442 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:512 msgctxt "@title:tab" msgid "Settings" msgstr "Ajustes" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:478 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:554 msgctxt "@title:window" msgid "New project" msgstr "Nuevo proyecto" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:479 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:555 msgctxt "@info:question" msgid "Are you sure you want to start a new project? This will clear the build plate and any unsaved settings." msgstr "¿Está seguro de que desea iniciar un nuevo proyecto? Esto borrará la placa de impresión y cualquier ajuste no guardado." -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:721 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:797 msgctxt "@window:title" msgid "Install Plugin" msgstr "Instalar complemento" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:728 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:804 msgctxt "@title:window" msgid "Open File(s)" msgstr "Abrir archivo(s)" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:731 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:807 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." @@ -3881,97 +4254,82 @@ msgctxt "@action:label" msgid "Don't show project summary on save again" msgstr "No mostrar resumen de proyecto al guardar de nuevo" -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:264 -msgctxt "@action:button" -msgid "Save" -msgstr "Guardar" - -#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:74 -msgctxt "@title:tab" -msgid "Prepare" -msgstr "Preparar" - -#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:100 -msgctxt "@title:tab" -msgid "Monitor" -msgstr "Supervisar" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:163 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:175 msgctxt "@label" msgid "Layer Height" msgstr "Altura de capa" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:323 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:345 msgctxt "@tooltip" msgid "A custom profile is currently active. To enable the quality slider, choose a default quality profile in Custom tab" msgstr "Hay un perfil personalizado activado en este momento. Para habilitar el control deslizante de calidad, seleccione un perfil de calidad predeterminado en la pestaña Personalizado." -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:340 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:362 msgctxt "@label" msgid "Print Speed" msgstr "Velocidad de impresión" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:350 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:374 msgctxt "@label" msgid "Slower" msgstr "Más lento" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:361 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:385 msgctxt "@label" msgid "Faster" msgstr "Más rápido" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:388 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:423 msgctxt "@tooltip" msgid "You have modified some profile settings. If you want to change these go to custom mode." msgstr "Ha modificado algunos ajustes del perfil. Si desea cambiarlos, hágalo en el modo personalizado." -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:413 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:446 msgctxt "@label" msgid "Infill" msgstr "Relleno" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:633 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:668 msgctxt "@label" msgid "Gradual infill will gradually increase the amount of infill towards the top." msgstr "Un relleno gradual aumentará gradualmente la cantidad de relleno hacia arriba." -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:645 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:680 msgctxt "@label" msgid "Enable gradual" msgstr "Habilitar gradual" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:712 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:747 msgctxt "@label" msgid "Generate Support" msgstr "Generar soporte" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:746 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:781 msgctxt "@label" msgid "Generate structures to support parts of the model which have overhangs. Without these structures, such parts would collapse during printing." msgstr "Generar estructuras para soportar piezas del modelo que tengan voladizos. Sin estas estructuras, estas piezas se romperían durante la impresión." -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:764 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:799 msgctxt "@label" msgid "Support Extruder" msgstr "Extrusor del soporte" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:816 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:851 msgctxt "@label" msgid "Select which extruder to use for support. This will build up supporting structures below the model to prevent the model from sagging or printing in mid air." msgstr "Seleccione qué extrusor se utilizará como soporte. Esta opción formará estructuras de soporte por debajo del modelo para evitar que éste se combe o la impresión se haga en el aire." -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:839 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:874 msgctxt "@label" msgid "Build Plate Adhesion" msgstr "Adherencia de la placa de impresión" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:894 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:929 msgctxt "@label" msgid "Enable printing a brim or raft. This will add a flat area around or under your object which is easy to cut off afterwards." msgstr "Habilita la impresión de un borde o una balsa. Esta opción agregará un área plana alrededor del objeto, que es fácil de cortar después." -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:934 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:969 msgctxt "@label" msgid "Need help improving your prints?
      Read the Ultimaker Troubleshooting Guides" msgstr "¿Necesita ayuda para mejorar sus impresiones?
      Lea las Guías de solución de problemas de Ultimaker" @@ -3988,17 +4346,22 @@ msgctxt "@title:window" msgid "Open project file" msgstr "Abrir archivo de proyecto" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:72 +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:93 msgctxt "@text:window" msgid "This is a Cura project file. Would you like to open it as a project or import the models from it?" msgstr "Este es un archivo de proyecto Cura. ¿Le gustaría abrirlo como un proyecto o importar sus modelos?" #: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:103 +msgctxt "@text:window" +msgid "Remember my choice" +msgstr "Recordar mi selección" + +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:122 msgctxt "@action:button" msgid "Open as project" msgstr "Abrir como proyecto" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:122 +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:131 msgctxt "@action:button" msgid "Import models" msgstr "Importar modelos" @@ -4008,21 +4371,36 @@ msgctxt "@title:window" msgid "Engine Log" msgstr "Registro del motor" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:242 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:245 msgctxt "@label" msgid "Material" msgstr "Material" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:349 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:352 msgctxt "@label" -msgid "Check compatibility" -msgstr "Comprobar compatibilidad" +msgid "Check compatibility" +msgstr "Comprobar compatibilidad" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:369 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:372 msgctxt "@tooltip" msgid "Click to check the material compatibility on Ultimaker.com." msgstr "Haga clic para comprobar la compatibilidad de los materiales en Utimaker.com." +#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:211 +msgctxt "@option:check" +msgid "See only current build plate" +msgstr "Ver solo placa de impresión actual" + +#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:227 +msgctxt "@action:button" +msgid "Arrange to all build plates" +msgstr "Organizar todas las placas de impresión" + +#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:247 +msgctxt "@action:button" +msgid "Arrange current build plate" +msgstr "Organizar placa de impresión actual" + #: MachineSettingsAction/plugin.json msgctxt "description" msgid "Provides a way to change machine settings (such as build volume, nozzle size, etc)" @@ -4113,6 +4491,26 @@ msgctxt "name" msgid "USB printing" msgstr "Impresión USB" +#: PrepareStage/plugin.json +msgctxt "description" +msgid "Provides a prepare stage in Cura." +msgstr "Proporciona una fase de preparación en Cura." + +#: PrepareStage/plugin.json +msgctxt "name" +msgid "Prepare Stage" +msgstr "Fase de preparación" + +#: CuraLiveScriptingPlugin/plugin.json +msgctxt "description" +msgid "Provides an edit window for direct script editing." +msgstr "Proporciona una ventana de edición para la edición directa de secuencias de comandos." + +#: CuraLiveScriptingPlugin/plugin.json +msgctxt "name" +msgid "Live scripting tool" +msgstr "Herramienta de secuencia de comandos en directo" + #: RemovableDriveOutputDevice/plugin.json msgctxt "description" msgid "Provides removable drive hotplugging and writing support." @@ -4133,6 +4531,16 @@ msgctxt "name" msgid "UM3 Network Connection" msgstr "Conexión de red UM3" +#: MonitorStage/plugin.json +msgctxt "description" +msgid "Provides a monitor stage in Cura." +msgstr "Proporciona una fase de supervisión en Cura." + +#: MonitorStage/plugin.json +msgctxt "name" +msgid "Monitor Stage" +msgstr "Fase de supervisión" + #: FirmwareUpdateChecker/plugin.json msgctxt "description" msgid "Checks for firmware updates." @@ -4145,8 +4553,8 @@ msgstr "Buscador de actualizaciones de firmware" #: CuraSolidWorksPlugin/plugin.json msgctxt "description" -msgid "Gives you the possibility to open certain files via SolidWorks itself. These are then converted and loaded into Cura" -msgstr "Permite abrir ciertos archivos con el propio SolidWorks que, a continuación, puede convertirse y cargarse en Cura." +msgid "Gives you the possibility to open certain files using SolidWorks itself. Conversion is done by this plugin and additional optimizations." +msgstr "Permite abrir determinados archivos con el propio SolidWorks. La conversión se lleva a cabo mediante este complemento y optimizaciones adicionales." #: CuraSolidWorksPlugin/plugin.json msgctxt "name" @@ -4213,6 +4621,16 @@ msgctxt "name" msgid "Legacy Cura Profile Reader" msgstr "Lector de perfiles antiguos de Cura" +#: CuraBlenderPlugin/plugin.json +msgctxt "description" +msgid "Helps to open Blender files directly in Cura." +msgstr "Ayuda a abrir archivos de Blender directamente en Cura." + +#: CuraBlenderPlugin/plugin.json +msgctxt "name" +msgid "Blender Integration (experimental)" +msgstr "Integración de Blender (experimental)" + #: GCodeProfileReader/plugin.json msgctxt "description" msgid "Provides support for importing profiles from g-code files." @@ -4316,7 +4734,7 @@ msgstr "Herramienta de ajustes por modelo" #: cura-siemensnx-plugin/plugin.json msgctxt "description" msgid "Helps you to install an 'export to Cura' button in Siemens NX." -msgstr "Ayuda a instalar el botón para exportar a Cura en in Siemens NX." +msgstr "Ayuda a instalar el botón para exportar a Cura en Siemens NX." #: cura-siemensnx-plugin/plugin.json msgctxt "name" @@ -4373,6 +4791,16 @@ 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." @@ -4413,6 +4841,156 @@ msgctxt "name" msgid "Cura Profile Reader" msgstr "Lector de perfiles de Cura" +#~ msgctxt "@label" +#~ msgid "Unknown" +#~ msgstr "Desconocido" + +#~ msgctxt "@info:status" +#~ msgid "Errors appeared while opening your SolidWorks file! Please check, whether it is possible to open your file in SolidWorks itself without any problems as well!" +#~ msgstr "Se han producido varios errores al abrir el archivo de SolidWorks. Compruebe que el archivo se puede abrir correctamente en SolidWorks." + +#~ msgctxt "@info:status" +#~ msgid "Error while starting %s!" +#~ msgstr "Error al iniciar %s" + +#~ msgctxt "@item:inlistbox" +#~ msgid "Simulation view" +#~ msgstr "Vista de simulación" + +#~ msgctxt "@info" +#~ msgid "Cura collects anonymised slicing statistics. You can disable this in the preferences." +#~ msgstr "Cura recopila de forma anónima información de la segmentación. Puede desactivar esta opción en las preferencias." + +#~ msgctxt "@action:button" +#~ msgid "Dismiss" +#~ msgstr "Descartar" + +#~ msgctxt "@menuitem" +#~ msgid "Global" +#~ msgstr "Global" + +#~ msgctxt "@label crash message" +#~ msgid "" +#~ "

      A fatal exception has occurred. Please send us this Crash Report to fix the problem

      \n" +#~ "

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

      \n" +#~ " " +#~ msgstr "" +#~ "

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

      \n" +#~ "

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

      \n" +#~ " " + +#~ msgctxt "@label Cura version" +#~ msgid "Cura version: {version}
      " +#~ msgstr "Versión de Cura: {version}
      " + +#~ msgctxt "@label Platform" +#~ msgid "Platform: {platform}
      " +#~ msgstr "Platforma: {platform}
      " + +#~ msgctxt "@label Qt version" +#~ msgid "Qt version: {qt}
      " +#~ msgstr "Versión de Qt: {qt}
      " + +#~ msgctxt "@label PyQt version" +#~ msgid "PyQt version: {pyqt}
      " +#~ msgstr "Versión de PyQt: {pyqt}
      " + +#~ msgctxt "@label OpenGL" +#~ msgid "OpenGL: {opengl}
      " +#~ msgstr "OpenGL: {opengl}
      " + +#~ msgctxt "@title:groupbox" +#~ msgid "Exception traceback" +#~ msgstr "Rastreabilidad de excepciones" + +#~ msgctxt "@label" +#~ msgid "Material diameter" +#~ msgstr "Diámetro del material" + +#~ msgctxt "@label" +#~ msgid "Ultimaker 3" +#~ msgstr "Ultimaker 3" + +#~ msgctxt "@label" +#~ msgid "Ultimaker 3 Extended" +#~ msgstr "Ultimaker 3 Extended" + +#~ msgctxt "@title:window" +#~ msgid "Cura SolidWorks Plugin Configuration" +#~ msgstr "Configuración de complementos Cura SolidWorks" + +#~ msgctxt "@action:label" +#~ msgid "Default quality of the exported STL:" +#~ msgstr "Calidad predeterminada del STL exportado:" + +#~ msgctxt "@option:curaSolidworksStlQuality" +#~ msgid "Always ask" +#~ msgstr "Preguntar siempre" + +#~ msgctxt "@option:curaSolidworksStlQuality" +#~ msgid "Always use Fine quality" +#~ msgstr "Usar siempre calidad fina" + +#~ msgctxt "@option:curaSolidworksStlQuality" +#~ msgid "Always use Coarse quality" +#~ msgstr "Usar siempre calidad gruesa" + +#~ msgctxt "@title:window" +#~ msgid "Import SolidWorks File as STL..." +#~ msgstr "Importar el archivo SolidWorks como STL..." + +#~ msgctxt "@info:tooltip" +#~ msgid "Quality of the Exported STL" +#~ msgstr "Calidad del STL exportado" + +#~ msgctxt "@action:label" +#~ msgid "Quality" +#~ msgstr "Calidad" + +#~ msgctxt "@option:curaSolidworksStlQuality" +#~ msgid "Coarse" +#~ msgstr "Gruesa" + +#~ msgctxt "@option:curaSolidworksStlQuality" +#~ msgid "Fine" +#~ msgstr "Fina" + +#~ msgctxt "@" +#~ msgid "No Profile Available" +#~ msgstr "No hay perfiles disponibles." + +#~ 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." + +#~ msgctxt "@tooltip" +#~ msgid "Time specification
      " +#~ msgstr "Especificación de tiempo
      " + +#~ msgctxt "@action:inmenu menubar:view" +#~ msgid "&Reset camera position" +#~ msgstr "&Restablecer posición de la cámara" + +#~ msgctxt "@title:menu menubar:file" +#~ msgid "Save project" +#~ msgstr "Guardar proyecto" + +#~ msgctxt "@title:tab" +#~ msgid "Prepare" +#~ msgstr "Preparar" + +#~ msgctxt "@title:tab" +#~ msgid "Monitor" +#~ msgstr "Supervisar" + +#~ msgctxt "@label" +#~ msgid "Check compatibility" +#~ msgstr "Comprobar compatibilidad" + +#~ msgctxt "description" +#~ msgid "Gives you the possibility to open certain files via SolidWorks itself. These are then converted and loaded into Cura" +#~ msgstr "Permite abrir ciertos archivos con el propio SolidWorks que, a continuación, puede convertirse y cargarse en Cura." + #~ msgctxt "@label:status" #~ msgid "Blocked" #~ msgstr "Deshabilitada" @@ -4433,13 +5011,9 @@ msgstr "Lector de perfiles de Cura" #~ msgid "To ensure that your {machine_name} is equipped with the latest features it is recommended to update the firmware regularly. This can be done on the {machine_name} (when connected to the network) or via USB." #~ msgstr "Para garantizar que su {machine_name} disponga de las prestaciones más recientes, se recomienda actualizar el firmware con regularidad. Esto se puede hacer en la {machine_name} (cuando esté conectada a la red) o vía USB." -msgctxt "@item:inlistbox" -msgid "Layer view" -msgstr "Vista de capas" - -msgctxt "@info:title" -msgid "Layer View" -msgstr "Vista de capas" +#~ msgctxt "@info:title" +#~ msgid "Layer View" +#~ msgstr "Vista de capas" #~ msgctxt "@menuitem" #~ msgid "Browse plugins" @@ -4541,9 +5115,9 @@ msgstr "Vista de capas" #~ msgid "Provides the Layer view." #~ msgstr "Proporciona la vista de capas." -msgctxt "name" -msgid "Layer View" -msgstr "Vista de capas" +#~ msgctxt "name" +#~ msgid "Layer View" +#~ msgstr "Vista de capas" #~ msgctxt "@item:inlistbox" #~ msgid "X-Ray" @@ -4864,9 +5438,9 @@ msgstr "Vista de capas" #~ msgid "Provides support for importing profiles from g-code files." #~ msgstr "Proporciona asistencia para la importación de perfiles de archivos GCode." -msgctxt "@label" -msgid "Layer View" -msgstr "Vista de capas" +#~ msgctxt "@label" +#~ msgid "Layer View" +#~ msgstr "Vista de capas" #~ msgctxt "@info:whatsthis" #~ msgid "Provides the Layer view." diff --git a/resources/i18n/es_ES/fdmextruder.def.json.po b/resources/i18n/es_ES/fdmextruder.def.json.po index 1d0986f4e1..e895c053e3 100644 --- a/resources/i18n/es_ES/fdmextruder.def.json.po +++ b/resources/i18n/es_ES/fdmextruder.def.json.po @@ -2,12 +2,12 @@ # Copyright (C) 2017 Ultimaker # This file is distributed under the same license as the Cura package. # Ruben Dulek , 2017. -# +# msgid "" msgstr "" "Project-Id-Version: Cura 3.0\n" -"Report-Msgid-Bugs-To: http://github.com/ultimaker/uranium\n" -"POT-Creation-Date: 2017-11-21 16:58+0000\n" +"Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" +"POT-Creation-Date: 2017-08-02 16:53+0000\n" "PO-Revision-Date: 2017-11-30 13:05+0100\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 d3515844e3..98c2d1da7f 100644 --- a/resources/i18n/es_ES/fdmprinter.def.json.po +++ b/resources/i18n/es_ES/fdmprinter.def.json.po @@ -1,20 +1,21 @@ # Cura JSON setting files -# Copyright (C) 2017 Ultimaker +# Copyright (C) 2018 Ultimaker # This file is distributed under the same license as the Cura package. -# Ruben Dulek , 2017. -# +# Ruben Dulek , 2018. +# msgid "" msgstr "" -"Project-Id-Version: Cura 3.0\n" -"Report-Msgid-Bugs-To: http://github.com/ultimaker/uranium\n" -"POT-Creation-Date: 2017-11-21 16:58+0000\n" -"PO-Revision-Date: 2017-11-30 13:05+0100\n" +"Project-Id-Version: Cura 3.2\n" +"Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" +"POT-Creation-Date: 2018-01-29 09:48+0000\n" +"PO-Revision-Date: 2018-02-12 13:40+0100\n" "Last-Translator: Bothof \n" "Language-Team: Spanish\n" "Language: es_ES\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 2.0.6\n" #: fdmprinter.def.json msgctxt "machine_settings label" @@ -56,7 +57,9 @@ msgctxt "machine_start_gcode description" msgid "" "Gcode commands to be executed at the very start - separated by \n" "." -msgstr "Los comandos de Gcode que se ejecutarán justo al inicio - separados por \n." +msgstr "" +"Los comandos de Gcode que se ejecutarán justo al inicio - separados por \n" +"." #: fdmprinter.def.json msgctxt "machine_end_gcode label" @@ -68,7 +71,9 @@ msgctxt "machine_end_gcode description" msgid "" "Gcode commands to be executed at the very end - separated by \n" "." -msgstr "Los comandos de Gcode que se ejecutarán justo al final - separados por \n." +msgstr "" +"Los comandos de Gcode que se ejecutarán justo al final - separados por \n" +"." #: fdmprinter.def.json msgctxt "material_guid label" @@ -93,7 +98,7 @@ msgstr "Elija si desea escribir un comando para esperar a que la temperatura de #: fdmprinter.def.json msgctxt "material_print_temp_wait label" msgid "Wait for Nozzle Heatup" -msgstr "Esperar a la que la tobera se caliente" +msgstr "Esperar a que la tobera se caliente" #: fdmprinter.def.json msgctxt "material_print_temp_wait description" @@ -345,6 +350,16 @@ msgctxt "machine_gcode_flavor option Repetier" msgid "Repetier" msgstr "Repetier" +#: fdmprinter.def.json +msgctxt "machine_firmware_retract label" +msgid "Firmware Retraction" +msgstr "Retracción de firmware" + +#: fdmprinter.def.json +msgctxt "machine_firmware_retract description" +msgid "Whether to use firmware retract commands (G10/G11) instead of using the E property in G1 commands to retract the material." +msgstr "Utilizar o no los comandos de retracción de firmware (G10/G11) en lugar de utilizar la propiedad E en comandos G1 para retraer el material." + #: fdmprinter.def.json msgctxt "machine_disallowed_areas label" msgid "Disallowed areas" @@ -398,12 +413,12 @@ msgstr "Diferencia de altura entre la punta de la tobera y el sistema del puente #: fdmprinter.def.json msgctxt "machine_nozzle_id label" msgid "Nozzle ID" -msgstr "Id. de la tobera" +msgstr "ID de la tobera" #: fdmprinter.def.json msgctxt "machine_nozzle_id description" msgid "The nozzle ID for an extruder train, such as \"AA 0.4\" and \"BB 0.8\"." -msgstr "Id. de la tobera de un tren extrusor, como \"AA 0.4\" y \"BB 0.8\"." +msgstr "ID de la tobera de un tren extrusor, como \"AA 0.4\" y \"BB 0.8\"." #: fdmprinter.def.json msgctxt "machine_nozzle_size label" @@ -605,31 +620,6 @@ msgctxt "layer_height_0 description" msgid "The height of the initial layer in mm. A thicker initial layer makes adhesion to the build plate easier." msgstr "Altura de capa inicial en mm. Una capa inicial más gruesa se adhiere a la placa de impresión con mayor facilidad." -#: fdmprinter.def.json -msgctxt "slicing_tolerance label" -msgid "Slicing Tolerance" -msgstr "Tolerancia de segmentación" - -#: fdmprinter.def.json -msgctxt "slicing_tolerance description" -msgid "How to slice layers with diagonal surfaces. The areas of a layer can be generated based on where the middle of the layer intersects the surface (Middle). Alternatively each layer can have the areas which fall inside of the volume throughout the height of the layer (Exclusive) or a layer has the areas which fall inside anywhere within the layer (Inclusive). Exclusive retains the most details, Inclusive makes for the best fit and Middle takes the least time to process." -msgstr "Cómo segmentar capas con superficies diagonales. Las áreas de una capa se pueden crear según el punto en el que el centro de esta intersecta con la superficie (Media). Las capas también pueden tener áreas comprendidas en el volumen a lo largo de la altura de la capa (Exclusiva) o una capa puede tener áreas comprendidas en cualquier lugar de la capa (Inclusiva). Las capas exclusivas tienen un mayor nivel de detalle, mientras que las inclusivas son las que mejor se ajustan y las medias las que tardan menos en procesarse." - -#: fdmprinter.def.json -msgctxt "slicing_tolerance option middle" -msgid "Middle" -msgstr "Media" - -#: fdmprinter.def.json -msgctxt "slicing_tolerance option exclusive" -msgid "Exclusive" -msgstr "Exclusiva" - -#: fdmprinter.def.json -msgctxt "slicing_tolerance option inclusive" -msgid "Inclusive" -msgstr "Inclusiva" - #: fdmprinter.def.json msgctxt "line_width label" msgid "Line Width" @@ -670,16 +660,6 @@ msgctxt "wall_line_width_x description" msgid "Width of a single wall line for all wall lines except the outermost one." msgstr "Ancho de una sola línea de pared para todas las líneas de pared excepto la más externa." -#: fdmprinter.def.json -msgctxt "roofing_line_width label" -msgid "Top Surface Skin Line Width" -msgstr "Ancho de línea de la superficie superior del forro" - -#: fdmprinter.def.json -msgctxt "roofing_line_width description" -msgid "Width of a single line of the areas at the top of the print." -msgstr "Ancho de una sola línea de las áreas superiores de la impresión." - #: fdmprinter.def.json msgctxt "skin_line_width label" msgid "Top/Bottom Line Width" @@ -860,41 +840,6 @@ msgctxt "roofing_layer_count description" msgid "The number of top most skin layers. Usually only one top most layer is sufficient to generate higher quality top surfaces." msgstr "El número de capas del nivel superior del forro. Normalmente es suficiente con una sola capa para generar superficies superiores con mayor calidad." -#: fdmprinter.def.json -msgctxt "roofing_pattern label" -msgid "Top Surface Skin Pattern" -msgstr "Patrón de la superficie superior del forro" - -#: fdmprinter.def.json -msgctxt "roofing_pattern description" -msgid "The pattern of the top most layers." -msgstr "El patrón de las capas de nivel superior." - -#: fdmprinter.def.json -msgctxt "roofing_pattern option lines" -msgid "Lines" -msgstr "Líneas" - -#: fdmprinter.def.json -msgctxt "roofing_pattern option concentric" -msgid "Concentric" -msgstr "Concéntrico" - -#: fdmprinter.def.json -msgctxt "roofing_pattern option zigzag" -msgid "Zig Zag" -msgstr "Zigzag" - -#: fdmprinter.def.json -msgctxt "roofing_angles label" -msgid "Top Surface Skin Line Directions" -msgstr "Direcciones de línea de la superficie superior del forro" - -#: fdmprinter.def.json -msgctxt "roofing_angles description" -msgid "A list of integer line directions to use when the top surface skin layers use the lines or zig zag pattern. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the traditional default angles (45 and 135 degrees)." -msgstr "Una lista de los valores enteros de las direcciones de línea si las capas de la superficie superior del forro utilizan líneas o el patrón en zigzag. Los elementos de esta lista se utilizan de forma secuencial a medida que las capas se utilizan y, cuando se alcanza el final, la lista vuelve a comenzar 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 que utiliza los ángulos predeterminados típicos (45 y 135 grados)." - #: fdmprinter.def.json msgctxt "top_bottom_extruder_nr label" msgid "Top/Bottom Extruder" @@ -1025,6 +970,16 @@ msgctxt "wall_0_inset description" msgid "Inset applied to the path of the outer wall. If the outer wall is smaller than the nozzle, and printed after the inner walls, use this offset to get the hole in the nozzle to overlap with the inner walls instead of the outside of the model." msgstr "Entrante aplicado a la trayectoria de la pared exterior. Si la pared exterior es más pequeña que la tobera y se imprime a continuación de las paredes interiores, utilice este valor de desplazamiento para hacer que el agujero de la tobera se superponga a las paredes interiores del modelo en lugar de a las exteriores." +#: fdmprinter.def.json +msgctxt "optimize_wall_printing_order label" +msgid "Optimize Wall Printing Order" +msgstr "Optimizar el orden de impresión de paredes" + +#: fdmprinter.def.json +msgctxt "optimize_wall_printing_order description" +msgid "Optimize the order in which walls are printed so as to reduce the number of retractions and the distance travelled. Most parts will benefit from this being enabled but some may actually take longer so please compare the print time estimates with and without optimization." +msgstr "Optimizar el orden en el que se imprimen las paredes a fin de reducir el número de retracciones y la distancia recorrida. La mayoría de los componentes se beneficiarán si este ajuste está habilitado pero, en algunos casos, se puede tardar más, por lo que deben compararse las previsiones de tiempo de impresión con y sin optimización." + #: fdmprinter.def.json msgctxt "outer_inset_first label" msgid "Outer Before Inner Walls" @@ -1053,7 +1008,7 @@ msgstr "Compensar superposiciones de pared" #: fdmprinter.def.json msgctxt "travel_compensate_overlapping_walls_enabled description" msgid "Compensate the flow for parts of a wall being printed where there is already a wall in place." -msgstr "Compensa el flujo en partes de una pared que se están imprimiendo dónde ya hay una pared." +msgstr "Compensa el flujo en partes de una pared que se están imprimiendo donde ya hay una pared." #: fdmprinter.def.json msgctxt "travel_compensate_overlapping_walls_0_enabled label" @@ -1095,6 +1050,16 @@ msgctxt "fill_perimeter_gaps option everywhere" msgid "Everywhere" msgstr "En todas partes" +#: fdmprinter.def.json +msgctxt "filter_out_tiny_gaps label" +msgid "Filter Out Tiny Gaps" +msgstr "Filtrar pequeños huecos" + +#: fdmprinter.def.json +msgctxt "filter_out_tiny_gaps description" +msgid "Filter out tiny gaps to reduce blobs on outside of model." +msgstr "Filtrar pequeños huecos para reducir las gotas en la parte externa del modelo." + #: fdmprinter.def.json msgctxt "fill_outline_gaps label" msgid "Print Thin Walls" @@ -1383,7 +1348,7 @@ msgstr "Patrón de relleno" #: fdmprinter.def.json msgctxt "infill_pattern description" msgid "The pattern of the infill material of the print. The line and zig zag infill swap direction on alternate layers, reducing material cost. The grid, triangle, tri-hexagon, cubic, octet, quarter cubic, cross and concentric patterns are fully printed every layer. Cubic, quarter cubic and octet infill change with every layer to provide a more equal distribution of strength over each direction." -msgstr "Patrón del material de relleno de la impresión. El relleno de línea y zigzag cambia de dirección en capas alternas, con lo que se reduce el coste del material. Los patrones de rejilla, triángulo, trihexagonal, cúbico, de octeto, cúbico bitruncado y transversal y concéntrico se imprimen en todas las capas por completo. El relleno cúbico, cúbico bitruncado y de octeto cambian en cada capa para proporcionar una distribución de fuerza equitativa en cada dirección." +msgstr "Patrón del material de relleno de la impresión. El relleno de línea y zigzag cambia de dirección en capas alternas, con lo que se reduce el coste del material. Los patrones de rejilla, triángulo, trihexagonal, cúbico, octeto, cúbico bitruncado y transversal y concéntrico se imprimen en todas las capas por completo. El relleno cúbico, cúbico bitruncado y octeto cambian en cada capa para proporcionar una distribución de fuerza equitativa en cada dirección." #: fdmprinter.def.json msgctxt "infill_pattern option grid" @@ -1477,8 +1442,8 @@ msgstr "Desplazamiento del relleno sobre el eje X" #: fdmprinter.def.json msgctxt "infill_offset_x description" -msgid "The infill pattern is offset this distance along the X axis." -msgstr "El patrón de relleno se desplaza esta distancia a lo largo del eje X." +msgid "The infill pattern is moved this distance along the X axis." +msgstr "El patrón de relleno se mueve esta distancia a lo largo del eje X." #: fdmprinter.def.json msgctxt "infill_offset_y label" @@ -1487,8 +1452,8 @@ msgstr "Desplazamiento del relleno sobre el eje X" #: fdmprinter.def.json msgctxt "infill_offset_y description" -msgid "The infill pattern is offset this distance along the Y axis." -msgstr "El patrón de relleno se desplaza esta distancia a lo largo del eje Y." +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 "sub_div_rad_add label" @@ -1507,8 +1472,8 @@ msgstr "Porcentaje de superposición del relleno" #: fdmprinter.def.json msgctxt "infill_overlap 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." +msgid "The amount of overlap between the infill and the walls as a percentage of the infill line width. A slight overlap allows the walls to connect firmly to the infill." +msgstr "La cantidad de superposición entre el relleno y las paredes son un porcentaje del ancho de la línea de relleno. Una ligera superposición permite que las paredes estén firmemente unidas al relleno." #: fdmprinter.def.json msgctxt "infill_overlap_mm label" @@ -1527,8 +1492,8 @@ msgstr "Porcentaje de superposición del forro" #: fdmprinter.def.json msgctxt "skin_overlap description" -msgid "The amount of overlap between the skin and the walls as a percentage of the line width. A slight overlap allows the walls to connect firmly to the skin. This is a percentage of the average line widths of the skin lines and the innermost wall." -msgstr "Cantidad de superposición entre el forro y las paredes como porcentaje del ancho de línea. Una ligera superposición permite que las paredes conecten firmemente con el forro. Este es el porcentaje de la media de los anchos de las líneas del forro y la pared más profunda." +msgid "The amount of overlap between the skin and the walls as a percentage of the skin line width. A slight overlap allows the walls to connect firmly to the skin. This is a percentage of the average line widths of the skin lines and the innermost wall." +msgstr "La cantidad de superposición entre el forro y las paredes son un porcentaje del ancho de la línea de forro. Una ligera superposición permite que las paredes estén firmemente unidas al forro. Este es el porcentaje de la media de los anchos de las líneas del forro y la pared más profunda." #: fdmprinter.def.json msgctxt "skin_overlap_mm label" @@ -1690,16 +1655,6 @@ msgctxt "material description" msgid "Material" msgstr "Material" -#: fdmprinter.def.json -msgctxt "material_flow_dependent_temperature label" -msgid "Auto Temperature" -msgstr "Temperatura automática" - -#: fdmprinter.def.json -msgctxt "material_flow_dependent_temperature description" -msgid "Change the temperature for each layer automatically with the average flow speed of that layer." -msgstr "Cambia automáticamente la temperatura para cada capa con la velocidad media de flujo de esa capa." - #: fdmprinter.def.json msgctxt "default_material_print_temperature label" msgid "Default Printing Temperature" @@ -1750,16 +1705,6 @@ msgctxt "material_final_print_temperature description" msgid "The temperature to which to already start cooling down just before the end of printing." msgstr "La temperatura a la que se puede empezar a enfriar justo antes de finalizar la impresión." -#: fdmprinter.def.json -msgctxt "material_flow_temp_graph label" -msgid "Flow Temperature Graph" -msgstr "Gráfico de flujo y temperatura" - -#: fdmprinter.def.json -msgctxt "material_flow_temp_graph description" -msgid "Data linking material flow (in mm3 per second) to temperature (degrees Celsius)." -msgstr "Datos que vinculan el flujo de materiales (en 3 mm por segundo) a la temperatura (grados centígrados)." - #: fdmprinter.def.json msgctxt "material_extrusion_cool_down_speed label" msgid "Extrusion Cool Down Speed Modifier" @@ -1777,8 +1722,8 @@ msgstr "Temperatura de la placa de impresión" #: fdmprinter.def.json msgctxt "material_bed_temperature description" -msgid "The temperature used for the heated build plate. If this is 0, the bed will not heat up for this print." -msgstr "Temperatura de la placa de impresión una vez caliente. Si el valor es 0, la plataforma no se calentará en esta impresión." +msgid "The temperature used for the heated build plate. If this is 0, the bed temperature will not be adjusted." +msgstr "La temperatura utilizada para la placa de impresión caliente. Si el valor es 0, la temperatura de la plataforma no se ajustará." #: fdmprinter.def.json msgctxt "material_bed_temperature_layer_0 label" @@ -1848,7 +1793,7 @@ msgstr "Retracción en el cambio de capa" #: fdmprinter.def.json msgctxt "retract_at_layer_change description" msgid "Retract the filament when the nozzle is moving to the next layer." -msgstr "Retrae el filamento cuando la tobera se mueve a la siguiente capa. " +msgstr "Retrae el filamento cuando la tobera se mueve a la siguiente capa." #: fdmprinter.def.json msgctxt "retraction_amount label" @@ -3450,6 +3395,16 @@ msgctxt "support_tower_roof_angle description" msgid "The angle of a rooftop of a tower. A higher value results in pointed tower roofs, a lower value results in flattened tower roofs." msgstr "Ángulo del techo superior de una torre. Un valor más alto da como resultado techos de torre en punta, un valor más bajo da como resultado techos de torre planos." +#: fdmprinter.def.json +msgctxt "support_mesh_drop_down label" +msgid "Drop Down Support Mesh" +msgstr "Malla de soporte desplegable" + +#: fdmprinter.def.json +msgctxt "support_mesh_drop_down description" +msgid "Make support everywhere below the support mesh, so that there's no overhang in the support mesh." +msgstr "Disponga un soporte en todas partes por debajo de la malla de soporte, para que no haya voladizo en la malla de soporte." + #: fdmprinter.def.json msgctxt "platform_adhesion label" msgid "Build Plate Adhesion" @@ -3550,7 +3505,9 @@ msgctxt "skirt_gap description" msgid "" "The horizontal distance between the skirt and the first layer of the print.\n" "This is the minimum distance. Multiple skirt lines will extend outwards from this distance." -msgstr "La distancia horizontal entre la falda y la primera capa de la impresión.\nSe trata de la distancia mínima. Múltiples líneas de falda se extenderán hacia el exterior a partir de esta distancia." +msgstr "" +"La distancia horizontal entre la falda y la primera capa de la impresión.\n" +"Se trata de la distancia mínima. Múltiples líneas de falda se extenderán hacia el exterior a partir de esta distancia." #: fdmprinter.def.json msgctxt "skirt_brim_minimal_length label" @@ -4082,16 +4039,6 @@ msgctxt "meshfix_keep_open_polygons description" msgid "Normally Cura tries to stitch up small holes in the mesh and remove parts of a layer with big holes. Enabling this option keeps those parts which cannot be stitched. This option should be used as a last resort option when everything else fails to produce proper GCode." msgstr "Normalmente, Cura intenta coser los pequeños agujeros de la malla y eliminar las partes de una capa con grandes agujeros. Al habilitar esta opción se mantienen aquellas partes que no puedan coserse. Esta opción se debe utilizar como una opción de último recurso cuando todo lo demás falla para producir un GCode adecuado." -#: 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 "multiple_mesh_overlap label" msgid "Merged Meshes Overlap" @@ -4242,16 +4189,6 @@ msgctxt "support_mesh description" msgid "Use this mesh to specify support areas. This can be used to generate support structure." msgstr "Utilice esta malla para especificar las áreas de soporte. Esta opción puede utilizarse para generar estructuras de soporte." -#: fdmprinter.def.json -msgctxt "support_mesh_drop_down label" -msgid "Drop Down Support Mesh" -msgstr "Malla de soporte desplegable" - -#: fdmprinter.def.json -msgctxt "support_mesh_drop_down description" -msgid "Make support everywhere below the support mesh, so that there's no overhang in the support mesh." -msgstr "Disponga un soporte en todas partes por debajo de la malla de soporte, para que no haya voladizo en la malla de soporte." - #: fdmprinter.def.json msgctxt "anti_overhang_mesh label" msgid "Anti Overhang Mesh" @@ -4328,14 +4265,194 @@ msgid "experimental!" msgstr "Experimental" #: fdmprinter.def.json -msgctxt "optimize_wall_printing_order label" -msgid "Optimize Wall Printing Order" -msgstr "Optimizar el orden de impresión de paredes" +msgctxt "support_tree_enable label" +msgid "Tree Support" +msgstr "Soporte en árbol" #: fdmprinter.def.json -msgctxt "optimize_wall_printing_order description" -msgid "Optimize the order in which walls are printed so as to reduce the number of retractions and the distance travelled. Most parts will benefit from this being enabled but some may actually take longer so please compare the print time estimates with and without optimization." -msgstr "Optimizar el orden en el que se imprimen las paredes a fin de reducir el número de retracciones y la distancia recorrida. La mayoría de los componentes se beneficiarán si este ajuste está habilitado pero, en algunos casos, se puede tardar más, por lo que deben compararse las previsiones de tiempo de impresión con y sin optimización." +msgctxt "support_tree_enable description" +msgid "Generate a tree-like support with branches that support your print. This may reduce material usage and print time, but greatly increases slicing time." +msgstr "Generar un soporte en forma de árbol con ramas que apoyan la impresión. Esto puede reducir el uso de material y el tiempo de impresión, pero aumenta considerablemente el tiempo de fragmentación." + +#: fdmprinter.def.json +msgctxt "support_tree_angle label" +msgid "Tree Support Branch Angle" +msgstr "Ángulo de las ramas del soporte en árbol" + +#: fdmprinter.def.json +msgctxt "support_tree_angle description" +msgid "The angle of the branches. Use a lower angle to make them more vertical and more stable. Use a higher angle to be able to have more reach." +msgstr "El ángulo de las ramas. Utilice un ángulo inferior para que sean más verticales y estables. Utilice un ángulo superior para poder tener más alcance." + +#: fdmprinter.def.json +msgctxt "support_tree_branch_distance label" +msgid "Tree Support Branch Distance" +msgstr "Distancia de las ramas del soporte en árbol" + +#: fdmprinter.def.json +msgctxt "support_tree_branch_distance description" +msgid "How far apart the branches need to be when they touch the model. Making this distance small will cause the tree support to touch the model at more points, causing better overhang but making support harder to remove." +msgstr "Qué separación deben tener las ramas cuando tocan el modelo. Reducir esta distancia ocasionará que el soporte en árbol toque el modelo en más puntos, produciendo mejor cobertura pero dificultando la tarea de retirar el soporte." + +#: fdmprinter.def.json +msgctxt "support_tree_branch_diameter label" +msgid "Tree Support Branch Diameter" +msgstr "Diámetro de las ramas del soporte en árbol" + +#: fdmprinter.def.json +msgctxt "support_tree_branch_diameter description" +msgid "The diameter of the thinnest branches of tree support. Thicker branches are more sturdy. Branches towards the base will be thicker than this." +msgstr "El diámetro de las ramas más finas del soporte en árbol. Cuanto más gruesas sean las ramas, más robustas serán. Las ramas que estén cerca de la base serán más gruesas que esto." + +#: fdmprinter.def.json +msgctxt "support_tree_branch_diameter_angle label" +msgid "Tree Support Branch Diameter Angle" +msgstr "Ángulo de diámetro de las ramas del soporte en árbol" + +#: fdmprinter.def.json +msgctxt "support_tree_branch_diameter_angle description" +msgid "The angle of the branches' diameter as they gradually become thicker towards the bottom. An angle of 0 will cause the branches to have uniform thickness over their length. A bit of an angle can increase stability of the tree support." +msgstr "El ángulo del diámetro de las ramas es gradualmente más alto según se acercan a la base. Un ángulo de 0 ocasionará que las ramas tengan un grosor uniforme en toda su longitud. Un poco de ángulo puede aumentar la estabilidad del soporte en árbol." + +#: fdmprinter.def.json +msgctxt "support_tree_collision_resolution label" +msgid "Tree Support Collision Resolution" +msgstr "Resolución de colisión del soporte en árbol" + +#: fdmprinter.def.json +msgctxt "support_tree_collision_resolution description" +msgid "Resolution to compute collisions with to avoid hitting the model. Setting this lower will produce more accurate trees that fail less often, but increases slicing time dramatically." +msgstr "Resolución para computar colisiones para evitar golpear el modelo. Establecer un ajuste bajo producirá árboles más precisos que producen fallos con menor frecuencia, pero aumenta significativamente el tiempo de fragmentación." + +#: fdmprinter.def.json +msgctxt "support_tree_wall_thickness label" +msgid "Tree Support Wall Thickness" +msgstr "Grosor de las paredes del soporte en árbol" + +#: fdmprinter.def.json +msgctxt "support_tree_wall_thickness description" +msgid "The thickness of the walls of the branches of tree support. Thicker walls take longer to print but don't fall over as easily." +msgstr "El grosor de las paredes de las ramas del soporte en árbol. Imprimir paredes más gruesas llevará más tiempo pero no se caerán tan fácilmente." + +#: fdmprinter.def.json +msgctxt "support_tree_wall_count label" +msgid "Tree Support Wall Line Count" +msgstr "Recuento de líneas de pared del soporte en árbol" + +#: fdmprinter.def.json +msgctxt "support_tree_wall_count description" +msgid "The number of walls of the branches of tree support. Thicker walls take longer to print but don't fall over as easily." +msgstr "El número de las paredes de las ramas del soporte en árbol. Imprimir paredes más gruesas llevará más tiempo pero no se caerán tan fácilmente." + +#: fdmprinter.def.json +msgctxt "slicing_tolerance label" +msgid "Slicing Tolerance" +msgstr "Tolerancia de segmentación" + +#: fdmprinter.def.json +msgctxt "slicing_tolerance description" +msgid "How to slice layers with diagonal surfaces. The areas of a layer can be generated based on where the middle of the layer intersects the surface (Middle). Alternatively each layer can have the areas which fall inside of the volume throughout the height of the layer (Exclusive) or a layer has the areas which fall inside anywhere within the layer (Inclusive). Exclusive retains the most details, Inclusive makes for the best fit and Middle takes the least time to process." +msgstr "Cómo segmentar capas con superficies diagonales. Las áreas de una capa se pueden crear según el punto en el que el centro de esta intersecta con la superficie (Media). Las capas también pueden tener áreas comprendidas en el volumen a lo largo de la altura de la capa (Exclusiva) o una capa puede tener áreas comprendidas en cualquier lugar de la capa (Inclusiva). Las capas exclusivas tienen un mayor nivel de detalle, mientras que las inclusivas son las que mejor se ajustan y las medias las que tardan menos en procesarse." + +#: fdmprinter.def.json +msgctxt "slicing_tolerance option middle" +msgid "Middle" +msgstr "Media" + +#: fdmprinter.def.json +msgctxt "slicing_tolerance option exclusive" +msgid "Exclusive" +msgstr "Exclusiva" + +#: fdmprinter.def.json +msgctxt "slicing_tolerance option inclusive" +msgid "Inclusive" +msgstr "Inclusiva" + +#: fdmprinter.def.json +msgctxt "roofing_line_width label" +msgid "Top Surface Skin Line Width" +msgstr "Ancho de línea de la superficie superior del forro" + +#: fdmprinter.def.json +msgctxt "roofing_line_width description" +msgid "Width of a single line of the areas at the top of the print." +msgstr "Ancho de una sola línea de las áreas superiores de la impresión." + +#: fdmprinter.def.json +msgctxt "roofing_pattern label" +msgid "Top Surface Skin Pattern" +msgstr "Patrón de la superficie superior del forro" + +#: fdmprinter.def.json +msgctxt "roofing_pattern description" +msgid "The pattern of the top most layers." +msgstr "El patrón de las capas de nivel superior." + +#: fdmprinter.def.json +msgctxt "roofing_pattern option lines" +msgid "Lines" +msgstr "Líneas" + +#: fdmprinter.def.json +msgctxt "roofing_pattern option concentric" +msgid "Concentric" +msgstr "Concéntrico" + +#: fdmprinter.def.json +msgctxt "roofing_pattern option zigzag" +msgid "Zig Zag" +msgstr "Zigzag" + +#: fdmprinter.def.json +msgctxt "roofing_angles label" +msgid "Top Surface Skin Line Directions" +msgstr "Direcciones de línea de la superficie superior del forro" + +#: fdmprinter.def.json +msgctxt "roofing_angles description" +msgid "A list of integer line directions to use when the top surface skin layers use the lines or zig zag pattern. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the traditional default angles (45 and 135 degrees)." +msgstr "Una lista de los valores enteros de las direcciones de línea si las capas de la superficie superior del forro utilizan líneas o el patrón en zigzag. Los elementos de esta lista se utilizan de forma secuencial a medida que las capas se utilizan y, cuando se alcanza el final, la lista vuelve a comenzar 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 que utiliza los ángulos predeterminados típicos (45 y 135 grados)." + +#: fdmprinter.def.json +msgctxt "infill_enable_travel_optimization label" +msgid "Infill Travel Optimization" +msgstr "Optimización del desplazamiento del relleno" + +#: fdmprinter.def.json +msgctxt "infill_enable_travel_optimization description" +msgid "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." +msgstr "Cuando está habilitado, se optimiza el orden en el que se imprimen las líneas de relleno para reducir la distancia de desplazamiento. La reducción del tiempo de desplazamiento obtenido depende en gran parte del modelo que se está fragmentando, el patrón de relleno, la densidad, etc. Tenga en cuenta que, para algunos modelos que tienen pequeñas áreas de relleno, el tiempo para fragmentar el modelo se puede aumentar en gran medida." + +#: fdmprinter.def.json +msgctxt "material_flow_dependent_temperature label" +msgid "Auto Temperature" +msgstr "Temperatura automática" + +#: fdmprinter.def.json +msgctxt "material_flow_dependent_temperature description" +msgid "Change the temperature for each layer automatically with the average flow speed of that layer." +msgstr "Cambia automáticamente la temperatura para cada capa con la velocidad media de flujo de esa capa." + +#: fdmprinter.def.json +msgctxt "material_flow_temp_graph label" +msgid "Flow Temperature Graph" +msgstr "Gráfico de flujo y temperatura" + +#: fdmprinter.def.json +msgctxt "material_flow_temp_graph description" +msgid "Data linking material flow (in mm3 per second) to temperature (degrees Celsius)." +msgstr "Datos que vinculan el flujo de materiales (en 3 mm por segundo) a la temperatura (grados centígrados)." + +#: 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 "support_skip_some_zags label" @@ -4827,7 +4944,9 @@ msgctxt "wireframe_up_half_speed description" msgid "" "Distance of an upward move which is extruded with half speed.\n" "This can cause better adhesion to previous layers, while not heating the material in those layers too much. Only applies to Wire Printing." -msgstr "Distancia de un movimiento ascendente que se extrude a media velocidad.\nEsto puede causar una mejor adherencia a las capas anteriores, aunque no calienta demasiado el material en esas capas. Solo se aplica a la impresión de alambre." +msgstr "" +"Distancia de un movimiento ascendente que se extrude a media velocidad.\n" +"Esto puede causar una mejor adherencia a las capas anteriores, aunque no calienta demasiado el material en esas capas. Solo se aplica a la impresión de alambre." #: fdmprinter.def.json msgctxt "wireframe_top_jump label" @@ -4934,6 +5053,46 @@ msgctxt "wireframe_nozzle_clearance description" msgid "Distance between the nozzle and horizontally downward lines. Larger clearance results in diagonally downward lines with a less steep angle, which in turn results in less upward connections with the next layer. Only applies to Wire Printing." msgstr "Distancia entre la tobera y líneas descendentes en horizontal. Cuanto mayor sea la holgura, menos pronunciado será el ángulo de las líneas descendentes en diagonal, lo que a su vez se traduce en menos conexiones ascendentes con la siguiente capa. Solo se aplica a la impresión de alambre." +#: fdmprinter.def.json +msgctxt "adaptive_layer_height_enabled label" +msgid "Use adaptive layers" +msgstr "Utilizar capas de adaptación" + +#: fdmprinter.def.json +msgctxt "adaptive_layer_height_enabled description" +msgid "Adaptive layers computes the layer heights depending on the shape of the model." +msgstr "Las capas de adaptación calculan las alturas de las capas dependiendo de la forma del modelo." + +#: fdmprinter.def.json +msgctxt "adaptive_layer_height_variation label" +msgid "Adaptive layers maximum variation" +msgstr "Variación máxima de las capas de adaptación" + +#: fdmprinter.def.json +msgctxt "adaptive_layer_height_variation description" +msgid "The maximum allowed height different from the base layer height in mm." +msgstr "La diferencia de altura máxima permitida en comparación con la altura de la capa base en mm." + +#: fdmprinter.def.json +msgctxt "adaptive_layer_height_variation_step label" +msgid "Adaptive layers variation step size" +msgstr "Tamaño de pasos de variación de las capas de adaptación" + +#: fdmprinter.def.json +msgctxt "adaptive_layer_height_variation_step description" +msgid "The difference in height of the next layer height compared to the previous one." +msgstr "La diferencia de altura de la siguiente altura de capa en comparación con la anterior." + +#: fdmprinter.def.json +msgctxt "adaptive_layer_height_threshold label" +msgid "Adaptive layers threshold" +msgstr "Umbral 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." + #: fdmprinter.def.json msgctxt "command_line_settings label" msgid "Command Line Settings" @@ -4994,6 +5153,26 @@ 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 "infill_offset_x description" +#~ msgid "The infill pattern is offset this distance along the X axis." +#~ msgstr "El patrón de relleno se desplaza esta distancia a lo largo del eje X." + +#~ msgctxt "infill_offset_y description" +#~ msgid "The infill pattern is offset this distance along the Y axis." +#~ msgstr "El patrón de relleno se desplaza esta distancia a lo largo del eje Y." + +#~ msgctxt "infill_overlap 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." + +#~ msgctxt "skin_overlap description" +#~ msgid "The amount of overlap between the skin and the walls as a percentage of the line width. A slight overlap allows the walls to connect firmly to the skin. This is a percentage of the average line widths of the skin lines and the innermost wall." +#~ msgstr "Cantidad de superposición entre el forro y las paredes como porcentaje del ancho de línea. Una ligera superposición permite que las paredes conecten firmemente con el forro. Este es el porcentaje de la media de los anchos de las líneas del forro y la pared más profunda." + +#~ msgctxt "material_bed_temperature description" +#~ msgid "The temperature used for the heated build plate. If this is 0, the bed will not heat up for this print." +#~ msgstr "Temperatura de la placa de impresión una vez caliente. Si el valor es 0, la plataforma no se calentará en esta impresión." + #~ msgctxt "wall_x_extruder_nr label" #~ msgid "Inner Walls Extruder" #~ msgstr "Extrusor de paredes interiores" diff --git a/resources/i18n/fdmextruder.def.json.pot b/resources/i18n/fdmextruder.def.json.pot index af77729254..454d324874 100644 --- a/resources/i18n/fdmextruder.def.json.pot +++ b/resources/i18n/fdmextruder.def.json.pot @@ -1,11 +1,11 @@ # Cura JSON setting files -# Copyright (C) 2017 Ultimaker +# Copyright (C) 2018 Ultimaker # This file is distributed under the same license as the Cura package. -# Ruben Dulek , 2017. +# Ruben Dulek , 2018. # msgid "" msgstr "" -"Project-Id-Version: Cura 3.1\n" +"Project-Id-Version: Cura 3.2\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" "POT-Creation-Date: 2017-08-02 16:53+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" diff --git a/resources/i18n/fdmprinter.def.json.pot b/resources/i18n/fdmprinter.def.json.pot index 9d5ef93fc3..126c02a207 100644 --- a/resources/i18n/fdmprinter.def.json.pot +++ b/resources/i18n/fdmprinter.def.json.pot @@ -1,11 +1,11 @@ # Cura JSON setting files -# Copyright (C) 2017 Ultimaker +# Copyright (C) 2018 Ultimaker # This file is distributed under the same license as the Cura package. -# Ruben Dulek , 2017. +# Ruben Dulek , 2018. # msgid "" msgstr "" -"Project-Id-Version: Cura 3.1\n" +"Project-Id-Version: Cura 3.2\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" "POT-Creation-Date: 2017-08-02 16:53+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" @@ -377,6 +377,18 @@ msgctxt "machine_gcode_flavor option Repetier" msgid "Repetier" msgstr "" +#: fdmprinter.def.json +msgctxt "machine_firmware_retract label" +msgid "Firmware Retraction" +msgstr "" + +#: fdmprinter.def.json +msgctxt "machine_firmware_retract description" +msgid "" +"Whether to use firmware retract commands (G10/G11) instead of using the E " +"property in G1 commands to retract the material." +msgstr "" + #: fdmprinter.def.json msgctxt "machine_disallowed_areas label" msgid "Disallowed areas" @@ -651,38 +663,6 @@ msgid "" "adhesion to the build plate easier." msgstr "" -#: fdmprinter.def.json -msgctxt "slicing_tolerance label" -msgid "Slicing Tolerance" -msgstr "" - -#: fdmprinter.def.json -msgctxt "slicing_tolerance description" -msgid "" -"How to slice layers with diagonal surfaces. The areas of a layer can be " -"generated based on where the middle of the layer intersects the surface " -"(Middle). Alternatively each layer can have the areas which fall inside of " -"the volume throughout the height of the layer (Exclusive) or a layer has the " -"areas which fall inside anywhere within the layer (Inclusive). Exclusive " -"retains the most details, Inclusive makes for the best fit and Middle takes " -"the least time to process." -msgstr "" - -#: fdmprinter.def.json -msgctxt "slicing_tolerance option middle" -msgid "Middle" -msgstr "" - -#: fdmprinter.def.json -msgctxt "slicing_tolerance option exclusive" -msgid "Exclusive" -msgstr "" - -#: fdmprinter.def.json -msgctxt "slicing_tolerance option inclusive" -msgid "Inclusive" -msgstr "" - #: fdmprinter.def.json msgctxt "line_width label" msgid "Line Width" @@ -729,16 +709,6 @@ msgid "" "Width of a single wall line for all wall lines except the outermost one." msgstr "" -#: fdmprinter.def.json -msgctxt "roofing_line_width label" -msgid "Top Surface Skin Line Width" -msgstr "" - -#: fdmprinter.def.json -msgctxt "roofing_line_width description" -msgid "Width of a single line of the areas at the top of the print." -msgstr "" - #: fdmprinter.def.json msgctxt "skin_line_width label" msgid "Top/Bottom Line Width" @@ -937,47 +907,6 @@ msgid "" "sufficient to generate higher quality top surfaces." msgstr "" -#: fdmprinter.def.json -msgctxt "roofing_pattern label" -msgid "Top Surface Skin Pattern" -msgstr "" - -#: fdmprinter.def.json -msgctxt "roofing_pattern description" -msgid "The pattern of the top most layers." -msgstr "" - -#: fdmprinter.def.json -msgctxt "roofing_pattern option lines" -msgid "Lines" -msgstr "" - -#: fdmprinter.def.json -msgctxt "roofing_pattern option concentric" -msgid "Concentric" -msgstr "" - -#: fdmprinter.def.json -msgctxt "roofing_pattern option zigzag" -msgid "Zig Zag" -msgstr "" - -#: fdmprinter.def.json -msgctxt "roofing_angles label" -msgid "Top Surface Skin Line Directions" -msgstr "" - -#: fdmprinter.def.json -msgctxt "roofing_angles description" -msgid "" -"A list of integer line directions to use when the top surface skin layers " -"use the lines or zig zag pattern. Elements from the list are used " -"sequentially as the layers progress and when the end of the list is reached, " -"it starts at the beginning again. The list items are separated by commas and " -"the whole list is contained in square brackets. Default is an empty list " -"which means use the traditional default angles (45 and 135 degrees)." -msgstr "" - #: fdmprinter.def.json msgctxt "top_bottom_extruder_nr label" msgid "Top/Bottom Extruder" @@ -1130,6 +1059,20 @@ msgid "" "outside of the model." msgstr "" +#: fdmprinter.def.json +msgctxt "optimize_wall_printing_order label" +msgid "Optimize Wall Printing Order" +msgstr "" + +#: fdmprinter.def.json +msgctxt "optimize_wall_printing_order description" +msgid "" +"Optimize the order in which walls are printed so as to reduce the number of " +"retractions and the distance travelled. Most parts will benefit from this " +"being enabled but some may actually take longer so please compare the print " +"time estimates with and without optimization." +msgstr "" + #: fdmprinter.def.json msgctxt "outer_inset_first label" msgid "Outer Before Inner Walls" @@ -1212,6 +1155,16 @@ msgctxt "fill_perimeter_gaps option everywhere" msgid "Everywhere" msgstr "" +#: fdmprinter.def.json +msgctxt "filter_out_tiny_gaps label" +msgid "Filter Out Tiny Gaps" +msgstr "" + +#: fdmprinter.def.json +msgctxt "filter_out_tiny_gaps description" +msgid "Filter out tiny gaps to reduce blobs on outside of model." +msgstr "" + #: fdmprinter.def.json msgctxt "fill_outline_gaps label" msgid "Print Thin Walls" @@ -1656,7 +1609,7 @@ msgstr "" #: fdmprinter.def.json msgctxt "infill_offset_x description" -msgid "The infill pattern is offset this distance along the X axis." +msgid "The infill pattern is moved this distance along the X axis." msgstr "" #: fdmprinter.def.json @@ -1666,7 +1619,7 @@ msgstr "" #: fdmprinter.def.json msgctxt "infill_offset_y description" -msgid "The infill pattern is offset this distance along the Y axis." +msgid "The infill pattern is moved this distance along the Y axis." msgstr "" #: fdmprinter.def.json @@ -1691,8 +1644,9 @@ msgstr "" #: fdmprinter.def.json msgctxt "infill_overlap description" msgid "" -"The amount of overlap between the infill and the walls. A slight overlap " -"allows the walls to connect firmly to the infill." +"The amount of overlap between the infill and the walls as a percentage of " +"the infill line width. A slight overlap allows the walls to connect firmly " +"to the infill." msgstr "" #: fdmprinter.def.json @@ -1716,9 +1670,9 @@ msgstr "" msgctxt "skin_overlap description" msgid "" "The amount of overlap between the skin and the walls as a percentage of the " -"line width. A slight overlap allows the walls to connect firmly to the skin. " -"This is a percentage of the average line widths of the skin lines and the " -"innermost wall." +"skin line width. A slight overlap allows the walls to connect firmly to the " +"skin. This is a percentage of the average line widths of the skin lines and " +"the innermost wall." msgstr "" #: fdmprinter.def.json @@ -1927,18 +1881,6 @@ msgctxt "material description" msgid "Material" msgstr "" -#: fdmprinter.def.json -msgctxt "material_flow_dependent_temperature label" -msgid "Auto Temperature" -msgstr "" - -#: fdmprinter.def.json -msgctxt "material_flow_dependent_temperature description" -msgid "" -"Change the temperature for each layer automatically with the average flow " -"speed of that layer." -msgstr "" - #: fdmprinter.def.json msgctxt "default_material_print_temperature label" msgid "Default Printing Temperature" @@ -1998,18 +1940,6 @@ msgid "" "of printing." msgstr "" -#: fdmprinter.def.json -msgctxt "material_flow_temp_graph label" -msgid "Flow Temperature Graph" -msgstr "" - -#: fdmprinter.def.json -msgctxt "material_flow_temp_graph description" -msgid "" -"Data linking material flow (in mm3 per second) to temperature (degrees " -"Celsius)." -msgstr "" - #: fdmprinter.def.json msgctxt "material_extrusion_cool_down_speed label" msgid "Extrusion Cool Down Speed Modifier" @@ -2030,8 +1960,8 @@ msgstr "" #: fdmprinter.def.json msgctxt "material_bed_temperature description" msgid "" -"The temperature used for the heated build plate. If this is 0, the bed will " -"not heat up for this print." +"The temperature used for the heated build plate. If this is 0, the bed " +"temperature will not be adjusted." msgstr "" #: fdmprinter.def.json @@ -3962,6 +3892,18 @@ msgid "" "roofs, a lower value results in flattened tower roofs." msgstr "" +#: fdmprinter.def.json +msgctxt "support_mesh_drop_down label" +msgid "Drop Down Support Mesh" +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_mesh_drop_down description" +msgid "" +"Make support everywhere below the support mesh, so that there's no overhang " +"in the support mesh." +msgstr "" + #: fdmprinter.def.json msgctxt "platform_adhesion label" msgid "Build Plate Adhesion" @@ -4699,20 +4641,6 @@ msgid "" "everything else fails to produce proper GCode." 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 "multiple_mesh_overlap label" msgid "Merged Meshes Overlap" @@ -4897,18 +4825,6 @@ msgid "" "structure." msgstr "" -#: fdmprinter.def.json -msgctxt "support_mesh_drop_down label" -msgid "Drop Down Support Mesh" -msgstr "" - -#: fdmprinter.def.json -msgctxt "support_mesh_drop_down description" -msgid "" -"Make support everywhere below the support mesh, so that there's no overhang " -"in the support mesh." -msgstr "" - #: fdmprinter.def.json msgctxt "anti_overhang_mesh label" msgid "Anti Overhang Mesh" @@ -5005,17 +4921,239 @@ msgid "experimental!" msgstr "" #: fdmprinter.def.json -msgctxt "optimize_wall_printing_order label" -msgid "Optimize Wall Printing Order" +msgctxt "support_tree_enable label" +msgid "Tree Support" msgstr "" #: fdmprinter.def.json -msgctxt "optimize_wall_printing_order description" +msgctxt "support_tree_enable description" msgid "" -"Optimize the order in which walls are printed so as to reduce the number of " -"retractions and the distance travelled. Most parts will benefit from this " -"being enabled but some may actually take longer so please compare the print " -"time estimates with and without optimization." +"Generate a tree-like support with branches that support your print. This may " +"reduce material usage and print time, but greatly increases slicing time." +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_tree_angle label" +msgid "Tree Support Branch Angle" +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_tree_angle description" +msgid "" +"The angle of the branches. Use a lower angle to make them more vertical and " +"more stable. Use a higher angle to be able to have more reach." +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_tree_branch_distance label" +msgid "Tree Support Branch Distance" +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_tree_branch_distance description" +msgid "" +"How far apart the branches need to be when they touch the model. Making this " +"distance small will cause the tree support to touch the model at more " +"points, causing better overhang but making support harder to remove." +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_tree_branch_diameter label" +msgid "Tree Support Branch Diameter" +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_tree_branch_diameter description" +msgid "" +"The diameter of the thinnest branches of tree support. Thicker branches are " +"more sturdy. Branches towards the base will be thicker than this." +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_tree_branch_diameter_angle label" +msgid "Tree Support Branch Diameter Angle" +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_tree_branch_diameter_angle description" +msgid "" +"The angle of the branches' diameter as they gradually become thicker towards " +"the bottom. An angle of 0 will cause the branches to have uniform thickness " +"over their length. A bit of an angle can increase stability of the tree " +"support." +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_tree_collision_resolution label" +msgid "Tree Support Collision Resolution" +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_tree_collision_resolution description" +msgid "" +"Resolution to compute collisions with to avoid hitting the model. Setting " +"this lower will produce more accurate trees that fail less often, but " +"increases slicing time dramatically." +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_tree_wall_thickness label" +msgid "Tree Support Wall Thickness" +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_tree_wall_thickness description" +msgid "" +"The thickness of the walls of the branches of tree support. Thicker walls " +"take longer to print but don't fall over as easily." +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_tree_wall_count label" +msgid "Tree Support Wall Line Count" +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_tree_wall_count description" +msgid "" +"The number of walls of the branches of tree support. Thicker walls take " +"longer to print but don't fall over as easily." +msgstr "" + +#: fdmprinter.def.json +msgctxt "slicing_tolerance label" +msgid "Slicing Tolerance" +msgstr "" + +#: fdmprinter.def.json +msgctxt "slicing_tolerance description" +msgid "" +"How to slice layers with diagonal surfaces. The areas of a layer can be " +"generated based on where the middle of the layer intersects the surface " +"(Middle). Alternatively each layer can have the areas which fall inside of " +"the volume throughout the height of the layer (Exclusive) or a layer has the " +"areas which fall inside anywhere within the layer (Inclusive). Exclusive " +"retains the most details, Inclusive makes for the best fit and Middle takes " +"the least time to process." +msgstr "" + +#: fdmprinter.def.json +msgctxt "slicing_tolerance option middle" +msgid "Middle" +msgstr "" + +#: fdmprinter.def.json +msgctxt "slicing_tolerance option exclusive" +msgid "Exclusive" +msgstr "" + +#: fdmprinter.def.json +msgctxt "slicing_tolerance option inclusive" +msgid "Inclusive" +msgstr "" + +#: fdmprinter.def.json +msgctxt "roofing_line_width label" +msgid "Top Surface Skin Line Width" +msgstr "" + +#: fdmprinter.def.json +msgctxt "roofing_line_width description" +msgid "Width of a single line of the areas at the top of the print." +msgstr "" + +#: fdmprinter.def.json +msgctxt "roofing_pattern label" +msgid "Top Surface Skin Pattern" +msgstr "" + +#: fdmprinter.def.json +msgctxt "roofing_pattern description" +msgid "The pattern of the top most layers." +msgstr "" + +#: fdmprinter.def.json +msgctxt "roofing_pattern option lines" +msgid "Lines" +msgstr "" + +#: fdmprinter.def.json +msgctxt "roofing_pattern option concentric" +msgid "Concentric" +msgstr "" + +#: fdmprinter.def.json +msgctxt "roofing_pattern option zigzag" +msgid "Zig Zag" +msgstr "" + +#: fdmprinter.def.json +msgctxt "roofing_angles label" +msgid "Top Surface Skin Line Directions" +msgstr "" + +#: fdmprinter.def.json +msgctxt "roofing_angles description" +msgid "" +"A list of integer line directions to use when the top surface skin layers " +"use the lines or zig zag pattern. Elements from the list are used " +"sequentially as the layers progress and when the end of the list is reached, " +"it starts at the beginning again. The list items are separated by commas and " +"the whole list is contained in square brackets. Default is an empty list " +"which means use the traditional default angles (45 and 135 degrees)." +msgstr "" + +#: fdmprinter.def.json +msgctxt "infill_enable_travel_optimization label" +msgid "Infill Travel Optimization" +msgstr "" + +#: fdmprinter.def.json +msgctxt "infill_enable_travel_optimization description" +msgid "" +"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." +msgstr "" + +#: fdmprinter.def.json +msgctxt "material_flow_dependent_temperature label" +msgid "Auto Temperature" +msgstr "" + +#: fdmprinter.def.json +msgctxt "material_flow_dependent_temperature description" +msgid "" +"Change the temperature for each layer automatically with the average flow " +"speed of that layer." +msgstr "" + +#: fdmprinter.def.json +msgctxt "material_flow_temp_graph label" +msgid "Flow Temperature Graph" +msgstr "" + +#: fdmprinter.def.json +msgctxt "material_flow_temp_graph description" +msgid "" +"Data linking material flow (in mm3 per second) to temperature (degrees " +"Celsius)." +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 @@ -5745,6 +5883,52 @@ msgid "" "applies to Wire Printing." msgstr "" +#: fdmprinter.def.json +msgctxt "adaptive_layer_height_enabled label" +msgid "Use adaptive layers" +msgstr "" + +#: fdmprinter.def.json +msgctxt "adaptive_layer_height_enabled description" +msgid "" +"Adaptive layers computes the layer heights depending on the shape of the " +"model." +msgstr "" + +#: fdmprinter.def.json +msgctxt "adaptive_layer_height_variation label" +msgid "Adaptive layers maximum variation" +msgstr "" + +#: fdmprinter.def.json +msgctxt "adaptive_layer_height_variation description" +msgid "The maximum allowed height different from the base layer height in mm." +msgstr "" + +#: fdmprinter.def.json +msgctxt "adaptive_layer_height_variation_step label" +msgid "Adaptive layers variation step size" +msgstr "" + +#: fdmprinter.def.json +msgctxt "adaptive_layer_height_variation_step description" +msgid "" +"The difference in height of the next layer height compared to the previous " +"one." +msgstr "" + +#: fdmprinter.def.json +msgctxt "adaptive_layer_height_threshold label" +msgid "Adaptive layers threshold" +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 "" + #: 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 461bfd63db..5b16d0b323 100644 --- a/resources/i18n/fi_FI/cura.po +++ b/resources/i18n/fi_FI/cura.po @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: Cura 3.0\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-11-21 16:58+0100\n" +"Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" +"POT-Creation-Date: 2017-08-02 16:53+0000\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:29 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:26 msgctxt "@action" msgid "Machine Settings" msgstr "Laitteen asetukset" @@ -53,12 +53,11 @@ msgstr "Yhteyden muodostaminen Doodle3D Connectiin" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:87 #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:155 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:874 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:646 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:875 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:659 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:370 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrintWindow.qml:78 -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:104 -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:99 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:355 #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:188 #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:376 #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:139 @@ -98,7 +97,7 @@ msgctxt "@info:tooltip" msgid "Open the Doodle3D Connect web interface" msgstr "Avaa Doodle3D Connect -verkkoliittymä" -#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:34 +#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:33 msgctxt "@item:inmenu" msgid "Show Changelog" msgstr "Näytä muutosloki" @@ -113,78 +112,83 @@ msgctxt "@info:status" msgid "Profile has been flattened & activated." msgstr "Profiili on tasoitettu ja aktivoitu." -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:26 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:27 msgctxt "@item:inmenu" msgid "USB printing" msgstr "USB-tulostus" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:27 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:28 msgctxt "@action:button Preceded by 'Ready to'." msgid "Print via USB" msgstr "Tulosta USB:n kautta" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:28 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:29 msgctxt "@info:tooltip" msgid "Print via USB" msgstr "Tulosta USB:n kautta" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:30 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:31 msgctxt "@info:status" msgid "Connected via USB" msgstr "Yhdistetty USB:n kautta" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:154 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:183 msgctxt "@info:status" msgid "Unable to start a new job because the printer is busy or not connected." msgstr "Uuden työn aloittaminen ei onnistu, koska tulostin on varattu tai sitä ei ole yhdistetty." -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:154 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:183 msgctxt "@info:title" msgid "Printer Unavailable" msgstr "" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:457 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:485 msgctxt "@info:status" msgid "This printer does not support USB printing because it uses UltiGCode flavor." msgstr "Tämä tulostin ei tue USB-tulostusta, koska se käyttää UltiGCode-tyyppiä." -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:457 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:485 msgctxt "@info:title" msgid "USB Printing" msgstr "USB-tulostus" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:461 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:489 msgctxt "@info:status" msgid "Unable to start a new job because the printer does not support usb printing." msgstr "Uuden työn aloittaminen ei onnistu, koska tulostin ei tue USB-tulostusta." -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:461 -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:108 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:489 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:103 #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:146 #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:158 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:945 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1349 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1417 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:946 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1418 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1496 msgctxt "@info:title" msgid "Warning" msgstr "Varoitus" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:108 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:103 msgctxt "@info" msgid "Unable to update firmware because there are no printers connected." msgstr "Laiteohjelmistoa ei voida päivittää, koska yhtään tulostinta ei ole yhdistetty." -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:122 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:117 #, python-format msgctxt "@info" msgid "Could not find firmware required for the printer at %s." msgstr "Tulostimelle ei löydetty laiteohjelmistoa (%s)." -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:122 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:117 msgctxt "@info:title" msgid "Printer Firmware" msgstr "Tulostimen laiteohjelmisto" +#: /home/ruben/Projects/Cura/plugins/PrepareStage/__init__.py:12 +msgctxt "@item:inmenu" +msgid "Prepare" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:23 msgctxt "@action:button Preceded by 'Ready to'." msgid "Save to Removable Drive" @@ -228,11 +232,11 @@ 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:132 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:692 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:700 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:146 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:693 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:701 #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:153 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1358 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:160 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1427 msgctxt "@info:title" msgid "Error" msgstr "Virhe" @@ -282,7 +286,7 @@ msgid "Removable Drive" msgstr "Siirrettävä asema" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:109 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:53 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:51 msgctxt "@action:button Preceded by 'Ready to'." msgid "Print over network" msgstr "Tulosta verkon kautta" @@ -396,110 +400,110 @@ msgctxt "@info:title" msgid "Printer Status" msgstr "Tulostimen tila" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:691 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:692 #, python-brace-format msgctxt "@info:status" msgid "Unable to start a new print job. No Printcore loaded in slot {0}" msgstr "Uuden tulostustyön aloittaminen ei onnistu. PrintCorea ei ole ladattu aukkoon {0}" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:699 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:700 #, python-brace-format msgctxt "@info:status" msgid "Unable to start a new print job. No material loaded in slot {0}" msgstr "Uuden tulostustyön aloittaminen ei onnistu. Materiaalia ei ole ladattu aukkoon {0}" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:709 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:710 #, python-brace-format msgctxt "@label" msgid "Not enough material for spool {0}." msgstr "Kelalle {0} ei ole tarpeeksi materiaalia." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:719 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:720 #, python-brace-format msgctxt "@label" msgid "Different PrintCore (Cura: {0}, Printer: {1}) selected for extruder {2}" msgstr "Eri PrintCore (Cura: {0}, tulostin: {1}) valittu suulakkeelle {2}" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:733 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:734 #, 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/NetworkPrinterOutputDevice.py:741 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:742 #, python-brace-format msgctxt "@label" msgid "PrintCore {0} is not properly calibrated. XY calibration needs to be performed on the printer." msgstr "Print Core -tulostusydintä {0} ei ole kalibroitu oikein. Tulostimen XY-kalibrointi tulee suorittaa." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:746 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:747 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/NetworkPrinterOutputDevice.py:747 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:748 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/NetworkPrinterOutputDevice.py:753 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:754 msgctxt "@window:title" msgid "Mismatched configuration" msgstr "Ristiriitainen määritys" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:864 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:262 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:865 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:258 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/NetworkPrinterOutputDevice.py:873 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:874 msgctxt "@info:status" msgid "Sending data to printer" msgstr "Lähetetään tietoja tulostimeen" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:873 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:874 msgctxt "@info:title" msgid "Sending Data" msgstr "Lähetetään tietoja" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:944 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:945 msgctxt "@info:status" msgid "Unable to send data to printer. Is another job still active?" msgstr "Tietojen lähetys tulostimeen ei onnistu. Onko toinen työ yhä aktiivinen?" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1085 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1087 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:196 msgctxt "@label:MonitorStatus" msgid "Aborting print..." msgstr "Keskeytetään tulostus..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1091 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1093 msgctxt "@label:MonitorStatus" msgid "Print aborted. Please check the printer" msgstr "Tulostus keskeytetty. Tarkista tulostin" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1097 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1099 msgctxt "@label:MonitorStatus" msgid "Pausing print..." msgstr "Tulostus pysäytetään..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1099 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1101 msgctxt "@label:MonitorStatus" msgid "Resuming print..." msgstr "Tulostusta jatketaan..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1289 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1291 msgctxt "@window:title" msgid "Sync with your printer" msgstr "Synkronoi tulostimen kanssa" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1291 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1293 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/NetworkPrinterOutputDevice.py:1293 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1295 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." @@ -520,145 +524,188 @@ msgid "{printer_name} has finished printing '{job_name}'. Please collect the pri msgstr "{printer_name} on tulostanut työn '{job_name}'. Nouda työ ja vahvista alustan tyhjennys." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:115 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:520 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:533 #, python-brace-format msgid "{printer_name} is reserved to print '{job_name}'. Please change the printer's configuration to match the job, for it to start printing." msgstr "{printer_name} on varattu työn {job_name} tulostamiseen. Muuta tulostimen määritys vastaamaan työtä, jotta tulostus alkaa." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:278 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:277 msgctxt "@info:status" msgid "Unable to send new print job: this 3D printer is not (yet) set up to host a group of connected Ultimaker 3 printers." msgstr "Uuden tulostustyön lähetys ei onnistu: tätä 3D-tulostinta ei ole (vielä) määritetty yhdistetyn Ultimaker 3 -tulostinryhmän isännäksi." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:410 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:423 #, python-brace-format msgctxt "@info:status" msgid "Unable to send print job to group {cluster_name}." msgstr "Tulostustyön lähetys ryhmään {cluster_name} ei onnistu." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:418 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:431 #, python-brace-format msgctxt "@info:status" msgid "Sent {file_name} to group {cluster_name}." msgstr "Lähetettiin {file_name} ryhmään {cluster_name}." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:423 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:436 msgctxt "@action:button" msgid "Show print jobs" msgstr "Näytä tulostustyöt" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:424 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:437 msgctxt "@info:tooltip" msgid "Opens the print jobs interface in your browser." msgstr "Avaa tulostustöiden käyttöliittymän selaimessa." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:489 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:502 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:239 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:47 -msgctxt "@label" +msgctxt "@label Printer name" msgid "Unknown" -msgstr "Tuntematon" +msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:492 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:505 #, 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/NetworkClusterPrinterOutputDevice.py:494 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:497 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:507 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:510 msgctxt "@info:status" msgid "Print finished" msgstr "Tulosta valmis" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:522 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:525 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:535 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:538 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:282 msgctxt "@label:status" msgid "Action required" msgstr "Vaatii toimenpiteitä" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:643 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:656 #, python-brace-format msgctxt "@info:progress" msgid "Sending {file_name} to group {cluster_name}" msgstr "Lähetetään tiedostoa {file_name} ryhmään {cluster_name}" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.py:19 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.py:17 msgctxt "@action" msgid "Connect via Network" msgstr "Yhdistä verkon kautta" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:64 +#: /home/ruben/Projects/Cura/plugins/MonitorStage/__init__.py:12 +msgctxt "@item:inmenu" +msgid "Monitor" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:66 #, python-brace-format msgctxt "@info Don't translate {machine_name}, since it gets replaced by a printer name!" msgid "New features are available for your {machine_name}! It is recommended to update the firmware on your printer." msgstr "" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:65 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:67 #, python-format msgctxt "@info:title The %s gets replaced with the printer name." msgid "New %s firmware available" msgstr "Uusi tulostimen %s laiteohjelmisto saatavilla" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:66 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:68 msgctxt "@action:button" msgid "How to update" msgstr "" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:77 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:79 msgctxt "@info" msgid "Could not access update information." msgstr "Päivitystietoja ei löytynyt." -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksReader.py:199 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksReader.py:579 msgctxt "@info:status" -msgid "Errors appeared while opening your SolidWorks file! Please check, whether it is possible to open your file in SolidWorks itself without any problems as well!" -msgstr "SolidWorks-tiedostoa avattaessa ilmeni virheitä! Tarkista, voiko tiedoston avata SolidWorks-ohjelmistossa ilman ongelmia." +msgid "SolidWorks reported errors, while opening your file. We recommend to solve these issues inside SolidWorks itself." +msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:31 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksReader.py:591 +msgctxt "@info:status" +msgid "" +"Found no models inside your drawing. Could you please check it's content again and make sure one part or assembly is inside?\n" +"\n" +" Thanks!." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksReader.py:595 +msgctxt "@info:status" +msgid "" +"Found more then one part or assembly inside your drawing. We currently only support drawings with exactly one part or assembly inside.\n" +"\n" +"Sorry!" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:25 msgctxt "@item:inlistbox" msgid "SolidWorks part file" msgstr "SolidWorks-osatiedosto" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:35 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:29 msgctxt "@item:inlistbox" msgid "SolidWorks assembly file" msgstr "SolidWorks-kokoonpanotiedosto" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.py:21 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:33 +msgctxt "@item:inlistbox" +msgid "SolidWorks drawing file" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:48 +msgctxt "@info:status" +msgid "" +"Dear customer,\n" +"We could not find a valid installation of SolidWorks on your system. That means that either SolidWorks is not installed or you don't own an valid license. Please make sure that running SolidWorks itself works without issues and/or contact your ICT.\n" +"\n" +"With kind regards\n" +" - Thomas Karl Pietrowski" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:57 +msgctxt "@info:status" +msgid "" +"Dear customer,\n" +"You are currently running this plugin on an operating system other than Windows. This plugin will only work on Windows with SolidWorks installed, including an valid license. Please install this plugin on a Windows machine with SolidWorks installed.\n" +"\n" +"With kind regards\n" +" - Thomas Karl Pietrowski" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksDialogHandler.py:70 msgid "Configure" msgstr "Määritä" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/CommonComReader.py:135 -#, python-format -msgctxt "@info:status" -msgid "Error while starting %s!" -msgstr "%s:n käynnistyksen aikana ilmeni virhe!" +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksDialogHandler.py:71 +msgid "Installation guide for SolidWorks macro" +msgstr "" #: /home/ruben/Projects/Cura/plugins/SimulationView/__init__.py:14 msgctxt "@item:inlistbox" -msgid "Simulation view" -msgstr "" +msgid "Layer view" +msgstr "Kerrosnäkymä" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:100 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:103 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:101 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:104 msgctxt "@info:title" msgid "Simulation View" msgstr "" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.py:26 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.py:25 msgid "Modify G-Code" msgstr "Muokkaa GCode-arvoa" #: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:43 msgctxt "@info" -msgid "Cura collects anonymised slicing statistics. You can disable this in the preferences." -msgstr "Cura kerää anonyymejä viipalointiin liittyviä tilastotietoja. Tämän voi poistaa käytöstä asetuksien kautta." +msgid "Cura collects anonymized usage statistics." +msgstr "" #: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:46 msgctxt "@info:title" @@ -667,14 +714,41 @@ msgstr "Kerätään tietoja" #: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:48 msgctxt "@action:button" -msgid "Dismiss" -msgstr "Ohita" +msgid "Allow" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:49 +msgctxt "@action:tooltip" +msgid "Allow Cura to send anonymized usage statistics to help prioritize future improvements to Cura. Some of your preferences and settings are sent, the Cura version and a hash of the models you're slicing." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:50 +msgctxt "@action:button" +msgid "Disable" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:51 +msgctxt "@action:tooltip" +msgid "Don't allow Cura to send anonymized usage statistics. You can enable it again in the preferences." +msgstr "" #: /home/ruben/Projects/Cura/plugins/LegacyProfileReader/__init__.py:14 msgctxt "@item:inlistbox" msgid "Cura 15.04 profiles" msgstr "Cura 15.04 -profiilit" +#: /home/ruben/Projects/Cura/plugins/CuraBlenderPlugin/__init__.py:15 +msgctxt "@item:inlistbox" +msgid "Blender file" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraBlenderPlugin/CadIntegrationUtils/CommonReader.py:199 +msgctxt "@info:status" +msgid "" +"Could not export using \"{}\" quality!\n" +"Felt back to \"{}\"." +msgstr "" + #: /home/ruben/Projects/Cura/plugins/GCodeProfileReader/__init__.py:14 #: /home/ruben/Projects/Cura/plugins/GCodeReader/__init__.py:14 msgctxt "@item:inlistbox" @@ -706,49 +780,49 @@ msgctxt "@item:inlistbox" msgid "GIF Image" msgstr "GIF-kuva" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:269 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:299 msgctxt "@info:status" msgid "Unable to slice with the current material as it is incompatible with the selected machine or configuration." msgstr "Viipalointi ei onnistu nykyisellä materiaalilla, sillä se ei sovellu käytettäväksi valitun laitteen tai kokoonpanon kanssa." -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:269 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:297 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:319 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:299 #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:327 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:336 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:349 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:357 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:366 msgctxt "@info:title" msgid "Unable to slice" msgstr "Viipalointi ei onnistu" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:296 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:326 #, python-brace-format msgctxt "@info:status" msgid "Unable to slice with the current settings. The following settings have errors: {0}" msgstr "Viipalointi ei onnistu nykyisten asetuksien ollessa voimassa. Seuraavissa asetuksissa on virheitä: {0}" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:318 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:348 #, python-brace-format msgctxt "@info:status" msgid "Unable to slice due to some per-model settings. The following settings have errors on one or more models: {error_labels}" msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:326 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:356 msgctxt "@info:status" msgid "Unable to slice because the prime tower or prime position(s) are invalid." msgstr "Viipalointi ei onnistu, koska esitäyttötorni tai esitäytön sijainti tai sijainnit eivät kelpaa." -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:335 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:365 msgctxt "@info:status" msgid "Nothing to slice because none of the models fit the build volume. Please scale or rotate models to fit." msgstr "Ei viipaloitavaa, koska mikään malleista ei sovellu tulostustilavuuteen. Skaalaa tai pyöritä mallia, kunnes se on sopiva." #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:50 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:239 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:242 msgctxt "@info:status" msgid "Processing Layers" msgstr "Käsitellään kerroksia" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:239 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:242 msgctxt "@info:title" msgid "Information" msgstr "Tiedot" @@ -785,14 +859,14 @@ msgstr "" msgid "Failed to install Siemens NX plugin. Could not set environment variable UGII_USER_DIR for Siemens NX." msgstr "" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:167 -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:585 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:165 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:590 msgctxt "@title:tab" msgid "Recommended" msgstr "Suositeltu" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:169 -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:590 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:167 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:595 msgctxt "@title:tab" msgid "Custom" msgstr "Mukautettu" @@ -803,24 +877,24 @@ msgctxt "@item:inlistbox" msgid "3MF File" msgstr "3MF-tiedosto" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:126 -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1142 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:159 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1185 msgctxt "@label" msgid "Nozzle" msgstr "Suutin" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:164 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:152 #, python-brace-format msgctxt "@info:status" msgid "Failed to get plugin ID from {0}" msgstr "Lisäosan tunnuksen hankkiminen epäonnistui tiedostosta {0}" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:165 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:153 msgctxt "@info:tile" msgid "Warning" msgstr "Varoitus" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:203 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:191 msgctxt "@window:title" msgid "Plugin browser" msgstr "Lisäosien selain" @@ -835,18 +909,18 @@ msgctxt "@item:inlistbox" msgid "G File" msgstr "G File -tiedosto" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:314 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:321 msgctxt "@info:status" msgid "Parsing G-code" msgstr "G-coden jäsennys" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:316 -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:426 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:323 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:464 msgctxt "@info:title" msgid "G-code Details" msgstr "G-coden tiedot" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:424 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:462 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." @@ -857,6 +931,16 @@ 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:17 +msgctxt "@item:inlistbox" +msgid "Profile Assistant" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/3MFWriter/__init__.py:30 msgctxt "@item:inlistbox" msgid "3MF file" @@ -888,142 +972,116 @@ msgctxt "@action" msgid "Level build plate" msgstr "Tasaa alusta" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:89 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:98 msgctxt "@tooltip" msgid "Outer Wall" msgstr "Ulkoseinämä" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:90 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:99 msgctxt "@tooltip" msgid "Inner Walls" msgstr "Sisäseinämät" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:91 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:100 msgctxt "@tooltip" msgid "Skin" msgstr "Pintakalvo" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:92 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:101 msgctxt "@tooltip" msgid "Infill" msgstr "Täyttö" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:93 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:102 msgctxt "@tooltip" msgid "Support Infill" msgstr "Tuen täyttö" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:94 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:103 msgctxt "@tooltip" msgid "Support Interface" msgstr "Tukiliittymä" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:95 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:104 msgctxt "@tooltip" msgid "Support" msgstr "Tuki" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:96 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:105 msgctxt "@tooltip" msgid "Skirt" msgstr "Helma" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:97 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:106 msgctxt "@tooltip" msgid "Travel" msgstr "Siirtoliike" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:98 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:107 msgctxt "@tooltip" msgid "Retractions" msgstr "Takaisinvedot" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:99 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:108 msgctxt "@tooltip" msgid "Other" msgstr "Muu" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:199 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:231 msgctxt "@label unknown material" msgid "Unknown" msgstr "" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:284 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:318 #, python-brace-format msgctxt "@label" msgid "Pre-sliced file {0}" msgstr "Esiviipaloitu tiedosto {0}" -#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:469 +#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:440 msgctxt "@item:material" msgid "No material loaded" msgstr "Ei ladattua materiaalia" -#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:476 +#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:447 msgctxt "@item:material" msgid "Unknown material" msgstr "Tuntematon materiaali" -#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:30 -msgctxt "@info:status" -msgid "Finding new location for objects" -msgstr "Uusien paikkojen etsiminen kappaleille" - -#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:34 -msgctxt "@info:title" -msgid "Finding Location" -msgstr "Etsitään paikkaa" - -#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:89 -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:83 -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/ArrangeObjectsJob.py:90 -msgctxt "@info:title" -msgid "Can't Find Location" -msgstr "Paikkaa ei löydy" - -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:431 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:113 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:437 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:120 msgctxt "@title:window" msgid "File Already Exists" msgstr "Tiedosto on jo olemassa" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:432 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:114 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:438 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:121 #, 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:815 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:872 msgctxt "@label" msgid "Custom" msgstr "Mukautettu" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:819 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:876 msgctxt "@label" msgid "Custom Material" msgstr "Mukautettu materiaali" -#: /home/ruben/Projects/Cura/cura/Settings/ExtrudersModel.py:182 -msgctxt "@menuitem" -msgid "Global" -msgstr "" - -#: /home/ruben/Projects/Cura/cura/Settings/ExtrudersModel.py:229 +#: /home/ruben/Projects/Cura/cura/Settings/ExtrudersModel.py:205 msgctxt "@menuitem" msgid "Not overridden" msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:117 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:124 msgctxt "@info:status" msgid "The selected material is incompatible with the selected machine or configuration." msgstr "Valittu materiaali ei sovellu käytettäväksi valitun laitteen tai kokoonpanon kanssa." -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:118 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:125 #: /home/ruben/Projects/Cura/cura/Settings/MaterialManager.py:24 msgctxt "@info:title" msgid "Incompatible Material" @@ -1044,67 +1102,89 @@ msgctxt "@action" msgid "Undo changing the material diameter." msgstr "Kumoa materiaalin halkaisijan muutokset." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:144 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:151 #, 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:151 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:158 #, 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:156 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:163 #, 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:157 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:164 msgctxt "@info:title" msgid "Export succeeded" msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:183 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:205 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:214 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:248 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:190 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:211 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:271 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to import profile from {0}: {1}" msgstr "Profiilin tuonti epäonnistui tiedostosta {0}: {1}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:216 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:252 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:230 +#, python-brace-format +msgctxt "@info:status Don't translate the XML tags or !" +msgid "This profile {0} contains incorrect data, could not import it." +msgstr "" + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:240 +#, python-brace-format +msgctxt "@info:status Don't translate the XML tags or !" +msgid "The machine defined in profile {0} doesn't match with your current machine, could not import it." +msgstr "" + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:274 #, python-brace-format msgctxt "@info:status" msgid "Successfully imported profile {0}" msgstr "Onnistuneesti tuotu profiili {0}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:255 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:277 +#, python-brace-format +msgctxt "@info:status" +msgid "File {0} does not contain any valid profile." +msgstr "" + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:280 #, 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:274 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:298 msgctxt "@label" msgid "Custom profile" msgstr "Mukautettu profiili" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:285 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:313 msgctxt "@info:status" msgid "Profile is missing a quality type." msgstr "Profiilista puuttuu laatutyyppi." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:321 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:349 #, python-brace-format msgctxt "@info:status" msgid "Could not find a quality type {0} for the current configuration." msgstr "Laatutyyppiä {0} ei löydy nykyiselle kokoonpanolle." +#: /home/ruben/Projects/Cura/cura/ObjectsModel.py:46 +#, python-brace-format +msgctxt "@label" +msgid "Group #{group_nr}" +msgstr "" + #: /home/ruben/Projects/Cura/cura/BuildVolume.py:100 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." @@ -1115,142 +1195,167 @@ msgctxt "@info:title" msgid "Build Volume" msgstr "Tulostustilavuus" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:34 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:25 msgctxt "@info:status" msgid "Multiplying and placing objects" msgstr "Kappaleiden kertominen ja sijoittelu" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:35 -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:83 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:26 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:78 msgctxt "@info:title" msgid "Placing Object" msgstr "Sijoitetaan kappaletta" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:80 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:78 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:88 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:152 +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/Arranging/ArrangeObjectsJob.py:29 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:64 +msgctxt "@info:status" +msgid "Finding new location for objects" +msgstr "Uusien paikkojen etsiminen kappaleille" + +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:33 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:68 +msgctxt "@info:title" +msgid "Finding Location" +msgstr "Etsitään paikkaa" + +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:89 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:153 +msgctxt "@info:title" +msgid "Can't Find Location" +msgstr "Paikkaa ei löydy" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:81 msgctxt "@title:window" msgid "Crash Report" msgstr "Kaatumisraportti" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:93 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:94 msgctxt "@label crash message" msgid "" -"

      A fatal exception has occurred. Please send us this Crash Report to fix the problem

      \n" +"

      A fatal error has occurred. 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 "" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:101 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:102 msgctxt "@title:groupbox" msgid "System information" msgstr "" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:109 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:110 msgctxt "@label unknown version of Cura" msgid "Unknown" msgstr "" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:111 -#, python-brace-format -msgctxt "@label Cura version" -msgid "Cura version: {version}
      " -msgstr "" - #: /home/ruben/Projects/Cura/cura/CrashHandler.py:112 -#, python-brace-format -msgctxt "@label Platform" -msgid "Platform: {platform}
      " +msgctxt "@label Cura version number" +msgid "Cura version" msgstr "" #: /home/ruben/Projects/Cura/cura/CrashHandler.py:113 -#, python-brace-format -msgctxt "@label Qt version" -msgid "Qt version: {qt}
      " +msgctxt "@label Type of platform" +msgid "Platform" msgstr "" #: /home/ruben/Projects/Cura/cura/CrashHandler.py:114 -#, python-brace-format -msgctxt "@label PyQt version" -msgid "PyQt version: {pyqt}
      " +msgctxt "@label" +msgid "Qt version" msgstr "" #: /home/ruben/Projects/Cura/cura/CrashHandler.py:115 -#, python-brace-format -msgctxt "@label OpenGL" -msgid "OpenGL: {opengl}
      " +msgctxt "@label" +msgid "PyQt version" msgstr "" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:130 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:116 +msgctxt "@label OpenGL version" +msgid "OpenGL" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:133 +msgctxt "@label" +msgid "not yet initialised
      " +msgstr "" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:136 #, python-brace-format msgctxt "@label OpenGL version" msgid "
    • OpenGL Version: {version}
    • " msgstr "" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:131 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:137 #, python-brace-format msgctxt "@label OpenGL vendor" msgid "
    • OpenGL Vendor: {vendor}
    • " msgstr "" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:132 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:138 #, python-brace-format msgctxt "@label OpenGL renderer" msgid "
    • OpenGL Renderer: {renderer}
    • " msgstr "" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:141 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:147 msgctxt "@title:groupbox" -msgid "Exception traceback" +msgid "Error traceback" msgstr "" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:208 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:214 msgctxt "@title:groupbox" msgid "Logs" msgstr "" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:231 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:237 msgctxt "@title:groupbox" msgid "User description" msgstr "" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:246 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:252 msgctxt "@action:button" msgid "Send report" msgstr "" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:256 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:274 msgctxt "@info:progress" msgid "Loading machines..." msgstr "Ladataan laitteita..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:661 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:660 msgctxt "@info:progress" msgid "Setting up scene..." msgstr "Asetetaan näkymää..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:703 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:702 msgctxt "@info:progress" msgid "Loading interface..." msgstr "Ladataan käyttöliittymää..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:874 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:899 #, 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:1348 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1417 #, 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:1357 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1426 #, 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:1416 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1495 msgctxt "@info:status" msgid "The selected model was too small to load." msgstr "" @@ -1279,12 +1384,11 @@ msgstr "X (leveys)" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:119 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:129 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:235 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:288 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:300 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:391 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:401 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:413 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:840 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:383 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:394 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:412 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:424 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:849 msgctxt "@label" msgid "mm" msgstr "mm" @@ -1374,68 +1478,67 @@ msgctxt "@tooltip" msgid "The height difference between the tip of the nozzle and the gantry system (X and Y axes). Used to prevent collisions between previous prints and the gantry when printing \"One at a Time\"." msgstr "Suuttimen kärjen ja korokejärjestelmän (X- ja Y-akselit) välinen korkeusero. Käytetään estämään aiempien tulosteiden ja korokkeen yhteentörmäyksiä, kun tulostetaan yksi kerrallaan." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:255 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:254 msgctxt "@label" msgid "Number of Extruders" msgstr "Suulakkeiden määrä" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:289 -msgctxt "@tooltip" -msgid "The nominal diameter of filament supported by the printer. The exact diameter will be overridden by the material and/or the profile." -msgstr "Tulostimen tukema tulostuslangan nimellinen halkaisija. Materiaali ja/tai profiili korvaa tarkan halkaisijan." - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:291 -msgctxt "@label" -msgid "Material diameter" -msgstr "Materiaalin halkaisija" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:299 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:390 -msgctxt "@label" -msgid "Nozzle size" -msgstr "Suuttimen koko" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:317 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:310 msgctxt "@label" msgid "Start Gcode" msgstr "Aloita GCode" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:327 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:320 msgctxt "@tooltip" msgid "Gcode commands to be executed at the very start." msgstr "GCode-komennot, jotka suoritetaan aivan alussa." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:336 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:329 msgctxt "@label" msgid "End Gcode" msgstr "Lopeta GCode" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:346 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:339 msgctxt "@tooltip" msgid "Gcode commands to be executed at the very end." msgstr "GCode-komennot, jotka suoritetaan aivan lopussa." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:378 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:370 msgctxt "@label" msgid "Nozzle Settings" msgstr "Suutinasetukset" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:400 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:382 +msgctxt "@label" +msgid "Nozzle size" +msgstr "Suuttimen koko" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:393 +msgctxt "@label" +msgid "Compatible material diameter" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:395 +msgctxt "@tooltip" +msgid "The nominal diameter of filament supported by the printer. The exact diameter will be overridden by the material and/or the profile." +msgstr "Tulostimen tukema tulostuslangan nimellinen halkaisija. Materiaali ja/tai profiili korvaa tarkan halkaisijan." + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:411 msgctxt "@label" msgid "Nozzle offset X" msgstr "Suuttimen X-siirtymä" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:412 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:423 msgctxt "@label" msgid "Nozzle offset Y" msgstr "Suuttimen Y-siirtymä" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:433 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:444 msgctxt "@label" msgid "Extruder Start Gcode" msgstr "Suulake – aloita Gcode" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:451 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:462 msgctxt "@label" msgid "Extruder End Gcode" msgstr "Suulake – lopeta Gcode" @@ -1448,8 +1551,9 @@ msgstr "Muutosloki" #: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.qml:37 #: /home/ruben/Projects/Cura/plugins/USBPrinting/FirmwareUpdateWindow.qml:107 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:55 -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:445 -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:357 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:306 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:456 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:492 #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:80 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:123 #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:147 @@ -1533,7 +1637,7 @@ msgstr "Muokkaa" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:96 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:50 #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:95 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:190 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:171 msgctxt "@action:button" msgid "Remove" msgstr "Poista" @@ -1555,14 +1659,14 @@ msgid "Type" msgstr "Tyyppi" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:233 -msgctxt "@label" +msgctxt "@label Printer name" msgid "Ultimaker 3" -msgstr "Ultimaker 3" +msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:236 -msgctxt "@label" +msgctxt "@label Printer name" msgid "Ultimaker 3 Extended" -msgstr "Ultimaker 3 Extended" +msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:252 msgctxt "@label" @@ -1606,8 +1710,6 @@ msgid "Enter the IP address or hostname of your printer on the network." msgstr "Anna verkon tulostimen IP-osoite tai isäntänimi." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:379 -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:92 -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:88 #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:181 msgctxt "@action:button" msgid "OK" @@ -1628,6 +1730,11 @@ msgctxt "@label: arg 1 is group name" msgid "%1 is not set up to host a group of connected Ultimaker 3 printers" msgstr "%1 ei ole määritetty yhdistetyn Ultimaker 3 -tulostinryhmän isännäksi" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterMonitorItem.qml:55 +msgctxt "@label link to connect manager" +msgid "Add/Remove printers" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/OpenPanelButton.qml:14 msgctxt "@info:tooltip" msgid "Opens the print jobs page with your default web browser." @@ -1658,11 +1765,16 @@ msgid "Available" msgstr "Saatavilla" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:43 -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:101 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:100 msgctxt "@label:MonitorStatus" msgid "Lost connection with the printer" msgstr "Yhteys tulostimeen menetetty" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:47 +msgctxt "@label Printer status" +msgid "Unknown" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:257 msgctxt "@label:status" msgid "Disabled" @@ -1754,138 +1866,250 @@ msgctxt "@action:button" msgid "Activate Configuration" msgstr "Aktivoi määritys" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:20 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:21 msgctxt "@title:window" -msgid "Cura SolidWorks Plugin Configuration" -msgstr "Cura SolidWorks -laajennuksen määritys" +msgid "SolidWorks: Export wizard" +msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:44 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:45 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:140 msgctxt "@action:label" -msgid "Default quality of the exported STL:" -msgstr "Viedyn STL:n oletuslaatu:" +msgid "Quality:" +msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:79 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:78 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:179 msgctxt "@option:curaSolidworksStlQuality" -msgid "Always ask" -msgstr "Kysy aina" +msgid "Fine (3D-printing)" +msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:80 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:79 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:180 msgctxt "@option:curaSolidworksStlQuality" -msgid "Always use Fine quality" -msgstr "Käytä aina hienoa laatua" +msgid "Coarse (3D-printing)" +msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:81 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:80 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:181 msgctxt "@option:curaSolidworksStlQuality" -msgid "Always use Coarse quality" -msgstr "Käytä aina karkeaa laatua" +msgid "Fine (SolidWorks)" +msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:20 -msgctxt "@title:window" -msgid "Import SolidWorks File as STL..." -msgstr "Tuo SolidWorks-tiedosto STL-muodossa..." - -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:43 -msgctxt "@info:tooltip" -msgid "Quality of the Exported STL" -msgstr "Viedyn STL:n laatu" - -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:48 -msgctxt "@action:label" -msgid "Quality" -msgstr "Laatu" - -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:62 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:81 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:182 msgctxt "@option:curaSolidworksStlQuality" -msgid "Coarse" -msgstr "Karkea" +msgid "Coarse (SolidWorks)" +msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:63 -msgctxt "@option:curaSolidworksStlQuality" -msgid "Fine" -msgstr "Hieno" - -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:78 -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:82 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:94 msgctxt "@text:window" -msgid "Remember my choice" -msgstr "Muista valintani" +msgid "Show this dialog again" +msgstr "" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:81 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:104 +msgctxt "@action:button" +msgid "Continue" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:116 +msgctxt "@action:button" +msgid "Abort" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:21 +msgctxt "@title:window" +msgid "How to install Cura SolidWorks macro" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:62 +msgctxt "@description:label" +msgid "Steps:" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:140 +msgctxt "@action:button" +msgid "" +"Open the directory\n" +"with macro and icon" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:160 +msgctxt "@description:label" +msgid "Instructions:" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:202 +msgctxt "@action:playpause" +msgid "Play" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:206 +msgctxt "@action:playpause" +msgid "Pause" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:268 +msgctxt "@action:button" +msgid "Previous Step" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:283 +msgctxt "@action:button" +msgid "Done" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:287 +msgctxt "@action:button" +msgid "Next Step" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:21 +msgctxt "@title:window" +msgid "SolidWorks plugin: Configuration" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:39 +msgctxt "@title:tab" +msgid "Conversion settings" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:66 +msgctxt "@label" +msgid "First choice:" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:86 +msgctxt "@text:menu" +msgid "Latest installed version (Recommended)" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:95 +msgctxt "@text:menu" +msgid "Default version" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:193 +msgctxt "@label" +msgid "Show wizard before opening SolidWorks files" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:203 +msgctxt "@label" +msgid "Automatically rotate opened file into normed orientation" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:210 +msgctxt "@title:tab" +msgid "Installation(s)" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:284 +msgctxt "@label" +msgid "COM service found" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:295 +msgctxt "@label" +msgid "Executable found" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:306 +msgctxt "@label" +msgid "COM starting" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:317 +msgctxt "@label" +msgid "Revision number" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:328 +msgctxt "@label" +msgid "Functions available" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:341 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:264 +msgctxt "@action:button" +msgid "Save" +msgstr "Tallenna" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:117 msgctxt "@label" msgid "Color scheme" msgstr "Värimalli" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:96 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:132 msgctxt "@label:listbox" msgid "Material Color" msgstr "Materiaalin väri" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:100 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:136 msgctxt "@label:listbox" msgid "Line Type" msgstr "Linjojen tyyppi" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:104 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:140 msgctxt "@label:listbox" msgid "Feedrate" msgstr "" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:108 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:144 msgctxt "@label:listbox" msgid "Layer thickness" msgstr "" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:148 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:185 msgctxt "@label" msgid "Compatibility Mode" msgstr "Yhteensopivuustila" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:230 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:264 msgctxt "@label" msgid "Show Travels" msgstr "Näytä siirtoliikkeet" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:236 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:270 msgctxt "@label" msgid "Show Helpers" msgstr "Näytä avustimet" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:242 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:276 msgctxt "@label" msgid "Show Shell" msgstr "Näytä kuori" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:248 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:282 msgctxt "@label" msgid "Show Infill" msgstr "Näytä täyttö" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:297 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:330 msgctxt "@label" msgid "Only Show Top Layers" msgstr "Näytä vain yläkerrokset" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:306 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:339 msgctxt "@label" msgid "Show 5 Detailed Layers On Top" msgstr "Näytä 5 yksityiskohtaista kerrosta ylhäällä" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:317 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:350 msgctxt "@label" msgid "Top / Bottom" msgstr "Yläosa/alaosa" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:321 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:354 msgctxt "@label" msgid "Inner Wall" msgstr "Sisäseinämä" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:378 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:410 msgctxt "@label" msgid "min" msgstr "" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:420 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:452 msgctxt "@label" msgid "max" msgstr "" @@ -1910,7 +2134,7 @@ msgctxt "@label" msgid "Settings" msgstr "Asetukset" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:455 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:466 msgctxt "@info:tooltip" msgid "Change active post-processing scripts" msgstr "Muuta aktiivisia jälkikäsittelykomentosarjoja" @@ -1985,23 +2209,53 @@ msgctxt "@action:label" msgid "Smoothing" msgstr "Tasoitus" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:208 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:38 +msgctxt "@label" +msgid "Mesh Type" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:69 +msgctxt "@label" +msgid "Normal model" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:76 +msgctxt "@label" +msgid "Print as support" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:84 +msgctxt "@label" +msgid "Don't support overlap with other models" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:92 +msgctxt "@label" +msgid "Modify settings for overlap with other models" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:100 +msgctxt "@label" +msgid "Modify settings for infill of other models" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:333 msgctxt "@action:button" msgid "Select settings" msgstr "Valitse asetukset" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:248 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:375 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:272 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:402 #: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:91 msgctxt "@label:textbox" msgid "Filter..." msgstr "Suodatin..." -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:296 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:426 msgctxt "@label:checkbox" msgid "Show all" msgstr "Näytä kaikki" @@ -2360,66 +2614,66 @@ msgctxt "@label" msgid "Everything is in order! You're done with your CheckUp." msgstr "Kaikki on kunnossa! CheckUp on valmis." -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:88 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:87 msgctxt "@label:MonitorStatus" msgid "Not connected to a printer" msgstr "Ei yhteyttä tulostimeen" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:90 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:89 msgctxt "@label:MonitorStatus" msgid "Printer does not accept commands" msgstr "Tulostin ei hyväksy komentoja" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:96 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:95 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:194 msgctxt "@label:MonitorStatus" msgid "In maintenance. Please check the printer" msgstr "Huolletaan. Tarkista tulostin" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:103 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:102 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:184 msgctxt "@label:MonitorStatus" msgid "Printing..." msgstr "Tulostetaan..." -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:106 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:105 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:186 msgctxt "@label:MonitorStatus" msgid "Paused" msgstr "Keskeytetty" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:109 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:108 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:188 msgctxt "@label:MonitorStatus" msgid "Preparing..." msgstr "Valmistellaan..." -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:111 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:110 msgctxt "@label:MonitorStatus" msgid "Please remove the print" msgstr "Poista tuloste" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:237 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:241 msgctxt "@label:" msgid "Resume" msgstr "Jatka" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:241 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:245 msgctxt "@label:" msgid "Pause" msgstr "Keskeytä" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:270 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:274 msgctxt "@label:" msgid "Abort Print" msgstr "Keskeytä tulostus" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:280 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:284 msgctxt "@window:title" msgid "Abort print" msgstr "Keskeytä tulostus" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:282 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:286 msgctxt "@label" msgid "Are you sure you want to abort the print?" msgstr "Haluatko varmasti keskeyttää tulostuksen?" @@ -2454,19 +2708,19 @@ msgid "Customized" msgstr "Mukautettu" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:157 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:593 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:595 msgctxt "@option:discardOrKeep" msgid "Always ask me this" msgstr "Kysy aina" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:158 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:594 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:596 msgctxt "@option:discardOrKeep" msgid "Discard and never ask again" msgstr "Hylkää äläkä kysy uudelleen" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:159 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:595 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:597 msgctxt "@option:discardOrKeep" msgid "Keep and never ask again" msgstr "Säilytä äläkä kysy uudelleen" @@ -2501,72 +2755,72 @@ msgctxt "@label" msgid "Brand" msgstr "Merkki" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:92 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:88 msgctxt "@label" msgid "Material Type" msgstr "Materiaalin tyyppi" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:105 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:97 msgctxt "@label" msgid "Color" msgstr "Väri" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:139 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:141 msgctxt "@label" msgid "Properties" msgstr "Ominaisuudet" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:141 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:143 msgctxt "@label" msgid "Density" msgstr "Tiheys" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:156 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:158 msgctxt "@label" msgid "Diameter" msgstr "Läpimitta" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:185 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:187 msgctxt "@label" msgid "Filament Cost" msgstr "Tulostuslangan hinta" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:201 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:203 msgctxt "@label" msgid "Filament weight" msgstr "Tulostuslangan paino" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:218 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:220 msgctxt "@label" msgid "Filament length" msgstr "Tulostuslangan pituus" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:227 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:229 msgctxt "@label" msgid "Cost per Meter" msgstr "Hinta metriä kohden" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:241 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:243 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/MaterialView.qml:248 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:250 msgctxt "@label" msgid "Unlink Material" msgstr "Poista materiaalin linkitys" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:259 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:261 msgctxt "@label" msgid "Description" msgstr "Kuvaus" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:272 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:274 msgctxt "@label" msgid "Adhesion Information" msgstr "Tarttuvuustiedot" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:298 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:300 msgctxt "@label" msgid "Print settings" msgstr "Tulostusasetukset" @@ -2607,7 +2861,7 @@ msgid "Unit" msgstr "Yksikkö" #: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:14 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:439 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:509 msgctxt "@title:tab" msgid "General" msgstr "Yleiset" @@ -2622,230 +2876,255 @@ msgctxt "@label" msgid "Language:" msgstr "Kieli:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:205 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:207 msgctxt "@label" msgid "Currency:" msgstr "Valuutta:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:219 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:221 msgctxt "@label" msgid "Theme:" msgstr "Teema:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:279 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:281 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:296 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:298 msgctxt "@info:tooltip" msgid "Slice automatically when changing settings." msgstr "Viipaloi automaattisesti, kun asetuksia muutetaan." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:304 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:306 msgctxt "@option:check" msgid "Slice automatically" msgstr "Viipaloi automaattisesti" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:318 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:320 msgctxt "@label" msgid "Viewport behavior" msgstr "Näyttöikkunan käyttäytyminen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:326 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:328 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:335 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:337 msgctxt "@option:check" msgid "Display overhang" msgstr "Näytä uloke" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:342 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:344 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:347 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:349 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:356 +#: /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:361 +#: /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:370 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:372 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:375 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:377 msgctxt "@action:button" msgid "Zoom toward mouse direction" msgstr "Zoomaa hiiren suuntaan" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:384 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:386 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:389 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:391 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:397 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:399 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:402 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:404 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:414 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:416 msgctxt "@info:tooltip" msgid "Show caution message in gcode reader." msgstr "Näytä varoitusviesti gcode-lukijassa." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:423 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:425 msgctxt "@option:check" msgid "Caution message in gcode reader" msgstr "Gcode-lukijan varoitusviesti" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:430 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:432 msgctxt "@info:tooltip" msgid "Should layer be forced into compatibility mode?" msgstr "Pakotetaanko kerros yhteensopivuustilaan?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:435 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:437 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:451 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:453 msgctxt "@label" msgid "Opening and saving files" msgstr "Tiedostojen avaaminen ja tallentaminen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:457 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:459 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:462 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:464 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:473 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:478 msgctxt "@option:check" msgid "Scale extremely small models" msgstr "Skaalaa erittäin pienet mallit" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:485 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:487 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:490 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:492 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:499 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:501 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:503 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:505 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:512 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:514 msgctxt "@info:tooltip" msgid "Default behavior when opening a project file" msgstr "Projektitiedoston avaamisen oletustoimintatapa" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:520 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:522 msgctxt "@window:text" msgid "Default behavior when opening a project file: " msgstr "Projektitiedoston avaamisen oletustoimintatapa: " -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:533 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:535 msgctxt "@option:openProject" msgid "Always ask" msgstr "Kysy aina" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:534 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:536 msgctxt "@option:openProject" msgid "Always open as a project" msgstr "Avaa aina projektina" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:535 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:537 msgctxt "@option:openProject" msgid "Always import models" msgstr "Tuo mallit aina" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:571 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:573 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:580 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:582 msgctxt "@label" msgid "Override Profile" msgstr "Kumoa profiili" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:629 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:631 msgctxt "@label" msgid "Privacy" msgstr "Tietosuoja" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:636 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:638 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:641 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:643 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:651 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:653 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:656 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:658 msgctxt "@option:check" msgid "Send (anonymous) print information" msgstr "Lähetä (anonyymit) tulostustiedot" +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:674 +msgctxt "@label" +msgid "Experimental" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:680 +msgctxt "@info:tooltip" +msgid "Use multi build plate functionality" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:685 +msgctxt "@option:check" +msgid "Use multi build plate functionality (restart required)" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:694 +msgctxt "@info:tooltip" +msgid "Should newly loaded models be arranged on the build plate? Used in conjunction with multi build plate (EXPERIMENTAL)" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:699 +msgctxt "@option:check" +msgid "Do not arrange objects on load" +msgstr "" + #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:444 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:514 msgctxt "@title:tab" msgid "Printers" msgstr "Tulostimet" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:37 #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:51 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:137 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:138 msgctxt "@action:button" msgid "Activate" msgstr "Aktivoi" @@ -2888,7 +3167,7 @@ msgid "Waiting for a printjob" msgstr "Odotetaan tulostustyötä" #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:448 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:518 msgctxt "@title:tab" msgid "Profiles" msgstr "Profiilit" @@ -2914,13 +3193,13 @@ msgid "Duplicate" msgstr "Jäljennös" #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:113 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:201 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:182 msgctxt "@action:button" msgid "Import" msgstr "Tuo" #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:119 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:212 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:193 msgctxt "@action:button" msgid "Export" msgstr "Vie" @@ -2986,7 +3265,7 @@ msgid "Export Profile" msgstr "Profiilin vienti" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:446 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:516 msgctxt "@title:tab" msgid "Materials" msgstr "Materiaalit" @@ -3001,60 +3280,60 @@ msgctxt "@action:label %1 is printer name" msgid "Printer: %1" msgstr "Tulostin: %1" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:149 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:150 msgctxt "@action:button" msgid "Create" msgstr "Luo" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:168 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:160 msgctxt "@action:button" msgid "Duplicate" msgstr "Jäljennös" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:311 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:319 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:298 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:306 msgctxt "@title:window" msgid "Import Material" msgstr "Tuo materiaali" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:320 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:307 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/MaterialsPage.qml:324 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:311 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/MaterialsPage.qml:343 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:358 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:329 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:344 msgctxt "@title:window" msgid "Export Material" msgstr "Vie materiaali" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:362 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:348 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/MaterialsPage.qml:368 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:354 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully exported material to %1" msgstr "Materiaalin vieminen onnistui kohteeseen %1" #: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:18 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:793 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:869 msgctxt "@title:window" msgid "Add Printer" msgstr "Lisää tulostin" -#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:185 +#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:194 msgctxt "@label" msgid "Printer Name:" msgstr "Tulostimen nimi:" -#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:208 +#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:217 msgctxt "@action:button" msgid "Add Printer" msgstr "Lisää tulostin" @@ -3183,12 +3462,7 @@ msgctxt "@label" msgid "Profile:" msgstr "Profiili:" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:66 -msgctxt "@" -msgid "No Profile Available" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:104 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:102 msgctxt "@tooltip" msgid "" "Some setting/override values are different from the values stored in the profile.\n" @@ -3199,37 +3473,37 @@ msgstr "" "\n" "Avaa profiilin hallinta napsauttamalla." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:152 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:150 msgctxt "@label:textbox" msgid "Search..." msgstr "Haku…" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:483 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:482 msgctxt "@action:menu" msgid "Copy value to all extruders" msgstr "Kopioi arvo kaikkiin suulakepuristimiin" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:498 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:497 msgctxt "@action:menu" msgid "Hide this setting" msgstr "Piilota tämä asetus" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:508 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:507 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:512 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:511 msgctxt "@action:menu" msgid "Keep this setting visible" msgstr "Pidä tämä asetus näkyvissä" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:531 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:530 msgctxt "@action:menu" msgid "Configure setting visiblity..." msgstr "Määritä asetusten näkyvyys..." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingCategory.qml:123 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingCategory.qml:250 msgctxt "@label" msgid "" "Some hidden settings use values different from their normal calculated value.\n" @@ -3240,27 +3514,27 @@ msgstr "" "\n" "Tee asetuksista näkyviä napsauttamalla." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:62 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:61 msgctxt "@label Header for list of settings." msgid "Affects" msgstr "Koskee seuraavia:" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:67 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:66 msgctxt "@label Header for list of settings." msgid "Affected By" msgstr "Riippuu seuraavista:" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:157 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:156 msgctxt "@label" -msgid "This setting is always shared between all extruders. Changing it here will change the value for all extruders" -msgstr "Tämä asetus koskee aina kaikkia suulakepuristimia. Jos se vaihdetaan tässä, kaikkien suulakepuristimien arvo muuttuu" +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:160 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:159 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:186 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:190 msgctxt "@label" msgid "" "This setting has a value that is different from the profile.\n" @@ -3271,7 +3545,7 @@ msgstr "" "\n" "Palauta profiilin arvo napsauttamalla." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:284 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:288 msgctxt "@label" msgid "" "This setting is normally calculated, but it currently has an absolute value set.\n" @@ -3282,12 +3556,12 @@ msgstr "" "\n" "Palauta laskettu arvo napsauttamalla." -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:120 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:128 msgctxt "@label:listbox" msgid "Print Setup" msgstr "Tulostuksen asennus" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:120 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:128 msgctxt "@label:listbox" msgid "" "Print Setup disabled\n" @@ -3296,59 +3570,59 @@ msgstr "" "Tulostuksen asennus ei käytössä\n" "G-code-tiedostoja ei voida muokata" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:336 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:342 msgctxt "@label Hours and minutes" msgid "00h 00min" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:354 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:359 msgctxt "@tooltip" -msgid "Time specification
      " +msgid "Time specification" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:429 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:441 msgctxt "@label" msgid "Cost specification" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:434 -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:445 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:446 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:455 msgctxt "@label m for meter" msgid "%1m" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:435 -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:446 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:447 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:456 msgctxt "@label g for grams" msgid "%1g" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:444 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:454 msgctxt "@label" msgid "Total:" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:498 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:504 msgctxt "@label Print estimates: m for meters, g for grams, %4 is currency and %3 is print cost" msgid "%1m / ~ %2g / ~ %4 %3" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:503 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:509 msgctxt "@label Print estimates: m for meters, g for grams" msgid "%1m / ~ %2g" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:586 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:591 msgctxt "@tooltip" msgid "Recommended Print Setup

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

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

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

      Tulosta hallitsemalla täysin kaikkia viipalointiprosessin vaiheita." -#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:49 +#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:50 msgctxt "@title:menuitem %1 is the automatically selected material" msgid "Automatic: %1" msgstr "Automaattinen: %1" @@ -3358,6 +3632,16 @@ msgctxt "@title:menu menubar:toplevel" msgid "&View" msgstr "&Näytä" +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:37 +msgctxt "@action:inmenu menubar:view" +msgid "&Camera position" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:52 +msgctxt "@action:inmenu menubar:view" +msgid "&Build plate" +msgstr "" + #: /home/ruben/Projects/Cura/resources/qml/Menus/NozzleMenu.qml:40 msgctxt "@title:menuitem %1 is the nozzle currently loaded in the printer" msgid "Automatic: %1" @@ -3370,14 +3654,14 @@ msgid_plural "Print Selected Models With:" msgstr[0] "Tulosta valittu malli asetuksella:" msgstr[1] "Tulosta valitut mallit asetuksella:" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ContextMenu.qml:83 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ContextMenu.qml:114 msgctxt "@title:window" 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/Menus/ContextMenu.qml:108 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ContextMenu.qml:139 msgctxt "@label" msgid "Number of Copies" msgstr "Kopioiden määrä" @@ -3393,7 +3677,7 @@ msgid "No printer connected" msgstr "Ei tulostinta yhdistettynä" #: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:90 -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:138 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:139 msgctxt "@label" msgid "Extruder" msgstr "Suulake" @@ -3503,254 +3787,294 @@ msgctxt "@label" msgid "Estimated time left" msgstr "Aikaa jäljellä arviolta" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:72 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:79 msgctxt "@action:inmenu" msgid "Toggle Fu&ll Screen" msgstr "Vaihda &koko näyttöön" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:79 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:86 msgctxt "@action:inmenu menubar:edit" msgid "&Undo" msgstr "&Kumoa" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:89 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:96 msgctxt "@action:inmenu menubar:edit" msgid "&Redo" msgstr "Tee &uudelleen" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:99 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:106 msgctxt "@action:inmenu menubar:file" msgid "&Quit" msgstr "&Lopeta" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:107 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:114 msgctxt "@action:inmenu menubar:view" -msgid "&Reset camera position" +msgid "&3D View" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:114 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:121 +msgctxt "@action:inmenu menubar:view" +msgid "&Front View" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:128 +msgctxt "@action:inmenu menubar:view" +msgid "&Top View" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:135 +msgctxt "@action:inmenu menubar:view" +msgid "&Left Side View" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:142 +msgctxt "@action:inmenu menubar:view" +msgid "&Right Side View" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:149 msgctxt "@action:inmenu" msgid "Configure Cura..." msgstr "Määritä Curan asetukset..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:121 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:156 msgctxt "@action:inmenu menubar:printer" msgid "&Add Printer..." msgstr "L&isää tulostin..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:127 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:162 msgctxt "@action:inmenu menubar:printer" msgid "Manage Pr&inters..." msgstr "Tulostinten &hallinta..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:134 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:169 msgctxt "@action:inmenu" msgid "Manage Materials..." msgstr "Hallitse materiaaleja..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:142 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:177 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:150 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:185 msgctxt "@action:inmenu menubar:profile" msgid "&Discard current changes" msgstr "&Hylkää tehdyt muutokset" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:162 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:197 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:168 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:203 msgctxt "@action:inmenu menubar:profile" msgid "Manage Profiles..." msgstr "Profiilien hallinta..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:175 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:210 msgctxt "@action:inmenu menubar:help" msgid "Show Online &Documentation" msgstr "Näytä sähköinen &dokumentaatio" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:183 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:218 msgctxt "@action:inmenu menubar:help" msgid "Report a &Bug" msgstr "Ilmoita &virheestä" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:191 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:226 msgctxt "@action:inmenu menubar:help" msgid "&About..." msgstr "Ti&etoja..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:198 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:233 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:208 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:243 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:217 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:252 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:226 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:261 msgctxt "@action:inmenu" msgid "Delete Model" msgstr "Poista malli" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:234 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:269 msgctxt "@action:inmenu" msgid "Ce&nter Model on Platform" msgstr "Ke&skitä malli alustalle" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:240 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:275 msgctxt "@action:inmenu menubar:edit" msgid "&Group Models" msgstr "&Ryhmittele mallit" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:250 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:295 msgctxt "@action:inmenu menubar:edit" msgid "Ungroup Models" msgstr "Poista mallien ryhmitys" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:260 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:305 msgctxt "@action:inmenu menubar:edit" msgid "&Merge Models" msgstr "&Yhdistä mallit" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:270 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:315 msgctxt "@action:inmenu" msgid "&Multiply Model..." msgstr "&Kerro malli..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:277 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:322 msgctxt "@action:inmenu menubar:edit" msgid "&Select All Models" msgstr "&Valitse kaikki mallit" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:287 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:332 msgctxt "@action:inmenu menubar:edit" msgid "&Clear Build Plate" msgstr "&Tyhjennä tulostusalusta" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:297 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:342 msgctxt "@action:inmenu menubar:file" msgid "Re&load All Models" msgstr "&Lataa kaikki mallit uudelleen" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:306 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:351 +msgctxt "@action:inmenu menubar:edit" +msgid "Arrange All Models To All Build Plates" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:358 msgctxt "@action:inmenu menubar:edit" msgid "Arrange All Models" msgstr "Järjestä kaikki mallit" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:314 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:366 msgctxt "@action:inmenu menubar:edit" msgid "Arrange Selection" msgstr "Järjestä valinta" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:321 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:373 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:328 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:380 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:335 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:387 msgctxt "@action:inmenu menubar:file" msgid "&Open File(s)..." msgstr "&Avaa tiedosto(t)..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:343 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:395 msgctxt "@action:inmenu menubar:file" msgid "&New Project..." msgstr "&Uusi projekti..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:350 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:402 msgctxt "@action:inmenu menubar:help" msgid "Show Engine &Log..." msgstr "Näytä moottorin l&oki" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:358 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:410 msgctxt "@action:inmenu menubar:help" msgid "Show Configuration Folder" msgstr "Näytä määrityskansio" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:365 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:417 msgctxt "@action:menu" msgid "Configure setting visibility..." msgstr "Määritä asetusten näkyvyys..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:372 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:424 msgctxt "@action:menu" msgid "Browse plugins..." msgstr "Selaa lisäosia..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:379 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:431 msgctxt "@action:menu" msgid "Installed plugins..." msgstr "Asennetut lisäoset..." -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:28 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:438 +msgctxt "@action:inmenu menubar:view" +msgid "Expand/Collapse Sidebar" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:26 msgctxt "@label:PrintjobStatus" msgid "Please load a 3D model" msgstr "Lataa 3D-malli" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:34 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:36 msgctxt "@label:PrintjobStatus" msgid "Ready to slice" msgstr "Valmiina viipaloimaan" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:36 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:38 msgctxt "@label:PrintjobStatus" msgid "Slicing..." msgstr "Viipaloidaan..." -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:38 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:40 msgctxt "@label:PrintjobStatus %1 is target operation" msgid "Ready to %1" msgstr "Valmis: %1" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:40 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:42 msgctxt "@label:PrintjobStatus" msgid "Unable to Slice" msgstr "Viipalointi ei onnistu" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:42 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:44 msgctxt "@label:PrintjobStatus" msgid "Slicing unavailable" msgstr "Viipalointi ei käytettävissä" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:162 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:171 +msgctxt "@info:tooltip" +msgid "Slice current printjob" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:171 +msgctxt "@info:tooltip" +msgid "Cancel slicing process" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:183 msgctxt "@label:Printjob" msgid "Prepare" msgstr "Valmistele" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:162 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:183 msgctxt "@label:Printjob" msgid "Cancel" msgstr "Peruuta" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:302 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:317 msgctxt "@info:tooltip" msgid "Select the active output device" msgstr "Valitse aktiivinen tulostusväline" #: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:19 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:620 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:696 msgctxt "@title:window" msgid "Open file(s)" msgstr "Avaa tiedosto(t)" @@ -3770,114 +4094,114 @@ msgctxt "@title:window" msgid "Ultimaker Cura" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:81 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:102 msgctxt "@title:menu menubar:toplevel" msgid "&File" msgstr "&Tiedosto" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:98 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:119 msgctxt "@action:inmenu menubar:file" msgid "&Save Selection to File" msgstr "&Tallenna valinta tiedostoon" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:107 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:128 msgctxt "@title:menu menubar:file" msgid "Save &As..." msgstr "Tallenna &nimellä…" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:118 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:139 msgctxt "@title:menu menubar:file" -msgid "Save project" -msgstr "Tallenna projekti" +msgid "Save &Project..." +msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:141 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:162 msgctxt "@title:menu menubar:toplevel" msgid "&Edit" msgstr "&Muokkaa" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:158 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:179 msgctxt "@title:menu" msgid "&View" msgstr "&Näytä" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:163 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:184 msgctxt "@title:menu" msgid "&Settings" msgstr "&Asetukset" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:165 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:186 msgctxt "@title:menu menubar:toplevel" msgid "&Printer" msgstr "&Tulostin" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:175 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:187 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:196 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:208 msgctxt "@title:menu" msgid "&Material" msgstr "&Materiaali" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:176 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:188 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:197 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:209 msgctxt "@title:menu" msgid "&Profile" msgstr "&Profiili" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:180 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:201 msgctxt "@action:inmenu" msgid "Set as Active Extruder" msgstr "Aseta aktiiviseksi suulakepuristimeksi" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:198 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:219 msgctxt "@title:menu menubar:toplevel" msgid "E&xtensions" msgstr "Laa&jennukset" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:232 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:253 msgctxt "@title:menu menubar:toplevel" msgid "P&lugins" msgstr "&Lisäosat" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:240 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:261 msgctxt "@title:menu menubar:toplevel" msgid "P&references" msgstr "L&isäasetukset" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:248 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:269 msgctxt "@title:menu menubar:toplevel" msgid "&Help" msgstr "&Ohje" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:330 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:351 msgctxt "@action:button" msgid "Open File" msgstr "Avaa tiedosto" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:442 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:512 msgctxt "@title:tab" msgid "Settings" msgstr "Asetukset" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:478 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:554 msgctxt "@title:window" msgid "New project" msgstr "Uusi projekti" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:479 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:555 msgctxt "@info:question" msgid "Are you sure you want to start a new project? This will clear the build plate and any unsaved settings." msgstr "Haluatko varmasti aloittaa uuden projektin? Se tyhjentää alustan ja kaikki tallentamattomat asetukset." -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:721 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:797 msgctxt "@window:title" msgid "Install Plugin" msgstr "Asenna laajennus" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:728 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:804 msgctxt "@title:window" msgid "Open File(s)" msgstr "Avaa tiedosto(t)" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:731 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:807 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." @@ -3902,97 +4226,82 @@ msgctxt "@action:label" msgid "Don't show project summary on save again" msgstr "Älä näytä projektin yhteenvetoa tallennettaessa" -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:264 -msgctxt "@action:button" -msgid "Save" -msgstr "Tallenna" - -#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:74 -msgctxt "@title:tab" -msgid "Prepare" -msgstr "Valmistele" - -#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:100 -msgctxt "@title:tab" -msgid "Monitor" -msgstr "Valvo" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:163 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:175 msgctxt "@label" msgid "Layer Height" msgstr "Kerroksen korkeus" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:323 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:345 msgctxt "@tooltip" msgid "A custom profile is currently active. To enable the quality slider, choose a default quality profile in Custom tab" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:340 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:362 msgctxt "@label" msgid "Print Speed" msgstr "Tulostusnopeus" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:350 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:374 msgctxt "@label" msgid "Slower" msgstr "Hitaammin" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:361 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:385 msgctxt "@label" msgid "Faster" msgstr "Nopeammin" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:388 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:423 msgctxt "@tooltip" msgid "You have modified some profile settings. If you want to change these go to custom mode." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:413 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:446 msgctxt "@label" msgid "Infill" msgstr "Täyttö" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:633 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:668 msgctxt "@label" msgid "Gradual infill will gradually increase the amount of infill towards the top." msgstr "Asteittainen täyttö lisää täytön tiheyttä vähitellen yläosaa kohti." -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:645 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:680 msgctxt "@label" msgid "Enable gradual" msgstr "Ota asteittainen käyttöön" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:712 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:747 msgctxt "@label" msgid "Generate Support" msgstr "Muodosta tuki" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:746 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:781 msgctxt "@label" msgid "Generate structures to support parts of the model which have overhangs. Without these structures, such parts would collapse during printing." msgstr "Muodosta rakenteita, jotka tukevat mallin ulokkeita sisältäviä osia. Ilman tukirakenteita kyseiset osat luhistuvat tulostuksen aikana." -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:764 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:799 msgctxt "@label" msgid "Support Extruder" msgstr "Tuen suulake" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:816 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:851 msgctxt "@label" msgid "Select which extruder to use for support. This will build up supporting structures below the model to prevent the model from sagging or printing in mid air." msgstr "Valitse tukena käytettävä suulakepuristin. Näin mallin alle rakennetaan tukirakenteita estämään mallin painuminen tai tulostuminen ilmaan." -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:839 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:874 msgctxt "@label" msgid "Build Plate Adhesion" msgstr "Alustan tarttuvuus" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:894 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:929 msgctxt "@label" msgid "Enable printing a brim or raft. This will add a flat area around or under your object which is easy to cut off afterwards." msgstr "Ota reunuksen tai pohjaristikon tulostus käyttöön. Tämä lisää kappaleen ympärille tai alle tasaisen alueen, joka on helppo leikata pois myöhemmin." -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:934 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:969 msgctxt "@label" msgid "Need help improving your prints?
      Read the Ultimaker Troubleshooting Guides" msgstr "Tarvitsetko apua tulosteiden parantamiseen?
      Lue Ultimakerin vianmääritysoppaat" @@ -4009,17 +4318,22 @@ msgctxt "@title:window" msgid "Open project file" msgstr "Avaa projektitiedosto" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:72 +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:93 msgctxt "@text:window" msgid "This is a Cura project file. Would you like to open it as a project or import the models from it?" msgstr "Tämä on Cura-projektitiedosto. Haluatko avata sen projektina vai tuoda siinä olevat mallit?" #: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:103 +msgctxt "@text:window" +msgid "Remember my choice" +msgstr "Muista valintani" + +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:122 msgctxt "@action:button" msgid "Open as project" msgstr "Avaa projektina" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:122 +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:131 msgctxt "@action:button" msgid "Import models" msgstr "Tuo mallit" @@ -4029,21 +4343,36 @@ msgctxt "@title:window" msgid "Engine Log" msgstr "Moottorin loki" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:242 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:245 msgctxt "@label" msgid "Material" msgstr "Materiaali" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:349 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:352 msgctxt "@label" -msgid "Check compatibility" +msgid "Check compatibility" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:369 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:372 msgctxt "@tooltip" msgid "Click to check the material compatibility on Ultimaker.com." msgstr "Napsauta ja tarkista materiaalin yhteensopivuus sivustolla Ultimaker.com." +#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:211 +msgctxt "@option:check" +msgid "See only current build plate" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:227 +msgctxt "@action:button" +msgid "Arrange to all build plates" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:247 +msgctxt "@action:button" +msgid "Arrange current build plate" +msgstr "" + #: MachineSettingsAction/plugin.json msgctxt "description" msgid "Provides a way to change machine settings (such as build volume, nozzle size, etc)" @@ -4134,6 +4463,26 @@ msgctxt "name" msgid "USB printing" msgstr "USB-tulostus" +#: PrepareStage/plugin.json +msgctxt "description" +msgid "Provides a prepare stage in Cura." +msgstr "" + +#: PrepareStage/plugin.json +msgctxt "name" +msgid "Prepare Stage" +msgstr "" + +#: CuraLiveScriptingPlugin/plugin.json +msgctxt "description" +msgid "Provides an edit window for direct script editing." +msgstr "" + +#: CuraLiveScriptingPlugin/plugin.json +msgctxt "name" +msgid "Live scripting tool" +msgstr "" + #: RemovableDriveOutputDevice/plugin.json msgctxt "description" msgid "Provides removable drive hotplugging and writing support." @@ -4154,6 +4503,16 @@ msgctxt "name" msgid "UM3 Network Connection" msgstr "UM3-verkkoyhteys" +#: MonitorStage/plugin.json +msgctxt "description" +msgid "Provides a monitor stage in Cura." +msgstr "" + +#: MonitorStage/plugin.json +msgctxt "name" +msgid "Monitor Stage" +msgstr "" + #: FirmwareUpdateChecker/plugin.json msgctxt "description" msgid "Checks for firmware updates." @@ -4166,8 +4525,8 @@ msgstr "Laiteohjelmiston päivitysten tarkistus" #: CuraSolidWorksPlugin/plugin.json msgctxt "description" -msgid "Gives you the possibility to open certain files via SolidWorks itself. These are then converted and loaded into Cura" -msgstr "Mahdollistaa tiettyjen tiedostojen avaamisen SolidWorks-ohjelmiston kautta. Tämän jälkeen tiedostot muunnetaan ja ladataan Curaan." +msgid "Gives you the possibility to open certain files using SolidWorks itself. Conversion is done by this plugin and additional optimizations." +msgstr "" #: CuraSolidWorksPlugin/plugin.json msgctxt "name" @@ -4234,6 +4593,16 @@ msgctxt "name" msgid "Legacy Cura Profile Reader" msgstr "Aikaisempien Cura-profiilien lukija" +#: CuraBlenderPlugin/plugin.json +msgctxt "description" +msgid "Helps to open Blender files directly in Cura." +msgstr "" + +#: CuraBlenderPlugin/plugin.json +msgctxt "name" +msgid "Blender Integration (experimental)" +msgstr "" + #: GCodeProfileReader/plugin.json msgctxt "description" msgid "Provides support for importing profiles from g-code files." @@ -4394,6 +4763,16 @@ 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." @@ -4434,6 +4813,98 @@ msgctxt "name" msgid "Cura Profile Reader" msgstr "Cura-profiilin lukija" +#~ msgctxt "@label" +#~ msgid "Unknown" +#~ msgstr "Tuntematon" + +#~ msgctxt "@info:status" +#~ msgid "Errors appeared while opening your SolidWorks file! Please check, whether it is possible to open your file in SolidWorks itself without any problems as well!" +#~ msgstr "SolidWorks-tiedostoa avattaessa ilmeni virheitä! Tarkista, voiko tiedoston avata SolidWorks-ohjelmistossa ilman ongelmia." + +#~ msgctxt "@info:status" +#~ msgid "Error while starting %s!" +#~ msgstr "%s:n käynnistyksen aikana ilmeni virhe!" + +#~ msgctxt "@info" +#~ msgid "Cura collects anonymised slicing statistics. You can disable this in the preferences." +#~ msgstr "Cura kerää anonyymejä viipalointiin liittyviä tilastotietoja. Tämän voi poistaa käytöstä asetuksien kautta." + +#~ msgctxt "@action:button" +#~ msgid "Dismiss" +#~ msgstr "Ohita" + +#~ msgctxt "@label" +#~ msgid "Material diameter" +#~ msgstr "Materiaalin halkaisija" + +#~ msgctxt "@label" +#~ msgid "Ultimaker 3" +#~ msgstr "Ultimaker 3" + +#~ msgctxt "@label" +#~ msgid "Ultimaker 3 Extended" +#~ msgstr "Ultimaker 3 Extended" + +#~ msgctxt "@title:window" +#~ msgid "Cura SolidWorks Plugin Configuration" +#~ msgstr "Cura SolidWorks -laajennuksen määritys" + +#~ msgctxt "@action:label" +#~ msgid "Default quality of the exported STL:" +#~ msgstr "Viedyn STL:n oletuslaatu:" + +#~ msgctxt "@option:curaSolidworksStlQuality" +#~ msgid "Always ask" +#~ msgstr "Kysy aina" + +#~ msgctxt "@option:curaSolidworksStlQuality" +#~ msgid "Always use Fine quality" +#~ msgstr "Käytä aina hienoa laatua" + +#~ msgctxt "@option:curaSolidworksStlQuality" +#~ msgid "Always use Coarse quality" +#~ msgstr "Käytä aina karkeaa laatua" + +#~ msgctxt "@title:window" +#~ msgid "Import SolidWorks File as STL..." +#~ msgstr "Tuo SolidWorks-tiedosto STL-muodossa..." + +#~ msgctxt "@info:tooltip" +#~ msgid "Quality of the Exported STL" +#~ msgstr "Viedyn STL:n laatu" + +#~ msgctxt "@action:label" +#~ msgid "Quality" +#~ msgstr "Laatu" + +#~ msgctxt "@option:curaSolidworksStlQuality" +#~ msgid "Coarse" +#~ msgstr "Karkea" + +#~ msgctxt "@option:curaSolidworksStlQuality" +#~ msgid "Fine" +#~ msgstr "Hieno" + +#~ msgctxt "@label" +#~ msgid "This setting is always shared between all extruders. Changing it here will change the value for all extruders" +#~ msgstr "Tämä asetus koskee aina kaikkia suulakepuristimia. Jos se vaihdetaan tässä, kaikkien suulakepuristimien arvo muuttuu" + +#~ msgctxt "@title:menu menubar:file" +#~ msgid "Save project" +#~ msgstr "Tallenna projekti" + +#~ msgctxt "@title:tab" +#~ msgid "Prepare" +#~ msgstr "Valmistele" + +#~ msgctxt "@title:tab" +#~ msgid "Monitor" +#~ msgstr "Valvo" + +#~ msgctxt "description" +#~ msgid "Gives you the possibility to open certain files via SolidWorks itself. These are then converted and loaded into Cura" +#~ msgstr "Mahdollistaa tiettyjen tiedostojen avaamisen SolidWorks-ohjelmiston kautta. Tämän jälkeen tiedostot muunnetaan ja ladataan Curaan." + #~ msgctxt "@label:status" #~ msgid "Blocked" #~ msgstr "Tukossa" @@ -4454,10 +4925,6 @@ msgstr "Cura-profiilin lukija" #~ msgid "To ensure that your {machine_name} is equipped with the latest features it is recommended to update the firmware regularly. This can be done on the {machine_name} (when connected to the network) or via USB." #~ msgstr "On suositeltavaa päivittää laiteohjelmisto säännöllisesti, jotta voidaan varmistaa, että laitteessa {machine_name} on viimeisimmät ominaisuudet. Tämä voidaan tehdä laitteessa {machine_name} (verkkoon yhdistettynä) tai USB:n kautta." -#~ msgctxt "@item:inlistbox" -#~ msgid "Layer view" -#~ msgstr "Kerrosnäkymä" - #~ msgctxt "@info:title" #~ msgid "Layer View" #~ msgstr "Kerrosnäkymä" diff --git a/resources/i18n/fi_FI/fdmextruder.def.json.po b/resources/i18n/fi_FI/fdmextruder.def.json.po index a76ee285e0..ea50325417 100644 --- a/resources/i18n/fi_FI/fdmextruder.def.json.po +++ b/resources/i18n/fi_FI/fdmextruder.def.json.po @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: Cura 3.0\n" -"Report-Msgid-Bugs-To: http://github.com/ultimaker/uranium\n" -"POT-Creation-Date: 2017-11-21 16:58+0000\n" +"Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" +"POT-Creation-Date: 2017-08-02 16:53+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 23ed6b0da4..678d6afcec 100644 --- a/resources/i18n/fi_FI/fdmprinter.def.json.po +++ b/resources/i18n/fi_FI/fdmprinter.def.json.po @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: Cura 3.0\n" -"Report-Msgid-Bugs-To: http://github.com/ultimaker/uranium\n" -"POT-Creation-Date: 2017-11-21 16:58+0000\n" +"Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" +"POT-Creation-Date: 2017-08-02 16:53+0000\n" "PO-Revision-Date: 2017-09-27 12:27+0200\n" "Last-Translator: Bothof \n" "Language-Team: Finnish\n" @@ -349,6 +349,16 @@ msgctxt "machine_gcode_flavor option Repetier" msgid "Repetier" msgstr "Repetier" +#: fdmprinter.def.json +msgctxt "machine_firmware_retract label" +msgid "Firmware Retraction" +msgstr "" + +#: fdmprinter.def.json +msgctxt "machine_firmware_retract description" +msgid "Whether to use firmware retract commands (G10/G11) instead of using the E property in G1 commands to retract the material." +msgstr "" + #: fdmprinter.def.json msgctxt "machine_disallowed_areas label" msgid "Disallowed areas" @@ -609,31 +619,6 @@ msgctxt "layer_height_0 description" msgid "The height of the initial layer in mm. A thicker initial layer makes adhesion to the build plate easier." msgstr "Alkukerroksen korkeus milleinä. Paksumpi alkukerros helpottaa alustaan kiinnittymistä." -#: fdmprinter.def.json -msgctxt "slicing_tolerance label" -msgid "Slicing Tolerance" -msgstr "" - -#: fdmprinter.def.json -msgctxt "slicing_tolerance description" -msgid "How to slice layers with diagonal surfaces. The areas of a layer can be generated based on where the middle of the layer intersects the surface (Middle). Alternatively each layer can have the areas which fall inside of the volume throughout the height of the layer (Exclusive) or a layer has the areas which fall inside anywhere within the layer (Inclusive). Exclusive retains the most details, Inclusive makes for the best fit and Middle takes the least time to process." -msgstr "" - -#: fdmprinter.def.json -msgctxt "slicing_tolerance option middle" -msgid "Middle" -msgstr "" - -#: fdmprinter.def.json -msgctxt "slicing_tolerance option exclusive" -msgid "Exclusive" -msgstr "" - -#: fdmprinter.def.json -msgctxt "slicing_tolerance option inclusive" -msgid "Inclusive" -msgstr "" - #: fdmprinter.def.json msgctxt "line_width label" msgid "Line Width" @@ -674,16 +659,6 @@ msgctxt "wall_line_width_x description" msgid "Width of a single wall line for all wall lines except the outermost one." msgstr "Yhden seinämälinjan leveys. Koskee kaikkia muita paitsi ulommaista seinämää." -#: fdmprinter.def.json -msgctxt "roofing_line_width label" -msgid "Top Surface Skin Line Width" -msgstr "Yläpinnan pintakalvon linjan leveys" - -#: fdmprinter.def.json -msgctxt "roofing_line_width description" -msgid "Width of a single line of the areas at the top of the print." -msgstr "Tulosteen yläosan alueiden yhden linjan leveys." - #: fdmprinter.def.json msgctxt "skin_line_width label" msgid "Top/Bottom Line Width" @@ -864,41 +839,6 @@ msgctxt "roofing_layer_count description" msgid "The number of top most skin layers. Usually only one top most layer is sufficient to generate higher quality top surfaces." msgstr "Ylimpien pintakalvokerrosten määrä. Yleensä vain yksi ylin kerros riittää tuottamaan korkeampilaatuisia yläpintoja." -#: fdmprinter.def.json -msgctxt "roofing_pattern label" -msgid "Top Surface Skin Pattern" -msgstr "Yläpinnan pintakalvokuvio" - -#: fdmprinter.def.json -msgctxt "roofing_pattern description" -msgid "The pattern of the top most layers." -msgstr "Ylimpien kerrosten kuvio." - -#: fdmprinter.def.json -msgctxt "roofing_pattern option lines" -msgid "Lines" -msgstr "Linjat" - -#: fdmprinter.def.json -msgctxt "roofing_pattern option concentric" -msgid "Concentric" -msgstr "Samankeskinen" - -#: fdmprinter.def.json -msgctxt "roofing_pattern option zigzag" -msgid "Zig Zag" -msgstr "Siksak" - -#: fdmprinter.def.json -msgctxt "roofing_angles label" -msgid "Top Surface Skin Line Directions" -msgstr "Yläpinnan pintakalvon linjojen suunnat" - -#: fdmprinter.def.json -msgctxt "roofing_angles description" -msgid "A list of integer line directions to use when the top surface skin layers use the lines or zig zag pattern. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the traditional default angles (45 and 135 degrees)." -msgstr "Luettelo käytettävistä linjojen kokonaislukusuunnista, kun yläpinnan pintakalvokerroksilla käytetään linja- tai siksak-kuviota. Tämän luettelon elementtejä käytetään järjestyksessä kerrosten edetessä, ja kun luettelon loppu saavutetaan, aloitetaan taas alusta. Luettelon kohteet on erotettu pilkuilla, ja koko luettelo on hakasulkeiden sisällä. Oletusarvo on tyhjä luettelo, jolloin käytetään perinteisiä oletuskulmia (45 ja 135 astetta)." - #: fdmprinter.def.json msgctxt "top_bottom_extruder_nr label" msgid "Top/Bottom Extruder" @@ -1029,6 +969,16 @@ msgctxt "wall_0_inset description" msgid "Inset applied to the path of the outer wall. If the outer wall is smaller than the nozzle, and printed after the inner walls, use this offset to get the hole in the nozzle to overlap with the inner walls instead of the outside of the model." msgstr "Ulkoseinämän reitille asetettu liitos. Jos ulkoseinämä on pienempi kuin suutin ja se tulostetaan sisäseinämien jälkeen, tällä siirtymällä saadaan suuttimen reikä limittymään sisäseinämiin mallin ulkopuolen sijaan." +#: fdmprinter.def.json +msgctxt "optimize_wall_printing_order label" +msgid "Optimize Wall Printing Order" +msgstr "Optimoi seinämien tulostusjärjestys" + +#: fdmprinter.def.json +msgctxt "optimize_wall_printing_order description" +msgid "Optimize the order in which walls are printed so as to reduce the number of retractions and the distance travelled. Most parts will benefit from this being enabled but some may actually take longer so please compare the print time estimates with and without optimization." +msgstr "Optimoi seinämien tulostusjärjestys takaisinvetojen ja kuljetun etäisyyden vähentämiseksi. Useimmat osat hyötyvät tämän asetuksen käytöstä, mutta joissakin saattaa kestää kauemmin, joten vertaa tulostusajan arvioita optimointia käytettäessä ja ilman sitä." + #: fdmprinter.def.json msgctxt "outer_inset_first label" msgid "Outer Before Inner Walls" @@ -1099,6 +1049,16 @@ msgctxt "fill_perimeter_gaps option everywhere" msgid "Everywhere" msgstr "Kaikkialla" +#: fdmprinter.def.json +msgctxt "filter_out_tiny_gaps label" +msgid "Filter Out Tiny Gaps" +msgstr "" + +#: fdmprinter.def.json +msgctxt "filter_out_tiny_gaps description" +msgid "Filter out tiny gaps to reduce blobs on outside of model." +msgstr "" + #: fdmprinter.def.json msgctxt "fill_outline_gaps label" msgid "Print Thin Walls" @@ -1481,7 +1441,7 @@ msgstr "" #: fdmprinter.def.json msgctxt "infill_offset_x description" -msgid "The infill pattern is offset this distance along the X axis." +msgid "The infill pattern is moved this distance along the X axis." msgstr "" #: fdmprinter.def.json @@ -1491,7 +1451,7 @@ msgstr "" #: fdmprinter.def.json msgctxt "infill_offset_y description" -msgid "The infill pattern is offset this distance along the Y axis." +msgid "The infill pattern is moved this distance along the Y axis." msgstr "" #: fdmprinter.def.json @@ -1511,8 +1471,8 @@ msgstr "Täytön limityksen prosentti" #: fdmprinter.def.json msgctxt "infill_overlap 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." +msgid "The amount of overlap between the infill and the walls as a percentage of the infill line width. A slight overlap allows the walls to connect firmly to the infill." +msgstr "" #: fdmprinter.def.json msgctxt "infill_overlap_mm label" @@ -1531,8 +1491,8 @@ msgstr "Pintakalvon limityksen prosentti" #: fdmprinter.def.json msgctxt "skin_overlap description" -msgid "The amount of overlap between the skin and the walls as a percentage of the line width. A slight overlap allows the walls to connect firmly to the skin. This is a percentage of the average line widths of the skin lines and the innermost wall." -msgstr "Limityksen määrä pintakalvon ja seinämien välillä linjaleveyden prosenttina. Pienellä limityksellä seinämät liittyvät tukevasti pintakalvoon. Tämä on pintakalvon linjojen ja sisimmän seinämän keskimääräisten linjaleveyksien prosenttiluku." +msgid "The amount of overlap between the skin and the walls as a percentage of the skin line width. A slight overlap allows the walls to connect firmly to the skin. This is a percentage of the average line widths of the skin lines and the innermost wall." +msgstr "" #: fdmprinter.def.json msgctxt "skin_overlap_mm label" @@ -1694,16 +1654,6 @@ msgctxt "material description" msgid "Material" msgstr "Materiaali" -#: fdmprinter.def.json -msgctxt "material_flow_dependent_temperature label" -msgid "Auto Temperature" -msgstr "Automaattinen lämpötila" - -#: fdmprinter.def.json -msgctxt "material_flow_dependent_temperature description" -msgid "Change the temperature for each layer automatically with the average flow speed of that layer." -msgstr "Muuta kunkin kerroksen lämpötilaa automaattisesti kyseisen kerroksen keskimääräisen virtausnopeuden mukaan." - #: fdmprinter.def.json msgctxt "default_material_print_temperature label" msgid "Default Printing Temperature" @@ -1754,16 +1704,6 @@ msgctxt "material_final_print_temperature description" msgid "The temperature to which to already start cooling down just before the end of printing." msgstr "Lämpötila, johon jäähdytetään jo ennen tulostuksen loppumista." -#: fdmprinter.def.json -msgctxt "material_flow_temp_graph label" -msgid "Flow Temperature Graph" -msgstr "Virtauksen lämpötilakaavio" - -#: fdmprinter.def.json -msgctxt "material_flow_temp_graph description" -msgid "Data linking material flow (in mm3 per second) to temperature (degrees Celsius)." -msgstr "Tiedot, jotka yhdistävät materiaalivirran (mm3 sekunnissa) lämpötilaan (celsiusastetta)." - #: fdmprinter.def.json msgctxt "material_extrusion_cool_down_speed label" msgid "Extrusion Cool Down Speed Modifier" @@ -1781,8 +1721,8 @@ msgstr "Alustan lämpötila" #: fdmprinter.def.json msgctxt "material_bed_temperature description" -msgid "The temperature used for the heated build plate. If this is 0, the bed will not heat up for this print." -msgstr "Lämmitettävän alustan lämpötila. Jos tämä on 0, pöytä ei lämpene tätä tulostusta varten." +msgid "The temperature used for the heated build plate. If this is 0, the bed temperature will not be adjusted." +msgstr "" #: fdmprinter.def.json msgctxt "material_bed_temperature_layer_0 label" @@ -3454,6 +3394,16 @@ msgctxt "support_tower_roof_angle description" msgid "The angle of a rooftop of a tower. A higher value results in pointed tower roofs, a lower value results in flattened tower roofs." msgstr "Tornin katon kulma. Korkeampi arvo johtaa teräväkärkisiin tornien kattoihin, matalampi arvo litteämpiin tornien kattoihin." +#: fdmprinter.def.json +msgctxt "support_mesh_drop_down label" +msgid "Drop Down Support Mesh" +msgstr "Tukiverkon pudottaminen alaspäin" + +#: fdmprinter.def.json +msgctxt "support_mesh_drop_down description" +msgid "Make support everywhere below the support mesh, so that there's no overhang in the support mesh." +msgstr "Muodosta tukea kaikkialle tukiverkon alla, niin ettei tukiverkossa ole ulokkeita." + #: fdmprinter.def.json msgctxt "platform_adhesion label" msgid "Build Plate Adhesion" @@ -4086,16 +4036,6 @@ msgctxt "meshfix_keep_open_polygons description" msgid "Normally Cura tries to stitch up small holes in the mesh and remove parts of a layer with big holes. Enabling this option keeps those parts which cannot be stitched. This option should be used as a last resort option when everything else fails to produce proper GCode." msgstr "Normaalisti Cura yrittää silmukoida umpeen pieniä reikiä verkosta ja poistaa kerroksesta osat, joissa on isoja reikiä. Tämän vaihtoehdon käyttöönotto pitää ne osat, joita ei voida silmukoida. Tätä tulisi pitää viimeisenä vaihtoehtona, kun millään muulla ei saada aikaan kunnollista GCodea." -#: 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 "multiple_mesh_overlap label" msgid "Merged Meshes Overlap" @@ -4246,16 +4186,6 @@ msgctxt "support_mesh description" msgid "Use this mesh to specify support areas. This can be used to generate support structure." msgstr "Käytä tätä verkkoa tukialueiden valintaan. Sen avulla voidaan luoda tukirakenne." -#: fdmprinter.def.json -msgctxt "support_mesh_drop_down label" -msgid "Drop Down Support Mesh" -msgstr "Tukiverkon pudottaminen alaspäin" - -#: fdmprinter.def.json -msgctxt "support_mesh_drop_down description" -msgid "Make support everywhere below the support mesh, so that there's no overhang in the support mesh." -msgstr "Muodosta tukea kaikkialle tukiverkon alla, niin ettei tukiverkossa ole ulokkeita." - #: fdmprinter.def.json msgctxt "anti_overhang_mesh label" msgid "Anti Overhang Mesh" @@ -4332,14 +4262,194 @@ msgid "experimental!" msgstr "kokeellinen!" #: fdmprinter.def.json -msgctxt "optimize_wall_printing_order label" -msgid "Optimize Wall Printing Order" -msgstr "Optimoi seinämien tulostusjärjestys" +msgctxt "support_tree_enable label" +msgid "Tree Support" +msgstr "" #: fdmprinter.def.json -msgctxt "optimize_wall_printing_order description" -msgid "Optimize the order in which walls are printed so as to reduce the number of retractions and the distance travelled. Most parts will benefit from this being enabled but some may actually take longer so please compare the print time estimates with and without optimization." -msgstr "Optimoi seinämien tulostusjärjestys takaisinvetojen ja kuljetun etäisyyden vähentämiseksi. Useimmat osat hyötyvät tämän asetuksen käytöstä, mutta joissakin saattaa kestää kauemmin, joten vertaa tulostusajan arvioita optimointia käytettäessä ja ilman sitä." +msgctxt "support_tree_enable description" +msgid "Generate a tree-like support with branches that support your print. This may reduce material usage and print time, but greatly increases slicing time." +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_tree_angle label" +msgid "Tree Support Branch Angle" +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_tree_angle description" +msgid "The angle of the branches. Use a lower angle to make them more vertical and more stable. Use a higher angle to be able to have more reach." +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_tree_branch_distance label" +msgid "Tree Support Branch Distance" +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_tree_branch_distance description" +msgid "How far apart the branches need to be when they touch the model. Making this distance small will cause the tree support to touch the model at more points, causing better overhang but making support harder to remove." +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_tree_branch_diameter label" +msgid "Tree Support Branch Diameter" +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_tree_branch_diameter description" +msgid "The diameter of the thinnest branches of tree support. Thicker branches are more sturdy. Branches towards the base will be thicker than this." +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_tree_branch_diameter_angle label" +msgid "Tree Support Branch Diameter Angle" +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_tree_branch_diameter_angle description" +msgid "The angle of the branches' diameter as they gradually become thicker towards the bottom. An angle of 0 will cause the branches to have uniform thickness over their length. A bit of an angle can increase stability of the tree support." +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_tree_collision_resolution label" +msgid "Tree Support Collision Resolution" +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_tree_collision_resolution description" +msgid "Resolution to compute collisions with to avoid hitting the model. Setting this lower will produce more accurate trees that fail less often, but increases slicing time dramatically." +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_tree_wall_thickness label" +msgid "Tree Support Wall Thickness" +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_tree_wall_thickness description" +msgid "The thickness of the walls of the branches of tree support. Thicker walls take longer to print but don't fall over as easily." +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_tree_wall_count label" +msgid "Tree Support Wall Line Count" +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_tree_wall_count description" +msgid "The number of walls of the branches of tree support. Thicker walls take longer to print but don't fall over as easily." +msgstr "" + +#: fdmprinter.def.json +msgctxt "slicing_tolerance label" +msgid "Slicing Tolerance" +msgstr "" + +#: fdmprinter.def.json +msgctxt "slicing_tolerance description" +msgid "How to slice layers with diagonal surfaces. The areas of a layer can be generated based on where the middle of the layer intersects the surface (Middle). Alternatively each layer can have the areas which fall inside of the volume throughout the height of the layer (Exclusive) or a layer has the areas which fall inside anywhere within the layer (Inclusive). Exclusive retains the most details, Inclusive makes for the best fit and Middle takes the least time to process." +msgstr "" + +#: fdmprinter.def.json +msgctxt "slicing_tolerance option middle" +msgid "Middle" +msgstr "" + +#: fdmprinter.def.json +msgctxt "slicing_tolerance option exclusive" +msgid "Exclusive" +msgstr "" + +#: fdmprinter.def.json +msgctxt "slicing_tolerance option inclusive" +msgid "Inclusive" +msgstr "" + +#: fdmprinter.def.json +msgctxt "roofing_line_width label" +msgid "Top Surface Skin Line Width" +msgstr "Yläpinnan pintakalvon linjan leveys" + +#: fdmprinter.def.json +msgctxt "roofing_line_width description" +msgid "Width of a single line of the areas at the top of the print." +msgstr "Tulosteen yläosan alueiden yhden linjan leveys." + +#: fdmprinter.def.json +msgctxt "roofing_pattern label" +msgid "Top Surface Skin Pattern" +msgstr "Yläpinnan pintakalvokuvio" + +#: fdmprinter.def.json +msgctxt "roofing_pattern description" +msgid "The pattern of the top most layers." +msgstr "Ylimpien kerrosten kuvio." + +#: fdmprinter.def.json +msgctxt "roofing_pattern option lines" +msgid "Lines" +msgstr "Linjat" + +#: fdmprinter.def.json +msgctxt "roofing_pattern option concentric" +msgid "Concentric" +msgstr "Samankeskinen" + +#: fdmprinter.def.json +msgctxt "roofing_pattern option zigzag" +msgid "Zig Zag" +msgstr "Siksak" + +#: fdmprinter.def.json +msgctxt "roofing_angles label" +msgid "Top Surface Skin Line Directions" +msgstr "Yläpinnan pintakalvon linjojen suunnat" + +#: fdmprinter.def.json +msgctxt "roofing_angles description" +msgid "A list of integer line directions to use when the top surface skin layers use the lines or zig zag pattern. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the traditional default angles (45 and 135 degrees)." +msgstr "Luettelo käytettävistä linjojen kokonaislukusuunnista, kun yläpinnan pintakalvokerroksilla käytetään linja- tai siksak-kuviota. Tämän luettelon elementtejä käytetään järjestyksessä kerrosten edetessä, ja kun luettelon loppu saavutetaan, aloitetaan taas alusta. Luettelon kohteet on erotettu pilkuilla, ja koko luettelo on hakasulkeiden sisällä. Oletusarvo on tyhjä luettelo, jolloin käytetään perinteisiä oletuskulmia (45 ja 135 astetta)." + +#: fdmprinter.def.json +msgctxt "infill_enable_travel_optimization label" +msgid "Infill Travel Optimization" +msgstr "" + +#: fdmprinter.def.json +msgctxt "infill_enable_travel_optimization description" +msgid "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." +msgstr "" + +#: fdmprinter.def.json +msgctxt "material_flow_dependent_temperature label" +msgid "Auto Temperature" +msgstr "Automaattinen lämpötila" + +#: fdmprinter.def.json +msgctxt "material_flow_dependent_temperature description" +msgid "Change the temperature for each layer automatically with the average flow speed of that layer." +msgstr "Muuta kunkin kerroksen lämpötilaa automaattisesti kyseisen kerroksen keskimääräisen virtausnopeuden mukaan." + +#: fdmprinter.def.json +msgctxt "material_flow_temp_graph label" +msgid "Flow Temperature Graph" +msgstr "Virtauksen lämpötilakaavio" + +#: fdmprinter.def.json +msgctxt "material_flow_temp_graph description" +msgid "Data linking material flow (in mm3 per second) to temperature (degrees Celsius)." +msgstr "Tiedot, jotka yhdistävät materiaalivirran (mm3 sekunnissa) lämpötilaan (celsiusastetta)." + +#: 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 "support_skip_some_zags label" @@ -4940,6 +5050,46 @@ msgctxt "wireframe_nozzle_clearance description" msgid "Distance between the nozzle and horizontally downward lines. Larger clearance results in diagonally downward lines with a less steep angle, which in turn results in less upward connections with the next layer. Only applies to Wire Printing." msgstr "Suuttimen ja vaakasuoraan laskevien linjojen välinen etäisyys. Suurempi väli aiheuttaa vähemmän jyrkän kulman diagonaalisesti laskeviin linjoihin, mikä puolestaan johtaa harvempiin yläliitoksiin seuraavan kerroksen kanssa. Koskee vain rautalankamallin tulostusta." +#: fdmprinter.def.json +msgctxt "adaptive_layer_height_enabled label" +msgid "Use adaptive layers" +msgstr "" + +#: fdmprinter.def.json +msgctxt "adaptive_layer_height_enabled description" +msgid "Adaptive layers computes the layer heights depending on the shape of the model." +msgstr "" + +#: fdmprinter.def.json +msgctxt "adaptive_layer_height_variation label" +msgid "Adaptive layers maximum variation" +msgstr "" + +#: fdmprinter.def.json +msgctxt "adaptive_layer_height_variation description" +msgid "The maximum allowed height different from the base layer height in mm." +msgstr "" + +#: fdmprinter.def.json +msgctxt "adaptive_layer_height_variation_step label" +msgid "Adaptive layers variation step size" +msgstr "" + +#: fdmprinter.def.json +msgctxt "adaptive_layer_height_variation_step description" +msgid "The difference in height of the next layer height compared to the previous one." +msgstr "" + +#: fdmprinter.def.json +msgctxt "adaptive_layer_height_threshold label" +msgid "Adaptive layers threshold" +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 "" + #: fdmprinter.def.json msgctxt "command_line_settings label" msgid "Command Line Settings" @@ -5000,6 +5150,18 @@ 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 "infill_overlap 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." + +#~ msgctxt "skin_overlap description" +#~ msgid "The amount of overlap between the skin and the walls as a percentage of the line width. A slight overlap allows the walls to connect firmly to the skin. This is a percentage of the average line widths of the skin lines and the innermost wall." +#~ msgstr "Limityksen määrä pintakalvon ja seinämien välillä linjaleveyden prosenttina. Pienellä limityksellä seinämät liittyvät tukevasti pintakalvoon. Tämä on pintakalvon linjojen ja sisimmän seinämän keskimääräisten linjaleveyksien prosenttiluku." + +#~ msgctxt "material_bed_temperature description" +#~ msgid "The temperature used for the heated build plate. If this is 0, the bed will not heat up for this print." +#~ msgstr "Lämmitettävän alustan lämpötila. Jos tämä on 0, pöytä ei lämpene tätä tulostusta varten." + #~ msgctxt "wall_x_extruder_nr label" #~ msgid "Inner Walls Extruder" #~ msgstr "Sisäseinämien suulake" diff --git a/resources/i18n/fr_FR/cura.po b/resources/i18n/fr_FR/cura.po index 4db845190f..ee4e175f8a 100644 --- a/resources/i18n/fr_FR/cura.po +++ b/resources/i18n/fr_FR/cura.po @@ -1,22 +1,24 @@ # Cura -# Copyright (C) 2017 Ultimaker +# Copyright (C) 2018 Ultimaker # This file is distributed under the same license as the Cura package. -# Ruben Dulek , 2017. -# +# Ruben Dulek , 2018. +# msgid "" msgstr "" -"Project-Id-Version: Cura 3.0\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-11-21 16:58+0100\n" -"PO-Revision-Date: 2017-11-30 13:05+0100\n" +"Project-Id-Version: Cura 3.2\n" +"Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" +"POT-Creation-Date: 2018-01-29 09:48+0000\n" +"PO-Revision-Date: 2018-02-13 17:26+0100\n" "Last-Translator: Bothof \n" "Language-Team: French\n" "Language: fr_FR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Generator: Poedit 2.0.6\n" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:29 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:26 msgctxt "@action" msgid "Machine Settings" msgstr "Paramètres de la machine" @@ -53,12 +55,11 @@ msgstr "Connexion avec Doodle3D Connecter..." #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:87 #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:155 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:874 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:646 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:875 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:659 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:370 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrintWindow.qml:78 -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:104 -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:99 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:355 #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:188 #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:376 #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:139 @@ -98,7 +99,7 @@ msgctxt "@info:tooltip" msgid "Open the Doodle3D Connect web interface" msgstr "Ouvrir l'interface web Doodle3D Connecter" -#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:34 +#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:33 msgctxt "@item:inmenu" msgid "Show Changelog" msgstr "Afficher le récapitulatif des changements" @@ -106,85 +107,90 @@ msgstr "Afficher le récapitulatif des changements" #: /home/ruben/Projects/Cura/plugins/ProfileFlattener/ProfileFlattener.py:20 msgctxt "@item:inmenu" msgid "Flatten active settings" -msgstr "Aplatir les paramètres actifs" +msgstr "Réduire les paramètres actifs" #: /home/ruben/Projects/Cura/plugins/ProfileFlattener/ProfileFlattener.py:32 msgctxt "@info:status" msgid "Profile has been flattened & activated." -msgstr "Le profil a été aplati et activé." +msgstr "Le profil a été réduit et activé." -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:26 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:27 msgctxt "@item:inmenu" msgid "USB printing" msgstr "Impression par USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:27 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:28 msgctxt "@action:button Preceded by 'Ready to'." msgid "Print via USB" msgstr "Imprimer via USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:28 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:29 msgctxt "@info:tooltip" msgid "Print via USB" msgstr "Imprimer via USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:30 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:31 msgctxt "@info:status" msgid "Connected via USB" msgstr "Connecté via USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:154 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:183 msgctxt "@info:status" msgid "Unable to start a new job because the printer is busy or not connected." msgstr "Impossible de démarrer une nouvelle tâche car l'imprimante est occupée ou n'est pas connectée." -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:154 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:183 msgctxt "@info:title" msgid "Printer Unavailable" msgstr "Imprimante indisponible" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:457 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:485 msgctxt "@info:status" msgid "This printer does not support USB printing because it uses UltiGCode flavor." -msgstr "L'imprimante ne prend pas en charge l'impression par USB car elle utilise UltiGCode parfum." +msgstr "L'imprimante ne prend pas en charge l'impression par USB car elle utilise UltiGCode." -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:457 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:485 msgctxt "@info:title" msgid "USB Printing" msgstr "Impression par USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:461 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:489 msgctxt "@info:status" msgid "Unable to start a new job because the printer does not support usb printing." msgstr "Impossible de démarrer une nouvelle tâche car l'imprimante ne prend pas en charge l'impression par USB." -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:461 -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:108 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:489 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:103 #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:146 #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:158 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:945 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1349 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1417 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:946 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1418 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1496 msgctxt "@info:title" msgid "Warning" msgstr "Avertissement" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:108 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:103 msgctxt "@info" msgid "Unable to update firmware because there are no printers connected." msgstr "Impossible de mettre à jour le firmware car il n'y a aucune imprimante connectée." -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:122 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:117 #, python-format msgctxt "@info" msgid "Could not find firmware required for the printer at %s." msgstr "Impossible de trouver le firmware requis pour l'imprimante sur %s." -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:122 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:117 msgctxt "@info:title" msgid "Printer Firmware" msgstr "Firmware de l'imprimante" +#: /home/ruben/Projects/Cura/plugins/PrepareStage/__init__.py:12 +msgctxt "@item:inmenu" +msgid "Prepare" +msgstr "Préparer" + #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:23 msgctxt "@action:button Preceded by 'Ready to'." msgid "Save to Removable Drive" @@ -205,7 +211,7 @@ msgstr "Enregistrement sur le lecteur amovible {0}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:89 msgctxt "@info:title" msgid "Saving" -msgstr "Enregistrement..." +msgstr "Enregistrement" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:99 #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:102 @@ -228,11 +234,11 @@ 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:132 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:692 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:700 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:146 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:693 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:701 #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:153 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1358 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:160 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1427 msgctxt "@info:title" msgid "Error" msgstr "Erreur" @@ -263,7 +269,7 @@ msgstr "Ejecter le lecteur amovible {0}" #, python-brace-format msgctxt "@info:status" msgid "Ejected {0}. You can now safely remove the drive." -msgstr "Lecteur {0} éjecté. Vous pouvez maintenant le retirer en tout sécurité." +msgstr "Lecteur {0} éjecté. Vous pouvez maintenant le retirer en toute sécurité." #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:156 msgctxt "@info:title" @@ -282,7 +288,7 @@ msgid "Removable Drive" msgstr "Lecteur amovible" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:109 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:53 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:51 msgctxt "@action:button Preceded by 'Ready to'." msgid "Print over network" msgstr "Imprimer sur le réseau" @@ -368,22 +374,22 @@ msgstr "Connecté sur le réseau. Pas d'accès pour commander l'imprimante." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:410 msgctxt "@info:status" msgid "Access request was denied on the printer." -msgstr "La demande d'accès a été refusée sur l'imprimante." +msgstr "La demande d'accès à l'imprimante a été refusée." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:413 msgctxt "@info:status" msgid "Access request failed due to a timeout." -msgstr "Échec de la demande d'accès à cause de la durée limite." +msgstr "Durée d'attente dépassée. Échec de la demande d'accès." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:478 msgctxt "@info:status" msgid "The connection with the network was lost." -msgstr "La connexion avec le réseau a été perdue." +msgstr "Interruption de connexion au le réseau." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:501 msgctxt "@info:status" msgid "The connection with the printer was lost. Check your printer to see if it is connected." -msgstr "La connexion avec l'imprimante a été perdue. Vérifiez que votre imprimante est connectée." +msgstr "La connexion avec l'imprimante est interrompue. Vérifiez que votre imprimante est connectée." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:666 #, python-format @@ -396,113 +402,113 @@ msgctxt "@info:title" msgid "Printer Status" msgstr "Statut de l'imprimante" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:691 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:692 #, python-brace-format msgctxt "@info:status" msgid "Unable to start a new print job. No Printcore loaded in slot {0}" msgstr "Impossible de démarrer une nouvelle tâche d'impression. Pas de PrintCore inséré dans la fente {0}." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:699 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:700 #, python-brace-format msgctxt "@info:status" msgid "Unable to start a new print job. No material loaded in slot {0}" msgstr "Impossible de démarrer une nouvelle tâche d'impression car l'imprimante est occupée. Pas de matériau chargé dans la fente {0}." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:709 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:710 #, python-brace-format msgctxt "@label" msgid "Not enough material for spool {0}." -msgstr "Pas suffisamment de matériau pour bobine {0}." +msgstr "Pas suffisamment de matériau pour la bobine {0}." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:719 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:720 #, python-brace-format msgctxt "@label" msgid "Different PrintCore (Cura: {0}, Printer: {1}) selected for extruder {2}" -msgstr "PrintCore différent (Cura : {0}, Imprimante : {1}) sélectionné pour l'extrudeuse {2}" +msgstr "PrintCore différent (Cura : {0}, Imprimante : {1}) sélectionné pour l'extrudeur {2}" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:733 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:734 #, 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}" +msgstr "Matériau différent (Cura : {0}, Imprimante : {1}) sélectionné pour l'extrudeur {2}" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:741 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:742 #, python-brace-format msgctxt "@label" msgid "PrintCore {0} is not properly calibrated. XY calibration needs to be performed on the printer." msgstr "Le PrintCore {0} n'est pas correctement calibré. Le calibrage XY doit être effectué sur l'imprimante." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:746 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:747 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/NetworkPrinterOutputDevice.py:747 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:748 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." +msgstr "Problème de compatibilité entre la configuration ou la calibration de l'imprimante et Cura. Pour un résultat optimal, découpez toujours les PrintCores et matériaux insérés dans votre imprimante." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:753 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:754 msgctxt "@window:title" msgid "Mismatched configuration" msgstr "Configuration différente" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:864 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:262 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:865 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:258 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/NetworkPrinterOutputDevice.py:873 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:874 msgctxt "@info:status" msgid "Sending data to printer" msgstr "Envoi des données à l'imprimante" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:873 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:874 msgctxt "@info:title" msgid "Sending Data" -msgstr "Envoi des données..." +msgstr "Envoi des données" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:944 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:945 msgctxt "@info:status" msgid "Unable to send data to printer. Is another job still active?" msgstr "Impossible d'envoyer les données à l'imprimante. Une autre tâche est-elle toujours active ?" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1085 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1087 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:196 msgctxt "@label:MonitorStatus" msgid "Aborting print..." msgstr "Abandon de l'impression..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1091 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1093 msgctxt "@label:MonitorStatus" msgid "Print aborted. Please check the printer" msgstr "Abandon de l'impression. Vérifiez l'imprimante" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1097 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1099 msgctxt "@label:MonitorStatus" msgid "Pausing print..." msgstr "Mise en pause de l'impression..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1099 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1101 msgctxt "@label:MonitorStatus" msgid "Resuming print..." msgstr "Reprise de l'impression..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1289 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1291 msgctxt "@window:title" msgid "Sync with your printer" msgstr "Synchroniser avec votre imprimante" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1291 -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/NetworkPrinterOutputDevice.py:1293 msgctxt "@label" +msgid "Would you like to use your current printer configuration in Cura?" +msgstr "Voulez-vous utiliser votre configuration actuelle d'imprimante dans Cura ?" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1295 +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." +msgstr "Les PrintCores et / ou les matériaux sur votre imprimante sont différents de ceux de votre projet actuel. Pour un résultat optimal, découpez toujours les PrintCores et matériaux insérés dans votre imprimante." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:112 msgid "This printer is not set up to host a group of connected Ultimaker 3 printers." @@ -517,164 +523,252 @@ msgstr "L'imprimante n'est pas configurée pour héberger un groupe de {count} i #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:114 #, python-brace-format msgid "{printer_name} has finished printing '{job_name}'. Please collect the print and confirm clearing the build plate." -msgstr "{printer_name} a terminé d'imprimer '{job_name}'. Veuillez enlever l'impression et confirmer avoir débarrassé le plateau." +msgstr "{printer_name} a terminé d'imprimer '{job_name}'. Veuillez enlever l'impression et confirmer avoir nettoyé le plateau." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:115 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:520 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:533 #, python-brace-format msgid "{printer_name} is reserved to print '{job_name}'. Please change the printer's configuration to match the job, for it to start printing." msgstr "{printer_name} est réservé pour imprimer '{job_name}'. Veuillez modifier la configuration de l'imprimante pour qu'elle corresponde à la tâche et commence l'impression." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:278 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:277 msgctxt "@info:status" msgid "Unable to send new print job: this 3D printer is not (yet) set up to host a group of connected Ultimaker 3 printers." msgstr "Impossible d'envoyer une nouvelle tâche d'impression : cette imprimante 3D n'est pas (encore) configurée pour héberger un groupe d'imprimantes connectées Ultimaker 3." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:410 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:423 #, python-brace-format msgctxt "@info:status" msgid "Unable to send print job to group {cluster_name}." msgstr "Impossible d'envoyer la tâche d'impression vers le groupe {cluster_name}." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:418 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:431 #, python-brace-format msgctxt "@info:status" msgid "Sent {file_name} to group {cluster_name}." msgstr "{file_name} envoyé vers le groupe {cluster_name}." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:423 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:436 msgctxt "@action:button" msgid "Show print jobs" msgstr "Afficher les tâches d'impression" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:424 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:437 msgctxt "@info:tooltip" msgid "Opens the print jobs interface in your browser." msgstr "Ouvre l'interface d'impression des tâches dans votre navigateur." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:489 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:502 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:239 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:47 -msgctxt "@label" +msgctxt "@label Printer name" msgid "Unknown" msgstr "Inconnu" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:492 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:505 #, 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/NetworkClusterPrinterOutputDevice.py:494 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:497 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:507 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:510 msgctxt "@info:status" msgid "Print finished" msgstr "Impression terminée" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:522 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:525 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:535 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:538 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:282 msgctxt "@label:status" msgid "Action required" msgstr "Action requise" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:643 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:656 #, python-brace-format msgctxt "@info:progress" msgid "Sending {file_name} to group {cluster_name}" msgstr "Envoi de {file_name} vers le groupe {cluster_name}..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.py:19 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.py:17 msgctxt "@action" msgid "Connect via Network" msgstr "Connecter via le réseau" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:64 +#: /home/ruben/Projects/Cura/plugins/MonitorStage/__init__.py:12 +msgctxt "@item:inmenu" +msgid "Monitor" +msgstr "Surveiller" + +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:66 #, python-brace-format msgctxt "@info Don't translate {machine_name}, since it gets replaced by a printer name!" msgid "New features are available for your {machine_name}! It is recommended to update the firmware on your printer." -msgstr "De nouvelles fonctionnalités sont disponibles pour votre {machine_name} ! Il est recommandé de mettre à jour le firmware sur votre imprimante." +msgstr "De nouvelles fonctionnalités sont disponibles pour votre {machine_name} ! Il est recommandé de mettre à jour le firmware de votre imprimante." -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:65 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:67 #, python-format msgctxt "@info:title The %s gets replaced with the printer name." msgid "New %s firmware available" msgstr "Nouveau firmware %s disponible" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:66 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:68 msgctxt "@action:button" msgid "How to update" msgstr "Comment effectuer la mise à jour" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:77 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:79 msgctxt "@info" msgid "Could not access update information." msgstr "Impossible d'accéder aux informations de mise à jour." -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksReader.py:199 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksReader.py:579 msgctxt "@info:status" -msgid "Errors appeared while opening your SolidWorks file! Please check, whether it is possible to open your file in SolidWorks itself without any problems as well!" -msgstr "Des erreurs sont apparues lors de l'ouverture de votre fichier SolidWorks ! Veuillez vérifier s'il est possible d'ouvrir votre fichier dans SolidWorks sans que cela ne cause de problèmes." +msgid "SolidWorks reported errors, while opening your file. We recommend to solve these issues inside SolidWorks itself." +msgstr "SolidWorks a signalé des erreurs lors de l'ouverture de votre fichier. Nous vous recommandons de résoudre ces problèmes dans SolidWorks lui-même." -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:31 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksReader.py:591 +msgctxt "@info:status" +msgid "" +"Found no models inside your drawing. Could you please check it's content again and make sure one part or assembly is inside?\n" +"\n" +" Thanks!." +msgstr "" +"Aucun modèle n'a été trouvé à l'intérieur de votre dessin. Pouvez-vous vérifier son contenu de nouveau et vous assurer qu'une pièce ou un assemblage est présent ?\n" +"\n" +" Merci !" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksReader.py:595 +msgctxt "@info:status" +msgid "" +"Found more then one part or assembly inside your drawing. We currently only support drawings with exactly one part or assembly inside.\n" +"\n" +"Sorry!" +msgstr "" +"Plus d'une pièce ou d'un ensemble de pièces ont été trouvés dans votre dessin. Nous ne prenons actuellement en charge que les dessins comptant exactement une pièce ou un ensemble de pièces.\n" +"\n" +"Désolé !" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:25 msgctxt "@item:inlistbox" msgid "SolidWorks part file" msgstr "Fichier de composant SolidWorks" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:35 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:29 msgctxt "@item:inlistbox" msgid "SolidWorks assembly file" msgstr "Fichier d'assemblage SolidWorks" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.py:21 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:33 +msgctxt "@item:inlistbox" +msgid "SolidWorks drawing file" +msgstr "Fichier de dessin SolidWorks" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:48 +msgctxt "@info:status" +msgid "" +"Dear customer,\n" +"We could not find a valid installation of SolidWorks on your system. That means that either SolidWorks is not installed or you don't own an valid license. Please make sure that running SolidWorks itself works without issues and/or contact your ICT.\n" +"\n" +"With kind regards\n" +" - Thomas Karl Pietrowski" +msgstr "" +"Cher client,\n" +"Nous n'avons pas pu trouver une installation valide de SolidWorks sur votre système. Cela signifie soit que SolidWorks n'est pas installé, soit que vous ne possédez pas de licence valide. Veuillez vous assurer que l'exécution de SolidWorks lui-même fonctionne sans problèmes et / ou contactez votre service IT.\n" +"\n" +"Cordialement,\n" +" - Thomas Karl Pietrowski" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:57 +msgctxt "@info:status" +msgid "" +"Dear customer,\n" +"You are currently running this plugin on an operating system other than Windows. This plugin will only work on Windows with SolidWorks installed, including an valid license. Please install this plugin on a Windows machine with SolidWorks installed.\n" +"\n" +"With kind regards\n" +" - Thomas Karl Pietrowski" +msgstr "" +"Cher client,\n" +"Vous exécutez actuellement ce plug-in sur un système d'exploitation autre que Windows. Ce plug-in fonctionne uniquement sous Windows et lorsque SolidWorks est installé avec une licence valide. Veuillez installer ce plug-in sur un poste Windows où SolidWorks est installé.\n" +"\n" +"Cordialement,\n" +" - Thomas Karl Pietrowski" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksDialogHandler.py:70 msgid "Configure" msgstr "Configurer" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/CommonComReader.py:135 -#, python-format -msgctxt "@info:status" -msgid "Error while starting %s!" -msgstr "Erreur lors du lancement de %s !" +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksDialogHandler.py:71 +msgid "Installation guide for SolidWorks macro" +msgstr "Guide d'installation SolidWorks macro" #: /home/ruben/Projects/Cura/plugins/SimulationView/__init__.py:14 msgctxt "@item:inlistbox" -msgid "Simulation view" -msgstr "Vue simulation" +msgid "Layer view" +msgstr "Vue en couches" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:100 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:103 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:101 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:104 msgctxt "@info:title" msgid "Simulation View" msgstr "Vue simulation" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.py:26 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.py:25 msgid "Modify G-Code" msgstr "Modifier le G-Code" #: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:43 msgctxt "@info" -msgid "Cura collects anonymised slicing statistics. You can disable this in the preferences." -msgstr "Cura collecte des statistiques anonymes sur le découpage. Vous pouvez désactiver cette fonctionnalité dans les préférences." +msgid "Cura collects anonymized usage statistics." +msgstr "Cura recueille des statistiques d'utilisation anonymes." #: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:46 msgctxt "@info:title" msgid "Collecting Data" -msgstr "Collecte des données..." +msgstr "Collecte de données" #: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:48 msgctxt "@action:button" -msgid "Dismiss" -msgstr "Ignorer" +msgid "Allow" +msgstr "Autoriser" + +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:49 +msgctxt "@action:tooltip" +msgid "Allow Cura to send anonymized usage statistics to help prioritize future improvements to Cura. Some of your preferences and settings are sent, the Cura version and a hash of the models you're slicing." +msgstr "Autoriser Cura à envoyer des statistiques d'utilisation anonymes pour mieux prioriser les améliorations futures apportées à Cura. Certaines de vos préférences et paramètres sont envoyés, ainsi que la version du logiciel Cura et un hachage des modèles que vous découpez." + +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:50 +msgctxt "@action:button" +msgid "Disable" +msgstr "Désactiver" + +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:51 +msgctxt "@action:tooltip" +msgid "Don't allow Cura to send anonymized usage statistics. You can enable it again in the preferences." +msgstr "Ne pas autoriser Cura à envoyer des statistiques d'utilisation anonymes. Vous pouvez modifier ce paramètre dans les préférences." #: /home/ruben/Projects/Cura/plugins/LegacyProfileReader/__init__.py:14 msgctxt "@item:inlistbox" msgid "Cura 15.04 profiles" msgstr "Profils Cura 15.04" +#: /home/ruben/Projects/Cura/plugins/CuraBlenderPlugin/__init__.py:15 +msgctxt "@item:inlistbox" +msgid "Blender file" +msgstr "Fichier Blender" + +#: /home/ruben/Projects/Cura/plugins/CuraBlenderPlugin/CadIntegrationUtils/CommonReader.py:199 +msgctxt "@info:status" +msgid "" +"Could not export using \"{}\" quality!\n" +"Felt back to \"{}\"." +msgstr "" +"Impossible d'exporter avec la qualité \"{}\" !\n" +"Qualité redéfinie sur \"{}\"." + #: /home/ruben/Projects/Cura/plugins/GCodeProfileReader/__init__.py:14 #: /home/ruben/Projects/Cura/plugins/GCodeReader/__init__.py:14 msgctxt "@item:inlistbox" @@ -706,49 +800,49 @@ msgctxt "@item:inlistbox" msgid "GIF Image" msgstr "Image GIF" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:269 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:299 msgctxt "@info:status" msgid "Unable to slice with the current material as it is incompatible with the selected machine or configuration." msgstr "Impossible de découper le matériau actuel, car celui-ci est incompatible avec la machine ou la configuration sélectionnée." -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:269 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:297 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:319 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:299 #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:327 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:336 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:349 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:357 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:366 msgctxt "@info:title" msgid "Unable to slice" msgstr "Impossible de découper" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:296 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:326 #, python-brace-format msgctxt "@info:status" msgid "Unable to slice with the current settings. The following settings have errors: {0}" msgstr "Impossible de couper avec les paramètres actuels. Les paramètres suivants contiennent des erreurs : {0}" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:318 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:348 #, python-brace-format msgctxt "@info:status" msgid "Unable to slice due to some per-model settings. The following settings have errors on one or more models: {error_labels}" msgstr "Impossible de couper en raison de certains paramètres par modèle. Les paramètres suivants contiennent des erreurs sur un ou plusieurs modèles : {error_labels}" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:326 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:356 msgctxt "@info:status" msgid "Unable to slice because the prime tower or prime position(s) are invalid." msgstr "Impossible de couper car la tour primaire ou la (les) position(s) d'amorçage ne sont pas valides." -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:335 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:365 msgctxt "@info:status" msgid "Nothing to slice because none of the models fit the build volume. Please scale or rotate models to fit." msgstr "Rien à couper car aucun des modèles ne convient au volume d'impression. Mettez à l'échelle ou faites pivoter les modèles pour les faire correspondre." #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:50 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:239 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:242 msgctxt "@info:status" msgid "Processing Layers" msgstr "Traitement des couches" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:239 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:242 msgctxt "@info:title" msgid "Information" msgstr "Informations" @@ -785,14 +879,14 @@ msgstr "Échec de la copie des fichiers plug-ins Siemens NX. Veuillez vérifier msgid "Failed to install Siemens NX plugin. Could not set environment variable UGII_USER_DIR for Siemens NX." msgstr "Échec de l'installation du plug-in Siemens NX. Impossible de définir la variable d'environnement UGII_USER_DIR pour Siemens NX." -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:167 -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:585 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:165 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:590 msgctxt "@title:tab" msgid "Recommended" msgstr "Recommandé" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:169 -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:590 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:167 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:595 msgctxt "@title:tab" msgid "Custom" msgstr "Personnalisé" @@ -803,24 +897,24 @@ msgctxt "@item:inlistbox" msgid "3MF File" msgstr "Fichier 3MF" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:126 -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1142 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:159 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1185 msgctxt "@label" msgid "Nozzle" msgstr "Buse" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:164 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:152 #, python-brace-format msgctxt "@info:status" msgid "Failed to get plugin ID from {0}" msgstr "Échec de l'obtention de l'identifiant du plug-in au départ de {0}" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:165 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:153 msgctxt "@info:tile" msgid "Warning" msgstr "Avertissement" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:203 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:191 msgctxt "@window:title" msgid "Plugin browser" msgstr "Navigateur de plug-ins" @@ -835,18 +929,18 @@ msgctxt "@item:inlistbox" msgid "G File" msgstr "Fichier G" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:314 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:321 msgctxt "@info:status" msgid "Parsing G-code" msgstr "Analyse du G-Code" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:316 -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:426 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:323 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:464 msgctxt "@info:title" msgid "G-code Details" msgstr "Détails G-Code" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:424 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:462 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,6 +951,16 @@ 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:17 +msgctxt "@item:inlistbox" +msgid "Profile Assistant" +msgstr "Assistant de profil" + #: /home/ruben/Projects/Cura/plugins/3MFWriter/__init__.py:30 msgctxt "@item:inlistbox" msgid "3MF file" @@ -881,149 +985,123 @@ msgstr "Mise à niveau du firmware" #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.py:14 msgctxt "@action" msgid "Checkup" -msgstr "Check-up" +msgstr "Vérification" #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.py:15 msgctxt "@action" msgid "Level build plate" -msgstr "Nivellement du plateau" +msgstr "Paramétrage du plateau de fabrication" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:89 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:98 msgctxt "@tooltip" msgid "Outer Wall" msgstr "Paroi externe" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:90 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:99 msgctxt "@tooltip" msgid "Inner Walls" msgstr "Parois internes" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:91 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:100 msgctxt "@tooltip" msgid "Skin" msgstr "Couche extérieure" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:92 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:101 msgctxt "@tooltip" msgid "Infill" msgstr "Remplissage" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:93 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:102 msgctxt "@tooltip" msgid "Support Infill" msgstr "Remplissage du support" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:94 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:103 msgctxt "@tooltip" msgid "Support Interface" msgstr "Interface du support" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:95 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:104 msgctxt "@tooltip" msgid "Support" msgstr "Support" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:96 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:105 msgctxt "@tooltip" msgid "Skirt" -msgstr "Jupe" +msgstr "Contourner" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:97 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:106 msgctxt "@tooltip" msgid "Travel" msgstr "Déplacement" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:98 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:107 msgctxt "@tooltip" msgid "Retractions" msgstr "Rétractions" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:99 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:108 msgctxt "@tooltip" msgid "Other" msgstr "Autre" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:199 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:231 msgctxt "@label unknown material" msgid "Unknown" msgstr "Inconnu" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:284 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:318 #, python-brace-format msgctxt "@label" msgid "Pre-sliced file {0}" msgstr "Fichier {0} prédécoupé" -#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:469 +#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:440 msgctxt "@item:material" msgid "No material loaded" msgstr "Pas de matériau chargé" -#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:476 +#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:447 msgctxt "@item:material" msgid "Unknown material" msgstr "Matériau inconnu" -#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:30 -msgctxt "@info:status" -msgid "Finding new location for objects" -msgstr "Recherche d'un nouvel emplacement pour les objets" - -#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:34 -msgctxt "@info:title" -msgid "Finding Location" -msgstr "Recherche d'emplacement..." - -#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:89 -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:83 -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/ArrangeObjectsJob.py:90 -msgctxt "@info:title" -msgid "Can't Find Location" -msgstr "Impossible de trouver un emplacement" - -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:431 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:113 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:437 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:120 msgctxt "@title:window" msgid "File Already Exists" msgstr "Le fichier existe déjà" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:432 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:114 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:438 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:121 #, 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:815 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:872 msgctxt "@label" msgid "Custom" msgstr "Personnalisé" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:819 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:876 msgctxt "@label" msgid "Custom Material" msgstr "Matériau personnalisé" -#: /home/ruben/Projects/Cura/cura/Settings/ExtrudersModel.py:182 -msgctxt "@menuitem" -msgid "Global" -msgstr "Global" - -#: /home/ruben/Projects/Cura/cura/Settings/ExtrudersModel.py:229 +#: /home/ruben/Projects/Cura/cura/Settings/ExtrudersModel.py:205 msgctxt "@menuitem" msgid "Not overridden" -msgstr "Pas écrasé" +msgstr "Pas pris en compte" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:117 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:124 msgctxt "@info:status" msgid "The selected material is incompatible with the selected machine or configuration." msgstr "Le matériau sélectionné est incompatible avec la machine ou la configuration sélectionnée." -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:118 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:125 #: /home/ruben/Projects/Cura/cura/Settings/MaterialManager.py:24 msgctxt "@info:title" msgid "Incompatible Material" @@ -1044,67 +1122,89 @@ msgctxt "@action" msgid "Undo changing the material diameter." msgstr "Annuler la modification du diamètre du matériau." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:144 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:151 #, 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:151 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:158 #, 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:156 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:163 #, 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:157 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:164 msgctxt "@info:title" msgid "Export succeeded" msgstr "L'exportation a réussi" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:183 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:205 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:214 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:248 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:190 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:211 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:271 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to import profile from {0}: {1}" msgstr "Échec de l'importation du profil depuis le fichier {0} : {1}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:216 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:252 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:230 +#, python-brace-format +msgctxt "@info:status Don't translate the XML tags or !" +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:240 +#, python-brace-format +msgctxt "@info:status Don't translate the XML tags or !" +msgid "The machine defined in profile {0} doesn't match with your current machine, could not import it." +msgstr "La machine définie dans le profil {0} ne correspond pas à votre machine actuelle ; échec de l'importation." + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:274 #, 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:255 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:277 +#, 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:280 #, 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:274 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:298 msgctxt "@label" msgid "Custom profile" msgstr "Personnaliser le profil" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:285 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:313 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:321 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:349 #, python-brace-format msgctxt "@info:status" msgid "Could not find a quality type {0} for the current configuration." msgstr "Impossible de trouver un type de qualité {0} pour la configuration actuelle." +#: /home/ruben/Projects/Cura/cura/ObjectsModel.py:46 +#, python-brace-format +msgctxt "@label" +msgid "Group #{group_nr}" +msgstr "Groupe nº {group_nr}" + #: /home/ruben/Projects/Cura/cura/BuildVolume.py:100 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." @@ -1115,142 +1215,170 @@ msgctxt "@info:title" msgid "Build Volume" msgstr "Volume d'impression" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:34 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:25 msgctxt "@info:status" msgid "Multiplying and placing objects" msgstr "Multiplication et placement d'objets" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:35 -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:83 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:26 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:78 msgctxt "@info:title" msgid "Placing Object" -msgstr "Placement de l'objet..." +msgstr "Placement de l'objet" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:80 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:78 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:88 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:152 +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/Arranging/ArrangeObjectsJob.py:29 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:64 +msgctxt "@info:status" +msgid "Finding new location for objects" +msgstr "Recherche d'un nouvel emplacement pour les objets" + +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:33 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:68 +msgctxt "@info:title" +msgid "Finding Location" +msgstr "Recherche d'emplacement..." + +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:89 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:153 +msgctxt "@info:title" +msgid "Can't Find Location" +msgstr "Impossible de trouver un emplacement" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:81 msgctxt "@title:window" msgid "Crash Report" msgstr "Rapport d'incident" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:93 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:94 msgctxt "@label crash message" msgid "" -"

      A fatal exception has occurred. Please send us this Crash Report to fix the problem

      \n" +"

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

      \n" "

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

      \n" " " -msgstr "

      Une exception fatale s'est produite. Veuillez nous envoyer ce Rapport d'incident pour résoudre le problème

      \n

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

      \n " +msgstr "" +"

      Une erreur fatale s'est produite. Veuillez nous envoyer ce Rapport d'incident pour résoudre le problème

      \n" +"

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

      \n" +" " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:101 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:102 msgctxt "@title:groupbox" msgid "System information" msgstr "Informations système" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:109 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:110 msgctxt "@label unknown version of Cura" msgid "Unknown" msgstr "Inconnu" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:111 -#, python-brace-format -msgctxt "@label Cura version" -msgid "Cura version: {version}
      " -msgstr "Version Cura : {version}
      " - #: /home/ruben/Projects/Cura/cura/CrashHandler.py:112 -#, python-brace-format -msgctxt "@label Platform" -msgid "Platform: {platform}
      " -msgstr "Plateforme : {platform}
      " +msgctxt "@label Cura version number" +msgid "Cura version" +msgstr "Version Cura" #: /home/ruben/Projects/Cura/cura/CrashHandler.py:113 -#, python-brace-format -msgctxt "@label Qt version" -msgid "Qt version: {qt}
      " -msgstr "Version Qt : {qt}
      " +msgctxt "@label Type of platform" +msgid "Platform" +msgstr "Plate-forme" #: /home/ruben/Projects/Cura/cura/CrashHandler.py:114 -#, python-brace-format -msgctxt "@label PyQt version" -msgid "PyQt version: {pyqt}
      " -msgstr "Version PyQt : {pyqt}
      " +msgctxt "@label" +msgid "Qt version" +msgstr "Version Qt" #: /home/ruben/Projects/Cura/cura/CrashHandler.py:115 -#, python-brace-format -msgctxt "@label OpenGL" -msgid "OpenGL: {opengl}
      " -msgstr "OpenGL : {opengl}
      " +msgctxt "@label" +msgid "PyQt version" +msgstr "Version PyQt" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:130 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:116 +msgctxt "@label OpenGL version" +msgid "OpenGL" +msgstr "OpenGL" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:133 +msgctxt "@label" +msgid "not yet initialised
      " +msgstr "pas encore initialisé
      " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:136 #, python-brace-format msgctxt "@label OpenGL version" msgid "
    • OpenGL Version: {version}
    • " msgstr "
    • Version OpenGL : {version}
    • " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:131 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:137 #, python-brace-format msgctxt "@label OpenGL vendor" msgid "
    • OpenGL Vendor: {vendor}
    • " msgstr "
    • Revendeur OpenGL : {vendor}
    • " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:132 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:138 #, python-brace-format msgctxt "@label OpenGL renderer" msgid "
    • OpenGL Renderer: {renderer}
    • " msgstr "
    • Moteur de rendu OpenGL : {renderer}
    • " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:141 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:147 msgctxt "@title:groupbox" -msgid "Exception traceback" -msgstr "Retraçage de l'exception" +msgid "Error traceback" +msgstr "Retraçage de l'erreur" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:208 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:214 msgctxt "@title:groupbox" msgid "Logs" -msgstr "Journaux" +msgstr "Registres" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:231 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:237 msgctxt "@title:groupbox" msgid "User description" msgstr "Description de l'utilisateur" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:246 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:252 msgctxt "@action:button" msgid "Send report" msgstr "Envoyer rapport" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:256 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:274 msgctxt "@info:progress" msgid "Loading machines..." msgstr "Chargement des machines..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:661 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:660 msgctxt "@info:progress" msgid "Setting up scene..." -msgstr "Préparation de la scène..." +msgstr "Préparation de la tâche..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:703 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:702 msgctxt "@info:progress" msgid "Loading interface..." msgstr "Chargement de l'interface..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:874 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:899 #, 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:1348 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1417 #, 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:1357 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1426 #, 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:1416 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1495 msgctxt "@info:status" msgid "The selected model was too small to load." msgstr "Le modèle sélectionné était trop petit pour être chargé." @@ -1279,12 +1407,11 @@ msgstr "X (Largeur)" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:119 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:129 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:235 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:288 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:300 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:391 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:401 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:413 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:840 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:383 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:394 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:412 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:424 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:849 msgctxt "@label" msgid "mm" msgstr "mm" @@ -1374,71 +1501,70 @@ msgctxt "@tooltip" msgid "The height difference between the tip of the nozzle and the gantry system (X and Y axes). Used to prevent collisions between previous prints and the gantry when printing \"One at a Time\"." msgstr "La différence de hauteur entre la pointe de la buse et le système de portique (axes X et Y). Permet d'empêcher les collisions entre les impressions précédentes et le portique lors d'une impression « Un à la fois »." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:255 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:254 msgctxt "@label" msgid "Number of Extruders" -msgstr "Nombre d'extrudeuses" +msgstr "Nombre d'extrudeurs" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:289 -msgctxt "@tooltip" -msgid "The nominal diameter of filament supported by the printer. The exact diameter will be overridden by the material and/or the profile." -msgstr "Le diamètre nominal de filament pris en charge par l'imprimante. Le diamètre exact sera remplacé par le matériau et / ou le profil." - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:291 -msgctxt "@label" -msgid "Material diameter" -msgstr "Diamètre du matériau" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:299 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:390 -msgctxt "@label" -msgid "Nozzle size" -msgstr "Taille de la buse" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:317 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:310 msgctxt "@label" msgid "Start Gcode" msgstr "Début Gcode" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:327 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:320 msgctxt "@tooltip" msgid "Gcode commands to be executed at the very start." msgstr "Commandes Gcode à exécuter au tout début." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:336 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:329 msgctxt "@label" msgid "End Gcode" msgstr "Fin Gcode" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:346 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:339 msgctxt "@tooltip" msgid "Gcode commands to be executed at the very end." msgstr "Commandes Gcode à exécuter tout à la fin." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:378 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:370 msgctxt "@label" msgid "Nozzle Settings" msgstr "Paramètres de la buse" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:400 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:382 +msgctxt "@label" +msgid "Nozzle size" +msgstr "Taille de la buse" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:393 +msgctxt "@label" +msgid "Compatible material diameter" +msgstr "Diamètre du matériau compatible" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:395 +msgctxt "@tooltip" +msgid "The nominal diameter of filament supported by the printer. The exact diameter will be overridden by the material and/or the profile." +msgstr "Le diamètre nominal de filament pris en charge par l'imprimante. Le diamètre exact sera remplacé par le matériau et / ou le profil." + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:411 msgctxt "@label" msgid "Nozzle offset X" msgstr "Décalage buse X" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:412 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:423 msgctxt "@label" msgid "Nozzle offset Y" msgstr "Décalage buse Y" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:433 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:444 msgctxt "@label" msgid "Extruder Start Gcode" -msgstr "Extrudeuse Gcode de démarrage" +msgstr "Extrudeur Gcode de démarrage" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:451 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:462 msgctxt "@label" msgid "Extruder End Gcode" -msgstr "Extrudeuse Gcode de fin" +msgstr "Extrudeur Gcode de fin" #: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.qml:18 msgctxt "@label" @@ -1448,8 +1574,9 @@ msgstr "Récapitulatif des changements" #: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.qml:37 #: /home/ruben/Projects/Cura/plugins/USBPrinting/FirmwareUpdateWindow.qml:107 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:55 -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:445 -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:357 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:306 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:456 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:492 #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:80 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:123 #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:147 @@ -1514,7 +1641,10 @@ msgid "" "To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer.\n" "\n" "Select your printer from the list below:" -msgstr "Pour imprimer directement sur votre imprimante sur le réseau, assurez-vous que votre imprimante est connectée au réseau via un câble réseau ou en connectant votre imprimante à votre réseau Wi-Fi. Si vous ne connectez pas Cura avec votre imprimante, vous pouvez utiliser une clé USB pour transférer les fichiers g-code sur votre imprimante.\n\nSélectionnez votre imprimante dans la liste ci-dessous :" +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 :" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:75 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:44 @@ -1530,7 +1660,7 @@ msgstr "Modifier" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:96 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:50 #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:95 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:190 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:171 msgctxt "@action:button" msgid "Remove" msgstr "Supprimer" @@ -1552,14 +1682,14 @@ msgid "Type" msgstr "Type" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:233 -msgctxt "@label" +msgctxt "@label Printer name" msgid "Ultimaker 3" -msgstr "Ultimaker 3" +msgstr "Ultimaker 3" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:236 -msgctxt "@label" +msgctxt "@label Printer name" msgid "Ultimaker 3 Extended" -msgstr "Ultimaker 3 Extended" +msgstr "Ultimaker 3 Extended" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:252 msgctxt "@label" @@ -1603,8 +1733,6 @@ msgid "Enter the IP address or hostname of your printer on the network." msgstr "Saisissez l'adresse IP ou le nom d'hôte de votre imprimante sur le réseau." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:379 -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:92 -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:88 #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:181 msgctxt "@action:button" msgid "OK" @@ -1623,7 +1751,12 @@ msgstr "Imprimer" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterMonitorItem.qml:36 msgctxt "@label: arg 1 is group name" msgid "%1 is not set up to host a group of connected Ultimaker 3 printers" -msgstr "%1 n'est pas configurée pour héberger un groupe d'imprimantes connectées Ultimaker 3." +msgstr "%1 n'est pas configurée pour héberger un groupe d'imprimantes connectées Ultimaker 3" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterMonitorItem.qml:55 +msgctxt "@label link to connect manager" +msgid "Add/Remove printers" +msgstr "Ajouter / supprimer une imprimante" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/OpenPanelButton.qml:14 msgctxt "@info:tooltip" @@ -1641,7 +1774,7 @@ msgstr "Afficher les tâches d'impression" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:408 msgctxt "@label" msgid "Preparing to print" -msgstr "Préparation de l'impression..." +msgstr "Préparation de l'impression" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:39 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:271 @@ -1655,11 +1788,16 @@ msgid "Available" msgstr "Disponible" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:43 -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:101 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:100 msgctxt "@label:MonitorStatus" msgid "Lost connection with the printer" msgstr "Connexion avec l'imprimante perdue" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:47 +msgctxt "@label Printer status" +msgid "Unknown" +msgstr "Inconnu" + #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:257 msgctxt "@label:status" msgid "Disabled" @@ -1751,141 +1889,255 @@ msgctxt "@action:button" msgid "Activate Configuration" msgstr "Activer la configuration" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:20 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:21 msgctxt "@title:window" -msgid "Cura SolidWorks Plugin Configuration" -msgstr "Configuration du plug-in Cura SolidWorks" +msgid "SolidWorks: Export wizard" +msgstr "SolidWorks : assistant d'exportation" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:44 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:45 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:140 msgctxt "@action:label" -msgid "Default quality of the exported STL:" -msgstr "Qualité par défaut du STL exporté :" +msgid "Quality:" +msgstr "Qualité :" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:79 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:78 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:179 msgctxt "@option:curaSolidworksStlQuality" -msgid "Always ask" -msgstr "Toujours demander" +msgid "Fine (3D-printing)" +msgstr "Fine (impression 3D)" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:80 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:79 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:180 msgctxt "@option:curaSolidworksStlQuality" -msgid "Always use Fine quality" -msgstr "Toujours utiliser la qualité Fine" +msgid "Coarse (3D-printing)" +msgstr "Grossière (impression 3D)" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:81 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:80 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:181 msgctxt "@option:curaSolidworksStlQuality" -msgid "Always use Coarse quality" -msgstr "Toujours utiliser la qualité grossière" +msgid "Fine (SolidWorks)" +msgstr "Fine (SolidWorks)" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:20 -msgctxt "@title:window" -msgid "Import SolidWorks File as STL..." -msgstr "Importer le fichier SolidWorks comme STL..." - -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:43 -msgctxt "@info:tooltip" -msgid "Quality of the Exported STL" -msgstr "Qualité du STL exporté" - -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:48 -msgctxt "@action:label" -msgid "Quality" -msgstr "Qualité" - -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:62 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:81 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:182 msgctxt "@option:curaSolidworksStlQuality" -msgid "Coarse" -msgstr "Grossière" +msgid "Coarse (SolidWorks)" +msgstr "Grossière (SolidWorks)" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:63 -msgctxt "@option:curaSolidworksStlQuality" -msgid "Fine" -msgstr "Fine" - -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:78 -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:82 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:94 msgctxt "@text:window" -msgid "Remember my choice" -msgstr "Se souvenir de mon choix" +msgid "Show this dialog again" +msgstr "Afficher de nouveau cette boîte de dialogue" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:81 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:104 +msgctxt "@action:button" +msgid "Continue" +msgstr "Continuer" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:116 +msgctxt "@action:button" +msgid "Abort" +msgstr "Abandonner" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:21 +msgctxt "@title:window" +msgid "How to install Cura SolidWorks macro" +msgstr "Modalités d’installation de Cura SolidWorks macro" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:62 +msgctxt "@description:label" +msgid "Steps:" +msgstr "Procédure :" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:140 +msgctxt "@action:button" +msgid "" +"Open the directory\n" +"with macro and icon" +msgstr "" +"Ouvrez le répertoire\n" +"contenant la macro et l'icône" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:160 +msgctxt "@description:label" +msgid "Instructions:" +msgstr "Instructions :" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:202 +msgctxt "@action:playpause" +msgid "Play" +msgstr "Jouer" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:206 +msgctxt "@action:playpause" +msgid "Pause" +msgstr "Pause" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:268 +msgctxt "@action:button" +msgid "Previous Step" +msgstr "Étape précédente" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:283 +msgctxt "@action:button" +msgid "Done" +msgstr "Terminé" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:287 +msgctxt "@action:button" +msgid "Next Step" +msgstr "Étape suivante" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:21 +msgctxt "@title:window" +msgid "SolidWorks plugin: Configuration" +msgstr "Plug-in SolidWorks : configuration" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:39 +msgctxt "@title:tab" +msgid "Conversion settings" +msgstr "Paramètres de conversion" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:66 +msgctxt "@label" +msgid "First choice:" +msgstr "Premier choix :" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:86 +msgctxt "@text:menu" +msgid "Latest installed version (Recommended)" +msgstr "Dernière version installée (recommandé)" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:95 +msgctxt "@text:menu" +msgid "Default version" +msgstr "Version par défaut" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:193 +msgctxt "@label" +msgid "Show wizard before opening SolidWorks files" +msgstr "Afficher l'Assistant avant d'ouvrir les fichiers SolidWorks" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:203 +msgctxt "@label" +msgid "Automatically rotate opened file into normed orientation" +msgstr "Rotation automatique du fichier ouvert en orientation normalisée" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:210 +msgctxt "@title:tab" +msgid "Installation(s)" +msgstr "Installation(s)" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:284 +msgctxt "@label" +msgid "COM service found" +msgstr "Service COM trouvé" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:295 +msgctxt "@label" +msgid "Executable found" +msgstr "Fichier exécutable trouvé" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:306 +msgctxt "@label" +msgid "COM starting" +msgstr "Lancement de COM" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:317 +msgctxt "@label" +msgid "Revision number" +msgstr "Numéro de révision" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:328 +msgctxt "@label" +msgid "Functions available" +msgstr "Fonctions disponibles" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:341 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:264 +msgctxt "@action:button" +msgid "Save" +msgstr "Enregistrer" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:117 msgctxt "@label" msgid "Color scheme" msgstr "Modèle de couleurs" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:96 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:132 msgctxt "@label:listbox" msgid "Material Color" msgstr "Couleur du matériau" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:100 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:136 msgctxt "@label:listbox" msgid "Line Type" msgstr "Type de ligne" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:104 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:140 msgctxt "@label:listbox" msgid "Feedrate" msgstr "Taux d'alimentation" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:108 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:144 msgctxt "@label:listbox" msgid "Layer thickness" msgstr "Épaisseur de la couche" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:148 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:185 msgctxt "@label" msgid "Compatibility Mode" msgstr "Mode de compatibilité" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:230 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:264 msgctxt "@label" msgid "Show Travels" msgstr "Afficher les déplacements" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:236 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:270 msgctxt "@label" msgid "Show Helpers" msgstr "Afficher les aides" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:242 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:276 msgctxt "@label" msgid "Show Shell" msgstr "Afficher la coque" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:248 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:282 msgctxt "@label" msgid "Show Infill" msgstr "Afficher le remplissage" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:297 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:330 msgctxt "@label" msgid "Only Show Top Layers" msgstr "Afficher uniquement les couches supérieures" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:306 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:339 msgctxt "@label" msgid "Show 5 Detailed Layers On Top" msgstr "Afficher 5 niveaux détaillés en haut" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:317 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:350 msgctxt "@label" msgid "Top / Bottom" msgstr "Haut / bas" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:321 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:354 msgctxt "@label" msgid "Inner Wall" msgstr "Paroi interne" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:378 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:410 msgctxt "@label" msgid "min" -msgstr "min." +msgstr "min" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:420 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:452 msgctxt "@label" msgid "max" -msgstr "max." +msgstr "max" #: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:18 msgctxt "@title:window" @@ -1907,7 +2159,7 @@ msgctxt "@label" msgid "Settings" msgstr "Paramètres" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:455 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:466 msgctxt "@info:tooltip" msgid "Change active post-processing scripts" msgstr "Modifier les scripts de post-traitement actifs" @@ -1982,23 +2234,53 @@ msgctxt "@action:label" msgid "Smoothing" msgstr "Lissage" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:208 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:38 +msgctxt "@label" +msgid "Mesh Type" +msgstr "Type de maille" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:69 +msgctxt "@label" +msgid "Normal model" +msgstr "Modèle normal" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:76 +msgctxt "@label" +msgid "Print as support" +msgstr "Imprimer comme support" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:84 +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:92 +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:100 +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:333 msgctxt "@action:button" msgid "Select settings" msgstr "Sélectionner les paramètres" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:248 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:375 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:272 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:402 #: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:91 msgctxt "@label:textbox" msgid "Filter..." msgstr "Filtrer..." -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:296 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:426 msgctxt "@label:checkbox" msgid "Show all" msgstr "Afficher tout" @@ -2022,7 +2304,7 @@ msgstr "Créer" #: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:72 msgctxt "@action:title" msgid "Summary - Cura Project" -msgstr "Résumé - Projet Cura" +msgstr "Sommaire - Projet Cura" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:92 #: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:90 @@ -2033,7 +2315,7 @@ msgstr "Paramètres de l'imprimante" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:108 msgctxt "@info:tooltip" msgid "How should the conflict in the machine be resolved?" -msgstr "Comment le conflit de la machine doit-il être résolu ?" +msgstr "Comment le problème de la machine doit-il être résolu ?" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:128 #: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:99 @@ -2059,7 +2341,7 @@ msgstr "Paramètres de profil" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:181 msgctxt "@info:tooltip" msgid "How should the conflict in the profile be resolved?" -msgstr "Comment le conflit du profil doit-il être résolu ?" +msgstr "Comment le problème du profil doit-il être résolu ?" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:216 #: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:174 @@ -2095,7 +2377,7 @@ msgstr "Paramètres du matériau" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:269 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 ?" +msgstr "Comment le problème du matériau doit-il être résolu ?" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:312 #: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:209 @@ -2158,7 +2440,7 @@ msgstr "Télécharger" #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:199 msgctxt "@title:window" msgid "Plugin License Agreement" -msgstr "Plug-in d'accord de licence" +msgstr "Plug-in de l'accord de licence" #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:220 msgctxt "@label" @@ -2166,7 +2448,10 @@ msgid "" "This plugin contains a license.\n" "You need to accept this license to install this plugin.\n" "Do you agree with the terms below?" -msgstr "Ce plug-in contient une licence.\nVous devez approuver cette licence pour installer ce plug-in.\nAcceptez-vous les clauses ci-dessous ?" +msgstr "" +"Ce plug-in contient une licence.\n" +"Vous devez approuver cette licence pour installer ce plug-in.\n" +"Acceptez-vous les clauses ci-dessous ?" #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:242 msgctxt "@action:button" @@ -2355,68 +2640,68 @@ msgstr "Contrôlée" #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:284 msgctxt "@label" msgid "Everything is in order! You're done with your CheckUp." -msgstr "Tout est en ordre ! Vous avez terminé votre check-up." +msgstr "Tout est en ordre ! Vous avez terminé votre vérification." -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:88 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:87 msgctxt "@label:MonitorStatus" msgid "Not connected to a printer" msgstr "Non connecté à une imprimante" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:90 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:89 msgctxt "@label:MonitorStatus" msgid "Printer does not accept commands" msgstr "L'imprimante n'accepte pas les commandes" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:96 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:95 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:194 msgctxt "@label:MonitorStatus" msgid "In maintenance. Please check the printer" -msgstr "En maintenance. Vérifiez l'imprimante" +msgstr "En maintenance. Veuillez vérifier l'imprimante" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:103 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:102 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:184 msgctxt "@label:MonitorStatus" msgid "Printing..." msgstr "Impression..." -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:106 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:105 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:186 msgctxt "@label:MonitorStatus" msgid "Paused" msgstr "En pause" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:109 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:108 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:188 msgctxt "@label:MonitorStatus" msgid "Preparing..." msgstr "Préparation..." -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:111 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:110 msgctxt "@label:MonitorStatus" msgid "Please remove the print" -msgstr "Supprimez l'imprimante" +msgstr "Veuillez supprimer l'imprimante" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:237 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:241 msgctxt "@label:" msgid "Resume" msgstr "Reprendre" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:241 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:245 msgctxt "@label:" msgid "Pause" msgstr "Pause" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:270 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:274 msgctxt "@label:" msgid "Abort Print" msgstr "Abandonner l'impression" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:280 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:284 msgctxt "@window:title" msgid "Abort print" msgstr "Abandonner l'impression" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:282 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:286 msgctxt "@label" msgid "Are you sure you want to abort the print?" msgstr "Êtes-vous sûr(e) de vouloir abandonner l'impression ?" @@ -2431,7 +2716,9 @@ msgctxt "@text:window" msgid "" "You have customized some profile settings.\n" "Would you like to keep or discard those settings?" -msgstr "Vous avez personnalisé certains paramètres du profil.\nSouhaitez-vous conserver ces changements, ou les annuler ?" +msgstr "" +"Vous avez personnalisé certains paramètres du profil.\n" +"Souhaitez-vous conserver ces changements, ou les annuler ?" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:110 msgctxt "@title:column" @@ -2449,19 +2736,19 @@ msgid "Customized" msgstr "Personnalisé" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:157 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:593 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:595 msgctxt "@option:discardOrKeep" msgid "Always ask me this" msgstr "Toujours me demander" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:158 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:594 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:596 msgctxt "@option:discardOrKeep" msgid "Discard and never ask again" msgstr "Annuler et ne plus me demander" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:159 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:595 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:597 msgctxt "@option:discardOrKeep" msgid "Keep and never ask again" msgstr "Conserver et ne plus me demander" @@ -2496,72 +2783,72 @@ msgctxt "@label" msgid "Brand" msgstr "Marque" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:92 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:88 msgctxt "@label" msgid "Material Type" msgstr "Type de matériau" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:105 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:97 msgctxt "@label" msgid "Color" msgstr "Couleur" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:139 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:141 msgctxt "@label" msgid "Properties" msgstr "Propriétés" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:141 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:143 msgctxt "@label" msgid "Density" msgstr "Densité" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:156 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:158 msgctxt "@label" msgid "Diameter" msgstr "Diamètre" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:185 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:187 msgctxt "@label" msgid "Filament Cost" msgstr "Coût du filament" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:201 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:203 msgctxt "@label" msgid "Filament weight" msgstr "Poids du filament" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:218 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:220 msgctxt "@label" msgid "Filament length" msgstr "Longueur du filament" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:227 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:229 msgctxt "@label" msgid "Cost per Meter" msgstr "Coût au mètre" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:241 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:243 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/MaterialView.qml:248 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:250 msgctxt "@label" msgid "Unlink Material" msgstr "Délier le matériau" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:259 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:261 msgctxt "@label" msgid "Description" msgstr "Description" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:272 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:274 msgctxt "@label" msgid "Adhesion Information" msgstr "Informations d'adhérence" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:298 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:300 msgctxt "@label" msgid "Print settings" msgstr "Paramètres d'impression" @@ -2602,7 +2889,7 @@ msgid "Unit" msgstr "Unité" #: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:14 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:439 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:509 msgctxt "@title:tab" msgid "General" msgstr "Général" @@ -2617,230 +2904,255 @@ msgctxt "@label" msgid "Language:" msgstr "Langue :" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:205 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:207 msgctxt "@label" msgid "Currency:" msgstr "Devise :" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:219 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:221 msgctxt "@label" msgid "Theme:" msgstr "Thème :" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:279 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:281 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:296 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:298 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:304 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:306 msgctxt "@option:check" msgid "Slice automatically" msgstr "Découper automatiquement" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:318 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:320 msgctxt "@label" msgid "Viewport behavior" msgstr "Comportement Viewport" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:326 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:328 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:335 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:337 msgctxt "@option:check" msgid "Display overhang" msgstr "Mettre en surbrillance les porte-à-faux" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:342 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:344 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:347 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:349 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:356 +#: /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:361 +#: /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:370 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:372 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:375 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:377 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:384 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:386 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:389 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:391 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:397 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:399 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:402 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:404 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:414 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:416 msgctxt "@info:tooltip" msgid "Show caution message in gcode reader." msgstr "Afficher le message d'avertissement dans le lecteur gcode." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:423 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:425 msgctxt "@option:check" msgid "Caution message in gcode reader" msgstr "Message d'avertissement dans lecteur gcode." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:430 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:432 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:435 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:437 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:451 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:453 msgctxt "@label" msgid "Opening and saving files" msgstr "Ouvrir et enregistrer des fichiers" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:457 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:459 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:462 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:464 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:473 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:478 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:485 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:487 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:490 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:492 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:499 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:501 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:503 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:505 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:512 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:514 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:520 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:522 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:533 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:535 msgctxt "@option:openProject" msgid "Always ask" msgstr "Toujours demander" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:534 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:536 msgctxt "@option:openProject" msgid "Always open as a project" msgstr "Toujours ouvrir comme projet" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:535 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:537 msgctxt "@option:openProject" msgid "Always import models" msgstr "Toujours importer les modèles" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:571 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:573 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:580 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:582 msgctxt "@label" msgid "Override Profile" msgstr "Écraser le profil" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:629 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:631 msgctxt "@label" msgid "Privacy" msgstr "Confidentialité" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:636 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:638 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:641 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:643 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:651 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:653 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:656 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:658 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:674 +msgctxt "@label" +msgid "Experimental" +msgstr "Expérimental" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:680 +msgctxt "@info:tooltip" +msgid "Use multi build plate functionality" +msgstr "Utiliser la fonctionnalité multi-plateau" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:685 +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/GeneralPage.qml:694 +msgctxt "@info:tooltip" +msgid "Should newly loaded models be arranged on the build plate? Used in conjunction with multi build plate (EXPERIMENTAL)" +msgstr "Les modèles nouvellement chargés doivent-ils être disposés sur le plateau ? Utilisé en conjonction avec le multi-plateau (EXPÉRIMENTAL)" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:699 +msgctxt "@option:check" +msgid "Do not arrange objects on load" +msgstr "Ne pas réorganiser les objets lors du chargement" + #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:444 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:514 msgctxt "@title:tab" msgid "Printers" msgstr "Imprimantes" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:37 #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:51 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:137 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:138 msgctxt "@action:button" msgid "Activate" msgstr "Activer" @@ -2883,7 +3195,7 @@ msgid "Waiting for a printjob" msgstr "En attente d'une tâche d'impression" #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:448 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:518 msgctxt "@title:tab" msgid "Profiles" msgstr "Profils" @@ -2909,13 +3221,13 @@ msgid "Duplicate" msgstr "Dupliquer" #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:113 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:201 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:182 msgctxt "@action:button" msgid "Import" msgstr "Importer" #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:119 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:212 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:193 msgctxt "@action:button" msgid "Export" msgstr "Exporter" @@ -2981,7 +3293,7 @@ msgid "Export Profile" msgstr "Exporter un profil" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:446 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:516 msgctxt "@title:tab" msgid "Materials" msgstr "Matériaux" @@ -2996,60 +3308,60 @@ msgctxt "@action:label %1 is printer name" msgid "Printer: %1" msgstr "Imprimante : %1" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:149 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:150 msgctxt "@action:button" msgid "Create" msgstr "Créer" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:168 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:160 msgctxt "@action:button" msgid "Duplicate" msgstr "Dupliquer" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:311 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:319 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:298 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:306 msgctxt "@title:window" msgid "Import Material" msgstr "Importer un matériau" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:320 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:307 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/MaterialsPage.qml:324 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:311 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/MaterialsPage.qml:343 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:358 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:329 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:344 msgctxt "@title:window" msgid "Export Material" msgstr "Exporter un matériau" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:362 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:348 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/MaterialsPage.qml:368 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:354 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully exported material to %1" msgstr "Matériau exporté avec succès vers %1" #: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:18 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:793 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:869 msgctxt "@title:window" msgid "Add Printer" msgstr "Ajouter une imprimante" -#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:185 +#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:194 msgctxt "@label" msgid "Printer Name:" msgstr "Nom de l'imprimante :" -#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:208 +#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:217 msgctxt "@action:button" msgid "Add Printer" msgstr "Ajouter une imprimante" @@ -3074,7 +3386,9 @@ msgctxt "@info:credit" msgid "" "Cura is developed by Ultimaker B.V. in cooperation with the community.\n" "Cura proudly uses the following open source projects:" -msgstr "Cura a été développé par Ultimaker B.V. en coopération avec la communauté Ultimaker.\nCura est fier d'utiliser les projets open source suivants :" +msgstr "" +"Cura a été développé par Ultimaker B.V. en coopération avec la communauté Ultimaker.\n" +"Cura est fier d'utiliser les projets open source suivants :" #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:118 msgctxt "@label" @@ -3094,7 +3408,7 @@ msgstr "Générateur GCode" #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:121 msgctxt "@label" msgid "Interprocess communication library" -msgstr "Bibliothèque de communication interprocess" +msgstr "Bibliothèque de communication inter-process" #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:123 msgctxt "@label" @@ -3176,158 +3490,167 @@ msgctxt "@label" msgid "Profile:" msgstr "Profil :" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:66 -msgctxt "@" -msgid "No Profile Available" -msgstr "Aucun profil disponible" - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:104 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:102 msgctxt "@tooltip" msgid "" "Some setting/override values are different from the values stored in the profile.\n" "\n" "Click to open the profile manager." -msgstr "Certaines valeurs de paramètre / forçage sont différentes des valeurs enregistrées dans le profil. \n\nCliquez pour ouvrir le gestionnaire de profils." +msgstr "" +"Certaines valeurs de paramètre / forçage sont différentes des valeurs enregistrées dans le profil. \n" +"\n" +"Cliquez pour ouvrir le gestionnaire de profils." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:152 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:150 msgctxt "@label:textbox" msgid "Search..." msgstr "Rechercher..." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:483 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:482 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:498 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:497 msgctxt "@action:menu" msgid "Hide this setting" msgstr "Masquer ce paramètre" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:508 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:507 msgctxt "@action:menu" msgid "Don't show this setting" msgstr "Masquer ce paramètre" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:512 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:511 msgctxt "@action:menu" msgid "Keep this setting visible" msgstr "Afficher ce paramètre" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:531 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:530 msgctxt "@action:menu" msgid "Configure setting visiblity..." msgstr "Configurer la visibilité des paramètres..." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingCategory.qml:123 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingCategory.qml:250 msgctxt "@label" msgid "" "Some hidden settings use values different from their normal calculated value.\n" "\n" "Click to make these settings visible." -msgstr "Certains paramètres masqués utilisent des valeurs différentes de leur valeur normalement calculée.\n\nCliquez pour rendre ces paramètres visibles." +msgstr "" +"Certains paramètres masqués utilisent des valeurs différentes de leur valeur normalement calculée.\n" +"\n" +"Cliquez pour rendre ces paramètres visibles." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:62 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:61 msgctxt "@label Header for list of settings." msgid "Affects" msgstr "Touche" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:67 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:66 msgctxt "@label Header for list of settings." msgid "Affected By" msgstr "Touché par" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:157 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:156 msgctxt "@label" -msgid "This setting is always shared between all extruders. Changing it here will change the value for all extruders" +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 tous les extrudeurs. Le modifier ici entraînera la modification de la valeur pour tous les extrudeurs." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:160 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:159 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:186 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:190 msgctxt "@label" msgid "" "This setting has a value that is different from the profile.\n" "\n" "Click to restore the value of the profile." -msgstr "Ce paramètre possède une valeur qui est différente du profil.\n\nCliquez pour restaurer la valeur du profil." +msgstr "" +"Ce paramètre possède une valeur qui est différente du profil.\n" +"\n" +"Cliquez pour restaurer la valeur du profil." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:284 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:288 msgctxt "@label" msgid "" "This setting is normally calculated, but it currently has an absolute value set.\n" "\n" "Click to restore the calculated value." -msgstr "Ce paramètre est normalement calculé mais il possède actuellement une valeur absolue définie.\n\nCliquez pour restaurer la valeur calculée." +msgstr "" +"Ce paramètre est normalement calculé mais il possède actuellement une valeur absolue définie.\n" +"\n" +"Cliquez pour restaurer la valeur calculée." -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:120 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:128 msgctxt "@label:listbox" msgid "Print Setup" msgstr "Configuration de l'impression" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:120 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:128 msgctxt "@label:listbox" msgid "" "Print Setup disabled\n" "G-code files cannot be modified" -msgstr "Configuration de l'impression désactivée\nLes fichiers G-Code ne peuvent pas être modifiés" +msgstr "" +"Configuration de l'impression désactivée\n" +"Les fichiers G-Code ne peuvent pas être modifiés" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:336 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:342 msgctxt "@label Hours and minutes" msgid "00h 00min" msgstr "00h 00min" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:354 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:359 msgctxt "@tooltip" -msgid "Time specification
      " -msgstr "Spécification de temps
      " +msgid "Time specification" +msgstr "Spécification de temps" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:429 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:441 msgctxt "@label" msgid "Cost specification" msgstr "Spécification de coût" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:434 -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:445 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:446 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:455 msgctxt "@label m for meter" msgid "%1m" msgstr "%1m" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:435 -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:446 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:447 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:456 msgctxt "@label g for grams" msgid "%1g" msgstr "%1g" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:444 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:454 msgctxt "@label" msgid "Total:" msgstr "Total :" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:498 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:504 msgctxt "@label Print estimates: m for meters, g for grams, %4 is currency and %3 is print cost" msgid "%1m / ~ %2g / ~ %4 %3" msgstr "%1m / ~ %2g / ~ %4 %3" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:503 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:509 msgctxt "@label Print estimates: m for meters, g for grams" msgid "%1m / ~ %2g" msgstr "%1m / ~ %2g" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:586 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:591 msgctxt "@tooltip" msgid "Recommended Print Setup

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

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

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

      Imprimer avec un contrôle fin de chaque élément du processus de découpe." -#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:49 +#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:50 msgctxt "@title:menuitem %1 is the automatically selected material" msgid "Automatic: %1" msgstr "Automatique : %1" @@ -3337,6 +3660,16 @@ msgctxt "@title:menu menubar:toplevel" msgid "&View" msgstr "&Visualisation" +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:37 +msgctxt "@action:inmenu menubar:view" +msgid "&Camera position" +msgstr "Position de la &caméra" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:52 +msgctxt "@action:inmenu menubar:view" +msgid "&Build plate" +msgstr "&Plateau" + #: /home/ruben/Projects/Cura/resources/qml/Menus/NozzleMenu.qml:40 msgctxt "@title:menuitem %1 is the nozzle currently loaded in the printer" msgid "Automatic: %1" @@ -3349,14 +3682,14 @@ msgid_plural "Print Selected Models With:" msgstr[0] "Imprimer le modèle sélectionné avec :" msgstr[1] "Imprimer les modèles sélectionnés avec :" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ContextMenu.qml:83 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ContextMenu.qml:114 msgctxt "@title:window" 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/Menus/ContextMenu.qml:108 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ContextMenu.qml:139 msgctxt "@label" msgid "Number of Copies" msgstr "Nombre de copies" @@ -3372,10 +3705,10 @@ msgid "No printer connected" msgstr "Aucune imprimante n'est connectée" #: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:90 -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:138 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:139 msgctxt "@label" msgid "Extruder" -msgstr "Extrudeuse" +msgstr "Extrudeur" #: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:120 msgctxt "@tooltip" @@ -3482,254 +3815,294 @@ msgctxt "@label" msgid "Estimated time left" msgstr "Durée restante estimée" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:72 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:79 msgctxt "@action:inmenu" msgid "Toggle Fu&ll Screen" msgstr "Passer en P&lein écran" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:79 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:86 msgctxt "@action:inmenu menubar:edit" msgid "&Undo" msgstr "&Annuler" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:89 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:96 msgctxt "@action:inmenu menubar:edit" msgid "&Redo" msgstr "&Rétablir" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:99 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:106 msgctxt "@action:inmenu menubar:file" msgid "&Quit" msgstr "&Quitter" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:107 -msgctxt "@action:inmenu menubar:view" -msgid "&Reset camera position" -msgstr "&Réinitialiser la position de la caméra" - #: /home/ruben/Projects/Cura/resources/qml/Actions.qml:114 +msgctxt "@action:inmenu menubar:view" +msgid "&3D View" +msgstr "Vue &3D" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:121 +msgctxt "@action:inmenu menubar:view" +msgid "&Front View" +msgstr "Vue de &face" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:128 +msgctxt "@action:inmenu menubar:view" +msgid "&Top View" +msgstr "Vue du dess&us" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:135 +msgctxt "@action:inmenu menubar:view" +msgid "&Left Side View" +msgstr "Vue latérale &gauche" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:142 +msgctxt "@action:inmenu menubar:view" +msgid "&Right Side View" +msgstr "Vue latérale &droite" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:149 msgctxt "@action:inmenu" msgid "Configure Cura..." msgstr "Configurer Cura..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:121 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:156 msgctxt "@action:inmenu menubar:printer" msgid "&Add Printer..." msgstr "&Ajouter une imprimante..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:127 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:162 msgctxt "@action:inmenu menubar:printer" msgid "Manage Pr&inters..." msgstr "Gérer les &imprimantes..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:134 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:169 msgctxt "@action:inmenu" msgid "Manage Materials..." msgstr "Gérer les matériaux..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:142 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:177 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:150 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:185 msgctxt "@action:inmenu menubar:profile" msgid "&Discard current changes" msgstr "&Ignorer les modifications actuelles" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:162 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:197 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:168 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:203 msgctxt "@action:inmenu menubar:profile" msgid "Manage Profiles..." msgstr "Gérer les profils..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:175 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:210 msgctxt "@action:inmenu menubar:help" msgid "Show Online &Documentation" msgstr "Afficher la &documentation en ligne" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:183 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:218 msgctxt "@action:inmenu menubar:help" msgid "Report a &Bug" msgstr "Notifier un &bug" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:191 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:226 msgctxt "@action:inmenu menubar:help" msgid "&About..." msgstr "&À propos de..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:198 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:233 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:208 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:243 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:217 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:252 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:226 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:261 msgctxt "@action:inmenu" msgid "Delete Model" msgstr "Supprimer le modèle" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:234 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:269 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:240 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:275 msgctxt "@action:inmenu menubar:edit" msgid "&Group Models" msgstr "&Grouper les modèles" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:250 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:295 msgctxt "@action:inmenu menubar:edit" msgid "Ungroup Models" msgstr "Dégrouper les modèles" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:260 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:305 msgctxt "@action:inmenu menubar:edit" msgid "&Merge Models" msgstr "&Fusionner les modèles" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:270 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:315 msgctxt "@action:inmenu" msgid "&Multiply Model..." msgstr "&Multiplier le modèle..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:277 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:322 msgctxt "@action:inmenu menubar:edit" msgid "&Select All Models" msgstr "&Sélectionner tous les modèles" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:287 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:332 msgctxt "@action:inmenu menubar:edit" msgid "&Clear Build Plate" msgstr "&Supprimer les objets du plateau" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:297 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:342 msgctxt "@action:inmenu menubar:file" msgid "Re&load All Models" msgstr "Rechar&ger tous les modèles" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:306 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:351 +msgctxt "@action:inmenu menubar:edit" +msgid "Arrange All Models To All Build Plates" +msgstr "Réorganiser tous les modèles sur tous les plateaux" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:358 msgctxt "@action:inmenu menubar:edit" msgid "Arrange All Models" msgstr "Réorganiser tous les modèles" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:314 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:366 msgctxt "@action:inmenu menubar:edit" msgid "Arrange Selection" msgstr "Réorganiser la sélection" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:321 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:373 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:328 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:380 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:335 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:387 msgctxt "@action:inmenu menubar:file" msgid "&Open File(s)..." msgstr "&Ouvrir le(s) fichier(s)..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:343 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:395 msgctxt "@action:inmenu menubar:file" msgid "&New Project..." msgstr "&Nouveau projet..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:350 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:402 msgctxt "@action:inmenu menubar:help" msgid "Show Engine &Log..." msgstr "Afficher le &journal du moteur..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:358 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:410 msgctxt "@action:inmenu menubar:help" msgid "Show Configuration Folder" msgstr "Afficher le dossier de configuration" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:365 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:417 msgctxt "@action:menu" msgid "Configure setting visibility..." msgstr "Configurer la visibilité des paramètres..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:372 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:424 msgctxt "@action:menu" msgid "Browse plugins..." msgstr "Parcourir les plug-ins..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:379 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:431 msgctxt "@action:menu" msgid "Installed plugins..." msgstr "Plug-ins installés..." -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:28 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:438 +msgctxt "@action:inmenu menubar:view" +msgid "Expand/Collapse Sidebar" +msgstr "Déplier / replier la barre latérale" + +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:26 msgctxt "@label:PrintjobStatus" msgid "Please load a 3D model" msgstr "Veuillez charger un modèle 3D" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:34 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:36 msgctxt "@label:PrintjobStatus" msgid "Ready to slice" msgstr "Prêt à découper" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:36 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:38 msgctxt "@label:PrintjobStatus" msgid "Slicing..." msgstr "Découpe en cours..." -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:38 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:40 msgctxt "@label:PrintjobStatus %1 is target operation" msgid "Ready to %1" msgstr "Prêt à %1" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:40 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:42 msgctxt "@label:PrintjobStatus" msgid "Unable to Slice" msgstr "Impossible de découper" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:42 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:44 msgctxt "@label:PrintjobStatus" msgid "Slicing unavailable" msgstr "Découpe indisponible" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:162 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:171 +msgctxt "@info:tooltip" +msgid "Slice current printjob" +msgstr "Découper la tâche d'impression en cours" + +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:171 +msgctxt "@info:tooltip" +msgid "Cancel slicing process" +msgstr "Annuler le processus de découpe" + +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:183 msgctxt "@label:Printjob" msgid "Prepare" msgstr "Préparer" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:162 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:183 msgctxt "@label:Printjob" msgid "Cancel" msgstr "Annuler" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:302 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:317 msgctxt "@info:tooltip" msgid "Select the active output device" msgstr "Sélectionner le périphérique de sortie actif" #: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:19 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:620 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:696 msgctxt "@title:window" msgid "Open file(s)" msgstr "Ouvrir le(s) fichier(s)" @@ -3749,114 +4122,114 @@ msgctxt "@title:window" msgid "Ultimaker Cura" msgstr "Ultimaker Cura" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:81 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:102 msgctxt "@title:menu menubar:toplevel" msgid "&File" msgstr "&Fichier" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:98 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:119 msgctxt "@action:inmenu menubar:file" msgid "&Save Selection to File" msgstr "Enregi&strer la sélection dans un fichier" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:107 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:128 msgctxt "@title:menu menubar:file" msgid "Save &As..." msgstr "Enregistrer &sous..." -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:118 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:139 msgctxt "@title:menu menubar:file" -msgid "Save project" -msgstr "Enregistrer le projet" +msgid "Save &Project..." +msgstr "Enregistrer le &projet..." -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:141 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:162 msgctxt "@title:menu menubar:toplevel" msgid "&Edit" msgstr "&Modifier" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:158 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:179 msgctxt "@title:menu" msgid "&View" msgstr "&Visualisation" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:163 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:184 msgctxt "@title:menu" msgid "&Settings" msgstr "&Paramètres" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:165 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:186 msgctxt "@title:menu menubar:toplevel" msgid "&Printer" msgstr "Im&primante" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:175 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:187 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:196 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:208 msgctxt "@title:menu" msgid "&Material" msgstr "&Matériau" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:176 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:188 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:197 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:209 msgctxt "@title:menu" msgid "&Profile" msgstr "&Profil" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:180 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:201 msgctxt "@action:inmenu" msgid "Set as Active Extruder" msgstr "Définir comme extrudeur actif" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:198 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:219 msgctxt "@title:menu menubar:toplevel" msgid "E&xtensions" msgstr "E&xtensions" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:232 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:253 msgctxt "@title:menu menubar:toplevel" msgid "P&lugins" msgstr "&Plug-ins" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:240 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:261 msgctxt "@title:menu menubar:toplevel" msgid "P&references" msgstr "P&références" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:248 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:269 msgctxt "@title:menu menubar:toplevel" msgid "&Help" msgstr "&Aide" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:330 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:351 msgctxt "@action:button" msgid "Open File" msgstr "Ouvrir un fichier" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:442 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:512 msgctxt "@title:tab" msgid "Settings" msgstr "Paramètres" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:478 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:554 msgctxt "@title:window" msgid "New project" msgstr "Nouveau projet" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:479 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:555 msgctxt "@info:question" msgid "Are you sure you want to start a new project? This will clear the build plate and any unsaved settings." -msgstr "Êtes-vous sûr(e) de souhaiter lancer un nouveau projet ? Cela supprimera les objets du plateau ainsi que tous paramètres non enregistrés." +msgstr "Êtes-vous sûr(e) de vouloir commencer un nouveau projet ? Cela supprimera les objets du plateau ainsi que tous paramètres non enregistrés." -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:721 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:797 msgctxt "@window:title" msgid "Install Plugin" msgstr "Installer plug-in" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:728 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:804 msgctxt "@title:window" msgid "Open File(s)" msgstr "Ouvrir le(s) fichier(s)" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:731 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:807 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." @@ -3869,7 +4242,7 @@ msgstr "Enregistrer le projet" #: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:136 msgctxt "@action:label" msgid "Extruder %1" -msgstr "Extrudeuse %1" +msgstr "Extrudeur %1" #: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:146 msgctxt "@action:label" @@ -3881,97 +4254,82 @@ msgctxt "@action:label" msgid "Don't show project summary on save again" msgstr "Ne pas afficher à nouveau le résumé du projet lors de l'enregistrement" -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:264 -msgctxt "@action:button" -msgid "Save" -msgstr "Enregistrer" - -#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:74 -msgctxt "@title:tab" -msgid "Prepare" -msgstr "Préparer" - -#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:100 -msgctxt "@title:tab" -msgid "Monitor" -msgstr "Surveiller" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:163 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:175 msgctxt "@label" msgid "Layer Height" msgstr "Hauteur de la couche" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:323 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:345 msgctxt "@tooltip" msgid "A custom profile is currently active. To enable the quality slider, choose a default quality profile in Custom tab" msgstr "Un profil personnalisé est actuellement actif. Pour activer le curseur de qualité, choisissez un profil de qualité par défaut dans l'onglet Personnaliser" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:340 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:362 msgctxt "@label" msgid "Print Speed" msgstr "Vitesse d’impression" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:350 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:374 msgctxt "@label" msgid "Slower" msgstr "Ralentir" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:361 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:385 msgctxt "@label" msgid "Faster" msgstr "Accélérer" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:388 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:423 msgctxt "@tooltip" msgid "You have modified some profile settings. If you want to change these go to custom mode." msgstr "Vous avez modifié certains paramètres du profil. Si vous souhaitez les modifier, allez dans le mode Personnaliser." -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:413 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:446 msgctxt "@label" msgid "Infill" msgstr "Remplissage" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:633 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:668 msgctxt "@label" msgid "Gradual infill will gradually increase the amount of infill towards the top." msgstr "Un remplissage graduel augmentera la quantité de remplissage vers le haut." -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:645 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:680 msgctxt "@label" msgid "Enable gradual" msgstr "Permettre le remplissage graduel" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:712 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:747 msgctxt "@label" msgid "Generate Support" msgstr "Générer les supports" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:746 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:781 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." +msgstr "Générer des supports pour soutenir les parties du modèle qui possèdent des porte-à-faux. Sans ces supports, ces parties s'effondreront durant l'impression." -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:764 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:799 msgctxt "@label" msgid "Support Extruder" -msgstr "Extrudeuse de soutien" +msgstr "Extrudeur pour matériau support" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:816 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:851 msgctxt "@label" msgid "Select which extruder to use for support. This will build up supporting structures below the model to prevent the model from sagging or printing in mid air." msgstr "Sélectionnez l'extrudeur à utiliser comme support. Cela créera des structures de support sous le modèle afin de l'empêcher de s'affaisser ou de s'imprimer dans les airs." -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:839 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:874 msgctxt "@label" msgid "Build Plate Adhesion" msgstr "Adhérence au plateau" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:894 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:929 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." +msgstr "Activez l'impression du Brim ou Raft. Cela ajoutera une zone plate autour de ou sous votre objet qui est facile à retirer par la suite." -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:934 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:969 msgctxt "@label" msgid "Need help improving your prints?
      Read the Ultimaker Troubleshooting Guides" msgstr "Besoin d'aide pour améliorer vos impressions ?
      Lisez les Guides de dépannage Ultimaker" @@ -3988,17 +4346,22 @@ msgctxt "@title:window" msgid "Open project file" msgstr "Ouvrir un fichier de projet" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:72 +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:93 msgctxt "@text:window" msgid "This is a Cura project file. Would you like to open it as a project or import the models from it?" msgstr "Ceci est un fichier de projet Cura. Souhaitez-vous l'ouvrir comme projet ou en importer les modèles ?" #: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:103 +msgctxt "@text:window" +msgid "Remember my choice" +msgstr "Se souvenir de mon choix" + +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:122 msgctxt "@action:button" msgid "Open as project" msgstr "Ouvrir comme projet" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:122 +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:131 msgctxt "@action:button" msgid "Import models" msgstr "Importer les modèles" @@ -4008,21 +4371,36 @@ msgctxt "@title:window" msgid "Engine Log" msgstr "Journal du moteur" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:242 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:245 msgctxt "@label" msgid "Material" msgstr "Matériau" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:349 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:352 msgctxt "@label" -msgid "Check compatibility" -msgstr "Vérifier la compatibilité" +msgid "Check compatibility" +msgstr "Vérifier la compatibilité" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:369 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:372 msgctxt "@tooltip" msgid "Click to check the material compatibility on Ultimaker.com." msgstr "Cliquez ici pour vérifier la compatibilité des matériaux sur Ultimaker.com." +#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:211 +msgctxt "@option:check" +msgid "See only current build plate" +msgstr "Afficher uniquement le plateau actuel" + +#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:227 +msgctxt "@action:button" +msgid "Arrange to all build plates" +msgstr "Réorganiser sur tous les plateaux" + +#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:247 +msgctxt "@action:button" +msgid "Arrange current build plate" +msgstr "Réorganiser le plateau actuel" + #: MachineSettingsAction/plugin.json msgctxt "description" msgid "Provides a way to change machine settings (such as build volume, nozzle size, etc)" @@ -4113,6 +4491,26 @@ msgctxt "name" msgid "USB printing" msgstr "Impression par USB" +#: PrepareStage/plugin.json +msgctxt "description" +msgid "Provides a prepare stage in Cura." +msgstr "Fournit une étape de préparation dans Cura." + +#: PrepareStage/plugin.json +msgctxt "name" +msgid "Prepare Stage" +msgstr "Étape de préparation" + +#: CuraLiveScriptingPlugin/plugin.json +msgctxt "description" +msgid "Provides an edit window for direct script editing." +msgstr "Fournit une fenêtre d'édition pour l'édition directe de script." + +#: CuraLiveScriptingPlugin/plugin.json +msgctxt "name" +msgid "Live scripting tool" +msgstr "Outil de scripting en direct" + #: RemovableDriveOutputDevice/plugin.json msgctxt "description" msgid "Provides removable drive hotplugging and writing support." @@ -4133,6 +4531,16 @@ msgctxt "name" msgid "UM3 Network Connection" msgstr "Connexion au réseau UM3" +#: MonitorStage/plugin.json +msgctxt "description" +msgid "Provides a monitor stage in Cura." +msgstr "Fournit une étape de surveillance dans Cura." + +#: MonitorStage/plugin.json +msgctxt "name" +msgid "Monitor Stage" +msgstr "Étape de surveillance" + #: FirmwareUpdateChecker/plugin.json msgctxt "description" msgid "Checks for firmware updates." @@ -4141,12 +4549,12 @@ msgstr "Vérifie les mises à jour du firmware." #: FirmwareUpdateChecker/plugin.json msgctxt "name" msgid "Firmware Update Checker" -msgstr "Vérificateur des mises à jour du firmware" +msgstr "Vérification des mises à jour du firmware" #: CuraSolidWorksPlugin/plugin.json msgctxt "description" -msgid "Gives you the possibility to open certain files via SolidWorks itself. These are then converted and loaded into Cura" -msgstr "Donne la possibilité d'ouvrir certains fichiers via SolidWorks. Ces fichiers sont ensuite convertis et chargés dans Cura." +msgid "Gives you the possibility to open certain files using SolidWorks itself. Conversion is done by this plugin and additional optimizations." +msgstr "Donne la possibilité d'ouvrir certains fichiers via SolidWorks. La conversion est ensuite effectuée par ce plug-in et des optimisations supplémentaires." #: CuraSolidWorksPlugin/plugin.json msgctxt "name" @@ -4201,7 +4609,7 @@ msgstr "Offre la possibilité de lire et d'écrire des profils matériels basés #: XmlMaterialProfile/plugin.json msgctxt "name" msgid "Material Profiles" -msgstr "Profils matériels" +msgstr "Profils matériaux" #: LegacyProfileReader/plugin.json msgctxt "description" @@ -4213,6 +4621,16 @@ msgctxt "name" msgid "Legacy Cura Profile Reader" msgstr "Lecteur de profil Cura antérieur" +#: CuraBlenderPlugin/plugin.json +msgctxt "description" +msgid "Helps to open Blender files directly in Cura." +msgstr "Aide à ouvrir les fichiers Blender directement dans Cura." + +#: CuraBlenderPlugin/plugin.json +msgctxt "name" +msgid "Blender Integration (experimental)" +msgstr "Intégration Blender (expérimental)" + #: GCodeProfileReader/plugin.json msgctxt "description" msgid "Provides support for importing profiles from g-code files." @@ -4321,7 +4739,7 @@ msgstr "Vous aide à installer un bouton « exporter vers Cura » dans Siemens #: cura-siemensnx-plugin/plugin.json msgctxt "name" msgid "Siemens NX Integration" -msgstr "Siemens NX Integration" +msgstr "Intégration Siemens NX" #: 3MFReader/plugin.json msgctxt "description" @@ -4373,6 +4791,16 @@ 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." @@ -4386,17 +4814,17 @@ msgstr "Générateur 3MF" #: UserAgreementPlugin/plugin.json msgctxt "description" msgid "Ask the user once if he/she agrees with our license" -msgstr "Demander à l'utilisateur une fois s'il appose son accord à notre licence" +msgstr "Demander à l'utilisateur une fois s'il est d'accord avec les termes de notre licence" #: UserAgreementPlugin/plugin.json msgctxt "name" msgid "UserAgreement" -msgstr "UserAgreement" +msgstr "Accord de l'utilisateur" #: UltimakerMachineActions/plugin.json msgctxt "description" msgid "Provides machine actions for Ultimaker machines (such as bed leveling wizard, selecting upgrades, etc)" -msgstr "Fournit les actions de la machine pour les machines Ultimaker (telles que l'assistant de calibration du plateau, sélection des mises à niveau, etc.)" +msgstr "Fournit les actions de la machine pour les machines Ultimaker (tels que l'assistant de calibration du plateau, sélection des mises à niveau, etc.)" #: UltimakerMachineActions/plugin.json msgctxt "name" @@ -4413,6 +4841,156 @@ msgctxt "name" msgid "Cura Profile Reader" msgstr "Lecteur de profil Cura" +#~ msgctxt "@label" +#~ msgid "Unknown" +#~ msgstr "Inconnu" + +#~ msgctxt "@info:status" +#~ msgid "Errors appeared while opening your SolidWorks file! Please check, whether it is possible to open your file in SolidWorks itself without any problems as well!" +#~ msgstr "Des erreurs sont apparues lors de l'ouverture de votre fichier SolidWorks ! Veuillez vérifier s'il est possible d'ouvrir votre fichier dans SolidWorks sans que cela ne cause de problèmes." + +#~ msgctxt "@info:status" +#~ msgid "Error while starting %s!" +#~ msgstr "Erreur lors du lancement de %s !" + +#~ msgctxt "@item:inlistbox" +#~ msgid "Simulation view" +#~ msgstr "Vue simulation" + +#~ msgctxt "@info" +#~ msgid "Cura collects anonymised slicing statistics. You can disable this in the preferences." +#~ msgstr "Cura collecte des statistiques anonymes sur le découpage. Vous pouvez désactiver cette fonctionnalité dans les préférences." + +#~ msgctxt "@action:button" +#~ msgid "Dismiss" +#~ msgstr "Ignorer" + +#~ msgctxt "@menuitem" +#~ msgid "Global" +#~ msgstr "Global" + +#~ msgctxt "@label crash message" +#~ msgid "" +#~ "

      A fatal exception has occurred. Please send us this Crash Report to fix the problem

      \n" +#~ "

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

      \n" +#~ " " +#~ msgstr "" +#~ "

      Une exception fatale s'est produite. Veuillez nous envoyer ce Rapport d'incident pour résoudre le problème

      \n" +#~ "

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

      \n" +#~ " " + +#~ msgctxt "@label Cura version" +#~ msgid "Cura version: {version}
      " +#~ msgstr "Version Cura : {version}
      " + +#~ msgctxt "@label Platform" +#~ msgid "Platform: {platform}
      " +#~ msgstr "Plateforme : {platform}
      " + +#~ msgctxt "@label Qt version" +#~ msgid "Qt version: {qt}
      " +#~ msgstr "Version Qt : {qt}
      " + +#~ msgctxt "@label PyQt version" +#~ msgid "PyQt version: {pyqt}
      " +#~ msgstr "Version PyQt : {pyqt}
      " + +#~ msgctxt "@label OpenGL" +#~ msgid "OpenGL: {opengl}
      " +#~ msgstr "OpenGL : {opengl}
      " + +#~ msgctxt "@title:groupbox" +#~ msgid "Exception traceback" +#~ msgstr "Retraçage de l'exception" + +#~ msgctxt "@label" +#~ msgid "Material diameter" +#~ msgstr "Diamètre du matériau" + +#~ msgctxt "@label" +#~ msgid "Ultimaker 3" +#~ msgstr "Ultimaker 3" + +#~ msgctxt "@label" +#~ msgid "Ultimaker 3 Extended" +#~ msgstr "Ultimaker 3 Extended" + +#~ msgctxt "@title:window" +#~ msgid "Cura SolidWorks Plugin Configuration" +#~ msgstr "Configuration du plug-in Cura SolidWorks" + +#~ msgctxt "@action:label" +#~ msgid "Default quality of the exported STL:" +#~ msgstr "Qualité par défaut du STL exporté :" + +#~ msgctxt "@option:curaSolidworksStlQuality" +#~ msgid "Always ask" +#~ msgstr "Toujours demander" + +#~ msgctxt "@option:curaSolidworksStlQuality" +#~ msgid "Always use Fine quality" +#~ msgstr "Toujours utiliser la qualité Fine" + +#~ msgctxt "@option:curaSolidworksStlQuality" +#~ msgid "Always use Coarse quality" +#~ msgstr "Toujours utiliser la qualité grossière" + +#~ msgctxt "@title:window" +#~ msgid "Import SolidWorks File as STL..." +#~ msgstr "Importer le fichier SolidWorks comme STL..." + +#~ msgctxt "@info:tooltip" +#~ msgid "Quality of the Exported STL" +#~ msgstr "Qualité du STL exporté" + +#~ msgctxt "@action:label" +#~ msgid "Quality" +#~ msgstr "Qualité" + +#~ msgctxt "@option:curaSolidworksStlQuality" +#~ msgid "Coarse" +#~ msgstr "Grossière" + +#~ msgctxt "@option:curaSolidworksStlQuality" +#~ msgid "Fine" +#~ msgstr "Fine" + +#~ msgctxt "@" +#~ msgid "No Profile Available" +#~ msgstr "Aucun profil disponible" + +#~ 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 tous les extrudeurs. Le modifier ici entraînera la modification de la valeur pour tous les extrudeurs." + +#~ msgctxt "@tooltip" +#~ msgid "Time specification
      " +#~ msgstr "Spécification de temps
      " + +#~ msgctxt "@action:inmenu menubar:view" +#~ msgid "&Reset camera position" +#~ msgstr "&Réinitialiser la position de la caméra" + +#~ msgctxt "@title:menu menubar:file" +#~ msgid "Save project" +#~ msgstr "Enregistrer le projet" + +#~ msgctxt "@title:tab" +#~ msgid "Prepare" +#~ msgstr "Préparer" + +#~ msgctxt "@title:tab" +#~ msgid "Monitor" +#~ msgstr "Surveiller" + +#~ msgctxt "@label" +#~ msgid "Check compatibility" +#~ msgstr "Vérifier la compatibilité" + +#~ msgctxt "description" +#~ msgid "Gives you the possibility to open certain files via SolidWorks itself. These are then converted and loaded into Cura" +#~ msgstr "Donne la possibilité d'ouvrir certains fichiers via SolidWorks. Ces fichiers sont ensuite convertis et chargés dans Cura." + #~ msgctxt "@label:status" #~ msgid "Blocked" #~ msgstr "Bloqué" @@ -4433,13 +5011,9 @@ msgstr "Lecteur de profil Cura" #~ msgid "To ensure that your {machine_name} is equipped with the latest features it is recommended to update the firmware regularly. This can be done on the {machine_name} (when connected to the network) or via USB." #~ msgstr "Pour s'assurer que votre {machine_name} est pourvue des dernières fonctionnalités, il est recommandé de mettre régulièrement à jour le firmware. Cela peut se faire sur la {machine_name} (lorsque connectée au réseau) ou via USB." -msgctxt "@item:inlistbox" -msgid "Layer view" -msgstr "Vue en couches" - -msgctxt "@info:title" -msgid "Layer View" -msgstr "Vue en couches" +#~ msgctxt "@info:title" +#~ msgid "Layer View" +#~ msgstr "Vue en couches" #~ msgctxt "@menuitem" #~ msgid "Browse plugins" @@ -4541,9 +5115,9 @@ msgstr "Vue en couches" #~ msgid "Provides the Layer view." #~ msgstr "Permet la vue en couches." -msgctxt "name" -msgid "Layer View" -msgstr "Vue en couches" +#~ msgctxt "name" +#~ msgid "Layer View" +#~ msgstr "Vue en couches" #~ msgctxt "@item:inlistbox" #~ msgid "X-Ray" @@ -4864,9 +5438,9 @@ msgstr "Vue en couches" #~ msgid "Provides support for importing profiles from g-code files." #~ msgstr "Fournit la prise en charge de l'importation de profils à partir de fichiers g-code." -msgctxt "@label" -msgid "Layer View" -msgstr "Vue en couches" +#~ msgctxt "@label" +#~ msgid "Layer View" +#~ msgstr "Vue en couches" #~ msgctxt "@info:whatsthis" #~ msgid "Provides the Layer view." diff --git a/resources/i18n/fr_FR/fdmextruder.def.json.po b/resources/i18n/fr_FR/fdmextruder.def.json.po index fdec72de32..ead5e0a87b 100644 --- a/resources/i18n/fr_FR/fdmextruder.def.json.po +++ b/resources/i18n/fr_FR/fdmextruder.def.json.po @@ -2,12 +2,12 @@ # Copyright (C) 2017 Ultimaker # This file is distributed under the same license as the Cura package. # Ruben Dulek , 2017. -# +# msgid "" msgstr "" "Project-Id-Version: Cura 3.0\n" -"Report-Msgid-Bugs-To: http://github.com/ultimaker/uranium\n" -"POT-Creation-Date: 2017-11-21 16:58+0000\n" +"Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" +"POT-Creation-Date: 2017-08-02 16:53+0000\n" "PO-Revision-Date: 2017-11-30 13:05+0100\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 0e768253dc..35731b8312 100644 --- a/resources/i18n/fr_FR/fdmprinter.def.json.po +++ b/resources/i18n/fr_FR/fdmprinter.def.json.po @@ -1,20 +1,21 @@ -# Cura JSON setting files -# Copyright (C) 2017 Ultimaker +# Cura +# Copyright (C) 2018 Ultimaker # This file is distributed under the same license as the Cura package. -# Ruben Dulek , 2017. -# +# Ruben Dulek , 2018. +# msgid "" msgstr "" -"Project-Id-Version: Cura 3.0\n" -"Report-Msgid-Bugs-To: http://github.com/ultimaker/uranium\n" -"POT-Creation-Date: 2017-11-21 16:58+0000\n" -"PO-Revision-Date: 2017-11-30 13:05+0100\n" +"Project-Id-Version: Cura 3.2\n" +"Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" +"POT-Creation-Date: 2018-01-29 09:48+0000\n" +"PO-Revision-Date: 2018-02-13 15:31+0100\n" "Last-Translator: Bothof \n" "Language-Team: French\n" "Language: fr_FR\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" #: fdmprinter.def.json msgctxt "machine_settings label" @@ -56,7 +57,9 @@ msgctxt "machine_start_gcode description" msgid "" "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." +msgstr "" +"Commandes Gcode à exécuter au tout début, séparées par \n" +"." #: fdmprinter.def.json msgctxt "machine_end_gcode label" @@ -68,17 +71,19 @@ msgctxt "machine_end_gcode description" msgid "" "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." +msgstr "" +"Commandes Gcode à exécuter à la toute fin, séparées par \n" +"." #: fdmprinter.def.json msgctxt "material_guid label" msgid "Material GUID" -msgstr "GUID matériau" +msgstr "Identification GUID du matériau" #: fdmprinter.def.json msgctxt "material_guid description" msgid "GUID of the material. This is set automatically. " -msgstr "GUID du matériau. Cela est configuré automatiquement. " +msgstr "Identification GUID du matériau. Cela est configuré automatiquement. " #: fdmprinter.def.json msgctxt "material_bed_temp_wait label" @@ -148,7 +153,7 @@ msgstr "Forme du plateau" #: fdmprinter.def.json msgctxt "machine_shape description" msgid "The shape of the build plate without taking unprintable areas into account." -msgstr "La forme du plateau sans prendre les zones non imprimables en compte." +msgstr "La forme du plateau sans prendre en compte les zones non imprimables." #: fdmprinter.def.json msgctxt "machine_shape option rectangular" @@ -173,12 +178,12 @@ msgstr "La hauteur (sens Z) de la zone imprimable." #: fdmprinter.def.json msgctxt "machine_heated_bed label" msgid "Has Heated Build Plate" -msgstr "A un plateau chauffé" +msgstr "A un plateau chauffant" #: fdmprinter.def.json 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." +msgstr "Si la machine a un plateau chauffant existant." #: fdmprinter.def.json msgctxt "machine_center_is_zero label" @@ -198,7 +203,7 @@ msgstr "Nombre d'extrudeuses" #: fdmprinter.def.json msgctxt "machine_extruder_count description" msgid "Number of extruder trains. An extruder train is the combination of a feeder, bowden tube, and nozzle." -msgstr "Nombre de trains d'extrudeuse. Un train d'extrudeuse est la combinaison d'un chargeur, d'un tube bowden et d'une buse." +msgstr "Nombre de systèmes d'extrusion. Un système d'extrusion est la combinaison d'un feeder, d'un tube bowden et d'une buse." #: fdmprinter.def.json msgctxt "machine_nozzle_tip_outer_diameter label" @@ -238,7 +243,7 @@ msgstr "Longueur de la zone chauffée" #: fdmprinter.def.json msgctxt "machine_heat_zone_length description" msgid "The distance from the tip of the nozzle in which heat from the nozzle is transferred to the filament." -msgstr "Distance depuis la pointe du bec d'impression sur laquelle la chaleur du bec d'impression est transférée au filament." +msgstr "Distance depuis la pointe de la buse sur laquelle la chaleur de la buse est transférée au filament." #: fdmprinter.def.json msgctxt "machine_filament_park_distance label" @@ -248,7 +253,7 @@ msgstr "Distance de stationnement du filament" #: fdmprinter.def.json msgctxt "machine_filament_park_distance description" msgid "The distance from the tip of the nozzle where to park the filament when an extruder is no longer used." -msgstr "Distance depuis la pointe du bec sur laquelle stationner le filament lorsqu'une extrudeuse n'est plus utilisée." +msgstr "Distance depuis la pointe de la buse sur laquelle stationne le filament lorsqu'une extrudeuse n'est plus utilisée." #: fdmprinter.def.json msgctxt "machine_nozzle_temp_enabled label" @@ -263,7 +268,7 @@ msgstr "Contrôler ou non la température depuis Cura. Désactivez cette option #: fdmprinter.def.json msgctxt "machine_nozzle_heat_up_speed label" msgid "Heat up speed" -msgstr "Vitesse de chauffage" +msgstr "Vitesse de chauffe" #: fdmprinter.def.json msgctxt "machine_nozzle_heat_up_speed description" @@ -283,7 +288,7 @@ msgstr "La vitesse (°C/s) à laquelle la buse refroidit, sur une moyenne de la #: fdmprinter.def.json msgctxt "machine_min_cool_heat_time_window label" msgid "Minimal Time Standby Temperature" -msgstr "Durée minimale température de veille" +msgstr "Température minimale de veille" #: fdmprinter.def.json msgctxt "machine_min_cool_heat_time_window description" @@ -345,6 +350,16 @@ msgctxt "machine_gcode_flavor option Repetier" msgid "Repetier" msgstr "Repetier" +#: fdmprinter.def.json +msgctxt "machine_firmware_retract label" +msgid "Firmware Retraction" +msgstr "Rétraction du firmware" + +#: fdmprinter.def.json +msgctxt "machine_firmware_retract description" +msgid "Whether to use firmware retract commands (G10/G11) instead of using the E property in G1 commands to retract the material." +msgstr "S'il faut utiliser les commandes de rétraction du firmware (G10 / G11) au lieu d'utiliser la propriété E dans les commandes G1 pour rétracter le matériau." + #: fdmprinter.def.json msgctxt "machine_disallowed_areas label" msgid "Disallowed areas" @@ -358,12 +373,12 @@ msgstr "Une liste de polygones comportant les zones dans lesquelles la tête d'i #: fdmprinter.def.json msgctxt "nozzle_disallowed_areas label" msgid "Nozzle Disallowed Areas" -msgstr "Zones interdites au bec d'impression" +msgstr "Zones interdites à la buse" #: fdmprinter.def.json msgctxt "nozzle_disallowed_areas description" msgid "A list of polygons with areas the nozzle is not allowed to enter." -msgstr "Une liste de polygones comportant les zones dans lesquelles le bec n'a pas le droit de pénétrer." +msgstr "Une liste de polygones comportant les zones dans lesquelles la buse n'a pas le droit de pénétrer." #: fdmprinter.def.json msgctxt "machine_head_polygon label" @@ -373,7 +388,7 @@ msgstr "Polygone de la tête de machine" #: fdmprinter.def.json msgctxt "machine_head_polygon description" msgid "A 2D silhouette of the print head (fan caps excluded)." -msgstr "Une silhouette 2D de la tête d'impression (sans les capuchons du ventilateur)." +msgstr "Une silhouette 2D de la tête d'impression (sans les carter du ventilateur)." #: fdmprinter.def.json msgctxt "machine_head_with_fans_polygon label" @@ -383,7 +398,7 @@ msgstr "Tête de la machine et polygone du ventilateur" #: fdmprinter.def.json msgctxt "machine_head_with_fans_polygon description" msgid "A 2D silhouette of the print head (fan caps included)." -msgstr "Une silhouette 2D de la tête d'impression (avec les capuchons du ventilateur)." +msgstr "Une silhouette 2D de la tête d'impression (avec les carters du ventilateur)." #: fdmprinter.def.json msgctxt "gantry_height label" @@ -398,12 +413,12 @@ msgstr "La différence de hauteur entre la pointe de la buse et le système de p #: fdmprinter.def.json msgctxt "machine_nozzle_id label" msgid "Nozzle ID" -msgstr "ID buse" +msgstr "ID de la buse" #: fdmprinter.def.json msgctxt "machine_nozzle_id description" msgid "The nozzle ID for an extruder train, such as \"AA 0.4\" and \"BB 0.8\"." -msgstr "ID buse pour un train d'extrudeuse, comme « AA 0.4 » et « BB 0.8 »." +msgstr "ID de la buse pour un système d'extrusion, comme « AA 0.4 » et « BB 0.8 »." #: fdmprinter.def.json msgctxt "machine_nozzle_size label" @@ -418,17 +433,17 @@ msgstr "Le diamètre intérieur de la buse. Modifiez ce paramètre si vous utili #: fdmprinter.def.json msgctxt "machine_use_extruder_offset_to_offset_coords label" msgid "Offset With Extruder" -msgstr "Décalage avec extrudeuse" +msgstr "Offset avec extrudeuse" #: fdmprinter.def.json msgctxt "machine_use_extruder_offset_to_offset_coords description" msgid "Apply the extruder offset to the coordinate system." -msgstr "Appliquer le décalage de l'extrudeuse au système de coordonnées." +msgstr "Appliquer l'offset de l'extrudeuse au système de coordonnées." #: fdmprinter.def.json msgctxt "extruder_prime_pos_z label" msgid "Extruder Prime Z Position" -msgstr "Extrudeuse Position d'amorçage Z" +msgstr "Position d'amorçage en Z de l'extrudeuse" #: fdmprinter.def.json msgctxt "extruder_prime_pos_z description" @@ -588,7 +603,7 @@ msgstr "Tous les paramètres qui influent sur la résolution de l'impression. Ce #: fdmprinter.def.json msgctxt "layer_height label" msgid "Layer Height" -msgstr "Hauteur de la couche" +msgstr "Hauteur de couche" #: fdmprinter.def.json msgctxt "layer_height description" @@ -598,38 +613,13 @@ msgstr "La hauteur de chaque couche en mm. Des valeurs plus élevées créent de #: fdmprinter.def.json msgctxt "layer_height_0 label" msgid "Initial Layer Height" -msgstr "Hauteur de la couche initiale" +msgstr "Hauteur de couche initiale" #: fdmprinter.def.json msgctxt "layer_height_0 description" msgid "The height of the initial layer in mm. A thicker initial layer makes adhesion to the build plate easier." msgstr "La hauteur de la couche initiale en mm. Une couche initiale plus épaisse adhère plus facilement au plateau." -#: fdmprinter.def.json -msgctxt "slicing_tolerance label" -msgid "Slicing Tolerance" -msgstr "Tolérance à la découpe" - -#: fdmprinter.def.json -msgctxt "slicing_tolerance description" -msgid "How to slice layers with diagonal surfaces. The areas of a layer can be generated based on where the middle of the layer intersects the surface (Middle). Alternatively each layer can have the areas which fall inside of the volume throughout the height of the layer (Exclusive) or a layer has the areas which fall inside anywhere within the layer (Inclusive). Exclusive retains the most details, Inclusive makes for the best fit and Middle takes the least time to process." -msgstr "Comment découper des couches avec des surfaces diagonales. Les zones d'une couche peuvent être générées en fonction de l'endroit où le milieu de la couche croise la surface (Milieu). Alternativement, chaque couche peut posséder des zones situées à l'intérieur du volume à travers toute la hauteur de la couche (Exclusif), ou une couche peut avoir des zones situées à l'intérieur à tout endroit dans la couche (Inclusif). L'option Exclusif permet de retenir le plus de détails, Inclusif permet d'obtenir une adaptation optimale et Milieu demande le moins de temps de traitement." - -#: fdmprinter.def.json -msgctxt "slicing_tolerance option middle" -msgid "Middle" -msgstr "Milieu" - -#: fdmprinter.def.json -msgctxt "slicing_tolerance option exclusive" -msgid "Exclusive" -msgstr "Exclusif" - -#: fdmprinter.def.json -msgctxt "slicing_tolerance option inclusive" -msgid "Inclusive" -msgstr "Inclusif" - #: fdmprinter.def.json msgctxt "line_width label" msgid "Line Width" @@ -643,12 +633,12 @@ msgstr "Largeur d'une ligne. Généralement, la largeur de chaque ligne doit cor #: fdmprinter.def.json msgctxt "wall_line_width label" msgid "Wall Line Width" -msgstr "Largeur de ligne de la paroi" +msgstr "Largeur de ligne de la coque" #: fdmprinter.def.json msgctxt "wall_line_width description" msgid "Width of a single wall line." -msgstr "Largeur d'une seule ligne de la paroi." +msgstr "Largeur d'une seule ligne de la paroie." #: fdmprinter.def.json msgctxt "wall_line_width_0 label" @@ -670,16 +660,6 @@ msgctxt "wall_line_width_x description" msgid "Width of a single wall line for all wall lines except the outermost one." msgstr "Largeur d'une seule ligne de la paroi pour toutes les lignes de paroi, à l’exception de la ligne la plus externe." -#: fdmprinter.def.json -msgctxt "roofing_line_width label" -msgid "Top Surface Skin Line Width" -msgstr "Largeur de ligne de couche extérieure de la surface supérieure" - -#: fdmprinter.def.json -msgctxt "roofing_line_width description" -msgid "Width of a single line of the areas at the top of the print." -msgstr "Largeur d'une seule ligne de la zone en haut de l'impression." - #: fdmprinter.def.json msgctxt "skin_line_width label" msgid "Top/Bottom Line Width" @@ -713,7 +693,7 @@ msgstr "Largeur d'une seule ligne de jupe ou de bordure." #: fdmprinter.def.json msgctxt "support_line_width label" msgid "Support Line Width" -msgstr "Largeur de ligne de support" +msgstr "Largeur de ligne des supports" #: fdmprinter.def.json msgctxt "support_line_width description" @@ -733,12 +713,12 @@ msgstr "Largeur d'une seule ligne de plafond ou de bas de support." #: fdmprinter.def.json msgctxt "support_roof_line_width label" msgid "Support Roof Line Width" -msgstr "Largeur de ligne de plafond de support" +msgstr "Largeur de ligne du toit de support" #: fdmprinter.def.json msgctxt "support_roof_line_width description" msgid "Width of a single support roof line." -msgstr "Largeur d'une seule ligne de plafond de support." +msgstr "Largeur d'une seule ligne de toit de support." #: fdmprinter.def.json msgctxt "support_bottom_line_width label" @@ -788,7 +768,7 @@ msgstr "Extrudeuse de paroi" #: fdmprinter.def.json msgctxt "wall_extruder_nr description" msgid "The extruder train used for printing the walls. This is used in multi-extrusion." -msgstr "Le train d'extrudeuse utilisé pour l'impression des parois. Cela est utilisé en multi-extrusion." +msgstr "Le système d'extrusion utilisé pour l'impression des parois. Cela est utilisé en multi-extrusion." #: fdmprinter.def.json msgctxt "wall_0_extruder_nr label" @@ -798,7 +778,7 @@ msgstr "Extrudeuse de paroi externe" #: fdmprinter.def.json msgctxt "wall_0_extruder_nr description" msgid "The extruder train used for printing the outer wall. This is used in multi-extrusion." -msgstr "Le train d'extrudeuse utilisé pour l'impression des parois externes. Cela est utilisé en multi-extrusion." +msgstr "Le système d'extrusion utilisé pour l'impression des parois externes. Cela est utilisé en multi-extrusion." #: fdmprinter.def.json msgctxt "wall_x_extruder_nr label" @@ -808,7 +788,7 @@ msgstr "Extrudeuse de paroi interne" #: fdmprinter.def.json msgctxt "wall_x_extruder_nr description" msgid "The extruder train used for printing the inner walls. This is used in multi-extrusion." -msgstr "Le train d'extrudeuse utilisé pour l'impression des parois internes. Cela est utilisé en multi-extrusion." +msgstr "Le système d'extrusion utilisé pour l'impression des parois internes. Cela est utilisé en multi-extrusion." #: fdmprinter.def.json msgctxt "wall_thickness label" @@ -848,7 +828,7 @@ msgstr "Extrudeuse de couche extérieure de la surface supérieure" #: fdmprinter.def.json msgctxt "roofing_extruder_nr description" msgid "The extruder train used for printing the top most skin. This is used in multi-extrusion." -msgstr "Le train d'extrudeuse utilisé pour l'impression de la couche extérieure supérieure. Cela est utilisé en multi-extrusion." +msgstr "Le système d'extrusion utilisé pour l'impression de la couche extérieure supérieure. Cela est utilisé en multi-extrusion." #: fdmprinter.def.json msgctxt "roofing_layer_count label" @@ -860,41 +840,6 @@ msgctxt "roofing_layer_count description" msgid "The number of top most skin layers. Usually only one top most layer is sufficient to generate higher quality top surfaces." msgstr "Nombre de couches extérieures supérieures. En général, une seule couche supérieure est suffisante pour générer des surfaces supérieures de qualité." -#: fdmprinter.def.json -msgctxt "roofing_pattern label" -msgid "Top Surface Skin Pattern" -msgstr "Motif de couche extérieure de surface supérieure" - -#: fdmprinter.def.json -msgctxt "roofing_pattern description" -msgid "The pattern of the top most layers." -msgstr "Le motif des couches supérieures." - -#: fdmprinter.def.json -msgctxt "roofing_pattern option lines" -msgid "Lines" -msgstr "Lignes" - -#: fdmprinter.def.json -msgctxt "roofing_pattern option concentric" -msgid "Concentric" -msgstr "Concentrique" - -#: fdmprinter.def.json -msgctxt "roofing_pattern option zigzag" -msgid "Zig Zag" -msgstr "Zig Zag" - -#: fdmprinter.def.json -msgctxt "roofing_angles label" -msgid "Top Surface Skin Line Directions" -msgstr "Sens de lignes de couche extérieure de surface supérieure" - -#: fdmprinter.def.json -msgctxt "roofing_angles description" -msgid "A list of integer line directions to use when the top surface skin layers use the lines or zig zag pattern. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the traditional default angles (45 and 135 degrees)." -msgstr "Une liste de sens de ligne (exprimés en nombres entiers) à utiliser lorsque les couches extérieures de la surface supérieure utilisent le motif en lignes ou en zig zag. 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 traditionnels par défaut seront utilisés (45 et 135 degrés)." - #: fdmprinter.def.json msgctxt "top_bottom_extruder_nr label" msgid "Top/Bottom Extruder" @@ -903,7 +848,7 @@ msgstr "Extrudeuse du dessus/dessous" #: fdmprinter.def.json msgctxt "top_bottom_extruder_nr description" msgid "The extruder train used for printing the top and bottom skin. This is used in multi-extrusion." -msgstr "Le train d'extrudeuse utilisé pour l'impression de la couche extérieure du haut et du bas. Cela est utilisé en multi-extrusion." +msgstr "Le système d'extrusion utilisé pour l'impression de la couche extérieure du haut et du bas. Cela est utilisé en multi-extrusion." #: fdmprinter.def.json msgctxt "top_bottom_thickness label" @@ -1018,12 +963,22 @@ msgstr "Une liste de sens de ligne (exprimés en nombres entiers) à utiliser lo #: fdmprinter.def.json msgctxt "wall_0_inset label" msgid "Outer Wall Inset" -msgstr "Insert de paroi externe" +msgstr "Enchevêtrement de la paroi externe" #: fdmprinter.def.json msgctxt "wall_0_inset description" msgid "Inset applied to the path of the outer wall. If the outer wall is smaller than the nozzle, and printed after the inner walls, use this offset to get the hole in the nozzle to overlap with the inner walls instead of the outside of the model." -msgstr "Insert appliqué sur le passage de la paroi externe. Si la paroi externe est plus petite que la buse et imprimée après les parois intérieures, utiliser ce décalage pour que le trou dans la buse chevauche les parois internes et non l'extérieur du modèle." +msgstr "Enchevêtrement appliqué sur le passage de la paroi externe. Si la paroi externe est plus petite que la buse et imprimée après les parois intérieures, utiliser cet Offset pour que le trou dans la buse chevauche les parois internes et non l'extérieur du modèle." + +#: fdmprinter.def.json +msgctxt "optimize_wall_printing_order label" +msgid "Optimize Wall Printing Order" +msgstr "Optimiser l'ordre d'impression des parois" + +#: fdmprinter.def.json +msgctxt "optimize_wall_printing_order description" +msgid "Optimize the order in which walls are printed so as to reduce the number of retractions and the distance travelled. Most parts will benefit from this being enabled but some may actually take longer so please compare the print time estimates with and without optimization." +msgstr "Optimiser l'ordre dans lequel des parois sont imprimées de manière à réduire le nombre de retraits et les distances parcourues. La plupart des pièces bénéficieront de cette possibilité, mais certaines peuvent en fait prendre plus de temps à l'impression ; veuillez dès lors comparer les estimations de durée d'impression avec et sans optimisation." #: fdmprinter.def.json msgctxt "outer_inset_first label" @@ -1078,12 +1033,12 @@ msgstr "Compenser le débit pour les parties d'une paroi intérieure imprimées #: fdmprinter.def.json msgctxt "fill_perimeter_gaps label" msgid "Fill Gaps Between Walls" -msgstr "Remplir les trous entre les parois" +msgstr "Remplir l'espace entre les parois" #: fdmprinter.def.json msgctxt "fill_perimeter_gaps description" msgid "Fills the gaps between walls where no walls fit." -msgstr "Imprime les remplissages entre les parois lorsqu'aucune paroi ne convient." +msgstr "Rempli l'espace entre les parois lorsqu'aucune paroi ne convient." #: fdmprinter.def.json msgctxt "fill_perimeter_gaps option nowhere" @@ -1095,6 +1050,16 @@ msgctxt "fill_perimeter_gaps option everywhere" msgid "Everywhere" msgstr "Partout" +#: fdmprinter.def.json +msgctxt "filter_out_tiny_gaps label" +msgid "Filter Out Tiny Gaps" +msgstr "Filtrer les petits espaces" + +#: fdmprinter.def.json +msgctxt "filter_out_tiny_gaps description" +msgid "Filter out tiny gaps to reduce blobs on outside of model." +msgstr "Filtrer les petits espaces pour réduire la présence de gouttes à l'extérieur du modèle." + #: fdmprinter.def.json msgctxt "fill_outline_gaps label" msgid "Print Thin Walls" @@ -1108,12 +1073,12 @@ 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" msgid "Amount of offset applied to all polygons in each layer. Positive values can compensate for too big holes; negative values can compensate for too small holes." -msgstr "Le décalage appliqué à tous les polygones dans chaque couche. Une valeur positive peut compenser les trous trop gros ; une valeur négative peut compenser les trous trop petits." +msgstr "L'offset appliqué à tous les polygones dans chaque couche. Une valeur positive peut compenser les trous trop gros ; une valeur négative peut compenser les trous trop petits." #: fdmprinter.def.json msgctxt "xy_offset_layer_0 label" @@ -1123,7 +1088,7 @@ msgstr "Expansion horizontale de la couche initiale" #: fdmprinter.def.json msgctxt "xy_offset_layer_0 description" msgid "Amount of offset applied to all polygons in the first layer. A negative value can compensate for squishing of the first layer known as \"elephant's foot\"." -msgstr "Le décalage appliqué à tous les polygones dans la première couche. Une valeur négative peut compenser l'écrasement de la première couche, appelé « patte d'éléphant »." +msgstr "L'offset appliqué à tous les polygones dans la première couche. Une valeur négative peut compenser l'écrasement de la première couche, appelé « patte d'éléphant »." #: fdmprinter.def.json msgctxt "z_seam_type label" @@ -1133,7 +1098,7 @@ msgstr "Alignement de la jointure en Z" #: fdmprinter.def.json msgctxt "z_seam_type description" msgid "Starting point of each path in a layer. When paths in consecutive layers start at the same point a vertical seam may show on the print. When aligning these near a user specified location, the seam is easiest to remove. When placed randomly the inaccuracies at the paths' start will be less noticeable. When taking the shortest path the print will be quicker." -msgstr "Point de départ de chaque voie dans une couche. Quand les voies dans les couches consécutives démarrent au même endroit, une jointure verticale peut apparaître sur l'impression. En alignant les points de départ près d'un emplacement défini par l'utilisateur, la jointure sera plus facile à faire disparaître. Lorsqu'elles sont disposées de manière aléatoire, les imprécisions de départ des voies seront moins visibles. En choisissant la voie la plus courte, l'impression se fera plus rapidement." +msgstr "Point de départ de chaque chemin dans une couche. Quand les chemins dans les couches consécutives démarrent au même endroit, une jointure verticale peut apparaître sur l'impression. En alignant les points de départ près d'un emplacement défini par l'utilisateur, la jointure sera plus facile à faire disparaître. Lorsqu'elles sont disposées de manière aléatoire, les imprécisions de départ des chemins seront moins visibles. En choisissant le chemin le plus court, l'impression se fera plus rapidement." #: fdmprinter.def.json msgctxt "z_seam_type option back" @@ -1218,12 +1183,12 @@ 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" +msgstr "Ignorer les petits espaces 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." +msgstr "Quand le modèle présente de petits espaces 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." #: fdmprinter.def.json msgctxt "skin_outline_count label" @@ -1238,32 +1203,32 @@ msgstr "Remplace la partie la plus externe du motif du dessus/dessous par un cer #: fdmprinter.def.json msgctxt "ironing_enabled label" msgid "Enable Ironing" -msgstr "Activer l'étirage" +msgstr "Activer le lissage" #: 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." +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 sur les couches supérieures, pour créer une surface lisse." #: fdmprinter.def.json msgctxt "ironing_only_highest_layer label" msgid "Iron Only Highest Layer" -msgstr "N'étirer que la couche supérieure" +msgstr "Ne lisser que la couche supérieure" #: fdmprinter.def.json msgctxt "ironing_only_highest_layer description" msgid "Only perform ironing on the very last layer of the mesh. This saves time if the lower layers don't need a smooth surface finish." -msgstr "N'exécute un étirage que sur l'ultime couche du maillage. Ceci économise du temps si les couches inférieures ne nécessitent pas de fini lisse de surface." +msgstr "N'exécute un lissage que sur la dernière couche du maillage. Ceci économise du temps si les couches inférieures ne nécessitent pas de finition lissée." #: fdmprinter.def.json msgctxt "ironing_pattern label" msgid "Ironing Pattern" -msgstr "Motif d'étirage" +msgstr "Motif de lissage" #: fdmprinter.def.json msgctxt "ironing_pattern description" msgid "The pattern to use for ironing top surfaces." -msgstr "Le motif à utiliser pour étirer les surfaces supérieures." +msgstr "Le motif à utiliser pour lisser les surfaces supérieures." #: fdmprinter.def.json msgctxt "ironing_pattern option concentric" @@ -1278,37 +1243,37 @@ msgstr "Zig Zag" #: fdmprinter.def.json msgctxt "ironing_line_spacing label" msgid "Ironing Line Spacing" -msgstr "Interligne de l'étirage" +msgstr "Interligne de lissage" #: fdmprinter.def.json msgctxt "ironing_line_spacing description" msgid "The distance between the lines of ironing." -msgstr "La distance entre les lignes d'étirage." +msgstr "La distance entre les lignes de lissage" #: fdmprinter.def.json msgctxt "ironing_flow label" msgid "Ironing Flow" -msgstr "Flux d'étirage" +msgstr "Flux de lissage" #: fdmprinter.def.json msgctxt "ironing_flow description" msgid "The amount of material, relative to a normal skin line, to extrude during ironing. Keeping the nozzle filled helps filling some of the crevices of the top surface, but too much results in overextrusion and blips on the side of the surface." -msgstr "La quantité de matériau, relative à une ligne de couche extérieure normale, à extruder pendant l'étirage. Le fait de garder la buse pleine aide à remplir certaines des crevasses de la surface supérieure ; mais si la quantité est trop importante, cela entraînera une surextrusion et l'apparition de coupures sur le côté de la surface." +msgstr "La quantité de matériau, relative à une ligne de couche extérieure normale, à extruder pendant le lissage. Le fait de garder la buse pleine aide à remplir certaines des crevasses de la surface supérieure ; mais si la quantité est trop importante, cela entraînera une surextrusion et l'apparition de coupures sur le côté de la surface." #: fdmprinter.def.json msgctxt "ironing_inset label" msgid "Ironing Inset" -msgstr "Insert d'étirage" +msgstr "Chevauchement du lissage" #: fdmprinter.def.json msgctxt "ironing_inset description" msgid "A distance to keep from the edges of the model. Ironing all the way to the edge of the mesh may result in a jagged edge on your print." -msgstr "Distance à garder à partir des bords du modèle. Étirer jusqu'au bord de la maille peut entraîner l'apparition d'un bord denté sur votre impression." +msgstr "Distance à garder à partir des bords du modèle. Lisser jusqu'au bord de la maille peut entraîner l'apparition d'un bord denté sur votre impression." #: fdmprinter.def.json msgctxt "speed_ironing label" msgid "Ironing Speed" -msgstr "Vitesse d'étirage" +msgstr "Vitesse de lissage" #: fdmprinter.def.json msgctxt "speed_ironing description" @@ -1318,22 +1283,22 @@ msgstr "La vitesse à laquelle passer sur la surface supérieure." #: fdmprinter.def.json msgctxt "acceleration_ironing label" msgid "Ironing Acceleration" -msgstr "Accélération d'étirage" +msgstr "Accélération du lissage" #: fdmprinter.def.json msgctxt "acceleration_ironing description" msgid "The acceleration with which ironing is performed." -msgstr "L'accélération selon laquelle l'étirage est effectué." +msgstr "L'accélération selon laquelle le lissage est effectué." #: fdmprinter.def.json msgctxt "jerk_ironing label" msgid "Ironing Jerk" -msgstr "Saccade d'étirage" +msgstr "Saccade du lissage" #: fdmprinter.def.json msgctxt "jerk_ironing description" msgid "The maximum instantaneous velocity change while performing ironing." -msgstr "Le changement instantané maximal de vitesse lors de l'étirage." +msgstr "Le changement instantané maximal de vitesse lors du lissage." #: fdmprinter.def.json msgctxt "infill label" @@ -1353,7 +1318,7 @@ msgstr "Extrudeuse de remplissage" #: fdmprinter.def.json msgctxt "infill_extruder_nr description" msgid "The extruder train used for printing infill. This is used in multi-extrusion." -msgstr "Le train d'extrudeuse utilisé pour l'impression du remplissage. Cela est utilisé en multi-extrusion." +msgstr "Le système d'extrusion utilisé pour l'impression du remplissage. Cela est utilisé en multi-extrusion." #: fdmprinter.def.json msgctxt "infill_sparse_density label" @@ -1378,12 +1343,12 @@ msgstr "Distance entre les lignes de remplissage imprimées. Ce paramètre est c #: fdmprinter.def.json msgctxt "infill_pattern label" msgid "Infill Pattern" -msgstr "Motif de remplissage" +msgstr "Motif du remplissage" #: fdmprinter.def.json msgctxt "infill_pattern description" msgid "The pattern of the infill material of the print. The line and zig zag infill swap direction on alternate layers, reducing material cost. The grid, triangle, tri-hexagon, cubic, octet, quarter cubic, cross and concentric patterns are fully printed every layer. Cubic, quarter cubic and octet infill change with every layer to provide a more equal distribution of strength over each direction." -msgstr "Motif du matériau de remplissage de l'impression. La ligne et le remplissage en zigzag changent de sens à chaque alternance de couche, réduisant ainsi les coûts matériels. Les motifs en grille, en triangle, trihexagonaux, cubiques, octaédriques, quart cubiques et concentriques sont entièrement imprimés sur chaque couche. Les remplissages cubique, quart cubique et octaédrique changent à chaque couche afin d'offrir une répartition plus égale de la solidité dans chaque direction." +msgstr "Le motif du remplissage de l'impression. La ligne et le remplissage en zigzag changent de sens à chaque alternance de couche, réduisant ainsi les coûts matériels. Les motifs en grille, en triangle, trihexagonaux, cubiques, octaédriques, quart cubiques et concentriques sont entièrement imprimés sur chaque couche. Les remplissages cubique, quart cubique et octaédrique changent à chaque couche afin d'offrir une répartition plus égale de la solidité dans chaque direction." #: fdmprinter.def.json msgctxt "infill_pattern option grid" @@ -1473,22 +1438,22 @@ msgstr "Une liste de sens de ligne (exprimés en nombres entiers) à utiliser. L #: fdmprinter.def.json msgctxt "infill_offset_x label" msgid "Infill X Offset" -msgstr "Remplissage Décalage X" +msgstr "Offset Remplissage X" #: fdmprinter.def.json msgctxt "infill_offset_x description" -msgid "The infill pattern is offset this distance along the X axis." -msgstr "Le motif de remplissage est décalé de cette distance sur l'axe X." +msgid "The infill pattern is moved this distance along the X axis." +msgstr "Le motif de remplissage est décalé de cette distance sur l'axe X." #: fdmprinter.def.json msgctxt "infill_offset_y label" msgid "Infill Y Offset" -msgstr "Remplissage Décalage Y" +msgstr "Remplissage Offset Y" #: fdmprinter.def.json msgctxt "infill_offset_y description" -msgid "The infill pattern is offset this distance along the Y axis." -msgstr "Le motif de remplissage est décalé de cette distance sur l'axe Y." +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 "sub_div_rad_add label" @@ -1507,8 +1472,8 @@ msgstr "Pourcentage de chevauchement du remplissage" #: fdmprinter.def.json msgctxt "infill_overlap 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." +msgid "The amount of overlap between the infill and the walls as a percentage of the infill line width. A slight overlap allows the walls to connect firmly to the infill." +msgstr "Le degré de chevauchement entre le remplissage et les parois exprimé en pourcentage de la largeur de ligne de remplissage. Un chevauchement faible permet aux parois de se connecter fermement au remplissage." #: fdmprinter.def.json msgctxt "infill_overlap_mm label" @@ -1527,8 +1492,8 @@ msgstr "Pourcentage de chevauchement de la couche extérieure" #: fdmprinter.def.json msgctxt "skin_overlap description" -msgid "The amount of overlap between the skin and the walls as a percentage of the line width. A slight overlap allows the walls to connect firmly to the skin. This is a percentage of the average line widths of the skin lines and the innermost wall." -msgstr "Le montant de chevauchement entre la couche extérieure et les parois en pourcentage de la largeur de ligne. Un chevauchement faible permet aux parois de se connecter fermement à la couche extérieure. Ce montant est un pourcentage des largeurs moyennes des lignes de la couche extérieure et de la paroi la plus intérieure." +msgid "The amount of overlap between the skin and the walls as a percentage of the skin line width. A slight overlap allows the walls to connect firmly to the skin. This is a percentage of the average line widths of the skin lines and the innermost wall." +msgstr "Le montant de chevauchement entre la couche extérieure et les parois en pourcentage de la largeur de ligne de couche extérieure. Un chevauchement faible permet aux parois de se connecter fermement à la couche extérieure. Ce montant est un pourcentage des largeurs moyennes des lignes de la couche extérieure et de la paroi la plus intérieure." #: fdmprinter.def.json msgctxt "skin_overlap_mm label" @@ -1690,16 +1655,6 @@ msgctxt "material description" msgid "Material" msgstr "Matériau" -#: fdmprinter.def.json -msgctxt "material_flow_dependent_temperature label" -msgid "Auto Temperature" -msgstr "Température auto" - -#: fdmprinter.def.json -msgctxt "material_flow_dependent_temperature description" -msgid "Change the temperature for each layer automatically with the average flow speed of that layer." -msgstr "Modifie automatiquement la température pour chaque couche en fonction de la vitesse de flux moyenne pour cette couche." - #: fdmprinter.def.json msgctxt "default_material_print_temperature label" msgid "Default Printing Temperature" @@ -1708,7 +1663,7 @@ msgstr "Température d’impression par défaut" #: fdmprinter.def.json msgctxt "default_material_print_temperature description" msgid "The default temperature used for printing. This should be the \"base\" temperature of a material. All other print temperatures should use offsets based on this value" -msgstr "La température par défaut utilisée pour l'impression. Il doit s'agir de la température de « base » d'un matériau. Toutes les autres températures d'impression doivent utiliser des décalages basés sur cette valeur." +msgstr "La température par défaut utilisée pour l'impression. Il doit s'agir de la température de « base » d'un matériau. Toutes les autres températures d'impression doivent utiliser des offset basés sur cette valeur." #: fdmprinter.def.json msgctxt "material_print_temperature label" @@ -1750,16 +1705,6 @@ msgctxt "material_final_print_temperature description" msgid "The temperature to which to already start cooling down just before the end of printing." msgstr "La température à laquelle le refroidissement commence juste avant la fin de l'impression." -#: fdmprinter.def.json -msgctxt "material_flow_temp_graph label" -msgid "Flow Temperature Graph" -msgstr "Graphique de la température du flux" - -#: fdmprinter.def.json -msgctxt "material_flow_temp_graph description" -msgid "Data linking material flow (in mm3 per second) to temperature (degrees Celsius)." -msgstr "Données reliant le flux de matériau (en mm3 par seconde) à la température (degrés Celsius)." - #: fdmprinter.def.json msgctxt "material_extrusion_cool_down_speed label" msgid "Extrusion Cool Down Speed Modifier" @@ -1777,8 +1722,8 @@ msgstr "Température du plateau" #: fdmprinter.def.json msgctxt "material_bed_temperature description" -msgid "The temperature used for the heated build plate. If this is 0, the bed will not heat up for this print." -msgstr "Température utilisée pour le plateau chauffant. Si elle est définie sur 0, le plateau ne sera pas chauffé pour cette impression." +msgid "The temperature used for the heated build plate. If this is 0, the bed temperature will not be adjusted." +msgstr "Température utilisée pour le plateau chauffant. Si elle est définie sur 0, la température du plateau ne sera pas ajustée." #: fdmprinter.def.json msgctxt "material_bed_temperature_layer_0 label" @@ -1848,7 +1793,7 @@ msgstr "Rétracter au changement de couche" #: fdmprinter.def.json msgctxt "retract_at_layer_change description" msgid "Retract the filament when the nozzle is moving to the next layer." -msgstr "Rétracter le filament quand le bec se déplace vers la prochaine couche. " +msgstr "Rétracter le filament quand la buse se déplace vers la prochaine couche." #: fdmprinter.def.json msgctxt "retraction_amount label" @@ -2603,12 +2548,12 @@ msgstr "déplacement" #: fdmprinter.def.json msgctxt "retraction_combing label" msgid "Combing Mode" -msgstr "Mode de détours" +msgstr "Mode detour" #: fdmprinter.def.json msgctxt "retraction_combing description" msgid "Combing keeps the nozzle within already printed areas when traveling. This results in slightly longer travel moves but reduces the need for retractions. If combing is off, the material will retract and the nozzle moves in a straight line to the next point. It is also possible to avoid combing over top/bottom skin areas by combing within the infill only." -msgstr "Les détours (le 'combing') maintiennent le bec dans les zones déjà imprimées lors des déplacements. Cela résulte en des déplacements légèrement plus longs mais réduit le recours aux rétractions. Si les détours sont désactivés, le matériau se rétractera et le bec se déplacera en ligne droite jusqu'au point suivant. Il est également possible d'éviter les détours sur les zones de la couche du dessus / dessous en effectuant les détours uniquement dans le remplissage." +msgstr "Les détours (le 'combing') maintiennent la buse dans les zones déjà imprimées lors des déplacements. Cela résulte en des déplacements légèrement plus longs mais réduit le recours aux rétractions. Si les détours sont désactivés, le matériau se rétractera et la buze se déplacera en ligne droite jusqu'au point suivant. Il est également possible d'éviter les détours sur les zones de la couche du dessus / dessous en effectuant les détours uniquement dans le remplissage." #: fdmprinter.def.json msgctxt "retraction_combing option off" @@ -2788,7 +2733,7 @@ msgstr "La durée de couche qui définit la limite entre la vitesse régulière #: fdmprinter.def.json msgctxt "cool_fan_speed_0 label" msgid "Initial Fan Speed" -msgstr "Vitesse des ventilateurs initiale" +msgstr "Vitesse initiale des ventilateurs" #: fdmprinter.def.json msgctxt "cool_fan_speed_0 description" @@ -2873,7 +2818,7 @@ msgstr "Extrudeuse de support" #: fdmprinter.def.json msgctxt "support_extruder_nr description" msgid "The extruder train to use for printing the support. This is used in multi-extrusion." -msgstr "Le train d'extrudeuse à utiliser pour l'impression du support. Cela est utilisé en multi-extrusion." +msgstr "Le système d'extrusion à utiliser pour l'impression du support. Cela est utilisé en multi-extrusion." #: fdmprinter.def.json msgctxt "support_infill_extruder_nr label" @@ -2883,7 +2828,7 @@ msgstr "Extrudeuse de remplissage du support" #: fdmprinter.def.json msgctxt "support_infill_extruder_nr description" msgid "The extruder train to use for printing the infill of the support. This is used in multi-extrusion." -msgstr "Le train d'extrudeuse à utiliser pour l'impression du remplissage du support. Cela est utilisé en multi-extrusion." +msgstr "Le système d'extrusion à utiliser pour l'impression du remplissage du support. Cela est utilisé en multi-extrusion." #: fdmprinter.def.json msgctxt "support_extruder_nr_layer_0 label" @@ -2893,7 +2838,7 @@ msgstr "Extrudeuse de support de la première couche" #: fdmprinter.def.json msgctxt "support_extruder_nr_layer_0 description" msgid "The extruder train to use for printing the first layer of support infill. This is used in multi-extrusion." -msgstr "Le train d'extrudeuse à utiliser pour l'impression de la première couche de remplissage du support. Cela est utilisé en multi-extrusion." +msgstr "Le système d'extrusion à utiliser pour l'impression de la première couche de remplissage du support. Cela est utilisé en multi-extrusion." #: fdmprinter.def.json msgctxt "support_interface_extruder_nr label" @@ -2903,7 +2848,7 @@ msgstr "Extrudeuse de l'interface du support" #: fdmprinter.def.json msgctxt "support_interface_extruder_nr description" msgid "The extruder train to use for printing the roofs and floors of the support. This is used in multi-extrusion." -msgstr "Le train d'extrudeuse à utiliser pour l'impression des plafonds et bas du support. Cela est utilisé en multi-extrusion." +msgstr "Le système d'extrusion à utiliser pour l'impression des plafonds et bas du support. Cela est utilisé en multi-extrusion." #: fdmprinter.def.json msgctxt "support_roof_extruder_nr label" @@ -2913,7 +2858,7 @@ msgstr "Extrudeuse des plafonds de support" #: fdmprinter.def.json msgctxt "support_roof_extruder_nr description" msgid "The extruder train to use for printing the roofs of the support. This is used in multi-extrusion." -msgstr "Le train d'extrudeuse à utiliser pour l'impression des plafonds du support. Cela est utilisé en multi-extrusion." +msgstr "Le système d'extrusion à utiliser pour l'impression des plafonds du support. Cela est utilisé en multi-extrusion." #: fdmprinter.def.json msgctxt "support_bottom_extruder_nr label" @@ -2923,7 +2868,7 @@ msgstr "Extrudeuse des bas de support" #: fdmprinter.def.json msgctxt "support_bottom_extruder_nr description" msgid "The extruder train to use for printing the floors of the support. This is used in multi-extrusion." -msgstr "Le train d'extrudeuse à utiliser pour l'impression des bas du support. Cela est utilisé en multi-extrusion." +msgstr "Le système d'extrusion à utiliser pour l'impression des bas du support. Cela est utilisé en multi-extrusion." #: fdmprinter.def.json msgctxt "support_type label" @@ -3138,7 +3083,7 @@ msgstr "Expansion horizontale des supports" #: fdmprinter.def.json msgctxt "support_offset description" msgid "Amount of offset applied to all support polygons in each layer. Positive values can smooth out the support areas and result in more sturdy support." -msgstr "Le décalage appliqué à tous les polygones pour chaque couche. Une valeur positive peut lisser les zones de support et rendre le support plus solide." +msgstr "L'offset appliqué à tous les polygones pour chaque couche. Une valeur positive peut lisser les zones de support et rendre le support plus solide." #: fdmprinter.def.json msgctxt "support_infill_sparse_thickness label" @@ -3450,6 +3395,16 @@ msgctxt "support_tower_roof_angle description" msgid "The angle of a rooftop of a tower. A higher value results in pointed tower roofs, a lower value results in flattened tower roofs." msgstr "L'angle du toit d'une tour. Une valeur plus élevée entraîne des toits de tour pointus, tandis qu'une valeur plus basse résulte en des toits plats." +#: fdmprinter.def.json +msgctxt "support_mesh_drop_down label" +msgid "Drop Down Support Mesh" +msgstr "Maillage de support descendant" + +#: fdmprinter.def.json +msgctxt "support_mesh_drop_down description" +msgid "Make support everywhere below the support mesh, so that there's no overhang in the support mesh." +msgstr "Inclure du support à tout emplacement sous le maillage de support, de sorte à ce qu'il n'y ait pas de porte-à-faux dans le maillage de support." + #: fdmprinter.def.json msgctxt "platform_adhesion label" msgid "Build Plate Adhesion" @@ -3528,7 +3483,7 @@ msgstr "Extrudeuse d'adhérence du plateau" #: fdmprinter.def.json msgctxt "adhesion_extruder_nr description" msgid "The extruder train to use for printing the skirt/brim/raft. This is used in multi-extrusion." -msgstr "Le train d'extrudeuse à utiliser pour l'impression de la jupe/la bordure/du radeau. Cela est utilisé en multi-extrusion." +msgstr "Le système d'extrusion à utiliser pour l'impression de la jupe/la bordure/du radeau. Cela est utilisé en multi-extrusion." #: fdmprinter.def.json msgctxt "skirt_line_count label" @@ -3550,7 +3505,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" @@ -3975,7 +3932,7 @@ msgstr "Compensation du débit : la quantité de matériau extrudée est multip #: fdmprinter.def.json msgctxt "prime_tower_wipe_enabled label" msgid "Wipe Inactive Nozzle on Prime Tower" -msgstr "Essuyer le bec d'impression inactif sur la tour primaire" +msgstr "Essuyer la buse d'impression inactif sur la tour primaire" #: fdmprinter.def.json msgctxt "prime_tower_wipe_enabled description" @@ -4082,16 +4039,6 @@ msgctxt "meshfix_keep_open_polygons description" msgid "Normally Cura tries to stitch up small holes in the mesh and remove parts of a layer with big holes. Enabling this option keeps those parts which cannot be stitched. This option should be used as a last resort option when everything else fails to produce proper GCode." msgstr "Normalement, Cura essaye de raccommoder les petits trous dans le maillage et supprime les parties des couches contenant de gros trous. Activer cette option pousse Cura à garder les parties qui ne peuvent être raccommodées. Cette option doit être utilisée en dernier recours quand tout le reste échoue à produire un GCode correct." -#: 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 "multiple_mesh_overlap label" msgid "Merged Meshes Overlap" @@ -4242,16 +4189,6 @@ msgctxt "support_mesh description" msgid "Use this mesh to specify support areas. This can be used to generate support structure." msgstr "Utiliser ce maillage pour spécifier des zones de support. Cela peut être utilisé pour générer une structure de support." -#: fdmprinter.def.json -msgctxt "support_mesh_drop_down label" -msgid "Drop Down Support Mesh" -msgstr "Maillage de support descendant" - -#: fdmprinter.def.json -msgctxt "support_mesh_drop_down description" -msgid "Make support everywhere below the support mesh, so that there's no overhang in the support mesh." -msgstr "Inclure du support à tout emplacement sous le maillage de support, de sorte à ce qu'il n'y ait pas de porte-à-faux dans le maillage de support." - #: fdmprinter.def.json msgctxt "anti_overhang_mesh label" msgid "Anti Overhang Mesh" @@ -4328,14 +4265,194 @@ msgid "experimental!" msgstr "expérimental !" #: fdmprinter.def.json -msgctxt "optimize_wall_printing_order label" -msgid "Optimize Wall Printing Order" -msgstr "Optimiser l'ordre d'impression des parois" +msgctxt "support_tree_enable label" +msgid "Tree Support" +msgstr "Support arborescent" #: fdmprinter.def.json -msgctxt "optimize_wall_printing_order description" -msgid "Optimize the order in which walls are printed so as to reduce the number of retractions and the distance travelled. Most parts will benefit from this being enabled but some may actually take longer so please compare the print time estimates with and without optimization." -msgstr "Optimiser l'ordre dans lequel des parois sont imprimées de manière à réduire le nombre de retraits et les distances parcourues. La plupart des pièces bénéficieront de cette possibilité, mais certaines peuvent en fait prendre plus de temps à l'impression ; veuillez dès lors comparer les estimations de durée d'impression avec et sans optimisation." +msgctxt "support_tree_enable description" +msgid "Generate a tree-like support with branches that support your print. This may reduce material usage and print time, but greatly increases slicing time." +msgstr "Générer un support arborescent avec des branches qui soutiennent votre impression. Cela peut réduire l'utilisation de matériau et le temps d'impression, mais augmente considérablement le temps de découpage." + +#: fdmprinter.def.json +msgctxt "support_tree_angle label" +msgid "Tree Support Branch Angle" +msgstr "Angle des branches de support arborescent" + +#: fdmprinter.def.json +msgctxt "support_tree_angle description" +msgid "The angle of the branches. Use a lower angle to make them more vertical and more stable. Use a higher angle to be able to have more reach." +msgstr "Angle des branches. Utilisez un angle plus faible pour les rendre plus verticales et plus stables ; utilisez un angle plus élevé pour avoir plus de portée." + +#: fdmprinter.def.json +msgctxt "support_tree_branch_distance label" +msgid "Tree Support Branch Distance" +msgstr "Distance des branches de support arborescent" + +#: fdmprinter.def.json +msgctxt "support_tree_branch_distance description" +msgid "How far apart the branches need to be when they touch the model. Making this distance small will cause the tree support to touch the model at more points, causing better overhang but making support harder to remove." +msgstr "Distance à laquelle doivent se trouver les branches lorsqu'elles touchent le modèle. Si vous réduisez cette distance, le support arborescent touchera le modèle à plus d'endroits, ce qui causera un meilleur porte-à-faux mais rendra le support plus difficile à enlever." + +#: fdmprinter.def.json +msgctxt "support_tree_branch_diameter label" +msgid "Tree Support Branch Diameter" +msgstr "Diamètre des branches de support arborescent" + +#: fdmprinter.def.json +msgctxt "support_tree_branch_diameter description" +msgid "The diameter of the thinnest branches of tree support. Thicker branches are more sturdy. Branches towards the base will be thicker than this." +msgstr "Diamètre des branches les plus minces du support arborescent. Plus les branches sont épaisses, plus elles sont robustes ; les branches proches de la base seront plus épaisses que cette valeur." + +#: fdmprinter.def.json +msgctxt "support_tree_branch_diameter_angle label" +msgid "Tree Support Branch Diameter Angle" +msgstr "Angle de diamètre des branches de support arborescent" + +#: fdmprinter.def.json +msgctxt "support_tree_branch_diameter_angle description" +msgid "The angle of the branches' diameter as they gradually become thicker towards the bottom. An angle of 0 will cause the branches to have uniform thickness over their length. A bit of an angle can increase stability of the tree support." +msgstr "Angle du diamètre des branches au fur et à mesure qu'elles s'épaississent lorsqu'elles sont proches du fond. Avec un angle de 0°, les branches auront une épaisseur uniforme sur toute leur longueur. Donner un peu d'angle permet d'augmenter la stabilité du support arborescent." + +#: fdmprinter.def.json +msgctxt "support_tree_collision_resolution label" +msgid "Tree Support Collision Resolution" +msgstr "Résolution de collision du support arborescent" + +#: fdmprinter.def.json +msgctxt "support_tree_collision_resolution description" +msgid "Resolution to compute collisions with to avoid hitting the model. Setting this lower will produce more accurate trees that fail less often, but increases slicing time dramatically." +msgstr "Résolution servant à calculer les collisions afin d'éviter de heurter le modèle. Plus ce paramètre est faible, plus les arborescences seront précises et stables, mais cela augmente considérablement le temps de découpage." + +#: fdmprinter.def.json +msgctxt "support_tree_wall_thickness label" +msgid "Tree Support Wall Thickness" +msgstr "Épaisseur de la paroi du support arborescent" + +#: fdmprinter.def.json +msgctxt "support_tree_wall_thickness description" +msgid "The thickness of the walls of the branches of tree support. Thicker walls take longer to print but don't fall over as easily." +msgstr "Épaisseur des parois des branches du support arborescent. Les parois plus épaisses prennent plus de temps à imprimer, mais ne tombent pas aussi facilement." + +#: fdmprinter.def.json +msgctxt "support_tree_wall_count label" +msgid "Tree Support Wall Line Count" +msgstr "Nombre de lignes de la paroi du support arborescent" + +#: fdmprinter.def.json +msgctxt "support_tree_wall_count description" +msgid "The number of walls of the branches of tree support. Thicker walls take longer to print but don't fall over as easily." +msgstr "Nombre de parois des branches du support arborescent. Les parois plus épaisses prennent plus de temps à imprimer, mais ne tombent pas aussi facilement." + +#: fdmprinter.def.json +msgctxt "slicing_tolerance label" +msgid "Slicing Tolerance" +msgstr "Tolérance à la découpe" + +#: fdmprinter.def.json +msgctxt "slicing_tolerance description" +msgid "How to slice layers with diagonal surfaces. The areas of a layer can be generated based on where the middle of the layer intersects the surface (Middle). Alternatively each layer can have the areas which fall inside of the volume throughout the height of the layer (Exclusive) or a layer has the areas which fall inside anywhere within the layer (Inclusive). Exclusive retains the most details, Inclusive makes for the best fit and Middle takes the least time to process." +msgstr "Comment découper des couches avec des surfaces diagonales. Les zones d'une couche peuvent être générées en fonction de l'endroit où le milieu de la couche croise la surface (Milieu). Alternativement, chaque couche peut posséder des zones situées à l'intérieur du volume à travers toute la hauteur de la couche (Exclusif), ou une couche peut avoir des zones situées à l'intérieur à tout endroit dans la couche (Inclusif). L'option Exclusif permet de retenir le plus de détails, Inclusif permet d'obtenir une adaptation optimale et Milieu demande le moins de temps de traitement." + +#: fdmprinter.def.json +msgctxt "slicing_tolerance option middle" +msgid "Middle" +msgstr "Milieu" + +#: fdmprinter.def.json +msgctxt "slicing_tolerance option exclusive" +msgid "Exclusive" +msgstr "Exclusif" + +#: fdmprinter.def.json +msgctxt "slicing_tolerance option inclusive" +msgid "Inclusive" +msgstr "Inclusif" + +#: fdmprinter.def.json +msgctxt "roofing_line_width label" +msgid "Top Surface Skin Line Width" +msgstr "Largeur de ligne de couche extérieure de la surface supérieure" + +#: fdmprinter.def.json +msgctxt "roofing_line_width description" +msgid "Width of a single line of the areas at the top of the print." +msgstr "Largeur d'une seule ligne de la zone en haut de l'impression." + +#: fdmprinter.def.json +msgctxt "roofing_pattern label" +msgid "Top Surface Skin Pattern" +msgstr "Motif de couche extérieure de surface supérieure" + +#: fdmprinter.def.json +msgctxt "roofing_pattern description" +msgid "The pattern of the top most layers." +msgstr "Le motif des couches supérieures." + +#: fdmprinter.def.json +msgctxt "roofing_pattern option lines" +msgid "Lines" +msgstr "Lignes" + +#: fdmprinter.def.json +msgctxt "roofing_pattern option concentric" +msgid "Concentric" +msgstr "Concentrique" + +#: fdmprinter.def.json +msgctxt "roofing_pattern option zigzag" +msgid "Zig Zag" +msgstr "Zig Zag" + +#: fdmprinter.def.json +msgctxt "roofing_angles label" +msgid "Top Surface Skin Line Directions" +msgstr "Sens de lignes de couche extérieure de surface supérieure" + +#: fdmprinter.def.json +msgctxt "roofing_angles description" +msgid "A list of integer line directions to use when the top surface skin layers use the lines or zig zag pattern. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the traditional default angles (45 and 135 degrees)." +msgstr "Une liste de sens de ligne (exprimés en nombres entiers) à utiliser lorsque les couches extérieures de la surface supérieure utilisent le motif en lignes ou en zig zag. 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 traditionnels par défaut seront utilisés (45 et 135 degrés)." + +#: fdmprinter.def.json +msgctxt "infill_enable_travel_optimization label" +msgid "Infill Travel Optimization" +msgstr "Optimisation du déplacement de remplissage" + +#: fdmprinter.def.json +msgctxt "infill_enable_travel_optimization description" +msgid "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." +msgstr "Lorsque cette option est activée, l'ordre dans lequel les lignes de remplissage sont imprimées est optimisé pour réduire la distance parcourue. La réduction du temps de parcours dépend en grande partie du modèle à découper, du type de remplissage, de la densité, etc. Remarque : pour certains modèles possédant beaucoup de petites zones de remplissage, le temps de découpe du modèle peut en être considérablement augmenté." + +#: fdmprinter.def.json +msgctxt "material_flow_dependent_temperature label" +msgid "Auto Temperature" +msgstr "Température auto" + +#: fdmprinter.def.json +msgctxt "material_flow_dependent_temperature description" +msgid "Change the temperature for each layer automatically with the average flow speed of that layer." +msgstr "Modifie automatiquement la température pour chaque couche en fonction de la vitesse de flux moyenne pour cette couche." + +#: fdmprinter.def.json +msgctxt "material_flow_temp_graph label" +msgid "Flow Temperature Graph" +msgstr "Graphique de la température du flux" + +#: fdmprinter.def.json +msgctxt "material_flow_temp_graph description" +msgid "Data linking material flow (in mm3 per second) to temperature (degrees Celsius)." +msgstr "Données reliant le flux de matériau (en mm3 par seconde) à la température (degrés Celsius)." + +#: 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 "support_skip_some_zags label" @@ -4555,7 +4672,7 @@ msgstr "Insert en spaghettis" #: fdmprinter.def.json msgctxt "spaghetti_inset description" msgid "The offset from the walls from where the spaghetti infill will be printed." -msgstr "Le décalage à partir des parois depuis lesquelles le remplissage en spaghettis sera imprimé." +msgstr "L'offset à partir des parois depuis lesquelles le remplissage en spaghettis sera imprimé." #: fdmprinter.def.json msgctxt "spaghetti_flow label" @@ -4660,7 +4777,7 @@ 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" -msgstr "Décalage d'extrusion max. pour compensation du débit" +msgstr "Offset d'extrusion max. pour compensation du débit" #: fdmprinter.def.json msgctxt "flow_rate_max_extrusion_offset description" @@ -4827,7 +4944,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" @@ -4934,6 +5053,46 @@ msgctxt "wireframe_nozzle_clearance description" msgid "Distance between the nozzle and horizontally downward lines. Larger clearance results in diagonally downward lines with a less steep angle, which in turn results in less upward connections with the next layer. Only applies to Wire Printing." msgstr "Distance entre la buse et les lignes descendantes horizontalement. Un espacement plus important génère des lignes diagonalement descendantes avec un angle moins abrupt, qui génère alors des connexions moins ascendantes avec la couche suivante. Uniquement applicable à l'impression filaire." +#: fdmprinter.def.json +msgctxt "adaptive_layer_height_enabled label" +msgid "Use adaptive layers" +msgstr "Utiliser des couches adaptatives" + +#: fdmprinter.def.json +msgctxt "adaptive_layer_height_enabled description" +msgid "Adaptive layers computes the layer heights depending on the shape of the model." +msgstr "Cette option calcule la hauteur des couches en fonction de la forme du modèle." + +#: fdmprinter.def.json +msgctxt "adaptive_layer_height_variation label" +msgid "Adaptive layers maximum variation" +msgstr "Variation maximale des couches adaptatives" + +#: fdmprinter.def.json +msgctxt "adaptive_layer_height_variation description" +msgid "The maximum allowed height different from the base layer height in mm." +msgstr "Hauteur maximale autorisée par rapport à la couche de base, en mm." + +#: fdmprinter.def.json +msgctxt "adaptive_layer_height_variation_step label" +msgid "Adaptive layers variation step size" +msgstr "Taille des étapes de variation des couches adaptatives" + +#: fdmprinter.def.json +msgctxt "adaptive_layer_height_variation_step description" +msgid "The difference in height of the next layer height compared to the previous one." +msgstr "Différence de hauteur de la couche suivante par rapport à la précédente." + +#: fdmprinter.def.json +msgctxt "adaptive_layer_height_threshold label" +msgid "Adaptive layers threshold" +msgstr "Limite 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." + #: fdmprinter.def.json msgctxt "command_line_settings label" msgid "Command Line Settings" @@ -4982,7 +5141,7 @@ msgstr "Position z de la maille" #: fdmprinter.def.json msgctxt "mesh_position_z description" msgid "Offset applied to the object in the z direction. With this you can perform what was used to be called 'Object Sink'." -msgstr "Décalage appliqué à l'objet dans le sens z. Cela vous permet d'exécuter ce que l'on appelait « Affaissement de l'objet »." +msgstr "Offset appliqué à l'objet dans le sens z. Cela vous permet d'exécuter ce que l'on appelait « Affaissement de l'objet »." #: fdmprinter.def.json msgctxt "mesh_rotation_matrix label" @@ -4994,6 +5153,26 @@ 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 "infill_offset_x description" +#~ msgid "The infill pattern is offset this distance along the X axis." +#~ msgstr "Le motif de remplissage est décalé de cette distance sur l'axe X." + +#~ msgctxt "infill_offset_y description" +#~ msgid "The infill pattern is offset this distance along the Y axis." +#~ msgstr "Le motif de remplissage est décalé de cette distance sur l'axe Y." + +#~ msgctxt "infill_overlap 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." + +#~ msgctxt "skin_overlap description" +#~ msgid "The amount of overlap between the skin and the walls as a percentage of the line width. A slight overlap allows the walls to connect firmly to the skin. This is a percentage of the average line widths of the skin lines and the innermost wall." +#~ msgstr "Le montant de chevauchement entre la couche extérieure et les parois en pourcentage de la largeur de ligne. Un chevauchement faible permet aux parois de se connecter fermement à la couche extérieure. Ce montant est un pourcentage des largeurs moyennes des lignes de la couche extérieure et de la paroi la plus intérieure." + +#~ msgctxt "material_bed_temperature description" +#~ msgid "The temperature used for the heated build plate. If this is 0, the bed will not heat up for this print." +#~ msgstr "Température utilisée pour le plateau chauffant. Si elle est définie sur 0, le plateau ne sera pas chauffé pour cette impression." + #~ msgctxt "wall_x_extruder_nr label" #~ msgid "Inner Walls Extruder" #~ msgstr "Extrudeuse de parois internes" diff --git a/resources/i18n/it_IT/cura.po b/resources/i18n/it_IT/cura.po index a4c9ef40f8..d6f066aa22 100644 --- a/resources/i18n/it_IT/cura.po +++ b/resources/i18n/it_IT/cura.po @@ -1,22 +1,22 @@ # Cura -# Copyright (C) 2017 Ultimaker +# Copyright (C) 2018 Ultimaker # This file is distributed under the same license as the Cura package. -# Ruben Dulek , 2017. -# +# Ruben Dulek , 2018. +# msgid "" msgstr "" -"Project-Id-Version: Cura 3.0\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-11-21 16:58+0100\n" -"PO-Revision-Date: 2017-11-30 13:05+0100\n" -"Last-Translator: Bothof \n" +"Project-Id-Version: Cura 3.2\n" +"Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" +"POT-Creation-Date: 2018-01-29 09:48+0000\n" +"PO-Revision-Date: 2018-02-13 13:15+0100\n" +"Last-Translator: Crea-3D \n" "Language-Team: Italian\n" "Language: it_IT\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:29 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:26 msgctxt "@action" msgid "Machine Settings" msgstr "Impostazioni macchina" @@ -53,12 +53,11 @@ msgstr "Collegamento a Doodle3D Connect" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:87 #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:155 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:874 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:646 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:875 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:659 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:370 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrintWindow.qml:78 -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:104 -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:99 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:355 #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:188 #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:376 #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:139 @@ -98,7 +97,7 @@ msgctxt "@info:tooltip" msgid "Open the Doodle3D Connect web interface" msgstr "Apri interfaccia web Doodle3D Connect" -#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:34 +#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:33 msgctxt "@item:inmenu" msgid "Show Changelog" msgstr "Visualizza registro modifiche" @@ -106,85 +105,90 @@ msgstr "Visualizza registro modifiche" #: /home/ruben/Projects/Cura/plugins/ProfileFlattener/ProfileFlattener.py:20 msgctxt "@item:inmenu" msgid "Flatten active settings" -msgstr "Impostazioni attive profilo appiattito" +msgstr "Resetta impostazioni attive" #: /home/ruben/Projects/Cura/plugins/ProfileFlattener/ProfileFlattener.py:32 msgctxt "@info:status" msgid "Profile has been flattened & activated." -msgstr "Il profilo è stato appiattito e attivato." +msgstr "Il profilo è stato resettato e attivato." -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:26 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:27 msgctxt "@item:inmenu" msgid "USB printing" msgstr "Stampa USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:27 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:28 msgctxt "@action:button Preceded by 'Ready to'." msgid "Print via USB" msgstr "Stampa tramite USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:28 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:29 msgctxt "@info:tooltip" msgid "Print via USB" msgstr "Stampa tramite USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:30 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:31 msgctxt "@info:status" msgid "Connected via USB" msgstr "Connesso tramite USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:154 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:183 msgctxt "@info:status" msgid "Unable to start a new job because the printer is busy or not connected." msgstr "Impossibile avviare un nuovo processo di stampa perché la stampante è occupata o non collegata." -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:154 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:183 msgctxt "@info:title" msgid "Printer Unavailable" msgstr "Stampante non disponibile" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:457 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:485 msgctxt "@info:status" msgid "This printer does not support USB printing because it uses UltiGCode flavor." msgstr "Questa stampante non supporta la stampa tramite USB in quanto utilizza la versione UltiGCode." -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:457 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:485 msgctxt "@info:title" msgid "USB Printing" msgstr "Stampa USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:461 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:489 msgctxt "@info:status" msgid "Unable to start a new job because the printer does not support usb printing." msgstr "Impossibile avviare un nuovo processo di stampa perché la stampante non supporta la stampa tramite USB." -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:461 -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:108 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:489 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:103 #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:146 #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:158 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:945 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1349 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1417 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:946 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1418 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1496 msgctxt "@info:title" msgid "Warning" -msgstr "Avvertenza" +msgstr "Attenzione" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:108 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:103 msgctxt "@info" msgid "Unable to update firmware because there are no printers connected." msgstr "Impossibile aggiornare il firmware perché non ci sono stampanti collegate." -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:122 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:117 #, python-format msgctxt "@info" msgid "Could not find firmware required for the printer at %s." msgstr "Impossibile trovare il firmware richiesto per la stampante a %s." -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:122 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:117 msgctxt "@info:title" msgid "Printer Firmware" msgstr "Firmware stampante" +#: /home/ruben/Projects/Cura/plugins/PrepareStage/__init__.py:12 +msgctxt "@item:inmenu" +msgid "Prepare" +msgstr "Prepara" + #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:23 msgctxt "@action:button Preceded by 'Ready to'." msgid "Save to Removable Drive" @@ -228,11 +232,11 @@ 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:132 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:692 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:700 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:146 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:693 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:701 #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:153 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1358 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:160 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1427 msgctxt "@info:title" msgid "Error" msgstr "Errore" @@ -257,7 +261,7 @@ msgstr "Rimuovi" #, python-brace-format msgctxt "@action" msgid "Eject removable device {0}" -msgstr "Rimuovi il dispositivo rimovibile {0}" +msgstr "Espelli il dispositivo rimovibile {0}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:156 #, python-brace-format @@ -282,7 +286,7 @@ msgid "Removable Drive" msgstr "Unità rimovibile" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:109 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:53 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:51 msgctxt "@action:button Preceded by 'Ready to'." msgid "Print over network" msgstr "Stampa sulla rete" @@ -396,113 +400,113 @@ msgctxt "@info:title" msgid "Printer Status" msgstr "Stato stampante" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:691 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:692 #, python-brace-format msgctxt "@info:status" msgid "Unable to start a new print job. No Printcore loaded in slot {0}" msgstr "Impossibile avviare un nuovo processo di stampa. Nessun Printcore caricato nello slot {0}" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:699 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:700 #, python-brace-format msgctxt "@info:status" msgid "Unable to start a new print job. No material loaded in slot {0}" msgstr "Impossibile avviare un nuovo processo di stampa. Nessun materiale caricato nello slot {0}" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:709 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:710 #, python-brace-format msgctxt "@label" msgid "Not enough material for spool {0}." msgstr "Materiale per la bobina insufficiente {0}." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:719 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:720 #, python-brace-format msgctxt "@label" msgid "Different PrintCore (Cura: {0}, Printer: {1}) selected for extruder {2}" msgstr "PrintCore diverso (Cura: {0}, Stampante: {1}) selezionata per estrusore {2}" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:733 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:734 #, 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/NetworkPrinterOutputDevice.py:741 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:742 #, python-brace-format msgctxt "@label" msgid "PrintCore {0} is not properly calibrated. XY calibration needs to be performed on the printer." msgstr "PrintCore {0} non correttamente calibrato. Necessario eseguire calibrazione XY sulla stampante." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:746 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:747 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/NetworkPrinterOutputDevice.py:747 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:748 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." +msgstr "Le configurazioni o la calibrazione della stampante e di Cura non corrispondono. Per risultati ottimali, sezionare sempre i PrintCore e i materiali inseriti nella stampante utilizzata." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:753 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:754 msgctxt "@window:title" msgid "Mismatched configuration" msgstr "Mancata corrispondenza della configurazione" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:864 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:262 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:865 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:258 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/NetworkPrinterOutputDevice.py:873 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:874 msgctxt "@info:status" msgid "Sending data to printer" msgstr "Invio dati alla stampante in corso" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:873 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:874 msgctxt "@info:title" msgid "Sending Data" msgstr "Invio dati" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:944 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:945 msgctxt "@info:status" msgid "Unable to send data to printer. Is another job still active?" msgstr "Impossibile inviare i dati alla stampante. Altro processo ancora attivo?" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1085 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1087 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:196 msgctxt "@label:MonitorStatus" msgid "Aborting print..." msgstr "Interruzione stampa in corso..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1091 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1093 msgctxt "@label:MonitorStatus" msgid "Print aborted. Please check the printer" msgstr "Stampa interrotta. Controllare la stampante" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1097 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1099 msgctxt "@label:MonitorStatus" msgid "Pausing print..." msgstr "Messa in pausa stampa..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1099 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1101 msgctxt "@label:MonitorStatus" msgid "Resuming print..." msgstr "Ripresa stampa..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1289 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1291 msgctxt "@window:title" msgid "Sync with your printer" msgstr "Sincronizzazione con la stampante" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1291 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1293 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/NetworkPrinterOutputDevice.py:1293 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1295 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." +msgstr "I PrintCore e/o i materiali sulla stampante differiscono da quelli contenuti nel tuo attuale progetto. Per risultati ottimali, sezionare sempre i PrintCore e i materiali inseriti nella stampante utilizzata." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:112 msgid "This printer is not set up to host a group of connected Ultimaker 3 printers." @@ -517,148 +521,191 @@ msgstr "Questa stampante fa da host per un gruppo di {count} stampanti Ultimaker #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:114 #, python-brace-format msgid "{printer_name} has finished printing '{job_name}'. Please collect the print and confirm clearing the build plate." -msgstr "{printer_name} ha terminato la stampa '{job_name}'. Raccogliere la stampa e confermare la liberazione del piano di stampa." +msgstr "{printer_name} ha terminato la stampa '{job_name}'. Rimuovere la stampa e confermare la pulizia del piano di stampa." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:115 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:520 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:533 #, python-brace-format msgid "{printer_name} is reserved to print '{job_name}'. Please change the printer's configuration to match the job, for it to start printing." msgstr "{printer_name} è riservata per la stampa di '{job_name}'. Modificare la configurazione della stampante in modo che corrisponda al lavoro da eseguire per avviare il processo di stampa." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:278 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:277 msgctxt "@info:status" msgid "Unable to send new print job: this 3D printer is not (yet) set up to host a group of connected Ultimaker 3 printers." msgstr "Impossibile inviare nuovo processo di stampa: questa stampante 3D non è (ancora) configurata per supportare la connessione di un gruppo di stampanti Ultimaker 3." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:410 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:423 #, python-brace-format msgctxt "@info:status" msgid "Unable to send print job to group {cluster_name}." msgstr "Impossibile inviare processo di stampa a gruppo {cluster_name}." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:418 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:431 #, python-brace-format msgctxt "@info:status" msgid "Sent {file_name} to group {cluster_name}." msgstr "Inviato {file_name} a gruppo {cluster_name}." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:423 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:436 msgctxt "@action:button" msgid "Show print jobs" msgstr "Mostra processi di stampa" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:424 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:437 msgctxt "@info:tooltip" msgid "Opens the print jobs interface in your browser." msgstr "Apre l'interfaccia processi di stampa sul browser." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:489 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:502 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:239 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:47 -msgctxt "@label" +msgctxt "@label Printer name" msgid "Unknown" msgstr "Sconosciuto" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:492 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:505 #, 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/NetworkClusterPrinterOutputDevice.py:494 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:497 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:507 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:510 msgctxt "@info:status" msgid "Print finished" msgstr "Stampa finita" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:522 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:525 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:535 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:538 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:282 msgctxt "@label:status" msgid "Action required" -msgstr "Richiede un'azione" +msgstr "Azione richiesta" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:643 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:656 #, python-brace-format msgctxt "@info:progress" msgid "Sending {file_name} to group {cluster_name}" msgstr "Invio {file_name} a gruppo {cluster_name}" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.py:19 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.py:17 msgctxt "@action" msgid "Connect via Network" msgstr "Collega tramite rete" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:64 +#: /home/ruben/Projects/Cura/plugins/MonitorStage/__init__.py:12 +msgctxt "@item:inmenu" +msgid "Monitor" +msgstr "Controlla" + +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:66 #, python-brace-format msgctxt "@info Don't translate {machine_name}, since it gets replaced by a printer name!" msgid "New features are available for your {machine_name}! It is recommended to update the firmware on your printer." msgstr "Sono disponibili nuove funzioni per la {machine_name}! Si consiglia di aggiornare il firmware sulla stampante." -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:65 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:67 #, python-format msgctxt "@info:title The %s gets replaced with the printer name." msgid "New %s firmware available" msgstr "Nuovo firmware %s disponibile" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:66 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:68 msgctxt "@action:button" msgid "How to update" msgstr "Modalità di aggiornamento" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:77 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:79 msgctxt "@info" msgid "Could not access update information." msgstr "Non è possibile accedere alle informazioni di aggiornamento." -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksReader.py:199 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksReader.py:579 msgctxt "@info:status" -msgid "Errors appeared while opening your SolidWorks file! Please check, whether it is possible to open your file in SolidWorks itself without any problems as well!" -msgstr "Rilevati errori all'apertura del file SolidWorks! Controllare se è possibile aprire il file in SolidWorks senza che si verifichino problemi!" +msgid "SolidWorks reported errors, while opening your file. We recommend to solve these issues inside SolidWorks itself." +msgstr "SolidWorks ha segnalato errori all’apertura del file. Si consiglia di risolvere queste problematiche all’interno di SolidWorks stesso." -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:31 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksReader.py:591 +msgctxt "@info:status" +msgid "" +"Found no models inside your drawing. Could you please check it's content again and make sure one part or assembly is inside?\n" +"\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." + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksReader.py:595 +msgctxt "@info:status" +msgid "" +"Found more then one part or assembly inside your drawing. We currently only support drawings with exactly one part or assembly inside.\n" +"\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." + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:25 msgctxt "@item:inlistbox" msgid "SolidWorks part file" msgstr "File part SolidWorks" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:35 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:29 msgctxt "@item:inlistbox" msgid "SolidWorks assembly file" msgstr "File gruppo SolidWorks" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.py:21 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:33 +msgctxt "@item:inlistbox" +msgid "SolidWorks drawing file" +msgstr "File disegno SolidWorks" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:48 +msgctxt "@info:status" +msgid "" +"Dear customer,\n" +"We could not find a valid installation of SolidWorks on your system. That means that either SolidWorks is not installed or you don't own an valid license. Please make sure that running SolidWorks itself works without issues and/or contact your ICT.\n" +"\n" +"With kind regards\n" +" - Thomas Karl Pietrowski" +msgstr "Gentile cliente,\nnon 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\nCordiali saluti\n - Thomas Karl Pietrowski" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:57 +msgctxt "@info:status" +msgid "" +"Dear customer,\n" +"You are currently running this plugin on an operating system other than Windows. This plugin will only work on Windows with SolidWorks installed, including an valid license. Please install this plugin on a Windows machine with SolidWorks installed.\n" +"\n" +"With kind regards\n" +" - Thomas Karl Pietrowski" +msgstr "Gentile cliente,\nattualmente 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\nCordiali saluti\n - Thomas Karl Pietrowski" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksDialogHandler.py:70 msgid "Configure" msgstr "Configura" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/CommonComReader.py:135 -#, python-format -msgctxt "@info:status" -msgid "Error while starting %s!" -msgstr "Errore durante l'avvio di %s!" +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksDialogHandler.py:71 +msgid "Installation guide for SolidWorks macro" +msgstr "Guida per l’installazione di macro SolidWorks" #: /home/ruben/Projects/Cura/plugins/SimulationView/__init__.py:14 msgctxt "@item:inlistbox" -msgid "Simulation view" -msgstr "Vista simulazione" +msgid "Layer view" +msgstr "Visualizzazione layer" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:100 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:103 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:101 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:104 msgctxt "@info:title" msgid "Simulation View" msgstr "Vista simulazione" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.py:26 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.py:25 msgid "Modify G-Code" msgstr "Modifica G-code" #: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:43 msgctxt "@info" -msgid "Cura collects anonymised slicing statistics. You can disable this in the preferences." -msgstr "Cura acquisisce dati statistici elaborati in forma anonima. L'acquisizione può essere disabilitata nelle preferenze." +msgid "Cura collects anonymized usage statistics." +msgstr "Cura raccoglie statistiche di utilizzo in forma anonima." #: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:46 msgctxt "@info:title" @@ -667,14 +714,41 @@ msgstr "Acquisizione dati" #: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:48 msgctxt "@action:button" -msgid "Dismiss" -msgstr "Ignora" +msgid "Allow" +msgstr "Consenti" + +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:49 +msgctxt "@action:tooltip" +msgid "Allow Cura to send anonymized usage statistics to help prioritize future improvements to Cura. Some of your preferences and settings are sent, the Cura version and a hash of the models you're slicing." +msgstr "Consente a Cura di inviare in forma anonima statistiche d’uso, riguardanti alcune delle preferenze e impostazioni, la versione cura e una serie di modelli in sezionamento, per aiutare a dare priorità a miglioramenti futuri in Cura." + +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:50 +msgctxt "@action:button" +msgid "Disable" +msgstr "Disabilita" + +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:51 +msgctxt "@action:tooltip" +msgid "Don't allow Cura to send anonymized usage statistics. You can enable it again in the preferences." +msgstr "Non consente a Cura di inviare statistiche di utilizzo in forma anonima. È possibile riabilitare nelle preferenze." #: /home/ruben/Projects/Cura/plugins/LegacyProfileReader/__init__.py:14 msgctxt "@item:inlistbox" msgid "Cura 15.04 profiles" msgstr "Profili Cura 15.04" +#: /home/ruben/Projects/Cura/plugins/CuraBlenderPlugin/__init__.py:15 +msgctxt "@item:inlistbox" +msgid "Blender file" +msgstr "File Blender" + +#: /home/ruben/Projects/Cura/plugins/CuraBlenderPlugin/CadIntegrationUtils/CommonReader.py:199 +msgctxt "@info:status" +msgid "" +"Could not export using \"{}\" quality!\n" +"Felt back to \"{}\"." +msgstr "Impossibile esportare utilizzando qualità \"{}\" quality!\nTornato a \"{}\"." + #: /home/ruben/Projects/Cura/plugins/GCodeProfileReader/__init__.py:14 #: /home/ruben/Projects/Cura/plugins/GCodeReader/__init__.py:14 msgctxt "@item:inlistbox" @@ -706,49 +780,49 @@ msgctxt "@item:inlistbox" msgid "GIF Image" msgstr "Immagine GIF" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:269 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:299 msgctxt "@info:status" msgid "Unable to slice with the current material as it is incompatible with the selected machine or configuration." -msgstr "Impossibile eseguire il sezionamento con il materiale corrente in quanto incompatibile con la macchina o la configurazione selezionata." +msgstr "Impossibile eseguire lo slicing con il materiale corrente in quanto incompatibile con la macchina o la configurazione selezionata." -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:269 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:297 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:319 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:299 #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:327 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:336 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:349 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:357 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:366 msgctxt "@info:title" msgid "Unable to slice" -msgstr "Sezionamento impossibile" +msgstr "Slicing impossibile" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:296 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:326 #, python-brace-format msgctxt "@info:status" msgid "Unable to slice with the current settings. The following settings have errors: {0}" -msgstr "Impossibile eseguire il sezionamento con le impostazioni attuali. Le seguenti impostazioni presentano errori: {0}" +msgstr "Impossibile eseguire lo slicing con le impostazioni attuali. Le seguenti impostazioni presentano errori: {0}" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:318 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:348 #, python-brace-format msgctxt "@info:status" msgid "Unable to slice due to some per-model settings. The following settings have errors on one or more models: {error_labels}" -msgstr "Impossibile eseguire il sezionamento a causa di alcune impostazioni per modello. Le seguenti impostazioni presentano errori su uno o più modelli: {error_labels}" +msgstr "Impossibile eseguire lo slicing a causa di alcune impostazioni del modello. Le seguenti impostazioni presentano errori su uno o più modelli: {error_labels}" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:326 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:356 msgctxt "@info:status" msgid "Unable to slice because the prime tower or prime position(s) are invalid." -msgstr "Impossibile eseguire il sezionamento perché la torre di innesco o la posizione di innesco non sono valide." +msgstr "Impossibile eseguire lo slicing perché la prime tower o la prime position non sono valide." -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:335 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:365 msgctxt "@info:status" msgid "Nothing to slice because none of the models fit the build volume. Please scale or rotate models to fit." msgstr "Nulla da sezionare in quanto nessuno dei modelli corrisponde al volume di stampa. Ridimensionare o ruotare i modelli secondo necessità." #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:50 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:239 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:242 msgctxt "@info:status" msgid "Processing Layers" msgstr "Elaborazione dei livelli" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:239 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:242 msgctxt "@info:title" msgid "Information" msgstr "Informazioni" @@ -769,30 +843,30 @@ msgstr "Installazione" #: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:43 msgid "Failed to copy Siemens NX plugins files. Please check your UGII_USER_DIR. It is not set to a directory." -msgstr "Impossibile copiare i file di plugin Siemens NX. Controllare UGII_USER_DIR. Non è assegnato ad alcuna directory." +msgstr "Impossibile copiare i file dei plugin Siemens NX. Controllare UGII_USER_DIR. Non è assegnato ad alcuna directory." #: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:50 #: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:59 #: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:81 msgid "Successfully installed Siemens NX Cura plugin." -msgstr "Installato correttamente plugin Siemens NX Cura." +msgstr "Siemens NX Cura plugin installato correttamente." #: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:65 msgid "Failed to copy Siemens NX plugins files. Please check your UGII_USER_DIR." -msgstr "Impossibile copiare i file di plugin Siemens NX. Controllare UGII_USER_DIR." +msgstr "Impossibile copiare i file dei plugin Siemens NX. Controllare UGII_USER_DIR." #: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:85 msgid "Failed to install Siemens NX plugin. Could not set environment variable UGII_USER_DIR for Siemens NX." -msgstr "Impossibile installare plugin Siemens NX. Impossibile impostare la variabile di ambiente UGII_USER_DIR per Siemens NX." +msgstr "Impossibile installare il plugin Siemens NX. Impossibile impostare la variabile di ambiente UGII_USER_DIR per Siemens NX." -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:167 -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:585 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:165 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:590 msgctxt "@title:tab" msgid "Recommended" msgstr "Consigliata" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:169 -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:590 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:167 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:595 msgctxt "@title:tab" msgid "Custom" msgstr "Personalizzata" @@ -803,24 +877,24 @@ msgctxt "@item:inlistbox" msgid "3MF File" msgstr "File 3MF" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:126 -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1142 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:159 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1185 msgctxt "@label" msgid "Nozzle" msgstr "Ugello" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:164 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:152 #, python-brace-format msgctxt "@info:status" msgid "Failed to get plugin ID from {0}" -msgstr "Impossibile ottenere ID plugin da {0}" +msgstr "Impossibile ottenere ID del plugin da {0}" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:165 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:153 msgctxt "@info:tile" msgid "Warning" -msgstr "Avvertenza" +msgstr "Attenzione" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:203 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:191 msgctxt "@window:title" msgid "Plugin browser" msgstr "Browser plugin" @@ -835,21 +909,21 @@ msgctxt "@item:inlistbox" msgid "G File" msgstr "File G" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:314 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:321 msgctxt "@info:status" msgid "Parsing G-code" -msgstr "Parsing codice G" +msgstr "Analisi G-code" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:316 -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:426 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:323 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:464 msgctxt "@info:title" msgid "G-code Details" -msgstr "Dettagli codice G" +msgstr "Dettagli G-code" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:424 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:462 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." +msgstr "Verifica che il G-code sia idoneo alla tua stampante e alla sua configurazione prima di trasmettere il file. La rappresentazione del G-code potrebbe non essere accurata." #: /home/ruben/Projects/Cura/plugins/CuraProfileWriter/__init__.py:14 #: /home/ruben/Projects/Cura/plugins/CuraProfileReader/__init__.py:14 @@ -857,6 +931,16 @@ 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:17 +msgctxt "@item:inlistbox" +msgid "Profile Assistant" +msgstr "Assistente profilo" + #: /home/ruben/Projects/Cura/plugins/3MFWriter/__init__.py:30 msgctxt "@item:inlistbox" msgid "3MF file" @@ -888,142 +972,116 @@ msgctxt "@action" msgid "Level build plate" msgstr "Livella piano di stampa" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:89 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:98 msgctxt "@tooltip" msgid "Outer Wall" msgstr "Parete esterna" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:90 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:99 msgctxt "@tooltip" msgid "Inner Walls" msgstr "Pareti interne" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:91 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:100 msgctxt "@tooltip" msgid "Skin" msgstr "Rivestimento esterno" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:92 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:101 msgctxt "@tooltip" msgid "Infill" msgstr "Riempimento" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:93 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:102 msgctxt "@tooltip" msgid "Support Infill" msgstr "Riempimento del supporto" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:94 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:103 msgctxt "@tooltip" msgid "Support Interface" msgstr "Interfaccia supporto" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:95 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:104 msgctxt "@tooltip" msgid "Support" msgstr "Supporto" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:96 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:105 msgctxt "@tooltip" msgid "Skirt" msgstr "Skirt" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:97 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:106 msgctxt "@tooltip" msgid "Travel" msgstr "Spostamenti" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:98 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:107 msgctxt "@tooltip" msgid "Retractions" msgstr "Retrazioni" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:99 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:108 msgctxt "@tooltip" msgid "Other" msgstr "Altro" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:199 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:231 msgctxt "@label unknown material" msgid "Unknown" msgstr "Sconosciuto" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:284 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:318 #, python-brace-format msgctxt "@label" msgid "Pre-sliced file {0}" msgstr "File pre-sezionato {0}" -#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:469 +#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:440 msgctxt "@item:material" msgid "No material loaded" msgstr "Nessun materiale caricato" -#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:476 +#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:447 msgctxt "@item:material" msgid "Unknown material" msgstr "Materiale sconosciuto" -#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:30 -msgctxt "@info:status" -msgid "Finding new location for objects" -msgstr "Ricerca nuova posizione per gli oggetti" - -#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:34 -msgctxt "@info:title" -msgid "Finding Location" -msgstr "Ricerca posizione" - -#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:89 -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:83 -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/ArrangeObjectsJob.py:90 -msgctxt "@info:title" -msgid "Can't Find Location" -msgstr "Impossibile individuare posizione" - -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:431 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:113 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:437 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:120 msgctxt "@title:window" msgid "File Already Exists" msgstr "Il file esiste già" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:432 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:114 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:438 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:121 #, 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:815 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:872 msgctxt "@label" msgid "Custom" msgstr "Personalizzata" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:819 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:876 msgctxt "@label" msgid "Custom Material" msgstr "Materiale personalizzato" -#: /home/ruben/Projects/Cura/cura/Settings/ExtrudersModel.py:182 -msgctxt "@menuitem" -msgid "Global" -msgstr "Globale" - -#: /home/ruben/Projects/Cura/cura/Settings/ExtrudersModel.py:229 +#: /home/ruben/Projects/Cura/cura/Settings/ExtrudersModel.py:205 msgctxt "@menuitem" msgid "Not overridden" msgstr "Non sottoposto a override" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:117 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:124 msgctxt "@info:status" msgid "The selected material is incompatible with the selected machine or configuration." msgstr "Il materiale selezionato è incompatibile con la macchina o la configurazione selezionata." -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:118 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:125 #: /home/ruben/Projects/Cura/cura/Settings/MaterialManager.py:24 msgctxt "@info:title" msgid "Incompatible Material" @@ -1044,67 +1102,89 @@ msgctxt "@action" msgid "Undo changing the material diameter." msgstr "Annulla modifica del diametro del materiale." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:144 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:151 #, 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:151 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:158 #, 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:156 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:163 #, 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:157 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:164 msgctxt "@info:title" msgid "Export succeeded" msgstr "Esportazione riuscita" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:183 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:205 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:214 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:248 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:190 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:211 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:271 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to import profile from {0}: {1}" msgstr "Impossibile importare il profilo da {0}: {1}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:216 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:252 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:230 +#, python-brace-format +msgctxt "@info:status Don't translate the XML tags or !" +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:240 +#, python-brace-format +msgctxt "@info:status Don't translate the XML tags or !" +msgid "The machine defined in profile {0} doesn't match with your current machine, could not import it." +msgstr "La macchina definita nel profilo {0} non corrisponde alla macchina corrente, impossibile importarlo." + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:274 #, python-brace-format msgctxt "@info:status" msgid "Successfully imported profile {0}" msgstr "Profilo importato correttamente {0}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:255 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:277 +#, 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:280 #, 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:274 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:298 msgctxt "@label" msgid "Custom profile" msgstr "Profilo personalizzato" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:285 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:313 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:321 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:349 #, python-brace-format msgctxt "@info:status" msgid "Could not find a quality type {0} for the current configuration." msgstr "Impossibile trovare un tipo qualità {0} per la configurazione corrente." +#: /home/ruben/Projects/Cura/cura/ObjectsModel.py:46 +#, python-brace-format +msgctxt "@label" +msgid "Group #{group_nr}" +msgstr "Gruppo #{group_nr}" + #: /home/ruben/Projects/Cura/cura/BuildVolume.py:100 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." @@ -1115,142 +1195,167 @@ msgctxt "@info:title" msgid "Build Volume" msgstr "Volume di stampa" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:34 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:25 msgctxt "@info:status" msgid "Multiplying and placing objects" msgstr "Moltiplicazione e collocazione degli oggetti" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:35 -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:83 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:26 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:78 msgctxt "@info:title" msgid "Placing Object" msgstr "Sistemazione oggetto" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:80 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:78 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:88 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:152 +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/Arranging/ArrangeObjectsJob.py:29 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:64 +msgctxt "@info:status" +msgid "Finding new location for objects" +msgstr "Ricerca nuova posizione per gli oggetti" + +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:33 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:68 +msgctxt "@info:title" +msgid "Finding Location" +msgstr "Ricerca posizione" + +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:89 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:153 +msgctxt "@info:title" +msgid "Can't Find Location" +msgstr "Impossibile individuare posizione" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:81 msgctxt "@title:window" msgid "Crash Report" -msgstr "Rapporto su crash" +msgstr "Rapporto sul crash" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:93 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:94 msgctxt "@label crash message" msgid "" -"

      A fatal exception has occurred. Please send us this Crash Report to fix the problem

      \n" +"

      A fatal error has occurred. 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 è 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 " +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 " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:101 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:102 msgctxt "@title:groupbox" msgid "System information" msgstr "Informazioni di sistema" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:109 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:110 msgctxt "@label unknown version of Cura" msgid "Unknown" msgstr "Sconosciuto" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:111 -#, python-brace-format -msgctxt "@label Cura version" -msgid "Cura version: {version}
      " -msgstr "Versione Cura: {version}
      " - #: /home/ruben/Projects/Cura/cura/CrashHandler.py:112 -#, python-brace-format -msgctxt "@label Platform" -msgid "Platform: {platform}
      " -msgstr "Piattaforma: {platform}
      " +msgctxt "@label Cura version number" +msgid "Cura version" +msgstr "Versione Cura" #: /home/ruben/Projects/Cura/cura/CrashHandler.py:113 -#, python-brace-format -msgctxt "@label Qt version" -msgid "Qt version: {qt}
      " -msgstr "Versione Qt: {qt}
      " +msgctxt "@label Type of platform" +msgid "Platform" +msgstr "Piattaforma" #: /home/ruben/Projects/Cura/cura/CrashHandler.py:114 -#, python-brace-format -msgctxt "@label PyQt version" -msgid "PyQt version: {pyqt}
      " -msgstr "Versione PyQt: {pyqt}
      " +msgctxt "@label" +msgid "Qt version" +msgstr "Versione Qt" #: /home/ruben/Projects/Cura/cura/CrashHandler.py:115 -#, python-brace-format -msgctxt "@label OpenGL" -msgid "OpenGL: {opengl}
      " -msgstr "OpenGL: {opengl}
      " +msgctxt "@label" +msgid "PyQt version" +msgstr "Versione PyQt" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:130 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:116 +msgctxt "@label OpenGL version" +msgid "OpenGL" +msgstr "OpenGL" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:133 +msgctxt "@label" +msgid "not yet initialised
      " +msgstr "non ancora inizializzato
      " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:136 #, python-brace-format msgctxt "@label OpenGL version" msgid "
    • OpenGL Version: {version}
    • " msgstr "
    • Versione OpenGL: {version}
    • " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:131 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:137 #, python-brace-format msgctxt "@label OpenGL vendor" msgid "
    • OpenGL Vendor: {vendor}
    • " msgstr "
    • Fornitore OpenGL: {vendor}
    • " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:132 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:138 #, python-brace-format msgctxt "@label OpenGL renderer" msgid "
    • OpenGL Renderer: {renderer}
    • " msgstr "
    • Renderer OpenGL: {renderer}
    • " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:141 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:147 msgctxt "@title:groupbox" -msgid "Exception traceback" -msgstr "Analisi eccezione" +msgid "Error traceback" +msgstr "Analisi errori" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:208 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:214 msgctxt "@title:groupbox" msgid "Logs" msgstr "Registri" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:231 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:237 msgctxt "@title:groupbox" msgid "User description" msgstr "Descrizione utente" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:246 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:252 msgctxt "@action:button" msgid "Send report" msgstr "Invia report" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:256 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:274 msgctxt "@info:progress" msgid "Loading machines..." msgstr "Caricamento macchine in corso..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:661 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:660 msgctxt "@info:progress" msgid "Setting up scene..." msgstr "Impostazione scena in corso..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:703 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:702 msgctxt "@info:progress" msgid "Loading interface..." msgstr "Caricamento interfaccia in corso..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:874 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:899 #, 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:1348 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1417 #, 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}" +msgstr "È possibile caricare un solo file G-code per volta. Importazione saltata {0}" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1357 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1426 #, 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}" +msgstr "Impossibile aprire altri file durante il caricamento del G-code. Importazione saltata {0}" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1416 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1495 msgctxt "@info:status" msgid "The selected model was too small to load." msgstr "Il modello selezionato è troppo piccolo per il caricamento." @@ -1279,12 +1384,11 @@ msgstr "X (Larghezza)" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:119 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:129 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:235 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:288 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:300 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:391 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:401 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:413 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:840 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:383 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:394 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:412 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:424 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:849 msgctxt "@label" msgid "mm" msgstr "mm" @@ -1322,7 +1426,7 @@ msgstr "Versione GCode" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:181 msgctxt "@label" msgid "Printhead Settings" -msgstr "Impostazioni della testina di stampa" +msgstr "Impostazioni della testa di stampa" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:191 msgctxt "@label" @@ -1332,7 +1436,7 @@ msgstr "X min" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:192 msgctxt "@tooltip" msgid "Distance from the left of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." -msgstr "Distanza tra il lato sinistro della testina di stampa e il centro dell'ugello. Utilizzata per evitare collisioni tra le stampe precedenti e la testina di stampa durante la stampa \"Uno alla volta\"." +msgstr "Distanza tra il lato sinistro della testa di stampa e il centro dell'ugello. Utilizzata per evitare collisioni tra le stampe precedenti e la testa di stampa durante la stampa \"Uno alla volta\"." #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:201 msgctxt "@label" @@ -1342,7 +1446,7 @@ msgstr "Y min" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:202 msgctxt "@tooltip" msgid "Distance from the front of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." -msgstr "Distanza tra il lato anteriore della testina di stampa e il centro dell'ugello. Utilizzata per evitare collisioni tra le stampe precedenti e la testina di stampa durante la stampa \"Uno alla volta\"." +msgstr "Distanza tra il lato anteriore della testa di stampa e il centro dell'ugello. Utilizzata per evitare collisioni tra le stampe precedenti e la testa di stampa durante la stampa \"Uno alla volta\"." #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:211 msgctxt "@label" @@ -1352,7 +1456,7 @@ msgstr "X max" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:212 msgctxt "@tooltip" msgid "Distance from the right of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." -msgstr "Distanza tra il lato destro della testina di stampa e il centro dell'ugello. Utilizzata per evitare collisioni tra le stampe precedenti e la testina di stampa durante la stampa \"Uno alla volta\"." +msgstr "Distanza tra il lato destro della testa di stampa e il centro dell'ugello. Utilizzata per evitare collisioni tra le stampe precedenti e la testa di stampa durante la stampa \"Uno alla volta\"." #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:221 msgctxt "@label" @@ -1362,7 +1466,7 @@ msgstr "Y max" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:222 msgctxt "@tooltip" msgid "Distance from the rear of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." -msgstr "Distanza tra il lato posteriore della testina di stampa e il centro dell'ugello. Utilizzata per evitare collisioni tra le stampe precedenti e la testina di stampa durante la stampa \"Uno alla volta\"." +msgstr "Distanza tra il lato posteriore della testa di stampa e il centro dell'ugello. Utilizzata per evitare collisioni tra le stampe precedenti e la testa di stampa durante la stampa \"Uno alla volta\"." #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:234 msgctxt "@label" @@ -1374,71 +1478,70 @@ msgctxt "@tooltip" msgid "The height difference between the tip of the nozzle and the gantry system (X and Y axes). Used to prevent collisions between previous prints and the gantry when printing \"One at a Time\"." msgstr "La differenza di altezza tra la punta dell’ugello e il sistema gantry (assi X e Y). Utilizzata per evitare collisioni tra le stampe precedenti e il gantry durante la stampa \"Uno alla volta\"." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:255 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:254 msgctxt "@label" msgid "Number of Extruders" msgstr "Numero di estrusori" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:289 -msgctxt "@tooltip" -msgid "The nominal diameter of filament supported by the printer. The exact diameter will be overridden by the material and/or the profile." -msgstr "Diametro nominale del filamento supportato dalla stampante. Il diametro esatto verrà sovrapposto dal materiale e/o dal profilo." - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:291 -msgctxt "@label" -msgid "Material diameter" -msgstr "Diametro materiale" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:299 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:390 -msgctxt "@label" -msgid "Nozzle size" -msgstr "Dimensione ugello" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:317 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:310 msgctxt "@label" msgid "Start Gcode" msgstr "Avvio GCode" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:327 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:320 msgctxt "@tooltip" msgid "Gcode commands to be executed at the very start." msgstr "Comandi Gcode da eseguire all’avvio." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:336 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:329 msgctxt "@label" msgid "End Gcode" msgstr "Fine GCode" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:346 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:339 msgctxt "@tooltip" msgid "Gcode commands to be executed at the very end." msgstr "Comandi Gcode da eseguire alla fine." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:378 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:370 msgctxt "@label" msgid "Nozzle Settings" msgstr "Impostazioni ugello" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:400 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:382 +msgctxt "@label" +msgid "Nozzle size" +msgstr "Dimensione ugello" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:393 +msgctxt "@label" +msgid "Compatible material diameter" +msgstr "Diametro del materiale compatibile" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:395 +msgctxt "@tooltip" +msgid "The nominal diameter of filament supported by the printer. The exact diameter will be overridden by the material and/or the profile." +msgstr "Diametro nominale del filamento supportato dalla stampante. Il diametro esatto verrà sovrascritto dal materiale e/o dal profilo." + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:411 msgctxt "@label" msgid "Nozzle offset X" msgstr "Scostamento X ugello" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:412 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:423 msgctxt "@label" msgid "Nozzle offset Y" msgstr "Scostamento Y ugello" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:433 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:444 msgctxt "@label" msgid "Extruder Start Gcode" -msgstr "Codice G avvio estrusore" +msgstr "Gcode avvio estrusore" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:451 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:462 msgctxt "@label" msgid "Extruder End Gcode" -msgstr "Codice G fine estrusore" +msgstr "Gcode fine estrusore" #: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.qml:18 msgctxt "@label" @@ -1448,8 +1551,9 @@ msgstr "Registro modifiche" #: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.qml:37 #: /home/ruben/Projects/Cura/plugins/USBPrinting/FirmwareUpdateWindow.qml:107 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:55 -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:445 -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:357 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:306 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:456 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:492 #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:80 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:123 #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:147 @@ -1514,7 +1618,7 @@ 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:" +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 Gcode alla stampante.\n\nSelezionare la stampante dall’elenco seguente:" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:75 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:44 @@ -1530,7 +1634,7 @@ msgstr "Modifica" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:96 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:50 #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:95 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:190 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:171 msgctxt "@action:button" msgid "Remove" msgstr "Rimuovi" @@ -1552,14 +1656,14 @@ msgid "Type" msgstr "Tipo" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:233 -msgctxt "@label" +msgctxt "@label Printer name" msgid "Ultimaker 3" msgstr "Ultimaker 3" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:236 -msgctxt "@label" +msgctxt "@label Printer name" msgid "Ultimaker 3 Extended" -msgstr "Ultimaker3 Extended" +msgstr "Ultimaker 3 Extended" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:252 msgctxt "@label" @@ -1603,8 +1707,6 @@ msgid "Enter the IP address or hostname of your printer on the network." msgstr "Inserire l’indirizzo IP o l’hostname della stampante sulla rete." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:379 -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:92 -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:88 #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:181 msgctxt "@action:button" msgid "OK" @@ -1613,7 +1715,7 @@ msgstr "OK" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrintWindow.qml:24 msgctxt "@title:window" msgid "Print over network" -msgstr "Stampa sulla rete" +msgstr "Stampa tramite rete" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrintWindow.qml:92 msgctxt "@action:button" @@ -1625,6 +1727,11 @@ msgctxt "@label: arg 1 is group name" msgid "%1 is not set up to host a group of connected Ultimaker 3 printers" msgstr "%1 non è configurata per supportare la connessione di un gruppo di stampanti Ultimaker 3" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterMonitorItem.qml:55 +msgctxt "@label link to connect manager" +msgid "Add/Remove printers" +msgstr "Aggiungi/Rimuovi stampanti" + #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/OpenPanelButton.qml:14 msgctxt "@info:tooltip" msgid "Opens the print jobs page with your default web browser." @@ -1655,11 +1762,16 @@ msgid "Available" msgstr "Disponibile" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:43 -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:101 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:100 msgctxt "@label:MonitorStatus" msgid "Lost connection with the printer" msgstr "Persa connessione con la stampante" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:47 +msgctxt "@label Printer status" +msgid "Unknown" +msgstr "Sconosciuto" + #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:257 msgctxt "@label:status" msgid "Disabled" @@ -1704,7 +1816,7 @@ msgstr "Finisce alle: " #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:405 msgctxt "@label" msgid "Clear build plate" -msgstr "Cancellare piano di stampa" +msgstr "Pulire piano di stampa" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:414 msgctxt "@label" @@ -1751,138 +1863,250 @@ msgctxt "@action:button" msgid "Activate Configuration" msgstr "Attiva la configurazione" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:20 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:21 msgctxt "@title:window" -msgid "Cura SolidWorks Plugin Configuration" -msgstr "Configurazione plugin Cura SolidWorks" +msgid "SolidWorks: Export wizard" +msgstr "SolidWorks: procedura guidata per l’esportazione" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:44 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:45 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:140 msgctxt "@action:label" -msgid "Default quality of the exported STL:" -msgstr "Qualità predefinita STL esportato:" +msgid "Quality:" +msgstr "Qualità:" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:79 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:78 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:179 msgctxt "@option:curaSolidworksStlQuality" -msgid "Always ask" -msgstr "Chiedi sempre" +msgid "Fine (3D-printing)" +msgstr "Fine (stampa 3D)" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:80 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:79 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:180 msgctxt "@option:curaSolidworksStlQuality" -msgid "Always use Fine quality" -msgstr "Utilizza sempre la qualità Fine" +msgid "Coarse (3D-printing)" +msgstr "Grossolana (stampa 3D)" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:81 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:80 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:181 msgctxt "@option:curaSolidworksStlQuality" -msgid "Always use Coarse quality" -msgstr "Utilizza sempre la qualità Grossolana" +msgid "Fine (SolidWorks)" +msgstr "Fine (SolidWorks)" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:20 -msgctxt "@title:window" -msgid "Import SolidWorks File as STL..." -msgstr "Importa file SolidWorks come STL..." - -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:43 -msgctxt "@info:tooltip" -msgid "Quality of the Exported STL" -msgstr "Qualità STL esportato" - -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:48 -msgctxt "@action:label" -msgid "Quality" -msgstr "Qualità" - -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:62 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:81 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:182 msgctxt "@option:curaSolidworksStlQuality" -msgid "Coarse" -msgstr "Grossolana" +msgid "Coarse (SolidWorks)" +msgstr "Grossolana (SolidWorks)" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:63 -msgctxt "@option:curaSolidworksStlQuality" -msgid "Fine" -msgstr "Fine" - -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:78 -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:82 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:94 msgctxt "@text:window" -msgid "Remember my choice" -msgstr "Ricorda la scelta" +msgid "Show this dialog again" +msgstr "Mostra nuovamente questa finestra di dialogo" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:81 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:104 +msgctxt "@action:button" +msgid "Continue" +msgstr "Continua" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:116 +msgctxt "@action:button" +msgid "Abort" +msgstr "Interrompi" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:21 +msgctxt "@title:window" +msgid "How to install Cura SolidWorks macro" +msgstr "Come installare la macro Cura SolidWorks" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:62 +msgctxt "@description:label" +msgid "Steps:" +msgstr "Fasi:" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:140 +msgctxt "@action:button" +msgid "" +"Open the directory\n" +"with macro and icon" +msgstr "Aprire la directory\ncon macro e icona" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:160 +msgctxt "@description:label" +msgid "Instructions:" +msgstr "Istruzioni:" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:202 +msgctxt "@action:playpause" +msgid "Play" +msgstr "Riproduci" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:206 +msgctxt "@action:playpause" +msgid "Pause" +msgstr "Pausa" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:268 +msgctxt "@action:button" +msgid "Previous Step" +msgstr "Fase precedente" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:283 +msgctxt "@action:button" +msgid "Done" +msgstr "Eseguito" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:287 +msgctxt "@action:button" +msgid "Next Step" +msgstr "Fase successiva" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:21 +msgctxt "@title:window" +msgid "SolidWorks plugin: Configuration" +msgstr "Plugin SolidWorks: configurazione" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:39 +msgctxt "@title:tab" +msgid "Conversion settings" +msgstr "Impostazioni di conversione" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:66 +msgctxt "@label" +msgid "First choice:" +msgstr "Prima scelta:" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:86 +msgctxt "@text:menu" +msgid "Latest installed version (Recommended)" +msgstr "Ultima versione installata (consigliata)" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:95 +msgctxt "@text:menu" +msgid "Default version" +msgstr "Versione predefinita" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:193 +msgctxt "@label" +msgid "Show wizard before opening SolidWorks files" +msgstr "Mostra la procedura guidata prima di aprire i file SolidWorks" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:203 +msgctxt "@label" +msgid "Automatically rotate opened file into normed orientation" +msgstr "Ruota automaticamente il file aperto nell’orientamento corretto" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:210 +msgctxt "@title:tab" +msgid "Installation(s)" +msgstr "Installazione(i)" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:284 +msgctxt "@label" +msgid "COM service found" +msgstr "Servizio COM trovato" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:295 +msgctxt "@label" +msgid "Executable found" +msgstr "Eseguibile trovato" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:306 +msgctxt "@label" +msgid "COM starting" +msgstr "COM in avvio" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:317 +msgctxt "@label" +msgid "Revision number" +msgstr "Numero di revisione" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:328 +msgctxt "@label" +msgid "Functions available" +msgstr "Funzioni disponibili" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:341 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:264 +msgctxt "@action:button" +msgid "Save" +msgstr "Salva" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:117 msgctxt "@label" msgid "Color scheme" msgstr "Schema colori" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:96 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:132 msgctxt "@label:listbox" msgid "Material Color" msgstr "Colore materiale" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:100 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:136 msgctxt "@label:listbox" msgid "Line Type" msgstr "Tipo di linea" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:104 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:140 msgctxt "@label:listbox" msgid "Feedrate" msgstr "Velocità" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:108 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:144 msgctxt "@label:listbox" msgid "Layer thickness" -msgstr "Spessore strato" +msgstr "Spessore layer" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:148 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:185 msgctxt "@label" msgid "Compatibility Mode" msgstr "Modalità di compatibilità" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:230 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:264 msgctxt "@label" msgid "Show Travels" msgstr "Mostra spostamenti" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:236 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:270 msgctxt "@label" msgid "Show Helpers" msgstr "Mostra helper" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:242 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:276 msgctxt "@label" msgid "Show Shell" msgstr "Mostra guscio" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:248 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:282 msgctxt "@label" msgid "Show Infill" msgstr "Mostra riempimento" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:297 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:330 msgctxt "@label" msgid "Only Show Top Layers" msgstr "Mostra solo strati superiori" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:306 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:339 msgctxt "@label" msgid "Show 5 Detailed Layers On Top" -msgstr "Mostra 5 strati superiori in dettaglio" +msgstr "Mostra 5 layer superiori in dettaglio" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:317 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:350 msgctxt "@label" msgid "Top / Bottom" msgstr "Superiore / Inferiore" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:321 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:354 msgctxt "@label" msgid "Inner Wall" msgstr "Parete interna" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:378 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:410 msgctxt "@label" msgid "min" msgstr "min." -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:420 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:452 msgctxt "@label" msgid "max" msgstr "max." @@ -1907,7 +2131,7 @@ msgctxt "@label" msgid "Settings" msgstr "Impostazioni" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:455 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:466 msgctxt "@info:tooltip" msgid "Change active post-processing scripts" msgstr "Modifica script di post-elaborazione attivi" @@ -1982,23 +2206,53 @@ msgctxt "@action:label" msgid "Smoothing" msgstr "Smoothing" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:208 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:38 +msgctxt "@label" +msgid "Mesh Type" +msgstr "Tipo di maglia" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:69 +msgctxt "@label" +msgid "Normal model" +msgstr "Modello normale" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:76 +msgctxt "@label" +msgid "Print as support" +msgstr "Stampa come supporto" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:84 +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:92 +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:100 +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:333 msgctxt "@action:button" msgid "Select settings" msgstr "Seleziona impostazioni" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:248 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:375 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:272 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:402 #: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:91 msgctxt "@label:textbox" msgid "Filter..." msgstr "Filtro..." -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:296 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:426 msgctxt "@label:checkbox" msgid "Show all" msgstr "Mostra tutto" @@ -2197,7 +2451,7 @@ msgstr "Seleziona qualsiasi aggiornamento realizzato per questa Ultimaker 2." #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:45 msgctxt "@label" msgid "Olsson Block" -msgstr "Blocco Olsson" +msgstr "Olsson Block" #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:27 msgctxt "@title" @@ -2212,7 +2466,7 @@ msgstr "Per assicurarsi stampe di alta qualità, è ora possibile regolare il pi #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:47 msgctxt "@label" msgid "For every position; insert a piece of paper under the nozzle and adjust the print build plate height. The print build plate height is right when the paper is slightly gripped by the tip of the nozzle." -msgstr "Per ciascuna posizione: inserire un pezzo di carta sotto l'ugello e regolare la stampa dell'altezza del piano di stampa. L'altezza del piano di stampa è corretta quando la carta sfiora la punta dell'ugello." +msgstr "Per ciascuna posizione: inserire un pezzo di carta sotto l'ugello e regolare l'altezza del piano di stampa. L'altezza del piano di stampa è corretta quando la carta sfiora la punta dell'ugello." #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:62 msgctxt "@action:button" @@ -2357,66 +2611,66 @@ msgctxt "@label" msgid "Everything is in order! You're done with your CheckUp." msgstr "È tutto in ordine! Controllo terminato." -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:88 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:87 msgctxt "@label:MonitorStatus" msgid "Not connected to a printer" msgstr "Non collegato ad una stampante" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:90 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:89 msgctxt "@label:MonitorStatus" msgid "Printer does not accept commands" msgstr "La stampante non accetta comandi" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:96 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:95 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:194 msgctxt "@label:MonitorStatus" msgid "In maintenance. Please check the printer" msgstr "In manutenzione. Controllare la stampante" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:103 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:102 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:184 msgctxt "@label:MonitorStatus" msgid "Printing..." msgstr "Stampa in corso..." -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:106 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:105 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:186 msgctxt "@label:MonitorStatus" msgid "Paused" msgstr "In pausa" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:109 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:108 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:188 msgctxt "@label:MonitorStatus" msgid "Preparing..." msgstr "Preparazione in corso..." -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:111 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:110 msgctxt "@label:MonitorStatus" msgid "Please remove the print" msgstr "Rimuovere la stampa" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:237 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:241 msgctxt "@label:" msgid "Resume" msgstr "Riprendi" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:241 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:245 msgctxt "@label:" msgid "Pause" msgstr "Pausa" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:270 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:274 msgctxt "@label:" msgid "Abort Print" msgstr "Interrompi la stampa" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:280 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:284 msgctxt "@window:title" msgid "Abort print" msgstr "Interrompi la stampa" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:282 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:286 msgctxt "@label" msgid "Are you sure you want to abort the print?" msgstr "Sei sicuro di voler interrompere la stampa?" @@ -2449,19 +2703,19 @@ msgid "Customized" msgstr "Valore personalizzato" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:157 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:593 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:595 msgctxt "@option:discardOrKeep" msgid "Always ask me this" msgstr "Chiedi sempre" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:158 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:594 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:596 msgctxt "@option:discardOrKeep" msgid "Discard and never ask again" msgstr "Elimina e non chiedere nuovamente" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:159 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:595 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:597 msgctxt "@option:discardOrKeep" msgid "Keep and never ask again" msgstr "Mantieni e non chiedere nuovamente" @@ -2496,72 +2750,72 @@ msgctxt "@label" msgid "Brand" msgstr "Marchio" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:92 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:88 msgctxt "@label" msgid "Material Type" msgstr "Tipo di materiale" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:105 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:97 msgctxt "@label" msgid "Color" msgstr "Colore" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:139 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:141 msgctxt "@label" msgid "Properties" msgstr "Proprietà" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:141 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:143 msgctxt "@label" msgid "Density" msgstr "Densità" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:156 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:158 msgctxt "@label" msgid "Diameter" msgstr "Diametro" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:185 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:187 msgctxt "@label" msgid "Filament Cost" msgstr "Costo del filamento" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:201 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:203 msgctxt "@label" msgid "Filament weight" msgstr "Peso del filamento" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:218 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:220 msgctxt "@label" msgid "Filament length" msgstr "Lunghezza del filamento" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:227 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:229 msgctxt "@label" msgid "Cost per Meter" msgstr "Costo al metro" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:241 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:243 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/MaterialView.qml:248 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:250 msgctxt "@label" msgid "Unlink Material" msgstr "Scollega materiale" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:259 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:261 msgctxt "@label" msgid "Description" msgstr "Descrizione" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:272 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:274 msgctxt "@label" msgid "Adhesion Information" msgstr "Informazioni sull’aderenza" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:298 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:300 msgctxt "@label" msgid "Print settings" msgstr "Impostazioni di stampa" @@ -2602,7 +2856,7 @@ msgid "Unit" msgstr "Unità" #: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:14 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:439 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:509 msgctxt "@title:tab" msgid "General" msgstr "Generale" @@ -2617,230 +2871,255 @@ msgctxt "@label" msgid "Language:" msgstr "Lingua:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:205 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:207 msgctxt "@label" msgid "Currency:" msgstr "Valuta:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:219 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:221 msgctxt "@label" msgid "Theme:" msgstr "Tema:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:279 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:281 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:296 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:298 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:304 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:306 msgctxt "@option:check" msgid "Slice automatically" msgstr "Seziona automaticamente" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:318 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:320 msgctxt "@label" msgid "Viewport behavior" msgstr "Comportamento del riquadro di visualizzazione" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:326 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:328 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:335 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:337 msgctxt "@option:check" msgid "Display overhang" msgstr "Visualizza sbalzo" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:342 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:344 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" +msgstr "Sposta la camera in modo che il modello si trovi al centro della visualizzazione quando è selezionato" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:347 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:349 msgctxt "@action:button" msgid "Center camera when item is selected" -msgstr "Centratura fotocamera alla selezione dell'elemento" +msgstr "Centratura camera alla selezione dell'elemento" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:356 +#: /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:361 +#: /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." +msgstr "Inverti la direzione dello zoom della camera." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:370 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:372 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:375 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:377 msgctxt "@action:button" msgid "Zoom toward mouse direction" msgstr "Zoom verso la direzione del mouse" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:384 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:386 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:389 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:391 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:397 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:399 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:402 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:404 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:414 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:416 msgctxt "@info:tooltip" msgid "Show caution message in gcode reader." -msgstr "Visualizza il messaggio di avvertimento sul lettore codice G." +msgstr "Visualizza il messaggio di avvertimento sul lettore gcode." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:423 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:425 msgctxt "@option:check" msgid "Caution message in gcode reader" -msgstr "Messaggio di avvertimento sul lettore codice G" +msgstr "Messaggio di avvertimento sul lettore gcode" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:430 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:432 msgctxt "@info:tooltip" msgid "Should layer be forced into compatibility mode?" -msgstr "Lo strato deve essere forzato in modalità di compatibilità?" +msgstr "Il layer deve essere forzato in modalità di compatibilità?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:435 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:437 msgctxt "@option:check" msgid "Force layer view compatibility mode (restart required)" -msgstr "Forzare la modalità di compatibilità visualizzazione strato (riavvio necessario)" +msgstr "Forzare la modalità di compatibilità visualizzazione layer (riavvio necessario)" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:451 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:453 msgctxt "@label" msgid "Opening and saving files" msgstr "Apertura e salvataggio file" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:457 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:459 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:462 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:464 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:473 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:478 msgctxt "@option:check" msgid "Scale extremely small models" msgstr "Ridimensiona i modelli eccessivamente piccoli" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:485 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:487 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:490 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:492 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:499 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:501 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:503 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:505 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:512 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:514 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:520 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:522 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:533 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:535 msgctxt "@option:openProject" msgid "Always ask" msgstr "Chiedi sempre" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:534 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:536 msgctxt "@option:openProject" msgid "Always open as a project" msgstr "Apri sempre come progetto" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:535 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:537 msgctxt "@option:openProject" msgid "Always import models" msgstr "Importa sempre i modelli" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:571 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:573 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:580 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:582 msgctxt "@label" msgid "Override Profile" msgstr "Override profilo" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:629 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:631 msgctxt "@label" msgid "Privacy" msgstr "Privacy" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:636 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:638 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:641 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:643 msgctxt "@option:check" msgid "Check for updates on start" msgstr "Controlla aggiornamenti all’avvio" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:651 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:653 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:656 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:658 msgctxt "@option:check" msgid "Send (anonymous) print information" msgstr "Invia informazioni di stampa (anonime)" +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:674 +msgctxt "@label" +msgid "Experimental" +msgstr "Sperimentale" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:680 +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:685 +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/GeneralPage.qml:694 +msgctxt "@info:tooltip" +msgid "Should newly loaded models be arranged on the build plate? Used in conjunction with multi build plate (EXPERIMENTAL)" +msgstr "I modelli appena caricati devono essere sistemati sul piano di stampa? Utilizzato in abbinamento al piano di stampa multiplo (SPERIMENTALE)" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:699 +msgctxt "@option:check" +msgid "Do not arrange objects on load" +msgstr "Non posizionare oggetti dopo il caricamento" + #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:444 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:514 msgctxt "@title:tab" msgid "Printers" msgstr "Stampanti" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:37 #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:51 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:137 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:138 msgctxt "@action:button" msgid "Activate" msgstr "Attiva" @@ -2875,7 +3154,7 @@ msgstr "Stato:" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:190 msgctxt "@label:MonitorStatus" msgid "Waiting for someone to clear the build plate" -msgstr "In attesa di qualcuno che cancelli il piano di stampa" +msgstr "In attesa che qualcuno liberi il piano di stampa" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:199 msgctxt "@label:MonitorStatus" @@ -2883,7 +3162,7 @@ msgid "Waiting for a printjob" msgstr "In attesa di un processo di stampa" #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:448 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:518 msgctxt "@title:tab" msgid "Profiles" msgstr "Profili" @@ -2909,13 +3188,13 @@ msgid "Duplicate" msgstr "Duplica" #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:113 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:201 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:182 msgctxt "@action:button" msgid "Import" msgstr "Importa" #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:119 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:212 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:193 msgctxt "@action:button" msgid "Export" msgstr "Esporta" @@ -2981,7 +3260,7 @@ msgid "Export Profile" msgstr "Esporta profilo" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:446 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:516 msgctxt "@title:tab" msgid "Materials" msgstr "Materiali" @@ -2996,60 +3275,60 @@ msgctxt "@action:label %1 is printer name" msgid "Printer: %1" msgstr "Stampante: %1" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:149 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:150 msgctxt "@action:button" msgid "Create" msgstr "Crea" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:168 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:160 msgctxt "@action:button" msgid "Duplicate" msgstr "Duplica" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:311 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:319 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:298 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:306 msgctxt "@title:window" msgid "Import Material" msgstr "Importa materiale" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:320 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:307 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/MaterialsPage.qml:324 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:311 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/MaterialsPage.qml:343 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:358 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:329 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:344 msgctxt "@title:window" msgid "Export Material" msgstr "Esporta materiale" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:362 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:348 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/MaterialsPage.qml:368 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:354 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully exported material to %1" msgstr "Materiale esportato correttamente su %1" #: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:18 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:793 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:869 msgctxt "@title:window" msgid "Add Printer" msgstr "Aggiungi stampante" -#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:185 +#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:194 msgctxt "@label" msgid "Printer Name:" msgstr "Nome stampante:" -#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:208 +#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:217 msgctxt "@action:button" msgid "Add Printer" msgstr "Aggiungi stampante" @@ -3176,12 +3455,7 @@ msgctxt "@label" msgid "Profile:" msgstr "Profilo:" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:66 -msgctxt "@" -msgid "No Profile Available" -msgstr "Nessun profilo disponibile" - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:104 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:102 msgctxt "@tooltip" msgid "" "Some setting/override values are different from the values stored in the profile.\n" @@ -3189,37 +3463,37 @@ msgid "" "Click to open the profile manager." msgstr "Alcuni valori di impostazione/esclusione sono diversi dai valori memorizzati nel profilo.\n\nFare clic per aprire la gestione profili." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:152 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:150 msgctxt "@label:textbox" msgid "Search..." msgstr "Ricerca..." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:483 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:482 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:498 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:497 msgctxt "@action:menu" msgid "Hide this setting" msgstr "Nascondi questa impostazione" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:508 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:507 msgctxt "@action:menu" msgid "Don't show this setting" msgstr "Nascondi questa impostazione" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:512 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:511 msgctxt "@action:menu" msgid "Keep this setting visible" msgstr "Mantieni visibile questa impostazione" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:531 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:530 msgctxt "@action:menu" msgid "Configure setting visiblity..." msgstr "Configurazione visibilità delle impostazioni in corso..." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingCategory.qml:123 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingCategory.qml:250 msgctxt "@label" msgid "" "Some hidden settings use values different from their normal calculated value.\n" @@ -3227,27 +3501,27 @@ msgid "" "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." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:62 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:61 msgctxt "@label Header for list of settings." msgid "Affects" msgstr "Influisce su" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:67 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:66 msgctxt "@label Header for list of settings." msgid "Affected By" msgstr "Influenzato da" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:157 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:156 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" +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:160 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:159 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:186 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:190 msgctxt "@label" msgid "" "This setting has a value that is different from the profile.\n" @@ -3255,7 +3529,7 @@ msgid "" "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." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:284 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:288 msgctxt "@label" msgid "" "This setting is normally calculated, but it currently has an absolute value set.\n" @@ -3263,71 +3537,71 @@ msgid "" "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." -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:120 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:128 msgctxt "@label:listbox" msgid "Print Setup" msgstr "Impostazione di stampa" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:120 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:128 msgctxt "@label:listbox" msgid "" "Print Setup disabled\n" "G-code files cannot be modified" -msgstr "Impostazione di stampa disabilitata\nI file codice G non possono essere modificati" +msgstr "Impostazione di stampa disabilitata\nI file G-code non possono essere modificati" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:336 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:342 msgctxt "@label Hours and minutes" msgid "00h 00min" msgstr "00h 00min" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:354 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:359 msgctxt "@tooltip" -msgid "Time specification
      " -msgstr "Indicazione del tempo
      " +msgid "Time specification" +msgstr "Indicazioni di tempo" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:429 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:441 msgctxt "@label" msgid "Cost specification" msgstr "Indicazione di costo" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:434 -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:445 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:446 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:455 msgctxt "@label m for meter" msgid "%1m" msgstr "%1m" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:435 -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:446 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:447 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:456 msgctxt "@label g for grams" msgid "%1g" msgstr "%1g" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:444 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:454 msgctxt "@label" msgid "Total:" msgstr "Totale:" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:498 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:504 msgctxt "@label Print estimates: m for meters, g for grams, %4 is currency and %3 is print cost" msgid "%1m / ~ %2g / ~ %4 %3" msgstr "%1m / ~ %2g / ~ %4 %3" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:503 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:509 msgctxt "@label Print estimates: m for meters, g for grams" msgid "%1m / ~ %2g" msgstr "%1m / ~ %2g" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:586 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:591 msgctxt "@tooltip" msgid "Recommended Print Setup

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

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

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

      Stampa con il controllo grana fine su ogni sezione finale del processo di sezionamento." +msgstr "Impostazione di stampa personalizzata

      Stampa con il controllo grana fine su ogni sezione finale del processo di slicing." -#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:49 +#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:50 msgctxt "@title:menuitem %1 is the automatically selected material" msgid "Automatic: %1" msgstr "Automatico: %1" @@ -3337,6 +3611,16 @@ msgctxt "@title:menu menubar:toplevel" msgid "&View" msgstr "&Visualizza" +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:37 +msgctxt "@action:inmenu menubar:view" +msgid "&Camera position" +msgstr "&Posizione fotocamera" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:52 +msgctxt "@action:inmenu menubar:view" +msgid "&Build plate" +msgstr "&Piano di stampa" + #: /home/ruben/Projects/Cura/resources/qml/Menus/NozzleMenu.qml:40 msgctxt "@title:menuitem %1 is the nozzle currently loaded in the printer" msgid "Automatic: %1" @@ -3349,14 +3633,14 @@ msgid_plural "Print Selected Models With:" msgstr[0] "Stampa modello selezionato con:" msgstr[1] "Stampa modelli selezionati con:" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ContextMenu.qml:83 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ContextMenu.qml:114 msgctxt "@title:window" 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/Menus/ContextMenu.qml:108 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ContextMenu.qml:139 msgctxt "@label" msgid "Number of Copies" msgstr "Numero di copie" @@ -3372,7 +3656,7 @@ msgid "No printer connected" msgstr "Nessuna stampante collegata" #: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:90 -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:138 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:139 msgctxt "@label" msgid "Extruder" msgstr "Estrusore" @@ -3420,7 +3704,7 @@ msgstr "La temperatura corrente del piano riscaldato." #: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:423 msgctxt "@tooltip of temperature input" msgid "The temperature to pre-heat the bed to." -msgstr "La temperatura di preriscaldo del piano." +msgstr "La temperatura di preriscaldamento del piano." #: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:623 msgctxt "@button Cancel pre-heating" @@ -3430,7 +3714,7 @@ msgstr "Annulla" #: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:623 msgctxt "@button" msgid "Pre-heat" -msgstr "Pre-riscaldo" +msgstr "Pre-riscaldamento" #: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:650 msgctxt "@tooltip of pre-heat" @@ -3482,254 +3766,294 @@ msgctxt "@label" msgid "Estimated time left" msgstr "Tempo residuo stimato" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:72 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:79 msgctxt "@action:inmenu" msgid "Toggle Fu&ll Screen" msgstr "Att&iva/disattiva schermo intero" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:79 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:86 msgctxt "@action:inmenu menubar:edit" msgid "&Undo" msgstr "&Annulla" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:89 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:96 msgctxt "@action:inmenu menubar:edit" msgid "&Redo" msgstr "Ri&peti" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:99 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:106 msgctxt "@action:inmenu menubar:file" msgid "&Quit" msgstr "E&sci" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:107 -msgctxt "@action:inmenu menubar:view" -msgid "&Reset camera position" -msgstr "&Ripristina la posizione della telecamera" - #: /home/ruben/Projects/Cura/resources/qml/Actions.qml:114 +msgctxt "@action:inmenu menubar:view" +msgid "&3D View" +msgstr "&Visualizzazione 3D" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:121 +msgctxt "@action:inmenu menubar:view" +msgid "&Front View" +msgstr "&Visualizzazione frontale" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:128 +msgctxt "@action:inmenu menubar:view" +msgid "&Top View" +msgstr "&Visualizzazione superiore" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:135 +msgctxt "@action:inmenu menubar:view" +msgid "&Left Side View" +msgstr "&Visualizzazione lato sinistro" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:142 +msgctxt "@action:inmenu menubar:view" +msgid "&Right Side View" +msgstr "&Visualizzazione lato destro" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:149 msgctxt "@action:inmenu" msgid "Configure Cura..." msgstr "Configura Cura..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:121 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:156 msgctxt "@action:inmenu menubar:printer" msgid "&Add Printer..." msgstr "A&ggiungi stampante..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:127 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:162 msgctxt "@action:inmenu menubar:printer" msgid "Manage Pr&inters..." msgstr "&Gestione stampanti..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:134 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:169 msgctxt "@action:inmenu" msgid "Manage Materials..." msgstr "Gestione materiali..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:142 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:177 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:150 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:185 msgctxt "@action:inmenu menubar:profile" msgid "&Discard current changes" msgstr "&Elimina le modifiche correnti" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:162 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:197 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:168 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:203 msgctxt "@action:inmenu menubar:profile" msgid "Manage Profiles..." msgstr "Gestione profili..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:175 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:210 msgctxt "@action:inmenu menubar:help" msgid "Show Online &Documentation" msgstr "Mostra documentazione &online" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:183 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:218 msgctxt "@action:inmenu menubar:help" msgid "Report a &Bug" msgstr "Se&gnala un errore" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:191 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:226 msgctxt "@action:inmenu menubar:help" msgid "&About..." msgstr "I&nformazioni..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:198 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:233 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:208 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:243 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:217 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:252 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:226 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:261 msgctxt "@action:inmenu" msgid "Delete Model" msgstr "Elimina modello" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:234 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:269 msgctxt "@action:inmenu" msgid "Ce&nter Model on Platform" msgstr "C&entra modello su piattaforma" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:240 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:275 msgctxt "@action:inmenu menubar:edit" msgid "&Group Models" msgstr "&Raggruppa modelli" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:250 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:295 msgctxt "@action:inmenu menubar:edit" msgid "Ungroup Models" msgstr "Separa modelli" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:260 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:305 msgctxt "@action:inmenu menubar:edit" msgid "&Merge Models" msgstr "&Unisci modelli" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:270 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:315 msgctxt "@action:inmenu" msgid "&Multiply Model..." msgstr "Mo<iplica modello" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:277 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:322 msgctxt "@action:inmenu menubar:edit" msgid "&Select All Models" msgstr "Sel&eziona tutti i modelli" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:287 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:332 msgctxt "@action:inmenu menubar:edit" msgid "&Clear Build Plate" -msgstr "&Cancellare piano di stampa" +msgstr "&Pulire piano di stampa" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:297 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:342 msgctxt "@action:inmenu menubar:file" msgid "Re&load All Models" msgstr "R&icarica tutti i modelli" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:306 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:351 +msgctxt "@action:inmenu menubar:edit" +msgid "Arrange All Models To All Build Plates" +msgstr "Sistema tutti i modelli su tutti i piani di stampa" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:358 msgctxt "@action:inmenu menubar:edit" msgid "Arrange All Models" msgstr "Sistema tutti i modelli" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:314 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:366 msgctxt "@action:inmenu menubar:edit" msgid "Arrange Selection" msgstr "Sistema selezione" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:321 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:373 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:328 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:380 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:335 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:387 msgctxt "@action:inmenu menubar:file" msgid "&Open File(s)..." msgstr "&Apri file..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:343 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:395 msgctxt "@action:inmenu menubar:file" msgid "&New Project..." msgstr "&Nuovo Progetto..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:350 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:402 msgctxt "@action:inmenu menubar:help" msgid "Show Engine &Log..." -msgstr "M&ostra log motore..." +msgstr "M&ostra motore log..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:358 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:410 msgctxt "@action:inmenu menubar:help" msgid "Show Configuration Folder" msgstr "Mostra cartella di configurazione" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:365 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:417 msgctxt "@action:menu" msgid "Configure setting visibility..." msgstr "Configura visibilità delle impostazioni..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:372 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:424 msgctxt "@action:menu" msgid "Browse plugins..." msgstr "Sfoglia plugin..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:379 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:431 msgctxt "@action:menu" msgid "Installed plugins..." msgstr "Plugin installati..." -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:28 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:438 +msgctxt "@action:inmenu menubar:view" +msgid "Expand/Collapse Sidebar" +msgstr "Espandi/Riduci barra laterale" + +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:26 msgctxt "@label:PrintjobStatus" msgid "Please load a 3D model" msgstr "Caricare un modello 3D" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:34 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:36 msgctxt "@label:PrintjobStatus" msgid "Ready to slice" msgstr "Pronto per il sezionamento" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:36 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:38 msgctxt "@label:PrintjobStatus" msgid "Slicing..." -msgstr "Sezionamento in corso..." +msgstr "Slicing in corso..." -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:38 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:40 msgctxt "@label:PrintjobStatus %1 is target operation" msgid "Ready to %1" msgstr "Pronto a %1" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:40 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:42 msgctxt "@label:PrintjobStatus" msgid "Unable to Slice" -msgstr "Sezionamento impossibile" +msgstr "Slicing impossibile" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:42 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:44 msgctxt "@label:PrintjobStatus" msgid "Slicing unavailable" msgstr "Sezionamento non disponibile" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:162 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:171 +msgctxt "@info:tooltip" +msgid "Slice current printjob" +msgstr "Seziona processo di stampa corrente" + +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:171 +msgctxt "@info:tooltip" +msgid "Cancel slicing process" +msgstr "Annulla processo di slicing" + +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:183 msgctxt "@label:Printjob" msgid "Prepare" msgstr "Prepara" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:162 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:183 msgctxt "@label:Printjob" msgid "Cancel" msgstr "Annulla" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:302 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:317 msgctxt "@info:tooltip" msgid "Select the active output device" -msgstr "Seleziona l'unità di uscita attiva" +msgstr "Seleziona l'unità output attiva" #: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:19 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:620 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:696 msgctxt "@title:window" msgid "Open file(s)" msgstr "Apri file" @@ -3749,114 +4073,114 @@ msgctxt "@title:window" msgid "Ultimaker Cura" msgstr "Ultimaker Cura" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:81 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:102 msgctxt "@title:menu menubar:toplevel" msgid "&File" msgstr "&File" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:98 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:119 msgctxt "@action:inmenu menubar:file" msgid "&Save Selection to File" msgstr "&Salva selezione su file" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:107 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:128 msgctxt "@title:menu menubar:file" msgid "Save &As..." msgstr "Salva &come..." -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:118 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:139 msgctxt "@title:menu menubar:file" -msgid "Save project" -msgstr "Salva progetto" +msgid "Save &Project..." +msgstr "Salva &progetto..." -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:141 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:162 msgctxt "@title:menu menubar:toplevel" msgid "&Edit" msgstr "&Modifica" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:158 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:179 msgctxt "@title:menu" msgid "&View" msgstr "&Visualizza" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:163 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:184 msgctxt "@title:menu" msgid "&Settings" msgstr "&Impostazioni" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:165 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:186 msgctxt "@title:menu menubar:toplevel" msgid "&Printer" msgstr "S&tampante" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:175 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:187 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:196 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:208 msgctxt "@title:menu" msgid "&Material" msgstr "Ma&teriale" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:176 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:188 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:197 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:209 msgctxt "@title:menu" msgid "&Profile" msgstr "&Profilo" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:180 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:201 msgctxt "@action:inmenu" msgid "Set as Active Extruder" msgstr "Imposta come estrusore attivo" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:198 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:219 msgctxt "@title:menu menubar:toplevel" msgid "E&xtensions" msgstr "Es&tensioni" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:232 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:253 msgctxt "@title:menu menubar:toplevel" msgid "P&lugins" msgstr "&Plugin" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:240 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:261 msgctxt "@title:menu menubar:toplevel" msgid "P&references" msgstr "P&referenze" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:248 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:269 msgctxt "@title:menu menubar:toplevel" msgid "&Help" msgstr "&Help" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:330 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:351 msgctxt "@action:button" msgid "Open File" msgstr "Apri file" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:442 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:512 msgctxt "@title:tab" msgid "Settings" msgstr "Impostazioni" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:478 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:554 msgctxt "@title:window" msgid "New project" msgstr "Nuovo progetto" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:479 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:555 msgctxt "@info:question" msgid "Are you sure you want to start a new project? This will clear the build plate and any unsaved settings." msgstr "Sei sicuro di voler aprire un nuovo progetto? Questo cancellerà il piano di stampa e tutte le impostazioni non salvate." -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:721 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:797 msgctxt "@window:title" msgid "Install Plugin" msgstr "Installa plugin" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:728 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:804 msgctxt "@title:window" msgid "Open File(s)" msgstr "Apri file" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:731 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:807 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. " @@ -3881,97 +4205,82 @@ msgctxt "@action:label" msgid "Don't show project summary on save again" msgstr "Non mostrare il riepilogo di progetto alla ripetizione di salva" -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:264 -msgctxt "@action:button" -msgid "Save" -msgstr "Salva" - -#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:74 -msgctxt "@title:tab" -msgid "Prepare" -msgstr "Prepara" - -#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:100 -msgctxt "@title:tab" -msgid "Monitor" -msgstr "Controlla" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:163 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:175 msgctxt "@label" msgid "Layer Height" msgstr "Altezza dello strato" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:323 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:345 msgctxt "@tooltip" msgid "A custom profile is currently active. To enable the quality slider, choose a default quality profile in Custom tab" msgstr "Un profilo personalizzato è attualmente attivo. Per attivare il cursore qualità, selezionare un profilo di qualità predefinito nella scheda Personalizza" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:340 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:362 msgctxt "@label" msgid "Print Speed" msgstr "Velocità di stampa" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:350 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:374 msgctxt "@label" msgid "Slower" msgstr "Più lenta" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:361 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:385 msgctxt "@label" msgid "Faster" msgstr "Più veloce" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:388 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:423 msgctxt "@tooltip" msgid "You have modified some profile settings. If you want to change these go to custom mode." msgstr "Sono state modificate alcune impostazioni del profilo. Per modificarle, andare alla modalità personalizzata." -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:413 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:446 msgctxt "@label" msgid "Infill" msgstr "Riempimento" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:633 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:668 msgctxt "@label" msgid "Gradual infill will gradually increase the amount of infill towards the top." msgstr "Un riempimento graduale aumenterà gradualmente la quantità di riempimento verso l'alto." -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:645 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:680 msgctxt "@label" msgid "Enable gradual" msgstr "Consenti variazione graduale" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:712 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:747 msgctxt "@label" msgid "Generate Support" msgstr "Generazione supporto" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:746 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:781 msgctxt "@label" msgid "Generate structures to support parts of the model which have overhangs. Without these structures, such parts would collapse during printing." msgstr "Genera strutture per supportare le parti del modello a sbalzo. Senza queste strutture, queste parti collasserebbero durante la stampa." -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:764 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:799 msgctxt "@label" msgid "Support Extruder" msgstr "Estrusore del supporto" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:816 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:851 msgctxt "@label" msgid "Select which extruder to use for support. This will build up supporting structures below the model to prevent the model from sagging or printing in mid air." msgstr "Seleziona l’estrusore da utilizzare per la stampa di strutture di supporto. Ciò consentirà di costruire strutture di supporto sotto il modello per evitare cedimenti del modello o di stampare a mezz'aria." -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:839 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:874 msgctxt "@label" msgid "Build Plate Adhesion" msgstr "Adesione piano di stampa" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:894 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:929 msgctxt "@label" msgid "Enable printing a brim or raft. This will add a flat area around or under your object which is easy to cut off afterwards." msgstr "Abilita stampa di brim o raft. Questa funzione aggiunge un’area piana attorno o sotto l’oggetto, facile da tagliare successivamente." -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:934 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:969 msgctxt "@label" msgid "Need help improving your prints?
      Read the Ultimaker Troubleshooting Guides" msgstr "Serve aiuto per migliorare le tue stampe?
      Leggi la Guida alla ricerca e riparazione guasti Ultimaker" @@ -3988,17 +4297,22 @@ msgctxt "@title:window" msgid "Open project file" msgstr "Apri file progetto" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:72 +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:93 msgctxt "@text:window" msgid "This is a Cura project file. Would you like to open it as a project or import the models from it?" msgstr "Questo è un file progetto Cura. Vuoi aprirlo come progetto o importarne i modelli?" #: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:103 +msgctxt "@text:window" +msgid "Remember my choice" +msgstr "Ricorda la scelta" + +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:122 msgctxt "@action:button" msgid "Open as project" msgstr "Apri come progetto" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:122 +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:131 msgctxt "@action:button" msgid "Import models" msgstr "Importa i modelli" @@ -4006,23 +4320,38 @@ msgstr "Importa i modelli" #: /home/ruben/Projects/Cura/resources/qml/EngineLog.qml:15 msgctxt "@title:window" msgid "Engine Log" -msgstr "Log motore" +msgstr "Motore Log" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:242 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:245 msgctxt "@label" msgid "Material" msgstr "Materiale" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:349 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:352 msgctxt "@label" -msgid "Check compatibility" -msgstr "Controllo compatibilità" +msgid "Check compatibility" +msgstr "Controlla compatibilità" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:369 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:372 msgctxt "@tooltip" msgid "Click to check the material compatibility on Ultimaker.com." msgstr "Fai clic per verificare la compatibilità del materiale su Ultimaker.com." +#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:211 +msgctxt "@option:check" +msgid "See only current build plate" +msgstr "Vedi solo il piano di stampa corrente" + +#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:227 +msgctxt "@action:button" +msgid "Arrange to all build plates" +msgstr "Sistema su tutti i piani di stampa" + +#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:247 +msgctxt "@action:button" +msgid "Arrange current build plate" +msgstr "Sistema il piano di stampa corrente" + #: MachineSettingsAction/plugin.json msgctxt "description" msgid "Provides a way to change machine settings (such as build volume, nozzle size, etc)" @@ -4113,6 +4442,26 @@ msgctxt "name" msgid "USB printing" msgstr "Stampa USB" +#: PrepareStage/plugin.json +msgctxt "description" +msgid "Provides a prepare stage in Cura." +msgstr "Fornisce una fase di preparazione in Cura." + +#: PrepareStage/plugin.json +msgctxt "name" +msgid "Prepare Stage" +msgstr "Fase di preparazione" + +#: CuraLiveScriptingPlugin/plugin.json +msgctxt "description" +msgid "Provides an edit window for direct script editing." +msgstr "Fornisce una finestra di modifica per la modifica script diretta." + +#: CuraLiveScriptingPlugin/plugin.json +msgctxt "name" +msgid "Live scripting tool" +msgstr "Strumento di script diretto" + #: RemovableDriveOutputDevice/plugin.json msgctxt "description" msgid "Provides removable drive hotplugging and writing support." @@ -4133,6 +4482,16 @@ msgctxt "name" msgid "UM3 Network Connection" msgstr "Connessione di rete UM3" +#: MonitorStage/plugin.json +msgctxt "description" +msgid "Provides a monitor stage in Cura." +msgstr "Fornisce una fase di controllo in Cura." + +#: MonitorStage/plugin.json +msgctxt "name" +msgid "Monitor Stage" +msgstr "Fase di controllo" + #: FirmwareUpdateChecker/plugin.json msgctxt "description" msgid "Checks for firmware updates." @@ -4145,8 +4504,8 @@ msgstr "Controllo aggiornamento firmware" #: CuraSolidWorksPlugin/plugin.json msgctxt "description" -msgid "Gives you the possibility to open certain files via SolidWorks itself. These are then converted and loaded into Cura" -msgstr "Offre la possibilità di aprire alcuni file tramite SolidWorks stessa. Questi vengono quindi convertiti e caricati in Cura" +msgid "Gives you the possibility to open certain files using SolidWorks itself. Conversion is done by this plugin and additional optimizations." +msgstr "Offre la possibilità di aprire alcuni file utilizzando SolidWorks. La conversione viene effettuata da questo plugin e ottimizzazioni addizionali." #: CuraSolidWorksPlugin/plugin.json msgctxt "name" @@ -4213,6 +4572,16 @@ msgctxt "name" msgid "Legacy Cura Profile Reader" msgstr "Lettore legacy profilo Cura" +#: CuraBlenderPlugin/plugin.json +msgctxt "description" +msgid "Helps to open Blender files directly in Cura." +msgstr "Aiuta ad aprire i file Blender direttamente in Cura." + +#: CuraBlenderPlugin/plugin.json +msgctxt "name" +msgid "Blender Integration (experimental)" +msgstr "Integrazione Blender (sperimentale)" + #: GCodeProfileReader/plugin.json msgctxt "description" msgid "Provides support for importing profiles from g-code files." @@ -4296,7 +4665,7 @@ msgstr "Lettore di immagine" #: CuraEngineBackend/plugin.json msgctxt "description" msgid "Provides the link to the CuraEngine slicing backend." -msgstr "Fornisce il collegamento al back-end di sezionamento CuraEngine." +msgstr "Fornisce il collegamento al back-end di slicing di CuraEngine." #: CuraEngineBackend/plugin.json msgctxt "name" @@ -4356,12 +4725,12 @@ msgstr "Visualizzazione compatta" #: GCodeReader/plugin.json msgctxt "description" msgid "Allows loading and displaying G-code files." -msgstr "Consente il caricamento e la visualizzazione dei file codice G." +msgstr "Consente il caricamento e la visualizzazione dei file G-code." #: GCodeReader/plugin.json msgctxt "name" msgid "G-code Reader" -msgstr "Lettore codice G" +msgstr "Lettore G-code" #: CuraProfileWriter/plugin.json msgctxt "description" @@ -4373,6 +4742,16 @@ 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." @@ -4413,9 +4792,159 @@ msgctxt "name" msgid "Cura Profile Reader" msgstr "Lettore profilo Cura" +#~ msgctxt "@label" +#~ msgid "Unknown" +#~ msgstr "Sconosciuto" + +#~ msgctxt "@info:status" +#~ msgid "Errors appeared while opening your SolidWorks file! Please check, whether it is possible to open your file in SolidWorks itself without any problems as well!" +#~ msgstr "Rilevati errori all'apertura del file SolidWorks! Controllare se è possibile aprire il file in SolidWorks senza che si verifichino problemi!" + +#~ msgctxt "@info:status" +#~ msgid "Error while starting %s!" +#~ msgstr "Errore durante l'avvio di %s!" + +#~ msgctxt "@item:inlistbox" +#~ msgid "Simulation view" +#~ msgstr "Vista simulazione" + +#~ msgctxt "@info" +#~ msgid "Cura collects anonymised slicing statistics. You can disable this in the preferences." +#~ msgstr "Cura acquisisce dati statistici elaborati in forma anonima. L'acquisizione può essere disabilitata nelle preferenze." + +#~ msgctxt "@action:button" +#~ msgid "Dismiss" +#~ msgstr "Ignora" + +#~ msgctxt "@menuitem" +#~ msgid "Global" +#~ msgstr "Globale" + +#~ msgctxt "@label crash message" +#~ msgid "" +#~ "

      A fatal exception has occurred. 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 è 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" +#~ " " + +#~ msgctxt "@label Cura version" +#~ msgid "Cura version: {version}
      " +#~ msgstr "Versione Cura: {version}
      " + +#~ msgctxt "@label Platform" +#~ msgid "Platform: {platform}
      " +#~ msgstr "Piattaforma: {platform}
      " + +#~ msgctxt "@label Qt version" +#~ msgid "Qt version: {qt}
      " +#~ msgstr "Versione Qt: {qt}
      " + +#~ msgctxt "@label PyQt version" +#~ msgid "PyQt version: {pyqt}
      " +#~ msgstr "Versione PyQt: {pyqt}
      " + +#~ msgctxt "@label OpenGL" +#~ msgid "OpenGL: {opengl}
      " +#~ msgstr "OpenGL: {opengl}
      " + +#~ msgctxt "@title:groupbox" +#~ msgid "Exception traceback" +#~ msgstr "Analisi eccezione" + +#~ msgctxt "@label" +#~ msgid "Material diameter" +#~ msgstr "Diametro materiale" + +#~ msgctxt "@label" +#~ msgid "Ultimaker 3" +#~ msgstr "Ultimaker 3" + +#~ msgctxt "@label" +#~ msgid "Ultimaker 3 Extended" +#~ msgstr "Ultimaker3 Extended" + +#~ msgctxt "@title:window" +#~ msgid "Cura SolidWorks Plugin Configuration" +#~ msgstr "Configurazione plugin Cura SolidWorks" + +#~ msgctxt "@action:label" +#~ msgid "Default quality of the exported STL:" +#~ msgstr "Qualità predefinita STL esportato:" + +#~ msgctxt "@option:curaSolidworksStlQuality" +#~ msgid "Always ask" +#~ msgstr "Chiedi sempre" + +#~ msgctxt "@option:curaSolidworksStlQuality" +#~ msgid "Always use Fine quality" +#~ msgstr "Utilizza sempre la qualità Fine" + +#~ msgctxt "@option:curaSolidworksStlQuality" +#~ msgid "Always use Coarse quality" +#~ msgstr "Utilizza sempre la qualità Grossolana" + +#~ msgctxt "@title:window" +#~ msgid "Import SolidWorks File as STL..." +#~ msgstr "Importa file SolidWorks come STL..." + +#~ msgctxt "@info:tooltip" +#~ msgid "Quality of the Exported STL" +#~ msgstr "Qualità STL esportato" + +#~ msgctxt "@action:label" +#~ msgid "Quality" +#~ msgstr "Qualità" + +#~ msgctxt "@option:curaSolidworksStlQuality" +#~ msgid "Coarse" +#~ msgstr "Grossolana" + +#~ msgctxt "@option:curaSolidworksStlQuality" +#~ msgid "Fine" +#~ msgstr "Fine" + +#~ msgctxt "@" +#~ msgid "No Profile Available" +#~ msgstr "Nessun profilo disponibile" + +#~ 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" + +#~ msgctxt "@tooltip" +#~ msgid "Time specification
      " +#~ msgstr "Indicazione del tempo
      " + +#~ msgctxt "@action:inmenu menubar:view" +#~ msgid "&Reset camera position" +#~ msgstr "&Ripristina la posizione della telecamera" + +#~ msgctxt "@title:menu menubar:file" +#~ msgid "Save project" +#~ msgstr "Salva progetto" + +#~ msgctxt "@title:tab" +#~ msgid "Prepare" +#~ msgstr "Prepara" + +#~ msgctxt "@title:tab" +#~ msgid "Monitor" +#~ msgstr "Controlla" + +#~ msgctxt "@label" +#~ msgid "Check compatibility" +#~ msgstr "Controllo compatibilità" + +#~ msgctxt "description" +#~ msgid "Gives you the possibility to open certain files via SolidWorks itself. These are then converted and loaded into Cura" +#~ msgstr "Offre la possibilità di aprire alcuni file tramite SolidWorks stessa. Questi vengono quindi convertiti e caricati in Cura" + #~ msgctxt "@label:status" #~ msgid "Blocked" -#~ msgstr "Ostacolato" +#~ msgstr "Bloccato" #~ msgctxt "@label:status" #~ msgid "Can't start print" @@ -4433,13 +4962,9 @@ msgstr "Lettore profilo Cura" #~ msgid "To ensure that your {machine_name} is equipped with the latest features it is recommended to update the firmware regularly. This can be done on the {machine_name} (when connected to the network) or via USB." #~ msgstr "Per verificare che la vostra {machine_name} sia dotata delle funzionalità più recenti, si consiglia di aggiornare periodicamente il firmware. Questo può essere fatto sulla {machine_name} (quando connessa alla rete) o via USB." -msgctxt "@item:inlistbox" -msgid "Layer view" -msgstr "Visualizzazione strato" - -msgctxt "@info:title" -msgid "Layer View" -msgstr "Visualizzazione strato" +#~ msgctxt "@info:title" +#~ msgid "Layer View" +#~ msgstr "Visualizzazione layer" #~ msgctxt "@menuitem" #~ msgid "Browse plugins" @@ -4541,9 +5066,9 @@ msgstr "Visualizzazione strato" #~ msgid "Provides the Layer view." #~ msgstr "Fornisce la visualizzazione degli strati." -msgctxt "name" -msgid "Layer View" -msgstr "Visualizzazione strato" +#~ msgctxt "name" +#~ msgid "Layer View" +#~ msgstr "Visualizzazione layer" #~ msgctxt "@item:inlistbox" #~ msgid "X-Ray" @@ -4674,7 +5199,7 @@ msgstr "Visualizzazione strato" #~ msgctxt "@label" #~ msgid "Hotend" -#~ msgstr "Estremità calda" +#~ msgstr "Hotend" #~ msgctxt "@action:button" #~ msgid "View Mode" @@ -4810,7 +5335,7 @@ msgstr "Visualizzazione strato" #~ msgctxt "@label" #~ msgid "The print cores and/or materials on your printer differ from those within your current project. For the best result, always slice for the print cores and materials that are inserted in your printer." -#~ msgstr "I PrintCore e/o i materiali della stampante sono diversi da quelli del progetto corrente. Per ottenere i migliori risultati, sezionare sempre per i PrintCore e i materiali inseriti nella stampante utilizzata." +#~ msgstr "I PrintCore e/o i materiali della stampante sono diversi da quelli del progetto corrente. Per risultati ottimali, sezionare sempre i PrintCore e i materiali inseriti nella stampante utilizzata." #~ msgctxt "@label" #~ msgid "Post Processing" @@ -4864,13 +5389,13 @@ msgstr "Visualizzazione strato" #~ msgid "Provides support for importing profiles from g-code files." #~ msgstr "Fornisce supporto per l'importazione di profili da file G-Code." -msgctxt "@label" -msgid "Layer View" -msgstr "Visualizzazione strato" +#~ msgctxt "@label" +#~ msgid "Layer View" +#~ msgstr "Visualizzazione layer" #~ msgctxt "@info:whatsthis" #~ msgid "Provides the Layer view." -#~ msgstr "Fornisce la visualizzazione degli strati." +#~ msgstr "Fornisce la visualizzazione dei layer." #~ msgctxt "@label" #~ msgid "Version Upgrade 2.5 to 2.6" @@ -4910,7 +5435,7 @@ msgstr "Visualizzazione strato" #~ msgctxt "@info:whatsthis" #~ msgid "Provides the link to the CuraEngine slicing backend." -#~ msgstr "Fornisce il collegamento al back-end di sezionamento CuraEngine." +#~ msgstr "Fornisce il collegamento al back-end di slicing di CuraEngine." #~ msgctxt "@label" #~ msgid "Per Model Settings Tool" @@ -4938,11 +5463,11 @@ msgstr "Visualizzazione strato" #~ msgctxt "@label" #~ msgid "G-code Reader" -#~ msgstr "Lettore codice G" +#~ msgstr "Lettore G-code" #~ msgctxt "@info:whatsthis" #~ msgid "Allows loading and displaying G-code files." -#~ msgstr "Consente il caricamento e la visualizzazione dei file codice G." +#~ msgstr "Consente il caricamento e la visualizzazione dei file G-code." #~ msgctxt "@label" #~ msgid "Cura Profile Writer" @@ -5211,7 +5736,7 @@ msgstr "Visualizzazione strato" #~ msgctxt "@option:check" #~ msgid "Only display top layer(s) in layer view" -#~ msgstr "In visualizzazione strato, visualizza solo lo/gli strato/i superiore/i" +#~ msgstr "In visualizzazione layer, visualizza solo il/i layer(s) superiore/i" #~ msgctxt "@label" #~ msgid "Opening files" diff --git a/resources/i18n/it_IT/fdmextruder.def.json.po b/resources/i18n/it_IT/fdmextruder.def.json.po index ec3c8051cf..f34ebd04ff 100644 --- a/resources/i18n/it_IT/fdmextruder.def.json.po +++ b/resources/i18n/it_IT/fdmextruder.def.json.po @@ -2,12 +2,12 @@ # Copyright (C) 2017 Ultimaker # This file is distributed under the same license as the Cura package. # Ruben Dulek , 2017. -# +# msgid "" msgstr "" "Project-Id-Version: Cura 3.0\n" -"Report-Msgid-Bugs-To: http://github.com/ultimaker/uranium\n" -"POT-Creation-Date: 2017-11-21 16:58+0000\n" +"Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" +"POT-Creation-Date: 2017-08-02 16:53+0000\n" "PO-Revision-Date: 2017-11-30 13:05+0100\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 5fb7743130..e5f440e2b2 100644 --- a/resources/i18n/it_IT/fdmprinter.def.json.po +++ b/resources/i18n/it_IT/fdmprinter.def.json.po @@ -1,15 +1,15 @@ -# Cura JSON setting files -# Copyright (C) 2017 Ultimaker +# Cura +# Copyright (C) 2018 Ultimaker # This file is distributed under the same license as the Cura package. -# Ruben Dulek , 2017. -# +# Ruben Dulek , 2018. +# msgid "" msgstr "" -"Project-Id-Version: Cura 3.0\n" -"Report-Msgid-Bugs-To: http://github.com/ultimaker/uranium\n" -"POT-Creation-Date: 2017-11-21 16:58+0000\n" +"Project-Id-Version: Cura 3.2\n" +"Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" +"POT-Creation-Date: 2018-01-29 09:48+0000\n" "PO-Revision-Date: 2017-11-30 13:05+0100\n" -"Last-Translator: Bothof \n" +"Last-Translator: Crea-3D \n" "Language-Team: Italian\n" "Language: it_IT\n" "MIME-Version: 1.0\n" @@ -49,26 +49,26 @@ msgstr "Sceglie se mostrare le diverse varianti di questa macchina, descritte in #: fdmprinter.def.json msgctxt "machine_start_gcode label" msgid "Start GCode" -msgstr "Codice G avvio" +msgstr "Avvio GCode" #: fdmprinter.def.json msgctxt "machine_start_gcode description" msgid "" "Gcode 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 del Gcode da eseguire all’avvio, separati da \n." #: fdmprinter.def.json msgctxt "machine_end_gcode label" msgid "End GCode" -msgstr "Codice G fine" +msgstr "Fine GCode" #: fdmprinter.def.json msgctxt "machine_end_gcode description" msgid "" "Gcode 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 del Gcode da eseguire alla fine, separati da \n." #: fdmprinter.def.json msgctxt "material_guid label" @@ -88,7 +88,7 @@ msgstr "Attendi il riscaldamento del piano di stampa" #: fdmprinter.def.json msgctxt "material_bed_temp_wait description" msgid "Whether to insert a command to wait until the build plate temperature is reached at the start." -msgstr "Sceglie se inserire un comando per attendere finché la temperatura del piano di stampa non viene raggiunta all’avvio." +msgstr "Scegli se inserire un comando per attendere finché la temperatura del piano di stampa non viene raggiunta all’avvio." #: fdmprinter.def.json msgctxt "material_print_temp_wait label" @@ -98,7 +98,7 @@ msgstr "Attendi il riscaldamento dell’ugello" #: fdmprinter.def.json msgctxt "material_print_temp_wait description" msgid "Whether to wait until the nozzle temperature is reached at the start." -msgstr "Sceglie se attendere finché la temperatura dell’ugello non viene raggiunta all’avvio." +msgstr "Scegli se attendere finché la temperatura dell’ugello non viene raggiunta all’avvio." #: fdmprinter.def.json msgctxt "material_print_temp_prepend label" @@ -108,7 +108,7 @@ msgstr "Includi le temperature del materiale" #: fdmprinter.def.json msgctxt "material_print_temp_prepend description" msgid "Whether to include nozzle temperature commands at the start of the gcode. When the start_gcode already contains nozzle temperature commands Cura frontend will automatically disable this setting." -msgstr "Sceglie se includere comandi temperatura ugello all’avvio del codice G. Quando start_gcode contiene già comandi temperatura ugello la parte anteriore di Cura disabilita automaticamente questa impostazione." +msgstr "Scegli se includere comandi temperatura ugello all’avvio del Gcode. Quando start_gcode contiene già comandi temperatura ugello, il frontend di Cura disabilita automaticamente questa impostazione." #: fdmprinter.def.json msgctxt "material_bed_temp_prepend label" @@ -118,7 +118,7 @@ msgstr "Includi temperatura piano di stampa" #: fdmprinter.def.json msgctxt "material_bed_temp_prepend description" msgid "Whether to include build plate temperature commands at the start of the gcode. When the start_gcode already contains build plate temperature commands Cura frontend will automatically disable this setting." -msgstr "Sceglie se includere comandi temperatura piano di stampa all’avvio del codice G. Quando start_gcode contiene già comandi temperatura piano di stampa la parte anteriore di Cura disabilita automaticamente questa impostazione." +msgstr "Scegli se includere comandi temperatura piano di stampa all’avvio del gcode. Quando start_gcode contiene già comandi temperatura piano di stampa il frontend di Cura disabilita automaticamente questa impostazione." #: fdmprinter.def.json msgctxt "machine_width label" @@ -183,7 +183,7 @@ msgstr "Indica se la macchina ha un piano di stampa riscaldato." #: fdmprinter.def.json msgctxt "machine_center_is_zero label" msgid "Is Center Origin" -msgstr "Origine del centro" +msgstr "Origine al centro" #: fdmprinter.def.json msgctxt "machine_center_is_zero description" @@ -198,7 +198,7 @@ msgstr "Numero di estrusori" #: fdmprinter.def.json msgctxt "machine_extruder_count description" msgid "Number of extruder trains. An extruder train is the combination of a feeder, bowden tube, and nozzle." -msgstr "Il numero di treni di estrusori. Un treno di estrusori è la combinazione di un alimentatore, un tubo bowden e un ugello." +msgstr "Il numero dei blocchi di estrusori. Un blocco di estrusori è la combinazione di un alimentatore, un tubo bowden e un ugello." #: fdmprinter.def.json msgctxt "machine_nozzle_tip_outer_diameter label" @@ -218,7 +218,7 @@ msgstr "Lunghezza ugello" #: fdmprinter.def.json msgctxt "machine_nozzle_head_distance description" msgid "The height difference between the tip of the nozzle and the lowest part of the print head." -msgstr "La differenza di altezza tra la punta dell’ugello e la parte inferiore della testina di stampa." +msgstr "La differenza di altezza tra la punta dell’ugello e la parte inferiore della testa di stampa." #: fdmprinter.def.json msgctxt "machine_nozzle_expansion_angle label" @@ -293,12 +293,12 @@ msgstr "Il tempo minimo in cui un estrusore deve essere inattivo prima che l’u #: fdmprinter.def.json msgctxt "machine_gcode_flavor label" msgid "Gcode flavour" -msgstr "Tipo di codice G" +msgstr "Tipo di Gcode" #: fdmprinter.def.json msgctxt "machine_gcode_flavor description" msgid "The type of gcode to be generated." -msgstr "Il tipo di codice G da generare." +msgstr "Il tipo di gcode da generare." #: fdmprinter.def.json msgctxt "machine_gcode_flavor option RepRap (Marlin/Sprinter)" @@ -345,6 +345,16 @@ msgctxt "machine_gcode_flavor option Repetier" msgid "Repetier" msgstr "Repetier" +#: fdmprinter.def.json +msgctxt "machine_firmware_retract label" +msgid "Firmware Retraction" +msgstr "Retrazione firmware" + +#: fdmprinter.def.json +msgctxt "machine_firmware_retract description" +msgid "Whether to use firmware retract commands (G10/G11) instead of using the E property in G1 commands to retract the material." +msgstr "Specifica se usare comandi di retrazione firmware (G10/G11) anziché utilizzare la proprietà E nei comandi G1 per retrarre il materiale." + #: fdmprinter.def.json msgctxt "machine_disallowed_areas label" msgid "Disallowed areas" @@ -353,7 +363,7 @@ msgstr "Aree non consentite" #: fdmprinter.def.json msgctxt "machine_disallowed_areas description" msgid "A list of polygons with areas the print head is not allowed to enter." -msgstr "Un elenco di poligoni con aree alle quali la testina di stampa non può accedere." +msgstr "Un elenco di poligoni con aree alle quali la testa di stampa non può accedere." #: fdmprinter.def.json msgctxt "nozzle_disallowed_areas label" @@ -368,22 +378,22 @@ msgstr "Un elenco di poligoni con aree alle quali l’ugello non può accedere." #: fdmprinter.def.json msgctxt "machine_head_polygon label" msgid "Machine head polygon" -msgstr "Poligono testina macchina" +msgstr "Poligono testa macchina" #: fdmprinter.def.json msgctxt "machine_head_polygon description" msgid "A 2D silhouette of the print head (fan caps excluded)." -msgstr "Una silhouette 2D della testina di stampa (cappucci ventola esclusi)." +msgstr "Una silhouette 2D della testa di stampa (coperture ventola escluse)." #: fdmprinter.def.json msgctxt "machine_head_with_fans_polygon label" msgid "Machine head & Fan polygon" -msgstr "Poligono testina macchina e ventola" +msgstr "Poligono testa macchina e ventola" #: fdmprinter.def.json msgctxt "machine_head_with_fans_polygon description" msgid "A 2D silhouette of the print head (fan caps included)." -msgstr "Una silhouette 2D della testina di stampa (cappucci ventola inclusi)." +msgstr "Una silhouette 2D della testa di stampa (coperture ventola incluse)." #: fdmprinter.def.json msgctxt "gantry_height label" @@ -403,7 +413,7 @@ msgstr "ID ugello" #: fdmprinter.def.json msgctxt "machine_nozzle_id description" msgid "The nozzle ID for an extruder train, such as \"AA 0.4\" and \"BB 0.8\"." -msgstr "ID ugello per un treno estrusore, come \"AA 0.4\" e \"BB 0.8\"." +msgstr "ID ugello per un blocco estrusore, come \"AA 0.4\" e \"BB 0.8\"." #: fdmprinter.def.json msgctxt "machine_nozzle_size label" @@ -583,52 +593,27 @@ msgstr "Qualità" #: fdmprinter.def.json msgctxt "resolution description" msgid "All settings that influence the resolution of the print. These settings have a large impact on the quality (and print time)" -msgstr "Indica tutte le impostazioni che influiscono sulla risoluzione della stampa. Queste impostazioni hanno un elevato impatto sulla qualità (e il tempo di stampa)" +msgstr "Indica tutte le impostazioni che influiscono sulla risoluzione della stampa. Queste impostazioni hanno un elevato impatto sulla qualità (e sul tempo di stampa)" #: fdmprinter.def.json msgctxt "layer_height label" msgid "Layer Height" -msgstr "Altezza dello strato" +msgstr "Altezza del layer" #: fdmprinter.def.json msgctxt "layer_height description" msgid "The height of each layer in mm. Higher values produce faster prints in lower resolution, lower values produce slower prints in higher resolution." -msgstr "Indica l’altezza di ciascuno strato in mm. Valori più elevati generano stampe più rapide con risoluzione inferiore, valori più bassi generano stampe più lente con risoluzione superiore." +msgstr "Indica l’altezza di ciascun layer in mm. Valori più elevati generano stampe più rapide con risoluzione inferiore, valori più bassi generano stampe più lente con risoluzione superiore." #: fdmprinter.def.json msgctxt "layer_height_0 label" msgid "Initial Layer Height" -msgstr "Altezza dello strato iniziale" +msgstr "Altezza iniziale del layer" #: fdmprinter.def.json msgctxt "layer_height_0 description" msgid "The height of the initial layer in mm. A thicker initial layer makes adhesion to the build plate easier." -msgstr "Indica l’altezza dello strato iniziale in mm. Uno strato iniziale più spesso facilita l’adesione al piano di stampa." - -#: fdmprinter.def.json -msgctxt "slicing_tolerance label" -msgid "Slicing Tolerance" -msgstr "Tolleranza di sezionamento" - -#: fdmprinter.def.json -msgctxt "slicing_tolerance description" -msgid "How to slice layers with diagonal surfaces. The areas of a layer can be generated based on where the middle of the layer intersects the surface (Middle). Alternatively each layer can have the areas which fall inside of the volume throughout the height of the layer (Exclusive) or a layer has the areas which fall inside anywhere within the layer (Inclusive). Exclusive retains the most details, Inclusive makes for the best fit and Middle takes the least time to process." -msgstr "Modalità di sezionamento di strati con superfici diagonali. Le aree di uno strato possono essere generate in base al punto in cui la parte intermedia dello strato interseca la superficie (intermedia). In alternativa le aree di ciascuno strato possono ricadere all'interno del volume per tutta l'altezza dello strato (Esclusiva) ovvero possono cadere in qualsiasi punto all'interno dello strato (Inclusiva). La tolleranza esclusiva mantiene il maggior numero di dettagli, la tolleranza inclusiva è la più idonea, mentre la tolleranza intermedia richiede il minor tempo di processo." - -#: fdmprinter.def.json -msgctxt "slicing_tolerance option middle" -msgid "Middle" -msgstr "Intermedia" - -#: fdmprinter.def.json -msgctxt "slicing_tolerance option exclusive" -msgid "Exclusive" -msgstr "Esclusiva" - -#: fdmprinter.def.json -msgctxt "slicing_tolerance option inclusive" -msgid "Inclusive" -msgstr "Inclusiva" +msgstr "Indica l’altezza del layer iniziale in mm. Un layer iniziale più spesso facilita l’adesione al piano di stampa." #: fdmprinter.def.json msgctxt "line_width label" @@ -670,16 +655,6 @@ msgctxt "wall_line_width_x description" msgid "Width of a single wall line for all wall lines except the outermost one." msgstr "Indica la larghezza di una singola linea della parete per tutte le linee della parete tranne quella più esterna." -#: fdmprinter.def.json -msgctxt "roofing_line_width label" -msgid "Top Surface Skin Line Width" -msgstr "Larghezza linea rivestimento superficie superiore" - -#: fdmprinter.def.json -msgctxt "roofing_line_width description" -msgid "Width of a single line of the areas at the top of the print." -msgstr "Larghezza di un singola linea delle aree nella parte superiore della stampa" - #: fdmprinter.def.json msgctxt "skin_line_width label" msgid "Top/Bottom Line Width" @@ -758,17 +733,17 @@ msgstr "Larghezza della linea della torre di innesco" #: fdmprinter.def.json msgctxt "prime_tower_line_width description" msgid "Width of a single prime tower line." -msgstr "Indica la larghezza di una singola linea della torre di innesco." +msgstr "Indica la larghezza di una singola linea della prime tower." #: fdmprinter.def.json msgctxt "initial_layer_line_width_factor label" msgid "Initial Layer Line Width" -msgstr "Larghezza linea strato iniziale" +msgstr "Larghezza linea layer iniziale" #: fdmprinter.def.json msgctxt "initial_layer_line_width_factor description" msgid "Multiplier of the line width on the first layer. Increasing this could improve bed adhesion." -msgstr "Moltiplicatore della larghezza della linea del primo strato Il suo aumento potrebbe migliorare l'adesione al piano" +msgstr "Moltiplicatore della larghezza della linea del primo layer. Il suo aumento potrebbe migliorare l'adesione al piano" #: fdmprinter.def.json msgctxt "shell label" @@ -788,7 +763,7 @@ msgstr "Estrusore pareti" #: fdmprinter.def.json msgctxt "wall_extruder_nr description" msgid "The extruder train used for printing the walls. This is used in multi-extrusion." -msgstr "Treno estrusore utilizzato per stampare le pareti. Si utilizza nell'estrusione multipla." +msgstr "Blocco estrusore utilizzato per stampare le pareti. Si utilizza nell'estrusione multipla." #: fdmprinter.def.json msgctxt "wall_0_extruder_nr label" @@ -798,7 +773,7 @@ msgstr "Estrusore parete esterna" #: fdmprinter.def.json msgctxt "wall_0_extruder_nr description" msgid "The extruder train used for printing the outer wall. This is used in multi-extrusion." -msgstr "Treno estrusore utilizzato per stampare la parete esterna. Si utilizza nell'estrusione multipla." +msgstr "Blocco estrusore utilizzato per stampare la parete esterna. Si utilizza nell'estrusione multipla." #: fdmprinter.def.json msgctxt "wall_x_extruder_nr label" @@ -808,7 +783,7 @@ msgstr "Estrusore parete interna" #: fdmprinter.def.json msgctxt "wall_x_extruder_nr description" msgid "The extruder train used for printing the inner walls. This is used in multi-extrusion." -msgstr "Treno estrusore utilizzato per stampare le pareti interne. Si utilizza nell'estrusione multipla." +msgstr "Blocco estrusore utilizzato per stampare le pareti interne. Si utilizza nell'estrusione multipla." #: fdmprinter.def.json msgctxt "wall_thickness label" @@ -828,7 +803,7 @@ msgstr "Numero delle linee perimetrali" #: fdmprinter.def.json msgctxt "wall_line_count description" msgid "The number of walls. When calculated by the wall thickness, this value is rounded to a whole number." -msgstr "Indica il numero delle pareti. Quando calcolato mediante lo spessore della parete, il valore viene arrotondato a numero intero." +msgstr "Indica il numero delle pareti. Se calcolato mediante lo spessore della parete, il valore viene arrotondato a numero intero." #: fdmprinter.def.json msgctxt "wall_0_wipe_dist label" @@ -848,52 +823,17 @@ msgstr "Estrusore rivestimento superficie superiore" #: fdmprinter.def.json msgctxt "roofing_extruder_nr description" msgid "The extruder train used for printing the top most skin. This is used in multi-extrusion." -msgstr "Treno estrusore utilizzato per stampare il rivestimento più in alto. Si utilizza nell'estrusione multipla." +msgstr "Blocco estrusore utilizzato per stampare il rivestimento più in alto. Si utilizza nell'estrusione multipla." #: fdmprinter.def.json msgctxt "roofing_layer_count label" msgid "Top Surface Skin Layers" -msgstr "Strati di rivestimento superficie superiore" +msgstr "Layer di rivestimento superficie superiore" #: fdmprinter.def.json msgctxt "roofing_layer_count description" msgid "The number of top most skin layers. Usually only one top most layer is sufficient to generate higher quality top surfaces." -msgstr "Numero degli strati di rivestimento superiori. Solitamente è sufficiente un unico strato di sommità per ottenere superfici superiori di qualità elevata." - -#: fdmprinter.def.json -msgctxt "roofing_pattern label" -msgid "Top Surface Skin Pattern" -msgstr "Configurazione del rivestimento superficie superiore" - -#: fdmprinter.def.json -msgctxt "roofing_pattern description" -msgid "The pattern of the top most layers." -msgstr "Configurazione degli strati superiori." - -#: fdmprinter.def.json -msgctxt "roofing_pattern option lines" -msgid "Lines" -msgstr "Linee" - -#: fdmprinter.def.json -msgctxt "roofing_pattern option concentric" -msgid "Concentric" -msgstr "Concentrica" - -#: fdmprinter.def.json -msgctxt "roofing_pattern option zigzag" -msgid "Zig Zag" -msgstr "Zig Zag" - -#: fdmprinter.def.json -msgctxt "roofing_angles label" -msgid "Top Surface Skin Line Directions" -msgstr "Direzioni linea rivestimento superficie superiore" - -#: fdmprinter.def.json -msgctxt "roofing_angles description" -msgid "A list of integer line directions to use when the top surface skin layers use the lines or zig zag pattern. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the traditional default angles (45 and 135 degrees)." -msgstr "Un elenco di direzioni linee intere da usare quando gli strati rivestimento superficie superiore utilizzano le linee o la configurazione zig zag. Gli elementi dall’elenco sono utilizzati in sequenza con il progredire degli strati 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 i valori angolari predefiniti (45 e 135 gradi)." +msgstr "Numero dei layers di rivestimento superiori. Solitamente è sufficiente un unico layer di sommità per ottenere superfici superiori di qualità elevata." #: fdmprinter.def.json msgctxt "top_bottom_extruder_nr label" @@ -903,67 +843,67 @@ msgstr "Estrusore superiore/inferiore" #: fdmprinter.def.json msgctxt "top_bottom_extruder_nr description" msgid "The extruder train used for printing the top and bottom skin. This is used in multi-extrusion." -msgstr "Treno estrusore utilizzato per stampare il rivestimento superiore e quello inferiore. Si utilizza nell'estrusione multipla." +msgstr "Blocco estrusore utilizzato per stampare il rivestimento superiore e quello inferiore. Si utilizza nell'estrusione multipla." #: fdmprinter.def.json msgctxt "top_bottom_thickness label" msgid "Top/Bottom Thickness" -msgstr "Spessore dello strato superiore/inferiore" +msgstr "Spessore del layer superiore/inferiore" #: fdmprinter.def.json msgctxt "top_bottom_thickness description" msgid "The thickness of the top/bottom layers in the print. This value divided by the layer height defines the number of top/bottom layers." -msgstr "Indica lo spessore degli strati superiore/inferiore nella stampa. Questo valore diviso per la l’altezza dello strato definisce il numero degli strati superiori/inferiori." +msgstr "Indica lo spessore dei layers superiore/inferiore nella stampa. Questo valore diviso per la l’altezza del layer definisce il numero dei layers superiori/inferiori." #: fdmprinter.def.json msgctxt "top_thickness label" msgid "Top Thickness" -msgstr "Spessore dello strato superiore" +msgstr "Spessore del layer superiore" #: fdmprinter.def.json msgctxt "top_thickness description" msgid "The thickness of the top layers in the print. This value divided by the layer height defines the number of top layers." -msgstr "Indica lo spessore degli strati superiori nella stampa. Questo valore diviso per la l’altezza dello strato definisce il numero degli strati superiori." +msgstr "Indica lo spessore dei layers superiori nella stampa. Questo valore diviso per la l’altezza del layer definisce il numero dei layers superiori." #: fdmprinter.def.json msgctxt "top_layers label" msgid "Top Layers" -msgstr "Strati superiori" +msgstr "Layers superiori" #: fdmprinter.def.json msgctxt "top_layers description" msgid "The number of top layers. When calculated by the top thickness, this value is rounded to a whole number." -msgstr "Indica il numero degli strati superiori. Quando calcolato mediante lo spessore dello strato superiore, il valore viene arrotondato a numero intero." +msgstr "Indica il numero dei layers superiori. Se calcolato mediante lo spessore del layer superiore, il valore viene arrotondato a numero intero." #: fdmprinter.def.json msgctxt "bottom_thickness label" msgid "Bottom Thickness" -msgstr "Spessore degli strati inferiori" +msgstr "Spessore dei layers inferiori" #: fdmprinter.def.json msgctxt "bottom_thickness description" msgid "The thickness of the bottom layers in the print. This value divided by the layer height defines the number of bottom layers." -msgstr "Indica lo spessore degli strati inferiori nella stampa. Questo valore diviso per la l’altezza dello strato definisce il numero degli strati inferiori." +msgstr "Indica lo spessore dei layers inferiori nella stampa. Questo valore diviso per la l’altezza del layer definisce il numero dei layers inferiori." #: fdmprinter.def.json msgctxt "bottom_layers label" msgid "Bottom Layers" -msgstr "Strati inferiori" +msgstr "Layers inferiori" #: fdmprinter.def.json 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." +msgstr "Indica il numero dei layers inferiori. Quando calcolato mediante lo spessore del layer inferiore, il valore viene arrotondato a numero intero." #: fdmprinter.def.json msgctxt "top_bottom_pattern label" msgid "Top/Bottom Pattern" -msgstr "Configurazione dello strato superiore/inferiore" +msgstr "Configurazione del layer superiore/inferiore" #: fdmprinter.def.json msgctxt "top_bottom_pattern description" msgid "The pattern of the top/bottom layers." -msgstr "Indica la configurazione degli strati superiori/inferiori." +msgstr "Indica la configurazione dei layers superiori/inferiori." #: fdmprinter.def.json msgctxt "top_bottom_pattern option lines" @@ -983,12 +923,12 @@ msgstr "Zig Zag" #: fdmprinter.def.json msgctxt "top_bottom_pattern_0 label" msgid "Bottom Pattern Initial Layer" -msgstr "Strato iniziale configurazione inferiore" +msgstr "Layer iniziale configurazione inferiore" #: fdmprinter.def.json msgctxt "top_bottom_pattern_0 description" msgid "The pattern on the bottom of the print on the first layer." -msgstr "La configurazione al fondo della stampa sul primo strato." +msgstr "La configurazione al fondo della stampa sul primo layer." #: fdmprinter.def.json msgctxt "top_bottom_pattern_0 option lines" @@ -1013,7 +953,7 @@ msgstr "Direzioni delle linee superiori/inferiori" #: fdmprinter.def.json msgctxt "skin_angles description" msgid "A list of integer line directions to use when the top/bottom layers use the lines or zig zag pattern. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the traditional default angles (45 and 135 degrees)." -msgstr "Un elenco di direzioni linee intere da usare quando gli strati superiori/inferiori utilizzano le linee o la configurazione zig zag. Gli elementi dall’elenco sono utilizzati in sequenza con il progredire degli strati 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 i valori angolari predefiniti (45 e 135 gradi)." +msgstr "Un elenco di direzioni linee intere da usare quando i layers superiori/inferiori utilizzano le linee o la configurazione zig zag. 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 i valori angolari predefiniti (45 e 135 gradi)." #: fdmprinter.def.json msgctxt "wall_0_inset label" @@ -1025,6 +965,16 @@ msgctxt "wall_0_inset description" msgid "Inset applied to the path of the outer wall. If the outer wall is smaller than the nozzle, and printed after the inner walls, use this offset to get the hole in the nozzle to overlap with the inner walls instead of the outside of the model." msgstr "Inserto applicato al percorso della parete esterna. Se la parete esterna è di dimensioni inferiori all’ugello e stampata dopo le pareti interne, utilizzare questo offset per fare in modo che il foro dell’ugello si sovrapponga alle pareti interne anziché all’esterno del modello." +#: fdmprinter.def.json +msgctxt "optimize_wall_printing_order label" +msgid "Optimize Wall Printing Order" +msgstr "Ottimizzazione sequenza di stampa pareti" + +#: fdmprinter.def.json +msgctxt "optimize_wall_printing_order description" +msgid "Optimize the order in which walls are printed so as to reduce the number of retractions and the distance travelled. Most parts will benefit from this being enabled but some may actually take longer so please compare the print time estimates with and without optimization." +msgstr "Ottimizza l'ordine in cui vengono stampate le pareti in modo da ridurre le retrazioni e la distanza percorsa. L'abilitazione di questa funzione porta vantaggi per la maggior parte dei pezzi, ma alcuni potrebbero richiedere un maggior tempo di esecuzione, per cui si consiglia di confrontare i tempi di stampa stimati con e senza ottimizzazione." + #: fdmprinter.def.json msgctxt "outer_inset_first label" msgid "Outer Before Inner Walls" @@ -1095,6 +1045,16 @@ msgctxt "fill_perimeter_gaps option everywhere" msgid "Everywhere" msgstr "In tutti i possibili punti" +#: fdmprinter.def.json +msgctxt "filter_out_tiny_gaps label" +msgid "Filter Out Tiny Gaps" +msgstr "Esclusione spazi minimi" + +#: fdmprinter.def.json +msgctxt "filter_out_tiny_gaps description" +msgid "Filter out tiny gaps to reduce blobs on outside of model." +msgstr "Esclude gli spazi minimi per ridurre le gocce sull’esterno del modello." + #: fdmprinter.def.json msgctxt "fill_outline_gaps label" msgid "Print Thin Walls" @@ -1113,17 +1073,17 @@ msgstr "Espansione orizzontale" #: fdmprinter.def.json msgctxt "xy_offset description" msgid "Amount of offset applied to all polygons in each layer. Positive values can compensate for too big holes; negative values can compensate for too small holes." -msgstr "Determina l'entità di offset (o estensione dello strato) applicata a tutti i poligoni su ciascuno strato. I valori positivi possono compensare fori troppo estesi; i valori negativi possono compensare fori troppo piccoli." +msgstr "Determina l'entità di offset (o estensione del layer) applicata a tutti i poligoni su ciascun layer. I valori positivi possono compensare fori troppo estesi; i valori negativi possono compensare fori troppo piccoli." #: fdmprinter.def.json msgctxt "xy_offset_layer_0 label" msgid "Initial Layer Horizontal Expansion" -msgstr "Espansione orizzontale dello strato iniziale" +msgstr "Espansione orizzontale del layer iniziale" #: fdmprinter.def.json msgctxt "xy_offset_layer_0 description" msgid "Amount of offset applied to all polygons in the first layer. A negative value can compensate for squishing of the first layer known as \"elephant's foot\"." -msgstr "È l'entità di offset (estensione dello strato) applicata a tutti i poligoni di supporto in ciascuno strato. Un valore negativo può compensare lo schiacciamento del primo strato noto come \"zampa di elefante\"." +msgstr "È l'entità di offset (estensione del layer) applicata a tutti i poligoni di supporto in ciascun layer. Un valore negativo può compensare lo schiacciamento del primo layer noto come \"zampa di elefante\"." #: fdmprinter.def.json msgctxt "z_seam_type label" @@ -1133,7 +1093,7 @@ msgstr "Allineamento delle giunzioni a Z" #: fdmprinter.def.json msgctxt "z_seam_type description" msgid "Starting point of each path in a layer. When paths in consecutive layers start at the same point a vertical seam may show on the print. When aligning these near a user specified location, the seam is easiest to remove. When placed randomly the inaccuracies at the paths' start will be less noticeable. When taking the shortest path the print will be quicker." -msgstr "Punto di partenza di ogni percorso nell'ambito di uno strato. Quando i percorsi in strati consecutivi iniziano nello stesso punto, sulla stampa può apparire una linea di giunzione verticale. Se si allineano in prossimità di una posizione specificata dall’utente, la linea di giunzione può essere rimossa più facilmente. Se disposti in modo casuale, le imprecisioni in corrispondenza dell'inizio del percorso saranno meno evidenti. Prendendo il percorso più breve la stampa sarà più veloce." +msgstr "Punto di partenza di ogni percorso nell'ambito di un layer. Quando i percorsi in layers consecutivi iniziano nello stesso punto, sulla stampa può apparire una linea di giunzione verticale. Se si allineano in prossimità di una posizione specificata dall’utente, la linea di giunzione può essere rimossa più facilmente. Se disposti in modo casuale, le imprecisioni in corrispondenza dell'inizio del percorso saranno meno evidenti. Prendendo il percorso più breve la stampa sarà più veloce." #: fdmprinter.def.json msgctxt "z_seam_type option back" @@ -1163,7 +1123,7 @@ msgstr "Giunzione Z X" #: fdmprinter.def.json msgctxt "z_seam_x description" msgid "The X coordinate of the position near where to start printing each part in a layer." -msgstr "La coordinata X della posizione in prossimità della quale si innesca all’avvio della stampa di ciascuna parte in uno strato." +msgstr "La coordinata X della posizione in prossimità della quale si innesca all’avvio della stampa di ciascuna parte in un layer." #: fdmprinter.def.json msgctxt "z_seam_y label" @@ -1173,7 +1133,7 @@ msgstr "Giunzione Z Y" #: fdmprinter.def.json msgctxt "z_seam_y description" msgid "The Y coordinate of the position near where to start printing each part in a layer." -msgstr "La coordinata Y della posizione in prossimità della quale si innesca all’avvio della stampa di ciascuna parte in uno strato." +msgstr "La coordinata Y della posizione in prossimità della quale si innesca all’avvio della stampa di ciascuna parte in un layer." #: fdmprinter.def.json msgctxt "z_seam_corner label" @@ -1248,12 +1208,12 @@ msgstr "Ulteriore passaggio sopra la superficie superiore, senza estrusione di m #: fdmprinter.def.json msgctxt "ironing_only_highest_layer label" msgid "Iron Only Highest Layer" -msgstr "Stiramento del solo strato più elevato" +msgstr "Stiramento del solo layer più elevato" #: fdmprinter.def.json msgctxt "ironing_only_highest_layer description" msgid "Only perform ironing on the very last layer of the mesh. This saves time if the lower layers don't need a smooth surface finish." -msgstr "Effettua lo stiramento solo dell'ultimissimo strato della maglia. È possibile quindi risparmiare tempo se gli strati inferiori non richiedono una finitura con superficie liscia." +msgstr "Effettua lo stiramento solo dell'ultimissimo layer della maglia. È possibile quindi risparmiare tempo se i layers inferiori non richiedono una finitura con superficie liscia." #: fdmprinter.def.json msgctxt "ironing_pattern label" @@ -1353,7 +1313,7 @@ msgstr "Estrusore riempimento" #: fdmprinter.def.json msgctxt "infill_extruder_nr description" msgid "The extruder train used for printing infill. This is used in multi-extrusion." -msgstr "Treno estrusore utilizzato per stampare il riempimento. Si utilizza nell'estrusione multipla." +msgstr "Blocco estrusore utilizzato per stampare il riempimento. Si utilizza nell'estrusione multipla." #: fdmprinter.def.json msgctxt "infill_sparse_density label" @@ -1383,7 +1343,7 @@ msgstr "Configurazione di riempimento" #: fdmprinter.def.json msgctxt "infill_pattern description" msgid "The pattern of the infill material of the print. The line and zig zag infill swap direction on alternate layers, reducing material cost. The grid, triangle, tri-hexagon, cubic, octet, quarter cubic, cross and concentric patterns are fully printed every layer. Cubic, quarter cubic and octet infill change with every layer to provide a more equal distribution of strength over each direction." -msgstr "Configurazione del materiale di riempimento della stampa. Il riempimento a linea e a zig zag cambia direzione su strati alternati, riducendo il costo del materiale. Le configurazioni a griglia, a triangolo, tri-esagonali, cubiche, ottagonali, a quarto di cubo, incrociate e concentriche sono stampate completamente su ogni strato. Le configurazioni cubiche, a quarto di cubo e ottagonali variano per ciascuno strato per garantire una più uniforme distribuzione della forza in ogni direzione." +msgstr "Configurazione del materiale di riempimento della stampa. Il riempimento a linea e a zig zag cambia direzione su strati alternati, riducendo il costo del materiale. Le configurazioni a griglia, a triangolo, tri-esagonali, cubiche, ottagonali, a quarto di cubo, incrociate e concentriche sono stampate completamente su ogni layer. Le configurazioni cubiche, a quarto di cubo e ottagonali variano per ciascun layer per garantire una più uniforme distribuzione della forza in ogni direzione." #: fdmprinter.def.json msgctxt "infill_pattern option grid" @@ -1468,7 +1428,7 @@ msgstr "Direzioni delle linee di riempimento" #: fdmprinter.def.json msgctxt "infill_angles description" msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the traditional default angles (45 and 135 degrees for the lines and zig zag patterns and 45 degrees for all other patterns)." -msgstr "Un elenco di direzioni linee intere. Gli elementi dall’elenco sono utilizzati in sequenza con il progredire degli strati 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 i valori angolari predefiniti (45 e 135 gradi per le linee e la configurazione zig zag e 45 gradi per tutte le altre configurazioni)." +msgstr "Un elenco di direzioni linee intere. 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 i valori angolari predefiniti (45 e 135 gradi per le linee e la configurazione zig zag e 45 gradi per tutte le altre configurazioni)." #: fdmprinter.def.json msgctxt "infill_offset_x label" @@ -1477,8 +1437,8 @@ msgstr "Offset X riempimento" #: fdmprinter.def.json msgctxt "infill_offset_x description" -msgid "The infill pattern is offset this distance along the X axis." -msgstr "Il riempimento si scosta di questa distanza lungo l'asse X." +msgid "The infill pattern is moved this distance along the X axis." +msgstr "Il riempimento si sposta di questa distanza lungo l'asse X." #: fdmprinter.def.json msgctxt "infill_offset_y label" @@ -1487,8 +1447,8 @@ msgstr "Offset Y riempimento" #: fdmprinter.def.json msgctxt "infill_offset_y description" -msgid "The infill pattern is offset this distance along the Y axis." -msgstr "Il riempimento si scosta di questa distanza lungo l'asse Y." +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 "sub_div_rad_add label" @@ -1507,8 +1467,8 @@ msgstr "Percentuale di sovrapposizione del riempimento" #: fdmprinter.def.json msgctxt "infill_overlap 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." +msgid "The amount of overlap between the infill and the walls as a percentage of the infill line width. A slight overlap allows the walls to connect firmly to the infill." +msgstr "Indica la quantità di sovrapposizione tra il riempimento e le pareti come percentuale della larghezza della linea di riempimento. Una leggera sovrapposizione consente il saldo collegamento delle pareti al riempimento." #: fdmprinter.def.json msgctxt "infill_overlap_mm label" @@ -1527,8 +1487,8 @@ msgstr "Percentuale di sovrapposizione del rivestimento esterno" #: fdmprinter.def.json msgctxt "skin_overlap description" -msgid "The amount of overlap between the skin and the walls as a percentage of the line width. A slight overlap allows the walls to connect firmly to the skin. This is a percentage of the average line widths of the skin lines and the innermost wall." -msgstr "Entità della sovrapposizione tra il rivestimento e le pareti espressa in percentuale della larghezza della linea. Una leggera sovrapposizione consente alle pareti di essere saldamente collegate al rivestimento. È una percentuale delle larghezze medie delle linee del rivestimento e della parete più interna." +msgid "The amount of overlap between the skin and the walls as a percentage of the skin line width. A slight overlap allows the walls to connect firmly to the skin. This is a percentage of the average line widths of the skin lines and the innermost wall." +msgstr "Entità della sovrapposizione tra il rivestimento e le pareti espressa in percentuale della larghezza della linea del rivestimento esterno. Una leggera sovrapposizione consente alle pareti di essere saldamente collegate al rivestimento. È una percentuale delle larghezze medie delle linee del rivestimento e della parete più interna." #: fdmprinter.def.json msgctxt "skin_overlap_mm label" @@ -1553,12 +1513,12 @@ msgstr "Indica la distanza di uno spostamento inserito dopo ogni linea di riempi #: fdmprinter.def.json msgctxt "infill_sparse_thickness label" msgid "Infill Layer Thickness" -msgstr "Spessore dello strato di riempimento" +msgstr "Spessore del layer di riempimento" #: fdmprinter.def.json msgctxt "infill_sparse_thickness description" msgid "The thickness per layer of infill material. This value should always be a multiple of the layer height and is otherwise rounded." -msgstr "Indica lo spessore per strato di materiale di riempimento. Questo valore deve sempre essere un multiplo dell’altezza dello strato e in caso contrario viene arrotondato." +msgstr "Indica lo spessore per layer di materiale di riempimento. Questo valore deve sempre essere un multiplo dell’altezza del layer e in caso contrario viene arrotondato." #: fdmprinter.def.json msgctxt "gradual_infill_steps label" @@ -1633,7 +1593,7 @@ msgstr "Larghezza massima delle aree di rivestimento inferiore che è possibile #: fdmprinter.def.json msgctxt "expand_skins_expand_distance label" msgid "Skin Expand Distance" -msgstr "Distanza prolunga rivestimento esterno" +msgstr "Distanza espansione rivestimento esterno" #: fdmprinter.def.json msgctxt "expand_skins_expand_distance description" @@ -1643,7 +1603,7 @@ msgstr "Distanza per cui i rivestimenti si estendono nel riempimento. Valori mag #: fdmprinter.def.json msgctxt "top_skin_expand_distance label" msgid "Top Skin Expand Distance" -msgstr "Distanza prolunga rivestimento superiore" +msgstr "Distanza espansione rivestimento superiore" #: fdmprinter.def.json msgctxt "top_skin_expand_distance description" @@ -1653,7 +1613,7 @@ msgstr "Distanza per cui i rivestimenti superiori si estendono nel riempimento. #: fdmprinter.def.json msgctxt "bottom_skin_expand_distance label" msgid "Bottom Skin Expand Distance" -msgstr "Distanza prolunga rivestimento inferiore" +msgstr "Distanza espansione rivestimento inferiore" #: fdmprinter.def.json msgctxt "bottom_skin_expand_distance description" @@ -1663,7 +1623,7 @@ msgstr "Distanza per cui i rivestimenti inferiori si estendono nel riempimento. #: fdmprinter.def.json msgctxt "max_skin_angle_for_expansion label" msgid "Maximum Skin Angle for Expansion" -msgstr "Angolo massimo rivestimento esterno per prolunga" +msgstr "Angolo massimo rivestimento esterno per espansione" #: fdmprinter.def.json msgctxt "max_skin_angle_for_expansion description" @@ -1673,7 +1633,7 @@ msgstr "Per le superfici inferiori e/o superiori dell’oggetto con un angolo ma #: fdmprinter.def.json msgctxt "min_skin_width_for_expansion label" msgid "Minimum Skin Width for Expansion" -msgstr "Larghezza minima rivestimento esterno per prolunga" +msgstr "Larghezza minima rivestimento esterno per espansione" #: fdmprinter.def.json msgctxt "min_skin_width_for_expansion description" @@ -1690,16 +1650,6 @@ msgctxt "material description" msgid "Material" msgstr "Materiale" -#: fdmprinter.def.json -msgctxt "material_flow_dependent_temperature label" -msgid "Auto Temperature" -msgstr "Temperatura automatica" - -#: fdmprinter.def.json -msgctxt "material_flow_dependent_temperature description" -msgid "Change the temperature for each layer automatically with the average flow speed of that layer." -msgstr "Modifica automaticamente la temperatura per ciascuno strato con la velocità media del flusso per tale strato." - #: fdmprinter.def.json msgctxt "default_material_print_temperature label" msgid "Default Printing Temperature" @@ -1723,12 +1673,12 @@ msgstr "Indica la temperatura usata per la stampa." #: fdmprinter.def.json msgctxt "material_print_temperature_layer_0 label" msgid "Printing Temperature Initial Layer" -msgstr "Temperatura di stampa Strato iniziale" +msgstr "Temperatura di stampa layer iniziale" #: fdmprinter.def.json msgctxt "material_print_temperature_layer_0 description" msgid "The temperature used for printing the first layer. Set at 0 to disable special handling of the initial layer." -msgstr "Indica la temperatura usata per la stampa del primo strato. Impostare a 0 per disabilitare la manipolazione speciale dello strato iniziale." +msgstr "Indica la temperatura usata per la stampa del primo layer. Impostare a 0 per disabilitare la manipolazione speciale del layer iniziale." #: fdmprinter.def.json msgctxt "material_initial_print_temperature label" @@ -1750,16 +1700,6 @@ msgctxt "material_final_print_temperature description" msgid "The temperature to which to already start cooling down just before the end of printing." msgstr "La temperatura alla quale può già iniziare il raffreddamento prima della fine della stampa." -#: fdmprinter.def.json -msgctxt "material_flow_temp_graph label" -msgid "Flow Temperature Graph" -msgstr "Grafico della temperatura del flusso" - -#: fdmprinter.def.json -msgctxt "material_flow_temp_graph description" -msgid "Data linking material flow (in mm3 per second) to temperature (degrees Celsius)." -msgstr "Collegamento dei dati di flusso del materiale (in mm3 al secondo) alla temperatura (in °C)." - #: fdmprinter.def.json msgctxt "material_extrusion_cool_down_speed label" msgid "Extrusion Cool Down Speed Modifier" @@ -1777,18 +1717,18 @@ msgstr "Temperatura piano di stampa" #: fdmprinter.def.json msgctxt "material_bed_temperature description" -msgid "The temperature used for the heated build plate. If this is 0, the bed will not heat up for this print." -msgstr "Indica la temperatura usata per il piano di stampa riscaldato. Se è 0, il piano non si riscalda per questa stampa." +msgid "The temperature used for the heated build plate. If this is 0, the bed temperature will not be adjusted." +msgstr "Indica la temperatura usata per il piano di stampa riscaldato. Se è 0, la temperatura del piano non si regola." #: fdmprinter.def.json msgctxt "material_bed_temperature_layer_0 label" msgid "Build Plate Temperature Initial Layer" -msgstr "Temperatura piano di stampa Strato iniziale" +msgstr "Temperatura piano di stampa Layer iniziale" #: fdmprinter.def.json msgctxt "material_bed_temperature_layer_0 description" msgid "The temperature used for the heated build plate at the first layer." -msgstr "Indica la temperatura usata per il piano di stampa riscaldato per il primo strato." +msgstr "Indica la temperatura usata per il piano di stampa riscaldato per il primo layer." #: fdmprinter.def.json msgctxt "material_diameter label" @@ -1843,12 +1783,12 @@ msgstr "Ritrae il filamento quando l'ugello si sta muovendo su un'area non stamp #: fdmprinter.def.json msgctxt "retract_at_layer_change label" msgid "Retract at Layer Change" -msgstr "Retrazione al cambio strato" +msgstr "Retrazione al cambio layer" #: fdmprinter.def.json msgctxt "retract_at_layer_change description" msgid "Retract the filament when the nozzle is moving to the next layer." -msgstr "Ritrae il filamento quando l'ugello si sta muovendo allo strato successivo. " +msgstr "Ritrae il filamento quando l'ugello si sta muovendo al layer successivo. " #: fdmprinter.def.json msgctxt "retraction_amount label" @@ -2113,12 +2053,12 @@ msgstr "Velocità alla quale viene stampata la parte inferiore del supporto. La #: fdmprinter.def.json msgctxt "speed_prime_tower label" msgid "Prime Tower Speed" -msgstr "Velocità della torre di innesco" +msgstr "Velocità della Prime Tower" #: fdmprinter.def.json msgctxt "speed_prime_tower description" msgid "The speed at which the prime tower is printed. Printing the prime tower slower can make it more stable when the adhesion between the different filaments is suboptimal." -msgstr "Indica la velocità alla quale è stampata la torre di innesco. La stampa della torre di innesco a una velocità inferiore può renderla maggiormente stabile quando l’adesione tra i diversi filamenti non è ottimale." +msgstr "Indica la velocità alla quale è stampata la Prime Tower. La stampa della Prime Tower a una velocità inferiore può renderla maggiormente stabile quando l’adesione tra i diversi filamenti non è ottimale." #: fdmprinter.def.json msgctxt "speed_travel label" @@ -2133,32 +2073,32 @@ msgstr "Indica la velocità alla quale vengono effettuati gli spostamenti." #: fdmprinter.def.json msgctxt "speed_layer_0 label" msgid "Initial Layer Speed" -msgstr "Velocità di stampa dello strato iniziale" +msgstr "Velocità di stampa del layer iniziale" #: fdmprinter.def.json msgctxt "speed_layer_0 description" msgid "The speed for the initial layer. A lower value is advised to improve adhesion to the build plate." -msgstr "Indica la velocità per lo strato iniziale. Un valore inferiore è consigliabile per migliorare l’adesione al piano di stampa." +msgstr "Indica la velocità per il layer iniziale. Un valore inferiore è consigliabile per migliorare l’adesione al piano di stampa." #: fdmprinter.def.json msgctxt "speed_print_layer_0 label" msgid "Initial Layer Print Speed" -msgstr "Velocità di stampa strato iniziale" +msgstr "Velocità di stampa layer iniziale" #: fdmprinter.def.json msgctxt "speed_print_layer_0 description" msgid "The speed of printing for the initial layer. A lower value is advised to improve adhesion to the build plate." -msgstr "Indica la velocità di stampa per lo strato iniziale. Un valore inferiore è consigliabile per migliorare l’adesione al piano di stampa." +msgstr "Indica la velocità di stampa per il layer iniziale. Un valore inferiore è consigliabile per migliorare l’adesione al piano di stampa." #: fdmprinter.def.json msgctxt "speed_travel_layer_0 label" msgid "Initial Layer Travel Speed" -msgstr "Velocità di spostamento dello strato iniziale" +msgstr "Velocità di spostamento del layer iniziale" #: fdmprinter.def.json msgctxt "speed_travel_layer_0 description" msgid "The speed of travel moves in the initial layer. A lower value is advised to prevent pulling previously printed parts away from the build plate. The value of this setting can automatically be calculated from the ratio between the Travel Speed and the Print Speed." -msgstr "Indica la velocità di spostamento per lo strato iniziale. Un valore inferiore è consigliabile per evitare di rimuovere le parti precedentemente stampate dal piano di stampa. Il valore di questa impostazione può essere calcolato automaticamente dal rapporto tra la velocità di spostamento e la velocità di stampa." +msgstr "Indica la velocità di spostamento del layer iniziale. Un valore inferiore è consigliabile per evitare di rimuovere le parti precedentemente stampate dal piano di stampa. Il valore di questa impostazione può essere calcolato automaticamente dal rapporto tra la velocità di spostamento e la velocità di stampa." #: fdmprinter.def.json msgctxt "skirt_brim_speed label" @@ -2183,12 +2123,12 @@ msgstr "Indica la velocità massima di spostamento del piano di stampa. L’impo #: fdmprinter.def.json msgctxt "speed_slowdown_layers label" msgid "Number of Slower Layers" -msgstr "Numero di strati stampati a velocità inferiore" +msgstr "Numero di layers stampati a velocità inferiore" #: fdmprinter.def.json msgctxt "speed_slowdown_layers description" msgid "The first few layers are printed slower than the rest of the model, to get better adhesion to the build plate and improve the overall success rate of prints. The speed is gradually increased over these layers." -msgstr "I primi strati vengono stampati più lentamente rispetto al resto del modello, per ottenere una migliore adesione al piano di stampa ed ottimizzare nel complesso la percentuale di successo delle stampe. La velocità aumenta gradualmente nel corso di esecuzione degli strati successivi." +msgstr "I primi layers vengono stampati più lentamente rispetto al resto del modello, per ottenere una migliore adesione al piano di stampa ed ottimizzare nel complesso la percentuale di successo delle stampe. La velocità aumenta gradualmente nel corso di esecuzione dei layers successivi." #: fdmprinter.def.json msgctxt "speed_equalize_flow_enabled label" @@ -2343,12 +2283,12 @@ msgstr "Accelerazione alla quale vengono stampate le parti inferiori del support #: fdmprinter.def.json msgctxt "acceleration_prime_tower label" msgid "Prime Tower Acceleration" -msgstr "Accelerazione della torre di innesco" +msgstr "Accelerazione della Prime Tower" #: fdmprinter.def.json msgctxt "acceleration_prime_tower description" msgid "The acceleration with which the prime tower is printed." -msgstr "Indica l’accelerazione con cui viene stampata la torre di innesco." +msgstr "Indica l’accelerazione con cui viene stampata la Prime Tower." #: fdmprinter.def.json msgctxt "acceleration_travel label" @@ -2363,32 +2303,32 @@ msgstr "Indica l’accelerazione alla quale vengono effettuati gli spostamenti." #: fdmprinter.def.json msgctxt "acceleration_layer_0 label" msgid "Initial Layer Acceleration" -msgstr "Accelerazione dello strato iniziale" +msgstr "Accelerazione del layer iniziale" #: fdmprinter.def.json msgctxt "acceleration_layer_0 description" msgid "The acceleration for the initial layer." -msgstr "Indica l’accelerazione dello strato iniziale." +msgstr "Indica l’accelerazione del layer iniziale." #: fdmprinter.def.json msgctxt "acceleration_print_layer_0 label" msgid "Initial Layer Print Acceleration" -msgstr "Accelerazione di stampa strato iniziale" +msgstr "Accelerazione di stampa layer iniziale" #: fdmprinter.def.json msgctxt "acceleration_print_layer_0 description" msgid "The acceleration during the printing of the initial layer." -msgstr "Indica l’accelerazione durante la stampa dello strato iniziale." +msgstr "Indica l’accelerazione durante la stampa del layer iniziale." #: fdmprinter.def.json msgctxt "acceleration_travel_layer_0 label" msgid "Initial Layer Travel Acceleration" -msgstr "Accelerazione spostamenti dello strato iniziale" +msgstr "Accelerazione spostamenti del layer iniziale" #: fdmprinter.def.json msgctxt "acceleration_travel_layer_0 description" msgid "The acceleration for travel moves in the initial layer." -msgstr "Indica l’accelerazione degli spostamenti dello strato iniziale." +msgstr "Indica l’accelerazione degli spostamenti del layer iniziale." #: fdmprinter.def.json msgctxt "acceleration_skirt_brim label" @@ -2398,7 +2338,7 @@ msgstr "Accelerazione skirt/brim" #: fdmprinter.def.json msgctxt "acceleration_skirt_brim description" msgid "The acceleration with which the skirt and brim are printed. Normally this is done with the initial layer acceleration, but sometimes you might want to print the skirt or brim at a different acceleration." -msgstr "Indica l’accelerazione alla quale sono stampati lo skirt ed il brim. Normalmente questa operazione viene svolta all’accelerazione dello strato iniziale, ma a volte è possibile che si desideri stampare lo skirt o il brim ad un’accelerazione diversa." +msgstr "Indica l’accelerazione alla quale sono stampati lo skirt ed il brim. Normalmente questa operazione viene svolta all’accelerazione del layer iniziale, ma a volte è possibile che si desideri stampare lo skirt o il brim ad un’accelerazione diversa." #: fdmprinter.def.json msgctxt "jerk_enabled label" @@ -2408,7 +2348,7 @@ msgstr "Abilita controllo jerk" #: fdmprinter.def.json msgctxt "jerk_enabled description" msgid "Enables adjusting the jerk of print head when the velocity in the X or Y axis changes. Increasing the jerk can reduce printing time at the cost of print quality." -msgstr "Abilita la regolazione del jerk della testina di stampa quando la velocità nell’asse X o Y cambia. Aumentando il jerk il tempo di stampa si riduce a discapito della qualità di stampa." +msgstr "Abilita la regolazione del jerk della testa di stampa quando la velocità nell’asse X o Y cambia. Aumentando il jerk il tempo di stampa si riduce a discapito della qualità di stampa." #: fdmprinter.def.json msgctxt "jerk_print label" @@ -2418,7 +2358,7 @@ msgstr "Jerk stampa" #: fdmprinter.def.json msgctxt "jerk_print description" msgid "The maximum instantaneous velocity change of the print head." -msgstr "Indica il cambio della velocità istantanea massima della testina di stampa." +msgstr "Indica il cambio della velocità istantanea massima della testa di stampa." #: fdmprinter.def.json msgctxt "jerk_infill label" @@ -2468,7 +2408,7 @@ msgstr "Jerk del rivestimento superficie superiore" #: fdmprinter.def.json msgctxt "jerk_roofing description" msgid "The maximum instantaneous velocity change with which top surface skin layers are printed." -msgstr "Indica la variazione di velocità istantanea massima con cui vengono stampati gli strati rivestimento superficie superiore." +msgstr "Indica la variazione di velocità istantanea massima con cui vengono stampati i layers rivestimento superficie superiore." #: fdmprinter.def.json msgctxt "jerk_topbottom label" @@ -2478,7 +2418,7 @@ msgstr "Jerk strato superiore/inferiore" #: fdmprinter.def.json msgctxt "jerk_topbottom description" msgid "The maximum instantaneous velocity change with which top/bottom layers are printed." -msgstr "Indica il cambio della velocità istantanea massima con cui vengono stampati gli strati superiore/inferiore." +msgstr "Indica il cambio della velocità istantanea massima con cui vengono stampati i layers superiore/inferiore." #: fdmprinter.def.json msgctxt "jerk_support label" @@ -2533,12 +2473,12 @@ msgstr "Indica la variazione della velocità istantanea massima con cui vengono #: fdmprinter.def.json msgctxt "jerk_prime_tower label" msgid "Prime Tower Jerk" -msgstr "Jerk della torre di innesco" +msgstr "Jerk della Prime Tower" #: fdmprinter.def.json msgctxt "jerk_prime_tower description" msgid "The maximum instantaneous velocity change with which the prime tower is printed." -msgstr "Indica il cambio della velocità istantanea massima con cui viene stampata la torre di innesco del supporto." +msgstr "Indica il cambio della velocità istantanea massima con cui viene stampata la Prime Tower del supporto." #: fdmprinter.def.json msgctxt "jerk_travel label" @@ -2553,32 +2493,32 @@ msgstr "Indica il cambio della velocità istantanea massima con cui vengono effe #: fdmprinter.def.json msgctxt "jerk_layer_0 label" msgid "Initial Layer Jerk" -msgstr "Jerk dello strato iniziale" +msgstr "Jerk del layer iniziale" #: fdmprinter.def.json msgctxt "jerk_layer_0 description" msgid "The print maximum instantaneous velocity change for the initial layer." -msgstr "Indica il cambio della velocità istantanea massima dello strato iniziale." +msgstr "Indica il cambio della velocità istantanea massima del layer iniziale." #: fdmprinter.def.json msgctxt "jerk_print_layer_0 label" msgid "Initial Layer Print Jerk" -msgstr "Jerk di stampa strato iniziale" +msgstr "Jerk di stampa layer iniziale" #: fdmprinter.def.json msgctxt "jerk_print_layer_0 description" msgid "The maximum instantaneous velocity change during the printing of the initial layer." -msgstr "Indica il cambio della velocità istantanea massima durante la stampa dello strato iniziale." +msgstr "Indica il cambio della velocità istantanea massima durante la stampa del layer iniziale." #: fdmprinter.def.json msgctxt "jerk_travel_layer_0 label" msgid "Initial Layer Travel Jerk" -msgstr "Jerk spostamenti dello strato iniziale" +msgstr "Jerk spostamenti del layer iniziale" #: fdmprinter.def.json msgctxt "jerk_travel_layer_0 description" msgid "The acceleration for travel moves in the initial layer." -msgstr "Indica l’accelerazione degli spostamenti dello strato iniziale." +msgstr "Indica l’accelerazione degli spostamenti del layer iniziale." #: fdmprinter.def.json msgctxt "jerk_skirt_brim label" @@ -2658,22 +2598,22 @@ msgstr "La distanza tra l’ugello e le parti già stampate quando si effettua l #: fdmprinter.def.json msgctxt "start_layers_at_same_position label" msgid "Start Layers with the Same Part" -msgstr "Avvio strati con la stessa parte" +msgstr "Avvio layers 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." +msgstr "In ciascun layer inizia la stampa dell’oggetto vicino allo stesso punto, in modo che non si inizi un nuovo layer con la stampa del pezzo con cui è terminato il layer 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" -msgstr "Avvio strato X" +msgstr "Avvio layer X" #: fdmprinter.def.json msgctxt "layer_start_x description" msgid "The X coordinate of the position near where to find the part to start printing each layer." -msgstr "La coordinata X della posizione in prossimità della quale si trova la parte per avviare la stampa di ciascuno strato." +msgstr "La coordinata X della posizione in prossimità della quale si trova la parte per avviare la stampa di ciascun layer." #: fdmprinter.def.json msgctxt "layer_start_y label" @@ -2683,7 +2623,7 @@ msgstr "Avvio strato Y" #: fdmprinter.def.json msgctxt "layer_start_y description" msgid "The Y coordinate of the position near where to find the part to start printing each layer." -msgstr "La coordinata Y della posizione in prossimità della quale si trova la parte per avviare la stampa di ciascuno strato." +msgstr "La coordinata Y della posizione in prossimità della quale si trova la parte per avviare la stampa di ciascun layer." #: fdmprinter.def.json msgctxt "retraction_hop_enabled label" @@ -2743,7 +2683,7 @@ msgstr "Abilitazione raffreddamento stampa" #: fdmprinter.def.json msgctxt "cool_fan_enabled description" msgid "Enables the print cooling fans while printing. The fans improve print quality on layers with short layer times and bridging / overhangs." -msgstr "Abilita le ventole di raffreddamento durante la stampa. Le ventole migliorano la qualità di stampa sugli strati con tempi per strato più brevi e ponti/sbalzi." +msgstr "Abilita le ventole di raffreddamento durante la stampa. Le ventole migliorano la qualità di stampa sui layers con tempi per layer più brevi e ponti/sbalzi." #: fdmprinter.def.json msgctxt "cool_fan_speed label" @@ -2763,7 +2703,7 @@ msgstr "Velocità regolare della ventola" #: fdmprinter.def.json 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 "Indica la velocità alla quale ruotano le ventole prima di raggiungere la soglia. Quando uno strato viene stampato a una velocità superiore alla soglia, la velocità della ventola tende gradualmente verso la velocità massima della ventola." +msgstr "Indica la velocità alla quale ruotano le ventole prima di raggiungere la soglia. Quando un layer viene stampato a una velocità superiore alla soglia, la velocità della ventola tende gradualmente verso la velocità massima della ventola." #: fdmprinter.def.json msgctxt "cool_fan_speed_max label" @@ -2773,7 +2713,7 @@ msgstr "Velocità massima della ventola" #: fdmprinter.def.json msgctxt "cool_fan_speed_max description" msgid "The speed at which the fans spin on the minimum layer time. The fan speed gradually increases between the regular fan speed and maximum fan speed when the threshold is hit." -msgstr "Indica la velocità di rotazione della ventola al tempo minimo per strato. La velocità della ventola aumenta gradualmente tra la velocità regolare della ventola e la velocità massima della ventola quando viene raggiunta la soglia." +msgstr "Indica la velocità di rotazione della ventola al tempo minimo per layer. La velocità della ventola aumenta gradualmente tra la velocità regolare della ventola e la velocità massima della ventola quando viene raggiunta la soglia." #: fdmprinter.def.json msgctxt "cool_min_layer_time_fan_speed_max label" @@ -2783,7 +2723,7 @@ msgstr "Soglia velocità regolare/massima della ventola" #: fdmprinter.def.json msgctxt "cool_min_layer_time_fan_speed_max description" msgid "The layer time which sets the threshold between regular fan speed and maximum fan speed. Layers that print slower than this time use regular fan speed. For faster layers the fan speed gradually increases towards the maximum fan speed." -msgstr "Indica il tempo per strato che definisce la soglia tra la velocità regolare e quella massima della ventola. Gli strati che vengono stampati a una velocità inferiore a questo valore utilizzano una velocità regolare della ventola. Per gli strati stampati più velocemente la velocità della ventola aumenta gradualmente verso la velocità massima della ventola." +msgstr "Indica il tempo per layer che definisce la soglia tra la velocità regolare e quella massima della ventola. Gli strati che vengono stampati a una velocità inferiore a questo valore utilizzano una velocità regolare della ventola. Per i layers stampati più velocemente la velocità della ventola aumenta gradualmente verso la velocità massima della ventola." #: fdmprinter.def.json msgctxt "cool_fan_speed_0 label" @@ -2793,7 +2733,7 @@ msgstr "Velocità iniziale della ventola" #: fdmprinter.def.json 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 "La velocità di rotazione della ventola all’inizio della stampa. Negli strati successivi la velocità della ventola aumenta gradualmente da zero fino allo strato corrispondente alla velocità regolare in altezza." +msgstr "La velocità di rotazione della ventola all’inizio della stampa. Nei layers successivi la velocità della ventola aumenta gradualmente da zero fino allo strato corrispondente alla velocità regolare in altezza." #: fdmprinter.def.json msgctxt "cool_fan_full_at_height label" @@ -2803,27 +2743,27 @@ msgstr "Velocità regolare della ventola in altezza" #: fdmprinter.def.json msgctxt "cool_fan_full_at_height description" msgid "The height at which the fans spin on regular fan speed. At the layers below the fan speed gradually increases from Initial Fan Speed to Regular Fan Speed." -msgstr "Indica l’altezza alla quale la ventola ruota alla velocità regolare. Agli strati stampati a velocità inferiore la velocità della ventola aumenta gradualmente dalla velocità iniziale a quella regolare." +msgstr "Indica l’altezza alla quale la ventola ruota alla velocità regolare. ai layers stampati a velocità inferiore la velocità della ventola aumenta gradualmente dalla velocità iniziale a quella regolare." #: fdmprinter.def.json msgctxt "cool_fan_full_layer label" msgid "Regular Fan Speed at Layer" -msgstr "Velocità regolare della ventola in corrispondenza dello strato" +msgstr "Velocità regolare della ventola in corrispondenza del layer" #: fdmprinter.def.json msgctxt "cool_fan_full_layer description" msgid "The layer at which the fans spin on regular fan speed. If regular fan speed at height is set, this value is calculated and rounded to a whole number." -msgstr "Indica lo strato in corrispondenza del quale la ventola ruota alla velocità regolare. Se è impostata la velocità regolare in altezza, questo valore viene calcolato e arrotondato a un numero intero." +msgstr "Indica il layer in corrispondenza del quale la ventola ruota alla velocità regolare. Se è impostata la velocità regolare in altezza, questo valore viene calcolato e arrotondato a un numero intero." #: fdmprinter.def.json msgctxt "cool_min_layer_time label" msgid "Minimum Layer Time" -msgstr "Tempo minimo per strato" +msgstr "Tempo minimo per layer" #: fdmprinter.def.json msgctxt "cool_min_layer_time description" msgid "The minimum time spent in a layer. This forces the printer to slow down, to at least spend the time set here in one layer. This allows the printed material to cool down properly before printing the next layer. Layers may still take shorter than the minimal layer time if Lift Head is disabled and if the Minimum Speed would otherwise be violated." -msgstr "Indica il tempo minimo dedicato a uno strato. Questo forza la stampante a rallentare, per impiegare almeno il tempo impostato qui per uno strato. Questo consente il corretto raffreddamento del materiale stampato prima di procedere alla stampa dello strato successivo. La stampa degli strati potrebbe richiedere un tempo inferiore al minimo se la funzione Sollevamento della testina è disabilitata e se la velocità minima non viene rispettata." +msgstr "Indica il tempo minimo dedicato a un layer. Questo forza la stampante a rallentare, per impiegare almeno il tempo impostato qui per un layer. Questo consente il corretto raffreddamento del materiale stampato prima di procedere alla stampa del layer successivo. La stampa dei layers potrebbe richiedere un tempo inferiore al minimo se la funzione Sollevamento della testina è disabilitata e se la velocità minima non viene rispettata." #: fdmprinter.def.json msgctxt "cool_min_speed label" @@ -2833,7 +2773,7 @@ msgstr "Velocità minima" #: fdmprinter.def.json msgctxt "cool_min_speed description" msgid "The minimum print speed, despite slowing down due to the minimum layer time. When the printer would slow down too much, the pressure in the nozzle would be too low and result in bad print quality." -msgstr "Indica la velocità minima di stampa, a prescindere dal rallentamento per il tempo minimo per strato. Quando la stampante rallenta eccessivamente, la pressione nell’ugello risulta insufficiente con conseguente scarsa qualità di stampa." +msgstr "Indica la velocità minima di stampa, a prescindere dal rallentamento per il tempo minimo per layer. Quando la stampante rallenta eccessivamente, la pressione nell’ugello risulta insufficiente con conseguente scarsa qualità di stampa." #: fdmprinter.def.json msgctxt "cool_lift_head label" @@ -2843,7 +2783,7 @@ msgstr "Sollevamento della testina" #: fdmprinter.def.json msgctxt "cool_lift_head description" msgid "When the minimum speed is hit because of minimum layer time, lift the head away from the print and wait the extra time until the minimum layer time is reached." -msgstr "Quando viene raggiunta la velocità minima per il tempo minimo per strato, sollevare la testina dalla stampa e attendere il tempo supplementare fino al raggiungimento del valore per tempo minimo per strato." +msgstr "Quando viene raggiunta la velocità minima per il tempo minimo per layer, sollevare la testina dalla stampa e attendere il tempo supplementare fino al raggiungimento del valore per tempo minimo per layer." #: fdmprinter.def.json msgctxt "support label" @@ -2873,7 +2813,7 @@ msgstr "Estrusore del supporto" #: fdmprinter.def.json msgctxt "support_extruder_nr description" msgid "The extruder train to use for printing the support. This is used in multi-extrusion." -msgstr "Il treno estrusore utilizzato per la stampa del supporto. Utilizzato nell’estrusione multipla." +msgstr "Il blocco estrusore utilizzato per la stampa del supporto. Utilizzato nell’estrusione multipla." #: fdmprinter.def.json msgctxt "support_infill_extruder_nr label" @@ -2883,17 +2823,17 @@ msgstr "Estrusore riempimento del supporto" #: fdmprinter.def.json msgctxt "support_infill_extruder_nr description" msgid "The extruder train to use for printing the infill of the support. This is used in multi-extrusion." -msgstr "Il treno estrusore utilizzato per la stampa del riempimento del supporto. Utilizzato nell’estrusione multipla." +msgstr "Il blocco estrusore utilizzato per la stampa del riempimento del supporto. Utilizzato nell’estrusione multipla." #: fdmprinter.def.json msgctxt "support_extruder_nr_layer_0 label" msgid "First Layer Support Extruder" -msgstr "Estrusore del supporto primo strato" +msgstr "Estrusore del supporto primo layer" #: fdmprinter.def.json msgctxt "support_extruder_nr_layer_0 description" msgid "The extruder train to use for printing the first layer of support infill. This is used in multi-extrusion." -msgstr "Il treno estrusore utilizzato per la stampa del primo strato del riempimento del supporto. Utilizzato nell’estrusione multipla." +msgstr "Il blocco estrusore utilizzato per la stampa del primo layer del riempimento del supporto. Utilizzato nell’estrusione multipla." #: fdmprinter.def.json msgctxt "support_interface_extruder_nr label" @@ -2903,7 +2843,7 @@ msgstr "Estrusore interfaccia del supporto" #: fdmprinter.def.json msgctxt "support_interface_extruder_nr description" msgid "The extruder train to use for printing the roofs and floors of the support. This is used in multi-extrusion." -msgstr "Treno estrusore utilizzato per la stampa delle parti superiori e inferiori del supporto. Utilizzato nell’estrusione multipla." +msgstr "Blocco estrusore utilizzato per la stampa delle parti superiori e inferiori del supporto. Utilizzato nell’estrusione multipla." #: fdmprinter.def.json msgctxt "support_roof_extruder_nr label" @@ -2913,7 +2853,7 @@ msgstr "Estrusore parte superiore del supporto" #: fdmprinter.def.json msgctxt "support_roof_extruder_nr description" msgid "The extruder train to use for printing the roofs of the support. This is used in multi-extrusion." -msgstr "Treno estrusore utilizzato per la stampa delle parti superiori del supporto. Utilizzato nell’estrusione multipla." +msgstr "Blocco estrusore utilizzato per la stampa delle parti superiori del supporto. Utilizzato nell’estrusione multipla." #: fdmprinter.def.json msgctxt "support_bottom_extruder_nr label" @@ -2923,7 +2863,7 @@ msgstr "Estrusore parte inferiore del supporto" #: fdmprinter.def.json msgctxt "support_bottom_extruder_nr description" msgid "The extruder train to use for printing the floors of the support. This is used in multi-extrusion." -msgstr "Treno estrusore utilizzato per la stampa delle parti inferiori del supporto. Utilizzato nell’estrusione multipla." +msgstr "Blocco estrusore utilizzato per la stampa delle parti inferiori del supporto. Utilizzato nell’estrusione multipla." #: fdmprinter.def.json msgctxt "support_type label" @@ -3143,12 +3083,12 @@ msgstr "È l'entità di offset (estensione dello strato) applicato a tutti i pol #: fdmprinter.def.json msgctxt "support_infill_sparse_thickness label" msgid "Support Infill Layer Thickness" -msgstr "Spessore dello strato di riempimento di supporto" +msgstr "Spessore dello layer di riempimento di supporto" #: fdmprinter.def.json msgctxt "support_infill_sparse_thickness description" msgid "The thickness per layer of support infill material. This value should always be a multiple of the layer height and is otherwise rounded." -msgstr "Indica lo spessore per strato del materiale di riempimento del supporto. Questo valore deve sempre essere un multiplo dell’altezza dello strato e in caso contrario viene arrotondato." +msgstr "Indica lo spessore per layer del materiale di riempimento del supporto. Questo valore deve sempre essere un multiplo dell’altezza del layer e in caso contrario viene arrotondato." #: fdmprinter.def.json msgctxt "gradual_support_infill_steps label" @@ -3228,7 +3168,7 @@ msgstr "Spessore parte inferiore del supporto" #: fdmprinter.def.json msgctxt "support_bottom_height description" msgid "The thickness of the support floors. This controls the number of dense layers that are printed on top of places of a model on which support rests." -msgstr "Indica lo spessore delle parti inferiori del supporto. Questo controlla il numero di strati fitti stampati sulla sommità dei punti di un modello su cui appoggia un supporto." +msgstr "Indica lo spessore delle parti inferiori del supporto. Questo controlla il numero di layers fitti stampati sulla sommità dei punti di un modello su cui appoggia un supporto." #: fdmprinter.def.json msgctxt "support_interface_skip_height label" @@ -3450,6 +3390,16 @@ msgctxt "support_tower_roof_angle description" msgid "The angle of a rooftop of a tower. A higher value results in pointed tower roofs, a lower value results in flattened tower roofs." msgstr "L’angolo della parte superiore di una torre. Un valore superiore genera parti superiori appuntite, un valore inferiore, parti superiori piatte." +#: fdmprinter.def.json +msgctxt "support_mesh_drop_down label" +msgid "Drop Down Support Mesh" +msgstr "Maglia supporto di discesa" + +#: fdmprinter.def.json +msgctxt "support_mesh_drop_down description" +msgid "Make support everywhere below the support mesh, so that there's no overhang in the support mesh." +msgstr "Genera supporti ovunque sotto la maglia di supporto, in modo che in questa non vi siano punti a sbalzo." + #: fdmprinter.def.json msgctxt "platform_adhesion label" msgid "Build Plate Adhesion" @@ -3528,7 +3478,7 @@ msgstr "Estrusore adesione piano di stampa" #: fdmprinter.def.json msgctxt "adhesion_extruder_nr description" msgid "The extruder train to use for printing the skirt/brim/raft. This is used in multi-extrusion." -msgstr "Il treno estrusore utilizzato per la stampa dello skirt/brim/raft. Utilizzato nell’estrusione multipla." +msgstr "Il blocco estrusore utilizzato per la stampa dello skirt/brim/raft. Utilizzato nell’estrusione multipla." #: fdmprinter.def.json msgctxt "skirt_line_count label" @@ -3620,37 +3570,37 @@ msgstr "Traferro del raft" #: fdmprinter.def.json msgctxt "raft_airgap description" msgid "The gap between the final raft layer and the first layer of the model. Only the first layer is raised by this amount to lower the bonding between the raft layer and the model. Makes it easier to peel off the raft." -msgstr "È l'interstizio tra lo strato di raft finale ed il primo strato del modello. Solo il primo strato viene sollevato di questo valore per ridurre l'adesione fra lo strato di raft e il modello. Ciò rende più facile rimuovere il raft." +msgstr "È l'interstizio tra il layer del raft finale ed il primo layer del modello. Solo il primo layer viene sollevato di questo valore per ridurre l'adesione fra lo strato di raft e il modello. Ciò rende più facile rimuovere il raft." #: fdmprinter.def.json msgctxt "layer_0_z_overlap label" msgid "Initial Layer Z Overlap" -msgstr "Z Sovrapposizione Primo Strato" +msgstr "Z Sovrapposizione Primo Layer" #: fdmprinter.def.json msgctxt "layer_0_z_overlap description" msgid "Make the first and second layer of the model overlap in the Z direction to compensate for the filament lost in the airgap. All models above the first model layer will be shifted down by this amount." -msgstr "Effettua il primo e secondo strato di sovrapposizione modello nella direzione Z per compensare il filamento perso nel traferro. Tutti i modelli sopra il primo strato del modello saranno spostati verso il basso di questa quantità." +msgstr "Effettua il primo e secondo layer di sovrapposizione modello nella direzione Z per compensare il filamento perso nel vuoto. Tutti i modelli sopra il primo layer del modello saranno spostati verso il basso di questa quantità." #: fdmprinter.def.json msgctxt "raft_surface_layers label" msgid "Raft Top Layers" -msgstr "Strati superiori del raft" +msgstr "Layers superiori del raft" #: fdmprinter.def.json msgctxt "raft_surface_layers description" msgid "The number of top layers on top of the 2nd raft layer. These are fully filled layers that the model sits on. 2 layers result in a smoother top surface than 1." -msgstr "Numero di strati sulla parte superiore del secondo strato del raft. Si tratta di strati completamente riempiti su cui poggia il modello. 2 strati danno come risultato una superficie superiore più levigata rispetto ad 1 solo strato." +msgstr "Numero di layers sulla parte superiore del secondo layer del raft. Si tratta di layers completamente riempiti su cui poggia il modello. 2 layers danno come risultato una superficie superiore più levigata rispetto ad 1 solo layer." #: fdmprinter.def.json msgctxt "raft_surface_thickness label" msgid "Raft Top Layer Thickness" -msgstr "Spessore dello strato superiore del raft" +msgstr "Spessore del layer superiore del raft" #: fdmprinter.def.json msgctxt "raft_surface_thickness description" msgid "Layer thickness of the top raft layers." -msgstr "È lo spessore degli strati superiori del raft." +msgstr "È lo spessore dei layers superiori del raft." #: fdmprinter.def.json msgctxt "raft_surface_line_width label" @@ -3675,17 +3625,17 @@ msgstr "Indica la distanza tra le linee che costituiscono la maglia superiore de #: fdmprinter.def.json msgctxt "raft_interface_thickness label" msgid "Raft Middle Thickness" -msgstr "Spessore dello strato intermedio del raft" +msgstr "Spessore del layer intermedio del raft" #: fdmprinter.def.json msgctxt "raft_interface_thickness description" msgid "Layer thickness of the middle raft layer." -msgstr "È lo spessore dello strato intermedio del raft." +msgstr "È lo spessore del layer intermedio del raft." #: fdmprinter.def.json msgctxt "raft_interface_line_width label" msgid "Raft Middle Line Width" -msgstr "Larghezza delle linee dello strato intermedio del raft" +msgstr "Larghezza delle linee del layer intermedio del raft" #: fdmprinter.def.json msgctxt "raft_interface_line_width description" @@ -3695,12 +3645,12 @@ msgstr "Indica la larghezza delle linee dello strato intermedio del raft. Una ma #: fdmprinter.def.json msgctxt "raft_interface_line_spacing label" msgid "Raft Middle Spacing" -msgstr "Spaziatura dello strato intermedio del raft" +msgstr "Spaziatura del layer intermedio del raft" #: fdmprinter.def.json msgctxt "raft_interface_line_spacing description" msgid "The distance between the raft lines for the middle raft layer. The spacing of the middle should be quite wide, while being dense enough to support the top raft layers." -msgstr "Indica la distanza fra le linee dello strato intermedio del raft. La spaziatura dello strato intermedio deve essere abbastanza ampia, ma al tempo stesso sufficientemente fitta da sostenere gli strati superiori del raft." +msgstr "Indica la distanza fra le linee del layer intermedio del raft. La spaziatura del layer intermedio deve essere abbastanza ampia, ma al tempo stesso sufficientemente fitta da sostenere i layers superiori del raft." #: fdmprinter.def.json msgctxt "raft_base_thickness label" @@ -3710,17 +3660,17 @@ msgstr "Spessore della base del raft" #: fdmprinter.def.json msgctxt "raft_base_thickness description" msgid "Layer thickness of the base raft layer. This should be a thick layer which sticks firmly to the printer build plate." -msgstr "Indica lo spessore dello strato di base del raft. Questo strato deve essere spesso per aderire saldamente al piano di stampa." +msgstr "Indica lo spessore del layer di base del raft. Questo layer deve essere spesso per aderire saldamente al piano di stampa." #: fdmprinter.def.json msgctxt "raft_base_line_width label" msgid "Raft Base Line Width" -msgstr "Larghezza delle linee dello strato di base del raft" +msgstr "Larghezza delle linee del layer di base del raft" #: fdmprinter.def.json msgctxt "raft_base_line_width description" msgid "Width of the lines in the base raft layer. These should be thick lines to assist in build plate adhesion." -msgstr "Indica la larghezza delle linee dello strato di base del raft. Le linee di questo strato devono essere spesse per favorire l'adesione al piano di stampa." +msgstr "Indica la larghezza delle linee del layer di base del raft. Le linee di questo layer devono essere spesse per favorire l'adesione al piano di stampa." #: fdmprinter.def.json msgctxt "raft_base_line_spacing label" @@ -3730,7 +3680,7 @@ msgstr "Spaziatura delle linee del raft" #: fdmprinter.def.json msgctxt "raft_base_line_spacing description" msgid "The distance between the raft lines for the base raft layer. Wide spacing makes for easy removal of the raft from the build plate." -msgstr "Indica la distanza tra le linee che costituiscono lo strato di base del raft. Un'ampia spaziatura favorisce la rimozione del raft dal piano di stampa." +msgstr "Indica la distanza tra le linee che costituiscono il layer di base del raft. Un'ampia spaziatura favorisce la rimozione del raft dal piano di stampa." #: fdmprinter.def.json msgctxt "raft_speed label" @@ -3750,7 +3700,7 @@ msgstr "Velocità di stampa parte superiore del raft" #: fdmprinter.def.json msgctxt "raft_surface_speed description" msgid "The speed at which the top raft layers are printed. These should be printed a bit slower, so that the nozzle can slowly smooth out adjacent surface lines." -msgstr "Indica la velocità alla quale sono stampati gli strati superiori del raft. La stampa di questi strati deve avvenire un po' più lentamente, in modo da consentire all'ugello di levigare lentamente le linee superficiali adiacenti." +msgstr "Indica la velocità alla quale sono stampati i layers superiori del raft. La stampa di questi layers deve avvenire un po' più lentamente, in modo da consentire all'ugello di levigare lentamente le linee superficiali adiacenti." #: fdmprinter.def.json msgctxt "raft_interface_speed label" @@ -3760,7 +3710,7 @@ msgstr "Velocità di stampa raft intermedio" #: fdmprinter.def.json msgctxt "raft_interface_speed description" msgid "The speed at which the middle raft layer is printed. This should be printed quite slowly, as the volume of material coming out of the nozzle is quite high." -msgstr "Indica la velocità alla quale viene stampato lo strato intermedio del raft. La sua stampa deve avvenire molto lentamente, considerato che il volume di materiale che fuoriesce dall'ugello è piuttosto elevato." +msgstr "Indica la velocità alla quale viene stampato il layer intermedio del raft. La sua stampa deve avvenire molto lentamente, considerato che il volume di materiale che fuoriesce dall'ugello è piuttosto elevato." #: fdmprinter.def.json msgctxt "raft_base_speed label" @@ -3790,7 +3740,7 @@ msgstr "Accelerazione di stampa parte superiore del raft" #: fdmprinter.def.json msgctxt "raft_surface_acceleration description" msgid "The acceleration with which the top raft layers are printed." -msgstr "Indica l’accelerazione alla quale vengono stampati gli strati superiori del raft." +msgstr "Indica l’accelerazione alla quale vengono stampati i layers superiori del raft." #: fdmprinter.def.json msgctxt "raft_interface_acceleration label" @@ -3800,7 +3750,7 @@ msgstr "Accelerazione di stampa raft intermedio" #: fdmprinter.def.json msgctxt "raft_interface_acceleration description" msgid "The acceleration with which the middle raft layer is printed." -msgstr "Indica l’accelerazione con cui viene stampato lo strato intermedio del raft." +msgstr "Indica l’accelerazione con cui viene stampato il layer intermedio del raft." #: fdmprinter.def.json msgctxt "raft_base_acceleration label" @@ -3810,7 +3760,7 @@ msgstr "Accelerazione di stampa della base del raft" #: fdmprinter.def.json msgctxt "raft_base_acceleration description" msgid "The acceleration with which the base raft layer is printed." -msgstr "Indica l’accelerazione con cui viene stampato lo strato di base del raft." +msgstr "Indica l’accelerazione con cui viene stampato il layer di base del raft." #: fdmprinter.def.json msgctxt "raft_jerk label" @@ -3830,7 +3780,7 @@ msgstr "Jerk di stampa parte superiore del raft" #: fdmprinter.def.json msgctxt "raft_surface_jerk description" msgid "The jerk with which the top raft layers are printed." -msgstr "Indica il jerk al quale vengono stampati gli strati superiori del raft." +msgstr "Indica il jerk al quale vengono stampati i layers superiori del raft." #: fdmprinter.def.json msgctxt "raft_interface_jerk label" @@ -3840,7 +3790,7 @@ msgstr "Jerk di stampa raft intermedio" #: fdmprinter.def.json msgctxt "raft_interface_jerk description" msgid "The jerk with which the middle raft layer is printed." -msgstr "Indica il jerk con cui viene stampato lo strato intermedio del raft." +msgstr "Indica il jerk con cui viene stampato il layer intermedio del raft." #: fdmprinter.def.json msgctxt "raft_base_jerk label" @@ -3850,7 +3800,7 @@ msgstr "Jerk di stampa della base del raft" #: fdmprinter.def.json msgctxt "raft_base_jerk description" msgid "The jerk with which the base raft layer is printed." -msgstr "Indica il jerk con cui viene stampato lo strato di base del raft." +msgstr "Indica il jerk con cui viene stampato il layer di base del raft." #: fdmprinter.def.json msgctxt "raft_fan_speed label" @@ -3870,7 +3820,7 @@ msgstr "Velocità della ventola per la parte superiore del raft" #: fdmprinter.def.json msgctxt "raft_surface_fan_speed description" msgid "The fan speed for the top raft layers." -msgstr "Indica la velocità di rotazione della ventola per gli strati superiori del raft." +msgstr "Indica la velocità di rotazione della ventola per i layers superiori del raft." #: fdmprinter.def.json msgctxt "raft_interface_fan_speed label" @@ -3880,7 +3830,7 @@ msgstr "Velocità della ventola per il raft intermedio" #: fdmprinter.def.json msgctxt "raft_interface_fan_speed description" msgid "The fan speed for the middle raft layer." -msgstr "Indica la velocità di rotazione della ventola per gli strati intermedi del raft." +msgstr "Indica la velocità di rotazione della ventola per i layers intermedi del raft." #: fdmprinter.def.json msgctxt "raft_base_fan_speed label" @@ -3890,7 +3840,7 @@ msgstr "Velocità della ventola per la base del raft" #: fdmprinter.def.json msgctxt "raft_base_fan_speed description" msgid "The fan speed for the base raft layer." -msgstr "Indica la velocità di rotazione della ventola per lo strato di base del raft." +msgstr "Indica la velocità di rotazione della ventola per il layer di base del raft." #: fdmprinter.def.json msgctxt "dual label" @@ -3905,7 +3855,7 @@ msgstr "Indica le impostazioni utilizzate per la stampa con estrusori multipli." #: fdmprinter.def.json msgctxt "prime_tower_enable label" msgid "Enable Prime Tower" -msgstr "Abilitazione torre di innesco" +msgstr "Abilitazione Prime Tower" #: fdmprinter.def.json msgctxt "prime_tower_enable description" @@ -3915,57 +3865,57 @@ msgstr "Stampa una torre accanto alla stampa che serve per innescare il material #: fdmprinter.def.json msgctxt "prime_tower_size label" msgid "Prime Tower Size" -msgstr "Dimensioni torre di innesco" +msgstr "Dimensioni Prime Tower" #: fdmprinter.def.json msgctxt "prime_tower_size description" msgid "The width of the prime tower." -msgstr "Indica la larghezza della torre di innesco." +msgstr "Indica la larghezza della Prime Tower." #: fdmprinter.def.json msgctxt "prime_tower_min_volume label" msgid "Prime Tower Minimum Volume" -msgstr "Volume minimo torre di innesco" +msgstr "Volume minimo Prime Tower" #: fdmprinter.def.json msgctxt "prime_tower_min_volume description" msgid "The minimum volume for each layer of the prime tower in order to purge enough material." -msgstr "Il volume minimo per ciascuno strato della torre di innesco per scaricare materiale a sufficienza." +msgstr "Il volume minimo per ciascun layer della Prime Tower per scaricare materiale a sufficienza." #: fdmprinter.def.json msgctxt "prime_tower_wall_thickness label" msgid "Prime Tower Thickness" -msgstr "Spessore torre di innesco" +msgstr "Spessore Prime Tower" #: fdmprinter.def.json msgctxt "prime_tower_wall_thickness description" msgid "The thickness of the hollow prime tower. A thickness larger than half the Prime Tower Minimum Volume will result in a dense prime tower." -msgstr "Lo spessore della torre di innesco cava. Uno spessore superiore alla metà del volume minimo della torre di innesco genera una torre di innesco densa." +msgstr "Lo spessore della Prime Tower cava. Uno spessore superiore alla metà del volume minimo della Prime Tower genera una torre di innesco densa." #: fdmprinter.def.json msgctxt "prime_tower_position_x label" msgid "Prime Tower X Position" -msgstr "Posizione X torre di innesco" +msgstr "Posizione X Prime Tower" #: fdmprinter.def.json msgctxt "prime_tower_position_x description" msgid "The x coordinate of the position of the prime tower." -msgstr "Indica la coordinata X della posizione della torre di innesco." +msgstr "Indica la coordinata X della posizione della Prime Tower." #: fdmprinter.def.json msgctxt "prime_tower_position_y label" msgid "Prime Tower Y Position" -msgstr "Posizione Y torre di innesco" +msgstr "Posizione Y Prime Tower" #: fdmprinter.def.json 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." +msgstr "Indica la coordinata Y della posizione della Prime Tower." #: fdmprinter.def.json msgctxt "prime_tower_flow label" msgid "Prime Tower Flow" -msgstr "Flusso torre di innesco" +msgstr "Flusso Prime Tower" #: fdmprinter.def.json msgctxt "prime_tower_flow description" @@ -3975,17 +3925,17 @@ msgstr "Determina la compensazione del flusso: la quantità di materiale estruso #: fdmprinter.def.json msgctxt "prime_tower_wipe_enabled label" msgid "Wipe Inactive Nozzle on Prime Tower" -msgstr "Ugello pulitura inattiva sulla torre di innesco" +msgstr "Ugello pulitura inattiva sulla Prime Tower" #: fdmprinter.def.json msgctxt "prime_tower_wipe_enabled description" msgid "After printing the prime tower with one nozzle, wipe the oozed material from the other nozzle off on the prime tower." -msgstr "Dopo la stampa della torre di innesco con un ugello, pulisce il materiale fuoriuscito dall’altro ugello sulla torre di innesco." +msgstr "Dopo la stampa della Prime Tower con un ugello, pulisce il materiale fuoriuscito dall’altro ugello sulla Prime Tower." #: fdmprinter.def.json msgctxt "dual_pre_wipe label" msgid "Wipe Nozzle After Switch" -msgstr "Ugello pulitura dopo commutazione" +msgstr "Pulitura ugello dopo commutazione" #: fdmprinter.def.json msgctxt "dual_pre_wipe description" @@ -3995,12 +3945,12 @@ msgstr "Dopo la commutazione dell’estrusore, pulire il materiale fuoriuscito d #: fdmprinter.def.json msgctxt "prime_tower_purge_volume label" msgid "Prime Tower Purge Volume" -msgstr "Volume di scarico torre di innesco" +msgstr "Volume di scarico Prime Tower" #: fdmprinter.def.json msgctxt "prime_tower_purge_volume description" msgid "Amount of filament to be purged when wiping on the prime tower. Purging is useful for compensating the filament lost by oozing during inactivity of the nozzle." -msgstr "Quantità di filamento da scaricare durante la pulizia della torre di innesco. Lo scarico è utile per compensare il filamento perso per colatura durante l'inattività dell'ugello." +msgstr "Quantità di filamento da scaricare durante la pulizia della Prime Tower. Lo scarico è utile per compensare il filamento perso per colatura durante l'inattività dell'ugello." #: fdmprinter.def.json msgctxt "ooze_shield_enabled label" @@ -4082,16 +4032,6 @@ msgctxt "meshfix_keep_open_polygons description" msgid "Normally Cura tries to stitch up small holes in the mesh and remove parts of a layer with big holes. Enabling this option keeps those parts which cannot be stitched. This option should be used as a last resort option when everything else fails to produce proper GCode." msgstr "Di norma Cura cerca di \"ricucire\" piccoli fori nella maglia e di rimuovere le parti di uno strato che presentano grossi fori. Abilitando questa opzione, Cura mantiene quelle parti che non possono essere 'ricucite'. Questa opzione deve essere utilizzata come ultima risorsa quando non sia stato possibile produrre un corretto GCode in nessun altro modo." -#: 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 "multiple_mesh_overlap label" msgid "Merged Meshes Overlap" @@ -4150,7 +4090,7 @@ msgstr "Sequenza di stampa" #: fdmprinter.def.json msgctxt "print_sequence description" msgid "Whether to print all models one layer at a time or to wait for one model to finish, before moving on to the next. One at a time mode is only possible if all models are separated in such a way that the whole print head can move in between and all models are lower than the distance between the nozzle and the X/Y axes." -msgstr "Indica se stampare tutti i modelli uno strato alla volta o se attendere di terminare un modello prima di passare al successivo. La modalità 'uno per volta' è possibile solo se tutti i modelli sono separati in modo tale che l'intera testina di stampa possa muoversi tra di essi e se tutti i modelli sono più bassi della distanza tra l'ugello e gli assi X/Y." +msgstr "Indica se stampare tutti i modelli uno layer alla volta o se attendere di terminare un modello prima di passare al successivo. La modalità 'uno per volta' è possibile solo se tutti i modelli sono separati in modo tale che l'intera testa di stampa possa muoversi tra di essi e se tutti i modelli sono più bassi della distanza tra l'ugello e gli assi X/Y." #: fdmprinter.def.json msgctxt "print_sequence option all_at_once" @@ -4242,16 +4182,6 @@ msgctxt "support_mesh description" msgid "Use this mesh to specify support areas. This can be used to generate support structure." msgstr "Utilizzare questa maglia per specificare le aree di supporto. Può essere usata per generare una struttura di supporto." -#: fdmprinter.def.json -msgctxt "support_mesh_drop_down label" -msgid "Drop Down Support Mesh" -msgstr "Maglia supporto di discesa" - -#: fdmprinter.def.json -msgctxt "support_mesh_drop_down description" -msgid "Make support everywhere below the support mesh, so that there's no overhang in the support mesh." -msgstr "Rappresenta il supporto ovunque sotto la maglia di supporto, in modo che in questa non vi siano punti a sbalzo." - #: fdmprinter.def.json msgctxt "anti_overhang_mesh label" msgid "Anti Overhang Mesh" @@ -4315,7 +4245,7 @@ msgstr "Estrusione relativa" #: fdmprinter.def.json msgctxt "relative_extrusion description" msgid "Use relative extrusion rather than absolute extrusion. Using relative E-steps makes for easier post-processing of the Gcode. However, it's not supported by all printers and it may produce very slight deviations in the amount of deposited material compared to absolute E-steps. Irrespective of this setting, the extrusion mode will always be set to absolute before any Gcode script is output." -msgstr "Utilizza l'estrusione relativa invece di quella assoluta. L'utilizzo di fasi E relative facilita la post-elaborazione del codice G. Tuttavia, questa impostazione non è supportata da tutte le stampanti e può causare deviazioni molto piccole nella quantità di materiale depositato rispetto alle fasi E assolute. Indipendentemente da questa impostazione, la modalità estrusione sarà sempre impostata su assoluta prima che venga generato uno script in codice G." +msgstr "Utilizza l'estrusione relativa invece di quella assoluta. L'utilizzo di fasi E relative facilita la post-elaborazione del Gcode. Tuttavia, questa impostazione non è supportata da tutte le stampanti e può causare deviazioni molto piccole nella quantità di materiale depositato rispetto agli E-steps assoluti. Indipendentemente da questa impostazione, la modalità estrusione sarà sempre impostata su assoluta prima che venga generato uno script Gcode." #: fdmprinter.def.json msgctxt "experimental label" @@ -4328,14 +4258,194 @@ msgid "experimental!" msgstr "sperimentale!" #: fdmprinter.def.json -msgctxt "optimize_wall_printing_order label" -msgid "Optimize Wall Printing Order" -msgstr "Ottimizzazione sequenza di stampa pareti" +msgctxt "support_tree_enable label" +msgid "Tree Support" +msgstr "Supporto ad albero" #: fdmprinter.def.json -msgctxt "optimize_wall_printing_order description" -msgid "Optimize the order in which walls are printed so as to reduce the number of retractions and the distance travelled. Most parts will benefit from this being enabled but some may actually take longer so please compare the print time estimates with and without optimization." -msgstr "Ottimizza l'ordine in cui vengono stampate le pareti in modo da ridurre le retrazioni e la distanza percorsa. L'abilitazione di questa funzione porta vantaggi per la maggior parte dei pezzi, ma alcuni potrebbero richiedere un maggior tempo di esecuzione, per cui si consiglia di confrontare i tempi di stampa stimati con e senza ottimizzazione." +msgctxt "support_tree_enable description" +msgid "Generate a tree-like support with branches that support your print. This may reduce material usage and print time, but greatly increases slicing time." +msgstr "Genera un supporto tipo albero con rami di sostegno della stampa. Questo può ridurre l’impiego di materiale e il tempo di stampa, ma aumenta notevolmente il tempo di sezionamento." + +#: fdmprinter.def.json +msgctxt "support_tree_angle label" +msgid "Tree Support Branch Angle" +msgstr "Angolo ramo supporto ad albero" + +#: fdmprinter.def.json +msgctxt "support_tree_angle description" +msgid "The angle of the branches. Use a lower angle to make them more vertical and more stable. Use a higher angle to be able to have more reach." +msgstr "L’angolo dei rami. Utilizzare un angolo minore per renderli più verticali e più stabili. Utilizzare un angolo maggiore per avere una portata maggiore." + +#: fdmprinter.def.json +msgctxt "support_tree_branch_distance label" +msgid "Tree Support Branch Distance" +msgstr "Distanza ramo supporto ad albero" + +#: fdmprinter.def.json +msgctxt "support_tree_branch_distance description" +msgid "How far apart the branches need to be when they touch the model. Making this distance small will cause the tree support to touch the model at more points, causing better overhang but making support harder to remove." +msgstr "La distanza tra i rami necessaria quando toccano il modello. Una distanza ridotta causa il contatto del supporto ad albero con il modello in più punti, generando migliore sovrapposizione ma rendendo più difficoltosa la rimozione del supporto." + +#: fdmprinter.def.json +msgctxt "support_tree_branch_diameter label" +msgid "Tree Support Branch Diameter" +msgstr "Diametro ramo supporto ad albero" + +#: fdmprinter.def.json +msgctxt "support_tree_branch_diameter description" +msgid "The diameter of the thinnest branches of tree support. Thicker branches are more sturdy. Branches towards the base will be thicker than this." +msgstr "Il diametro dei rami più sottili del supporto. I rami più spessi sono più resistenti. I rami verso la base avranno spessore maggiore." + +#: fdmprinter.def.json +msgctxt "support_tree_branch_diameter_angle label" +msgid "Tree Support Branch Diameter Angle" +msgstr "Angolo diametro ramo supporto ad albero" + +#: fdmprinter.def.json +msgctxt "support_tree_branch_diameter_angle description" +msgid "The angle of the branches' diameter as they gradually become thicker towards the bottom. An angle of 0 will cause the branches to have uniform thickness over their length. A bit of an angle can increase stability of the tree support." +msgstr "L’angolo del diametro dei rami con il graduale ispessimento verso il fondo. Un angolo pari a 0 genera rami con spessore uniforme sull’intera lunghezza. Un angolo minimo può aumentare la stabilità del supporto ad albero." + +#: fdmprinter.def.json +msgctxt "support_tree_collision_resolution label" +msgid "Tree Support Collision Resolution" +msgstr "Risoluzione collisione supporto ad albero" + +#: fdmprinter.def.json +msgctxt "support_tree_collision_resolution description" +msgid "Resolution to compute collisions with to avoid hitting the model. Setting this lower will produce more accurate trees that fail less often, but increases slicing time dramatically." +msgstr "Risoluzione per calcolare le collisioni per evitare di colpire il modello. L’impostazione a un valore basso genera alberi più accurati che si rompono meno sovente, ma aumenta notevolmente il tempo di sezionamento." + +#: fdmprinter.def.json +msgctxt "support_tree_wall_thickness label" +msgid "Tree Support Wall Thickness" +msgstr "Spessore delle pareti supporto ad albero" + +#: fdmprinter.def.json +msgctxt "support_tree_wall_thickness description" +msgid "The thickness of the walls of the branches of tree support. Thicker walls take longer to print but don't fall over as easily." +msgstr "Lo spessore delle pareti dei rami del supporto ad albero. Le pareti più spesse hanno un tempo di stampa superiore ma non cadono facilmente." + +#: fdmprinter.def.json +msgctxt "support_tree_wall_count label" +msgid "Tree Support Wall Line Count" +msgstr "Numero delle linee perimetrali supporto ad albero" + +#: fdmprinter.def.json +msgctxt "support_tree_wall_count description" +msgid "The number of walls of the branches of tree support. Thicker walls take longer to print but don't fall over as easily." +msgstr "Il numero di pareti dei rami del supporto ad albero. Le pareti più spesse hanno un tempo di stampa superiore ma non cadono facilmente." + +#: fdmprinter.def.json +msgctxt "slicing_tolerance label" +msgid "Slicing Tolerance" +msgstr "Tolleranza di sezionamento" + +#: fdmprinter.def.json +msgctxt "slicing_tolerance description" +msgid "How to slice layers with diagonal surfaces. The areas of a layer can be generated based on where the middle of the layer intersects the surface (Middle). Alternatively each layer can have the areas which fall inside of the volume throughout the height of the layer (Exclusive) or a layer has the areas which fall inside anywhere within the layer (Inclusive). Exclusive retains the most details, Inclusive makes for the best fit and Middle takes the least time to process." +msgstr "Modalità di sezionamento di strati con superfici diagonali. Le aree di uno strato possono essere generate in base al punto in cui la parte intermedia dello strato interseca la superficie (intermedia). In alternativa le aree di ciascuno strato possono ricadere all'interno del volume per tutta l'altezza dello strato (Esclusiva) ovvero possono cadere in qualsiasi punto all'interno dello strato (Inclusiva). La tolleranza esclusiva mantiene il maggior numero di dettagli, la tolleranza inclusiva è la più idonea, mentre la tolleranza intermedia richiede il minor tempo di processo." + +#: fdmprinter.def.json +msgctxt "slicing_tolerance option middle" +msgid "Middle" +msgstr "Intermedia" + +#: fdmprinter.def.json +msgctxt "slicing_tolerance option exclusive" +msgid "Exclusive" +msgstr "Esclusiva" + +#: fdmprinter.def.json +msgctxt "slicing_tolerance option inclusive" +msgid "Inclusive" +msgstr "Inclusiva" + +#: fdmprinter.def.json +msgctxt "roofing_line_width label" +msgid "Top Surface Skin Line Width" +msgstr "Larghezza linea rivestimento superficie superiore" + +#: fdmprinter.def.json +msgctxt "roofing_line_width description" +msgid "Width of a single line of the areas at the top of the print." +msgstr "Larghezza di un singola linea delle aree nella parte superiore della stampa" + +#: fdmprinter.def.json +msgctxt "roofing_pattern label" +msgid "Top Surface Skin Pattern" +msgstr "Configurazione del rivestimento superficie superiore" + +#: fdmprinter.def.json +msgctxt "roofing_pattern description" +msgid "The pattern of the top most layers." +msgstr "Configurazione dei layers superiori." + +#: fdmprinter.def.json +msgctxt "roofing_pattern option lines" +msgid "Lines" +msgstr "Linee" + +#: fdmprinter.def.json +msgctxt "roofing_pattern option concentric" +msgid "Concentric" +msgstr "Concentrica" + +#: fdmprinter.def.json +msgctxt "roofing_pattern option zigzag" +msgid "Zig Zag" +msgstr "Zig Zag" + +#: fdmprinter.def.json +msgctxt "roofing_angles label" +msgid "Top Surface Skin Line Directions" +msgstr "Direzioni linea rivestimento superficie superiore" + +#: fdmprinter.def.json +msgctxt "roofing_angles description" +msgid "A list of integer line directions to use when the top surface skin layers use the lines or zig zag pattern. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the traditional default angles (45 and 135 degrees)." +msgstr "Un elenco di direzioni linee intere da usare quando i layers rivestimento superficie superiore utilizzano le linee o la configurazione zig zag. 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 i valori angolari predefiniti (45 e 135 gradi)." + +#: fdmprinter.def.json +msgctxt "infill_enable_travel_optimization label" +msgid "Infill Travel Optimization" +msgstr "Ottimizzazione spostamenti riempimento" + +#: fdmprinter.def.json +msgctxt "infill_enable_travel_optimization description" +msgid "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." +msgstr "Quando abilitato, l’ordine di stampa delle linee di riempimento viene ottimizzato per ridurre la distanza percorsa. La riduzione del tempo di spostamento ottenuta dipende in particolare dal modello sezionato, dalla configurazione di riempimento, dalla densità, ecc. Si noti che, per alcuni modelli che hanno piccole aree di riempimento, il tempo di sezionamento del modello può aumentare notevolmente." + +#: fdmprinter.def.json +msgctxt "material_flow_dependent_temperature label" +msgid "Auto Temperature" +msgstr "Temperatura automatica" + +#: fdmprinter.def.json +msgctxt "material_flow_dependent_temperature description" +msgid "Change the temperature for each layer automatically with the average flow speed of that layer." +msgstr "Modifica automaticamente la temperatura per ciascun layer con la velocità media del flusso per tale strato." + +#: fdmprinter.def.json +msgctxt "material_flow_temp_graph label" +msgid "Flow Temperature Graph" +msgstr "Grafico della temperatura del flusso" + +#: fdmprinter.def.json +msgctxt "material_flow_temp_graph description" +msgid "Data linking material flow (in mm3 per second) to temperature (degrees Celsius)." +msgstr "Collegamento dei dati di flusso del materiale (in mm3 al secondo) alla temperatura (in °C)." + +#: 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 "support_skip_some_zags label" @@ -4815,7 +4925,7 @@ msgstr "Ritardo tra due segmenti orizzontali WP" #: fdmprinter.def.json msgctxt "wireframe_flat_delay description" msgid "Delay time between two horizontal segments. Introducing such a delay can cause better adhesion to previous layers at the connection points, while too long delays cause sagging. Only applies to Wire Printing." -msgstr "Indica il tempo di ritardo tra due segmenti orizzontali. Introducendo un tale ritardo si può ottenere una migliore adesione agli strati precedenti in corrispondenza dei punti di collegamento, mentre ritardi troppo prolungati provocano cedimenti. Applicabile solo alla funzione Wire Printing." +msgstr "Indica il tempo di ritardo tra due segmenti orizzontali. Introducendo un tale ritardo si può ottenere una migliore adesione ai layers precedenti in corrispondenza dei punti di collegamento, mentre ritardi troppo prolungati provocano cedimenti. Applicabile solo alla funzione Wire Printing." #: fdmprinter.def.json msgctxt "wireframe_up_half_speed label" @@ -4837,7 +4947,7 @@ msgstr "Dimensione dei nodi WP" #: fdmprinter.def.json msgctxt "wireframe_top_jump description" msgid "Creates a small knot at the top of an upward line, so that the consecutive horizontal layer has a better chance to connect to it. Only applies to Wire Printing." -msgstr "Crea un piccolo nodo alla sommità di una linea verticale verso l'alto, in modo che lo strato orizzontale consecutivo abbia una migliore possibilità di collegarsi ad essa. Applicabile solo alla funzione Wire Printing." +msgstr "Crea un piccolo nodo alla sommità di una linea verticale verso l'alto, in modo che il layer orizzontale consecutivo abbia una migliore possibilità di collegarsi ad essa. Applicabile solo alla funzione Wire Printing." #: fdmprinter.def.json msgctxt "wireframe_fall_down label" @@ -4867,7 +4977,7 @@ msgstr "Strategia WP" #: fdmprinter.def.json msgctxt "wireframe_strategy description" msgid "Strategy for making sure two consecutive layers connect at each connection point. Retraction lets the upward lines harden in the right position, but may cause filament grinding. A knot can be made at the end of an upward line to heighten the chance of connecting to it and to let the line cool; however, it may require slow printing speeds. Another strategy is to compensate for the sagging of the top of an upward line; however, the lines won't always fall down as predicted." -msgstr "Strategia per garantire il collegamento di due strati consecutivi ad ogni punto di connessione. La retrazione consente l'indurimento delle linee verticali verso l'alto nella giusta posizione, ma può causare la deformazione del filamento. È possibile realizzare un nodo all'estremità di una linea verticale verso l'alto per accrescere la possibilità di collegamento e lasciarla raffreddare; tuttavia ciò può richiedere velocità di stampa ridotte. Un'altra strategia consiste nel compensare il cedimento della parte superiore di una linea verticale verso l'alto; tuttavia le linee non sempre ricadono come previsto." +msgstr "Strategia per garantire il collegamento di due layers consecutivi ad ogni punto di connessione. La retrazione consente l'indurimento delle linee verticali verso l'alto nella giusta posizione, ma può causare la deformazione del filamento. È possibile realizzare un nodo all'estremità di una linea verticale verso l'alto per accrescere la possibilità di collegamento e lasciarla raffreddare; tuttavia ciò può richiedere velocità di stampa ridotte. Un'altra strategia consiste nel compensare il cedimento della parte superiore di una linea verticale verso l'alto; tuttavia le linee non sempre ricadono come previsto." #: fdmprinter.def.json msgctxt "wireframe_strategy option compensate" @@ -4934,6 +5044,46 @@ msgctxt "wireframe_nozzle_clearance description" msgid "Distance between the nozzle and horizontally downward lines. Larger clearance results in diagonally downward lines with a less steep angle, which in turn results in less upward connections with the next layer. Only applies to Wire Printing." msgstr "Indica la distanza tra l'ugello e le linee diagonali verso il basso. Un maggior gioco risulta in linee diagonali verso il basso con un minor angolo di inclinazione, cosa che a sua volta si traduce in meno collegamenti verso l'alto con lo strato successivo. Applicabile solo alla funzione Wire Printing." +#: fdmprinter.def.json +msgctxt "adaptive_layer_height_enabled label" +msgid "Use adaptive layers" +msgstr "Uso di layers adattivi" + +#: fdmprinter.def.json +msgctxt "adaptive_layer_height_enabled description" +msgid "Adaptive layers computes the layer heights depending on the shape of the model." +msgstr "I layers adattivi calcolano l’altezza dei layers in base alla forma del modello." + +#: fdmprinter.def.json +msgctxt "adaptive_layer_height_variation label" +msgid "Adaptive layers maximum variation" +msgstr "Variazione massima layers adattivi" + +#: fdmprinter.def.json +msgctxt "adaptive_layer_height_variation description" +msgid "The maximum allowed height different from the base layer height in mm." +msgstr "La differenza di altezza massima rispetto all’altezza del layer di base in mm." + +#: fdmprinter.def.json +msgctxt "adaptive_layer_height_variation_step label" +msgid "Adaptive layers variation step size" +msgstr "Dimensione variazione layers adattivi" + +#: fdmprinter.def.json +msgctxt "adaptive_layer_height_variation_step description" +msgid "The difference in height of the next layer height compared to the previous one." +msgstr "La differenza in altezza del layer successivo rispetto al precedente." + +#: fdmprinter.def.json +msgctxt "adaptive_layer_height_threshold label" +msgid "Adaptive layers threshold" +msgstr "Soglia layers 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 un layer di dimensioni minori. Questo numero è confrontato al valore dell’inclinazione più ripida di un layer." + #: fdmprinter.def.json msgctxt "command_line_settings label" msgid "Command Line Settings" @@ -4942,7 +5092,7 @@ msgstr "Impostazioni riga di comando" #: fdmprinter.def.json msgctxt "command_line_settings description" msgid "Settings which are only used if CuraEngine isn't called from the Cura frontend." -msgstr "Impostazioni utilizzate solo se CuraEngine non è chiamato dalla parte anteriore di Cura." +msgstr "Impostazioni utilizzate solo se CuraEngine non è chiamato dal frontend di Cura." #: fdmprinter.def.json msgctxt "center_object label" @@ -4994,13 +5144,33 @@ 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 "infill_offset_x description" +#~ msgid "The infill pattern is offset this distance along the X axis." +#~ msgstr "Il riempimento si scosta di questa distanza lungo l'asse X." + +#~ msgctxt "infill_offset_y description" +#~ msgid "The infill pattern is offset this distance along the Y axis." +#~ msgstr "Il riempimento si scosta di questa distanza lungo l'asse Y." + +#~ msgctxt "infill_overlap 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." + +#~ msgctxt "skin_overlap description" +#~ msgid "The amount of overlap between the skin and the walls as a percentage of the line width. A slight overlap allows the walls to connect firmly to the skin. This is a percentage of the average line widths of the skin lines and the innermost wall." +#~ msgstr "Entità della sovrapposizione tra il rivestimento e le pareti espressa in percentuale della larghezza della linea. Una leggera sovrapposizione consente alle pareti di essere saldamente collegate al rivestimento. È una percentuale delle larghezze medie delle linee del rivestimento e della parete più interna." + +#~ msgctxt "material_bed_temperature description" +#~ msgid "The temperature used for the heated build plate. If this is 0, the bed will not heat up for this print." +#~ msgstr "Indica la temperatura usata per il piano di stampa riscaldato. Se è 0, il piano non si riscalda per questa stampa." + #~ msgctxt "wall_x_extruder_nr label" #~ msgid "Inner Walls Extruder" #~ msgstr "Estrusore parete interna" #~ msgctxt "infill_pattern description" #~ msgid "The pattern of the infill material of the print. The line and zig zag infill swap direction on alternate layers, reducing material cost. The grid, triangle, cubic, octet, quarter cubic and concentric patterns are fully printed every layer. Cubic, quarter cubic and octet infill change with every layer to provide a more equal distribution of strength over each direction." -#~ msgstr "Configurazione del materiale di riempimento della stampa. Il riempimento a linea e zig zag su strati alternati riduce il costo del materiale. Le configurazioni a griglia, triangolo, a cubo, ottagonale, a quarto di cubo e concentrica comportano la stampa completa in ogni strato. Il riempimento a cubi, a quarto di cubo e a ottagonale cambia a ogni strato per consentire una distribuzione più uniforme della resistenza in ogni direzione." +#~ msgstr "Configurazione del materiale di riempimento della stampa. Il riempimento a linea e zig zag su layers alternati riduce il costo del materiale. Le configurazioni a griglia, triangolo, a cubo, ottagonale, a quarto di cubo e concentrica comportano la stampa completa in ogni layer. Il riempimento a cubi, a quarto di cubo e a ottagonale cambia a ogni layer per consentire una distribuzione più uniforme della resistenza in ogni direzione." #~ msgctxt "zig_zaggify_infill description" #~ msgid "Connect the ends where the infill pattern meets the inner wall using a lines which follows the shape of the inner wall. Enabling this setting can make the infill adhere to the walls better and reduces the effects on infill on the quality of vertical surfaces. Disabling this setting reduces the amount of material used." @@ -5016,19 +5186,19 @@ msgstr "Matrice di rotazione da applicare al modello quando caricato dal file." #~ msgctxt "z_offset_layer_0 label" #~ msgid "Initial Layer Z Offset" -#~ msgstr "Scostamento Z strato iniziale" +#~ msgstr "Scostamento Z layer iniziale" #~ msgctxt "z_offset_layer_0 description" #~ msgid "The extruder is offset from the normal height of the first layer by this amount. It can be positive (raised) or negative (lowered). Some filament types adhere to the build plate better if the extruder is raised slightly." -#~ msgstr "L'estrusore viene posizionato ad una distanza dall'altezza normale del primo strato pari al valore indicato. Questo scostamento può essere positivo (più in alto) o negativo (più in basso). Alcuni tipi di filamento aderiscono meglio al piano di stampa se l'estrusore viene leggermente sollevato." +#~ msgstr "L'estrusore viene posizionato ad una distanza dall'altezza normale del primo layer pari al valore indicato. Questo scostamento può essere positivo (più in alto) o negativo (più in basso). Alcuni tipi di filamento aderiscono meglio al piano di stampa se l'estrusore viene leggermente sollevato." #~ msgctxt "z_offset_taper_layers label" #~ msgid "Z Offset Taper Layers" -#~ msgstr "Scostamento Z strati di rastremazione" +#~ msgstr "Scostamento Z layers di rastremazione" #~ msgctxt "z_offset_taper_layers description" #~ msgid "When non-zero, the Z offset is reduced to 0 over that many layers. A value of 0 means that the Z offset remains constant for all the layers in the print." -#~ msgstr "Se diverso da zero, lo scostamento Z viene ridotto a 0 entro il numero di strati indicato. Un valore di 0 indica che lo scostamento Z rimane costante per tutti gli strati di stampa." +#~ msgstr "Se diverso da zero, lo scostamento Z viene ridotto a 0 entro il numero di layers indicato. Un valore di 0 indica che lo scostamento Z rimane costante per tutti i layers di stampa." #~ msgctxt "raft_smoothing description" #~ msgid "This setting control how much inner corners in the raft outline are rounded. Inward corners are rounded to a semi circle with a radius equal to the value given here. This setting also removes holes in the raft outline which are smaller than such a circle." @@ -5036,7 +5206,7 @@ msgstr "Matrice di rotazione da applicare al modello quando caricato dal file." #~ msgctxt "infill_pattern description" #~ msgid "The pattern of the infill material of the print. The line and zig zag infill swap direction on alternate layers, reducing material cost. The grid, triangle, cubic, tetrahedral and concentric patterns are fully printed every layer. Cubic and tetrahedral infill change with every layer to provide a more equal distribution of strength over each direction." -#~ msgstr "Indica la configurazione del materiale di riempimento della stampa. Il riempimento a linea e a zig zag cambia direzione su strati alternati, riducendo il costo del materiale. Le configurazioni a griglia, triangolo, cubo, tetraedriche e concentriche sono stampate completamente su ogni strato. Il riempimento delle configurazioni cubiche e tetraedriche cambia ad ogni strato per fornire una distribuzione più uniforme della forza su ciascuna direzione." +#~ msgstr "Indica la configurazione del materiale di riempimento della stampa. Il riempimento a linea e a zig zag cambia direzione su layers alternati, riducendo il costo del materiale. Le configurazioni a griglia, triangolo, cubo, tetraedriche e concentriche sono stampate completamente su ogni layers. Il riempimento delle configurazioni cubiche e tetraedriche cambia ad ogni strato per fornire una distribuzione più uniforme della forza su ciascuna direzione." #~ msgctxt "infill_pattern option tetrahedral" #~ msgid "Tetrahedral" @@ -5044,27 +5214,27 @@ msgstr "Matrice di rotazione da applicare al modello quando caricato dal file." #~ msgctxt "expand_skins_into_infill label" #~ msgid "Expand Skins Into Infill" -#~ msgstr "Prolunga rivestimenti esterni nel riempimento" +#~ msgstr "Estende rivestimenti esterni nel riempimento" #~ msgctxt "expand_skins_into_infill description" #~ msgid "Expand skin areas of top and/or bottom skin of flat surfaces. By default, skins stop under the wall lines that surround infill but this can lead to holes appearing when the infill density is low. This setting extends the skins beyond the wall lines so that the infill on the next layer rests on skin." -#~ msgstr "Prolunga le aree di rivestimento esterno superiori e/o inferiori delle superfici piatte. Per default, i rivestimenti esterni si interrompono sotto le linee delle pareti circostanti il riempimento, ma questo può generare la comparsa di fori quando la densità del riempimento è bassa. Questa impostazione prolunga i rivestimenti esterni oltre le linee delle pareti in modo che il riempimento sullo strato successivo appoggi sul rivestimento esterno." +#~ msgstr "Estende le aree di rivestimento esterno superiori e/o inferiori delle superfici piatte. Per default, i rivestimenti esterni si interrompono sotto le linee delle pareti circostanti il riempimento, ma questo può generare la comparsa di fori quando la densità del riempimento è bassa. Questa impostazione prolunga i rivestimenti esterni oltre le linee delle pareti in modo che il riempimento sullo strato successivo appoggi sul rivestimento esterno." #~ msgctxt "expand_upper_skins label" #~ msgid "Expand Top Skins Into Infill" -#~ msgstr "Prolunga rivestimenti esterni superiori nel riempimento" +#~ msgstr "Estendi rivestimenti esterni superiori nel riempimento" #~ msgctxt "expand_upper_skins description" #~ msgid "Expand the top skin areas (areas with air above) so that they support infill above." -#~ msgstr "Prolunga le aree di rivestimento esterno superiori (aree con aria al di sopra) in modo che supportino il riempimento sovrastante." +#~ msgstr "Estendi le aree di rivestimento esterno superiori (aree con aria al di sopra) in modo che supportino il riempimento sovrastante." #~ msgctxt "expand_lower_skins label" #~ msgid "Expand Bottom Skins Into Infill" -#~ msgstr "Prolunga rivestimenti esterni inferiori nel riempimento" +#~ msgstr "Estendi rivestimenti esterni inferiori nel riempimento" #~ msgctxt "expand_lower_skins description" #~ msgid "Expand the bottom skin areas (areas with air below) so that they are anchored by the infill layers above and below." -#~ msgstr "Prolunga aree rivestimento esterno inferiori (aree con aria al di sotto) in modo che siano ancorate dagli strati di riempimento sovrastanti e sottostanti." +#~ msgstr "Estendi aree rivestimento esterno inferiori (aree con aria al di sotto) in modo che siano ancorate dai layers di riempimento sovrastanti e sottostanti." #~ msgctxt "expand_skins_expand_distance description" #~ msgid "The distance the skins are expanded into the infill. The default distance is enough to bridge the gap between the infill lines and will stop holes appearing in the skin where it meets the wall when the infill density is low. A smaller distance will often be sufficient." @@ -5160,19 +5330,19 @@ msgstr "Matrice di rotazione da applicare al modello quando caricato dal file." #~ msgctxt "expand_upper_skins label" #~ msgid "Expand Upper Skins" -#~ msgstr "Prolunga rivestimenti esterni superiori" +#~ msgstr "Estendi rivestimenti esterni superiori" #~ msgctxt "expand_upper_skins description" #~ msgid "Expand upper skin areas (areas with air above) so that they support infill above." -#~ msgstr "Prolunga le aree di rivestimento esterno superiori (aree con aria al di sopra) in modo che supportino il riempimento sovrastante." +#~ msgstr "Estendi le aree di rivestimento esterno superiori (aree con aria al di sopra) in modo che supportino il riempimento sovrastante." #~ msgctxt "expand_lower_skins label" #~ msgid "Expand Lower Skins" -#~ msgstr "Prolunga rivestimenti esterni inferiori" +#~ msgstr "Estendi rivestimenti esterni inferiori" #~ msgctxt "expand_lower_skins description" #~ msgid "Expand lower skin areas (areas with air below) so that they are anchored by the infill layers above and below." -#~ msgstr "Prolunga aree rivestimento esterno inferiori (aree con aria al di sotto) in modo che siano ancorate dagli strati di riempimento sovrastanti e sottostanti." +#~ msgstr "Estendi aree rivestimento esterno inferiori (aree con aria al di sotto) in modo che siano ancorate dagli strati di riempimento sovrastanti e sottostanti." #~ msgctxt "speed_support_interface description" #~ msgid "The speed at which the roofs and bottoms of support are printed. Printing the them at lower speeds can improve overhang quality." @@ -5196,7 +5366,7 @@ msgstr "Matrice di rotazione da applicare al modello quando caricato dal file." #~ msgctxt "support_interface_extruder_nr description" #~ msgid "The extruder train to use for printing the roofs and bottoms of the support. This is used in multi-extrusion." -#~ msgstr "Il treno estrusore utilizzato per la stampa delle parti superiori e inferiori del supporto. Utilizzato nell’estrusione multipla." +#~ msgstr "Il blocco estrusore utilizzato per la stampa delle parti superiori e inferiori del supporto. Utilizzato nell’estrusione multipla." #~ msgctxt "support_bottom_stair_step_height description" #~ msgid "The height of the steps of the stair-like bottom of support resting on the model. A low value makes the support harder to remove, but too high values can lead to unstable support structures." @@ -5204,11 +5374,11 @@ msgstr "Matrice di rotazione da applicare al modello quando caricato dal file." #~ msgctxt "support_bottom_height label" #~ msgid "Support Bottom Thickness" -#~ msgstr "Spessore degli strati inferiori del supporto" +#~ msgstr "Spessore dei layers inferiori del supporto" #~ msgctxt "support_bottom_height description" #~ msgid "The thickness of the support bottoms. This controls the number of dense layers are printed on top of places of a model on which support rests." -#~ msgstr "Indica lo spessore degli strati inferiori del supporto. Questo controlla il numero di strati fitti stampati sulla sommità dei punti di un modello su cui appoggia un supporto." +#~ msgstr "Indica lo spessore dei layers inferiori del supporto. Questo controlla il numero di slayers fitti stampati sulla sommità dei punti di un modello su cui appoggia un supporto." #~ msgctxt "support_interface_skip_height description" #~ msgid "When checking where there's model above the support, take steps of the given height. Lower values will slice slower, while higher values may cause normal support to be printed in some places where there should have been support interface." diff --git a/resources/i18n/ja_JP/cura.po b/resources/i18n/ja_JP/cura.po index 01b39b3229..11e6f08883 100644 --- a/resources/i18n/ja_JP/cura.po +++ b/resources/i18n/ja_JP/cura.po @@ -1,24 +1,24 @@ # Cura -# Copyright (C) 2017 Ultimaker +# Copyright (C) 2018 Ultimaker # This file is distributed under the same license as the Cura package. -# Ruben Dulek , 2017. -# +# Ruben Dulek , 2018. +# msgid "" msgstr "" -"Project-Id-Version: Cura 3.0\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-11-21 16:58+0100\n" -"PO-Revision-Date: 2017-11-30 13:05+0100\n" -"Last-Translator: \n" -"Language-Team: TEAM\n" -"Language: xx_XX\n" +"Project-Id-Version: Cura 3.2\n" +"Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" +"POT-Creation-Date: 2018-01-29 09:48+0000\n" +"PO-Revision-Date: 2018-02-10 04:58+0900\n" +"Last-Translator: Brule \n" +"Language-Team: 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 1.8.7.1\n" +"X-Generator: Poedit 2.0.4\n" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:29 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:26 msgctxt "@action" msgid "Machine Settings" msgstr "プリンターの設定" @@ -55,12 +55,11 @@ msgstr "Doodle3D Connectに接続する" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:87 #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:155 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:874 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:646 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:875 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:659 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:370 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrintWindow.qml:78 -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:104 -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:99 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:355 #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:188 #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:376 #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:139 @@ -100,7 +99,7 @@ msgctxt "@info:tooltip" msgid "Open the Doodle3D Connect web interface" msgstr "Doodle3D Connect web interfaceを開く" -#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:34 +#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:33 msgctxt "@item:inmenu" msgid "Show Changelog" msgstr "Changelogの表示" @@ -117,78 +116,83 @@ msgctxt "@info:status" msgid "Profile has been flattened & activated." msgstr "プロファイルが平らになり、アクティベートされました。" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:26 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:27 msgctxt "@item:inmenu" msgid "USB printing" msgstr "USBプリンティング" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:27 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:28 msgctxt "@action:button Preceded by 'Ready to'." msgid "Print via USB" msgstr "USBを使ってプリントする" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:28 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:29 msgctxt "@info:tooltip" msgid "Print via USB" msgstr "USBを使ってプリントする" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:30 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:31 msgctxt "@info:status" msgid "Connected via USB" msgstr "USBにて接続する" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:154 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:183 msgctxt "@info:status" msgid "Unable to start a new job because the printer is busy or not connected." msgstr "新しいプリントジョブをはじめることができません。プリンターが使用中または接続できていません。" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:154 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:183 msgctxt "@info:title" msgid "Printer Unavailable" msgstr "プリンターが利用できません" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:457 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:485 msgctxt "@info:status" msgid "This printer does not support USB printing because it uses UltiGCode flavor." msgstr "UltiGCodeを使用中のため、USBからのプリントができません。" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:457 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:485 msgctxt "@info:title" msgid "USB Printing" msgstr "USBプリント" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:461 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:489 msgctxt "@info:status" msgid "Unable to start a new job because the printer does not support usb printing." msgstr "USBでの印刷ができないため、新しいプリントジョブができません。" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:461 -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:108 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:489 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:103 #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:146 #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:158 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:945 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1349 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1417 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:946 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1418 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1496 msgctxt "@info:title" msgid "Warning" msgstr "警告" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:108 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:103 msgctxt "@info" msgid "Unable to update firmware because there are no printers connected." msgstr "プリンターが未接続のため、ファームウェアをアップデートできません。" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:122 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:117 #, python-format msgctxt "@info" msgid "Could not find firmware required for the printer at %s." msgstr "プリンター(%s)に必要なファームウェアを探せませんでした。" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:122 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:117 msgctxt "@info:title" msgid "Printer Firmware" msgstr "ファームウェア" +#: /home/ruben/Projects/Cura/plugins/PrepareStage/__init__.py:12 +msgctxt "@item:inmenu" +msgid "Prepare" +msgstr "準備する" + #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:23 msgctxt "@action:button Preceded by 'Ready to'." msgid "Save to Removable Drive" @@ -232,11 +236,11 @@ msgid "Could not save to removable drive {0}: {1}" msgstr "リムーバブルドライブ{0}に保存することができませんでした: {1}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:132 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:692 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:700 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:146 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:693 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:701 #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:153 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1358 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:160 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1427 msgctxt "@info:title" msgid "Error" msgstr "エラー" @@ -286,7 +290,7 @@ msgid "Removable Drive" msgstr "リムーバブルドライブ" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:109 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:53 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:51 msgctxt "@action:button Preceded by 'Ready to'." msgid "Print over network" msgstr "ネットワーク上のプリント" @@ -400,110 +404,110 @@ msgctxt "@info:title" msgid "Printer Status" msgstr "プリンターのステータス" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:691 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:692 #, python-brace-format msgctxt "@info:status" msgid "Unable to start a new print job. No Printcore loaded in slot {0}" msgstr "プリントコアがスロット{0}に入っていません。プリントジョブを開始できません。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:699 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:700 #, python-brace-format msgctxt "@info:status" msgid "Unable to start a new print job. No material loaded in slot {0}" msgstr "フィラメントがスロット{0}に入っていません。プリントジョブを開始できません。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:709 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:710 #, python-brace-format msgctxt "@label" msgid "Not enough material for spool {0}." msgstr "フィラメント{0}の残量が足りません。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:719 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:720 #, python-brace-format msgctxt "@label" msgid "Different PrintCore (Cura: {0}, Printer: {1}) selected for extruder {2}" msgstr "異なるプリントコアが入っています(Cura:{0}, プリンター{1})エクストルーダー{2}" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:733 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:734 #, 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/NetworkPrinterOutputDevice.py:741 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:742 #, python-brace-format msgctxt "@label" msgid "PrintCore {0} is not properly calibrated. XY calibration needs to be performed on the printer." msgstr "プリントコア{0}が適切にキャリブレーションできていません。XYキャリブレーションをプリンターで行ってください。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:746 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:747 msgctxt "@label" msgid "Are you sure you wish to print with the selected configuration?" msgstr "選択された構成にてプリントを開始してもいいですか。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:747 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:748 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/NetworkPrinterOutputDevice.py:753 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:754 msgctxt "@window:title" msgid "Mismatched configuration" msgstr "ミスマッチの構成" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:864 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:262 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:865 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:258 msgctxt "@info:status" msgid "Sending new jobs (temporarily) blocked, still sending the previous print job." msgstr "新しいデータの送信 (temporarily) をブロックします、前のプリントジョブが送信中です。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:873 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:874 msgctxt "@info:status" msgid "Sending data to printer" msgstr "プリンターにプリントデータを送信中" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:873 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:874 msgctxt "@info:title" msgid "Sending Data" msgstr "プリントデータを送信中" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:944 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:945 msgctxt "@info:status" msgid "Unable to send data to printer. Is another job still active?" msgstr "データをプリンターに送ることができません。他のプリントジョブは進行中ですか?" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1085 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1087 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:196 msgctxt "@label:MonitorStatus" msgid "Aborting print..." msgstr "プリントを停止します…" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1091 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1093 msgctxt "@label:MonitorStatus" msgid "Print aborted. Please check the printer" msgstr "プリントを中止しました。プリンターを確認してください。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1097 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1099 msgctxt "@label:MonitorStatus" msgid "Pausing print..." msgstr "プリントを一時停止します…" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1099 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1101 msgctxt "@label:MonitorStatus" msgid "Resuming print..." msgstr "プリント再開します…" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1289 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1291 msgctxt "@window:title" msgid "Sync with your printer" msgstr "プリンターと同期する" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1291 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1293 msgctxt "@label" msgid "Would you like to use your current printer configuration in Cura?" msgstr "Curaで設定しているプリンタ構成を使用されますか?" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1293 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1295 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 "プリンターのプリントコア及びフィラメントが現在のプロジェクトと異なります。最善な印刷結果のために、プリンタに装着しているプリントコア、フィラメントに合わせてスライスして頂くことをお勧めします。" @@ -524,145 +528,204 @@ msgid "{printer_name} has finished printing '{job_name}'. Please collect the pri msgstr "{printer_name}は ‘{job_name}’印刷を終了しました。造形物を確認し、ビルドプレートから取り出してください。" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:115 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:520 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:533 #, python-brace-format msgid "{printer_name} is reserved to print '{job_name}'. Please change the printer's configuration to match the job, for it to start printing." msgstr "{printer_name} は '{job_name}'.を印刷予定です。印刷を開始するためにジョブに合わせた構成に変更してください。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:278 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:277 msgctxt "@info:status" msgid "Unable to send new print job: this 3D printer is not (yet) set up to host a group of connected Ultimaker 3 printers." msgstr "新しいプリントジョブをお送りできません。この3Dプリンターは繋がっているUltimaker3のグループをホストするために設定されていません。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:410 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:423 #, python-brace-format msgctxt "@info:status" msgid "Unable to send print job to group {cluster_name}." msgstr "プリントジョブをグループに送ることができません。{cluster_name}." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:418 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:431 #, python-brace-format msgctxt "@info:status" msgid "Sent {file_name} to group {cluster_name}." msgstr "グループに送信完了{file_name} {cluster_name}." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:423 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:436 msgctxt "@action:button" msgid "Show print jobs" msgstr "プリントジョブを見る" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:424 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:437 msgctxt "@info:tooltip" msgid "Opens the print jobs interface in your browser." msgstr "プリントジョブのインターフェイスをブラウザーで開く" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:489 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:502 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:239 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:47 -msgctxt "@label" +msgctxt "@label Printer name" msgid "Unknown" msgstr "不明" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:492 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:505 #, 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/NetworkClusterPrinterOutputDevice.py:494 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:497 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:507 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:510 msgctxt "@info:status" msgid "Print finished" msgstr "プリント終了" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:522 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:525 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:535 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:538 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:282 msgctxt "@label:status" msgid "Action required" msgstr "アクションが必要です。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:643 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:656 #, python-brace-format msgctxt "@info:progress" msgid "Sending {file_name} to group {cluster_name}" msgstr "グループに送信中{file_name} {cluster_name}" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.py:19 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.py:17 msgctxt "@action" msgid "Connect via Network" msgstr "ネットワーク上にて接続" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:64 +#: /home/ruben/Projects/Cura/plugins/MonitorStage/__init__.py:12 +msgctxt "@item:inmenu" +msgid "Monitor" +msgstr "モニター" + +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:66 #, python-brace-format msgctxt "@info Don't translate {machine_name}, since it gets replaced by a printer name!" msgid "New features are available for your {machine_name}! It is recommended to update the firmware on your printer." msgstr "{machine_name} で利用可能な新しい機能があります。プリンターのファームウェアをアップデートしてください。" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:65 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:67 #, python-format msgctxt "@info:title The %s gets replaced with the printer name." msgid "New %s firmware available" msgstr "新しい利用可能な%sファームウェアのアップデートがあります。" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:66 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:68 msgctxt "@action:button" msgid "How to update" msgstr "アップデートの仕方" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:77 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:79 msgctxt "@info" msgid "Could not access update information." msgstr "必要なアップデートの情報にアクセスできません。" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksReader.py:199 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksReader.py:579 msgctxt "@info:status" -msgid "Errors appeared while opening your SolidWorks file! Please check, whether it is possible to open your file in SolidWorks itself without any problems as well!" -msgstr "ソリッドワークスのファイルを開く際にエラーが発生しました!ソリッドワークスで、問題なく開くことができるか確認してください。" +msgid "SolidWorks reported errors, while opening your file. We recommend to solve these issues inside SolidWorks itself." +msgstr "ソリッドワークスがファイルを開く際にエラーを報告しました。ソリッドワークス内で問題を解決することをお勧めします。" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:31 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksReader.py:591 +msgctxt "@info:status" +msgid "" +"Found no models inside your drawing. Could you please check it's content again and make sure one part or assembly is inside?\n" +"\n" +" Thanks!." +msgstr "" +"図面の中にモデルが見つかりません。中身を確認し、パートかアセンブリーが中に入っていることを確認してください。\n" +"\n" +" 再確認をお願いします。" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksReader.py:595 +msgctxt "@info:status" +msgid "" +"Found more then one part or assembly inside your drawing. We currently only support drawings with exactly one part or assembly inside.\n" +"\n" +"Sorry!" +msgstr "" +"図面の中にパートかアセンブリーが2個以上見つかりました。今のところ、本製品はパートかアセンブリーが1個の図面のみに対応しています。\n" +"\n" +"申し訳ありません。" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:25 msgctxt "@item:inlistbox" msgid "SolidWorks part file" msgstr "ソリッドワークスパートファイル" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:35 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:29 msgctxt "@item:inlistbox" msgid "SolidWorks assembly file" msgstr "ソリッドワークスアセンブリーファイル" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.py:21 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:33 +msgctxt "@item:inlistbox" +msgid "SolidWorks drawing file" +msgstr "ソリッドワークス図面ファイル" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:48 +msgctxt "@info:status" +msgid "" +"Dear customer,\n" +"We could not find a valid installation of SolidWorks on your system. That means that either SolidWorks is not installed or you don't own an valid license. Please make sure that running SolidWorks itself works without issues and/or contact your ICT.\n" +"\n" +"With kind regards\n" +" - Thomas Karl Pietrowski" +msgstr "" +"お客様へ\n" +"システム上に正規のソリッドワークスがインストールされていません。つまり、ソリッドワークスがインストールされていないか、有効なライセンスが存在しません。ソリッドワークスだけを問題なく使用できるようになっているか確認するか、自社のIT部門にご相談ください。\n" +"\n" +"お願いいたします。\n" +" - Thomas Karl Pietrowski" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:57 +msgctxt "@info:status" +msgid "" +"Dear customer,\n" +"You are currently running this plugin on an operating system other than Windows. This plugin will only work on Windows with SolidWorks installed, including an valid license. Please install this plugin on a Windows machine with SolidWorks installed.\n" +"\n" +"With kind regards\n" +" - Thomas Karl Pietrowski" +msgstr "" +"お客様へ\n" +"このプラグインは現在Windows以外のOSで実行されています。このプラグインは、ソリッドワークスがインストールされたWindowsでしか動作しません。有効なライセンスも必要です。ソリッドワークスがインストールされたWindowsマシンにこのプラグインをインストールしてください。\n" +"\n" +"お願いいたします。\n" +" - Thomas Karl Pietrowski" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksDialogHandler.py:70 msgid "Configure" msgstr "構成" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/CommonComReader.py:135 -#, python-format -msgctxt "@info:status" -msgid "Error while starting %s!" -msgstr "%sを開始中にエラーが発生" +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksDialogHandler.py:71 +msgid "Installation guide for SolidWorks macro" +msgstr "ソリッドワークス・マクロのインストールガイド" #: /home/ruben/Projects/Cura/plugins/SimulationView/__init__.py:14 msgctxt "@item:inlistbox" -msgid "Simulation view" -msgstr "シミュレーションビュー" +msgid "Layer view" +msgstr "レイヤービュー" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:100 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:103 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:101 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:104 msgctxt "@info:title" msgid "Simulation View" msgstr "シミュレーションビュー" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.py:26 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.py:25 msgid "Modify G-Code" msgstr "G-codeを修正" #: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:43 msgctxt "@info" -msgid "Cura collects anonymised slicing statistics. You can disable this in the preferences." -msgstr "Curaが非特定なスライスされた数字を集めました。プレファレンス内で無効にできます。" +msgid "Cura collects anonymized usage statistics." +msgstr "Curaは、匿名化した利用統計を収集します。" #: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:46 msgctxt "@info:title" @@ -671,14 +734,43 @@ msgstr "データを収集中" #: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:48 msgctxt "@action:button" -msgid "Dismiss" -msgstr "却下する" +msgid "Allow" +msgstr "許可" + +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:49 +msgctxt "@action:tooltip" +msgid "Allow Cura to send anonymized usage statistics to help prioritize future improvements to Cura. Some of your preferences and settings are sent, the Cura version and a hash of the models you're slicing." +msgstr "Curaが匿名化した利用統計を送信することを許可し、Curaの将来の改善を優先的に行うことに貢献します。プレファレンスと設定の一部、Curaのバージョン、スライスしているモデルのハッシュが送信されます。" + +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:50 +msgctxt "@action:button" +msgid "Disable" +msgstr "無効化" + +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:51 +msgctxt "@action:tooltip" +msgid "Don't allow Cura to send anonymized usage statistics. You can enable it again in the preferences." +msgstr "Curaが匿名化した利用統計を送信することを許可しません。プレファレンスで許可に変更することができます。" #: /home/ruben/Projects/Cura/plugins/LegacyProfileReader/__init__.py:14 msgctxt "@item:inlistbox" msgid "Cura 15.04 profiles" msgstr "Cura 15.04 プロファイル" +#: /home/ruben/Projects/Cura/plugins/CuraBlenderPlugin/__init__.py:15 +msgctxt "@item:inlistbox" +msgid "Blender file" +msgstr "Blenderファイル" + +#: /home/ruben/Projects/Cura/plugins/CuraBlenderPlugin/CadIntegrationUtils/CommonReader.py:199 +msgctxt "@info:status" +msgid "" +"Could not export using \"{}\" quality!\n" +"Felt back to \"{}\"." +msgstr "" +"\"{}\"品質を使用したエクスポートができませんでした!\n" +"\"{}\"になりました。" + #: /home/ruben/Projects/Cura/plugins/GCodeProfileReader/__init__.py:14 #: /home/ruben/Projects/Cura/plugins/GCodeReader/__init__.py:14 msgctxt "@item:inlistbox" @@ -710,49 +802,49 @@ msgctxt "@item:inlistbox" msgid "GIF Image" msgstr "GIF画像" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:269 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:299 msgctxt "@info:status" msgid "Unable to slice with the current material as it is incompatible with the selected machine or configuration." msgstr "選ばれたプリンターまたは選ばれたプリント構成が異なるため進行中の材料にてスライスを完了できません。" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:269 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:297 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:319 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:299 #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:327 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:336 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:349 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:357 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:366 msgctxt "@info:title" msgid "Unable to slice" msgstr "スライスできません。" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:296 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:326 #, python-brace-format msgctxt "@info:status" msgid "Unable to slice with the current settings. The following settings have errors: {0}" msgstr "現在の設定でスライスが完了できません。以下の設定にエラーがあります: {0}" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:318 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:348 #, python-brace-format msgctxt "@info:status" msgid "Unable to slice due to some per-model settings. The following settings have errors on one or more models: {error_labels}" msgstr "モデル別の設定があるためスライスできません。1つまたは複数のモデルで以下の設定にエラーが発生しました:{error_labels}" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:326 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:356 msgctxt "@info:status" msgid "Unable to slice because the prime tower or prime position(s) are invalid." msgstr "プライムタワーまたはプライム位置が無効なためスライスできません。" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:335 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:365 msgctxt "@info:status" msgid "Nothing to slice because none of the models fit the build volume. Please scale or rotate models to fit." msgstr "モデルのデータがビルトボリュームに入っていないためスライスできるものがありません。スケールやローテーションにて合うように設定してください。" #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:50 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:239 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:242 msgctxt "@info:status" msgid "Processing Layers" msgstr "レイヤーを処理しています。" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:239 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:242 msgctxt "@info:title" msgid "Information" msgstr "インフォメーション" @@ -789,14 +881,14 @@ msgstr "Siemens NXプラグインファイルのコピーに失敗しました msgid "Failed to install Siemens NX plugin. Could not set environment variable UGII_USER_DIR for Siemens NX." msgstr "Siemens NXプラグインのインストールに失敗しました。Siemens NX用の環境変数UGII_USER_DIRが設定できませんでした。" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:167 -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:585 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:165 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:590 msgctxt "@title:tab" msgid "Recommended" msgstr "推奨" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:169 -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:590 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:167 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:595 msgctxt "@title:tab" msgid "Custom" msgstr "カスタム" @@ -807,24 +899,24 @@ msgctxt "@item:inlistbox" msgid "3MF File" msgstr "3MF ファイル" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:126 -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1142 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:159 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1185 msgctxt "@label" msgid "Nozzle" msgstr "ノズル" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:164 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:152 #, python-brace-format msgctxt "@info:status" msgid "Failed to get plugin ID from {0}" msgstr "{0}からプラグインIDを取得することに失敗しました。" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:165 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:153 msgctxt "@info:tile" msgid "Warning" msgstr "警告" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:203 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:191 msgctxt "@window:title" msgid "Plugin browser" msgstr "プラグインブラウザー" @@ -839,18 +931,18 @@ msgctxt "@item:inlistbox" msgid "G File" msgstr "Gファイル" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:314 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:321 msgctxt "@info:status" msgid "Parsing G-code" msgstr "G-codeを解析" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:316 -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:426 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:323 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:464 msgctxt "@info:title" msgid "G-code Details" msgstr "G-codeの詳細" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:424 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:462 msgctxt "@info:generic" msgid "Make sure the g-code is suitable for your printer and printer configuration before sending the file to it. The g-code representation may not be accurate." msgstr "データファイルを送信する前に、プリンターとプリンターの構成設定にそのG-codeが適応しているか確認してください。G-codeの表示が適切でない場合があります。" @@ -861,6 +953,16 @@ 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:17 +msgctxt "@item:inlistbox" +msgid "Profile Assistant" +msgstr "プロファイルアシスタント" + #: /home/ruben/Projects/Cura/plugins/3MFWriter/__init__.py:30 msgctxt "@item:inlistbox" msgid "3MF file" @@ -892,142 +994,116 @@ msgctxt "@action" msgid "Level build plate" msgstr "ビルドプレートを調整する" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:89 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:98 msgctxt "@tooltip" msgid "Outer Wall" msgstr "アウターウォール" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:90 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:99 msgctxt "@tooltip" msgid "Inner Walls" msgstr "インナーウォール" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:91 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:100 msgctxt "@tooltip" msgid "Skin" msgstr "スキン" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:92 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:101 msgctxt "@tooltip" msgid "Infill" msgstr "インフィル" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:93 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:102 msgctxt "@tooltip" msgid "Support Infill" msgstr "サポートイルフィル" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:94 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:103 msgctxt "@tooltip" msgid "Support Interface" msgstr "サポートインターフェイス" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:95 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:104 msgctxt "@tooltip" msgid "Support" msgstr "サポート" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:96 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:105 msgctxt "@tooltip" msgid "Skirt" msgstr "スカート" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:97 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:106 msgctxt "@tooltip" msgid "Travel" msgstr "移動" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:98 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:107 msgctxt "@tooltip" msgid "Retractions" msgstr "退却" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:99 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:108 msgctxt "@tooltip" msgid "Other" msgstr "他" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:199 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:231 msgctxt "@label unknown material" msgid "Unknown" msgstr "不明" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:284 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:318 #, python-brace-format msgctxt "@label" msgid "Pre-sliced file {0}" msgstr "スライス前ファイル {0}" -#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:469 +#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:440 msgctxt "@item:material" msgid "No material loaded" msgstr "フィラメントがロードされていません。" -#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:476 +#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:447 msgctxt "@item:material" msgid "Unknown material" msgstr "未確認のフィラメント" -#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:30 -msgctxt "@info:status" -msgid "Finding new location for objects" -msgstr "造形物のために新しい位置を探索中" - -#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:34 -msgctxt "@info:title" -msgid "Finding Location" -msgstr "位置確認" - -#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:89 -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:83 -msgctxt "@info:status" -msgid "Unable to find a location within the build volume for all objects" -msgstr "全ての造形物の造形サイズに対し、適切な位置が確認できません" - -#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:90 -msgctxt "@info:title" -msgid "Can't Find Location" -msgstr "位置を確保できません。" - -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:431 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:113 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:437 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:120 msgctxt "@title:window" msgid "File Already Exists" msgstr "すでに存在するファイルです。" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:432 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:114 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:438 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:121 #, 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:815 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:872 msgctxt "@label" msgid "Custom" msgstr "カスタム" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:819 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:876 msgctxt "@label" msgid "Custom Material" msgstr "カスタムフィラメント" -#: /home/ruben/Projects/Cura/cura/Settings/ExtrudersModel.py:182 -msgctxt "@menuitem" -msgid "Global" -msgstr "グローバル" - -#: /home/ruben/Projects/Cura/cura/Settings/ExtrudersModel.py:229 +#: /home/ruben/Projects/Cura/cura/Settings/ExtrudersModel.py:205 msgctxt "@menuitem" msgid "Not overridden" msgstr "上書きできません" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:117 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:124 msgctxt "@info:status" msgid "The selected material is incompatible with the selected machine or configuration." msgstr "選択されたフィラメントはプリンターとそのプリント構成に適応しておりません。" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:118 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:125 #: /home/ruben/Projects/Cura/cura/Settings/MaterialManager.py:24 msgctxt "@info:title" msgid "Incompatible Material" @@ -1048,67 +1124,89 @@ msgctxt "@action" msgid "Undo changing the material diameter." msgstr "フィラメント直径を変更を取り消す" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:144 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:151 #, 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:151 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:158 #, 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:156 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:163 #, 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:157 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:164 msgctxt "@info:title" msgid "Export succeeded" msgstr "書き出し完了" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:183 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:205 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:214 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:248 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:190 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:211 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:271 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to import profile from {0}: {1}" msgstr "{0}: {1}からプロファイルを取り込むことに失敗しました。" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:216 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:252 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:230 +#, python-brace-format +msgctxt "@info:status Don't translate the XML tags or !" +msgid "This profile {0} contains incorrect data, could not import it." +msgstr "このプロファイル{0}には、正しくないデータが含まれていて、インポートできません。" + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:240 +#, python-brace-format +msgctxt "@info:status Don't translate the XML tags or !" +msgid "The machine defined in profile {0} doesn't match with your current machine, could not import it." +msgstr "プロファイル{0}の中で定義されているマシンは、現在お使いのマシンと一致しませんので、インポートできませんでした。" + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:274 #, python-brace-format msgctxt "@info:status" msgid "Successfully imported profile {0}" msgstr "プロファイル {0}の取り込み完了" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:255 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:277 +#, 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:280 #, 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:274 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:298 msgctxt "@label" msgid "Custom profile" msgstr "カスタムプロファイル" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:285 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:313 msgctxt "@info:status" msgid "Profile is missing a quality type." msgstr "プロファイルはクオリティータイプが不足しています。" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:321 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:349 #, python-brace-format msgctxt "@info:status" msgid "Could not find a quality type {0} for the current configuration." msgstr "進行中のプリント構成にあったクオリティータイプ{0}が見つかりませんでした。" +#: /home/ruben/Projects/Cura/cura/ObjectsModel.py:46 +#, python-brace-format +msgctxt "@label" +msgid "Group #{group_nr}" +msgstr "グループ #{group_nr}" + #: /home/ruben/Projects/Cura/cura/BuildVolume.py:100 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." @@ -1119,142 +1217,170 @@ msgctxt "@info:title" msgid "Build Volume" msgstr "造形サイズ" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:34 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:25 msgctxt "@info:status" msgid "Multiplying and placing objects" msgstr "造形データを増やす、配置する。" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:35 -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:83 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:26 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:78 msgctxt "@info:title" msgid "Placing Object" msgstr "造形データを配置" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:80 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:78 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:88 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:152 +msgctxt "@info:status" +msgid "Unable to find a location within the build volume for all objects" +msgstr "全ての造形物の造形サイズに対し、適切な位置が確認できません" + +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:29 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:64 +msgctxt "@info:status" +msgid "Finding new location for objects" +msgstr "造形物のために新しい位置を探索中" + +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:33 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:68 +msgctxt "@info:title" +msgid "Finding Location" +msgstr "位置確認" + +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:89 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:153 +msgctxt "@info:title" +msgid "Can't Find Location" +msgstr "位置を確保できません。" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:81 msgctxt "@title:window" msgid "Crash Report" msgstr "クラッシュ報告" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:93 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:94 msgctxt "@label crash message" msgid "" -"

      A fatal exception has occurred. Please send us this Crash Report to fix the problem

      \n" +"

      A fatal error has occurred. 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 "

      致命的な例外が発生しました。問題解決のためこのクラッシュレポートを送信してください

      \n

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

      \n " +msgstr "" +"

      致命的なエラーが発生しました。問題解決のためこのクラッシュレポートを送信してください

      \n" +"

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

      \n" +" " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:101 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:102 msgctxt "@title:groupbox" msgid "System information" msgstr "システム情報" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:109 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:110 msgctxt "@label unknown version of Cura" msgid "Unknown" msgstr "不明" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:111 -#, python-brace-format -msgctxt "@label Cura version" -msgid "Cura version: {version}
      " -msgstr "Curaバージョン: {version}
      " - #: /home/ruben/Projects/Cura/cura/CrashHandler.py:112 -#, python-brace-format -msgctxt "@label Platform" -msgid "Platform: {platform}
      " -msgstr "プラットフォーム: {platform}
      " +msgctxt "@label Cura version number" +msgid "Cura version" +msgstr "Curaバージョン" #: /home/ruben/Projects/Cura/cura/CrashHandler.py:113 -#, python-brace-format -msgctxt "@label Qt version" -msgid "Qt version: {qt}
      " -msgstr "Qtバージョン: {qt}
      " +msgctxt "@label Type of platform" +msgid "Platform" +msgstr "プラットフォーム" #: /home/ruben/Projects/Cura/cura/CrashHandler.py:114 -#, python-brace-format -msgctxt "@label PyQt version" -msgid "PyQt version: {pyqt}
      " -msgstr "PyQtバージョン: {pyqt}
      " +msgctxt "@label" +msgid "Qt version" +msgstr "Qtバージョン" #: /home/ruben/Projects/Cura/cura/CrashHandler.py:115 -#, python-brace-format -msgctxt "@label OpenGL" -msgid "OpenGL: {opengl}
      " -msgstr "OpenGL: {opengl}
      " +msgctxt "@label" +msgid "PyQt version" +msgstr "PyQtバージョン" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:130 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:116 +msgctxt "@label OpenGL version" +msgid "OpenGL" +msgstr "OpenGL" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:133 +msgctxt "@label" +msgid "not yet initialised
      " +msgstr "初期化されていません
      " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:136 #, python-brace-format msgctxt "@label OpenGL version" msgid "
    • OpenGL Version: {version}
    • " msgstr "
    • OpenGLバージョン: {version}
    • " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:131 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:137 #, python-brace-format msgctxt "@label OpenGL vendor" msgid "
    • OpenGL Vendor: {vendor}
    • " msgstr "
    • OpenGLベンダー: {vendor}
    • " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:132 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:138 #, python-brace-format msgctxt "@label OpenGL renderer" msgid "
    • OpenGL Renderer: {renderer}
    • " msgstr "
    • OpenGLレンダラー: {renderer}
    • " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:141 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:147 msgctxt "@title:groupbox" -msgid "Exception traceback" -msgstr "例外トレースバック" +msgid "Error traceback" +msgstr "エラー・トレースバック" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:208 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:214 msgctxt "@title:groupbox" msgid "Logs" msgstr "ログ" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:231 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:237 msgctxt "@title:groupbox" msgid "User description" msgstr "ユーザー詳細" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:246 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:252 msgctxt "@action:button" msgid "Send report" msgstr "レポート送信" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:256 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:274 msgctxt "@info:progress" msgid "Loading machines..." msgstr "プリンターを読み込み中…" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:661 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:660 msgctxt "@info:progress" msgid "Setting up scene..." msgstr "シーンをセットアップ中…" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:703 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:702 msgctxt "@info:progress" msgid "Loading interface..." msgstr "インターフェイスを読み込み中…" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:874 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:899 #, 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:1348 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1417 #, 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:1357 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1426 #, 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:1416 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1495 msgctxt "@info:status" msgid "The selected model was too small to load." msgstr "選択したモデルは読み込むのに小さすぎます。" @@ -1283,12 +1409,11 @@ msgstr "X(幅)" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:119 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:129 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:235 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:288 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:300 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:391 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:401 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:413 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:840 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:383 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:394 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:412 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:424 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:849 msgctxt "@label" msgid "mm" msgstr "mm" @@ -1378,68 +1503,67 @@ msgctxt "@tooltip" msgid "The height difference between the tip of the nozzle and the gantry system (X and Y axes). Used to prevent collisions between previous prints and the gantry when printing \"One at a Time\"." msgstr "(X 軸及びY軸)ノズルの先端とガントリーシステムの高さに相違があります。印刷時に前の造形物とプリントヘッドとの衝突を避けるために “1プリントづつ”印刷を使用。" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:255 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:254 msgctxt "@label" msgid "Number of Extruders" msgstr "エクストルーダーの数" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:289 -msgctxt "@tooltip" -msgid "The nominal diameter of filament supported by the printer. The exact diameter will be overridden by the material and/or the profile." -msgstr "プリンターに対応したフィラメントの直径。正確な直径はフィラメント及びまたはプロファイルに変動します。" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:291 -msgctxt "@label" -msgid "Material diameter" -msgstr "フィラメント直径" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:299 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:390 -msgctxt "@label" -msgid "Nozzle size" -msgstr "ノズルサイズ" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:317 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:310 msgctxt "@label" msgid "Start Gcode" msgstr "G-codeをスタートします。" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:327 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:320 msgctxt "@tooltip" msgid "Gcode commands to be executed at the very start." msgstr "G-codeが最初に起動するようにします。" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:336 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:329 msgctxt "@label" msgid "End Gcode" msgstr "G-codeを終了" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:346 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:339 msgctxt "@tooltip" msgid "Gcode commands to be executed at the very end." msgstr "G-codeが最後にに起動するようにします。" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:378 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:370 msgctxt "@label" msgid "Nozzle Settings" msgstr "ノズル設定" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:400 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:382 +msgctxt "@label" +msgid "Nozzle size" +msgstr "ノズルサイズ" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:393 +msgctxt "@label" +msgid "Compatible material diameter" +msgstr "適合する材料直径" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:395 +msgctxt "@tooltip" +msgid "The nominal diameter of filament supported by the printer. The exact diameter will be overridden by the material and/or the profile." +msgstr "プリンターに対応したフィラメントの直径。正確な直径はフィラメント及びまたはプロファイルに変動します。" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:411 msgctxt "@label" msgid "Nozzle offset X" msgstr "ノズルオフセットX" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:412 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:423 msgctxt "@label" msgid "Nozzle offset Y" msgstr "ノズルオフセットY" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:433 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:444 msgctxt "@label" msgid "Extruder Start Gcode" msgstr "エクストルーダーがGcodeを開始します。" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:451 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:462 msgctxt "@label" msgid "Extruder End Gcode" msgstr "エクストルーダーがGcodeを終了します。" @@ -1452,8 +1576,9 @@ msgstr "Changelogの表示" #: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.qml:37 #: /home/ruben/Projects/Cura/plugins/USBPrinting/FirmwareUpdateWindow.qml:107 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:55 -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:445 -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:357 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:306 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:456 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:492 #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:80 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:123 #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:147 @@ -1534,7 +1659,7 @@ msgstr "編集" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:96 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:50 #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:95 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:190 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:171 msgctxt "@action:button" msgid "Remove" msgstr "取り除く" @@ -1556,12 +1681,12 @@ msgid "Type" msgstr "タイプ" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:233 -msgctxt "@label" +msgctxt "@label Printer name" msgid "Ultimaker 3" -msgstr "Ultimaker3" +msgstr "Ultimaker 3" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:236 -msgctxt "@label" +msgctxt "@label Printer name" msgid "Ultimaker 3 Extended" msgstr "Ultimaker 3 Extended" @@ -1607,8 +1732,6 @@ msgid "Enter the IP address or hostname of your printer on the network." msgstr "ネットワーク内のプリンターのIPアドレスまたはホストネームを入力してください。" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:379 -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:92 -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:88 #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:181 msgctxt "@action:button" msgid "OK" @@ -1629,6 +1752,11 @@ msgctxt "@label: arg 1 is group name" msgid "%1 is not set up to host a group of connected Ultimaker 3 printers" msgstr "%1は、繋がっているUltimaker3プリンターのグループをホストするために設定されていません。" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterMonitorItem.qml:55 +msgctxt "@label link to connect manager" +msgid "Add/Remove printers" +msgstr "プリンターの追加/削除" + #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/OpenPanelButton.qml:14 msgctxt "@info:tooltip" msgid "Opens the print jobs page with your default web browser." @@ -1659,11 +1787,16 @@ msgid "Available" msgstr "利用可能" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:43 -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:101 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:100 msgctxt "@label:MonitorStatus" msgid "Lost connection with the printer" msgstr "プリンターへの接続が切断されました。" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:47 +msgctxt "@label Printer status" +msgid "Unknown" +msgstr "不明" + #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:257 msgctxt "@label:status" msgid "Disabled" @@ -1755,138 +1888,252 @@ msgctxt "@action:button" msgid "Activate Configuration" msgstr "プリント構成をアクティベートする" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:20 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:21 msgctxt "@title:window" -msgid "Cura SolidWorks Plugin Configuration" -msgstr "Curaソリッドワークスプラグインコンフィグレーション" +msgid "SolidWorks: Export wizard" +msgstr "ソリッドワークス: エクスポートウィザード" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:44 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:45 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:140 msgctxt "@action:label" -msgid "Default quality of the exported STL:" -msgstr "書き出されたSTLのクオリティーデフォルト" +msgid "Quality:" +msgstr "品質: " -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:79 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:78 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:179 msgctxt "@option:curaSolidworksStlQuality" -msgid "Always ask" -msgstr "毎回確認" +msgid "Fine (3D-printing)" +msgstr "精細 (3Dプリント)" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:80 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:79 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:180 msgctxt "@option:curaSolidworksStlQuality" -msgid "Always use Fine quality" -msgstr "常にファインクオリティーを使用する" +msgid "Coarse (3D-printing)" +msgstr "大まか (3Dプリント)" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:81 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:80 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:181 msgctxt "@option:curaSolidworksStlQuality" -msgid "Always use Coarse quality" -msgstr "常に粗めのクオリティーを使用する" +msgid "Fine (SolidWorks)" +msgstr "精細 (ソリッドワークス)" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:20 -msgctxt "@title:window" -msgid "Import SolidWorks File as STL..." -msgstr "ソリッドワークスのファイルをSTLとして取り込む" - -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:43 -msgctxt "@info:tooltip" -msgid "Quality of the Exported STL" -msgstr "書き出されたSTLのクオリティー" - -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:48 -msgctxt "@action:label" -msgid "Quality" -msgstr "クオリティー" - -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:62 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:81 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:182 msgctxt "@option:curaSolidworksStlQuality" -msgid "Coarse" -msgstr "粗い" +msgid "Coarse (SolidWorks)" +msgstr "大まか (ソリッドワークス)" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:63 -msgctxt "@option:curaSolidworksStlQuality" -msgid "Fine" -msgstr "ファイン" - -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:78 -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:82 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:94 msgctxt "@text:window" -msgid "Remember my choice" -msgstr "選択を記憶させる" +msgid "Show this dialog again" +msgstr "このダイアログを再度表示する" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:81 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:104 +msgctxt "@action:button" +msgid "Continue" +msgstr "続行" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:116 +msgctxt "@action:button" +msgid "Abort" +msgstr "中断" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:21 +msgctxt "@title:window" +msgid "How to install Cura SolidWorks macro" +msgstr "Curaソリッドワークス・マクロのインストール方法" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:62 +msgctxt "@description:label" +msgid "Steps:" +msgstr "ステップ: " + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:140 +msgctxt "@action:button" +msgid "" +"Open the directory\n" +"with macro and icon" +msgstr "" +"ディレクトリーを開きます\n" +"(マクロとアイコンで)" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:160 +msgctxt "@description:label" +msgid "Instructions:" +msgstr "指示: " + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:202 +msgctxt "@action:playpause" +msgid "Play" +msgstr "実行" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:206 +msgctxt "@action:playpause" +msgid "Pause" +msgstr "一時停止" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:268 +msgctxt "@action:button" +msgid "Previous Step" +msgstr "前のステップ" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:283 +msgctxt "@action:button" +msgid "Done" +msgstr "完了" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:287 +msgctxt "@action:button" +msgid "Next Step" +msgstr "次のステップ" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:21 +msgctxt "@title:window" +msgid "SolidWorks plugin: Configuration" +msgstr "ソリッドワークスプラグイン: コンフィグレーション" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:39 +msgctxt "@title:tab" +msgid "Conversion settings" +msgstr "変換設定" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:66 +msgctxt "@label" +msgid "First choice:" +msgstr "最初の選択: " + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:86 +msgctxt "@text:menu" +msgid "Latest installed version (Recommended)" +msgstr "インストールされている最新バージョン (推奨)" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:95 +msgctxt "@text:menu" +msgid "Default version" +msgstr "デフォルトバージョン" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:193 +msgctxt "@label" +msgid "Show wizard before opening SolidWorks files" +msgstr "ソリッドワークスのファイルを開く前にウィザードを表示" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:203 +msgctxt "@label" +msgid "Automatically rotate opened file into normed orientation" +msgstr "開いたファイルを自動的に正規の向きに回転" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:210 +msgctxt "@title:tab" +msgid "Installation(s)" +msgstr "インストール" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:284 +msgctxt "@label" +msgid "COM service found" +msgstr "COMサービスが存在" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:295 +msgctxt "@label" +msgid "Executable found" +msgstr "実行ファイルが存在" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:306 +msgctxt "@label" +msgid "COM starting" +msgstr "COM開始" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:317 +msgctxt "@label" +msgid "Revision number" +msgstr "改訂番号" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:328 +msgctxt "@label" +msgid "Functions available" +msgstr "利用可能な関数" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:341 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:264 +msgctxt "@action:button" +msgid "Save" +msgstr "保存" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:117 msgctxt "@label" msgid "Color scheme" msgstr "カラースキーム" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:96 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:132 msgctxt "@label:listbox" msgid "Material Color" msgstr "フィラメントの色" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:100 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:136 msgctxt "@label:listbox" msgid "Line Type" msgstr "ラインタイプ" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:104 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:140 msgctxt "@label:listbox" msgid "Feedrate" msgstr "送り速度" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:108 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:144 msgctxt "@label:listbox" msgid "Layer thickness" msgstr "レイヤーの厚さ" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:148 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:185 msgctxt "@label" msgid "Compatibility Mode" msgstr "コンパティビリティモード" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:230 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:264 msgctxt "@label" msgid "Show Travels" msgstr "移動を表示する" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:236 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:270 msgctxt "@label" msgid "Show Helpers" msgstr "ヘルプを表示する" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:242 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:276 msgctxt "@label" msgid "Show Shell" msgstr "シェルを表示する" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:248 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:282 msgctxt "@label" msgid "Show Infill" msgstr "インフィルを表示する" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:297 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:330 msgctxt "@label" msgid "Only Show Top Layers" msgstr "トップのレイヤーを表示する" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:306 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:339 msgctxt "@label" msgid "Show 5 Detailed Layers On Top" msgstr "トップの5レイヤーの詳細を表示する" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:317 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:350 msgctxt "@label" msgid "Top / Bottom" msgstr "トップ/ボトム" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:321 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:354 msgctxt "@label" msgid "Inner Wall" msgstr "インナーウォール" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:378 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:410 msgctxt "@label" msgid "min" msgstr "最小" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:420 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:452 msgctxt "@label" msgid "max" msgstr "最大" @@ -1911,7 +2158,7 @@ msgctxt "@label" msgid "Settings" msgstr "設定" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:455 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:466 msgctxt "@info:tooltip" msgid "Change active post-processing scripts" msgstr "処理したスクリプトを変更する" @@ -1986,23 +2233,53 @@ msgctxt "@action:label" msgid "Smoothing" msgstr "スムージング" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:208 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:38 +msgctxt "@label" +msgid "Mesh Type" +msgstr "メッシュタイプ" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:69 +msgctxt "@label" +msgid "Normal model" +msgstr "標準モデル" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:76 +msgctxt "@label" +msgid "Print as support" +msgstr "サポートとしてプリント" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:84 +msgctxt "@label" +msgid "Don't support overlap with other models" +msgstr "他のモデルとのオーバーラップは未サポート" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:92 +msgctxt "@label" +msgid "Modify settings for overlap with other models" +msgstr "他のモデルとのオーバーラップの設定を変更" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:100 +msgctxt "@label" +msgid "Modify settings for infill of other models" +msgstr "他のモデルのインフィルの設定を変更" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:333 msgctxt "@action:button" msgid "Select settings" msgstr "設定を選択する" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:248 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:375 msgctxt "@title:window" msgid "Select Settings to Customize for this model" msgstr "このモデルをカスタマイズする設定を選択する" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:272 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:402 #: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:91 msgctxt "@label:textbox" msgid "Filter..." msgstr "フィルター…" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:296 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:426 msgctxt "@label:checkbox" msgid "Show all" msgstr "すべて表示する" @@ -2172,7 +2449,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/PluginBrowser/PluginBrowser.qml:242 msgctxt "@action:button" @@ -2301,10 +2581,9 @@ msgid "Not connected" msgstr "プリンターにつながっていません。" #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:99 -#, fuzzy msgctxt "@label" msgid "Min endstop X: " -msgstr "エンドストップ X:" +msgstr "最小エンドストップ X:" #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:109 #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:130 @@ -2323,16 +2602,14 @@ msgid "Not checked" msgstr "チェックされていません。" #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:120 -#, fuzzy msgctxt "@label" msgid "Min endstop Y: " -msgstr "エンドストップ Y:" +msgstr "最小エンドストップ Y:" #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:141 -#, fuzzy msgctxt "@label" msgid "Min endstop Z: " -msgstr "エンドストップ Z:" +msgstr "最小エンドストップ Z:" #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:163 msgctxt "@label" @@ -2366,66 +2643,66 @@ msgctxt "@label" msgid "Everything is in order! You're done with your CheckUp." msgstr "すべてに異常はありません。チェックアップを終了しました。" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:88 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:87 msgctxt "@label:MonitorStatus" msgid "Not connected to a printer" msgstr "プリンターにつながっていません。" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:90 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:89 msgctxt "@label:MonitorStatus" msgid "Printer does not accept commands" msgstr "今プリンタはコマンドを処理できません。" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:96 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:95 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:194 msgctxt "@label:MonitorStatus" msgid "In maintenance. Please check the printer" msgstr "メンテナンス。プリンターをチェックしてください。" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:103 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:102 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:184 msgctxt "@label:MonitorStatus" msgid "Printing..." msgstr "プリント中" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:106 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:105 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:186 msgctxt "@label:MonitorStatus" msgid "Paused" msgstr "一時停止しました" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:109 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:108 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:188 msgctxt "@label:MonitorStatus" msgid "Preparing..." msgstr "準備中" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:111 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:110 msgctxt "@label:MonitorStatus" msgid "Please remove the print" msgstr "造形物を取り出してください。" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:237 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:241 msgctxt "@label:" msgid "Resume" msgstr "再開" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:241 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:245 msgctxt "@label:" msgid "Pause" msgstr "一時停止" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:270 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:274 msgctxt "@label:" msgid "Abort Print" msgstr "プリント中止" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:280 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:284 msgctxt "@window:title" msgid "Abort print" msgstr "プリント中止" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:282 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:286 msgctxt "@label" msgid "Are you sure you want to abort the print?" msgstr "本当にプリントを中止してもいいですか。" @@ -2458,19 +2735,19 @@ msgid "Customized" msgstr "カスタマイズ" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:157 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:593 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:595 msgctxt "@option:discardOrKeep" msgid "Always ask me this" msgstr "毎回確認する" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:158 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:594 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:596 msgctxt "@option:discardOrKeep" msgid "Discard and never ask again" msgstr "取り消し、再度確認しない。" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:159 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:595 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:597 msgctxt "@option:discardOrKeep" msgid "Keep and never ask again" msgstr "キープし、再度確認しない。" @@ -2505,72 +2782,72 @@ msgctxt "@label" msgid "Brand" msgstr "ブランド" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:92 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:88 msgctxt "@label" msgid "Material Type" msgstr "フィラメントタイプ" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:105 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:97 msgctxt "@label" msgid "Color" msgstr "色" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:139 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:141 msgctxt "@label" msgid "Properties" msgstr "プロパティ" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:141 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:143 msgctxt "@label" msgid "Density" msgstr "密度" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:156 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:158 msgctxt "@label" msgid "Diameter" msgstr "直径" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:185 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:187 msgctxt "@label" msgid "Filament Cost" msgstr "フィラメントコスト" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:201 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:203 msgctxt "@label" msgid "Filament weight" msgstr "フィラメントの重さ" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:218 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:220 msgctxt "@label" msgid "Filament length" msgstr "フィラメントの長さ" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:227 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:229 msgctxt "@label" msgid "Cost per Meter" msgstr "毎メーターコスト" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:241 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:243 msgctxt "@label" msgid "This material is linked to %1 and shares some of its properties." msgstr "このフィラメントは %1にリンクすプロパティーを共有する。" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:248 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:250 msgctxt "@label" msgid "Unlink Material" msgstr "フィラメントをリンクを外す" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:259 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:261 msgctxt "@label" msgid "Description" msgstr "記述" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:272 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:274 msgctxt "@label" msgid "Adhesion Information" msgstr "接着のインフォメーション" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:298 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:300 msgctxt "@label" msgid "Print settings" msgstr "プリント設定" @@ -2611,7 +2888,7 @@ msgid "Unit" msgstr "ユニット" #: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:14 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:439 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:509 msgctxt "@title:tab" msgid "General" msgstr "一般" @@ -2626,230 +2903,255 @@ msgctxt "@label" msgid "Language:" msgstr "言語:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:205 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:207 msgctxt "@label" msgid "Currency:" msgstr "通貨:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:219 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:221 msgctxt "@label" msgid "Theme:" msgstr "テーマ:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:279 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:281 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:296 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:298 msgctxt "@info:tooltip" msgid "Slice automatically when changing settings." msgstr "セッティングを変更すると自動にスライスします。" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:304 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:306 msgctxt "@option:check" msgid "Slice automatically" msgstr "自動的にスライスする" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:318 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:320 msgctxt "@label" msgid "Viewport behavior" msgstr "ビューポイント機能" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:326 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:328 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:335 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:337 msgctxt "@option:check" msgid "Display overhang" msgstr "ディスプレイオーバーハング" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:342 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:344 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:347 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:349 msgctxt "@action:button" msgid "Center camera when item is selected" msgstr "アイテムを選択するとカメラが中心にきます" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:356 +#: /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:361 +#: /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:370 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:372 msgctxt "@info:tooltip" msgid "Should zooming move in the direction of the mouse?" msgstr "ズームはマウスの方向に動くべきか?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:375 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:377 msgctxt "@action:button" msgid "Zoom toward mouse direction" msgstr "マウスの方向にズームする" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:384 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:386 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:389 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:391 msgctxt "@option:check" msgid "Ensure models are kept apart" msgstr "モデルの距離が離れているように確認する" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:397 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:399 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:402 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:404 msgctxt "@option:check" msgid "Automatically drop models to the build plate" msgstr "自動的にモデルをビルドプレートに落とす" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:414 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:416 msgctxt "@info:tooltip" msgid "Show caution message in gcode reader." msgstr "gcodeリーダーに注意メッセージを表示する" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:423 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:425 msgctxt "@option:check" msgid "Caution message in gcode reader" msgstr "gcodeリーダーの注意メッセージ" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:430 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:432 msgctxt "@info:tooltip" msgid "Should layer be forced into compatibility mode?" msgstr "レイヤーはコンパティビリティモードに強制されるべきか?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:435 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:437 msgctxt "@option:check" msgid "Force layer view compatibility mode (restart required)" msgstr "レイヤービューコンパティビリティモードを強制する。(再起動が必要)" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:451 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:453 msgctxt "@label" msgid "Opening and saving files" msgstr "ファイルを開くまた保存" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:457 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:459 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:462 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:464 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:473 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:478 msgctxt "@option:check" msgid "Scale extremely small models" msgstr "極端に小さなモデルをスケールアップする" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:485 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:487 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:490 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:492 msgctxt "@option:check" msgid "Add machine prefix to job name" msgstr "プリンターの敬称をジョブネームに加える" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:499 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:501 msgctxt "@info:tooltip" msgid "Should a summary be shown when saving a project file?" msgstr "プロジェクトファイルを保存時にサマリーを表示するべきか?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:503 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:505 msgctxt "@option:check" msgid "Show summary dialog when saving project" msgstr "プロジェクトを保存時にダイアログサマリーを表示する" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:512 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:514 msgctxt "@info:tooltip" msgid "Default behavior when opening a project file" msgstr "プロジェクトファイルを開く際のデフォルト機能" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:520 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:522 msgctxt "@window:text" msgid "Default behavior when opening a project file: " msgstr "プロジェクトファイル開く際のデフォルト機能:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:533 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:535 msgctxt "@option:openProject" msgid "Always ask" msgstr "いつもお尋ねください。" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:534 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:536 msgctxt "@option:openProject" msgid "Always open as a project" msgstr "常にプロジェクトとして開く" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:535 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:537 msgctxt "@option:openProject" msgid "Always import models" msgstr "常にモデルを取り込む" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:571 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:573 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:580 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:582 msgctxt "@label" msgid "Override Profile" msgstr "プロファイルを無効にする" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:629 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:631 msgctxt "@label" msgid "Privacy" msgstr "プライバシー" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:636 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:638 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:641 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:643 msgctxt "@option:check" msgid "Check for updates on start" msgstr "スタート時にアップデートあるかどうかのチェック" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:651 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:653 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:656 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:658 msgctxt "@option:check" msgid "Send (anonymous) print information" msgstr " (不特定な) プリントインフォメーションを送信" +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:674 +msgctxt "@label" +msgid "Experimental" +msgstr "実験" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:680 +msgctxt "@info:tooltip" +msgid "Use multi build plate functionality" +msgstr "マルチビルドプレート機能を使用" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:685 +msgctxt "@option:check" +msgid "Use multi build plate functionality (restart required)" +msgstr "マルチビルドプレート機能を使用 (再起動が必要)" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:694 +msgctxt "@info:tooltip" +msgid "Should newly loaded models be arranged on the build plate? Used in conjunction with multi build plate (EXPERIMENTAL)" +msgstr "新たにロードしたモデルをビルドプレート上に配置すべきですか? マルチビルドプレートと共に使用 (実験的)" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:699 +msgctxt "@option:check" +msgid "Do not arrange objects on load" +msgstr "ロード時にオブジェクトを配置しません" + #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:444 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:514 msgctxt "@title:tab" msgid "Printers" msgstr "プリンター" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:37 #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:51 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:137 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:138 msgctxt "@action:button" msgid "Activate" msgstr "アクティベート" @@ -2892,7 +3194,7 @@ msgid "Waiting for a printjob" msgstr "プリントジョブの待機中" #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:448 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:518 msgctxt "@title:tab" msgid "Profiles" msgstr "プロファイル" @@ -2918,13 +3220,13 @@ msgid "Duplicate" msgstr "複製" #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:113 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:201 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:182 msgctxt "@action:button" msgid "Import" msgstr "取り込む" #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:119 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:212 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:193 msgctxt "@action:button" msgid "Export" msgstr "書き出す" @@ -2990,7 +3292,7 @@ msgid "Export Profile" msgstr "プロファイルを書き出す" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:446 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:516 msgctxt "@title:tab" msgid "Materials" msgstr "マテリアル" @@ -3005,60 +3307,60 @@ msgctxt "@action:label %1 is printer name" msgid "Printer: %1" msgstr "プリンター:%1" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:149 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:150 msgctxt "@action:button" msgid "Create" msgstr "作成する" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:168 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:160 msgctxt "@action:button" msgid "Duplicate" msgstr "複製" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:311 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:319 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:298 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:306 msgctxt "@title:window" msgid "Import Material" msgstr "フィラメントを取り込む" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:320 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:307 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/MaterialsPage.qml:324 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:311 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully imported material %1" msgstr "フィラメント%1の取り込みに成功しました。" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:343 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:358 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:329 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:344 msgctxt "@title:window" msgid "Export Material" msgstr "フィラメントを書き出す" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:362 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:348 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/MaterialsPage.qml:368 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:354 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully exported material to %1" msgstr "フィラメントの%1への書き出しが完了ました。" #: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:18 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:793 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:869 msgctxt "@title:window" msgid "Add Printer" msgstr "プリンターを追加する" -#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:185 +#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:194 msgctxt "@label" msgid "Printer Name:" msgstr "プリンター名:" -#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:208 +#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:217 msgctxt "@action:button" msgid "Add Printer" msgstr "プリンターについて" @@ -3185,158 +3487,163 @@ msgctxt "@label" msgid "Profile:" msgstr "プロファイル:" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:66 -msgctxt "@" -msgid "No Profile Available" -msgstr "利用可能なプロファイルがありません" - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:104 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:102 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プロファイルマネージャーをクリックして開いてください。" +msgstr "" +"いくらかの設定プロファイルにある値とことなる場合無効にします。\n" +"プロファイルマネージャーをクリックして開いてください。" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:152 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:150 msgctxt "@label:textbox" msgid "Search..." msgstr "検索…" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:483 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:482 msgctxt "@action:menu" msgid "Copy value to all extruders" msgstr "すべてのエクストルーダーの値をコピーする" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:498 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:497 msgctxt "@action:menu" msgid "Hide this setting" msgstr "この設定を非表示にする" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:508 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:507 msgctxt "@action:menu" msgid "Don't show this setting" msgstr "この設定を表示しない" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:512 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:511 msgctxt "@action:menu" msgid "Keep this setting visible" msgstr "常に見えるように設定する" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:531 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:530 msgctxt "@action:menu" msgid "Configure setting visiblity..." msgstr "視野のセッティングを構成する" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingCategory.qml:123 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingCategory.qml:250 msgctxt "@label" msgid "" "Some hidden settings use values different from their normal calculated value.\n" "\n" "Click to make these settings visible." -msgstr "いくらかの非表示設定は通常の計算された値と異なる値を使用します。\n表示されるようにクリックしてください。" +msgstr "" +"いくらかの非表示設定は通常の計算された値と異なる値を使用します。\n" +"表示されるようにクリックしてください。" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:62 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:61 msgctxt "@label Header for list of settings." msgid "Affects" msgstr "影響" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:67 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:66 msgctxt "@label Header for list of settings." msgid "Affected By" msgstr "次によって影響を受ける" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:157 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:156 msgctxt "@label" -msgid "This setting is always shared between all extruders. Changing it here will change the value for all extruders" +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:160 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:159 msgctxt "@label" msgid "The value is resolved from per-extruder values " msgstr "この値は各エクストルーダーの値から取得します。" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:186 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:190 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プロファイルの値を戻すためにクリックしてください。" +msgstr "" +"この設定にプロファイルと異なった値があります。\n" +"プロファイルの値を戻すためにクリックしてください。" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:284 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:288 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計算された値に変更するためにクリックを押してください。" +msgstr "" +"このセッティングは通常計算されます、今は絶対値に固定されています。\n" +"計算された値に変更するためにクリックを押してください。" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:120 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:128 msgctxt "@label:listbox" msgid "Print Setup" msgstr "プリントセットアップ" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:120 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:128 msgctxt "@label:listbox" msgid "" "Print Setup disabled\n" "G-code files cannot be modified" -msgstr "プリントセットアップが無効\nG-codeファイルを修正することができません。" +msgstr "" +"プリントセットアップが無効\n" +"G-codeファイルを修正することができません。" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:336 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:342 msgctxt "@label Hours and minutes" msgid "00h 00min" msgstr "00時間 00分" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:354 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:359 msgctxt "@tooltip" -msgid "Time specification
      " -msgstr "時間仕様
      " +msgid "Time specification" +msgstr "時間仕様" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:429 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:441 msgctxt "@label" msgid "Cost specification" msgstr "コスト仕様" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:434 -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:445 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:446 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:455 msgctxt "@label m for meter" msgid "%1m" msgstr "%1m" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:435 -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:446 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:447 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:456 msgctxt "@label g for grams" msgid "%1g" msgstr "%1g" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:444 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:454 msgctxt "@label" msgid "Total:" msgstr "合計:" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:498 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:504 msgctxt "@label Print estimates: m for meters, g for grams, %4 is currency and %3 is print cost" msgid "%1m / ~ %2g / ~ %4 %3" msgstr "%1m / ~ %2g / ~ %4 %3" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:503 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:509 msgctxt "@label Print estimates: m for meters, g for grams" msgid "%1m / ~ %2g" msgstr "%1m / ~ %2g" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:586 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:591 msgctxt "@tooltip" msgid "Recommended Print Setup

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

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

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

      スライス処理のきめ細かなコントロールにてプリントする" -#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:49 +#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:50 msgctxt "@title:menuitem %1 is the automatically selected material" msgid "Automatic: %1" msgstr "自動選択: %1" @@ -3346,6 +3653,16 @@ msgctxt "@title:menu menubar:toplevel" msgid "&View" msgstr "&ビュー" +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:37 +msgctxt "@action:inmenu menubar:view" +msgid "&Camera position" +msgstr "カメラ位置 (&C)" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:52 +msgctxt "@action:inmenu menubar:view" +msgid "&Build plate" +msgstr "ビルドプレート (&B)" + #: /home/ruben/Projects/Cura/resources/qml/Menus/NozzleMenu.qml:40 msgctxt "@title:menuitem %1 is the nozzle currently loaded in the printer" msgid "Automatic: %1" @@ -3359,13 +3676,13 @@ msgid_plural "Print Selected Models With:" msgstr[0] "選択したモデルで印刷:" # can’t eneter japanese texts -#: /home/ruben/Projects/Cura/resources/qml/Menus/ContextMenu.qml:83 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ContextMenu.qml:114 msgctxt "@title:window" msgid "Multiply Selected Model" msgid_plural "Multiply Selected Models" msgstr[0] "選択した複数のモデル" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ContextMenu.qml:108 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ContextMenu.qml:139 msgctxt "@label" msgid "Number of Copies" msgstr "コピーの数" @@ -3381,7 +3698,7 @@ msgid "No printer connected" msgstr "接続中のプリンターはありません。" #: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:90 -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:138 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:139 msgctxt "@label" msgid "Extruder" msgstr "エクストルーダー" @@ -3491,254 +3808,294 @@ msgctxt "@label" msgid "Estimated time left" msgstr "残り時間" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:72 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:79 msgctxt "@action:inmenu" msgid "Toggle Fu&ll Screen" msgstr "留め金 フルスクリーン" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:79 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:86 msgctxt "@action:inmenu menubar:edit" msgid "&Undo" msgstr "&取り消す" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:89 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:96 msgctxt "@action:inmenu menubar:edit" msgid "&Redo" msgstr "&やりなおす" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:99 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:106 msgctxt "@action:inmenu menubar:file" msgid "&Quit" msgstr "&やめる" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:107 -msgctxt "@action:inmenu menubar:view" -msgid "&Reset camera position" -msgstr "&カメラ位置のリセット" - #: /home/ruben/Projects/Cura/resources/qml/Actions.qml:114 +msgctxt "@action:inmenu menubar:view" +msgid "&3D View" +msgstr "3Dビュー (&3)" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:121 +msgctxt "@action:inmenu menubar:view" +msgid "&Front View" +msgstr "フロントビュー (&F)" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:128 +msgctxt "@action:inmenu menubar:view" +msgid "&Top View" +msgstr "トップビュー (&T)" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:135 +msgctxt "@action:inmenu menubar:view" +msgid "&Left Side View" +msgstr "左サイドビュー (&L)" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:142 +msgctxt "@action:inmenu menubar:view" +msgid "&Right Side View" +msgstr "右サイドビュー (&R)" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:149 msgctxt "@action:inmenu" msgid "Configure Cura..." msgstr "Curaを構成する…" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:121 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:156 msgctxt "@action:inmenu menubar:printer" msgid "&Add Printer..." msgstr "&プリンターを追加する" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:127 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:162 msgctxt "@action:inmenu menubar:printer" msgid "Manage Pr&inters..." msgstr "プリンターを管理する" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:134 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:169 msgctxt "@action:inmenu" msgid "Manage Materials..." msgstr "フィラメントを管理する" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:142 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:177 msgctxt "@action:inmenu menubar:profile" msgid "&Update profile with current settings/overrides" msgstr "&現在の設定/無効にプロファイルをアップデートする" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:150 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:185 msgctxt "@action:inmenu menubar:profile" msgid "&Discard current changes" msgstr "&変更を破棄する" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:162 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:197 msgctxt "@action:inmenu menubar:profile" msgid "&Create profile from current settings/overrides..." msgstr "&今の設定/無効からプロファイルを作成する…" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:168 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:203 msgctxt "@action:inmenu menubar:profile" msgid "Manage Profiles..." msgstr "プロファイルを管理する" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:175 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:210 msgctxt "@action:inmenu menubar:help" msgid "Show Online &Documentation" msgstr "オンラインドキュメントを表示する" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:183 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:218 msgctxt "@action:inmenu menubar:help" msgid "Report a &Bug" msgstr "報告&バグ" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:191 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:226 msgctxt "@action:inmenu menubar:help" msgid "&About..." msgstr "アバウト..." # can’t enter japanese text -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:198 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:233 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:208 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:243 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:217 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:252 msgctxt "@action:inmenu menubar:edit" msgid "Multiply Selected Model" msgid_plural "Multiply Selected Models" msgstr[0] "選択した複数のモデル" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:226 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:261 msgctxt "@action:inmenu" msgid "Delete Model" msgstr "モデルを消去する" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:234 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:269 msgctxt "@action:inmenu" msgid "Ce&nter Model on Platform" msgstr "プラットホームの中心にモデルを配置" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:240 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:275 msgctxt "@action:inmenu menubar:edit" msgid "&Group Models" msgstr "&モデルグループ" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:250 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:295 msgctxt "@action:inmenu menubar:edit" msgid "Ungroup Models" msgstr "モデルを非グループ化" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:260 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:305 msgctxt "@action:inmenu menubar:edit" msgid "&Merge Models" msgstr "&モデルの合体" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:270 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:315 msgctxt "@action:inmenu" msgid "&Multiply Model..." msgstr "&モデルを増倍する…" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:277 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:322 msgctxt "@action:inmenu menubar:edit" msgid "&Select All Models" msgstr "&すべてのモデル選択" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:287 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:332 msgctxt "@action:inmenu menubar:edit" msgid "&Clear Build Plate" msgstr "&ビルドプレート上のクリア" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:297 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:342 msgctxt "@action:inmenu menubar:file" msgid "Re&load All Models" msgstr "すべてのモデルを読み込む" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:306 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:351 +msgctxt "@action:inmenu menubar:edit" +msgid "Arrange All Models To All Build Plates" +msgstr "すべてのモデルをすべてのビルドプレートに配置" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:358 msgctxt "@action:inmenu menubar:edit" msgid "Arrange All Models" msgstr "すべてのモデルをアレンジする" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:314 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:366 msgctxt "@action:inmenu menubar:edit" msgid "Arrange Selection" msgstr "選択をアレンジする" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:321 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:373 msgctxt "@action:inmenu menubar:edit" msgid "Reset All Model Positions" msgstr "すべてのモデルのポジションをリセットする" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:328 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:380 msgctxt "@action:inmenu menubar:edit" msgid "Reset All Model &Transformations" msgstr "すべてのモデル&変更点をリセットする" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:335 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:387 msgctxt "@action:inmenu menubar:file" msgid "&Open File(s)..." msgstr "&ファイルを開く(s)…" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:343 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:395 msgctxt "@action:inmenu menubar:file" msgid "&New Project..." msgstr "&新しいプロジェクト…" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:350 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:402 msgctxt "@action:inmenu menubar:help" msgid "Show Engine &Log..." msgstr "エンジン&ログを表示する" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:358 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:410 msgctxt "@action:inmenu menubar:help" msgid "Show Configuration Folder" msgstr "コンフィグレーションのフォルダーを表示する" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:365 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:417 msgctxt "@action:menu" msgid "Configure setting visibility..." msgstr "視野のセッティングを構成する" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:372 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:424 msgctxt "@action:menu" msgid "Browse plugins..." msgstr "プラグインをみる" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:379 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:431 msgctxt "@action:menu" msgid "Installed plugins..." msgstr "インストールされたプラグイン" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:28 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:438 +msgctxt "@action:inmenu menubar:view" +msgid "Expand/Collapse Sidebar" +msgstr "サイドバーを展開する/たたむ" + +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:26 msgctxt "@label:PrintjobStatus" msgid "Please load a 3D model" msgstr "3Dモデルをロードしてください。" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:34 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:36 msgctxt "@label:PrintjobStatus" msgid "Ready to slice" msgstr "スライスの準備ができました。" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:36 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:38 msgctxt "@label:PrintjobStatus" msgid "Slicing..." msgstr "スライス中…" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:38 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:40 msgctxt "@label:PrintjobStatus %1 is target operation" msgid "Ready to %1" msgstr "%1の準備完了" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:40 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:42 msgctxt "@label:PrintjobStatus" msgid "Unable to Slice" msgstr "スライスできません。" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:42 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:44 msgctxt "@label:PrintjobStatus" msgid "Slicing unavailable" msgstr "スライスが利用不可能" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:162 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:171 +msgctxt "@info:tooltip" +msgid "Slice current printjob" +msgstr "現在のプリントジョブをスライスします" + +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:171 +msgctxt "@info:tooltip" +msgid "Cancel slicing process" +msgstr "スライスプロセスをキャンセルします" + +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:183 msgctxt "@label:Printjob" msgid "Prepare" msgstr "準備する" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:162 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:183 msgctxt "@label:Printjob" msgid "Cancel" msgstr "キャンセル" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:302 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:317 msgctxt "@info:tooltip" msgid "Select the active output device" msgstr "アクティブなアウトプットデバイスを選択する" #: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:19 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:620 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:696 msgctxt "@title:window" msgid "Open file(s)" msgstr "ファイルを開く(s)" @@ -3758,114 +4115,114 @@ msgctxt "@title:window" msgid "Ultimaker Cura" msgstr "Ultimaker Cura" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:81 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:102 msgctxt "@title:menu menubar:toplevel" msgid "&File" msgstr "&ファイル" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:98 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:119 msgctxt "@action:inmenu menubar:file" msgid "&Save Selection to File" msgstr "&ファイルに選択したものを保存" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:107 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:128 msgctxt "@title:menu menubar:file" msgid "Save &As..." msgstr "名前をつけて保存" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:118 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:139 msgctxt "@title:menu menubar:file" -msgid "Save project" -msgstr "プロジェクトを保存" +msgid "Save &Project..." +msgstr "プロジェクトの保存 (&P)..." -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:141 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:162 msgctxt "@title:menu menubar:toplevel" msgid "&Edit" msgstr "&編集" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:158 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:179 msgctxt "@title:menu" msgid "&View" msgstr "&ビュー" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:163 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:184 msgctxt "@title:menu" msgid "&Settings" msgstr "&設定" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:165 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:186 msgctxt "@title:menu menubar:toplevel" msgid "&Printer" msgstr "&プリンター" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:175 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:187 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:196 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:208 msgctxt "@title:menu" msgid "&Material" msgstr "&フィラメント" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:176 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:188 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:197 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:209 msgctxt "@title:menu" msgid "&Profile" msgstr "&プロファイル" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:180 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:201 msgctxt "@action:inmenu" msgid "Set as Active Extruder" msgstr "アクティブエクストルーダーとしてセットする" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:198 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:219 msgctxt "@title:menu menubar:toplevel" msgid "E&xtensions" msgstr "拡張子" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:232 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:253 msgctxt "@title:menu menubar:toplevel" msgid "P&lugins" msgstr "プラグイン" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:240 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:261 msgctxt "@title:menu menubar:toplevel" msgid "P&references" msgstr "プレファレンス" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:248 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:269 msgctxt "@title:menu menubar:toplevel" msgid "&Help" msgstr "ヘルプ" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:330 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:351 msgctxt "@action:button" msgid "Open File" msgstr "ファイルを開く" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:442 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:512 msgctxt "@title:tab" msgid "Settings" msgstr "設定" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:478 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:554 msgctxt "@title:window" msgid "New project" msgstr "新しいプロジェクト…" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:479 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:555 msgctxt "@info:question" msgid "Are you sure you want to start a new project? This will clear the build plate and any unsaved settings." msgstr "新しいプロジェクトを開始しますか?この作業では保存していない設定やビルドプレートをクリアします。" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:721 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:797 msgctxt "@window:title" msgid "Install Plugin" msgstr "プラグインをインストール" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:728 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:804 msgctxt "@title:window" msgid "Open File(s)" msgstr "ファイルを開く(s)" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:731 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:807 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点のみ選んでください。" @@ -3890,97 +4247,82 @@ msgctxt "@action:label" msgid "Don't show project summary on save again" msgstr "保存中のプロジェクトサマリーを非表示にする" -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:264 -msgctxt "@action:button" -msgid "Save" -msgstr "保存" - -#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:74 -msgctxt "@title:tab" -msgid "Prepare" -msgstr "準備する" - -#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:100 -msgctxt "@title:tab" -msgid "Monitor" -msgstr "モニター" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:163 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:175 msgctxt "@label" msgid "Layer Height" msgstr "レイヤーの高さ" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:323 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:345 msgctxt "@tooltip" msgid "A custom profile is currently active. To enable the quality slider, choose a default quality profile in Custom tab" msgstr "カスタムプロファイルが有効になっています。品質スライダーを有効にするには、カスタムタブでデフォルトの品質プロファイルを選択してください" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:340 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:362 msgctxt "@label" msgid "Print Speed" msgstr "プリントスピード" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:350 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:374 msgctxt "@label" msgid "Slower" msgstr "ゆっくり" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:361 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:385 msgctxt "@label" msgid "Faster" msgstr "早く" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:388 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:423 msgctxt "@tooltip" msgid "You have modified some profile settings. If you want to change these go to custom mode." msgstr "プロファイルの設定がいくつか変更されました。変更を有効にするにはカスタムモードに移動してください。" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:413 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:446 msgctxt "@label" msgid "Infill" msgstr "インフィル" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:633 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:668 msgctxt "@label" msgid "Gradual infill will gradually increase the amount of infill towards the top." msgstr "グラデュアルインフィルはトップに向かうに従ってインフィルの量を増やします。" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:645 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:680 msgctxt "@label" msgid "Enable gradual" msgstr "グラデュアルを有効にする" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:712 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:747 msgctxt "@label" msgid "Generate Support" msgstr "サポートを生成します。" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:746 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:781 msgctxt "@label" msgid "Generate structures to support parts of the model which have overhangs. Without these structures, such parts would collapse during printing." msgstr "オーバーハングがあるモデルにサポートを生成します。このサポート構造なしでは、プリント中にオーバーハングのパーツが崩壊してしまいます。" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:764 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:799 msgctxt "@label" msgid "Support Extruder" msgstr "サポートエクストルーダー" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:816 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:851 msgctxt "@label" msgid "Select which extruder to use for support. This will build up supporting structures below the model to prevent the model from sagging or printing in mid air." msgstr "サポートに使うエクストルーダーを選択してください。モデルの垂れや中空プリントを避けるためにモデルの下にサポート構造を生成します。" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:839 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:874 msgctxt "@label" msgid "Build Plate Adhesion" msgstr "ビルドプレートの接着" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:894 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:929 msgctxt "@label" msgid "Enable printing a brim or raft. This will add a flat area around or under your object which is easy to cut off afterwards." msgstr "ブリムまたはラフトのプリントの有効化。それぞれ、プリントの周り、また造形物の下に底面を加え切り取りやすくします。" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:934 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:969 msgctxt "@label" msgid "Need help improving your prints?
      Read the Ultimaker Troubleshooting Guides" msgstr "プリントにヘルプが必要ですか?
      Ultimakerトラブルシューティングガイドを読んでください。" @@ -3997,17 +4339,22 @@ msgctxt "@title:window" msgid "Open project file" msgstr "プロジェクトを開く" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:72 +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:93 msgctxt "@text:window" msgid "This is a Cura project file. Would you like to open it as a project or import the models from it?" msgstr "これはCuraのプロジェクトファイルです。プロジェクトとしてあけますか、それともモデルのみ取り込みますか?" #: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:103 +msgctxt "@text:window" +msgid "Remember my choice" +msgstr "選択を記憶させる" + +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:122 msgctxt "@action:button" msgid "Open as project" msgstr "プロジェクトを開く" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:122 +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:131 msgctxt "@action:button" msgid "Import models" msgstr "モデルを取り込む" @@ -4017,21 +4364,36 @@ msgctxt "@title:window" msgid "Engine Log" msgstr "エンジンログ" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:242 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:245 msgctxt "@label" msgid "Material" msgstr "フィラメント" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:349 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:352 msgctxt "@label" -msgid "Check compatibility" -msgstr "互換性の確認" +msgid "Check compatibility" +msgstr "互換性の確認" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:369 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:372 msgctxt "@tooltip" msgid "Click to check the material compatibility on Ultimaker.com." msgstr "Ultimaker.comにてマテリアルのコンパティビリティを調べるためにクリック" +#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:211 +msgctxt "@option:check" +msgid "See only current build plate" +msgstr "現在のビルドプレートのみを表示" + +#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:227 +msgctxt "@action:button" +msgid "Arrange to all build plates" +msgstr "すべてのビルドプレートに配置" + +#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:247 +msgctxt "@action:button" +msgid "Arrange current build plate" +msgstr "現在のビルドプレートを配置" + #: MachineSettingsAction/plugin.json msgctxt "description" msgid "Provides a way to change machine settings (such as build volume, nozzle size, etc)" @@ -4122,6 +4484,26 @@ msgctxt "name" msgid "USB printing" msgstr "USBプリンティング" +#: PrepareStage/plugin.json +msgctxt "description" +msgid "Provides a prepare stage in Cura." +msgstr "Curaで準備ステージを提供します。" + +#: PrepareStage/plugin.json +msgctxt "name" +msgid "Prepare Stage" +msgstr "ステージの準備" + +#: CuraLiveScriptingPlugin/plugin.json +msgctxt "description" +msgid "Provides an edit window for direct script editing." +msgstr "直接スクリプト編集のための編集ウィンドウを提供します。" + +#: CuraLiveScriptingPlugin/plugin.json +msgctxt "name" +msgid "Live scripting tool" +msgstr "ライブスクリプティングツール" + #: RemovableDriveOutputDevice/plugin.json msgctxt "description" msgid "Provides removable drive hotplugging and writing support." @@ -4142,6 +4524,16 @@ msgctxt "name" msgid "UM3 Network Connection" msgstr "UM3ネットワークコネクション" +#: MonitorStage/plugin.json +msgctxt "description" +msgid "Provides a monitor stage in Cura." +msgstr "Curaでモニターステージを提供します。" + +#: MonitorStage/plugin.json +msgctxt "name" +msgid "Monitor Stage" +msgstr "モニターステージ" + #: FirmwareUpdateChecker/plugin.json msgctxt "description" msgid "Checks for firmware updates." @@ -4154,8 +4546,8 @@ msgstr "ファームウェアアップデートチェッカー" #: CuraSolidWorksPlugin/plugin.json msgctxt "description" -msgid "Gives you the possibility to open certain files via SolidWorks itself. These are then converted and loaded into Cura" -msgstr "ソリッドワークスにて特定のファイルを開くことが可能です。その後変換され、Curaに取り込めます。" +msgid "Gives you the possibility to open certain files using SolidWorks itself. Conversion is done by this plugin and additional optimizations." +msgstr "ソリッドワークス自体を使って特定のファイルを開くことが可能です。変換はこのプラグインによって行われ、追加の最適化も行われます。" #: CuraSolidWorksPlugin/plugin.json msgctxt "name" @@ -4222,6 +4614,16 @@ msgctxt "name" msgid "Legacy Cura Profile Reader" msgstr "レガシーCuraプロファイルリーダー" +#: CuraBlenderPlugin/plugin.json +msgctxt "description" +msgid "Helps to open Blender files directly in Cura." +msgstr "Curaの中で直接Blenderファイルを開くために役立ちます。" + +#: CuraBlenderPlugin/plugin.json +msgctxt "name" +msgid "Blender Integration (experimental)" +msgstr "Blender統合 (実験的)" + #: GCodeProfileReader/plugin.json msgctxt "description" msgid "Provides support for importing profiles from g-code files." @@ -4382,6 +4784,16 @@ 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." @@ -4422,6 +4834,156 @@ msgctxt "name" msgid "Cura Profile Reader" msgstr "Curaプロファイルリーダー" +#~ msgctxt "@label" +#~ msgid "Unknown" +#~ msgstr "不明" + +#~ msgctxt "@info:status" +#~ msgid "Errors appeared while opening your SolidWorks file! Please check, whether it is possible to open your file in SolidWorks itself without any problems as well!" +#~ msgstr "ソリッドワークスのファイルを開く際にエラーが発生しました!ソリッドワークスで、問題なく開くことができるか確認してください。" + +#~ msgctxt "@info:status" +#~ msgid "Error while starting %s!" +#~ msgstr "%sを開始中にエラーが発生" + +#~ msgctxt "@item:inlistbox" +#~ msgid "Simulation view" +#~ msgstr "シミュレーションビュー" + +#~ msgctxt "@info" +#~ msgid "Cura collects anonymised slicing statistics. You can disable this in the preferences." +#~ msgstr "Curaが非特定なスライスされた数字を集めました。プレファレンス内で無効にできます。" + +#~ msgctxt "@action:button" +#~ msgid "Dismiss" +#~ msgstr "却下する" + +#~ msgctxt "@menuitem" +#~ msgid "Global" +#~ msgstr "グローバル" + +#~ msgctxt "@label crash message" +#~ msgid "" +#~ "

      A fatal exception has occurred. 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 "" +#~ "

      致命的な例外が発生しました。問題解決のためこのクラッシュレポートを送信してください

      \n" +#~ "

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

      \n" +#~ " " + +#~ msgctxt "@label Cura version" +#~ msgid "Cura version: {version}
      " +#~ msgstr "Curaバージョン: {version}
      " + +#~ msgctxt "@label Platform" +#~ msgid "Platform: {platform}
      " +#~ msgstr "プラットフォーム: {platform}
      " + +#~ msgctxt "@label Qt version" +#~ msgid "Qt version: {qt}
      " +#~ msgstr "Qtバージョン: {qt}
      " + +#~ msgctxt "@label PyQt version" +#~ msgid "PyQt version: {pyqt}
      " +#~ msgstr "PyQtバージョン: {pyqt}
      " + +#~ msgctxt "@label OpenGL" +#~ msgid "OpenGL: {opengl}
      " +#~ msgstr "OpenGL: {opengl}
      " + +#~ msgctxt "@title:groupbox" +#~ msgid "Exception traceback" +#~ msgstr "例外トレースバック" + +#~ msgctxt "@label" +#~ msgid "Material diameter" +#~ msgstr "フィラメント直径" + +#~ msgctxt "@label" +#~ msgid "Ultimaker 3" +#~ msgstr "Ultimaker3" + +#~ msgctxt "@label" +#~ msgid "Ultimaker 3 Extended" +#~ msgstr "Ultimaker 3 Extended" + +#~ msgctxt "@title:window" +#~ msgid "Cura SolidWorks Plugin Configuration" +#~ msgstr "Curaソリッドワークスプラグインコンフィグレーション" + +#~ msgctxt "@action:label" +#~ msgid "Default quality of the exported STL:" +#~ msgstr "書き出されたSTLのクオリティーデフォルト" + +#~ msgctxt "@option:curaSolidworksStlQuality" +#~ msgid "Always ask" +#~ msgstr "毎回確認" + +#~ msgctxt "@option:curaSolidworksStlQuality" +#~ msgid "Always use Fine quality" +#~ msgstr "常にファインクオリティーを使用する" + +#~ msgctxt "@option:curaSolidworksStlQuality" +#~ msgid "Always use Coarse quality" +#~ msgstr "常に粗めのクオリティーを使用する" + +#~ msgctxt "@title:window" +#~ msgid "Import SolidWorks File as STL..." +#~ msgstr "ソリッドワークスのファイルをSTLとして取り込む" + +#~ msgctxt "@info:tooltip" +#~ msgid "Quality of the Exported STL" +#~ msgstr "書き出されたSTLのクオリティー" + +#~ msgctxt "@action:label" +#~ msgid "Quality" +#~ msgstr "クオリティー" + +#~ msgctxt "@option:curaSolidworksStlQuality" +#~ msgid "Coarse" +#~ msgstr "粗い" + +#~ msgctxt "@option:curaSolidworksStlQuality" +#~ msgid "Fine" +#~ msgstr "ファイン" + +#~ msgctxt "@" +#~ msgid "No Profile Available" +#~ msgstr "利用可能なプロファイルがありません" + +#~ msgctxt "@label" +#~ msgid "This setting is always shared between all extruders. Changing it here will change the value for all extruders" +#~ msgstr "この設定は常に全てのエクストルーダーに共有されています。ここですべてのエクストルーダーの数値を変更できます。" + +#~ msgctxt "@tooltip" +#~ msgid "Time specification
      " +#~ msgstr "時間仕様
      " + +#~ msgctxt "@action:inmenu menubar:view" +#~ msgid "&Reset camera position" +#~ msgstr "&カメラ位置のリセット" + +#~ msgctxt "@title:menu menubar:file" +#~ msgid "Save project" +#~ msgstr "プロジェクトを保存" + +#~ msgctxt "@title:tab" +#~ msgid "Prepare" +#~ msgstr "準備する" + +#~ msgctxt "@title:tab" +#~ msgid "Monitor" +#~ msgstr "モニター" + +#~ msgctxt "@label" +#~ msgid "Check compatibility" +#~ msgstr "互換性の確認" + +#~ msgctxt "description" +#~ msgid "Gives you the possibility to open certain files via SolidWorks itself. These are then converted and loaded into Cura" +#~ msgstr "ソリッドワークスにて特定のファイルを開くことが可能です。その後変換され、Curaに取り込めます。" + #~ msgctxt "@label:status" #~ msgid "Blocked" #~ msgstr "ブロックされました" @@ -4442,13 +5004,9 @@ msgstr "Curaプロファイルリーダー" #~ msgid "To ensure that your {machine_name} is equipped with the latest features it is recommended to update the firmware regularly. This can be done on the {machine_name} (when connected to the network) or via USB." #~ msgstr "{machine_name}が最新の機能を得るために、定期的にファームウェアをアップデートすることをお勧めします。{machine_name}(ネットワーク上で接続)またはUSBにて行ってください。 " -msgctxt "@item:inlistbox" -msgid "Layer view" -msgstr "レイヤービュー" - -msgctxt "@info:title" -msgid "Layer View" -msgstr "レイヤービュー" +#~ msgctxt "@info:title" +#~ msgid "Layer View" +#~ msgstr "レイヤービュー" #~ msgctxt "@menuitem" #~ msgid "Browse plugins" @@ -4550,6 +5108,6 @@ msgstr "レイヤービュー" #~ msgid "Provides the Layer view." #~ msgstr "レイヤービューを供給する" -msgctxt "name" -msgid "Layer View" -msgstr "レイヤービュー" +#~ msgctxt "name" +#~ msgid "Layer View" +#~ msgstr "レイヤービュー" diff --git a/resources/i18n/ja_JP/fdmextruder.def.json.po b/resources/i18n/ja_JP/fdmextruder.def.json.po index d1ff38fcf2..69c13959bd 100644 --- a/resources/i18n/ja_JP/fdmextruder.def.json.po +++ b/resources/i18n/ja_JP/fdmextruder.def.json.po @@ -2,12 +2,12 @@ # Copyright (C) 2017 Ultimaker # This file is distributed under the same license as the Cura package. # Ruben Dulek , 2017. -# +# msgid "" msgstr "" "Project-Id-Version: Cura 3.0\n" -"Report-Msgid-Bugs-To: http://github.com/ultimaker/uranium\n" -"POT-Creation-Date: 2017-11-21 16:58+0000\n" +"Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" +"POT-Creation-Date: 2017-08-02 16:53+0000\n" "PO-Revision-Date: 2017-11-30 13:05+0100\n" "Last-Translator: Brule\n" "Language-Team: Brule\n" diff --git a/resources/i18n/ja_JP/fdmprinter.def.json.po b/resources/i18n/ja_JP/fdmprinter.def.json.po index 56ba768bc9..25c3b58fe3 100644 --- a/resources/i18n/ja_JP/fdmprinter.def.json.po +++ b/resources/i18n/ja_JP/fdmprinter.def.json.po @@ -1,14 +1,14 @@ -# Cura JSON setting files -# Copyright (C) 2017 Ultimaker +# Cura +# Copyright (C) 2018 Ultimaker # This file is distributed under the same license as the Cura package. -# Ruben Dulek , 2017. -# +# Ruben Dulek , 2018. +# msgid "" msgstr "" -"Project-Id-Version: Cura 3.0\n" -"Report-Msgid-Bugs-To: http://github.com/ultimaker/uranium\n" -"POT-Creation-Date: 2017-11-21 16:58+0000\n" -"PO-Revision-Date: 2017-11-30 13:05+0100\n" +"Project-Id-Version: Cura 3.2\n" +"Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" +"POT-Creation-Date: 2018-01-29 09:48+0000\n" +"PO-Revision-Date: 2018-02-10 05:04+0900\n" "Last-Translator: Brule\n" "Language-Team: Brule\n" "Language: ja_JP\n" @@ -62,7 +62,9 @@ msgctxt "machine_start_gcode description" msgid "" "Gcode commands to be executed at the very start - separated by \n" "." -msgstr "Gcodeのコマンドは −で始まり\nで区切られます。" +msgstr "" +"Gcodeのコマンドは −で始まり\n" +"で区切られます。" #: fdmprinter.def.json msgctxt "machine_end_gcode label" @@ -75,7 +77,9 @@ msgctxt "machine_end_gcode description" msgid "" "Gcode commands to be executed at the very end - separated by \n" "." -msgstr "Gcodeのコマンドは −で始まり\nで区切られます。" +msgstr "" +"Gcodeのコマンドは −で始まり\n" +"で区切られます。" #: fdmprinter.def.json msgctxt "material_guid label" @@ -377,6 +381,16 @@ msgctxt "machine_gcode_flavor option Repetier" msgid "Repetier" msgstr "Repetier" +#: fdmprinter.def.json +msgctxt "machine_firmware_retract label" +msgid "Firmware Retraction" +msgstr "ファームウェア引き戻し" + +#: fdmprinter.def.json +msgctxt "machine_firmware_retract description" +msgid "Whether to use firmware retract commands (G10/G11) instead of using the E property in G1 commands to retract the material." +msgstr "材料を引き戻すためにG1コマンドのEプロパティーを使用する代わりにファームウェア引き戻しコマンド (G10/G11) を使用するかどうか。" + # msgstr "Repetier" #: fdmprinter.def.json msgctxt "machine_disallowed_areas label" @@ -641,31 +655,6 @@ msgctxt "layer_height_0 description" msgid "The height of the initial layer in mm. A thicker initial layer makes adhesion to the build plate easier." msgstr "初期レイヤーの高さ(mm)。厚い初期層はビルドプレートへの接着を容易にする。" -#: fdmprinter.def.json -msgctxt "slicing_tolerance label" -msgid "Slicing Tolerance" -msgstr "スライス公差" - -#: fdmprinter.def.json -msgctxt "slicing_tolerance description" -msgid "How to slice layers with diagonal surfaces. The areas of a layer can be generated based on where the middle of the layer intersects the surface (Middle). Alternatively each layer can have the areas which fall inside of the volume throughout the height of the layer (Exclusive) or a layer has the areas which fall inside anywhere within the layer (Inclusive). Exclusive retains the most details, Inclusive makes for the best fit and Middle takes the least time to process." -msgstr "表面を斜めにスライスする方法を指定します。レイヤーの領域は、レイヤーの中央がサーフェス(中央)と交差する位置に基づいて生成できます。また、各層は、レイヤーの高さを通してボリュームの内側に収まる領域を持つ(排他)か、またはレイヤー内の任意の場所内に収まる領域を持っています(包括)。排他は最も細かく、包括は最もフィットし、中間は時間がかかります。" - -#: fdmprinter.def.json -msgctxt "slicing_tolerance option middle" -msgid "Middle" -msgstr "中間" - -#: fdmprinter.def.json -msgctxt "slicing_tolerance option exclusive" -msgid "Exclusive" -msgstr "排他" - -#: fdmprinter.def.json -msgctxt "slicing_tolerance option inclusive" -msgid "Inclusive" -msgstr "包括" - #: fdmprinter.def.json msgctxt "line_width label" msgid "Line Width" @@ -706,17 +695,6 @@ msgctxt "wall_line_width_x description" msgid "Width of a single wall line for all wall lines except the outermost one." msgstr "一番外側のウォールラインを除くすべてのウォールラインのラインの幅。" -#: fdmprinter.def.json -msgctxt "roofing_line_width label" -msgid "Top Surface Skin Line Width" -msgstr "最上面のライン幅" - -# msgstr "上表面スキンの線幅" -#: fdmprinter.def.json -msgctxt "roofing_line_width description" -msgid "Width of a single line of the areas at the top of the print." -msgstr "プリントの上部の 線の幅。" - #: fdmprinter.def.json msgctxt "skin_line_width label" msgid "Top/Bottom Line Width" @@ -907,46 +885,6 @@ msgctxt "roofing_layer_count description" msgid "The number of top most skin layers. Usually only one top most layer is sufficient to generate higher quality top surfaces." msgstr "上部表面のレイヤー数。通常一層で綺麗に出来上がります" -#: fdmprinter.def.json -msgctxt "roofing_pattern label" -msgid "Top Surface Skin Pattern" -msgstr "上部表面パターン" - -# msgstr "上層表面スキンパターン" -#: fdmprinter.def.json -msgctxt "roofing_pattern description" -msgid "The pattern of the top most layers." -msgstr "上層のパターン" - -#: fdmprinter.def.json -msgctxt "roofing_pattern option lines" -msgid "Lines" -msgstr "直線" - -# msgstr "線" -#: fdmprinter.def.json -msgctxt "roofing_pattern option concentric" -msgid "Concentric" -msgstr "同心円" - -# msgstr "同心" -#: fdmprinter.def.json -msgctxt "roofing_pattern option zigzag" -msgid "Zig Zag" -msgstr "ジグザグ" - -# msgstr "ジグザグ" -#: fdmprinter.def.json -msgctxt "roofing_angles label" -msgid "Top Surface Skin Line Directions" -msgstr "最上面のラインの向き" - -# msgstr "上層表面スキンラインの方向" -#: fdmprinter.def.json -msgctxt "roofing_angles description" -msgid "A list of integer line directions to use when the top surface skin layers use the lines or zig zag pattern. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the traditional default angles (45 and 135 degrees)." -msgstr "トップ表面層に縦かジグザグパターンを利用する時に使用する整数の行方向のリスト。リスト内から順番に使われていき、リストの最後に達するとまた最初の設定値に戻ります。リストアイテムはカンマで区切られ、全体はカッコで括られています。デフォルトでは何も入っておらず、設定角度は (45 度と 135 度)になっています。" - #: fdmprinter.def.json msgctxt "top_bottom_extruder_nr label" msgid "Top/Bottom Extruder" @@ -1079,6 +1017,17 @@ msgctxt "wall_0_inset description" msgid "Inset applied to the path of the outer wall. If the outer wall is smaller than the nozzle, and printed after the inner walls, use this offset to get the hole in the nozzle to overlap with the inner walls instead of the outside of the model." msgstr "外壁の経路にはめ込む。外壁がノズルよりも小さく、内壁の後に造形されている場合は、オフセットを使用して、ノズルの穴をモデルの外側ではなく内壁と重なるようにします。" +#: fdmprinter.def.json +msgctxt "optimize_wall_printing_order label" +msgid "Optimize Wall Printing Order" +msgstr "壁印刷順序の最適化" + +# msgstr "壁のプリントの順番を最適化する" +#: fdmprinter.def.json +msgctxt "optimize_wall_printing_order description" +msgid "Optimize the order in which walls are printed so as to reduce the number of retractions and the distance travelled. Most parts will benefit from this being enabled but some may actually take longer so please compare the print time estimates with and without optimization." +msgstr "撤回と移動距離を減らすために、壁のプリント順序を最適化します。ほとんどの部品がこの設定を有効にしている方が良い印刷結果につながりますが、実際には時間がかかることがありますので、最適化の有無に関わらず印刷時間を比較してください。" + #: fdmprinter.def.json msgctxt "outer_inset_first label" msgid "Outer Before Inner Walls" @@ -1149,6 +1098,16 @@ msgctxt "fill_perimeter_gaps option everywhere" msgid "Everywhere" msgstr "全対象" +#: fdmprinter.def.json +msgctxt "filter_out_tiny_gaps label" +msgid "Filter Out Tiny Gaps" +msgstr "小さなギャップのフィルターアウト" + +#: fdmprinter.def.json +msgctxt "filter_out_tiny_gaps description" +msgid "Filter out tiny gaps to reduce blobs on outside of model." +msgstr "モデル外部の塊を減らすために小さなギャップをフィルターアウトします。" + #: fdmprinter.def.json msgctxt "fill_outline_gaps label" msgid "Print Thin Walls" @@ -1220,7 +1179,9 @@ msgstr "ZシームX" #: fdmprinter.def.json msgctxt "z_seam_x description" msgid "The X coordinate of the position near where to start printing each part in a layer." -msgstr "レイヤー内の各印刷を開始するX座\n標の位置。" +msgstr "" +"レイヤー内の各印刷を開始するX座\n" +"標の位置。" #: fdmprinter.def.json msgctxt "z_seam_y label" @@ -1561,7 +1522,7 @@ msgstr "インフィルXオフセット" #: fdmprinter.def.json msgctxt "infill_offset_x description" -msgid "The infill pattern is offset this distance along the X axis." +msgid "The infill pattern is moved this distance along the X axis." msgstr "インフィルパターンはX軸に沿ってこの距離を移動します。" #: fdmprinter.def.json @@ -1571,7 +1532,7 @@ msgstr "インフィルYオフセット" #: fdmprinter.def.json msgctxt "infill_offset_y description" -msgid "The infill pattern is offset this distance along the Y axis." +msgid "The infill pattern is moved this distance along the Y axis." msgstr "インフィルパターンはY軸に沿ってこの距離を移動します。" #: fdmprinter.def.json @@ -1589,11 +1550,10 @@ msgctxt "infill_overlap label" msgid "Infill Overlap Percentage" msgstr "インフィル公差量" -# msgstr "インフィルのオーバーラップ率" #: fdmprinter.def.json msgctxt "infill_overlap 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 "インフィルと壁が交差する量、わずかな交差によって壁がインフィルにしっかりつながります。" +msgid "The amount of overlap between the infill and the walls as a percentage of the infill line width. A slight overlap allows the walls to connect firmly to the infill." +msgstr "インフィルと壁のオーバーラップ量 (インフィルライン幅に対する%)。少しのオーバーラップによって壁がインフィルにしっかりつながります。" #: fdmprinter.def.json msgctxt "infill_overlap_mm label" @@ -1613,8 +1573,8 @@ msgstr "表面公差量" #: fdmprinter.def.json msgctxt "skin_overlap description" -msgid "The amount of overlap between the skin and the walls as a percentage of the line width. A slight overlap allows the walls to connect firmly to the skin. This is a percentage of the average line widths of the skin lines and the innermost wall." -msgstr "表面と壁の交わる量。ラインの幅の%で設定。少しの接触でしっかりと繋がります。表面と内壁の交わる量の平均値になります。" +msgid "The amount of overlap between the skin and the walls as a percentage of the skin line width. A slight overlap allows the walls to connect firmly to the skin. This is a percentage of the average line widths of the skin lines and the innermost wall." +msgstr "スキンと壁のオーバーラップ量 (スキンライン幅に対する%)。少しのオーバーラップによって壁がスキンにしっかりつながります。これは、スキンライン幅の平均ライン幅と最内壁の%です。" #: fdmprinter.def.json msgctxt "skin_overlap_mm label" @@ -1676,7 +1636,9 @@ msgstr "インフィル優先" #: fdmprinter.def.json msgctxt "infill_before_walls description" msgid "Print the infill before printing the walls. Printing the walls first may lead to more accurate walls, but overhangs print worse. Printing the infill first leads to sturdier walls, but the infill pattern might sometimes show through the surface." -msgstr "壁より前にインフィルをプリントします はじめに壁をプリントするとより精密な壁になりますが、オーバーハングのプリントは悪化します\nはじめにインフィルをプリントすると丈夫な壁になりますが、インフィルの模様が時折表面から透けて表れます" +msgstr "" +"壁より前にインフィルをプリントします はじめに壁をプリントするとより精密な壁になりますが、オーバーハングのプリントは悪化します\n" +"はじめにインフィルをプリントすると丈夫な壁になりますが、インフィルの模様が時折表面から透けて表れます" #: fdmprinter.def.json msgctxt "min_infill_area label" @@ -1783,16 +1745,6 @@ msgctxt "material description" msgid "Material" msgstr "マテリアル" -#: fdmprinter.def.json -msgctxt "material_flow_dependent_temperature label" -msgid "Auto Temperature" -msgstr "自動温度" - -#: fdmprinter.def.json -msgctxt "material_flow_dependent_temperature description" -msgid "Change the temperature for each layer automatically with the average flow speed of that layer." -msgstr "その画層の平均流速で自動的にレイヤーごとに温度を変更します。" - #: fdmprinter.def.json msgctxt "default_material_print_temperature label" msgid "Default Printing Temperature" @@ -1843,16 +1795,6 @@ msgctxt "material_final_print_temperature description" msgid "The temperature to which to already start cooling down just before the end of printing." msgstr "印刷終了直前に冷却を開始する温度。" -#: fdmprinter.def.json -msgctxt "material_flow_temp_graph label" -msgid "Flow Temperature Graph" -msgstr "フロー温度グラフ" - -#: fdmprinter.def.json -msgctxt "material_flow_temp_graph description" -msgid "Data linking material flow (in mm3 per second) to temperature (degrees Celsius)." -msgstr "マテリアルフロー(毎秒 3mm) と温度 (° c) をリンクします。" - #: fdmprinter.def.json msgctxt "material_extrusion_cool_down_speed label" msgid "Extrusion Cool Down Speed Modifier" @@ -1870,8 +1812,8 @@ msgstr "ビルドプレート温度" #: fdmprinter.def.json msgctxt "material_bed_temperature description" -msgid "The temperature used for the heated build plate. If this is 0, the bed will not heat up for this print." -msgstr "加熱式ビルドプレート温度。これが 0 の場合、ベッドは加熱しません。" +msgid "The temperature used for the heated build plate. If this is 0, the bed temperature will not be adjusted." +msgstr "加熱式ビルドプレート温度。これが 0 の場合、ベッド温度は調整されません。" #: fdmprinter.def.json msgctxt "material_bed_temperature_layer_0 label" @@ -3586,6 +3528,17 @@ msgctxt "support_tower_roof_angle description" msgid "The angle of a rooftop of a tower. A higher value results in pointed tower roofs, a lower value results in flattened tower roofs." msgstr "タワーの屋上の角度。値が高いほど尖った屋根が得られ、値が低いほど屋根が平らになります。" +#: fdmprinter.def.json +msgctxt "support_mesh_drop_down label" +msgid "Drop Down Support Mesh" +msgstr "サポートメッシュの下処理" + +# msgstr "ドロップダウンサポートメッシュ" +#: fdmprinter.def.json +msgctxt "support_mesh_drop_down description" +msgid "Make support everywhere below the support mesh, so that there's no overhang in the support mesh." +msgstr "サポートメッシュの下のサポート材を全箇所に作ります、これはサポートメッシュ下にてオーバーハングしないようにするためです。" + #: fdmprinter.def.json msgctxt "platform_adhesion label" msgid "Build Plate Adhesion" @@ -3599,7 +3552,7 @@ msgstr "密着性" #: fdmprinter.def.json msgctxt "prime_blob_enable label" msgid "Enable Prime Blob" -msgstr "プライムボルブを有効にする" +msgstr "プライムブロブを有効にする" # msgstr "プライムブロブを有効にする" #: fdmprinter.def.json @@ -3691,7 +3644,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" @@ -4224,16 +4179,6 @@ msgctxt "meshfix_keep_open_polygons description" msgid "Normally Cura tries to stitch up small holes in the mesh and remove parts of a layer with big holes. Enabling this option keeps those parts which cannot be stitched. This option should be used as a last resort option when everything else fails to produce proper GCode." msgstr "通常、Curaはメッシュ内の小さな穴をスティッチし、大きな穴のあるレイヤーの部分を削除しようとします。このオプションを有効にすると、スティッチできない部分が保持されます。このオプションは、他のすべてが適切なGCodeを生成できない場合の最後の手段として使用する必要があります。" -#: 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 "multiple_mesh_overlap label" msgid "Merged Meshes Overlap" @@ -4389,17 +4334,6 @@ msgctxt "support_mesh description" msgid "Use this mesh to specify support areas. This can be used to generate support structure." msgstr "このメッシュを使用してサポート領域を指定します。これは、サポート構造を生成するために使用できます。" -#: fdmprinter.def.json -msgctxt "support_mesh_drop_down label" -msgid "Drop Down Support Mesh" -msgstr "サポートメッシュの下処理" - -# msgstr "ドロップダウンサポートメッシュ" -#: fdmprinter.def.json -msgctxt "support_mesh_drop_down description" -msgid "Make support everywhere below the support mesh, so that there's no overhang in the support mesh." -msgstr "サポートメッシュの下のサポート材を全箇所に作ります、これはサポートメッシュ下にてオーバーハングしないようにするためです。" - #: fdmprinter.def.json msgctxt "anti_overhang_mesh label" msgid "Anti Overhang Mesh" @@ -4478,15 +4412,200 @@ msgid "experimental!" msgstr "実験的" #: fdmprinter.def.json -msgctxt "optimize_wall_printing_order label" -msgid "Optimize Wall Printing Order" -msgstr "壁印刷順序の最適化" +msgctxt "support_tree_enable label" +msgid "Tree Support" +msgstr "ツリーサポート" -# msgstr "壁のプリントの順番を最適化する" #: fdmprinter.def.json -msgctxt "optimize_wall_printing_order description" -msgid "Optimize the order in which walls are printed so as to reduce the number of retractions and the distance travelled. Most parts will benefit from this being enabled but some may actually take longer so please compare the print time estimates with and without optimization." -msgstr "撤回と移動距離を減らすために、壁のプリント順序を最適化します。ほとんどの部品がこの設定を有効にしている方が良い印刷結果につながりますが、実際には時間がかかることがありますので、最適化の有無に関わらず印刷時間を比較してください。" +msgctxt "support_tree_enable description" +msgid "Generate a tree-like support with branches that support your print. This may reduce material usage and print time, but greatly increases slicing time." +msgstr "プリントを支えるために枝のついた木のようなサポートを生成します。材料とプリント時間が減る可能性がありますが、スライス時間が大きく増加します。" + +#: fdmprinter.def.json +msgctxt "support_tree_angle label" +msgid "Tree Support Branch Angle" +msgstr "ツリーサポート枝角度" + +#: fdmprinter.def.json +msgctxt "support_tree_angle description" +msgid "The angle of the branches. Use a lower angle to make them more vertical and more stable. Use a higher angle to be able to have more reach." +msgstr "枝の角度。枝を垂直で安定したものにするためには小さい角度を使用します。高さを得るためには大きい角度を使用します。" + +#: fdmprinter.def.json +msgctxt "support_tree_branch_distance label" +msgid "Tree Support Branch Distance" +msgstr "ツリーサポート枝間隔" + +#: fdmprinter.def.json +msgctxt "support_tree_branch_distance description" +msgid "How far apart the branches need to be when they touch the model. Making this distance small will cause the tree support to touch the model at more points, causing better overhang but making support harder to remove." +msgstr "枝がモデルに接触するところで確保する枝の間隔。この間隔を小さくするとツリーサポートがモデルに接触する点が増え、支える効果が高まりますが、サポートの取り外しが難しくなります。" + +#: fdmprinter.def.json +msgctxt "support_tree_branch_diameter label" +msgid "Tree Support Branch Diameter" +msgstr "ツリーサポート枝直径" + +#: fdmprinter.def.json +msgctxt "support_tree_branch_diameter description" +msgid "The diameter of the thinnest branches of tree support. Thicker branches are more sturdy. Branches towards the base will be thicker than this." +msgstr "ツリーサポートの最も細い枝の直径。枝は太いほど丈夫です。基部に近いところでは、枝はこれよりも太くなります。" + +#: fdmprinter.def.json +msgctxt "support_tree_branch_diameter_angle label" +msgid "Tree Support Branch Diameter Angle" +msgstr "ツリーサポート枝直径角度" + +#: fdmprinter.def.json +msgctxt "support_tree_branch_diameter_angle description" +msgid "The angle of the branches' diameter as they gradually become thicker towards the bottom. An angle of 0 will cause the branches to have uniform thickness over their length. A bit of an angle can increase stability of the tree support." +msgstr "基部に向かって徐々に太くなる枝の直径の角度。角度が0の場合、枝の太さは全長にわたって同じになります。少し角度を付けると、ツリーサポートの安定性が高まります。" + +#: fdmprinter.def.json +msgctxt "support_tree_collision_resolution label" +msgid "Tree Support Collision Resolution" +msgstr "ツリーサポート衝突精細度" + +#: fdmprinter.def.json +msgctxt "support_tree_collision_resolution description" +msgid "Resolution to compute collisions with to avoid hitting the model. Setting this lower will produce more accurate trees that fail less often, but increases slicing time dramatically." +msgstr "モデルに干渉しないようにする衝突計算の精細度。小さい値を設定すると、失敗の少ない正確なツリーが生成されますが、スライス時間は大きく増加します。" + +#: fdmprinter.def.json +msgctxt "support_tree_wall_thickness label" +msgid "Tree Support Wall Thickness" +msgstr "ツリーサポート壁厚" + +#: fdmprinter.def.json +msgctxt "support_tree_wall_thickness description" +msgid "The thickness of the walls of the branches of tree support. Thicker walls take longer to print but don't fall over as easily." +msgstr "ツリーサポートの枝の壁の厚さ。壁が厚いほどプリント時間が長くなりますが、崩れにくくなります。" + +#: fdmprinter.def.json +msgctxt "support_tree_wall_count label" +msgid "Tree Support Wall Line Count" +msgstr "ツリーサポートウォールライン数" + +#: fdmprinter.def.json +msgctxt "support_tree_wall_count description" +msgid "The number of walls of the branches of tree support. Thicker walls take longer to print but don't fall over as easily." +msgstr "ツリーサポートの枝の壁の数。壁が厚いほどプリント時間が長くなりますが、崩れにくくなります。" + +#: fdmprinter.def.json +msgctxt "slicing_tolerance label" +msgid "Slicing Tolerance" +msgstr "スライス公差" + +#: fdmprinter.def.json +msgctxt "slicing_tolerance description" +msgid "How to slice layers with diagonal surfaces. The areas of a layer can be generated based on where the middle of the layer intersects the surface (Middle). Alternatively each layer can have the areas which fall inside of the volume throughout the height of the layer (Exclusive) or a layer has the areas which fall inside anywhere within the layer (Inclusive). Exclusive retains the most details, Inclusive makes for the best fit and Middle takes the least time to process." +msgstr "表面を斜めにスライスする方法を指定します。レイヤーの領域は、レイヤーの中央がサーフェス(中央)と交差する位置に基づいて生成できます。また、各層は、レイヤーの高さを通してボリュームの内側に収まる領域を持つ(排他)か、またはレイヤー内の任意の場所内に収まる領域を持っています(包括)。排他は最も細かく、包括は最もフィットし、中間は時間がかかります。" + +#: fdmprinter.def.json +msgctxt "slicing_tolerance option middle" +msgid "Middle" +msgstr "中間" + +#: fdmprinter.def.json +msgctxt "slicing_tolerance option exclusive" +msgid "Exclusive" +msgstr "排他" + +#: fdmprinter.def.json +msgctxt "slicing_tolerance option inclusive" +msgid "Inclusive" +msgstr "包括" + +#: fdmprinter.def.json +msgctxt "roofing_line_width label" +msgid "Top Surface Skin Line Width" +msgstr "最上面のライン幅" + +# msgstr "上表面スキンの線幅" +#: fdmprinter.def.json +msgctxt "roofing_line_width description" +msgid "Width of a single line of the areas at the top of the print." +msgstr "プリントの上部の 線の幅。" + +#: fdmprinter.def.json +msgctxt "roofing_pattern label" +msgid "Top Surface Skin Pattern" +msgstr "上部表面パターン" + +# msgstr "上層表面スキンパターン" +#: fdmprinter.def.json +msgctxt "roofing_pattern description" +msgid "The pattern of the top most layers." +msgstr "上層のパターン" + +#: fdmprinter.def.json +msgctxt "roofing_pattern option lines" +msgid "Lines" +msgstr "直線" + +# msgstr "線" +#: fdmprinter.def.json +msgctxt "roofing_pattern option concentric" +msgid "Concentric" +msgstr "同心円" + +# msgstr "同心" +#: fdmprinter.def.json +msgctxt "roofing_pattern option zigzag" +msgid "Zig Zag" +msgstr "ジグザグ" + +# msgstr "ジグザグ" +#: fdmprinter.def.json +msgctxt "roofing_angles label" +msgid "Top Surface Skin Line Directions" +msgstr "最上面のラインの向き" + +# msgstr "上層表面スキンラインの方向" +#: fdmprinter.def.json +msgctxt "roofing_angles description" +msgid "A list of integer line directions to use when the top surface skin layers use the lines or zig zag pattern. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the traditional default angles (45 and 135 degrees)." +msgstr "トップ表面層に縦かジグザグパターンを利用する時に使用する整数の行方向のリスト。リスト内から順番に使われていき、リストの最後に達するとまた最初の設定値に戻ります。リストアイテムはカンマで区切られ、全体はカッコで括られています。デフォルトでは何も入っておらず、設定角度は (45 度と 135 度)になっています。" + +#: fdmprinter.def.json +msgctxt "infill_enable_travel_optimization label" +msgid "Infill Travel Optimization" +msgstr "インフィル移動最適化" + +#: fdmprinter.def.json +msgctxt "infill_enable_travel_optimization description" +msgid "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." +msgstr "有効化すると、移動距離が減少するようにインフィルラインをプリントする順序が最適化されます。移動時間の削減は、スライスするモデル、インフィルパターン、密度などに大きく依存します。特に、インフィルを行う小さなエリアが多数あるモデルの場合、モデルをスライスする時間が大きく増えることがあります。" + +#: fdmprinter.def.json +msgctxt "material_flow_dependent_temperature label" +msgid "Auto Temperature" +msgstr "自動温度" + +#: fdmprinter.def.json +msgctxt "material_flow_dependent_temperature description" +msgid "Change the temperature for each layer automatically with the average flow speed of that layer." +msgstr "その画層の平均流速で自動的にレイヤーごとに温度を変更します。" + +#: fdmprinter.def.json +msgctxt "material_flow_temp_graph label" +msgid "Flow Temperature Graph" +msgstr "フロー温度グラフ" + +#: fdmprinter.def.json +msgctxt "material_flow_temp_graph description" +msgid "Data linking material flow (in mm3 per second) to temperature (degrees Celsius)." +msgstr "マテリアルフロー(毎秒 3mm) と温度 (° c) をリンクします。" + +#: 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 "support_skip_some_zags label" @@ -5097,6 +5216,46 @@ msgctxt "wireframe_nozzle_clearance description" msgid "Distance between the nozzle and horizontally downward lines. Larger clearance results in diagonally downward lines with a less steep angle, which in turn results in less upward connections with the next layer. Only applies to Wire Printing." msgstr "ノズルと水平方向に下向きの線間の距離。大きな隙間がある場合、急な角度で斜め下方線となり、次の層が上方接続しずらくなる。ワイヤ印刷にのみ適用されます。" +#: fdmprinter.def.json +msgctxt "adaptive_layer_height_enabled label" +msgid "Use adaptive layers" +msgstr "適応レイヤーの使用" + +#: fdmprinter.def.json +msgctxt "adaptive_layer_height_enabled description" +msgid "Adaptive layers computes the layer heights depending on the shape of the model." +msgstr "適応レイヤーは、レイヤーの高さをモデルの形状に合わせて計算します。" + +#: fdmprinter.def.json +msgctxt "adaptive_layer_height_variation label" +msgid "Adaptive layers maximum variation" +msgstr "適応レイヤー最大差分" + +#: fdmprinter.def.json +msgctxt "adaptive_layer_height_variation description" +msgid "The maximum allowed height different from the base layer height in mm." +msgstr "基準レイヤー高さと比較して許容される最大の高さ (mm)。" + +#: fdmprinter.def.json +msgctxt "adaptive_layer_height_variation_step label" +msgid "Adaptive layers variation step size" +msgstr "適応レイヤー差分ステップサイズ" + +#: fdmprinter.def.json +msgctxt "adaptive_layer_height_variation_step description" +msgid "The difference in height of the next layer height compared to the previous one." +msgstr "次のレイヤーの高さを前のレイヤーの高さと比べた差。" + +#: fdmprinter.def.json +msgctxt "adaptive_layer_height_threshold label" +msgid "Adaptive layers threshold" +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 "小さいレイヤーを使用するかどうかの閾値。この値が、レイヤー中の最も急な斜面のタンジェントと比較されます。" + #: fdmprinter.def.json msgctxt "command_line_settings label" msgid "Command Line Settings" @@ -5157,6 +5316,27 @@ msgctxt "mesh_rotation_matrix description" msgid "Transformation matrix to be applied to the model when loading it from file." msgstr "ファイルから読み込むときに、モデルに適用するトランスフォーメーションマトリックス。" +#~ msgctxt "infill_offset_x description" +#~ msgid "The infill pattern is offset this distance along the X axis." +#~ msgstr "インフィルパターンはX軸に沿ってこの距離を移動します。" + +#~ msgctxt "infill_offset_y description" +#~ msgid "The infill pattern is offset this distance along the Y axis." +#~ msgstr "インフィルパターンはY軸に沿ってこの距離を移動します。" + +# msgstr "インフィルのオーバーラップ率" +#~ msgctxt "infill_overlap 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 "インフィルと壁が交差する量、わずかな交差によって壁がインフィルにしっかりつながります。" + +#~ msgctxt "skin_overlap description" +#~ msgid "The amount of overlap between the skin and the walls as a percentage of the line width. A slight overlap allows the walls to connect firmly to the skin. This is a percentage of the average line widths of the skin lines and the innermost wall." +#~ msgstr "表面と壁の交わる量。ラインの幅の%で設定。少しの接触でしっかりと繋がります。表面と内壁の交わる量の平均値になります。" + +#~ msgctxt "material_bed_temperature description" +#~ msgid "The temperature used for the heated build plate. If this is 0, the bed will not heat up for this print." +#~ msgstr "加熱式ビルドプレート温度。これが 0 の場合、ベッドは加熱しません。" + #~ msgctxt "infill_pattern description" #~ msgid "The pattern of the infill material of the print. The line and zig zag infill swap direction on alternate layers, reducing material cost. The grid, triangle, cubic, octet, quarter cubic and concentric patterns are fully printed every layer. Cubic, quarter cubic and octet infill change with every layer to provide a more equal distribution of strength over each direction." #~ msgstr "印刷物のインフィルのパターン。線とジグザグのインフィルはレイヤーごとに交互に方向を変え、材料費を削減します。グリッド、三角形、キュービック、オクテット、クォーターキュービック、同心円のパターンは、すべてのレイヤーにて完全に印刷されます。キュービック、クォーターキュービック、オクテットのインフィルは各レイヤーごとに変化し、各方向の強度が均等になるように分布します。" diff --git a/resources/i18n/ko_KR/cura.po b/resources/i18n/ko_KR/cura.po index a72274dc2c..f63d7ba64f 100644 --- a/resources/i18n/ko_KR/cura.po +++ b/resources/i18n/ko_KR/cura.po @@ -1,16 +1,16 @@ # Cura -# Copyright (C) 2017 Ultimaker +# Copyright (C) 2018 Ultimaker # This file is distributed under the same license as the Cura package. -# Ruben Dulek , 2017. -# +# Ruben Dulek , 2018. +# msgid "" msgstr "" -"Project-Id-Version: Cura 3.1\n" +"Project-Id-Version: Cura 3.2\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2017-11-21 16:58+0100\n" -"PO-Revision-Date: 2017-11-30 13:05+0100\n" -"Last-Translator: Brule\n" -"Language-Team: Brule\n" +"POT-Creation-Date: 2018-01-29 09:48+0000\n" +"PO-Revision-Date: 2018-02-05 13:25+0100\n" +"Last-Translator: Bothof \n" +"Language-Team: Korean\n" "Language: ko_KR\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.0.4\n" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:29 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:26 msgctxt "@action" msgid "Machine Settings" msgstr "기계 설정" @@ -55,12 +55,11 @@ msgstr "Doodle3D Connect에 연결" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:87 #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:155 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:874 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:646 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:875 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:659 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:370 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrintWindow.qml:78 -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:104 -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:99 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:355 #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:188 #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:376 #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:139 @@ -100,7 +99,7 @@ msgctxt "@info:tooltip" msgid "Open the Doodle3D Connect web interface" msgstr "Doodle3D Connect 웹 인터페이스 열기" -#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:34 +#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:33 msgctxt "@item:inmenu" msgid "Show Changelog" msgstr "변경 내역 표시" @@ -115,78 +114,83 @@ msgctxt "@info:status" msgid "Profile has been flattened & activated." msgstr "프로필이 병합되고 활성화되었습니다." -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:26 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:27 msgctxt "@item:inmenu" msgid "USB printing" msgstr "USB 인쇄" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:27 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:28 msgctxt "@action:button Preceded by 'Ready to'." msgid "Print via USB" msgstr "USB를 통해 인쇄" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:28 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:29 msgctxt "@info:tooltip" msgid "Print via USB" msgstr "USB를 통해 인쇄" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:30 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:31 msgctxt "@info:status" msgid "Connected via USB" msgstr "USB를 통해 연결" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:154 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:183 msgctxt "@info:status" msgid "Unable to start a new job because the printer is busy or not connected." msgstr "프린터가 사용 중이거나 연결되어 있지 않아 새 작업을 시작할 수 없습니다." -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:154 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:183 msgctxt "@info:title" msgid "Printer Unavailable" msgstr "프린터 사용 불가" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:457 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:485 msgctxt "@info:status" msgid "This printer does not support USB printing because it uses UltiGCode flavor." msgstr "이 프린터는 UltiGCode flavor를 사용하기 때문에 USB 인쇄를 지원하지 않습니다." -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:457 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:485 msgctxt "@info:title" msgid "USB Printing" msgstr "USB 인쇄" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:461 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:489 msgctxt "@info:status" msgid "Unable to start a new job because the printer does not support usb printing." msgstr "프린터가 USB 인쇄를 지원하지 않기 때문에 새 작업을 시작할 수 없습니다." -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:461 -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:108 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:489 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:103 #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:146 #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:158 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:945 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1349 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1417 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:946 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1418 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1496 msgctxt "@info:title" msgid "Warning" msgstr "경고" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:108 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:103 msgctxt "@info" msgid "Unable to update firmware because there are no printers connected." msgstr "프린터가 연결되어 있지 않으므로 펌웨어를 업데이트 할 수 없습니다." -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:122 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:117 #, python-format msgctxt "@info" msgid "Could not find firmware required for the printer at %s." msgstr "프린터에 필요한 펌웨어를 찾을 수 없습니다." -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:122 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:117 msgctxt "@info:title" msgid "Printer Firmware" msgstr "프린터 펌웨어" +#: /home/ruben/Projects/Cura/plugins/PrepareStage/__init__.py:12 +msgctxt "@item:inmenu" +msgid "Prepare" +msgstr "준비" + #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:23 msgctxt "@action:button Preceded by 'Ready to'." msgid "Save to Removable Drive" @@ -230,11 +234,11 @@ msgid "Could not save to removable drive {0}: {1}" msgstr "이동식 드라이브에 저장할 수 없습니다 :" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:132 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:692 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:700 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:146 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:693 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:701 #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:153 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1358 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:160 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1427 msgctxt "@info:title" msgid "Error" msgstr "에러" @@ -284,7 +288,7 @@ msgid "Removable Drive" msgstr "이동식 드라이브" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:109 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:53 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:51 msgctxt "@action:button Preceded by 'Ready to'." msgid "Print over network" msgstr "네트워크를 통해 인쇄" @@ -398,110 +402,110 @@ msgctxt "@info:title" msgid "Printer Status" msgstr "프린터 상태" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:691 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:692 #, python-brace-format msgctxt "@info:status" msgid "Unable to start a new print job. No Printcore loaded in slot {0}" msgstr "새 인쇄 작업을 시작할 수 없습니다. 슬롯 {0}에로드 된 Printcore가 없습니다." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:699 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:700 #, python-brace-format msgctxt "@info:status" msgid "Unable to start a new print job. No material loaded in slot {0}" msgstr "새 인쇄 작업을 시작할 수 없습니다. 슬롯 {0}에로드 된 자료 없음" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:709 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:710 #, python-brace-format msgctxt "@label" msgid "Not enough material for spool {0}." msgstr "스풀 {0}의 재료가 충분하지 않습니다." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:719 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:720 #, python-brace-format msgctxt "@label" msgid "Different PrintCore (Cura: {0}, Printer: {1}) selected for extruder {2}" msgstr "압출기 {2}에 대해 선택된 다른 PrintCore (Cura : {0}, Printer : {1})" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:733 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:734 #, 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/NetworkPrinterOutputDevice.py:741 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:742 #, python-brace-format msgctxt "@label" msgid "PrintCore {0} is not properly calibrated. XY calibration needs to be performed on the printer." msgstr "PrintCore가 올바르게 조정되지 않았습니다. XY 교정은 프린터에서 수행해야합니다." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:746 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:747 msgctxt "@label" msgid "Are you sure you wish to print with the selected configuration?" msgstr "선택한 구성으로 인쇄 하시겠습니까?" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:747 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:748 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/NetworkPrinterOutputDevice.py:753 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:754 msgctxt "@window:title" msgid "Mismatched configuration" msgstr "일치하지 않는 구성" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:864 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:262 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:865 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:258 msgctxt "@info:status" msgid "Sending new jobs (temporarily) blocked, still sending the previous print job." msgstr "새 작업 전송 (일시적)이 차단되어 이전 인쇄 작업을 계속 보냅니다." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:873 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:874 msgctxt "@info:status" msgid "Sending data to printer" msgstr "프린터로 데이터 보내기" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:873 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:874 msgctxt "@info:title" msgid "Sending Data" msgstr "데이터 전송 중" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:944 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:945 msgctxt "@info:status" msgid "Unable to send data to printer. Is another job still active?" msgstr "프린터로 데이터를 보낼 수 없습니다. 다른 작업이 여전히 작동중인가요?" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1085 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1087 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:196 msgctxt "@label:MonitorStatus" msgid "Aborting print..." msgstr "인쇄 중단 중 ..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1091 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1093 msgctxt "@label:MonitorStatus" msgid "Print aborted. Please check the printer" msgstr "인쇄가 중단되었습니다. 프린터를 확인하십시오" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1097 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1099 msgctxt "@label:MonitorStatus" msgid "Pausing print..." msgstr "인쇄 일시 중지 중 ..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1099 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1101 msgctxt "@label:MonitorStatus" msgid "Resuming print..." msgstr "인쇄 재개 중 ..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1289 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1291 msgctxt "@window:title" msgid "Sync with your printer" msgstr "프린터와 동기화" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1291 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1293 msgctxt "@label" msgid "Would you like to use your current printer configuration in Cura?" msgstr "Cura에서 현재 프린터 구성을 사용 하시겠습니까?" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1293 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1295 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 및 재료를 항상 슬라이스하십시오." @@ -522,145 +526,188 @@ msgid "{printer_name} has finished printing '{job_name}'. Please collect the pri msgstr "인쇄를 완료했습니다. 인쇄물을 수거하고 빌드 플레이트를 지우십시오." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:115 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:520 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:533 #, python-brace-format msgid "{printer_name} is reserved to print '{job_name}'. Please change the printer's configuration to match the job, for it to start printing." msgstr "?을 인쇄하기 위해 예약되어 있습니다. 인쇄를 시작하려면 프린터의 구성을 작업에 맞게 변경하십시오." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:278 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:277 msgctxt "@info:status" msgid "Unable to send new print job: this 3D printer is not (yet) set up to host a group of connected Ultimaker 3 printers." msgstr "새로운 인쇄 작업을 보낼 수 없습니다 :이 3D 프린터는 아직 연결된 Ultimaker 3 프린터 그룹을 호스트하도록 설정되지 않았습니다." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:410 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:423 #, python-brace-format msgctxt "@info:status" msgid "Unable to send print job to group {cluster_name}." msgstr "{cluster_name} 그룹에 인쇄 작업을 보낼 수 없습니다." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:418 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:431 #, python-brace-format msgctxt "@info:status" msgid "Sent {file_name} to group {cluster_name}." msgstr "파일이름을 cluster_name 그룹에 보냈습니다." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:423 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:436 msgctxt "@action:button" msgid "Show print jobs" msgstr "인쇄 작업 표시" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:424 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:437 msgctxt "@info:tooltip" msgid "Opens the print jobs interface in your browser." msgstr "브라우저에서 인쇄 작업 인터페이스를 엽니다." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:489 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:502 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:239 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:47 -msgctxt "@label" +msgctxt "@label Printer name" msgid "Unknown" -msgstr "알 수 없는" +msgstr "알 수 없음" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:492 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:505 #, fuzzy, python-brace-format msgctxt "@info:status" msgid "Printer '{printer_name}' has finished printing '{job_name}'." msgstr "프린터가 인쇄를 완료했습니다." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:494 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:497 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:507 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:510 msgctxt "@info:status" msgid "Print finished" msgstr "프린트가 완료됐습니다" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:522 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:525 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:535 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:538 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:282 msgctxt "@label:status" msgid "Action required" msgstr "필요한 조치" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:643 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:656 #, python-brace-format msgctxt "@info:progress" msgid "Sending {file_name} to group {cluster_name}" msgstr "{filename} {file_name} 을 {cluster_name} 그룹에 보냄" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.py:19 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.py:17 msgctxt "@action" msgid "Connect via Network" msgstr "네트워크를 통해 연결" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:64 +#: /home/ruben/Projects/Cura/plugins/MonitorStage/__init__.py:12 +msgctxt "@item:inmenu" +msgid "Monitor" +msgstr "모니터" + +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:66 #, python-brace-format msgctxt "@info Don't translate {machine_name}, since it gets replaced by a printer name!" msgid "New features are available for your {machine_name}! It is recommended to update the firmware on your printer." msgstr "{machine_name}의 새로운 기능을 사용할 수 있습니다! 프린터의 펌웨어를 업데이트하는 것이 좋습니다." -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:65 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:67 #, python-format msgctxt "@info:title The %s gets replaced with the printer name." msgid "New %s firmware available" msgstr "새로운 펌웨어를 사용할 수 있습니다." -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:66 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:68 msgctxt "@action:button" msgid "How to update" msgstr "업데이트 방법" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:77 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:79 msgctxt "@info" msgid "Could not access update information." msgstr "업데이트 정보에 액세스 할 수 없습니다." -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksReader.py:199 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksReader.py:579 msgctxt "@info:status" -msgid "Errors appeared while opening your SolidWorks file! Please check, whether it is possible to open your file in SolidWorks itself without any problems as well!" -msgstr "SolidWorks 파일을 여는 중 오류가 발생했습니다! 문제없이 SolidWorks에서 파일을 열 수 있는지 확인하십시오" +msgid "SolidWorks reported errors, while opening your file. We recommend to solve these issues inside SolidWorks itself." +msgstr "파일을 여는 도중 SolidWorks가 오류 보고. SolidWorks 자체에서 이 문제를 해결하도록 권장합니다." -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:31 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksReader.py:591 +msgctxt "@info:status" +msgid "" +"Found no models inside your drawing. Could you please check it's content again and make sure one part or assembly is inside?\n" +"\n" +" Thanks!." +msgstr "도면에 모델이 없습니다. 내용을 다시 확인하시고 내부에 하나의 부품이나 조립만 있는지 확인하시겠습니까?\n\n 감사합니다!." + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksReader.py:595 +msgctxt "@info:status" +msgid "" +"Found more then one part or assembly inside your drawing. We currently only support drawings with exactly one part or assembly inside.\n" +"\n" +"Sorry!" +msgstr "도면에 하나 이상의 부품 또는 조립이 있습니다. 저희는 현재 정확하게 하나의 부품 또는 조립만 있는 도면을 지원합니다.\n\n죄송합니다!" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:25 msgctxt "@item:inlistbox" msgid "SolidWorks part file" msgstr "SolidWorks 파트 파일" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:35 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:29 msgctxt "@item:inlistbox" msgid "SolidWorks assembly file" msgstr "SolidWorks 어셈블리 파일" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.py:21 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:33 +msgctxt "@item:inlistbox" +msgid "SolidWorks drawing file" +msgstr "SolidWorks 도면 파일" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:48 +msgctxt "@info:status" +msgid "" +"Dear customer,\n" +"We could not find a valid installation of SolidWorks on your system. That means that either SolidWorks is not installed or you don't own an valid license. Please make sure that running SolidWorks itself works without issues and/or contact your ICT.\n" +"\n" +"With kind regards\n" +" - Thomas Karl Pietrowski" +msgstr "안녕하십니까,\n귀하의 시스템에 유효한 SolidWorks를 찾을 수 없습니다. 이는 곧 SolidWorks가 설치되어 있지 않거나 유효한 라이센스가 없음을 의미합니다. SolidWorks가 문제없이 실행될 수 있도록 해주시고 그리고/또는 귀사의 ICT에 연락해 주십시오.\n\n감사합니다.\n - Thomas Karl Pietrowski" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:57 +msgctxt "@info:status" +msgid "" +"Dear customer,\n" +"You are currently running this plugin on an operating system other than Windows. This plugin will only work on Windows with SolidWorks installed, including an valid license. Please install this plugin on a Windows machine with SolidWorks installed.\n" +"\n" +"With kind regards\n" +" - Thomas Karl Pietrowski" +msgstr "안녕하십니까,\n귀하는 현재 Windows가 아닌 다른 운영 시스템에서 이 플러그인을 실행 중입니다. 이 플러그인은 유효한 라이센스가 있는 SolidWorks가 설치된 Windows에서만 사용 가능합니다. 이 플러그인을 SolidWorks가 설치된 Windows 컴퓨터에 설치하십시오.\n\n감사합니다\n - Thomas Karl Pietrowski" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksDialogHandler.py:70 msgid "Configure" msgstr "구성" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/CommonComReader.py:135 -#, python-format -msgctxt "@info:status" -msgid "Error while starting %s!" -msgstr "시작하는 도중 오류가 발생했습니다!" +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksDialogHandler.py:71 +msgid "Installation guide for SolidWorks macro" +msgstr "SolidWorks 매크로 설치 가이드" #: /home/ruben/Projects/Cura/plugins/SimulationView/__init__.py:14 msgctxt "@item:inlistbox" -msgid "Simulation view" -msgstr "시뮬레이션 보기" +msgid "Layer view" +msgstr "레이어 보기" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:100 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:103 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:101 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:104 msgctxt "@info:title" msgid "Simulation View" msgstr "시뮬레이션 보기" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.py:26 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.py:25 msgid "Modify G-Code" msgstr "G 코드 수정" #: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:43 msgctxt "@info" -msgid "Cura collects anonymised slicing statistics. You can disable this in the preferences." -msgstr "Cura는 익명의 슬라이싱 통계를 수집합니다. 환경 설정에서 이 기능을 비활성화 할 수 있습니다." +msgid "Cura collects anonymized usage statistics." +msgstr "Cura는 익명의 사용 통계를 수집합니다." #: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:46 msgctxt "@info:title" @@ -669,14 +716,41 @@ msgstr "데이터 수집" #: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:48 msgctxt "@action:button" -msgid "Dismiss" -msgstr "버리다" +msgid "Allow" +msgstr "허용" + +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:49 +msgctxt "@action:tooltip" +msgid "Allow Cura to send anonymized usage statistics to help prioritize future improvements to Cura. Some of your preferences and settings are sent, the Cura version and a hash of the models you're slicing." +msgstr "Cura가 익명의 사용 통계를 보내 Cura에 대한 향후 개선을 우선화하는 데 도움을 줍니다. Cura 버전과 슬라이싱하는 모델의 해쉬 등 일부 선호사항과 설정이 발송됩니다." + +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:50 +msgctxt "@action:button" +msgid "Disable" +msgstr "사용 안함" + +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:51 +msgctxt "@action:tooltip" +msgid "Don't allow Cura to send anonymized usage statistics. You can enable it again in the preferences." +msgstr "Cura가 익명의 사용 통계를 보내지 않게 합니다. 환경 설정에서 다시 사용할 수 있습니다." #: /home/ruben/Projects/Cura/plugins/LegacyProfileReader/__init__.py:14 msgctxt "@item:inlistbox" msgid "Cura 15.04 profiles" msgstr "Cura 15.04 프로필" +#: /home/ruben/Projects/Cura/plugins/CuraBlenderPlugin/__init__.py:15 +msgctxt "@item:inlistbox" +msgid "Blender file" +msgstr "Blender 파일" + +#: /home/ruben/Projects/Cura/plugins/CuraBlenderPlugin/CadIntegrationUtils/CommonReader.py:199 +msgctxt "@info:status" +msgid "" +"Could not export using \"{}\" quality!\n" +"Felt back to \"{}\"." +msgstr "\"{}\" 품질을 사용하여 내보낼 수 없습니다!\n \"{}\"(으)로 돌아갑니다." + #: /home/ruben/Projects/Cura/plugins/GCodeProfileReader/__init__.py:14 #: /home/ruben/Projects/Cura/plugins/GCodeReader/__init__.py:14 msgctxt "@item:inlistbox" @@ -708,49 +782,49 @@ msgctxt "@item:inlistbox" msgid "GIF Image" msgstr "GIF 이미지" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:269 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:299 msgctxt "@info:status" msgid "Unable to slice with the current material as it is incompatible with the selected machine or configuration." msgstr "선택한 소재 또는 구성과 호환되지 않기 때문에 현재 소재로 슬라이스 할 수 없습니다." -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:269 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:297 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:319 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:299 #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:327 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:336 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:349 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:357 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:366 msgctxt "@info:title" msgid "Unable to slice" msgstr "슬라이스 할 수 없습니다" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:296 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:326 #, python-brace-format msgctxt "@info:status" msgid "Unable to slice with the current settings. The following settings have errors: {0}" msgstr "현재 설정으로 슬라이스 할 수 없습니다. 다음 설정에는 오류가 있습니다 : {0}" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:318 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:348 #, python-brace-format msgctxt "@info:status" msgid "Unable to slice due to some per-model settings. The following settings have errors on one or more models: {error_labels}" msgstr "일부 모델별 설정으로 인해 슬라이스할 수 없습니다. 하나 이상의 모델에서 다음 설정에 오류가 있습니다. {error_labels}" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:326 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:356 msgctxt "@info:status" msgid "Unable to slice because the prime tower or prime position(s) are invalid." msgstr "프라임 탑 또는 주요 위치가 유효하지 않아 슬라이스 할 수 없습니다." -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:335 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:365 msgctxt "@info:status" msgid "Nothing to slice because none of the models fit the build volume. Please scale or rotate models to fit." msgstr "어떤 모델도 빌드 볼륨에 맞지 않으므로 슬라이스 할 수 없습니다. 크기에 맞게 모형을 회전하거나 회전하십시오." #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:50 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:239 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:242 msgctxt "@info:status" msgid "Processing Layers" msgstr "레이어 처리 중" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:239 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:242 msgctxt "@info:title" msgid "Information" msgstr "정보" @@ -787,14 +861,14 @@ msgstr "Siemens NX 플러그인 파일을 복사하지 못했습니다. UGII_USE msgid "Failed to install Siemens NX plugin. Could not set environment variable UGII_USER_DIR for Siemens NX." msgstr "Siemens NX 플러그인을 설치하지 못했습니다. Siemens NX의 환경 변수 UGII_USER_DIR을 설정할 수 없습니다." -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:167 -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:585 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:165 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:590 msgctxt "@title:tab" msgid "Recommended" msgstr "추천" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:169 -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:590 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:167 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:595 msgctxt "@title:tab" msgid "Custom" msgstr "관습" @@ -805,24 +879,24 @@ msgctxt "@item:inlistbox" msgid "3MF File" msgstr "3MF 파일" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:126 -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1142 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:159 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1185 msgctxt "@label" msgid "Nozzle" msgstr "노즐" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:164 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:152 #, python-brace-format msgctxt "@info:status" msgid "Failed to get plugin ID from {0}" msgstr "?에서 플러그인 ID를 가져 오는 데 실패했습니다" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:165 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:153 msgctxt "@info:tile" msgid "Warning" msgstr "경고" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:203 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:191 msgctxt "@window:title" msgid "Plugin browser" msgstr "플러그인 브라우저" @@ -837,18 +911,18 @@ msgctxt "@item:inlistbox" msgid "G File" msgstr "G파일" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:314 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:321 msgctxt "@info:status" msgid "Parsing G-code" msgstr "G 코드 파싱" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:316 -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:426 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:323 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:464 msgctxt "@info:title" msgid "G-code Details" msgstr "G 코드 세부 정보" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:424 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:462 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 코드 표현이 정확하지 않을 수 있습니다." @@ -859,6 +933,16 @@ 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:17 +msgctxt "@item:inlistbox" +msgid "Profile Assistant" +msgstr "프로필 어시스턴트" + #: /home/ruben/Projects/Cura/plugins/3MFWriter/__init__.py:30 msgctxt "@item:inlistbox" msgid "3MF file" @@ -890,142 +974,116 @@ msgctxt "@action" msgid "Level build plate" msgstr "레벨 빌드 플레이트" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:89 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:98 msgctxt "@tooltip" msgid "Outer Wall" msgstr "외벽" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:90 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:99 msgctxt "@tooltip" msgid "Inner Walls" msgstr "내벽" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:91 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:100 msgctxt "@tooltip" msgid "Skin" msgstr "외판" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:92 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:101 msgctxt "@tooltip" msgid "Infill" msgstr "빈 공간 채우기" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:93 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:102 msgctxt "@tooltip" msgid "Support Infill" msgstr "빈 공간 채우기 지지" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:94 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:103 msgctxt "@tooltip" msgid "Support Interface" msgstr "지원 인터페이스" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:95 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:104 msgctxt "@tooltip" msgid "Support" msgstr "지지물" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:96 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:105 msgctxt "@tooltip" msgid "Skirt" msgstr "둘러싸다" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:97 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:106 msgctxt "@tooltip" msgid "Travel" msgstr "움직여 가다" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:98 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:107 msgctxt "@tooltip" msgid "Retractions" msgstr "취소" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:99 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:108 msgctxt "@tooltip" msgid "Other" msgstr "다른" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:199 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:231 msgctxt "@label unknown material" msgid "Unknown" msgstr "알 수 없음" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:284 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:318 #, python-brace-format msgctxt "@label" msgid "Pre-sliced file {0}" msgstr "미리 잘라낸 파일 {0}" -#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:469 +#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:440 msgctxt "@item:material" msgid "No material loaded" msgstr "로드 된 자료 없음" -#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:476 +#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:447 msgctxt "@item:material" msgid "Unknown material" msgstr "알 수없는 자료" -#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:30 -msgctxt "@info:status" -msgid "Finding new location for objects" -msgstr "객체의 새 위치 삽입" - -#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:34 -msgctxt "@info:title" -msgid "Finding Location" -msgstr "위치 찾기" - -#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:89 -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:83 -msgctxt "@info:status" -msgid "Unable to find a location within the build volume for all objects" -msgstr "모든 개체에 대한 빌드 볼륨 내의 위치를 찾을 수 없습니다" - -#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:90 -msgctxt "@info:title" -msgid "Can't Find Location" -msgstr "위치를 찾을 수 없음" - -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:431 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:113 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:437 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:120 msgctxt "@title:window" msgid "File Already Exists" msgstr "파일이 이미 있습니다" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:432 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:114 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:438 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:121 #, 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 "파일이 이미 있습니다. 덮어 쓰시겠습니까?" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:815 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:872 msgctxt "@label" msgid "Custom" msgstr "맞춤" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:819 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:876 msgctxt "@label" msgid "Custom Material" msgstr "맞춤 소재" -#: /home/ruben/Projects/Cura/cura/Settings/ExtrudersModel.py:182 -msgctxt "@menuitem" -msgid "Global" -msgstr "전역" - -#: /home/ruben/Projects/Cura/cura/Settings/ExtrudersModel.py:229 +#: /home/ruben/Projects/Cura/cura/Settings/ExtrudersModel.py:205 msgctxt "@menuitem" msgid "Not overridden" msgstr "재정의되지 않음" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:117 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:124 msgctxt "@info:status" msgid "The selected material is incompatible with the selected machine or configuration." msgstr "선택한 재료가 선택한 기계 또는 구성과 호환되지 않습니다." -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:118 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:125 #: /home/ruben/Projects/Cura/cura/Settings/MaterialManager.py:24 msgctxt "@info:title" msgid "Incompatible Material" @@ -1046,67 +1104,89 @@ msgctxt "@action" msgid "Undo changing the material diameter." msgstr "재료 직경 변경을 취소하십시오." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:144 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:151 #, 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:151 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:158 #, python-brace-format msgctxt "@info:status Don't translate the XML tag !" msgid "Failed to export profile to {0}: Writer plugin reported failure." msgstr "프로필을 ?로 내보내지 못했습니다. Writer 플러그인이 오류를 보고했습니다." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:156 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:163 #, 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:157 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:164 msgctxt "@info:title" msgid "Export succeeded" msgstr "내보내기 완료" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:183 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:205 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:214 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:248 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:190 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:211 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:271 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to import profile from {0}: {1}" msgstr "?에서 프로필을 가져 오지 못했습니다" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:216 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:252 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:230 +#, python-brace-format +msgctxt "@info:status Don't translate the XML tags or !" +msgid "This profile {0} contains incorrect data, could not import it." +msgstr "이 프로필 {0}에는 정확하지 않은 데이터가 포함되어 있으므로, 불러올 수 없습니다." + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:240 +#, python-brace-format +msgctxt "@info:status Don't translate the XML tags or !" +msgid "The machine defined in profile {0} doesn't match with your current machine, could not import it." +msgstr "프로필 {0}에 정의된 기계가 현재 기계와 일치하지 않으므로, 불러올 수 없습니다." + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:274 #, python-brace-format msgctxt "@info:status" msgid "Successfully imported profile {0}" msgstr "프로필 {0}을 (를) 성공적으로 가져 왔습니다." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:255 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:277 +#, 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:280 #, 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:274 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:298 msgctxt "@label" msgid "Custom profile" msgstr "사용자 정의 프로필" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:285 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:313 msgctxt "@info:status" msgid "Profile is missing a quality type." msgstr "프로필에 품질 유형이 누락되었습니다." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:321 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:349 #, python-brace-format msgctxt "@info:status" msgid "Could not find a quality type {0} for the current configuration." msgstr "현재 구성에 대해 품질 유형 {0}을 (를) 찾을 수 없습니다." +#: /home/ruben/Projects/Cura/cura/ObjectsModel.py:46 +#, python-brace-format +msgctxt "@label" +msgid "Group #{group_nr}" +msgstr "그룹 #{group_nr}" + #: /home/ruben/Projects/Cura/cura/BuildVolume.py:100 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." @@ -1117,142 +1197,167 @@ msgctxt "@info:title" msgid "Build Volume" msgstr "빌드 볼륨" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:34 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:25 msgctxt "@info:status" msgid "Multiplying and placing objects" msgstr "객체 곱하기 및 배치" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:35 -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:83 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:26 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:78 msgctxt "@info:title" msgid "Placing Object" msgstr "개체 배치 중" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:80 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:78 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:88 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:152 +msgctxt "@info:status" +msgid "Unable to find a location within the build volume for all objects" +msgstr "모든 개체에 대한 빌드 볼륨 내의 위치를 찾을 수 없습니다" + +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:29 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:64 +msgctxt "@info:status" +msgid "Finding new location for objects" +msgstr "객체의 새 위치 삽입" + +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:33 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:68 +msgctxt "@info:title" +msgid "Finding Location" +msgstr "위치 찾기" + +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:89 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:153 +msgctxt "@info:title" +msgid "Can't Find Location" +msgstr "위치를 찾을 수 없음" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:81 msgctxt "@title:window" msgid "Crash Report" msgstr "오류 보고서" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:93 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:94 msgctxt "@label crash message" msgid "" -"

      A fatal exception has occurred. Please send us this Crash Report to fix the problem

      \n" +"

      A fatal error has occurred. 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 "

      치명적인 예외가 발생했습니다. 문제를 해결할 수 있도록 이 충돌 보고서를 보내주십시오.

      \n

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

      \n " +msgstr "

      치명적인 오류가 발생했습니다. 문제를 해결할 수 있도록 이 충돌 보고서를 보내주십시오

      \n

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

      \n " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:101 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:102 msgctxt "@title:groupbox" msgid "System information" msgstr "시스템 정보" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:109 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:110 msgctxt "@label unknown version of Cura" msgid "Unknown" msgstr "알 수 없음" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:111 -#, python-brace-format -msgctxt "@label Cura version" -msgid "Cura version: {version}
      " -msgstr "Cura 버전: {version}
      " - #: /home/ruben/Projects/Cura/cura/CrashHandler.py:112 -#, python-brace-format -msgctxt "@label Platform" -msgid "Platform: {platform}
      " -msgstr "플랫폼: {platform}
      " +msgctxt "@label Cura version number" +msgid "Cura version" +msgstr "Cura 버전" #: /home/ruben/Projects/Cura/cura/CrashHandler.py:113 -#, python-brace-format -msgctxt "@label Qt version" -msgid "Qt version: {qt}
      " -msgstr "Qt 버전: {qt}
      " +msgctxt "@label Type of platform" +msgid "Platform" +msgstr "플랫폼" #: /home/ruben/Projects/Cura/cura/CrashHandler.py:114 -#, python-brace-format -msgctxt "@label PyQt version" -msgid "PyQt version: {pyqt}
      " -msgstr "PyQt 버전: {pyqt}
      " +msgctxt "@label" +msgid "Qt version" +msgstr "Qt 버전" #: /home/ruben/Projects/Cura/cura/CrashHandler.py:115 -#, python-brace-format -msgctxt "@label OpenGL" -msgid "OpenGL: {opengl}
      " -msgstr "OpenGL: {opengl}
      " +msgctxt "@label" +msgid "PyQt version" +msgstr "PyQt 버전" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:130 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:116 +msgctxt "@label OpenGL version" +msgid "OpenGL" +msgstr "OpenGL" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:133 +msgctxt "@label" +msgid "not yet initialised
      " +msgstr "아직 초기화되지 않음
      " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:136 #, python-brace-format msgctxt "@label OpenGL version" msgid "
    • OpenGL Version: {version}
    • " msgstr "
    • OpenGL 버전: {version}
    • " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:131 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:137 #, python-brace-format msgctxt "@label OpenGL vendor" msgid "
    • OpenGL Vendor: {vendor}
    • " msgstr "
    • OpenGL 공급업체: {vendor}
    • " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:132 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:138 #, python-brace-format msgctxt "@label OpenGL renderer" msgid "
    • OpenGL Renderer: {renderer}
    • " msgstr "
    • OpenGL Renderer: {renderer}
    • " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:141 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:147 msgctxt "@title:groupbox" -msgid "Exception traceback" -msgstr "예외 역추적" +msgid "Error traceback" +msgstr "오류 추적" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:208 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:214 msgctxt "@title:groupbox" msgid "Logs" msgstr "로그" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:231 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:237 msgctxt "@title:groupbox" msgid "User description" msgstr "사용자 설명" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:246 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:252 msgctxt "@action:button" msgid "Send report" msgstr "보고서 전송" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:256 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:274 msgctxt "@info:progress" msgid "Loading machines..." msgstr "기계로드 중 ..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:661 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:660 msgctxt "@info:progress" msgid "Setting up scene..." msgstr "장면 설정 중 ..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:703 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:702 msgctxt "@info:progress" msgid "Loading interface..." msgstr "인터페이스로드 중 ..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:874 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:899 #, 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 "% (너비) .1f x % (깊이) .1f x % (높이) .1f mm" +msgstr "%(width).1f x %(depth).1f x %(height).1f mm" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1348 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1417 #, python-brace-format msgctxt "@info:status" msgid "Only one G-code file can be loaded at a time. Skipped importing {0}" msgstr "한 번에 하나의 G 코드 파일만 로드 할 수 있습니다. 가져 오기를 건너 뛰었습니다." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1357 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1426 #, python-brace-format msgctxt "@info:status" msgid "Can't open any other file if G-code is loading. Skipped importing {0}" msgstr "G 코드가 로드되어 있으면 다른 파일을 열 수 없습니다. 가져 오기를 건너 뛰었습니다." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1416 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1495 msgctxt "@info:status" msgid "The selected model was too small to load." msgstr "선택한 모델이 너무 작아서 로드할 수 없습니다." @@ -1281,12 +1386,11 @@ msgstr "X (너비)" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:119 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:129 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:235 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:288 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:300 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:391 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:401 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:413 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:840 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:383 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:394 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:412 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:424 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:849 msgctxt "@label" msgid "mm" msgstr "mm" @@ -1376,68 +1480,67 @@ msgctxt "@tooltip" msgid "The height difference between the tip of the nozzle and the gantry system (X and Y axes). Used to prevent collisions between previous prints and the gantry when printing \"One at a Time\"." msgstr "노즐 끝과 갠트리 시스템 사이의 높이 차이 (X 및 Y 축). \"한 번에 한 장\"을 인쇄 할 때 이전 인쇄물과 갠트리 사이의 충돌을 방지하는 데 사용됩니다." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:255 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:254 msgctxt "@label" msgid "Number of Extruders" msgstr "압출기의 수" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:289 -msgctxt "@tooltip" -msgid "The nominal diameter of filament supported by the printer. The exact diameter will be overridden by the material and/or the profile." -msgstr "프린터가 지원하는 필라멘트의 공칭 직경. 정확한 직경은 소재 및 / 또는 프로파일에 의해 무시됩니다." - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:291 -msgctxt "@label" -msgid "Material diameter" -msgstr "재료 직경" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:299 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:390 -msgctxt "@label" -msgid "Nozzle size" -msgstr "노즐 크기" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:317 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:310 msgctxt "@label" msgid "Start Gcode" msgstr "Gcode 시작" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:327 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:320 msgctxt "@tooltip" msgid "Gcode commands to be executed at the very start." msgstr "시작시 Gcode 명령이 실행됩니다." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:336 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:329 msgctxt "@label" msgid "End Gcode" msgstr "Gcode 끝내기" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:346 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:339 msgctxt "@tooltip" msgid "Gcode commands to be executed at the very end." msgstr "Gcode 명령어가 맨 마지막에 실행됩니다." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:378 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:370 msgctxt "@label" msgid "Nozzle Settings" msgstr "노즐 설정" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:400 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:382 +msgctxt "@label" +msgid "Nozzle size" +msgstr "노즐 크기" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:393 +msgctxt "@label" +msgid "Compatible material diameter" +msgstr "호환이 되는 재료 직경" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:395 +msgctxt "@tooltip" +msgid "The nominal diameter of filament supported by the printer. The exact diameter will be overridden by the material and/or the profile." +msgstr "프린터가 지원하는 필라멘트의 공칭 직경. 정확한 직경은 소재 및 / 또는 프로파일에 의해 무시됩니다." + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:411 msgctxt "@label" msgid "Nozzle offset X" msgstr "노즐 오프셋 X" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:412 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:423 msgctxt "@label" msgid "Nozzle offset Y" msgstr "노즐 오프셋 Y" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:433 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:444 msgctxt "@label" msgid "Extruder Start Gcode" msgstr "압출기 시작 Gcode" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:451 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:462 msgctxt "@label" msgid "Extruder End Gcode" msgstr "압출기 종료 Gcode" @@ -1450,8 +1553,9 @@ msgstr "변경 내역" #: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.qml:37 #: /home/ruben/Projects/Cura/plugins/USBPrinting/FirmwareUpdateWindow.qml:107 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:55 -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:445 -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:357 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:306 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:456 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:492 #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:80 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:123 #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:147 @@ -1532,7 +1636,7 @@ msgstr "편집" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:96 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:50 #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:95 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:190 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:171 msgctxt "@action:button" msgid "Remove" msgstr "제거" @@ -1554,14 +1658,14 @@ msgid "Type" msgstr "유형" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:233 -msgctxt "@label" +msgctxt "@label Printer name" msgid "Ultimaker 3" -msgstr "얼티메이커 3" +msgstr "Ultimaker 3" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:236 -msgctxt "@label" +msgctxt "@label Printer name" msgid "Ultimaker 3 Extended" -msgstr "얼티메이커 3 확장판" +msgstr "Ultimaker 3 Extended" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:252 msgctxt "@label" @@ -1605,8 +1709,6 @@ msgid "Enter the IP address or hostname of your printer on the network." msgstr "네트워크에 프린터의 IP 주소 또는 호스트 이름을 입력하십시오." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:379 -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:92 -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:88 #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:181 msgctxt "@action:button" msgid "OK" @@ -1627,6 +1729,11 @@ msgctxt "@label: arg 1 is group name" msgid "%1 is not set up to host a group of connected Ultimaker 3 printers" msgstr "?은 연결된 Ultimaker 3에 연결된 프린터 그룹을 호스트하도록 설정되지 않았습니다" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterMonitorItem.qml:55 +msgctxt "@label link to connect manager" +msgid "Add/Remove printers" +msgstr "프린터 추가/제거" + #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/OpenPanelButton.qml:14 msgctxt "@info:tooltip" msgid "Opens the print jobs page with your default web browser." @@ -1657,11 +1764,16 @@ msgid "Available" msgstr "유효한" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:43 -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:101 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:100 msgctxt "@label:MonitorStatus" msgid "Lost connection with the printer" msgstr "프린터와의 연결이 끊어졌습니다" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:47 +msgctxt "@label Printer status" +msgid "Unknown" +msgstr "알 수 없음" + #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:257 msgctxt "@label:status" msgid "Disabled" @@ -1753,138 +1865,250 @@ msgctxt "@action:button" msgid "Activate Configuration" msgstr "구성 활성화" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:20 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:21 msgctxt "@title:window" -msgid "Cura SolidWorks Plugin Configuration" -msgstr "Cura SolidWorks Plugin 설정" +msgid "SolidWorks: Export wizard" +msgstr "SolidWorks: 내보내기 마법사" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:44 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:45 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:140 msgctxt "@action:label" -msgid "Default quality of the exported STL:" -msgstr "내 보낸 STL의 기본 품질 :" +msgid "Quality:" +msgstr "품질:" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:79 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:78 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:179 msgctxt "@option:curaSolidworksStlQuality" -msgid "Always ask" -msgstr "항상 물어보다" +msgid "Fine (3D-printing)" +msgstr "고품질 (3D-프린팅)" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:80 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:79 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:180 msgctxt "@option:curaSolidworksStlQuality" -msgid "Always use Fine quality" -msgstr "항상 좋은 품질을 사용하십시오" +msgid "Coarse (3D-printing)" +msgstr "저품질 (3D-프린팅)" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:81 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:80 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:181 msgctxt "@option:curaSolidworksStlQuality" -msgid "Always use Coarse quality" -msgstr "거친 품질을 항상 사용하십시오" +msgid "Fine (SolidWorks)" +msgstr "고품질 (SolidWorks)" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:20 -msgctxt "@title:window" -msgid "Import SolidWorks File as STL..." -msgstr "SolidWorks 파일을 STL로 가져 오기 ..." - -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:43 -msgctxt "@info:tooltip" -msgid "Quality of the Exported STL" -msgstr "내보낸 STL의 품질" - -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:48 -msgctxt "@action:label" -msgid "Quality" -msgstr "품질" - -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:62 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:81 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:182 msgctxt "@option:curaSolidworksStlQuality" -msgid "Coarse" -msgstr "결이 거친" +msgid "Coarse (SolidWorks)" +msgstr "저품질 (SolidWorks)" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:63 -msgctxt "@option:curaSolidworksStlQuality" -msgid "Fine" -msgstr "우수한" - -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:78 -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:82 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:94 msgctxt "@text:window" -msgid "Remember my choice" -msgstr "내 선택을 기억하라" +msgid "Show this dialog again" +msgstr "이 대화창을 다시 표시" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:81 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:104 +msgctxt "@action:button" +msgid "Continue" +msgstr "계속" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:116 +msgctxt "@action:button" +msgid "Abort" +msgstr "중단" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:21 +msgctxt "@title:window" +msgid "How to install Cura SolidWorks macro" +msgstr "Cura SolidWorks 매크로 설치 방법" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:62 +msgctxt "@description:label" +msgid "Steps:" +msgstr "단계:" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:140 +msgctxt "@action:button" +msgid "" +"Open the directory\n" +"with macro and icon" +msgstr "매크로와 아이콘으로\n디렉토리 열기" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:160 +msgctxt "@description:label" +msgid "Instructions:" +msgstr "안내:" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:202 +msgctxt "@action:playpause" +msgid "Play" +msgstr "재생" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:206 +msgctxt "@action:playpause" +msgid "Pause" +msgstr "중지" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:268 +msgctxt "@action:button" +msgid "Previous Step" +msgstr "이전 단계" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:283 +msgctxt "@action:button" +msgid "Done" +msgstr "완료" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:287 +msgctxt "@action:button" +msgid "Next Step" +msgstr "다음 단계" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:21 +msgctxt "@title:window" +msgid "SolidWorks plugin: Configuration" +msgstr "SolidWorks 플러그인: 구성" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:39 +msgctxt "@title:tab" +msgid "Conversion settings" +msgstr "변환 설정" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:66 +msgctxt "@label" +msgid "First choice:" +msgstr "첫 번째 선택:" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:86 +msgctxt "@text:menu" +msgid "Latest installed version (Recommended)" +msgstr "가장 최근 설치 버전(권장)" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:95 +msgctxt "@text:menu" +msgid "Default version" +msgstr "기본 버전" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:193 +msgctxt "@label" +msgid "Show wizard before opening SolidWorks files" +msgstr "SolidWorks 파일을 열기 전 마법사 표시" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:203 +msgctxt "@label" +msgid "Automatically rotate opened file into normed orientation" +msgstr "열린 파일을 규정된 방향으로 자동 회전" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:210 +msgctxt "@title:tab" +msgid "Installation(s)" +msgstr "설치" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:284 +msgctxt "@label" +msgid "COM service found" +msgstr "COM 서비스 발견" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:295 +msgctxt "@label" +msgid "Executable found" +msgstr "실행가능 발견" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:306 +msgctxt "@label" +msgid "COM starting" +msgstr "COM 시작" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:317 +msgctxt "@label" +msgid "Revision number" +msgstr "수정 번호" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:328 +msgctxt "@label" +msgid "Functions available" +msgstr "사용 가능한 기능" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:341 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:264 +msgctxt "@action:button" +msgid "Save" +msgstr "저장하다" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:117 msgctxt "@label" msgid "Color scheme" msgstr "색 구성표" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:96 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:132 msgctxt "@label:listbox" msgid "Material Color" msgstr "재질 색상" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:100 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:136 msgctxt "@label:listbox" msgid "Line Type" msgstr "라인 유형" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:104 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:140 msgctxt "@label:listbox" msgid "Feedrate" msgstr "이송 속도" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:108 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:144 msgctxt "@label:listbox" msgid "Layer thickness" msgstr "레이어 두께" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:148 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:185 msgctxt "@label" msgid "Compatibility Mode" msgstr "호환 모드" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:230 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:264 msgctxt "@label" msgid "Show Travels" msgstr "이동 표시" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:236 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:270 msgctxt "@label" msgid "Show Helpers" msgstr "도움말 보이기" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:242 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:276 msgctxt "@label" msgid "Show Shell" msgstr "셸 표시" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:248 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:282 msgctxt "@label" msgid "Show Infill" msgstr "충전물 표시" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:297 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:330 msgctxt "@label" msgid "Only Show Top Layers" msgstr "상단 레이어 만 표시" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:306 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:339 msgctxt "@label" msgid "Show 5 Detailed Layers On Top" msgstr "상단에 5 개의 세부 레이어 표시" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:317 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:350 msgctxt "@label" msgid "Top / Bottom" msgstr "위 / 아래" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:321 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:354 msgctxt "@label" msgid "Inner Wall" msgstr "내벽" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:378 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:410 msgctxt "@label" msgid "min" msgstr "최소" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:420 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:452 msgctxt "@label" msgid "max" msgstr "최대" @@ -1909,7 +2133,7 @@ msgctxt "@label" msgid "Settings" msgstr "설정" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:455 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:466 msgctxt "@info:tooltip" msgid "Change active post-processing scripts" msgstr "활성 사후 처리 스크립트 변경" @@ -1984,23 +2208,53 @@ msgctxt "@action:label" msgid "Smoothing" msgstr "부드럽게하기" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:208 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:38 +msgctxt "@label" +msgid "Mesh Type" +msgstr "메쉬 유형" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:69 +msgctxt "@label" +msgid "Normal model" +msgstr "일반 모델" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:76 +msgctxt "@label" +msgid "Print as support" +msgstr "서포터로 프린팅" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:84 +msgctxt "@label" +msgid "Don't support overlap with other models" +msgstr "다른 모델과 오버랩되도록 지지하지 않음" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:92 +msgctxt "@label" +msgid "Modify settings for overlap with other models" +msgstr "다른 모델과의 오버랩에 대한 설정 수정" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:100 +msgctxt "@label" +msgid "Modify settings for infill of other models" +msgstr "다른 모델의 충진재에 대한 설정 수정" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:333 msgctxt "@action:button" msgid "Select settings" msgstr "설정 선택" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:248 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:375 msgctxt "@title:window" msgid "Select Settings to Customize for this model" msgstr "이 모델에 맞게 사용자 정의 설정을 선택하십시오" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:272 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:402 #: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:91 msgctxt "@label:textbox" msgid "Filter..." msgstr "필터..." -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:296 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:426 msgctxt "@label:checkbox" msgid "Show all" msgstr "모두 보이기" @@ -2359,66 +2613,66 @@ msgctxt "@label" msgid "Everything is in order! You're done with your CheckUp." msgstr "당신의 점검으로 모든 것이 순조롭게 끝났습니다." -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:88 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:87 msgctxt "@label:MonitorStatus" msgid "Not connected to a printer" msgstr "프린터에 연결되지 않음" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:90 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:89 msgctxt "@label:MonitorStatus" msgid "Printer does not accept commands" msgstr "프린터가 명령을 받아들이지 않습니다" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:96 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:95 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:194 msgctxt "@label:MonitorStatus" msgid "In maintenance. Please check the printer" msgstr "유지 보수 중. 프린터를 확인하십시오" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:103 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:102 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:184 msgctxt "@label:MonitorStatus" msgid "Printing..." msgstr "인쇄..." -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:106 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:105 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:186 msgctxt "@label:MonitorStatus" msgid "Paused" msgstr "일시 중지됨" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:109 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:108 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:188 msgctxt "@label:MonitorStatus" msgid "Preparing..." msgstr "준비 중 ..." -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:111 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:110 msgctxt "@label:MonitorStatus" msgid "Please remove the print" msgstr "인쇄를 제거하십시오" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:237 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:241 msgctxt "@label:" msgid "Resume" msgstr "다시 시작하다" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:241 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:245 msgctxt "@label:" msgid "Pause" msgstr "중지" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:270 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:274 msgctxt "@label:" msgid "Abort Print" msgstr "인쇄 중단" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:280 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:284 msgctxt "@window:title" msgid "Abort print" msgstr "인쇄 중단" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:282 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:286 msgctxt "@label" msgid "Are you sure you want to abort the print?" msgstr "인쇄를 중단 하시겠습니까?" @@ -2451,19 +2705,19 @@ msgid "Customized" msgstr "맞춤형" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:157 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:593 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:595 msgctxt "@option:discardOrKeep" msgid "Always ask me this" msgstr "항상 이걸 내게 부탁해" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:158 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:594 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:596 msgctxt "@option:discardOrKeep" msgid "Discard and never ask again" msgstr "버리고 다시 묻지 마십시오" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:159 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:595 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:597 msgctxt "@option:discardOrKeep" msgid "Keep and never ask again" msgstr "계속하고 다시 묻지 마라" @@ -2498,72 +2752,72 @@ msgctxt "@label" msgid "Brand" msgstr "상표" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:92 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:88 msgctxt "@label" msgid "Material Type" msgstr "자재 유형" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:105 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:97 msgctxt "@label" msgid "Color" msgstr "색깔" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:139 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:141 msgctxt "@label" msgid "Properties" msgstr "속성" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:141 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:143 msgctxt "@label" msgid "Density" msgstr "밀도" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:156 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:158 msgctxt "@label" msgid "Diameter" msgstr "직경" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:185 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:187 msgctxt "@label" msgid "Filament Cost" msgstr "필라멘트 비용" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:201 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:203 msgctxt "@label" msgid "Filament weight" msgstr "필라멘트 무게" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:218 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:220 msgctxt "@label" msgid "Filament length" msgstr "필라멘트 길이" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:227 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:229 msgctxt "@label" msgid "Cost per Meter" msgstr "미터 당 비용" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:241 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:243 msgctxt "@label" msgid "This material is linked to %1 and shares some of its properties." msgstr "이 자료는 ?에 연결되어 있으며 일부 속성을 공유합니다." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:248 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:250 msgctxt "@label" msgid "Unlink Material" msgstr "재질 연결 해제" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:259 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:261 msgctxt "@label" msgid "Description" msgstr "기술" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:272 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:274 msgctxt "@label" msgid "Adhesion Information" msgstr "접착 정보" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:298 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:300 msgctxt "@label" msgid "Print settings" msgstr "인쇄 설정" @@ -2604,7 +2858,7 @@ msgid "Unit" msgstr "단위" #: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:14 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:439 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:509 msgctxt "@title:tab" msgid "General" msgstr "일반" @@ -2619,230 +2873,255 @@ msgctxt "@label" msgid "Language:" msgstr "언어:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:205 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:207 msgctxt "@label" msgid "Currency:" msgstr "통화:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:219 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:221 msgctxt "@label" msgid "Theme:" msgstr "테마:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:279 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:281 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:296 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:298 msgctxt "@info:tooltip" msgid "Slice automatically when changing settings." msgstr "설정을 변경할 때 자동으로 슬라이스합니다." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:304 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:306 msgctxt "@option:check" msgid "Slice automatically" msgstr "자동으로 슬라이스" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:318 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:320 msgctxt "@label" msgid "Viewport behavior" msgstr "뷰포트 동작" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:326 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:328 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:335 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:337 msgctxt "@option:check" msgid "Display overhang" msgstr "오버행 표시" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:342 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:344 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:347 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:349 msgctxt "@action:button" msgid "Center camera when item is selected" msgstr "항목을 선택하면 중앙 카메라" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:356 +#: /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:361 +#: /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:370 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:372 msgctxt "@info:tooltip" msgid "Should zooming move in the direction of the mouse?" msgstr "확대 / 축소가 마우스 방향으로 이동해야합니까?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:375 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:377 msgctxt "@action:button" msgid "Zoom toward mouse direction" msgstr "마우스 방향으로 확대 / 축소" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:384 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:386 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:389 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:391 msgctxt "@option:check" msgid "Ensure models are kept apart" msgstr "모델이 분리되어 있는지 확인하십시오" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:397 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:399 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:402 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:404 msgctxt "@option:check" msgid "Automatically drop models to the build plate" msgstr "모델을 빌드 플레이트에 자동으로 놓기" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:414 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:416 msgctxt "@info:tooltip" msgid "Show caution message in gcode reader." msgstr "gcode 리더에 주의 메시지를 표시하십시오" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:423 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:425 msgctxt "@option:check" msgid "Caution message in gcode reader" msgstr "gcode 리더의 주의 메시지" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:430 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:432 msgctxt "@info:tooltip" msgid "Should layer be forced into compatibility mode?" msgstr "레이어가 호환 모드로 강제 설정되어야합니까?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:435 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:437 msgctxt "@option:check" msgid "Force layer view compatibility mode (restart required)" msgstr "강제 레이어보기 호환성 모드 (다시 시작해야 함)" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:451 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:453 msgctxt "@label" msgid "Opening and saving files" msgstr "파일 열기 및 저장" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:457 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:459 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:462 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:464 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:473 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:478 msgctxt "@option:check" msgid "Scale extremely small models" msgstr "매우 작은 모델의 크기 조정" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:485 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:487 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:490 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:492 msgctxt "@option:check" msgid "Add machine prefix to job name" msgstr "작업 이름에 기계 접두어 추가" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:499 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:501 msgctxt "@info:tooltip" msgid "Should a summary be shown when saving a project file?" msgstr "프로젝트 파일을 저장할 때 요약이 표시되어야합니까?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:503 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:505 msgctxt "@option:check" msgid "Show summary dialog when saving project" msgstr "프로젝트 저장시 요약 대화 상자 표시" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:512 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:514 msgctxt "@info:tooltip" msgid "Default behavior when opening a project file" msgstr "프로젝트 파일을 열 때 기본 동작" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:520 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:522 msgctxt "@window:text" msgid "Default behavior when opening a project file: " msgstr "프로젝트 파일을 열 때 기본 동작 " -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:533 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:535 msgctxt "@option:openProject" msgid "Always ask" msgstr "항상 물어보다" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:534 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:536 msgctxt "@option:openProject" msgid "Always open as a project" msgstr "항상 프로젝트로 여십시오" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:535 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:537 msgctxt "@option:openProject" msgid "Always import models" msgstr "항상 모델 가져 오기" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:571 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:573 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:580 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:582 msgctxt "@label" msgid "Override Profile" msgstr "프로필 재정의" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:629 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:631 msgctxt "@label" msgid "Privacy" msgstr "은둔" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:636 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:638 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:641 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:643 msgctxt "@option:check" msgid "Check for updates on start" msgstr "시작시 업데이트 확인" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:651 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:653 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:656 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:658 msgctxt "@option:check" msgid "Send (anonymous) print information" msgstr "인쇄 (익명) 인쇄 정보" +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:674 +msgctxt "@label" +msgid "Experimental" +msgstr "실험적" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:680 +msgctxt "@info:tooltip" +msgid "Use multi build plate functionality" +msgstr "다수의 빌드 플레이트를 기능적으로 사용하기" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:685 +msgctxt "@option:check" +msgid "Use multi build plate functionality (restart required)" +msgstr "다수의 빌드 플레이트 기능성 사용(다시 시작해야 합니다)" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:694 +msgctxt "@info:tooltip" +msgid "Should newly loaded models be arranged on the build plate? Used in conjunction with multi build plate (EXPERIMENTAL)" +msgstr "새롭게 로드한 모델을 빌드 플레이트에 정렬해야 합니까? 다수의 빌드 플레이트와 연계하여 사용(실험 중)" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:699 +msgctxt "@option:check" +msgid "Do not arrange objects on load" +msgstr "로드 중인 대상물을 정렬하지 마십시오" + #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:444 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:514 msgctxt "@title:tab" msgid "Printers" msgstr "프린터" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:37 #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:51 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:137 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:138 msgctxt "@action:button" msgid "Activate" msgstr "활성화" @@ -2885,7 +3164,7 @@ msgid "Waiting for a printjob" msgstr "인쇄거리를 기다리는 중" #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:448 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:518 msgctxt "@title:tab" msgid "Profiles" msgstr "프로필" @@ -2911,13 +3190,13 @@ msgid "Duplicate" msgstr "복제" #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:113 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:201 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:182 msgctxt "@action:button" msgid "Import" msgstr "가져오다" #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:119 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:212 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:193 msgctxt "@action:button" msgid "Export" msgstr "내보내다" @@ -2983,7 +3262,7 @@ msgid "Export Profile" msgstr "프로필 내보내기" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:446 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:516 msgctxt "@title:tab" msgid "Materials" msgstr "자재" @@ -2998,60 +3277,60 @@ msgctxt "@action:label %1 is printer name" msgid "Printer: %1" msgstr "프린터" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:149 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:150 msgctxt "@action:button" msgid "Create" msgstr "창조하다" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:168 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:160 msgctxt "@action:button" msgid "Duplicate" msgstr "복제" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:311 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:319 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:298 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:306 msgctxt "@title:window" msgid "Import Material" msgstr "재료 가져 오기" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:320 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:307 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/MaterialsPage.qml:324 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:311 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully imported material %1" msgstr "자재를 성공적으로 가져왔습니다" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:343 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:358 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:329 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:344 msgctxt "@title:window" msgid "Export Material" msgstr "자재 내보내기" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:362 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:348 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/MaterialsPage.qml:368 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:354 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully exported material to %1" msgstr "자재를 성공적으로 내보냈습니다" #: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:18 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:793 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:869 msgctxt "@title:window" msgid "Add Printer" msgstr "프린터 추가" -#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:185 +#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:194 msgctxt "@label" msgid "Printer Name:" msgstr "프린터 이름 :" -#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:208 +#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:217 msgctxt "@action:button" msgid "Add Printer" msgstr "프린터 추가" @@ -3178,12 +3457,7 @@ msgctxt "@label" msgid "Profile:" msgstr "윤곽:" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:66 -msgctxt "@" -msgid "No Profile Available" -msgstr "프로필을 사용할 수 없음" - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:104 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:102 msgctxt "@tooltip" msgid "" "Some setting/override values are different from the values stored in the profile.\n" @@ -3191,37 +3465,37 @@ msgid "" "Click to open the profile manager." msgstr "일부 설정 / 대체 값은 프로파일에 저장된 값과 다릅니다.\n\n프로파일 매니저를 열려면 클릭하십시오." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:152 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:150 msgctxt "@label:textbox" msgid "Search..." msgstr "찾다..." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:483 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:482 msgctxt "@action:menu" msgid "Copy value to all extruders" msgstr "모든 압출기에 값 복사" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:498 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:497 msgctxt "@action:menu" msgid "Hide this setting" msgstr "이 설정 숨기기" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:508 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:507 msgctxt "@action:menu" msgid "Don't show this setting" msgstr "이 설정을 표시하지 않음" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:512 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:511 msgctxt "@action:menu" msgid "Keep this setting visible" msgstr "이 설정을 계속 표시하십시오" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:531 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:530 msgctxt "@action:menu" msgid "Configure setting visiblity..." msgstr "설정 표시 설정 ..." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingCategory.qml:123 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingCategory.qml:250 msgctxt "@label" msgid "" "Some hidden settings use values different from their normal calculated value.\n" @@ -3229,27 +3503,27 @@ msgid "" "Click to make these settings visible." msgstr "일부 숨겨진 설정은 정상 계산 값과 다른 값을 사용합니다.\n\n이 설정을 표시하려면 클릭하십시오." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:62 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:61 msgctxt "@label Header for list of settings." msgid "Affects" msgstr "영향" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:67 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:66 msgctxt "@label Header for list of settings." msgid "Affected By" msgstr "영향을 받다" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:157 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:156 msgctxt "@label" -msgid "This setting is always shared between all extruders. Changing it here will change the value for all extruders" -msgstr "이 설정은 항상 모든 압출기간에 공유됩니다. 여기에서 변경하면 모든 압출기의 값이 변경됩니다" +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:160 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:159 msgctxt "@label" msgid "The value is resolved from per-extruder values " msgstr "이 값은 압출기 값마다 결정됩니다 " -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:186 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:190 msgctxt "@label" msgid "" "This setting has a value that is different from the profile.\n" @@ -3257,7 +3531,7 @@ msgid "" "Click to restore the value of the profile." msgstr "이 설정에는 프로필과 다른 값이 있습니다.\n\n프로필 값을 복원하려면 클릭하십시오." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:284 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:288 msgctxt "@label" msgid "" "This setting is normally calculated, but it currently has an absolute value set.\n" @@ -3265,71 +3539,71 @@ msgid "" "Click to restore the calculated value." msgstr "이 설정은 일반적으로 계산되지만 현재는 절대 값이 설정되어 있습니다.\n\n계산 된 값을 복원하려면 클릭하십시오." -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:120 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:128 msgctxt "@label:listbox" msgid "Print Setup" msgstr "인쇄 설정" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:120 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:128 msgctxt "@label:listbox" msgid "" "Print Setup disabled\n" "G-code files cannot be modified" msgstr "인쇄 설정 사용 안 함\nG 코드 파일은 수정할 수 없습니다" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:336 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:342 msgctxt "@label Hours and minutes" msgid "00h 00min" msgstr "00h 00min" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:354 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:359 msgctxt "@tooltip" -msgid "Time specification
      " -msgstr "시간 사양
      " +msgid "Time specification" +msgstr "시간 사양" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:429 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:441 msgctxt "@label" msgid "Cost specification" msgstr "비용 사양" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:434 -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:445 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:446 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:455 msgctxt "@label m for meter" msgid "%1m" msgstr "%1m" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:435 -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:446 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:447 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:456 msgctxt "@label g for grams" msgid "%1g" msgstr "%1g" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:444 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:454 msgctxt "@label" msgid "Total:" msgstr "총계:" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:498 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:504 msgctxt "@label Print estimates: m for meters, g for grams, %4 is currency and %3 is print cost" msgid "%1m / ~ %2g / ~ %4 %3" msgstr "%1m / ~ %2g / ~ %4 %3" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:503 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:509 msgctxt "@label Print estimates: m for meters, g for grams" msgid "%1m / ~ %2g" msgstr "%1m / ~ %2g" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:586 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:591 msgctxt "@tooltip" msgid "Recommended Print Setup

      Print with the recommended settings for the selected printer, material and quality." msgstr "권장 인쇄 설정\n선택한 프린터, 재질 및 품질에 대한 권장 설정으로 인쇄하십시오." -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:591 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:596 msgctxt "@tooltip" msgid "Custom Print Setup

      Print with finegrained control over every last bit of the slicing process." msgstr "사용자 정의 인쇄 설정\n마지막 스플 라이스 프로세스의 모든 비트를 미세하게 제어하여 인쇄하십시오." -#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:49 +#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:50 msgctxt "@title:menuitem %1 is the automatically selected material" msgid "Automatic: %1" msgstr "자동" @@ -3339,6 +3613,16 @@ msgctxt "@title:menu menubar:toplevel" msgid "&View" msgstr "조망" +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:37 +msgctxt "@action:inmenu menubar:view" +msgid "&Camera position" +msgstr "카메라 위치(&C)" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:52 +msgctxt "@action:inmenu menubar:view" +msgid "&Build plate" +msgstr "빌드 플레이트(&B)" + #: /home/ruben/Projects/Cura/resources/qml/Menus/NozzleMenu.qml:40 msgctxt "@title:menuitem %1 is the nozzle currently loaded in the printer" msgid "Automatic: %1" @@ -3351,14 +3635,14 @@ msgid_plural "Print Selected Models With:" msgstr[0] "선택된 모델 인쇄 :" msgstr[1] "선택된 모델ㄷ 인쇄 :" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ContextMenu.qml:83 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ContextMenu.qml:114 msgctxt "@title:window" msgid "Multiply Selected Model" msgid_plural "Multiply Selected Models" msgstr[0] "선택한 모델 곱하기" msgstr[1] "선택한 모델ㄷ 곱하기" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ContextMenu.qml:108 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ContextMenu.qml:139 msgctxt "@label" msgid "Number of Copies" msgstr "매수" @@ -3374,7 +3658,7 @@ msgid "No printer connected" msgstr "연결된 프린터 없음" #: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:90 -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:138 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:139 msgctxt "@label" msgid "Extruder" msgstr "압출기" @@ -3484,254 +3768,294 @@ msgctxt "@label" msgid "Estimated time left" msgstr "예상 남은 시간" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:72 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:79 msgctxt "@action:inmenu" msgid "Toggle Fu&ll Screen" msgstr "Fu & ll 화면 토글" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:79 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:86 msgctxt "@action:inmenu menubar:edit" msgid "&Undo" msgstr "풀어 놓다" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:89 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:96 msgctxt "@action:inmenu menubar:edit" msgid "&Redo" msgstr "다시하다" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:99 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:106 msgctxt "@action:inmenu menubar:file" msgid "&Quit" msgstr "그만두다" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:107 -msgctxt "@action:inmenu menubar:view" -msgid "&Reset camera position" -msgstr "카메라 위치 재설정(&R)" - #: /home/ruben/Projects/Cura/resources/qml/Actions.qml:114 +msgctxt "@action:inmenu menubar:view" +msgid "&3D View" +msgstr "3D 보기(&3)" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:121 +msgctxt "@action:inmenu menubar:view" +msgid "&Front View" +msgstr "앞에서 보기(&F)" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:128 +msgctxt "@action:inmenu menubar:view" +msgid "&Top View" +msgstr "위에서 보기(&T)" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:135 +msgctxt "@action:inmenu menubar:view" +msgid "&Left Side View" +msgstr "왼쪽에서 보기(&L)" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:142 +msgctxt "@action:inmenu menubar:view" +msgid "&Right Side View" +msgstr "오른쪽에서 보기(&R)" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:149 msgctxt "@action:inmenu" msgid "Configure Cura..." msgstr "Cura 구성 ..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:121 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:156 msgctxt "@action:inmenu menubar:printer" msgid "&Add Printer..." msgstr "프린터 추가 ..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:127 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:162 msgctxt "@action:inmenu menubar:printer" msgid "Manage Pr&inters..." msgstr "프린터 관리 ..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:134 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:169 msgctxt "@action:inmenu" msgid "Manage Materials..." msgstr "자료 관리 ..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:142 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:177 msgctxt "@action:inmenu menubar:profile" msgid "&Update profile with current settings/overrides" msgstr "현재 설정 / 재정의로 프로필 업데이트" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:150 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:185 msgctxt "@action:inmenu menubar:profile" msgid "&Discard current changes" msgstr "현재 변경 사항 무시" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:162 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:197 msgctxt "@action:inmenu menubar:profile" msgid "&Create profile from current settings/overrides..." msgstr "현재 설정 / 재정의 프로필 작성" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:168 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:203 msgctxt "@action:inmenu menubar:profile" msgid "Manage Profiles..." msgstr "프로필 관리 ..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:175 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:210 msgctxt "@action:inmenu menubar:help" msgid "Show Online &Documentation" msgstr "온라인 및 문서 표시" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:183 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:218 msgctxt "@action:inmenu menubar:help" msgid "Report a &Bug" msgstr "버그보고" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:191 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:226 msgctxt "@action:inmenu menubar:help" msgid "&About..." msgstr "대략..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:198 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:233 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:208 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:243 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:217 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:252 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:226 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:261 msgctxt "@action:inmenu" msgid "Delete Model" msgstr "모델 삭제" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:234 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:269 msgctxt "@action:inmenu" msgid "Ce&nter Model on Platform" msgstr "플랫폼에 대한 모델" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:240 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:275 msgctxt "@action:inmenu menubar:edit" msgid "&Group Models" msgstr "그룹 모델" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:250 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:295 msgctxt "@action:inmenu menubar:edit" msgid "Ungroup Models" msgstr "모델 그룹 해제" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:260 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:305 msgctxt "@action:inmenu menubar:edit" msgid "&Merge Models" msgstr "모델 합치기" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:270 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:315 msgctxt "@action:inmenu" msgid "&Multiply Model..." msgstr "모델 곱하기" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:277 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:322 msgctxt "@action:inmenu menubar:edit" msgid "&Select All Models" msgstr "모든 모델 선택" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:287 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:332 msgctxt "@action:inmenu menubar:edit" msgid "&Clear Build Plate" msgstr "빌드 플레이트 지우기" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:297 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:342 msgctxt "@action:inmenu menubar:file" msgid "Re&load All Models" msgstr "모든 모델 새로고치" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:306 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:351 +msgctxt "@action:inmenu menubar:edit" +msgid "Arrange All Models To All Build Plates" +msgstr "모든 모델을 모든 빌드 플레이트에 정렬" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:358 msgctxt "@action:inmenu menubar:edit" msgid "Arrange All Models" msgstr "모든 모델 정렬" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:314 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:366 msgctxt "@action:inmenu menubar:edit" msgid "Arrange Selection" msgstr "선택 정렬" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:321 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:373 msgctxt "@action:inmenu menubar:edit" msgid "Reset All Model Positions" msgstr "모든 모델 위치 재설정" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:328 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:380 msgctxt "@action:inmenu menubar:edit" msgid "Reset All Model &Transformations" msgstr "모든 모델 및 변환 재설정" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:335 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:387 msgctxt "@action:inmenu menubar:file" msgid "&Open File(s)..." msgstr "파일 열기" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:343 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:395 msgctxt "@action:inmenu menubar:file" msgid "&New Project..." msgstr "새 프로젝트..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:350 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:402 msgctxt "@action:inmenu menubar:help" msgid "Show Engine &Log..." msgstr "엔진 및 로그 표시" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:358 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:410 msgctxt "@action:inmenu menubar:help" msgid "Show Configuration Folder" msgstr "구성 폴더 표시" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:365 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:417 msgctxt "@action:menu" msgid "Configure setting visibility..." msgstr "설정 표시 설정 ..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:372 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:424 msgctxt "@action:menu" msgid "Browse plugins..." msgstr "플러그인 찾아보기 ..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:379 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:431 msgctxt "@action:menu" msgid "Installed plugins..." msgstr "설치된 플러그인 ..." -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:28 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:438 +msgctxt "@action:inmenu menubar:view" +msgid "Expand/Collapse Sidebar" +msgstr "사이드바 확장/축소" + +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:26 msgctxt "@label:PrintjobStatus" msgid "Please load a 3D model" msgstr "3D 모델을 로드하십시오" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:34 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:36 msgctxt "@label:PrintjobStatus" msgid "Ready to slice" msgstr "슬라이스 준비 완료" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:36 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:38 msgctxt "@label:PrintjobStatus" msgid "Slicing..." msgstr "슬라이싱 ..." -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:38 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:40 msgctxt "@label:PrintjobStatus %1 is target operation" msgid "Ready to %1" msgstr "준비 완료" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:40 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:42 msgctxt "@label:PrintjobStatus" msgid "Unable to Slice" msgstr "슬라이스 할 수 없음" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:42 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:44 msgctxt "@label:PrintjobStatus" msgid "Slicing unavailable" msgstr "슬라이스 사용 불가" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:162 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:171 +msgctxt "@info:tooltip" +msgid "Slice current printjob" +msgstr "현재 출력물 슬라이스" + +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:171 +msgctxt "@info:tooltip" +msgid "Cancel slicing process" +msgstr "슬라이싱 프로세스 취소" + +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:183 msgctxt "@label:Printjob" msgid "Prepare" msgstr "준비하다" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:162 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:183 msgctxt "@label:Printjob" msgid "Cancel" msgstr "취소하다" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:302 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:317 msgctxt "@info:tooltip" msgid "Select the active output device" msgstr "활성 출력 장치 선택" #: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:19 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:620 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:696 msgctxt "@title:window" msgid "Open file(s)" msgstr "열린 파일" @@ -3751,114 +4075,114 @@ msgctxt "@title:window" msgid "Ultimaker Cura" msgstr "Ultimaker Cura" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:81 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:102 msgctxt "@title:menu menubar:toplevel" msgid "&File" msgstr "파일" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:98 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:119 msgctxt "@action:inmenu menubar:file" msgid "&Save Selection to File" msgstr "선택 사항을 파일에 저장" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:107 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:128 msgctxt "@title:menu menubar:file" msgid "Save &As..." msgstr "다른 이름으로 저장..." -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:118 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:139 msgctxt "@title:menu menubar:file" -msgid "Save project" -msgstr "프로젝트 저장" +msgid "Save &Project..." +msgstr "프로젝트 저장(&P)..." -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:141 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:162 msgctxt "@title:menu menubar:toplevel" msgid "&Edit" msgstr "편집하다" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:158 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:179 msgctxt "@title:menu" msgid "&View" msgstr "조망" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:163 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:184 msgctxt "@title:menu" msgid "&Settings" msgstr "설정" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:165 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:186 msgctxt "@title:menu menubar:toplevel" msgid "&Printer" msgstr "프린터" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:175 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:187 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:196 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:208 msgctxt "@title:menu" msgid "&Material" msgstr "자재" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:176 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:188 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:197 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:209 msgctxt "@title:menu" msgid "&Profile" msgstr "윤곽" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:180 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:201 msgctxt "@action:inmenu" msgid "Set as Active Extruder" msgstr "활성 압출기로 설정" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:198 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:219 msgctxt "@title:menu menubar:toplevel" msgid "E&xtensions" msgstr "확장 프로그램" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:232 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:253 msgctxt "@title:menu menubar:toplevel" msgid "P&lugins" msgstr "플러그인" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:240 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:261 msgctxt "@title:menu menubar:toplevel" msgid "P&references" msgstr "환경 설정" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:248 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:269 msgctxt "@title:menu menubar:toplevel" msgid "&Help" msgstr "도움" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:330 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:351 msgctxt "@action:button" msgid "Open File" msgstr "파일 열기" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:442 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:512 msgctxt "@title:tab" msgid "Settings" msgstr "설정" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:478 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:554 msgctxt "@title:window" msgid "New project" msgstr "새 프로젝트" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:479 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:555 msgctxt "@info:question" msgid "Are you sure you want to start a new project? This will clear the build plate and any unsaved settings." msgstr "새 프로젝트를 시작 하시겠습니까? 빌드 플레이트 및 저장하지 않은 설정이 지워집니다." -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:721 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:797 msgctxt "@window:title" msgid "Install Plugin" msgstr "플러그인 설치" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:728 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:804 msgctxt "@title:window" msgid "Open File(s)" msgstr "파일 열기" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:731 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:807 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 코드 파일을 열려면 하나만 선택하십시오." @@ -3883,97 +4207,82 @@ msgctxt "@action:label" msgid "Don't show project summary on save again" msgstr "프로젝트 요약을 다시 저장하지 마십시오" -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:264 -msgctxt "@action:button" -msgid "Save" -msgstr "저장하다" - -#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:74 -msgctxt "@title:tab" -msgid "Prepare" -msgstr "준비하다" - -#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:100 -msgctxt "@title:tab" -msgid "Monitor" -msgstr "감시 장치" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:163 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:175 msgctxt "@label" msgid "Layer Height" msgstr "층 높이" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:323 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:345 msgctxt "@tooltip" msgid "A custom profile is currently active. To enable the quality slider, choose a default quality profile in Custom tab" msgstr "사용자 지정 프로필이 현재 활성 상태입니다. 품질 슬라이더를 실행하려면 사용자 지정 탭에서 기본 품질 프로필을 선택하십시오." -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:340 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:362 msgctxt "@label" msgid "Print Speed" msgstr "인쇄 속도" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:350 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:374 msgctxt "@label" msgid "Slower" msgstr "천천히" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:361 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:385 msgctxt "@label" msgid "Faster" msgstr "빨리" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:388 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:423 msgctxt "@tooltip" msgid "You have modified some profile settings. If you want to change these go to custom mode." msgstr "일부 프로필 설정을 수정했습니다. 이러한 설정을 변경하려면 사용자 지정 모드로 이동하십시오." -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:413 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:446 msgctxt "@label" msgid "Infill" msgstr "빈 공간 채우기" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:633 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:668 msgctxt "@label" msgid "Gradual infill will gradually increase the amount of infill towards the top." msgstr "점차적인 빈 공간 채우기는 점차적으로 빈 공간 채우기의 양을 증가시킵니다." -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:645 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:680 msgctxt "@label" msgid "Enable gradual" msgstr "점진적으로 사용" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:712 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:747 msgctxt "@label" msgid "Generate Support" msgstr "지지물 생성" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:746 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:781 msgctxt "@label" msgid "Generate structures to support parts of the model which have overhangs. Without these structures, such parts would collapse during printing." msgstr "돌출부가있는 모델의 부분을 지원하는 구조를 생성합니다. 이러한 구조가 없으면 이러한 부분이 인쇄 중에 붕괴됩니다." -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:764 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:799 msgctxt "@label" msgid "Support Extruder" msgstr "압출기 지지물" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:816 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:851 msgctxt "@label" msgid "Select which extruder to use for support. This will build up supporting structures below the model to prevent the model from sagging or printing in mid air." msgstr "지원할 압출기를 선택하십시오. 이렇게하면 모형 아래에 지지 구조가 만들어져 모델이 중간 공기에서 처지거나 인쇄되는 것을 방지합니다." -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:839 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:874 msgctxt "@label" msgid "Build Plate Adhesion" msgstr "플레이트 접착력 강화" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:894 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:929 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 "테두리 또는 raft 인쇄를 사용합니다. 이렇게하면 개체 주변이나 아래에 평평한 영역이 추가되어 나중에 쉽게자를 수 있습니다." -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:934 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:969 msgctxt "@label" msgid "Need help improving your prints?
      Read the Ultimaker Troubleshooting Guides" msgstr "인쇄물 개선에 도움이 필요하십니까?\nUltimaker 문제 해결 가이드 읽기" @@ -3990,17 +4299,22 @@ msgctxt "@title:window" msgid "Open project file" msgstr "프로젝트 파일 열기" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:72 +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:93 msgctxt "@text:window" msgid "This is a Cura project file. Would you like to open it as a project or import the models from it?" msgstr "이 파일은 Cura 프로젝트 파일입니다. 프로젝트로 열거나 모델을 가져 오시겠습니까?" #: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:103 +msgctxt "@text:window" +msgid "Remember my choice" +msgstr "내 선택을 기억하라" + +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:122 msgctxt "@action:button" msgid "Open as project" msgstr "프로젝트로 열기" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:122 +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:131 msgctxt "@action:button" msgid "Import models" msgstr "모델 가져 오기" @@ -4010,21 +4324,36 @@ msgctxt "@title:window" msgid "Engine Log" msgstr "엔진 로그" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:242 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:245 msgctxt "@label" msgid "Material" msgstr "자재" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:349 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:352 msgctxt "@label" -msgid "Check compatibility" -msgstr "호환성 확인" +msgid "Check compatibility" +msgstr "호환성 확인" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:369 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:372 msgctxt "@tooltip" msgid "Click to check the material compatibility on Ultimaker.com." msgstr "Ultimaker.com의 재질 호환성을 확인하려면 클릭하십시오." +#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:211 +msgctxt "@option:check" +msgid "See only current build plate" +msgstr "현재의 빌드 플레이트만 보기" + +#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:227 +msgctxt "@action:button" +msgid "Arrange to all build plates" +msgstr "모든 빌드 플레이트 정렬" + +#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:247 +msgctxt "@action:button" +msgid "Arrange current build plate" +msgstr "현재의 빌드 플레이트 정렬" + #: MachineSettingsAction/plugin.json msgctxt "description" msgid "Provides a way to change machine settings (such as build volume, nozzle size, etc)" @@ -4115,6 +4444,26 @@ msgctxt "name" msgid "USB printing" msgstr "USB 인쇄" +#: PrepareStage/plugin.json +msgctxt "description" +msgid "Provides a prepare stage in Cura." +msgstr "Cura에서 준비 단계 제공." + +#: PrepareStage/plugin.json +msgctxt "name" +msgid "Prepare Stage" +msgstr "준비 단계" + +#: CuraLiveScriptingPlugin/plugin.json +msgctxt "description" +msgid "Provides an edit window for direct script editing." +msgstr "직접 스크립트 편집을 위한 편집창 제공." + +#: CuraLiveScriptingPlugin/plugin.json +msgctxt "name" +msgid "Live scripting tool" +msgstr "라이브 스크립팅 도구" + #: RemovableDriveOutputDevice/plugin.json msgctxt "description" msgid "Provides removable drive hotplugging and writing support." @@ -4135,6 +4484,16 @@ msgctxt "name" msgid "UM3 Network Connection" msgstr "UM3 네트워크 연결" +#: MonitorStage/plugin.json +msgctxt "description" +msgid "Provides a monitor stage in Cura." +msgstr "Cura에서 모니터 단계 제공." + +#: MonitorStage/plugin.json +msgctxt "name" +msgid "Monitor Stage" +msgstr "모니터 단계" + #: FirmwareUpdateChecker/plugin.json msgctxt "description" msgid "Checks for firmware updates." @@ -4147,8 +4506,8 @@ msgstr "펌웨어 업데이트 검사기" #: CuraSolidWorksPlugin/plugin.json msgctxt "description" -msgid "Gives you the possibility to open certain files via SolidWorks itself. These are then converted and loaded into Cura" -msgstr "SolidWorks 자체를 통해 특정 파일을 열 수 있습니다. 이것들은 변환되어 Cura에 로드됩니다" +msgid "Gives you the possibility to open certain files using SolidWorks itself. Conversion is done by this plugin and additional optimizations." +msgstr "SolidWorks를 사용하여 특정 파일을 열 수 있는 가능성을 제공합니다. 이 플러그인과 추가 최적화로 변환을 수행합니다." #: CuraSolidWorksPlugin/plugin.json msgctxt "name" @@ -4215,6 +4574,16 @@ msgctxt "name" msgid "Legacy Cura Profile Reader" msgstr "레거시 Cura 프로필 리더" +#: CuraBlenderPlugin/plugin.json +msgctxt "description" +msgid "Helps to open Blender files directly in Cura." +msgstr "Cura에서 직접 Blender 파일을 열도록 도와줍니다." + +#: CuraBlenderPlugin/plugin.json +msgctxt "name" +msgid "Blender Integration (experimental)" +msgstr "Blender 통합(실험 중)" + #: GCodeProfileReader/plugin.json msgctxt "description" msgid "Provides support for importing profiles from g-code files." @@ -4375,6 +4744,16 @@ 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." @@ -4415,6 +4794,156 @@ msgctxt "name" msgid "Cura Profile Reader" msgstr "Cura 프로필 판독기" +#~ msgctxt "@label" +#~ msgid "Unknown" +#~ msgstr "알 수 없는" + +#~ msgctxt "@info:status" +#~ msgid "Errors appeared while opening your SolidWorks file! Please check, whether it is possible to open your file in SolidWorks itself without any problems as well!" +#~ msgstr "SolidWorks 파일을 여는 중 오류가 발생했습니다! 문제없이 SolidWorks에서 파일을 열 수 있는지 확인하십시오" + +#~ msgctxt "@info:status" +#~ msgid "Error while starting %s!" +#~ msgstr "시작하는 도중 오류가 발생했습니다!" + +#~ msgctxt "@item:inlistbox" +#~ msgid "Simulation view" +#~ msgstr "시뮬레이션 보기" + +#~ msgctxt "@info" +#~ msgid "Cura collects anonymised slicing statistics. You can disable this in the preferences." +#~ msgstr "Cura는 익명의 슬라이싱 통계를 수집합니다. 환경 설정에서 이 기능을 비활성화 할 수 있습니다." + +#~ msgctxt "@action:button" +#~ msgid "Dismiss" +#~ msgstr "버리다" + +#~ msgctxt "@menuitem" +#~ msgid "Global" +#~ msgstr "전역" + +#~ msgctxt "@label crash message" +#~ msgid "" +#~ "

      A fatal exception has occurred. 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 "" +#~ "

      치명적인 예외가 발생했습니다. 문제를 해결할 수 있도록 이 충돌 보고서를 보내주십시오.

      \n" +#~ "

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

      \n" +#~ " " + +#~ msgctxt "@label Cura version" +#~ msgid "Cura version: {version}
      " +#~ msgstr "Cura 버전: {version}
      " + +#~ msgctxt "@label Platform" +#~ msgid "Platform: {platform}
      " +#~ msgstr "플랫폼: {platform}
      " + +#~ msgctxt "@label Qt version" +#~ msgid "Qt version: {qt}
      " +#~ msgstr "Qt 버전: {qt}
      " + +#~ msgctxt "@label PyQt version" +#~ msgid "PyQt version: {pyqt}
      " +#~ msgstr "PyQt 버전: {pyqt}
      " + +#~ msgctxt "@label OpenGL" +#~ msgid "OpenGL: {opengl}
      " +#~ msgstr "OpenGL: {opengl}
      " + +#~ msgctxt "@title:groupbox" +#~ msgid "Exception traceback" +#~ msgstr "예외 역추적" + +#~ msgctxt "@label" +#~ msgid "Material diameter" +#~ msgstr "재료 직경" + +#~ msgctxt "@label" +#~ msgid "Ultimaker 3" +#~ msgstr "얼티메이커 3" + +#~ msgctxt "@label" +#~ msgid "Ultimaker 3 Extended" +#~ msgstr "얼티메이커 3 확장판" + +#~ msgctxt "@title:window" +#~ msgid "Cura SolidWorks Plugin Configuration" +#~ msgstr "Cura SolidWorks Plugin 설정" + +#~ msgctxt "@action:label" +#~ msgid "Default quality of the exported STL:" +#~ msgstr "내 보낸 STL의 기본 품질 :" + +#~ msgctxt "@option:curaSolidworksStlQuality" +#~ msgid "Always ask" +#~ msgstr "항상 물어보다" + +#~ msgctxt "@option:curaSolidworksStlQuality" +#~ msgid "Always use Fine quality" +#~ msgstr "항상 좋은 품질을 사용하십시오" + +#~ msgctxt "@option:curaSolidworksStlQuality" +#~ msgid "Always use Coarse quality" +#~ msgstr "거친 품질을 항상 사용하십시오" + +#~ msgctxt "@title:window" +#~ msgid "Import SolidWorks File as STL..." +#~ msgstr "SolidWorks 파일을 STL로 가져 오기 ..." + +#~ msgctxt "@info:tooltip" +#~ msgid "Quality of the Exported STL" +#~ msgstr "내보낸 STL의 품질" + +#~ msgctxt "@action:label" +#~ msgid "Quality" +#~ msgstr "품질" + +#~ msgctxt "@option:curaSolidworksStlQuality" +#~ msgid "Coarse" +#~ msgstr "결이 거친" + +#~ msgctxt "@option:curaSolidworksStlQuality" +#~ msgid "Fine" +#~ msgstr "우수한" + +#~ msgctxt "@" +#~ msgid "No Profile Available" +#~ msgstr "프로필을 사용할 수 없음" + +#~ msgctxt "@label" +#~ msgid "This setting is always shared between all extruders. Changing it here will change the value for all extruders" +#~ msgstr "이 설정은 항상 모든 압출기간에 공유됩니다. 여기에서 변경하면 모든 압출기의 값이 변경됩니다" + +#~ msgctxt "@tooltip" +#~ msgid "Time specification
      " +#~ msgstr "시간 사양
      " + +#~ msgctxt "@action:inmenu menubar:view" +#~ msgid "&Reset camera position" +#~ msgstr "카메라 위치 재설정(&R)" + +#~ msgctxt "@title:menu menubar:file" +#~ msgid "Save project" +#~ msgstr "프로젝트 저장" + +#~ msgctxt "@title:tab" +#~ msgid "Prepare" +#~ msgstr "준비하다" + +#~ msgctxt "@title:tab" +#~ msgid "Monitor" +#~ msgstr "감시 장치" + +#~ msgctxt "@label" +#~ msgid "Check compatibility" +#~ msgstr "호환성 확인" + +#~ msgctxt "description" +#~ msgid "Gives you the possibility to open certain files via SolidWorks itself. These are then converted and loaded into Cura" +#~ msgstr "SolidWorks 자체를 통해 특정 파일을 열 수 있습니다. 이것들은 변환되어 Cura에 로드됩니다" + #~ msgctxt "@label:status" #~ msgid "Blocked" #~ msgstr "막힘" @@ -4435,13 +4964,9 @@ msgstr "Cura 프로필 판독기" #~ msgid "To ensure that your {machine_name} is equipped with the latest features it is recommended to update the firmware regularly. This can be done on the {machine_name} (when connected to the network) or via USB." #~ msgstr "{machine_name}에 최신 기능이 탑재되어 있는지 확인하려면 정기적으로 펌웨어를 업데이트하는 것이 좋습니다. 이 작업은 {machine_name} (네트워크에 연결된 경우) 또는 USB를 통해 수행 할 수 있습니다." -msgctxt "@item:inlistbox" -msgid "Layer view" -msgstr "레이어 보기" - -msgctxt "@info:title" -msgid "Layer View" -msgstr "레이어 보기" +#~ msgctxt "@info:title" +#~ msgid "Layer View" +#~ msgstr "레이어 보기" #~ msgctxt "@menuitem" #~ msgid "Browse plugins" @@ -4534,6 +5059,6 @@ msgstr "레이어 보기" #~ msgid "Provides the Layer view." #~ msgstr "레이어 보기를 제공합니다." -msgctxt "name" -msgid "Layer View" -msgstr "레이어보기" +#~ msgctxt "name" +#~ msgid "Layer View" +#~ msgstr "레이어보기" diff --git a/resources/i18n/ko_KR/fdmextruder.def.json.po b/resources/i18n/ko_KR/fdmextruder.def.json.po index 2d9cffc0dc..e928a43967 100644 --- a/resources/i18n/ko_KR/fdmextruder.def.json.po +++ b/resources/i18n/ko_KR/fdmextruder.def.json.po @@ -2,12 +2,12 @@ # Copyright (C) 2017 Ultimaker # This file is distributed under the same license as the Cura package. # Ruben Dulek , 2017. -# +# msgid "" msgstr "" "Project-Id-Version: Cura 3.1\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2017-11-21 16:58+0000\n" +"POT-Creation-Date: 2017-08-02 16:53+0000\n" "PO-Revision-Date: 2017-11-30 13:05+0100\n" "Last-Translator: Brule\n" "Language-Team: Brule\n" diff --git a/resources/i18n/ko_KR/fdmprinter.def.json.po b/resources/i18n/ko_KR/fdmprinter.def.json.po index 0af3a1bb27..36637151ca 100644 --- a/resources/i18n/ko_KR/fdmprinter.def.json.po +++ b/resources/i18n/ko_KR/fdmprinter.def.json.po @@ -2,12 +2,12 @@ # Copyright (C) 2017 Ultimaker # This file is distributed under the same license as the Cura package. # Ruben Dulek , 2017. -# +# msgid "" msgstr "" "Project-Id-Version: Cura 3.0\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2017-11-21 16:58+0000\n" +"POT-Creation-Date: 2017-08-02 16:53+0000\n" "PO-Revision-Date: 2017-11-30 13:05+0100\n" "Last-Translator: Brule\n" "Language-Team: Brule\n" @@ -347,6 +347,16 @@ msgctxt "machine_gcode_flavor option Repetier" msgid "Repetier" msgstr "반복기" +#: fdmprinter.def.json +msgctxt "machine_firmware_retract label" +msgid "Firmware Retraction" +msgstr "펌웨어 제거" + +#: fdmprinter.def.json +msgctxt "machine_firmware_retract description" +msgid "Whether to use firmware retract commands (G10/G11) instead of using the E property in G1 commands to retract the material." +msgstr "재료를 제거하는 G1 명령어에서 E 속성을 사용하는 대신 펌웨어 제거 명령어(G10/G11)를 사용할 지 여부." + #: fdmprinter.def.json msgctxt "machine_disallowed_areas label" msgid "Disallowed areas" @@ -607,31 +617,6 @@ msgctxt "layer_height_0 description" msgid "The height of the initial layer in mm. A thicker initial layer makes adhesion to the build plate easier." msgstr "초기 레이어의 높이 (mm)입니다. 두꺼운 초기 레이어는 빌드 플레이트에 쉽게 접착합니다. " -#: fdmprinter.def.json -msgctxt "slicing_tolerance label" -msgid "Slicing Tolerance" -msgstr "슬라이싱 허용 오차" - -#: fdmprinter.def.json -msgctxt "slicing_tolerance description" -msgid "How to slice layers with diagonal surfaces. The areas of a layer can be generated based on where the middle of the layer intersects the surface (Middle). Alternatively each layer can have the areas which fall inside of the volume throughout the height of the layer (Exclusive) or a layer has the areas which fall inside anywhere within the layer (Inclusive). Exclusive retains the most details, Inclusive makes for the best fit and Middle takes the least time to process." -msgstr "레이어를 대각선 서피스로 슬라이스하는 방법 레이어 영역은 레이어의 중앙이 서피스와 교차하는 부분(중간)을 기준으로 생성됩니다. 또는 각 레이어에 레이어의 높이 전체의 볼륨에 들어가는 영역(배타)이나 레이어 안의 어느 지점에 들어가는 영역(중복)이 있을 수 있습니다. 배타는 가장 많은 디테일을 포함하고, 중복은 베스트 피트를 만들 수 있으며, 중간은 처리 시간이 가장 짧습니다." - -#: fdmprinter.def.json -msgctxt "slicing_tolerance option middle" -msgid "Middle" -msgstr "중간" - -#: fdmprinter.def.json -msgctxt "slicing_tolerance option exclusive" -msgid "Exclusive" -msgstr "배타" - -#: fdmprinter.def.json -msgctxt "slicing_tolerance option inclusive" -msgid "Inclusive" -msgstr "중복" - #: fdmprinter.def.json msgctxt "line_width label" msgid "Line Width" @@ -672,16 +657,6 @@ msgctxt "wall_line_width_x description" msgid "Width of a single wall line for all wall lines except the outermost one." msgstr "가장 바깥 쪽 벽 선을 제외한 모든 벽 선에 대해 단일 벽 선의 폭입니다. " -#: fdmprinter.def.json -msgctxt "roofing_line_width label" -msgid "Top Surface Skin Line Width" -msgstr "상단 표면 스킨 선 너비" - -#: fdmprinter.def.json -msgctxt "roofing_line_width description" -msgid "Width of a single line of the areas at the top of the print." -msgstr "인쇄 상단 부분의 한 줄 너비. " - #: fdmprinter.def.json msgctxt "skin_line_width label" msgid "Top/Bottom Line Width" @@ -862,41 +837,6 @@ msgctxt "roofing_layer_count description" msgid "The number of top most skin layers. Usually only one top most layer is sufficient to generate higher quality top surfaces." msgstr "최상층의 스킨 층의 수. 일반적으로 고품질 맨 위 표면을 생성하는 데 최상위 레이어 하나만 있으면 충분합니다. " -#: fdmprinter.def.json -msgctxt "roofing_pattern label" -msgid "Top Surface Skin Pattern" -msgstr "탑 표면 스킨 패턴" - -#: fdmprinter.def.json -msgctxt "roofing_pattern description" -msgid "The pattern of the top most layers." -msgstr "최상위 레이어의 패턴입니다. " - -#: fdmprinter.def.json -msgctxt "roofing_pattern option lines" -msgid "Lines" -msgstr "윤곽" - -#: fdmprinter.def.json -msgctxt "roofing_pattern option concentric" -msgid "Concentric" -msgstr "동심원의" - -#: fdmprinter.def.json -msgctxt "roofing_pattern option zigzag" -msgid "Zig Zag" -msgstr "지그재그" - -#: fdmprinter.def.json -msgctxt "roofing_angles label" -msgid "Top Surface Skin Line Directions" -msgstr "상단 표면 스킨 라인 방향" - -#: fdmprinter.def.json -msgctxt "roofing_angles description" -msgid "A list of integer line directions to use when the top surface skin layers use the lines or zig zag pattern. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the traditional default angles (45 and 135 degrees)." -msgstr "상단 표면 스킨 층이 선 또는 지그재그 패턴을 사용할 때 사용할 정수선 방향 목록. 목록의 요소는 레이어가 진행됨에 따라 순차적으로 사용되며 목록의 끝에 도달하면 처음부터 다시 시작됩니다. 목록 항목은 쉼표로 구분되며 전체 목록은 대괄호로 묶여 있습니다. 기본값은 전통적인 기본 각도 (45도 및 135도)를 사용하는 빈 목록입니다. " - #: fdmprinter.def.json msgctxt "top_bottom_extruder_nr label" msgid "Top/Bottom Extruder" @@ -1027,6 +967,16 @@ msgctxt "wall_0_inset description" msgid "Inset applied to the path of the outer wall. If the outer wall is smaller than the nozzle, and printed after the inner walls, use this offset to get the hole in the nozzle to overlap with the inner walls instead of the outside of the model." msgstr "외벽의 경로에 삽입이 적용됩니다. 외벽이 노즐보다 작고 내벽 다음에 인쇄 된 경우이 옵셋을 사용하여 노즐의 구멍이 모델 외부가 아닌 내벽과 겹치도록하십시오. " +#: fdmprinter.def.json +msgctxt "optimize_wall_printing_order label" +msgid "Optimize Wall Printing Order" +msgstr "벽면 인쇄 명령 최적화" + +#: fdmprinter.def.json +msgctxt "optimize_wall_printing_order description" +msgid "Optimize the order in which walls are printed so as to reduce the number of retractions and the distance travelled. Most parts will benefit from this being enabled but some may actually take longer so please compare the print time estimates with and without optimization." +msgstr "수축 및 이동 거리를 줄이도록 벽이 인쇄되는 순서를 최적화하십시오. 대부분의 부품은이 기능을 사용하면 도움이되지만, 실제로는 시간이 오래 걸릴 수 있으므로, 최적화 여부에 관계없이 인쇄 시간을 비교하십시오. " + #: fdmprinter.def.json msgctxt "outer_inset_first label" msgid "Outer Before Inner Walls" @@ -1097,6 +1047,16 @@ msgctxt "fill_perimeter_gaps option everywhere" msgid "Everywhere" msgstr "어디에나" +#: fdmprinter.def.json +msgctxt "filter_out_tiny_gaps label" +msgid "Filter Out Tiny Gaps" +msgstr "아주 작은 갭 필터 아웃" + +#: fdmprinter.def.json +msgctxt "filter_out_tiny_gaps description" +msgid "Filter out tiny gaps to reduce blobs on outside of model." +msgstr "아주 작은 갭을 필터 아웃하여 모델 외부의 얼룩을 줄입니다." + #: fdmprinter.def.json msgctxt "fill_outline_gaps label" msgid "Print Thin Walls" @@ -1479,7 +1439,7 @@ msgstr "충진 X 오프셋" #: fdmprinter.def.json msgctxt "infill_offset_x description" -msgid "The infill pattern is offset this distance along the X axis." +msgid "The infill pattern is moved this distance along the X axis." msgstr "충진 패턴이 X축을 따라 이 거리만큼 이동합니다." #: fdmprinter.def.json @@ -1489,7 +1449,7 @@ msgstr "충진 Y 오프셋" #: fdmprinter.def.json msgctxt "infill_offset_y description" -msgid "The infill pattern is offset this distance along the Y axis." +msgid "The infill pattern is moved this distance along the Y axis." msgstr "충진 패턴이 Y축을 따라 이 거리만큼 이동합니다." #: fdmprinter.def.json @@ -1509,8 +1469,8 @@ msgstr "충진 오버랩 비율" #: fdmprinter.def.json msgctxt "infill_overlap 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 "충진재와 벽 사이의 겹침 정도. 약간 겹치면 벽이 충전재에 단단히 연결됩니다." +msgid "The amount of overlap between the infill and the walls as a percentage of the infill line width. A slight overlap allows the walls to connect firmly to the infill." +msgstr "충진 라인 폭의 비율인 충진재와 벽 사이의 오버랩 양 약간의 오버랩으로 벽이 충진재와 확실하게 체결됩니다." #: fdmprinter.def.json msgctxt "infill_overlap_mm label" @@ -1529,8 +1489,8 @@ msgstr "피부 겹침 비율" #: fdmprinter.def.json msgctxt "skin_overlap description" -msgid "The amount of overlap between the skin and the walls as a percentage of the line width. A slight overlap allows the walls to connect firmly to the skin. This is a percentage of the average line widths of the skin lines and the innermost wall." -msgstr "선 두께의 백분율로 스킨과 벽 사이의 겹치는 정도입니다. 약간 겹치면 벽이 피부에 단단히 연결됩니다. 이것은 스킨 라인과 가장 안쪽 벽의 평균 라인 폭의 백분율입니다. " +msgid "The amount of overlap between the skin and the walls as a percentage of the skin line width. A slight overlap allows the walls to connect firmly to the skin. This is a percentage of the average line widths of the skin lines and the innermost wall." +msgstr "스킨 라인 폭의 비율인 스킨과 벽 사이의 오버랩 양 약간의 오버랩으로 벽이 스킨과 확실하게 체결됩니다. 이것은 스킨 라인과 가장 안쪽 벽과의 평균 라인 폭의 비율입니다." #: fdmprinter.def.json msgctxt "skin_overlap_mm label" @@ -1692,16 +1652,6 @@ msgctxt "material description" msgid "Material" msgstr "재료 " -#: fdmprinter.def.json -msgctxt "material_flow_dependent_temperature label" -msgid "Auto Temperature" -msgstr "자동 온도" - -#: fdmprinter.def.json -msgctxt "material_flow_dependent_temperature description" -msgid "Change the temperature for each layer automatically with the average flow speed of that layer." -msgstr "해당 레이어의 평균 유속으로 각 레이어의 온도를 자동으로 변경하십시오. " - #: fdmprinter.def.json msgctxt "default_material_print_temperature label" msgid "Default Printing Temperature" @@ -1752,16 +1702,6 @@ msgctxt "material_final_print_temperature description" msgid "The temperature to which to already start cooling down just before the end of printing." msgstr "인쇄 종료 직전에 이미 냉각이 시작될 온도입니다. " -#: fdmprinter.def.json -msgctxt "material_flow_temp_graph label" -msgid "Flow Temperature Graph" -msgstr "유동 온도 그래프" - -#: fdmprinter.def.json -msgctxt "material_flow_temp_graph description" -msgid "Data linking material flow (in mm3 per second) to temperature (degrees Celsius)." -msgstr "데이터 흐름 (mm3 / 초) - 온도 (섭씨). " - #: fdmprinter.def.json msgctxt "material_extrusion_cool_down_speed label" msgid "Extrusion Cool Down Speed Modifier" @@ -1779,8 +1719,8 @@ msgstr "빌드 플레이트 온도" #: fdmprinter.def.json msgctxt "material_bed_temperature description" -msgid "The temperature used for the heated build plate. If this is 0, the bed will not heat up for this print." -msgstr "가열 된 빌드 플레이트에 사용되는 온도. 이 값이 0이면이 인쇄물에 침대가 가열되지 않습니다. " +msgid "The temperature used for the heated build plate. If this is 0, the bed temperature will not be adjusted." +msgstr "가열 된 빌드 플레이트에 사용되는 온도. 이것이 0이면, 베드 온도가 조정되지 않습니다." #: fdmprinter.def.json msgctxt "material_bed_temperature_layer_0 label" @@ -3452,6 +3392,16 @@ msgctxt "support_tower_roof_angle description" msgid "The angle of a rooftop of a tower. A higher value results in pointed tower roofs, a lower value results in flattened tower roofs." msgstr "타워 옥상의 각도입니다. 높은 값을 지정하면 뾰족한 타워 지붕이되고, 값이 낮을수록 평평한 타워 지붕이됩니다. " +#: fdmprinter.def.json +msgctxt "support_mesh_drop_down label" +msgid "Drop Down Support Mesh" +msgstr "드롭 다운 지지대 메쉬" + +#: fdmprinter.def.json +msgctxt "support_mesh_drop_down description" +msgid "Make support everywhere below the support mesh, so that there's no overhang in the support mesh." +msgstr "지지 메쉬 아래의 모든 부분을 지원하여지지 메쉬에 돌출이 없어야 합니다. " + #: fdmprinter.def.json msgctxt "platform_adhesion label" msgid "Build Plate Adhesion" @@ -4084,16 +4034,6 @@ msgctxt "meshfix_keep_open_polygons description" msgid "Normally Cura tries to stitch up small holes in the mesh and remove parts of a layer with big holes. Enabling this option keeps those parts which cannot be stitched. This option should be used as a last resort option when everything else fails to produce proper GCode." msgstr "일반적으로 큐라(Cura)는 메쉬의 작은 구멍을 꿰매 붙이고 큰 구멍이있는 레이어의 부분을 제거하려고합니다. 이 옵션을 활성화하면 스티칭 할 수없는 파트가 유지됩니다. 이 옵션은 다른 모든 것이 올바른 GCode를 생성하지 못할 때 최후의 수단으로 사용해야합니다. " -#: 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 "multiple_mesh_overlap label" msgid "Merged Meshes Overlap" @@ -4244,16 +4184,6 @@ msgctxt "support_mesh description" msgid "Use this mesh to specify support areas. This can be used to generate support structure." msgstr "본 메시를 사용하여 지원 영역을 지정하십시오. 이것은 지원 구조를 생성하는 데 사용할 수 있습니다. " -#: fdmprinter.def.json -msgctxt "support_mesh_drop_down label" -msgid "Drop Down Support Mesh" -msgstr "드롭 다운 지지대 메쉬" - -#: fdmprinter.def.json -msgctxt "support_mesh_drop_down description" -msgid "Make support everywhere below the support mesh, so that there's no overhang in the support mesh." -msgstr "지지 메쉬 아래의 모든 부분을 지원하여지지 메쉬에 돌출이 없어야 합니다. " - #: fdmprinter.def.json msgctxt "anti_overhang_mesh label" msgid "Anti Overhang Mesh" @@ -4330,14 +4260,194 @@ msgid "experimental!" msgstr "실험적인 " #: fdmprinter.def.json -msgctxt "optimize_wall_printing_order label" -msgid "Optimize Wall Printing Order" -msgstr "벽면 인쇄 명령 최적화" +msgctxt "support_tree_enable label" +msgid "Tree Support" +msgstr "트리 지지물" #: fdmprinter.def.json -msgctxt "optimize_wall_printing_order description" -msgid "Optimize the order in which walls are printed so as to reduce the number of retractions and the distance travelled. Most parts will benefit from this being enabled but some may actually take longer so please compare the print time estimates with and without optimization." -msgstr "수축 및 이동 거리를 줄이도록 벽이 인쇄되는 순서를 최적화하십시오. 대부분의 부품은이 기능을 사용하면 도움이되지만, 실제로는 시간이 오래 걸릴 수 있으므로, 최적화 여부에 관계없이 인쇄 시간을 비교하십시오. " +msgctxt "support_tree_enable description" +msgid "Generate a tree-like support with branches that support your print. This may reduce material usage and print time, but greatly increases slicing time." +msgstr "프린트물을 지지하는 가지가 달린 나무 모양의 지지물을 생성합니다. 이것이 재료 사용과 인쇄 시간을 줄여줄 수 있지만, 슬라이싱 시간이 상당히 늘어납니다." + +#: fdmprinter.def.json +msgctxt "support_tree_angle label" +msgid "Tree Support Branch Angle" +msgstr "트리 지지물 브랜치 각도" + +#: fdmprinter.def.json +msgctxt "support_tree_angle description" +msgid "The angle of the branches. Use a lower angle to make them more vertical and more stable. Use a higher angle to be able to have more reach." +msgstr "브랜치의 각도. 적은 각도를 사용하면 더 수직이 되어 더 안정됩니다. 높은 각도를 사용하면 더 많이 도달할 수 있습니다." + +#: fdmprinter.def.json +msgctxt "support_tree_branch_distance label" +msgid "Tree Support Branch Distance" +msgstr "트리 지지물 브랜치 거리" + +#: fdmprinter.def.json +msgctxt "support_tree_branch_distance description" +msgid "How far apart the branches need to be when they touch the model. Making this distance small will cause the tree support to touch the model at more points, causing better overhang but making support harder to remove." +msgstr "모델에 접촉할 때 브랜치를 떨어뜨려야 하는 정도 이 거리를 짧게 하면 트리 지지물이 더 많은 접점에서 모델에 접촉하여, 오버행이 더 좋아지지만 지지물을 제거하기가 더 어렵게 됩니다." + +#: fdmprinter.def.json +msgctxt "support_tree_branch_diameter label" +msgid "Tree Support Branch Diameter" +msgstr "트리 지지물 브랜치 직경" + +#: fdmprinter.def.json +msgctxt "support_tree_branch_diameter description" +msgid "The diameter of the thinnest branches of tree support. Thicker branches are more sturdy. Branches towards the base will be thicker than this." +msgstr "트리 지지물의 가장 얇은 브랜치의 직경 브랜치가 두꺼울수록 더 견고해집니다. 베이스를 향한 브랜치는 이보다 더 두꺼워집니다." + +#: fdmprinter.def.json +msgctxt "support_tree_branch_diameter_angle label" +msgid "Tree Support Branch Diameter Angle" +msgstr "트리 지지물 브랜치 직경 각도" + +#: fdmprinter.def.json +msgctxt "support_tree_branch_diameter_angle description" +msgid "The angle of the branches' diameter as they gradually become thicker towards the bottom. An angle of 0 will cause the branches to have uniform thickness over their length. A bit of an angle can increase stability of the tree support." +msgstr "하단을 향할수록 점점 더 두꺼워짐에 따른 브랜치의 직경 각도. 이 각도가 0이면 브랜치는 길이 전체에 균일한 두께를 갖게 됩니다. 약간의 각도가 있으면 트리 지지물의 안정성을 높여 줍니다." + +#: fdmprinter.def.json +msgctxt "support_tree_collision_resolution label" +msgid "Tree Support Collision Resolution" +msgstr "트리 지지물 충돌 해결" + +#: fdmprinter.def.json +msgctxt "support_tree_collision_resolution description" +msgid "Resolution to compute collisions with to avoid hitting the model. Setting this lower will produce more accurate trees that fail less often, but increases slicing time dramatically." +msgstr "모델에 부딪히는 것을 피하기 위해 충돌을 계산하는 해결책 이 값을 낮게 설정하면 실패도가 낮은 더 정확한 트리를 생성하지만, 슬라이싱 시간이 현격하게 늘어납니다." + +#: fdmprinter.def.json +msgctxt "support_tree_wall_thickness label" +msgid "Tree Support Wall Thickness" +msgstr "트리 지지물 벽 두께" + +#: fdmprinter.def.json +msgctxt "support_tree_wall_thickness description" +msgid "The thickness of the walls of the branches of tree support. Thicker walls take longer to print but don't fall over as easily." +msgstr "트리 지지물의 브랜치 벽의 두께 벽이 두꺼울수록 인쇄 시간이 오래 걸리지만 쉽게 넘어지지 않습니다." + +#: fdmprinter.def.json +msgctxt "support_tree_wall_count label" +msgid "Tree Support Wall Line Count" +msgstr "트리 지지물 벽 라인 카운트" + +#: fdmprinter.def.json +msgctxt "support_tree_wall_count description" +msgid "The number of walls of the branches of tree support. Thicker walls take longer to print but don't fall over as easily." +msgstr "트리 지지물의 브랜치 벽의 개수 벽이 두꺼울수록 인쇄 시간이 오래 걸리지만 쉽게 넘어지지 않습니다." + +#: fdmprinter.def.json +msgctxt "slicing_tolerance label" +msgid "Slicing Tolerance" +msgstr "슬라이싱 허용 오차" + +#: fdmprinter.def.json +msgctxt "slicing_tolerance description" +msgid "How to slice layers with diagonal surfaces. The areas of a layer can be generated based on where the middle of the layer intersects the surface (Middle). Alternatively each layer can have the areas which fall inside of the volume throughout the height of the layer (Exclusive) or a layer has the areas which fall inside anywhere within the layer (Inclusive). Exclusive retains the most details, Inclusive makes for the best fit and Middle takes the least time to process." +msgstr "레이어를 대각선 서피스로 슬라이스하는 방법 레이어 영역은 레이어의 중앙이 서피스와 교차하는 부분(중간)을 기준으로 생성됩니다. 또는 각 레이어에 레이어의 높이 전체의 볼륨에 들어가는 영역(배타)이나 레이어 안의 어느 지점에 들어가는 영역(중복)이 있을 수 있습니다. 배타는 가장 많은 디테일을 포함하고, 중복은 베스트 피트를 만들 수 있으며, 중간은 처리 시간이 가장 짧습니다." + +#: fdmprinter.def.json +msgctxt "slicing_tolerance option middle" +msgid "Middle" +msgstr "중간" + +#: fdmprinter.def.json +msgctxt "slicing_tolerance option exclusive" +msgid "Exclusive" +msgstr "배타" + +#: fdmprinter.def.json +msgctxt "slicing_tolerance option inclusive" +msgid "Inclusive" +msgstr "중복" + +#: fdmprinter.def.json +msgctxt "roofing_line_width label" +msgid "Top Surface Skin Line Width" +msgstr "상단 표면 스킨 선 너비" + +#: fdmprinter.def.json +msgctxt "roofing_line_width description" +msgid "Width of a single line of the areas at the top of the print." +msgstr "인쇄 상단 부분의 한 줄 너비. " + +#: fdmprinter.def.json +msgctxt "roofing_pattern label" +msgid "Top Surface Skin Pattern" +msgstr "탑 표면 스킨 패턴" + +#: fdmprinter.def.json +msgctxt "roofing_pattern description" +msgid "The pattern of the top most layers." +msgstr "최상위 레이어의 패턴입니다. " + +#: fdmprinter.def.json +msgctxt "roofing_pattern option lines" +msgid "Lines" +msgstr "윤곽" + +#: fdmprinter.def.json +msgctxt "roofing_pattern option concentric" +msgid "Concentric" +msgstr "동심원의" + +#: fdmprinter.def.json +msgctxt "roofing_pattern option zigzag" +msgid "Zig Zag" +msgstr "지그재그" + +#: fdmprinter.def.json +msgctxt "roofing_angles label" +msgid "Top Surface Skin Line Directions" +msgstr "상단 표면 스킨 라인 방향" + +#: fdmprinter.def.json +msgctxt "roofing_angles description" +msgid "A list of integer line directions to use when the top surface skin layers use the lines or zig zag pattern. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the traditional default angles (45 and 135 degrees)." +msgstr "상단 표면 스킨 층이 선 또는 지그재그 패턴을 사용할 때 사용할 정수선 방향 목록. 목록의 요소는 레이어가 진행됨에 따라 순차적으로 사용되며 목록의 끝에 도달하면 처음부터 다시 시작됩니다. 목록 항목은 쉼표로 구분되며 전체 목록은 대괄호로 묶여 있습니다. 기본값은 전통적인 기본 각도 (45도 및 135도)를 사용하는 빈 목록입니다. " + +#: fdmprinter.def.json +msgctxt "infill_enable_travel_optimization label" +msgid "Infill Travel Optimization" +msgstr "충진재 이동 최적화" + +#: fdmprinter.def.json +msgctxt "infill_enable_travel_optimization description" +msgid "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." +msgstr "가능하면, 충진 라인 인쇄 순서가 최적화되어 이동 거리를 줄입니다. 이동 시간의 감소는 슬라이스되는 모델, 충진 패턴, 밀도 등에 따라 달라집니다. 작은 충진 영역이 많은 일부 모델의 경우, 모델을 슬라이스하는 시간이 상당히 늘어납니다." + +#: fdmprinter.def.json +msgctxt "material_flow_dependent_temperature label" +msgid "Auto Temperature" +msgstr "자동 온도" + +#: fdmprinter.def.json +msgctxt "material_flow_dependent_temperature description" +msgid "Change the temperature for each layer automatically with the average flow speed of that layer." +msgstr "해당 레이어의 평균 유속으로 각 레이어의 온도를 자동으로 변경하십시오. " + +#: fdmprinter.def.json +msgctxt "material_flow_temp_graph label" +msgid "Flow Temperature Graph" +msgstr "유동 온도 그래프" + +#: fdmprinter.def.json +msgctxt "material_flow_temp_graph description" +msgid "Data linking material flow (in mm3 per second) to temperature (degrees Celsius)." +msgstr "데이터 흐름 (mm3 / 초) - 온도 (섭씨). " + +#: 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 "support_skip_some_zags label" @@ -4936,6 +5046,46 @@ msgctxt "wireframe_nozzle_clearance description" msgid "Distance between the nozzle and horizontally downward lines. Larger clearance results in diagonally downward lines with a less steep angle, which in turn results in less upward connections with the next layer. Only applies to Wire Printing." msgstr "노즐과 수평 아래쪽 라인 사이의 거리. 클리어런스가 클수록 비스듬한 각도에서 비스듬히 아래쪽으로 선이 그어져 다음 층과의 연결이보다 적어집니다. 와이어 인쇄에만 적용됩니다. " +#: fdmprinter.def.json +msgctxt "adaptive_layer_height_enabled label" +msgid "Use adaptive layers" +msgstr "어댑티브 레이어 사용" + +#: fdmprinter.def.json +msgctxt "adaptive_layer_height_enabled description" +msgid "Adaptive layers computes the layer heights depending on the shape of the model." +msgstr "어댑티브 레이어는 모델의 모양에 따라 레이어의 높이를 계산합니다." + +#: fdmprinter.def.json +msgctxt "adaptive_layer_height_variation label" +msgid "Adaptive layers maximum variation" +msgstr "어댑티브 레이어 최대 변화" + +#: fdmprinter.def.json +msgctxt "adaptive_layer_height_variation description" +msgid "The maximum allowed height different from the base layer height in mm." +msgstr "기본 레이어 높이와 다른 최대 허용 높이 (mm)." + +#: fdmprinter.def.json +msgctxt "adaptive_layer_height_variation_step label" +msgid "Adaptive layers variation step size" +msgstr "어댑티브 레이어 변화 단계 크기" + +#: fdmprinter.def.json +msgctxt "adaptive_layer_height_variation_step description" +msgid "The difference in height of the next layer height compared to the previous one." +msgstr "이전 높이와 비교되는 다음 레이어 높이의 차이." + +#: fdmprinter.def.json +msgctxt "adaptive_layer_height_threshold label" +msgid "Adaptive layers threshold" +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 "더 작은 레이어를 사용할지 여부에 대한 임계 값 이 숫자는 레이어의 가장 급한 경사의 탄젠트와 비교됩니다." + #: fdmprinter.def.json msgctxt "command_line_settings label" msgid "Command Line Settings" @@ -4996,6 +5146,26 @@ msgctxt "mesh_rotation_matrix description" msgid "Transformation matrix to be applied to the model when loading it from file." msgstr "파일로부터 로드 하는 경유, 모델에 적용될 변환 행렬입니다. " +#~ msgctxt "infill_offset_x description" +#~ msgid "The infill pattern is offset this distance along the X axis." +#~ msgstr "충진 패턴이 X축을 따라 이 거리만큼 이동합니다." + +#~ msgctxt "infill_offset_y description" +#~ msgid "The infill pattern is offset this distance along the Y axis." +#~ msgstr "충진 패턴이 Y축을 따라 이 거리만큼 이동합니다." + +#~ msgctxt "infill_overlap 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 "충진재와 벽 사이의 겹침 정도. 약간 겹치면 벽이 충전재에 단단히 연결됩니다." + +#~ msgctxt "skin_overlap description" +#~ msgid "The amount of overlap between the skin and the walls as a percentage of the line width. A slight overlap allows the walls to connect firmly to the skin. This is a percentage of the average line widths of the skin lines and the innermost wall." +#~ msgstr "선 두께의 백분율로 스킨과 벽 사이의 겹치는 정도입니다. 약간 겹치면 벽이 피부에 단단히 연결됩니다. 이것은 스킨 라인과 가장 안쪽 벽의 평균 라인 폭의 백분율입니다. " + +#~ msgctxt "material_bed_temperature description" +#~ msgid "The temperature used for the heated build plate. If this is 0, the bed will not heat up for this print." +#~ msgstr "가열 된 빌드 플레이트에 사용되는 온도. 이 값이 0이면이 인쇄물에 침대가 가열되지 않습니다. " + #~ msgctxt "wall_x_extruder_nr label" #~ msgid "Inner Walls Extruder" #~ msgstr "내벽 압출기" diff --git a/resources/i18n/nl_NL/cura.po b/resources/i18n/nl_NL/cura.po index a6021b3ce0..48fe968815 100644 --- a/resources/i18n/nl_NL/cura.po +++ b/resources/i18n/nl_NL/cura.po @@ -1,14 +1,14 @@ # Cura -# Copyright (C) 2017 Ultimaker +# Copyright (C) 2018 Ultimaker # This file is distributed under the same license as the Cura package. -# Ruben Dulek , 2017. -# +# Ruben Dulek , 2018. +# msgid "" msgstr "" -"Project-Id-Version: Cura 3.0\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-11-21 16:58+0100\n" -"PO-Revision-Date: 2017-11-30 13:05+0100\n" +"Project-Id-Version: Cura 3.2\n" +"Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" +"POT-Creation-Date: 2018-01-29 09:48+0000\n" +"PO-Revision-Date: 2018-02-05 13:25+0100\n" "Last-Translator: Bothof \n" "Language-Team: Dutch\n" "Language: nl_NL\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:29 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:26 msgctxt "@action" msgid "Machine Settings" msgstr "Machine-instellingen" @@ -53,12 +53,11 @@ msgstr "Verbinding maken met Doodle3D Connect" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:87 #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:155 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:874 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:646 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:875 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:659 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:370 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrintWindow.qml:78 -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:104 -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:99 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:355 #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:188 #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:376 #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:139 @@ -98,7 +97,7 @@ msgctxt "@info:tooltip" msgid "Open the Doodle3D Connect web interface" msgstr "De Doodle3D Connect-webinterface openen" -#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:34 +#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:33 msgctxt "@item:inmenu" msgid "Show Changelog" msgstr "Wijzigingenlogboek Weergeven" @@ -113,78 +112,83 @@ msgctxt "@info:status" msgid "Profile has been flattened & activated." msgstr "Profiel is gevlakt en geactiveerd." -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:26 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:27 msgctxt "@item:inmenu" msgid "USB printing" msgstr "USB-printen" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:27 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:28 msgctxt "@action:button Preceded by 'Ready to'." msgid "Print via USB" msgstr "Printen via USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:28 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:29 msgctxt "@info:tooltip" msgid "Print via USB" msgstr "Via USB Printen" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:30 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:31 msgctxt "@info:status" msgid "Connected via USB" msgstr "Aangesloten via USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:154 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:183 msgctxt "@info:status" msgid "Unable to start a new job because the printer is busy or not connected." msgstr "Er kan geen nieuwe taak worden gestart omdat de printer bezig is of niet aangesloten is." -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:154 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:183 msgctxt "@info:title" msgid "Printer Unavailable" msgstr "Printer is niet beschikbaar" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:457 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:485 msgctxt "@info:status" msgid "This printer does not support USB printing because it uses UltiGCode flavor." msgstr "De printer biedt geen ondersteuning voor USB-printen omdat deze de codeversie UltiGCode gebruikt." -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:457 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:485 msgctxt "@info:title" msgid "USB Printing" msgstr "USB-printen" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:461 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:489 msgctxt "@info:status" msgid "Unable to start a new job because the printer does not support usb printing." msgstr "Er kan geen nieuwe taak worden gestart omdat de printer geen ondersteuning biedt voor USB-printen." -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:461 -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:108 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:489 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:103 #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:146 #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:158 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:945 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1349 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1417 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:946 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1418 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1496 msgctxt "@info:title" msgid "Warning" msgstr "Waarschuwing" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:108 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:103 msgctxt "@info" msgid "Unable to update firmware because there are no printers connected." msgstr "De firmware kan niet worden bijgewerkt omdat er geen printers zijn aangesloten." -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:122 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:117 #, python-format msgctxt "@info" msgid "Could not find firmware required for the printer at %s." msgstr "De voor de printer benodigde software is niet op %s te vinden." -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:122 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:117 msgctxt "@info:title" msgid "Printer Firmware" msgstr "Firmware van uw printer" +#: /home/ruben/Projects/Cura/plugins/PrepareStage/__init__.py:12 +msgctxt "@item:inmenu" +msgid "Prepare" +msgstr "Voorbereiden" + #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:23 msgctxt "@action:button Preceded by 'Ready to'." msgid "Save to Removable Drive" @@ -228,11 +232,11 @@ 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:132 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:692 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:700 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:146 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:693 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:701 #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:153 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1358 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:160 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1427 msgctxt "@info:title" msgid "Error" msgstr "Fout" @@ -282,7 +286,7 @@ msgid "Removable Drive" msgstr "Verwisselbaar Station" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:109 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:53 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:51 msgctxt "@action:button Preceded by 'Ready to'." msgid "Print over network" msgstr "Printen via netwerk" @@ -396,110 +400,110 @@ msgctxt "@info:title" msgid "Printer Status" msgstr "Printerstatus" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:691 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:692 #, python-brace-format msgctxt "@info:status" msgid "Unable to start a new print job. No Printcore loaded in slot {0}" msgstr "Er kan geen nieuwe taak worden gestart. Er is geen PrintCore geladen in de sleuf {0}." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:699 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:700 #, python-brace-format msgctxt "@info:status" msgid "Unable to start a new print job. No material loaded in slot {0}" msgstr "Er kan geen nieuwe taak worden gestart. Er is geen materiaal geladen in de sleuf {0}." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:709 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:710 #, python-brace-format msgctxt "@label" msgid "Not enough material for spool {0}." msgstr "Er is onvoldoende materiaal voor de spool {0}." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:719 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:720 #, python-brace-format msgctxt "@label" msgid "Different PrintCore (Cura: {0}, Printer: {1}) selected for extruder {2}" msgstr "Afwijkende PrintCore (Cura: {0}, Printer: {1}) geselecteerd voor de extruder {2}" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:733 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:734 #, 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/NetworkPrinterOutputDevice.py:741 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:742 #, python-brace-format msgctxt "@label" msgid "PrintCore {0} is not properly calibrated. XY calibration needs to be performed on the printer." msgstr "De PrintCore {0} is niet correct gekalibreerd. Op de printer moet XY-kalibratie worden uitgevoerd." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:746 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:747 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/NetworkPrinterOutputDevice.py:747 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:748 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/NetworkPrinterOutputDevice.py:753 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:754 msgctxt "@window:title" msgid "Mismatched configuration" msgstr "De configuratie komt niet overeen" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:864 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:262 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:865 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:258 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/NetworkPrinterOutputDevice.py:873 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:874 msgctxt "@info:status" msgid "Sending data to printer" msgstr "De gegevens worden naar de printer verzonden" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:873 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:874 msgctxt "@info:title" msgid "Sending Data" msgstr "Gegevens Verzenden" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:944 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:945 msgctxt "@info:status" msgid "Unable to send data to printer. Is another job still active?" msgstr "Kan geen gegevens naar de printer verzenden. Is er nog een andere taak actief?" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1085 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1087 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:196 msgctxt "@label:MonitorStatus" msgid "Aborting print..." msgstr "Printen afbreken..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1091 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1093 msgctxt "@label:MonitorStatus" msgid "Print aborted. Please check the printer" msgstr "Print afgebroken. Controleer de printer" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1097 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1099 msgctxt "@label:MonitorStatus" msgid "Pausing print..." msgstr "Print onderbreken..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1099 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1101 msgctxt "@label:MonitorStatus" msgid "Resuming print..." msgstr "Print hervatten..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1289 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1291 msgctxt "@window:title" msgid "Sync with your printer" msgstr "Synchroniseren met de printer" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1291 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1293 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/NetworkPrinterOutputDevice.py:1293 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1295 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." @@ -520,145 +524,188 @@ msgid "{printer_name} has finished printing '{job_name}'. Please collect the pri msgstr "{printer_name} heeft '{job_name}' voltooid. Haal de print op en bevestig dat het platform is leeggemaakt." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:115 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:520 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:533 #, python-brace-format msgid "{printer_name} is reserved to print '{job_name}'. Please change the printer's configuration to match the job, for it to start printing." msgstr "{printer_name} is gereserveerd voor het printen van '{job_name}'. Wijzig de instellingen van de printer zodanig dat ze aansluiten bij de taak, zodat u kunt beginnen met printen." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:278 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:277 msgctxt "@info:status" msgid "Unable to send new print job: this 3D printer is not (yet) set up to host a group of connected Ultimaker 3 printers." msgstr "Kan geen nieuwe printtaak verzenden: deze 3D-printer is (nog) niet ingesteld voor het hosten van een groep aangesloten Ultimaker 3-printers." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:410 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:423 #, python-brace-format msgctxt "@info:status" msgid "Unable to send print job to group {cluster_name}." msgstr "Kan de printtaak niet naar groep {cluster_name} verzenden." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:418 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:431 #, python-brace-format msgctxt "@info:status" msgid "Sent {file_name} to group {cluster_name}." msgstr "{file_name} is verzonden naar groep {cluster_name}." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:423 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:436 msgctxt "@action:button" msgid "Show print jobs" msgstr "Printtaken weergeven" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:424 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:437 msgctxt "@info:tooltip" msgid "Opens the print jobs interface in your browser." msgstr "Opent de printtaken-interface in uw browser." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:489 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:502 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:239 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:47 -msgctxt "@label" +msgctxt "@label Printer name" msgid "Unknown" msgstr "Onbekend" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:492 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:505 #, 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/NetworkClusterPrinterOutputDevice.py:494 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:497 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:507 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:510 msgctxt "@info:status" msgid "Print finished" msgstr "Print klaar" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:522 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:525 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:535 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:538 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:282 msgctxt "@label:status" msgid "Action required" msgstr "Handeling nodig" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:643 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:656 #, python-brace-format msgctxt "@info:progress" msgid "Sending {file_name} to group {cluster_name}" msgstr "Bezig met verzenden van {file_name} naar groep {cluster_name}" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.py:19 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.py:17 msgctxt "@action" msgid "Connect via Network" msgstr "Verbinding Maken via Netwerk" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:64 +#: /home/ruben/Projects/Cura/plugins/MonitorStage/__init__.py:12 +msgctxt "@item:inmenu" +msgid "Monitor" +msgstr "Controleren" + +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:66 #, python-brace-format msgctxt "@info Don't translate {machine_name}, since it gets replaced by a printer name!" msgid "New features are available for your {machine_name}! It is recommended to update the firmware on your printer." msgstr "Er zijn nieuwe functies beschikbaar voor uw {machine_name}! Het wordt aanbevolen de firmware van uw printer bij te werken." -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:65 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:67 #, python-format msgctxt "@info:title The %s gets replaced with the printer name." msgid "New %s firmware available" msgstr "Nieuwe firmware voor %s beschikbaar" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:66 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:68 msgctxt "@action:button" msgid "How to update" msgstr "Instructies voor bijwerken" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:77 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:79 msgctxt "@info" msgid "Could not access update information." msgstr "Geen toegang tot update-informatie." -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksReader.py:199 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksReader.py:579 msgctxt "@info:status" -msgid "Errors appeared while opening your SolidWorks file! Please check, whether it is possible to open your file in SolidWorks itself without any problems as well!" -msgstr "Er zijn fouten opgetreden tijdens het openen van het SolidWorks-bestand. Controleer of u het bestand zonder problemen in SolidWorks kunt openen." +msgid "SolidWorks reported errors, while opening your file. We recommend to solve these issues inside SolidWorks itself." +msgstr "SolidWorks heeft fouten gerapporteerd tijdens het openen van uw bestand. Het wordt aanbevolen deze problemen binnen SolidWorks zelf op te lossen." -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:31 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksReader.py:591 +msgctxt "@info:status" +msgid "" +"Found no models inside your drawing. Could you please check it's content again and make sure one part or assembly is inside?\n" +"\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." + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksReader.py:595 +msgctxt "@info:status" +msgid "" +"Found more then one part or assembly inside your drawing. We currently only support drawings with exactly one part or assembly inside.\n" +"\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\nSorry." + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:25 msgctxt "@item:inlistbox" msgid "SolidWorks part file" msgstr "Onderdelenbestand SolidWorks" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:35 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:29 msgctxt "@item:inlistbox" msgid "SolidWorks assembly file" msgstr "Montagebestand SolidWorks" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.py:21 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:33 +msgctxt "@item:inlistbox" +msgid "SolidWorks drawing file" +msgstr "Tekenbestand SolidWorks" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:48 +msgctxt "@info:status" +msgid "" +"Dear customer,\n" +"We could not find a valid installation of SolidWorks on your system. That means that either SolidWorks is not installed or you don't own an valid license. Please make sure that running SolidWorks itself works without issues and/or contact your ICT.\n" +"\n" +"With kind regards\n" +" - Thomas Karl Pietrowski" +msgstr "Beste klant,\nOp 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\nMet vriendelijke groeten\n - Thomas Karl Pietrowski" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:57 +msgctxt "@info:status" +msgid "" +"Dear customer,\n" +"You are currently running this plugin on an operating system other than Windows. This plugin will only work on Windows with SolidWorks installed, including an valid license. Please install this plugin on a Windows machine with SolidWorks installed.\n" +"\n" +"With kind regards\n" +" - Thomas Karl Pietrowski" +msgstr "Beste klant,\nMomenteel 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\nMet vriendelijke groeten\n - Thomas Karl Pietrowski" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksDialogHandler.py:70 msgid "Configure" msgstr "Configureren" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/CommonComReader.py:135 -#, python-format -msgctxt "@info:status" -msgid "Error while starting %s!" -msgstr "Er is een fout opgetreden tijdens het starten van %s!" +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksDialogHandler.py:71 +msgid "Installation guide for SolidWorks macro" +msgstr "Installatiegids voor SolidWorks-macro" #: /home/ruben/Projects/Cura/plugins/SimulationView/__init__.py:14 msgctxt "@item:inlistbox" -msgid "Simulation view" -msgstr "Simulatieweergave" +msgid "Layer view" +msgstr "Laagweergave" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:100 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:103 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:101 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:104 msgctxt "@info:title" msgid "Simulation View" msgstr "Simulatieweergave" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.py:26 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.py:25 msgid "Modify G-Code" msgstr "G-code wijzigen" #: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:43 msgctxt "@info" -msgid "Cura collects anonymised slicing statistics. You can disable this in the preferences." -msgstr "Cura verzamelt geanonimiseerde slicing-statistieken. Dit kan bij de voorkeuren worden uitgeschakeld." +msgid "Cura collects anonymized usage statistics." +msgstr "Cura verzamelt geanonimiseerde gebruiksstatistieken." #: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:46 msgctxt "@info:title" @@ -667,14 +714,41 @@ msgstr "Gegevens verzamelen" #: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:48 msgctxt "@action:button" -msgid "Dismiss" -msgstr "Verwijderen" +msgid "Allow" +msgstr "Toestaan" + +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:49 +msgctxt "@action:tooltip" +msgid "Allow Cura to send anonymized usage statistics to help prioritize future improvements to Cura. Some of your preferences and settings are sent, the Cura version and a hash of the models you're slicing." +msgstr "Cura toestaan geanonimiseerde gebruiksstatistieken te verzenden om toekomstige verbeteringen aan Cura te helpen prioriteren. Onder de verzonden gegevens bevindt zich informatie over uw voorkeuren en instellingen, de Cura-versie en een selectie van de modellen die u slicet." + +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:50 +msgctxt "@action:button" +msgid "Disable" +msgstr "Uitschakelen" + +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:51 +msgctxt "@action:tooltip" +msgid "Don't allow Cura to send anonymized usage statistics. You can enable it again in the preferences." +msgstr "Cura niet toestaan geanonimiseerde gebruiksgegevens te verzenden. U kunt deze optie op een later tijdstip weer inschakelen in de voorkeuren." #: /home/ruben/Projects/Cura/plugins/LegacyProfileReader/__init__.py:14 msgctxt "@item:inlistbox" msgid "Cura 15.04 profiles" msgstr "Cura 15.04-profielen" +#: /home/ruben/Projects/Cura/plugins/CuraBlenderPlugin/__init__.py:15 +msgctxt "@item:inlistbox" +msgid "Blender file" +msgstr "Blender-bestand" + +#: /home/ruben/Projects/Cura/plugins/CuraBlenderPlugin/CadIntegrationUtils/CommonReader.py:199 +msgctxt "@info:status" +msgid "" +"Could not export using \"{}\" quality!\n" +"Felt back to \"{}\"." +msgstr "Kan niet exporteren met de kwaliteit \"{}\"!\nInstelling teruggezet naar \"{}\"." + #: /home/ruben/Projects/Cura/plugins/GCodeProfileReader/__init__.py:14 #: /home/ruben/Projects/Cura/plugins/GCodeReader/__init__.py:14 msgctxt "@item:inlistbox" @@ -706,49 +780,49 @@ msgctxt "@item:inlistbox" msgid "GIF Image" msgstr "GIF-afbeelding" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:269 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:299 msgctxt "@info:status" msgid "Unable to slice with the current material as it is incompatible with the selected machine or configuration." msgstr "Met het huidige materiaal is slicen niet mogelijk, omdat het materiaal niet compatibel is met de geselecteerde machine of configuratie." -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:269 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:297 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:319 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:299 #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:327 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:336 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:349 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:357 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:366 msgctxt "@info:title" msgid "Unable to slice" msgstr "Kan niet slicen" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:296 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:326 #, python-brace-format msgctxt "@info:status" msgid "Unable to slice with the current settings. The following settings have errors: {0}" msgstr "Met de huidige instellingen is slicing niet mogelijk. De volgende instellingen bevatten fouten: {0}" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:318 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:348 #, python-brace-format msgctxt "@info:status" msgid "Unable to slice due to some per-model settings. The following settings have errors on one or more models: {error_labels}" msgstr "Slicing is niet mogelijk vanwege enkele instellingen per model. De volgende instellingen bevatten fouten voor een of meer modellen: {error_labels}" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:326 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:356 msgctxt "@info:status" msgid "Unable to slice because the prime tower or prime position(s) are invalid." msgstr "Slicen is niet mogelijk omdat de terugduwpijler of terugduwpositie(s) ongeldig zijn." -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:335 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:365 msgctxt "@info:status" msgid "Nothing to slice because none of the models fit the build volume. Please scale or rotate models to fit." msgstr "Er valt niets te slicen omdat geen van de modellen in het bouwvolume past. Schaal of roteer de modellen totdat deze passen." #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:50 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:239 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:242 msgctxt "@info:status" msgid "Processing Layers" msgstr "Lagen verwerken" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:239 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:242 msgctxt "@info:title" msgid "Information" msgstr "Informatie" @@ -785,14 +859,14 @@ msgstr "Kan de bestanden voor de Siemens NX-invoegtoepassingen niet installeren. msgid "Failed to install Siemens NX plugin. Could not set environment variable UGII_USER_DIR for Siemens NX." msgstr "Kan de Siemens NX-invoegtoepassing niet installeren. Het instellen van de omgevingsvariabele UGII_USER_DIR voor Siemens NX is mislukt." -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:167 -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:585 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:165 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:590 msgctxt "@title:tab" msgid "Recommended" msgstr "Aanbevolen" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:169 -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:590 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:167 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:595 msgctxt "@title:tab" msgid "Custom" msgstr "Aangepast" @@ -803,24 +877,24 @@ msgctxt "@item:inlistbox" msgid "3MF File" msgstr "3MF-bestand" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:126 -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1142 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:159 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1185 msgctxt "@label" msgid "Nozzle" msgstr "Nozzle" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:164 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:152 #, python-brace-format msgctxt "@info:status" msgid "Failed to get plugin ID from {0}" msgstr "Kan de invoegtoepassing-ID van {0} niet vinden" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:165 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:153 msgctxt "@info:tile" msgid "Warning" msgstr "Waarschuwing" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:203 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:191 msgctxt "@window:title" msgid "Plugin browser" msgstr "Invoegtoepassingbrowser" @@ -835,18 +909,18 @@ msgctxt "@item:inlistbox" msgid "G File" msgstr "G-bestand" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:314 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:321 msgctxt "@info:status" msgid "Parsing G-code" msgstr "G-code parseren" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:316 -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:426 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:323 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:464 msgctxt "@info:title" msgid "G-code Details" msgstr "Details van de G-code" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:424 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:462 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." @@ -857,6 +931,16 @@ 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:17 +msgctxt "@item:inlistbox" +msgid "Profile Assistant" +msgstr "Profielassistent" + #: /home/ruben/Projects/Cura/plugins/3MFWriter/__init__.py:30 msgctxt "@item:inlistbox" msgid "3MF file" @@ -888,142 +972,116 @@ msgctxt "@action" msgid "Level build plate" msgstr "Platform kalibreren" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:89 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:98 msgctxt "@tooltip" msgid "Outer Wall" msgstr "Buitenwand" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:90 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:99 msgctxt "@tooltip" msgid "Inner Walls" msgstr "Binnenwanden" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:91 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:100 msgctxt "@tooltip" msgid "Skin" msgstr "Skin" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:92 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:101 msgctxt "@tooltip" msgid "Infill" msgstr "Vulling" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:93 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:102 msgctxt "@tooltip" msgid "Support Infill" msgstr "Supportvulling" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:94 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:103 msgctxt "@tooltip" msgid "Support Interface" msgstr "Verbindingsstructuur" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:95 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:104 msgctxt "@tooltip" msgid "Support" msgstr "Supportstructuur" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:96 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:105 msgctxt "@tooltip" msgid "Skirt" msgstr "Skirt" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:97 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:106 msgctxt "@tooltip" msgid "Travel" msgstr "Beweging" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:98 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:107 msgctxt "@tooltip" msgid "Retractions" msgstr "Intrekkingen" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:99 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:108 msgctxt "@tooltip" msgid "Other" msgstr "Overig(e)" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:199 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:231 msgctxt "@label unknown material" msgid "Unknown" msgstr "Onbekend" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:284 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:318 #, python-brace-format msgctxt "@label" msgid "Pre-sliced file {0}" msgstr "Vooraf geslicet bestand {0}" -#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:469 +#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:440 msgctxt "@item:material" msgid "No material loaded" msgstr "Geen materiaal ingevoerd" -#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:476 +#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:447 msgctxt "@item:material" msgid "Unknown material" msgstr "Onbekend materiaal" -#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:30 -msgctxt "@info:status" -msgid "Finding new location for objects" -msgstr "Nieuwe locatie vinden voor objecten" - -#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:34 -msgctxt "@info:title" -msgid "Finding Location" -msgstr "Locatie vinden" - -#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:89 -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:83 -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/ArrangeObjectsJob.py:90 -msgctxt "@info:title" -msgid "Can't Find Location" -msgstr "Kan locatie niet vinden" - -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:431 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:113 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:437 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:120 msgctxt "@title:window" msgid "File Already Exists" msgstr "Het Bestand Bestaat Al" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:432 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:114 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:438 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:121 #, 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:815 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:872 msgctxt "@label" msgid "Custom" msgstr "Aangepast" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:819 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:876 msgctxt "@label" msgid "Custom Material" msgstr "Aangepast materiaal" -#: /home/ruben/Projects/Cura/cura/Settings/ExtrudersModel.py:182 -msgctxt "@menuitem" -msgid "Global" -msgstr "Algemeen" - -#: /home/ruben/Projects/Cura/cura/Settings/ExtrudersModel.py:229 +#: /home/ruben/Projects/Cura/cura/Settings/ExtrudersModel.py:205 msgctxt "@menuitem" msgid "Not overridden" msgstr "Niet overschreven" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:117 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:124 msgctxt "@info:status" msgid "The selected material is incompatible with the selected machine or configuration." msgstr "Het geselecteerde materiaal is niet compatibel met de geselecteerde machine of configuratie." -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:118 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:125 #: /home/ruben/Projects/Cura/cura/Settings/MaterialManager.py:24 msgctxt "@info:title" msgid "Incompatible Material" @@ -1044,67 +1102,89 @@ msgctxt "@action" msgid "Undo changing the material diameter." msgstr "Maak wijzigen van de materiaaldiameter ongedaan." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:144 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:151 #, 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:151 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:158 #, 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:156 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:163 #, 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:157 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:164 msgctxt "@info:title" msgid "Export succeeded" msgstr "De export is voltooid" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:183 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:205 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:214 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:248 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:190 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:211 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:271 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to import profile from {0}: {1}" msgstr "Kan het profiel niet importeren uit {0}: {1}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:216 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:252 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:230 +#, python-brace-format +msgctxt "@info:status Don't translate the XML tags or !" +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:240 +#, python-brace-format +msgctxt "@info:status Don't translate the XML tags or !" +msgid "The machine defined in profile {0} doesn't match with your current machine, could not import it." +msgstr "De machine die is vastgelegd in het profiel {0} komt niet overeen met uw huidige machine. Kan het profiel niet importeren." + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:274 #, 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:255 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:277 +#, 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:280 #, 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:274 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:298 msgctxt "@label" msgid "Custom profile" msgstr "Aangepast profiel" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:285 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:313 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:321 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:349 #, python-brace-format msgctxt "@info:status" msgid "Could not find a quality type {0} for the current configuration." msgstr "Kan geen kwaliteitstype {0} vinden voor de huidige configuratie." +#: /home/ruben/Projects/Cura/cura/ObjectsModel.py:46 +#, python-brace-format +msgctxt "@label" +msgid "Group #{group_nr}" +msgstr "Groepsnummer {group_nr}" + #: /home/ruben/Projects/Cura/cura/BuildVolume.py:100 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." @@ -1115,142 +1195,167 @@ msgctxt "@info:title" msgid "Build Volume" msgstr "Werkvolume" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:34 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:25 msgctxt "@info:status" msgid "Multiplying and placing objects" msgstr "Objecten verveelvoudigen en plaatsen" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:35 -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:83 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:26 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:78 msgctxt "@info:title" msgid "Placing Object" msgstr "Object plaatsen" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:80 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:78 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:88 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:152 +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/Arranging/ArrangeObjectsJob.py:29 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:64 +msgctxt "@info:status" +msgid "Finding new location for objects" +msgstr "Nieuwe locatie vinden voor objecten" + +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:33 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:68 +msgctxt "@info:title" +msgid "Finding Location" +msgstr "Locatie vinden" + +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:89 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:153 +msgctxt "@info:title" +msgid "Can't Find Location" +msgstr "Kan locatie niet vinden" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:81 msgctxt "@title:window" msgid "Crash Report" msgstr "Crashrapport" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:93 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:94 msgctxt "@label crash message" msgid "" -"

      A fatal exception has occurred. Please send us this Crash Report to fix the problem

      \n" +"

      A fatal error has occurred. 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 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 " +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 " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:101 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:102 msgctxt "@title:groupbox" msgid "System information" msgstr "Systeeminformatie" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:109 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:110 msgctxt "@label unknown version of Cura" msgid "Unknown" msgstr "Onbekend" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:111 -#, python-brace-format -msgctxt "@label Cura version" -msgid "Cura version: {version}
      " -msgstr "Cura-versie: {version}
      " - #: /home/ruben/Projects/Cura/cura/CrashHandler.py:112 -#, python-brace-format -msgctxt "@label Platform" -msgid "Platform: {platform}
      " -msgstr "Platform: {platform}
      " +msgctxt "@label Cura version number" +msgid "Cura version" +msgstr "Cura-versie" #: /home/ruben/Projects/Cura/cura/CrashHandler.py:113 -#, python-brace-format -msgctxt "@label Qt version" -msgid "Qt version: {qt}
      " -msgstr "Qt-versie: {qt}
      " +msgctxt "@label Type of platform" +msgid "Platform" +msgstr "Platform" #: /home/ruben/Projects/Cura/cura/CrashHandler.py:114 -#, python-brace-format -msgctxt "@label PyQt version" -msgid "PyQt version: {pyqt}
      " -msgstr "PyQt-versie: {pyqt}
      " +msgctxt "@label" +msgid "Qt version" +msgstr "Qt version" #: /home/ruben/Projects/Cura/cura/CrashHandler.py:115 -#, python-brace-format -msgctxt "@label OpenGL" -msgid "OpenGL: {opengl}
      " -msgstr "OpenGL: {opengl}
      " +msgctxt "@label" +msgid "PyQt version" +msgstr "PyQt version" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:130 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:116 +msgctxt "@label OpenGL version" +msgid "OpenGL" +msgstr "OpenGL" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:133 +msgctxt "@label" +msgid "not yet initialised
      " +msgstr "nog niet geïnitialiseerd
      " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:136 #, python-brace-format msgctxt "@label OpenGL version" msgid "
    • OpenGL Version: {version}
    • " msgstr "
    • OpenGL-versie: {version}
    • " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:131 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:137 #, python-brace-format msgctxt "@label OpenGL vendor" msgid "
    • OpenGL Vendor: {vendor}
    • " msgstr "
    • OpenGL-leverancier: {vendor}
    • " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:132 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:138 #, python-brace-format msgctxt "@label OpenGL renderer" msgid "
    • OpenGL Renderer: {renderer}
    • " msgstr "
    • OpenGL-renderer: {renderer}
    • " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:141 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:147 msgctxt "@title:groupbox" -msgid "Exception traceback" -msgstr "Traceback van uitzondering" +msgid "Error traceback" +msgstr "Traceback van fout" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:208 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:214 msgctxt "@title:groupbox" msgid "Logs" msgstr "Logboeken" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:231 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:237 msgctxt "@title:groupbox" msgid "User description" msgstr "Gebruikersbeschrijving" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:246 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:252 msgctxt "@action:button" msgid "Send report" msgstr "Rapport verzenden" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:256 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:274 msgctxt "@info:progress" msgid "Loading machines..." msgstr "Machines laden..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:661 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:660 msgctxt "@info:progress" msgid "Setting up scene..." msgstr "Scene instellen..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:703 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:702 msgctxt "@info:progress" msgid "Loading interface..." msgstr "Interface laden..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:874 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:899 #, 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:1348 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1417 #, 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:1357 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1426 #, 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:1416 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1495 msgctxt "@info:status" msgid "The selected model was too small to load." msgstr "Het geselecteerde model is te klein om te laden." @@ -1279,12 +1384,11 @@ msgstr "X (Breedte)" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:119 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:129 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:235 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:288 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:300 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:391 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:401 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:413 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:840 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:383 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:394 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:412 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:424 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:849 msgctxt "@label" msgid "mm" msgstr "mm" @@ -1374,68 +1478,67 @@ msgctxt "@tooltip" msgid "The height difference between the tip of the nozzle and the gantry system (X and Y axes). Used to prevent collisions between previous prints and the gantry when printing \"One at a Time\"." msgstr "Het hoogteverschil tussen de punt van de nozzle en het rijbrugsysteem (X- en Y-as). Wordt tijdens \"een voor een\"-printen gebruikt om botsingen tussen eerder geprinte voorwerpen en het rijbrugsysteem te voorkomen" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:255 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:254 msgctxt "@label" msgid "Number of Extruders" msgstr "Aantal extruders" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:289 -msgctxt "@tooltip" -msgid "The nominal diameter of filament supported by the printer. The exact diameter will be overridden by the material and/or the profile." -msgstr "De nominale diameter van het filament dat wordt ondersteund door de printer. De exacte diameter wordt overschreven door het materiaal en/of het profiel." - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:291 -msgctxt "@label" -msgid "Material diameter" -msgstr "Materiaaldiameter" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:299 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:390 -msgctxt "@label" -msgid "Nozzle size" -msgstr "Maat nozzle" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:317 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:310 msgctxt "@label" msgid "Start Gcode" msgstr "Start G-code" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:327 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:320 msgctxt "@tooltip" msgid "Gcode commands to be executed at the very start." msgstr "G-code-opdrachten die aan het begin worden uitgevoerd." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:336 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:329 msgctxt "@label" msgid "End Gcode" msgstr "Eind G-code" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:346 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:339 msgctxt "@tooltip" msgid "Gcode commands to be executed at the very end." msgstr "G-code-opdrachten die aan het eind worden uitgevoerd." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:378 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:370 msgctxt "@label" msgid "Nozzle Settings" msgstr "Nozzle-instellingen" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:400 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:382 +msgctxt "@label" +msgid "Nozzle size" +msgstr "Maat nozzle" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:393 +msgctxt "@label" +msgid "Compatible material diameter" +msgstr "Compatibele materiaaldiameter" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:395 +msgctxt "@tooltip" +msgid "The nominal diameter of filament supported by the printer. The exact diameter will be overridden by the material and/or the profile." +msgstr "De nominale diameter van het filament dat wordt ondersteund door de printer. De exacte diameter wordt overschreven door het materiaal en/of het profiel." + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:411 msgctxt "@label" msgid "Nozzle offset X" msgstr "Nozzle-offset X" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:412 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:423 msgctxt "@label" msgid "Nozzle offset Y" msgstr "Nozzle-offset Y" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:433 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:444 msgctxt "@label" msgid "Extruder Start Gcode" msgstr "Start-G-code van extruder" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:451 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:462 msgctxt "@label" msgid "Extruder End Gcode" msgstr "Eind-G-code van extruder" @@ -1448,8 +1551,9 @@ msgstr "Wijzigingenlogboek" #: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.qml:37 #: /home/ruben/Projects/Cura/plugins/USBPrinting/FirmwareUpdateWindow.qml:107 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:55 -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:445 -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:357 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:306 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:456 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:492 #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:80 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:123 #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:147 @@ -1530,7 +1634,7 @@ msgstr "Bewerken" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:96 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:50 #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:95 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:190 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:171 msgctxt "@action:button" msgid "Remove" msgstr "Verwijderen" @@ -1552,12 +1656,12 @@ msgid "Type" msgstr "Type" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:233 -msgctxt "@label" +msgctxt "@label Printer name" msgid "Ultimaker 3" msgstr "Ultimaker 3" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:236 -msgctxt "@label" +msgctxt "@label Printer name" msgid "Ultimaker 3 Extended" msgstr "Ultimaker 3 Extended" @@ -1603,8 +1707,6 @@ msgid "Enter the IP address or hostname of your printer on the network." msgstr "Voer het IP-adres of de hostnaam van de printer in het netwerk in." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:379 -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:92 -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:88 #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:181 msgctxt "@action:button" msgid "OK" @@ -1625,6 +1727,11 @@ msgctxt "@label: arg 1 is group name" msgid "%1 is not set up to host a group of connected Ultimaker 3 printers" msgstr "%1 is niet ingesteld voor het hosten van een groep aangesloten Ultimaker 3-printers" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterMonitorItem.qml:55 +msgctxt "@label link to connect manager" +msgid "Add/Remove printers" +msgstr "Printers toevoegen/verwijderen" + #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/OpenPanelButton.qml:14 msgctxt "@info:tooltip" msgid "Opens the print jobs page with your default web browser." @@ -1655,11 +1762,16 @@ msgid "Available" msgstr "Beschikbaar" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:43 -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:101 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:100 msgctxt "@label:MonitorStatus" msgid "Lost connection with the printer" msgstr "Verbinding met de printer is verbroken" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:47 +msgctxt "@label Printer status" +msgid "Unknown" +msgstr "Onbekend" + #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:257 msgctxt "@label:status" msgid "Disabled" @@ -1751,138 +1863,250 @@ msgctxt "@action:button" msgid "Activate Configuration" msgstr "Configuratie Activeren" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:20 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:21 msgctxt "@title:window" -msgid "Cura SolidWorks Plugin Configuration" -msgstr "Configuratie Cura SolidWorks-invoegtoepassing" +msgid "SolidWorks: Export wizard" +msgstr "SolidWorks: exportwizard" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:44 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:45 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:140 msgctxt "@action:label" -msgid "Default quality of the exported STL:" -msgstr "Standaard kwaliteit van de geëxporteerde STL:" +msgid "Quality:" +msgstr "Kwaliteit:" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:79 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:78 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:179 msgctxt "@option:curaSolidworksStlQuality" -msgid "Always ask" -msgstr "Altijd vragen" +msgid "Fine (3D-printing)" +msgstr "Fijn (3D-printen)" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:80 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:79 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:180 msgctxt "@option:curaSolidworksStlQuality" -msgid "Always use Fine quality" -msgstr "Altijd Fijne kwaliteit gebruiken" +msgid "Coarse (3D-printing)" +msgstr "Grof (3D-printen)" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:81 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:80 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:181 msgctxt "@option:curaSolidworksStlQuality" -msgid "Always use Coarse quality" -msgstr "Altijd Grove kwaliteit gebruiken" +msgid "Fine (SolidWorks)" +msgstr "Fijn (SolidWorks)" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:20 -msgctxt "@title:window" -msgid "Import SolidWorks File as STL..." -msgstr "SolidWorks-bestand importeren als STL..." - -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:43 -msgctxt "@info:tooltip" -msgid "Quality of the Exported STL" -msgstr "Kwaliteit van de geëxporteerde STL" - -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:48 -msgctxt "@action:label" -msgid "Quality" -msgstr "Kwaliteit" - -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:62 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:81 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:182 msgctxt "@option:curaSolidworksStlQuality" -msgid "Coarse" -msgstr "Grof" +msgid "Coarse (SolidWorks)" +msgstr "Grof (SolidWorks)" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:63 -msgctxt "@option:curaSolidworksStlQuality" -msgid "Fine" -msgstr "Fijn" - -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:78 -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:82 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:94 msgctxt "@text:window" -msgid "Remember my choice" -msgstr "Mijn keuze onthouden" +msgid "Show this dialog again" +msgstr "Dit dialoogvenster opnieuw tonen" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:81 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:104 +msgctxt "@action:button" +msgid "Continue" +msgstr "Verder" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:116 +msgctxt "@action:button" +msgid "Abort" +msgstr "Afbreken" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:21 +msgctxt "@title:window" +msgid "How to install Cura SolidWorks macro" +msgstr "De Cura SolidWorks-macro installeren" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:62 +msgctxt "@description:label" +msgid "Steps:" +msgstr "Stappen:" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:140 +msgctxt "@action:button" +msgid "" +"Open the directory\n" +"with macro and icon" +msgstr "Open de map\nmet macro en pictogram" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:160 +msgctxt "@description:label" +msgid "Instructions:" +msgstr "Instructies:" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:202 +msgctxt "@action:playpause" +msgid "Play" +msgstr "Afspelen" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:206 +msgctxt "@action:playpause" +msgid "Pause" +msgstr "Pauzeren" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:268 +msgctxt "@action:button" +msgid "Previous Step" +msgstr "Vorige stap" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:283 +msgctxt "@action:button" +msgid "Done" +msgstr "Gereed" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:287 +msgctxt "@action:button" +msgid "Next Step" +msgstr "Volgende stap" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:21 +msgctxt "@title:window" +msgid "SolidWorks plugin: Configuration" +msgstr "SolidWorks-invoegtoepassing: configuratie" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:39 +msgctxt "@title:tab" +msgid "Conversion settings" +msgstr "Conversie-instellingen" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:66 +msgctxt "@label" +msgid "First choice:" +msgstr "Eerste keuze:" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:86 +msgctxt "@text:menu" +msgid "Latest installed version (Recommended)" +msgstr "Recentst geïnstalleerde versie (aanbevolen)" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:95 +msgctxt "@text:menu" +msgid "Default version" +msgstr "Standaardversie" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:193 +msgctxt "@label" +msgid "Show wizard before opening SolidWorks files" +msgstr "Wizard tonen voordat SolidWorks-bestanden worden geopend" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:203 +msgctxt "@label" +msgid "Automatically rotate opened file into normed orientation" +msgstr "Geopend bestand automatisch roteren naar de genormaliseerde stand" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:210 +msgctxt "@title:tab" +msgid "Installation(s)" +msgstr "Installatie(s)" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:284 +msgctxt "@label" +msgid "COM service found" +msgstr "COM-service gevonden" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:295 +msgctxt "@label" +msgid "Executable found" +msgstr "Uitvoerbaar bestand gevonden" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:306 +msgctxt "@label" +msgid "COM starting" +msgstr "COM starten" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:317 +msgctxt "@label" +msgid "Revision number" +msgstr "Revisienummer" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:328 +msgctxt "@label" +msgid "Functions available" +msgstr "Beschikbare functies" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:341 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:264 +msgctxt "@action:button" +msgid "Save" +msgstr "Opslaan" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:117 msgctxt "@label" msgid "Color scheme" msgstr "Kleurenschema" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:96 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:132 msgctxt "@label:listbox" msgid "Material Color" msgstr "Materiaalkleur" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:100 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:136 msgctxt "@label:listbox" msgid "Line Type" msgstr "Lijntype" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:104 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:140 msgctxt "@label:listbox" msgid "Feedrate" msgstr "Doorvoersnelheid" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:108 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:144 msgctxt "@label:listbox" msgid "Layer thickness" msgstr "Laagdikte" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:148 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:185 msgctxt "@label" msgid "Compatibility Mode" msgstr "Compatibiliteitsmodus" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:230 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:264 msgctxt "@label" msgid "Show Travels" msgstr "Bewegingen weergeven" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:236 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:270 msgctxt "@label" msgid "Show Helpers" msgstr "Helpers weergeven" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:242 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:276 msgctxt "@label" msgid "Show Shell" msgstr "Shell weergeven" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:248 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:282 msgctxt "@label" msgid "Show Infill" msgstr "Vulling weergeven" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:297 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:330 msgctxt "@label" msgid "Only Show Top Layers" msgstr "Alleen bovenlagen weergegeven" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:306 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:339 msgctxt "@label" msgid "Show 5 Detailed Layers On Top" msgstr "5 gedetailleerde lagen bovenaan weergeven" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:317 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:350 msgctxt "@label" msgid "Top / Bottom" msgstr "Boven-/onderkant" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:321 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:354 msgctxt "@label" msgid "Inner Wall" msgstr "Binnenwand" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:378 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:410 msgctxt "@label" msgid "min" msgstr "min." -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:420 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:452 msgctxt "@label" msgid "max" msgstr "max." @@ -1907,7 +2131,7 @@ msgctxt "@label" msgid "Settings" msgstr "Instellingen" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:455 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:466 msgctxt "@info:tooltip" msgid "Change active post-processing scripts" msgstr "Actieve scripts voor nabewerking wijzigen" @@ -1982,23 +2206,53 @@ msgctxt "@action:label" msgid "Smoothing" msgstr "Effenen" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:208 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:38 +msgctxt "@label" +msgid "Mesh Type" +msgstr "Rastertype" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:69 +msgctxt "@label" +msgid "Normal model" +msgstr "Normaal model" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:76 +msgctxt "@label" +msgid "Print as support" +msgstr "Printen als supportstructuur" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:84 +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:92 +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:100 +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:333 msgctxt "@action:button" msgid "Select settings" msgstr "Instellingen selecteren" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:248 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:375 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:272 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:402 #: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:91 msgctxt "@label:textbox" msgid "Filter..." msgstr "Filteren..." -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:296 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:426 msgctxt "@label:checkbox" msgid "Show all" msgstr "Alles weergeven" @@ -2357,66 +2611,66 @@ msgctxt "@label" msgid "Everything is in order! You're done with your CheckUp." msgstr "Alles is in orde! De controle is voltooid." -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:88 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:87 msgctxt "@label:MonitorStatus" msgid "Not connected to a printer" msgstr "Niet met een printer verbonden" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:90 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:89 msgctxt "@label:MonitorStatus" msgid "Printer does not accept commands" msgstr "Printer accepteert geen opdrachten" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:96 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:95 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:194 msgctxt "@label:MonitorStatus" msgid "In maintenance. Please check the printer" msgstr "In onderhoud. Controleer de printer" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:103 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:102 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:184 msgctxt "@label:MonitorStatus" msgid "Printing..." msgstr "Printen..." -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:106 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:105 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:186 msgctxt "@label:MonitorStatus" msgid "Paused" msgstr "Gepauzeerd" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:109 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:108 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:188 msgctxt "@label:MonitorStatus" msgid "Preparing..." msgstr "Voorbereiden..." -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:111 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:110 msgctxt "@label:MonitorStatus" msgid "Please remove the print" msgstr "Verwijder de print" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:237 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:241 msgctxt "@label:" msgid "Resume" msgstr "Hervatten" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:241 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:245 msgctxt "@label:" msgid "Pause" msgstr "Pauzeren" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:270 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:274 msgctxt "@label:" msgid "Abort Print" msgstr "Printen Afbreken" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:280 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:284 msgctxt "@window:title" msgid "Abort print" msgstr "Printen afbreken" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:282 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:286 msgctxt "@label" msgid "Are you sure you want to abort the print?" msgstr "Weet u zeker dat u het printen wilt afbreken?" @@ -2449,19 +2703,19 @@ msgid "Customized" msgstr "Aangepast" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:157 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:593 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:595 msgctxt "@option:discardOrKeep" msgid "Always ask me this" msgstr "Altijd vragen" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:158 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:594 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:596 msgctxt "@option:discardOrKeep" msgid "Discard and never ask again" msgstr "Verwijderen en nooit meer vragen" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:159 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:595 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:597 msgctxt "@option:discardOrKeep" msgid "Keep and never ask again" msgstr "Behouden en nooit meer vragen" @@ -2496,72 +2750,72 @@ msgctxt "@label" msgid "Brand" msgstr "Merk" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:92 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:88 msgctxt "@label" msgid "Material Type" msgstr "Type Materiaal" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:105 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:97 msgctxt "@label" msgid "Color" msgstr "Kleur" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:139 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:141 msgctxt "@label" msgid "Properties" msgstr "Eigenschappen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:141 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:143 msgctxt "@label" msgid "Density" msgstr "Dichtheid" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:156 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:158 msgctxt "@label" msgid "Diameter" msgstr "Diameter" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:185 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:187 msgctxt "@label" msgid "Filament Cost" msgstr "Kostprijs Filament" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:201 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:203 msgctxt "@label" msgid "Filament weight" msgstr "Gewicht filament" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:218 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:220 msgctxt "@label" msgid "Filament length" msgstr "Lengte filament" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:227 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:229 msgctxt "@label" msgid "Cost per Meter" msgstr "Kostprijs per meter" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:241 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:243 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/MaterialView.qml:248 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:250 msgctxt "@label" msgid "Unlink Material" msgstr "Materiaal ontkoppelen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:259 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:261 msgctxt "@label" msgid "Description" msgstr "Beschrijving" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:272 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:274 msgctxt "@label" msgid "Adhesion Information" msgstr "Gegevens Hechting" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:298 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:300 msgctxt "@label" msgid "Print settings" msgstr "Instellingen voor printen" @@ -2602,7 +2856,7 @@ msgid "Unit" msgstr "Eenheid" #: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:14 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:439 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:509 msgctxt "@title:tab" msgid "General" msgstr "Algemeen" @@ -2617,230 +2871,255 @@ msgctxt "@label" msgid "Language:" msgstr "Taal:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:205 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:207 msgctxt "@label" msgid "Currency:" msgstr "Valuta:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:219 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:221 msgctxt "@label" msgid "Theme:" msgstr "Thema:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:279 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:281 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:296 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:298 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:304 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:306 msgctxt "@option:check" msgid "Slice automatically" msgstr "Automatisch slicen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:318 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:320 msgctxt "@label" msgid "Viewport behavior" msgstr "Gedrag kijkvenster" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:326 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:328 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:335 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:337 msgctxt "@option:check" msgid "Display overhang" msgstr "Overhang weergeven" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:342 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:344 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:347 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:349 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:356 +#: /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:361 +#: /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:370 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:372 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:375 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:377 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:384 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:386 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:389 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:391 msgctxt "@option:check" msgid "Ensure models are kept apart" msgstr "Modellen gescheiden houden" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:397 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:399 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:402 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:404 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:414 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:416 msgctxt "@info:tooltip" msgid "Show caution message in gcode reader." msgstr "Toon het waarschuwingsbericht in de G-code-lezer." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:423 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:425 msgctxt "@option:check" msgid "Caution message in gcode reader" msgstr "Waarschuwingsbericht in de G-code-lezer" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:430 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:432 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:435 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:437 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:451 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:453 msgctxt "@label" msgid "Opening and saving files" msgstr "Bestanden openen en opslaan" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:457 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:459 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:462 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:464 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:473 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:478 msgctxt "@option:check" msgid "Scale extremely small models" msgstr "Extreem kleine modellen schalen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:485 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:487 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:490 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:492 msgctxt "@option:check" msgid "Add machine prefix to job name" msgstr "Machinevoorvoegsel toevoegen aan taaknaam" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:499 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:501 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:503 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:505 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:512 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:514 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:520 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:522 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:533 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:535 msgctxt "@option:openProject" msgid "Always ask" msgstr "Altijd vragen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:534 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:536 msgctxt "@option:openProject" msgid "Always open as a project" msgstr "Altijd als project openen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:535 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:537 msgctxt "@option:openProject" msgid "Always import models" msgstr "Altijd modellen importeren" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:571 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:573 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:580 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:582 msgctxt "@label" msgid "Override Profile" msgstr "Profiel overschrijven" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:629 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:631 msgctxt "@label" msgid "Privacy" msgstr "Privacy" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:636 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:638 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:641 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:643 msgctxt "@option:check" msgid "Check for updates on start" msgstr "Bij starten op updates controleren" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:651 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:653 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:656 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:658 msgctxt "@option:check" msgid "Send (anonymous) print information" msgstr "(Anonieme) printgegevens verzenden" +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:674 +msgctxt "@label" +msgid "Experimental" +msgstr "Experimenteel" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:680 +msgctxt "@info:tooltip" +msgid "Use multi build plate functionality" +msgstr "Functionaliteit voor meerdere platformen gebruiken" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:685 +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/GeneralPage.qml:694 +msgctxt "@info:tooltip" +msgid "Should newly loaded models be arranged on the build plate? Used in conjunction with multi build plate (EXPERIMENTAL)" +msgstr "Moeten nieuw geladen modellen op het platform worden geschikt? Gebruikt in combinatie met meerdere platformen (EXPERIMENTEEL)" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:699 +msgctxt "@option:check" +msgid "Do not arrange objects on load" +msgstr "Objecten niet schikken na laden" + #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:444 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:514 msgctxt "@title:tab" msgid "Printers" msgstr "Printers" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:37 #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:51 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:137 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:138 msgctxt "@action:button" msgid "Activate" msgstr "Activeren" @@ -2883,7 +3162,7 @@ msgid "Waiting for a printjob" msgstr "Wachten op een printtaak" #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:448 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:518 msgctxt "@title:tab" msgid "Profiles" msgstr "Profielen" @@ -2909,13 +3188,13 @@ msgid "Duplicate" msgstr "Dupliceren" #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:113 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:201 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:182 msgctxt "@action:button" msgid "Import" msgstr "Importeren" #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:119 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:212 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:193 msgctxt "@action:button" msgid "Export" msgstr "Exporteren" @@ -2981,7 +3260,7 @@ msgid "Export Profile" msgstr "Profiel exporteren" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:446 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:516 msgctxt "@title:tab" msgid "Materials" msgstr "Materialen" @@ -2996,60 +3275,60 @@ msgctxt "@action:label %1 is printer name" msgid "Printer: %1" msgstr "Printer: %1" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:149 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:150 msgctxt "@action:button" msgid "Create" msgstr "Maken" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:168 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:160 msgctxt "@action:button" msgid "Duplicate" msgstr "Dupliceren" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:311 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:319 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:298 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:306 msgctxt "@title:window" msgid "Import Material" msgstr "Materiaal Importeren" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:320 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:307 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/MaterialsPage.qml:324 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:311 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/MaterialsPage.qml:343 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:358 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:329 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:344 msgctxt "@title:window" msgid "Export Material" msgstr "Materiaal Exporteren" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:362 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:348 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/MaterialsPage.qml:368 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:354 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully exported material to %1" msgstr "Materiaal is geëxporteerd naar %1" #: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:18 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:793 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:869 msgctxt "@title:window" msgid "Add Printer" msgstr "Printer Toevoegen" -#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:185 +#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:194 msgctxt "@label" msgid "Printer Name:" msgstr "Printernaam:" -#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:208 +#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:217 msgctxt "@action:button" msgid "Add Printer" msgstr "Printer Toevoegen" @@ -3176,12 +3455,7 @@ msgctxt "@label" msgid "Profile:" msgstr "Profiel:" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:66 -msgctxt "@" -msgid "No Profile Available" -msgstr "Er is geen profiel beschikbaar" - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:104 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:102 msgctxt "@tooltip" msgid "" "Some setting/override values are different from the values stored in the profile.\n" @@ -3189,37 +3463,37 @@ msgid "" "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." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:152 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:150 msgctxt "@label:textbox" msgid "Search..." msgstr "Zoeken..." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:483 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:482 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:498 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:497 msgctxt "@action:menu" msgid "Hide this setting" msgstr "Deze instelling verbergen" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:508 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:507 msgctxt "@action:menu" msgid "Don't show this setting" msgstr "Deze instelling verbergen" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:512 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:511 msgctxt "@action:menu" msgid "Keep this setting visible" msgstr "Deze instelling zichtbaar houden" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:531 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:530 msgctxt "@action:menu" msgid "Configure setting visiblity..." msgstr "Zichtbaarheid van instelling configureren..." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingCategory.qml:123 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingCategory.qml:250 msgctxt "@label" msgid "" "Some hidden settings use values different from their normal calculated value.\n" @@ -3227,27 +3501,27 @@ msgid "" "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." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:62 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:61 msgctxt "@label Header for list of settings." msgid "Affects" msgstr "Beïnvloedt" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:67 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:66 msgctxt "@label Header for list of settings." msgid "Affected By" msgstr "Beïnvloed door" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:157 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:156 msgctxt "@label" -msgid "This setting is always shared between all extruders. Changing it here will change the value for all extruders" +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:160 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:159 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:186 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:190 msgctxt "@label" msgid "" "This setting has a value that is different from the profile.\n" @@ -3255,7 +3529,7 @@ msgid "" "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." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:284 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:288 msgctxt "@label" msgid "" "This setting is normally calculated, but it currently has an absolute value set.\n" @@ -3263,71 +3537,71 @@ msgid "" "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." -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:120 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:128 msgctxt "@label:listbox" msgid "Print Setup" msgstr "Instelling voor Printen" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:120 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:128 msgctxt "@label:listbox" msgid "" "Print Setup disabled\n" "G-code files cannot be modified" msgstr "Instelling voor printen uitgeschakeld\nG-code-bestanden kunnen niet worden aangepast" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:336 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:342 msgctxt "@label Hours and minutes" msgid "00h 00min" msgstr "00u 00min" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:354 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:359 msgctxt "@tooltip" -msgid "Time specification
      " -msgstr "Tijdspecificatie
      " +msgid "Time specification" +msgstr "Tijdspecificatie" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:429 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:441 msgctxt "@label" msgid "Cost specification" msgstr "Kostenspecificatie" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:434 -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:445 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:446 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:455 msgctxt "@label m for meter" msgid "%1m" msgstr "%1 m" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:435 -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:446 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:447 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:456 msgctxt "@label g for grams" msgid "%1g" msgstr "%1 g" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:444 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:454 msgctxt "@label" msgid "Total:" msgstr "Totaal:" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:498 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:504 msgctxt "@label Print estimates: m for meters, g for grams, %4 is currency and %3 is print cost" msgid "%1m / ~ %2g / ~ %4 %3" msgstr "%1 m / ~ %2 g / ~ %4 %3" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:503 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:509 msgctxt "@label Print estimates: m for meters, g for grams" msgid "%1m / ~ %2g" msgstr "%1 m / ~ %2 g" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:586 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:591 msgctxt "@tooltip" msgid "Recommended Print Setup

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

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

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

      Print met uiterst precieze controle over elk detail van het slice-proces." -#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:49 +#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:50 msgctxt "@title:menuitem %1 is the automatically selected material" msgid "Automatic: %1" msgstr "Automatisch: %1" @@ -3337,6 +3611,16 @@ msgctxt "@title:menu menubar:toplevel" msgid "&View" msgstr "Beel&d" +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:37 +msgctxt "@action:inmenu menubar:view" +msgid "&Camera position" +msgstr "&Camerapositie" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:52 +msgctxt "@action:inmenu menubar:view" +msgid "&Build plate" +msgstr "&Platform" + #: /home/ruben/Projects/Cura/resources/qml/Menus/NozzleMenu.qml:40 msgctxt "@title:menuitem %1 is the nozzle currently loaded in the printer" msgid "Automatic: %1" @@ -3349,14 +3633,14 @@ msgid_plural "Print Selected Models With:" msgstr[0] "Geselecteerd model printen met:" msgstr[1] "Geselecteerde modellen printen met:" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ContextMenu.qml:83 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ContextMenu.qml:114 msgctxt "@title:window" 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/Menus/ContextMenu.qml:108 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ContextMenu.qml:139 msgctxt "@label" msgid "Number of Copies" msgstr "Aantal exemplaren" @@ -3372,7 +3656,7 @@ msgid "No printer connected" msgstr "Er is geen printer aangesloten" #: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:90 -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:138 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:139 msgctxt "@label" msgid "Extruder" msgstr "Extruder" @@ -3482,254 +3766,294 @@ msgctxt "@label" msgid "Estimated time left" msgstr "Geschatte resterende tijd" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:72 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:79 msgctxt "@action:inmenu" msgid "Toggle Fu&ll Screen" msgstr "Vo&lledig Scherm In-/Uitschakelen" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:79 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:86 msgctxt "@action:inmenu menubar:edit" msgid "&Undo" msgstr "Ongedaan &Maken" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:89 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:96 msgctxt "@action:inmenu menubar:edit" msgid "&Redo" msgstr "&Opnieuw" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:99 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:106 msgctxt "@action:inmenu menubar:file" msgid "&Quit" msgstr "&Afsluiten" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:107 -msgctxt "@action:inmenu menubar:view" -msgid "&Reset camera position" -msgstr "Camerapositie he&rstellen" - #: /home/ruben/Projects/Cura/resources/qml/Actions.qml:114 +msgctxt "@action:inmenu menubar:view" +msgid "&3D View" +msgstr "&3D-weergave" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:121 +msgctxt "@action:inmenu menubar:view" +msgid "&Front View" +msgstr "Weergave &voorzijde" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:128 +msgctxt "@action:inmenu menubar:view" +msgid "&Top View" +msgstr "Weergave &bovenzijde" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:135 +msgctxt "@action:inmenu menubar:view" +msgid "&Left Side View" +msgstr "Weergave &linkerzijde" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:142 +msgctxt "@action:inmenu menubar:view" +msgid "&Right Side View" +msgstr "Weergave &rechterzijde" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:149 msgctxt "@action:inmenu" msgid "Configure Cura..." msgstr "Cura Configureren..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:121 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:156 msgctxt "@action:inmenu menubar:printer" msgid "&Add Printer..." msgstr "&Printer Toevoegen..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:127 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:162 msgctxt "@action:inmenu menubar:printer" msgid "Manage Pr&inters..." msgstr "Pr&inters Beheren..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:134 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:169 msgctxt "@action:inmenu" msgid "Manage Materials..." msgstr "Materialen Beheren..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:142 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:177 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:150 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:185 msgctxt "@action:inmenu menubar:profile" msgid "&Discard current changes" msgstr "Hui&dige wijzigingen verwijderen" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:162 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:197 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:168 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:203 msgctxt "@action:inmenu menubar:profile" msgid "Manage Profiles..." msgstr "Profielen Beheren..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:175 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:210 msgctxt "@action:inmenu menubar:help" msgid "Show Online &Documentation" msgstr "Online &Documentatie Weergeven" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:183 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:218 msgctxt "@action:inmenu menubar:help" msgid "Report a &Bug" msgstr "Een &Bug Rapporteren" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:191 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:226 msgctxt "@action:inmenu menubar:help" msgid "&About..." msgstr "&Over..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:198 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:233 msgctxt "@action:inmenu menubar:edit" msgid "Delete &Selected Model" msgid_plural "Delete &Selected Models" msgstr[0] "Ge&selecteerd model verwijderen" msgstr[1] "Ge&selecteerde modellen verwijderen" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:208 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:243 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:217 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:252 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:226 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:261 msgctxt "@action:inmenu" msgid "Delete Model" msgstr "Model Verwijderen" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:234 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:269 msgctxt "@action:inmenu" msgid "Ce&nter Model on Platform" msgstr "Model op Platform Ce&ntreren" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:240 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:275 msgctxt "@action:inmenu menubar:edit" msgid "&Group Models" msgstr "Modellen &Groeperen" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:250 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:295 msgctxt "@action:inmenu menubar:edit" msgid "Ungroup Models" msgstr "Groeperen van Modellen Opheffen" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:260 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:305 msgctxt "@action:inmenu menubar:edit" msgid "&Merge Models" msgstr "Modellen Samen&voegen" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:270 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:315 msgctxt "@action:inmenu" msgid "&Multiply Model..." msgstr "&Model verveelvoudigen..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:277 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:322 msgctxt "@action:inmenu menubar:edit" msgid "&Select All Models" msgstr "Alle Modellen &Selecteren" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:287 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:332 msgctxt "@action:inmenu menubar:edit" msgid "&Clear Build Plate" msgstr "&Platform Leegmaken" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:297 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:342 msgctxt "@action:inmenu menubar:file" msgid "Re&load All Models" msgstr "Alle Modellen Opnieuw &Laden" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:306 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:351 +msgctxt "@action:inmenu menubar:edit" +msgid "Arrange All Models To All Build Plates" +msgstr "Alle modellen schikken op alle platformen" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:358 msgctxt "@action:inmenu menubar:edit" msgid "Arrange All Models" msgstr "Alle modellen schikken" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:314 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:366 msgctxt "@action:inmenu menubar:edit" msgid "Arrange Selection" msgstr "Selectie schikken" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:321 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:373 msgctxt "@action:inmenu menubar:edit" msgid "Reset All Model Positions" msgstr "Alle Modelposities Herstellen" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:328 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:380 msgctxt "@action:inmenu menubar:edit" msgid "Reset All Model &Transformations" msgstr "Alle Model&transformaties Herstellen" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:335 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:387 msgctxt "@action:inmenu menubar:file" msgid "&Open File(s)..." msgstr "Bestand(en) &openen..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:343 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:395 msgctxt "@action:inmenu menubar:file" msgid "&New Project..." msgstr "&Nieuw project..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:350 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:402 msgctxt "@action:inmenu menubar:help" msgid "Show Engine &Log..." msgstr "Engine-&logboek Weergeven..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:358 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:410 msgctxt "@action:inmenu menubar:help" msgid "Show Configuration Folder" msgstr "Open Configuratiemap" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:365 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:417 msgctxt "@action:menu" msgid "Configure setting visibility..." msgstr "Zichtbaarheid Instelling Configureren..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:372 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:424 msgctxt "@action:menu" msgid "Browse plugins..." msgstr "Door invoegtoepassingen bladeren..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:379 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:431 msgctxt "@action:menu" msgid "Installed plugins..." msgstr "Geïnstalleerde plugins..." -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:28 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:438 +msgctxt "@action:inmenu menubar:view" +msgid "Expand/Collapse Sidebar" +msgstr "Zijbalk uitbreiden/samenvouwen" + +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:26 msgctxt "@label:PrintjobStatus" msgid "Please load a 3D model" msgstr "Laad een 3D-model" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:34 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:36 msgctxt "@label:PrintjobStatus" msgid "Ready to slice" msgstr "Gereed om te slicen" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:36 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:38 msgctxt "@label:PrintjobStatus" msgid "Slicing..." msgstr "Slicen..." -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:38 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:40 msgctxt "@label:PrintjobStatus %1 is target operation" msgid "Ready to %1" msgstr "Gereed voor %1" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:40 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:42 msgctxt "@label:PrintjobStatus" msgid "Unable to Slice" msgstr "Kan Niet Slicen" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:42 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:44 msgctxt "@label:PrintjobStatus" msgid "Slicing unavailable" msgstr "Slicen is niet beschikbaar" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:162 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:171 +msgctxt "@info:tooltip" +msgid "Slice current printjob" +msgstr "Huidige printtaak slicen" + +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:171 +msgctxt "@info:tooltip" +msgid "Cancel slicing process" +msgstr "Slicen annuleren" + +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:183 msgctxt "@label:Printjob" msgid "Prepare" msgstr "Voorbereiden" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:162 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:183 msgctxt "@label:Printjob" msgid "Cancel" msgstr "Annuleren" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:302 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:317 msgctxt "@info:tooltip" msgid "Select the active output device" msgstr "Actief Uitvoerapparaat Selecteren" #: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:19 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:620 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:696 msgctxt "@title:window" msgid "Open file(s)" msgstr "Bestand(en) openen" @@ -3749,114 +4073,114 @@ msgctxt "@title:window" msgid "Ultimaker Cura" msgstr "Ultimaker Cura" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:81 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:102 msgctxt "@title:menu menubar:toplevel" msgid "&File" msgstr "&Bestand" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:98 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:119 msgctxt "@action:inmenu menubar:file" msgid "&Save Selection to File" msgstr "&Selectie Opslaan naar Bestand" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:107 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:128 msgctxt "@title:menu menubar:file" msgid "Save &As..." msgstr "Opslaan &als..." -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:118 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:139 msgctxt "@title:menu menubar:file" -msgid "Save project" -msgstr "Project opslaan" +msgid "Save &Project..." +msgstr "&Project opslaan..." -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:141 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:162 msgctxt "@title:menu menubar:toplevel" msgid "&Edit" msgstr "B&ewerken" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:158 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:179 msgctxt "@title:menu" msgid "&View" msgstr "Beel&d" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:163 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:184 msgctxt "@title:menu" msgid "&Settings" msgstr "In&stellingen" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:165 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:186 msgctxt "@title:menu menubar:toplevel" msgid "&Printer" msgstr "&Printer" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:175 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:187 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:196 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:208 msgctxt "@title:menu" msgid "&Material" msgstr "&Materiaal" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:176 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:188 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:197 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:209 msgctxt "@title:menu" msgid "&Profile" msgstr "&Profiel" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:180 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:201 msgctxt "@action:inmenu" msgid "Set as Active Extruder" msgstr "Instellen als Actieve Extruder" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:198 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:219 msgctxt "@title:menu menubar:toplevel" msgid "E&xtensions" msgstr "E&xtensies" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:232 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:253 msgctxt "@title:menu menubar:toplevel" msgid "P&lugins" msgstr "&Plugins" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:240 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:261 msgctxt "@title:menu menubar:toplevel" msgid "P&references" msgstr "Voo&rkeuren" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:248 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:269 msgctxt "@title:menu menubar:toplevel" msgid "&Help" msgstr "&Help" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:330 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:351 msgctxt "@action:button" msgid "Open File" msgstr "Bestand Openen" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:442 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:512 msgctxt "@title:tab" msgid "Settings" msgstr "Instellingen" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:478 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:554 msgctxt "@title:window" msgid "New project" msgstr "Nieuw project" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:479 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:555 msgctxt "@info:question" msgid "Are you sure you want to start a new project? This will clear the build plate and any unsaved settings." msgstr "Weet u zeker dat u een nieuw project wilt starten? Hiermee wordt het platform leeggemaakt en worden eventuele niet-opgeslagen instellingen verwijderd." -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:721 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:797 msgctxt "@window:title" msgid "Install Plugin" msgstr "Invoegtoepassing installeren" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:728 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:804 msgctxt "@title:window" msgid "Open File(s)" msgstr "Bestand(en) openen" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:731 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:807 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." @@ -3881,97 +4205,82 @@ msgctxt "@action:label" msgid "Don't show project summary on save again" msgstr "Bij opnieuw opslaan projectsamenvatting niet weergeven" -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:264 -msgctxt "@action:button" -msgid "Save" -msgstr "Opslaan" - -#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:74 -msgctxt "@title:tab" -msgid "Prepare" -msgstr "Voorbereiden" - -#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:100 -msgctxt "@title:tab" -msgid "Monitor" -msgstr "Controleren" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:163 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:175 msgctxt "@label" msgid "Layer Height" msgstr "Laaghoogte" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:323 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:345 msgctxt "@tooltip" msgid "A custom profile is currently active. To enable the quality slider, choose a default quality profile in Custom tab" msgstr "Er is momenteel een aangepast profiel actief. Als u de kwaliteitsschuifregelaar wilt gebruiken, kiest u een standaard kwaliteitsprofiel op het tabblad Aangepast" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:340 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:362 msgctxt "@label" msgid "Print Speed" msgstr "Printsnelheid" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:350 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:374 msgctxt "@label" msgid "Slower" msgstr "Langzamer" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:361 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:385 msgctxt "@label" msgid "Faster" msgstr "Sneller" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:388 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:423 msgctxt "@tooltip" msgid "You have modified some profile settings. If you want to change these go to custom mode." msgstr "U hebt enkele profielinstellingen aangepast. Ga naar de aangepaste modus als u deze wilt wijzigen." -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:413 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:446 msgctxt "@label" msgid "Infill" msgstr "Vulling" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:633 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:668 msgctxt "@label" msgid "Gradual infill will gradually increase the amount of infill towards the top." msgstr "Met geleidelijke vulling neemt de hoeveelheid vulling naar boven toe." -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:645 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:680 msgctxt "@label" msgid "Enable gradual" msgstr "Geleidelijke vulling" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:712 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:747 msgctxt "@label" msgid "Generate Support" msgstr "Support genereren" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:746 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:781 msgctxt "@label" msgid "Generate structures to support parts of the model which have overhangs. Without these structures, such parts would collapse during printing." msgstr "Genereer structuren om delen van het model met overhang te ondersteunen. Zonder deze structuren zakken dergelijke delen in tijdens het printen." -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:764 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:799 msgctxt "@label" msgid "Support Extruder" msgstr "Extruder voor supportstructuur" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:816 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:851 msgctxt "@label" msgid "Select which extruder to use for support. This will build up supporting structures below the model to prevent the model from sagging or printing in mid air." msgstr "Selecteren welke extruder voor support wordt gebruikt. Deze optie zorgt ervoor dat onder het model ondersteuning wordt geprint, om te voorkomen dat dit doorzakt of dat er midden in de lucht moet worden geprint." -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:839 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:874 msgctxt "@label" msgid "Build Plate Adhesion" msgstr "Hechting aan platform" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:894 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:929 msgctxt "@label" msgid "Enable printing a brim or raft. This will add a flat area around or under your object which is easy to cut off afterwards." msgstr "Het printen van een brim of raft inschakelen. Deze optie zorgt ervoor dat er extra materiaal rondom of onder het object wordt neergelegd, dat er naderhand eenvoudig kan worden afgesneden." -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:934 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:969 msgctxt "@label" msgid "Need help improving your prints?
      Read the Ultimaker Troubleshooting Guides" msgstr "Hebt u hulp nodig om betere prints te krijgen?
      Lees de Ultimaker Troubleshooting Guides (Handleiding voor probleemoplossing)" @@ -3988,17 +4297,22 @@ msgctxt "@title:window" msgid "Open project file" msgstr "Projectbestand openen" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:72 +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:93 msgctxt "@text:window" msgid "This is a Cura project file. Would you like to open it as a project or import the models from it?" msgstr "Dit is een Cura-projectbestand. Wilt u dit openen als project of de modellen eruit importeren?" #: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:103 +msgctxt "@text:window" +msgid "Remember my choice" +msgstr "Mijn keuze onthouden" + +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:122 msgctxt "@action:button" msgid "Open as project" msgstr "Openen als project" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:122 +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:131 msgctxt "@action:button" msgid "Import models" msgstr "Modellen importeren" @@ -4008,21 +4322,36 @@ msgctxt "@title:window" msgid "Engine Log" msgstr "Engine-logboek" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:242 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:245 msgctxt "@label" msgid "Material" msgstr "Materiaal" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:349 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:352 msgctxt "@label" -msgid "Check compatibility" -msgstr "Compatibiliteit controleren" +msgid "Check compatibility" +msgstr "Compatibiliteit controleren" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:369 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:372 msgctxt "@tooltip" msgid "Click to check the material compatibility on Ultimaker.com." msgstr "Klik om de materiaalcompatibiliteit te controleren op Ultimaker.com." +#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:211 +msgctxt "@option:check" +msgid "See only current build plate" +msgstr "Alleen huidig platform weergeven" + +#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:227 +msgctxt "@action:button" +msgid "Arrange to all build plates" +msgstr "Schikken naar alle platformen" + +#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:247 +msgctxt "@action:button" +msgid "Arrange current build plate" +msgstr "Huidig platform schikken" + #: MachineSettingsAction/plugin.json msgctxt "description" msgid "Provides a way to change machine settings (such as build volume, nozzle size, etc)" @@ -4113,6 +4442,26 @@ msgctxt "name" msgid "USB printing" msgstr "USB-printen" +#: PrepareStage/plugin.json +msgctxt "description" +msgid "Provides a prepare stage in Cura." +msgstr "Deze optie biedt een voorbereidingsstadium in Cura." + +#: PrepareStage/plugin.json +msgctxt "name" +msgid "Prepare Stage" +msgstr "Stadium voorbereiden" + +#: CuraLiveScriptingPlugin/plugin.json +msgctxt "description" +msgid "Provides an edit window for direct script editing." +msgstr "Deze optie biedt een bewerkingsvenster voor rechtstreeks bewerken van scripts." + +#: CuraLiveScriptingPlugin/plugin.json +msgctxt "name" +msgid "Live scripting tool" +msgstr "Gereedschap voor live uitvoeren van scripts" + #: RemovableDriveOutputDevice/plugin.json msgctxt "description" msgid "Provides removable drive hotplugging and writing support." @@ -4133,6 +4482,16 @@ msgctxt "name" msgid "UM3 Network Connection" msgstr "UM3-netwerkverbinding" +#: MonitorStage/plugin.json +msgctxt "description" +msgid "Provides a monitor stage in Cura." +msgstr "Deze optie biedt een controlestadium in Cura." + +#: MonitorStage/plugin.json +msgctxt "name" +msgid "Monitor Stage" +msgstr "Controlestadium" + #: FirmwareUpdateChecker/plugin.json msgctxt "description" msgid "Checks for firmware updates." @@ -4145,8 +4504,8 @@ msgstr "Firmware-updatecontrole" #: CuraSolidWorksPlugin/plugin.json msgctxt "description" -msgid "Gives you the possibility to open certain files via SolidWorks itself. These are then converted and loaded into Cura" -msgstr "Hiermee hebt u de mogelijkheid bepaalde bestanden via SolidWorks te openen. De bestanden worden vervolgens geconverteerd en in Cura geladen" +msgid "Gives you the possibility to open certain files using SolidWorks itself. Conversion is done by this plugin and additional optimizations." +msgstr "Deze optie biedt u de mogelijkheid bepaalde bestanden via SolidWorks te openen. De bestanden worden vervolgens via deze invoegtoepassing geconverteerd en geoptimaliseerd." #: CuraSolidWorksPlugin/plugin.json msgctxt "name" @@ -4213,6 +4572,16 @@ msgctxt "name" msgid "Legacy Cura Profile Reader" msgstr "Lezer voor Profielen van oudere Cura-versies" +#: CuraBlenderPlugin/plugin.json +msgctxt "description" +msgid "Helps to open Blender files directly in Cura." +msgstr "Hiermee kunnen Blender-bestanden rechtstreeks in Cura worden geopend." + +#: CuraBlenderPlugin/plugin.json +msgctxt "name" +msgid "Blender Integration (experimental)" +msgstr "Blender-integratie (experimenteel)" + #: GCodeProfileReader/plugin.json msgctxt "description" msgid "Provides support for importing profiles from g-code files." @@ -4373,6 +4742,16 @@ 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." @@ -4413,6 +4792,156 @@ msgctxt "name" msgid "Cura Profile Reader" msgstr "Cura-profiellezer" +#~ msgctxt "@label" +#~ msgid "Unknown" +#~ msgstr "Onbekend" + +#~ msgctxt "@info:status" +#~ msgid "Errors appeared while opening your SolidWorks file! Please check, whether it is possible to open your file in SolidWorks itself without any problems as well!" +#~ msgstr "Er zijn fouten opgetreden tijdens het openen van het SolidWorks-bestand. Controleer of u het bestand zonder problemen in SolidWorks kunt openen." + +#~ msgctxt "@info:status" +#~ msgid "Error while starting %s!" +#~ msgstr "Er is een fout opgetreden tijdens het starten van %s!" + +#~ msgctxt "@item:inlistbox" +#~ msgid "Simulation view" +#~ msgstr "Simulatieweergave" + +#~ msgctxt "@info" +#~ msgid "Cura collects anonymised slicing statistics. You can disable this in the preferences." +#~ msgstr "Cura verzamelt geanonimiseerde slicing-statistieken. Dit kan bij de voorkeuren worden uitgeschakeld." + +#~ msgctxt "@action:button" +#~ msgid "Dismiss" +#~ msgstr "Verwijderen" + +#~ msgctxt "@menuitem" +#~ msgid "Global" +#~ msgstr "Algemeen" + +#~ msgctxt "@label crash message" +#~ msgid "" +#~ "

      A fatal exception has occurred. 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 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" +#~ " " + +#~ msgctxt "@label Cura version" +#~ msgid "Cura version: {version}
      " +#~ msgstr "Cura-versie: {version}
      " + +#~ msgctxt "@label Platform" +#~ msgid "Platform: {platform}
      " +#~ msgstr "Platform: {platform}
      " + +#~ msgctxt "@label Qt version" +#~ msgid "Qt version: {qt}
      " +#~ msgstr "Qt-versie: {qt}
      " + +#~ msgctxt "@label PyQt version" +#~ msgid "PyQt version: {pyqt}
      " +#~ msgstr "PyQt-versie: {pyqt}
      " + +#~ msgctxt "@label OpenGL" +#~ msgid "OpenGL: {opengl}
      " +#~ msgstr "OpenGL: {opengl}
      " + +#~ msgctxt "@title:groupbox" +#~ msgid "Exception traceback" +#~ msgstr "Traceback van uitzondering" + +#~ msgctxt "@label" +#~ msgid "Material diameter" +#~ msgstr "Materiaaldiameter" + +#~ msgctxt "@label" +#~ msgid "Ultimaker 3" +#~ msgstr "Ultimaker 3" + +#~ msgctxt "@label" +#~ msgid "Ultimaker 3 Extended" +#~ msgstr "Ultimaker 3 Extended" + +#~ msgctxt "@title:window" +#~ msgid "Cura SolidWorks Plugin Configuration" +#~ msgstr "Configuratie Cura SolidWorks-invoegtoepassing" + +#~ msgctxt "@action:label" +#~ msgid "Default quality of the exported STL:" +#~ msgstr "Standaard kwaliteit van de geëxporteerde STL:" + +#~ msgctxt "@option:curaSolidworksStlQuality" +#~ msgid "Always ask" +#~ msgstr "Altijd vragen" + +#~ msgctxt "@option:curaSolidworksStlQuality" +#~ msgid "Always use Fine quality" +#~ msgstr "Altijd Fijne kwaliteit gebruiken" + +#~ msgctxt "@option:curaSolidworksStlQuality" +#~ msgid "Always use Coarse quality" +#~ msgstr "Altijd Grove kwaliteit gebruiken" + +#~ msgctxt "@title:window" +#~ msgid "Import SolidWorks File as STL..." +#~ msgstr "SolidWorks-bestand importeren als STL..." + +#~ msgctxt "@info:tooltip" +#~ msgid "Quality of the Exported STL" +#~ msgstr "Kwaliteit van de geëxporteerde STL" + +#~ msgctxt "@action:label" +#~ msgid "Quality" +#~ msgstr "Kwaliteit" + +#~ msgctxt "@option:curaSolidworksStlQuality" +#~ msgid "Coarse" +#~ msgstr "Grof" + +#~ msgctxt "@option:curaSolidworksStlQuality" +#~ msgid "Fine" +#~ msgstr "Fijn" + +#~ msgctxt "@" +#~ msgid "No Profile Available" +#~ msgstr "Er is geen profiel beschikbaar" + +#~ 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" + +#~ msgctxt "@tooltip" +#~ msgid "Time specification
      " +#~ msgstr "Tijdspecificatie
      " + +#~ msgctxt "@action:inmenu menubar:view" +#~ msgid "&Reset camera position" +#~ msgstr "Camerapositie he&rstellen" + +#~ msgctxt "@title:menu menubar:file" +#~ msgid "Save project" +#~ msgstr "Project opslaan" + +#~ msgctxt "@title:tab" +#~ msgid "Prepare" +#~ msgstr "Voorbereiden" + +#~ msgctxt "@title:tab" +#~ msgid "Monitor" +#~ msgstr "Controleren" + +#~ msgctxt "@label" +#~ msgid "Check compatibility" +#~ msgstr "Compatibiliteit controleren" + +#~ msgctxt "description" +#~ msgid "Gives you the possibility to open certain files via SolidWorks itself. These are then converted and loaded into Cura" +#~ msgstr "Hiermee hebt u de mogelijkheid bepaalde bestanden via SolidWorks te openen. De bestanden worden vervolgens geconverteerd en in Cura geladen" + #~ msgctxt "@label:status" #~ msgid "Blocked" #~ msgstr "Geblokkeerd" @@ -4433,13 +4962,9 @@ msgstr "Cura-profiellezer" #~ msgid "To ensure that your {machine_name} is equipped with the latest features it is recommended to update the firmware regularly. This can be done on the {machine_name} (when connected to the network) or via USB." #~ msgstr "Om ervoor te zorgen dat uw {machine_name} van de nieuwste functies is voorzien, wordt aanbevolen om de firmware regelmatig bij te werken. U kunt dit doen op de {machine_name} (wanneer deze is verbonden met het netwerk) of via USB." -msgctxt "@item:inlistbox" -msgid "Layer view" -msgstr "Laagweergave" - -msgctxt "@info:title" -msgid "Layer View" -msgstr "Laagweergave" +#~ msgctxt "@info:title" +#~ msgid "Layer View" +#~ msgstr "Laagweergave" #~ msgctxt "@menuitem" #~ msgid "Browse plugins" @@ -4541,9 +5066,9 @@ msgstr "Laagweergave" #~ msgid "Provides the Layer view." #~ msgstr "Biedt een laagweergave." -msgctxt "name" -msgid "Layer View" -msgstr "Laagweergave" +#~ msgctxt "name" +#~ msgid "Layer View" +#~ msgstr "Laagweergave" #~ msgctxt "@item:inlistbox" #~ msgid "X-Ray" @@ -4883,9 +5408,9 @@ msgstr "Laagweergave" #~ msgid "Provides support for importing profiles from g-code files." #~ msgstr "Deze optie biedt ondersteuning voor het importeren van profielen uit G-code-bestanden." -msgctxt "@label" -msgid "Layer View" -msgstr "Laagweergave" +#~ msgctxt "@label" +#~ msgid "Layer View" +#~ msgstr "Laagweergave" #~ msgctxt "@info:whatsthis" #~ msgid "Provides the Layer view." diff --git a/resources/i18n/nl_NL/fdmextruder.def.json.po b/resources/i18n/nl_NL/fdmextruder.def.json.po index 63bd64cd8c..31192bc8a0 100644 --- a/resources/i18n/nl_NL/fdmextruder.def.json.po +++ b/resources/i18n/nl_NL/fdmextruder.def.json.po @@ -2,12 +2,12 @@ # Copyright (C) 2017 Ultimaker # This file is distributed under the same license as the Cura package. # Ruben Dulek , 2017. -# +# msgid "" msgstr "" "Project-Id-Version: Cura 3.0\n" -"Report-Msgid-Bugs-To: http://github.com/ultimaker/uranium\n" -"POT-Creation-Date: 2017-11-21 16:58+0000\n" +"Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" +"POT-Creation-Date: 2017-08-02 16:53+0000\n" "PO-Revision-Date: 2017-11-30 13:05+0100\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 8d25da1379..36f7ece010 100644 --- a/resources/i18n/nl_NL/fdmprinter.def.json.po +++ b/resources/i18n/nl_NL/fdmprinter.def.json.po @@ -2,12 +2,12 @@ # Copyright (C) 2017 Ultimaker # This file is distributed under the same license as the Cura package. # Ruben Dulek , 2017. -# +# msgid "" msgstr "" "Project-Id-Version: Cura 3.0\n" -"Report-Msgid-Bugs-To: http://github.com/ultimaker/uranium\n" -"POT-Creation-Date: 2017-11-21 16:58+0000\n" +"Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" +"POT-Creation-Date: 2017-08-02 16:53+0000\n" "PO-Revision-Date: 2017-11-30 13:05+0100\n" "Last-Translator: Bothof \n" "Language-Team: Dutch\n" @@ -345,6 +345,16 @@ msgctxt "machine_gcode_flavor option Repetier" msgid "Repetier" msgstr "Repetier" +#: fdmprinter.def.json +msgctxt "machine_firmware_retract label" +msgid "Firmware Retraction" +msgstr "Intrekken via firmware" + +#: fdmprinter.def.json +msgctxt "machine_firmware_retract description" +msgid "Whether to use firmware retract commands (G10/G11) instead of using the E property in G1 commands to retract the material." +msgstr "Hiermee bepaalt u of u voor het intrekken van materiaal firmwareopdrachten voor intrekken (G10/G11) gebruikt in plaats van de eigenschap E in G1-opdrachten." + #: fdmprinter.def.json msgctxt "machine_disallowed_areas label" msgid "Disallowed areas" @@ -605,31 +615,6 @@ msgctxt "layer_height_0 description" msgid "The height of the initial layer in mm. A thicker initial layer makes adhesion to the build plate easier." msgstr "De hoogte van de eerste laag in mm. Met een dikkere eerste laag hecht het object beter aan het platform." -#: fdmprinter.def.json -msgctxt "slicing_tolerance label" -msgid "Slicing Tolerance" -msgstr "Slicetolerantie" - -#: fdmprinter.def.json -msgctxt "slicing_tolerance description" -msgid "How to slice layers with diagonal surfaces. The areas of a layer can be generated based on where the middle of the layer intersects the surface (Middle). Alternatively each layer can have the areas which fall inside of the volume throughout the height of the layer (Exclusive) or a layer has the areas which fall inside anywhere within the layer (Inclusive). Exclusive retains the most details, Inclusive makes for the best fit and Middle takes the least time to process." -msgstr "Geeft aan hoe lagen met een diagonaal oppervlak worden geslicet. De gebieden van een laag kunnen worden gegenereerd op basis van de locatie waar het midden van de laag het oppervlak snijdt (Midden). Daarnaast kan elke laag gebieden hebben die over de gehele hoogte van de laag binnen het volume vallen (Exclusief), of kan een laag gebieden hebben die overal binnen de laag vallen (Inclusief). Met Exclusief worden de meeste details behouden, met Inclusief verkrijgt u de beste pasvorm en met Midden is de verwerkingstijd het kortst." - -#: fdmprinter.def.json -msgctxt "slicing_tolerance option middle" -msgid "Middle" -msgstr "Midden" - -#: fdmprinter.def.json -msgctxt "slicing_tolerance option exclusive" -msgid "Exclusive" -msgstr "Exclusief" - -#: fdmprinter.def.json -msgctxt "slicing_tolerance option inclusive" -msgid "Inclusive" -msgstr "Inclusief" - #: fdmprinter.def.json msgctxt "line_width label" msgid "Line Width" @@ -670,16 +655,6 @@ msgctxt "wall_line_width_x description" msgid "Width of a single wall line for all wall lines except the outermost one." msgstr "Breedte van een enkele wandlijn voor alle wandlijnen, behalve de buitenste." -#: fdmprinter.def.json -msgctxt "roofing_line_width label" -msgid "Top Surface Skin Line Width" -msgstr "Lijnbreedte bovenskin" - -#: fdmprinter.def.json -msgctxt "roofing_line_width description" -msgid "Width of a single line of the areas at the top of the print." -msgstr "Breedte van een enkele lijn aan de bovenkant van de print." - #: fdmprinter.def.json msgctxt "skin_line_width label" msgid "Top/Bottom Line Width" @@ -860,41 +835,6 @@ msgctxt "roofing_layer_count description" msgid "The number of top most skin layers. Usually only one top most layer is sufficient to generate higher quality top surfaces." msgstr "Het aantal bovenste skinlagen. Doorgaans is één bovenste skinlaag voldoende om oppervlakken van hogere kwaliteit te verkrijgen." -#: fdmprinter.def.json -msgctxt "roofing_pattern label" -msgid "Top Surface Skin Pattern" -msgstr "Patroon bovenskin" - -#: fdmprinter.def.json -msgctxt "roofing_pattern description" -msgid "The pattern of the top most layers." -msgstr "Het patroon van de bovenste lagen." - -#: fdmprinter.def.json -msgctxt "roofing_pattern option lines" -msgid "Lines" -msgstr "Lijnen" - -#: fdmprinter.def.json -msgctxt "roofing_pattern option concentric" -msgid "Concentric" -msgstr "Concentrisch" - -#: fdmprinter.def.json -msgctxt "roofing_pattern option zigzag" -msgid "Zig Zag" -msgstr "Zigzag" - -#: fdmprinter.def.json -msgctxt "roofing_angles label" -msgid "Top Surface Skin Line Directions" -msgstr "Lijnrichting bovenskin" - -#: fdmprinter.def.json -msgctxt "roofing_angles description" -msgid "A list of integer line directions to use when the top surface skin layers use the lines or zig zag pattern. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the traditional default angles (45 and 135 degrees)." -msgstr "Een lijst met gehele getallen voor lijnrichtingen die moet worden gebruikt wanneer voor de bovenste skinlagen een lijn- of zigzagpatroon wordt gebruikt. Elementen uit de lijst worden tijdens het printen van de lagen opeenvolgend gebruikt. Wanneer het einde van de lijst is bereikt, 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 traditionele standaardhoeken (45 en 135 graden) worden gebruikt." - #: fdmprinter.def.json msgctxt "top_bottom_extruder_nr label" msgid "Top/Bottom Extruder" @@ -1025,6 +965,16 @@ msgctxt "wall_0_inset description" msgid "Inset applied to the path of the outer wall. If the outer wall is smaller than the nozzle, and printed after the inner walls, use this offset to get the hole in the nozzle to overlap with the inner walls instead of the outside of the model." msgstr "Uitsparing die wordt toegepast in de buitenwand. Als de buitenwand smaller is dan de nozzle en na de binnenwand wordt geprint, gebruikt u deze offset om het gat in de nozzle te laten overlappen met de binnenwanden in plaats van met de buitenkant van het model." +#: fdmprinter.def.json +msgctxt "optimize_wall_printing_order label" +msgid "Optimize Wall Printing Order" +msgstr "Printvolgorde van wanden optimaliseren" + +#: fdmprinter.def.json +msgctxt "optimize_wall_printing_order description" +msgid "Optimize the order in which walls are printed so as to reduce the number of retractions and the distance travelled. Most parts will benefit from this being enabled but some may actually take longer so please compare the print time estimates with and without optimization." +msgstr "Optimaliseer de volgorde waarin wanden worden geprint om het aantal intrekbewegingen en de afgelegde afstand te verkleinen. Deze instelling is gunstig voor de meeste onderdelen. Bij sommige onderdelen duurt het printen echter langer. Controleer daarom de verwachte printtijd met en zonder optimalisatie." + #: fdmprinter.def.json msgctxt "outer_inset_first label" msgid "Outer Before Inner Walls" @@ -1095,6 +1045,16 @@ msgctxt "fill_perimeter_gaps option everywhere" msgid "Everywhere" msgstr "Overal" +#: fdmprinter.def.json +msgctxt "filter_out_tiny_gaps label" +msgid "Filter Out Tiny Gaps" +msgstr "Kleine gaten wegfilteren" + +#: fdmprinter.def.json +msgctxt "filter_out_tiny_gaps description" +msgid "Filter out tiny gaps to reduce blobs on outside of model." +msgstr "Kleine gaten wegfilteren om blobs aan de buitenzijde van het model te verminderen." + #: fdmprinter.def.json msgctxt "fill_outline_gaps label" msgid "Print Thin Walls" @@ -1477,8 +1437,8 @@ msgstr "Vulling X-offset" #: fdmprinter.def.json msgctxt "infill_offset_x description" -msgid "The infill pattern is offset this distance along the X axis." -msgstr "Het vulpatroon wordt over deze afstand verplaatst over de X-as." +msgid "The infill pattern is moved this distance along the X axis." +msgstr "Het vulpatroon wordt over deze afstand verplaatst langs de X-as." #: fdmprinter.def.json msgctxt "infill_offset_y label" @@ -1487,8 +1447,8 @@ msgstr "Vulling Y-offset" #: fdmprinter.def.json msgctxt "infill_offset_y description" -msgid "The infill pattern is offset this distance along the Y axis." -msgstr "Het vulpatroon wordt over deze afstand verplaatst over de Y-as." +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 "sub_div_rad_add label" @@ -1507,8 +1467,8 @@ msgstr "Overlappercentage vulling" #: fdmprinter.def.json msgctxt "infill_overlap 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." +msgid "The amount of overlap between the infill and the walls as a percentage of the infill line width. A slight overlap allows the walls to connect firmly to the infill." +msgstr "De mate van overlap tussen de vulling en de wanden als percentage van de lijnbreedte van de vulling. Met een lichte overlap kunnen de wanden goed hechten aan de vulling." #: fdmprinter.def.json msgctxt "infill_overlap_mm label" @@ -1527,8 +1487,8 @@ msgstr "Overlappercentage Skin" #: fdmprinter.def.json msgctxt "skin_overlap description" -msgid "The amount of overlap between the skin and the walls as a percentage of the line width. A slight overlap allows the walls to connect firmly to the skin. This is a percentage of the average line widths of the skin lines and the innermost wall." -msgstr "De mate van overlap tussen de skin en de wanden als percentage van de lijnbreedte. Met een lichte overlap kunnen de wanden goed hechten aan de skin. Dit is een percentage van de gemiddelde lijnbreedte van de skinlijnen en de binnenste wand." +msgid "The amount of overlap between the skin and the walls as a percentage of the skin line width. A slight overlap allows the walls to connect firmly to the skin. This is a percentage of the average line widths of the skin lines and the innermost wall." +msgstr "De mate van overlap tussen de skin en de wanden als percentage van de lijnbreedte van de skin. Met een lichte overlap kunnen de wanden goed hechten aan de skin. Dit is een percentage van de gemiddelde lijnbreedte van de skinlijnen en de binnenste wand." #: fdmprinter.def.json msgctxt "skin_overlap_mm label" @@ -1690,16 +1650,6 @@ msgctxt "material description" msgid "Material" msgstr "Materiaal" -#: fdmprinter.def.json -msgctxt "material_flow_dependent_temperature label" -msgid "Auto Temperature" -msgstr "Automatische Temperatuurinstelling" - -#: fdmprinter.def.json -msgctxt "material_flow_dependent_temperature description" -msgid "Change the temperature for each layer automatically with the average flow speed of that layer." -msgstr "Pas de temperatuur voor elke laag automatisch aan aan de gemiddelde doorvoersnelheid van de laag." - #: fdmprinter.def.json msgctxt "default_material_print_temperature label" msgid "Default Printing Temperature" @@ -1750,16 +1700,6 @@ msgctxt "material_final_print_temperature description" msgid "The temperature to which to already start cooling down just before the end of printing." msgstr "De temperatuur waarnaar alvast kan worden afgekoeld net voordat het printen wordt beëindigd." -#: fdmprinter.def.json -msgctxt "material_flow_temp_graph label" -msgid "Flow Temperature Graph" -msgstr "Grafiek Doorvoertemperatuur" - -#: fdmprinter.def.json -msgctxt "material_flow_temp_graph description" -msgid "Data linking material flow (in mm3 per second) to temperature (degrees Celsius)." -msgstr "Grafiek om de materiaaldoorvoer (in mm3 per seconde) te koppelen aan de temperatuur (graden Celsius)." - #: fdmprinter.def.json msgctxt "material_extrusion_cool_down_speed label" msgid "Extrusion Cool Down Speed Modifier" @@ -1777,8 +1717,8 @@ msgstr "Platformtemperatuur" #: fdmprinter.def.json msgctxt "material_bed_temperature description" -msgid "The temperature used for the heated build plate. If this is 0, the bed will not heat up for this print." -msgstr "De temperatuur van het verwarmde platform. Als deze waarde ingesteld is op 0, wordt het bed voor deze print niet verwarmd." +msgid "The temperature used for the heated build plate. If this is 0, the bed temperature will not be adjusted." +msgstr "De temperatuur van het verwarmde platform. Als deze waarde is ingesteld op 0, wordt de printbedtemperatuur niet aangepast." #: fdmprinter.def.json msgctxt "material_bed_temperature_layer_0 label" @@ -3450,6 +3390,16 @@ msgctxt "support_tower_roof_angle description" msgid "The angle of a rooftop of a tower. A higher value results in pointed tower roofs, a lower value results in flattened tower roofs." msgstr "De hoek van een dak van een pijler. Een hogere waarde zorgt voor een spits pijlerdak, een lagere waarde zorgt voor een plat pijlerdak." +#: fdmprinter.def.json +msgctxt "support_mesh_drop_down label" +msgid "Drop Down Support Mesh" +msgstr "Supportraster verlagen" + +#: fdmprinter.def.json +msgctxt "support_mesh_drop_down description" +msgid "Make support everywhere below the support mesh, so that there's no overhang in the support mesh." +msgstr "Maak overal onder het supportraster support zodat er in het supportraster geen overhang is." + #: fdmprinter.def.json msgctxt "platform_adhesion label" msgid "Build Plate Adhesion" @@ -4082,16 +4032,6 @@ msgctxt "meshfix_keep_open_polygons description" msgid "Normally Cura tries to stitch up small holes in the mesh and remove parts of a layer with big holes. Enabling this option keeps those parts which cannot be stitched. This option should be used as a last resort option when everything else fails to produce proper GCode." msgstr "Normaal probeert Cura kleine gaten in het raster te hechten en delen van een laag met grote gaten te verwijderen. Als u deze optie inschakelt, behoudt u deze delen die niet kunnen worden gehecht. Deze optie kan als laatste redmiddel worden gebruikt als er geen andere manier meer is om correcte G-code te genereren." -#: 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 "multiple_mesh_overlap label" msgid "Merged Meshes Overlap" @@ -4242,16 +4182,6 @@ msgctxt "support_mesh description" msgid "Use this mesh to specify support areas. This can be used to generate support structure." msgstr "Gebruik dit raster om steunvlakken op te geven. Deze functie kan worden gebruikt om supportstructuur te genereren." -#: fdmprinter.def.json -msgctxt "support_mesh_drop_down label" -msgid "Drop Down Support Mesh" -msgstr "Supportraster verlagen" - -#: fdmprinter.def.json -msgctxt "support_mesh_drop_down description" -msgid "Make support everywhere below the support mesh, so that there's no overhang in the support mesh." -msgstr "Maak overal onder het supportraster support zodat er in het supportraster geen overhang is." - #: fdmprinter.def.json msgctxt "anti_overhang_mesh label" msgid "Anti Overhang Mesh" @@ -4328,14 +4258,194 @@ msgid "experimental!" msgstr "experimenteel!" #: fdmprinter.def.json -msgctxt "optimize_wall_printing_order label" -msgid "Optimize Wall Printing Order" -msgstr "Printvolgorde van wanden optimaliseren" +msgctxt "support_tree_enable label" +msgid "Tree Support" +msgstr "Boomsupportstructuur" #: fdmprinter.def.json -msgctxt "optimize_wall_printing_order description" -msgid "Optimize the order in which walls are printed so as to reduce the number of retractions and the distance travelled. Most parts will benefit from this being enabled but some may actually take longer so please compare the print time estimates with and without optimization." -msgstr "Optimaliseer de volgorde waarin wanden worden geprint om het aantal intrekbewegingen en de afgelegde afstand te verkleinen. Deze instelling is gunstig voor de meeste onderdelen. Bij sommige onderdelen duurt het printen echter langer. Controleer daarom de verwachte printtijd met en zonder optimalisatie." +msgctxt "support_tree_enable description" +msgid "Generate a tree-like support with branches that support your print. This may reduce material usage and print time, but greatly increases slicing time." +msgstr "Genereer een boomachtige supportstructuur met takken die uw print ondersteunen. Hierdoor worden materiaalgebruik en printtijd mogelijk gereduceerd, maar wordt de slicetijd aanzienlijk verlengd." + +#: fdmprinter.def.json +msgctxt "support_tree_angle label" +msgid "Tree Support Branch Angle" +msgstr "Hoek van takken van boomsupportstructuur" + +#: fdmprinter.def.json +msgctxt "support_tree_angle description" +msgid "The angle of the branches. Use a lower angle to make them more vertical and more stable. Use a higher angle to be able to have more reach." +msgstr "Hiermee stelt u de hoek van de takken in. Met een kleinere hoek worden de takken verticaler en stabieler. Met een grotere hoek hebben ze een groter bereik." + +#: fdmprinter.def.json +msgctxt "support_tree_branch_distance label" +msgid "Tree Support Branch Distance" +msgstr "Takafstand van boomsupportstructuur" + +#: fdmprinter.def.json +msgctxt "support_tree_branch_distance description" +msgid "How far apart the branches need to be when they touch the model. Making this distance small will cause the tree support to touch the model at more points, causing better overhang but making support harder to remove." +msgstr "Hiermee stelt u in hoe ver de takken moeten uitsteken als ze het model raken. Met een kleinere afstand raakt de boomsupportstructuur het model op meer plaatsen. Hierdoor creëert u een betere overhang maar is de supportstructuur moeilijker te verwijderen." + +#: fdmprinter.def.json +msgctxt "support_tree_branch_diameter label" +msgid "Tree Support Branch Diameter" +msgstr "Takdiameter van boomsupportstructuur" + +#: fdmprinter.def.json +msgctxt "support_tree_branch_diameter description" +msgid "The diameter of the thinnest branches of tree support. Thicker branches are more sturdy. Branches towards the base will be thicker than this." +msgstr "Hiermee stelt u de diameter in van de dunste takken van de boomsupportstructuur. Dikkere takken zijn steviger. Takken die dichter bij de stam liggen, zijn dikker dan dit." + +#: fdmprinter.def.json +msgctxt "support_tree_branch_diameter_angle label" +msgid "Tree Support Branch Diameter Angle" +msgstr "Hoek van takdiameter van boomsupportstructuur" + +#: fdmprinter.def.json +msgctxt "support_tree_branch_diameter_angle description" +msgid "The angle of the branches' diameter as they gradually become thicker towards the bottom. An angle of 0 will cause the branches to have uniform thickness over their length. A bit of an angle can increase stability of the tree support." +msgstr "De hoek van de diameter van de takken terwijl ze naar beneden toe geleidelijk dikker worden. Met de hoekinstelling 0 zijn de takken over de gehele lengte even dik. Een kleine hoek verbetert de stabiliteit van de boomsupportstructuur." + +#: fdmprinter.def.json +msgctxt "support_tree_collision_resolution label" +msgid "Tree Support Collision Resolution" +msgstr "Resolutie bij botsingen van de boomsupportstructuur" + +#: fdmprinter.def.json +msgctxt "support_tree_collision_resolution description" +msgid "Resolution to compute collisions with to avoid hitting the model. Setting this lower will produce more accurate trees that fail less often, but increases slicing time dramatically." +msgstr "Resolutie voor het berekenen van botsingen om te voorkomen dat het model wordt geraakt. Als u deze optie op een lagere waarde instelt, creëert u nauwkeurigere bomen die minder vaak fouten vertonen, maar wordt de slicetijd aanzienlijk verlengd." + +#: fdmprinter.def.json +msgctxt "support_tree_wall_thickness label" +msgid "Tree Support Wall Thickness" +msgstr "Wanddikte boomsupportstructuur" + +#: fdmprinter.def.json +msgctxt "support_tree_wall_thickness description" +msgid "The thickness of the walls of the branches of tree support. Thicker walls take longer to print but don't fall over as easily." +msgstr "Hiermee stelt u de wanddikte in voor de takken van de boomsupportstructuur. Het printen van dikkere wanden duurt langer, maar deze vallen minder snel om." + +#: fdmprinter.def.json +msgctxt "support_tree_wall_count label" +msgid "Tree Support Wall Line Count" +msgstr "Aantal wandlijnen boomsupportstructuur" + +#: fdmprinter.def.json +msgctxt "support_tree_wall_count description" +msgid "The number of walls of the branches of tree support. Thicker walls take longer to print but don't fall over as easily." +msgstr "Hiermee stelt u het aantal wanden in voor de takken van de boomsupportstructuur. Het printen van dikkere wanden duurt langer, maar deze vallen minder snel om." + +#: fdmprinter.def.json +msgctxt "slicing_tolerance label" +msgid "Slicing Tolerance" +msgstr "Slicetolerantie" + +#: fdmprinter.def.json +msgctxt "slicing_tolerance description" +msgid "How to slice layers with diagonal surfaces. The areas of a layer can be generated based on where the middle of the layer intersects the surface (Middle). Alternatively each layer can have the areas which fall inside of the volume throughout the height of the layer (Exclusive) or a layer has the areas which fall inside anywhere within the layer (Inclusive). Exclusive retains the most details, Inclusive makes for the best fit and Middle takes the least time to process." +msgstr "Geeft aan hoe lagen met een diagonaal oppervlak worden geslicet. De gebieden van een laag kunnen worden gegenereerd op basis van de locatie waar het midden van de laag het oppervlak snijdt (Midden). Daarnaast kan elke laag gebieden hebben die over de gehele hoogte van de laag binnen het volume vallen (Exclusief), of kan een laag gebieden hebben die overal binnen de laag vallen (Inclusief). Met Exclusief worden de meeste details behouden, met Inclusief verkrijgt u de beste pasvorm en met Midden is de verwerkingstijd het kortst." + +#: fdmprinter.def.json +msgctxt "slicing_tolerance option middle" +msgid "Middle" +msgstr "Midden" + +#: fdmprinter.def.json +msgctxt "slicing_tolerance option exclusive" +msgid "Exclusive" +msgstr "Exclusief" + +#: fdmprinter.def.json +msgctxt "slicing_tolerance option inclusive" +msgid "Inclusive" +msgstr "Inclusief" + +#: fdmprinter.def.json +msgctxt "roofing_line_width label" +msgid "Top Surface Skin Line Width" +msgstr "Lijnbreedte bovenskin" + +#: fdmprinter.def.json +msgctxt "roofing_line_width description" +msgid "Width of a single line of the areas at the top of the print." +msgstr "Breedte van een enkele lijn aan de bovenkant van de print." + +#: fdmprinter.def.json +msgctxt "roofing_pattern label" +msgid "Top Surface Skin Pattern" +msgstr "Patroon bovenskin" + +#: fdmprinter.def.json +msgctxt "roofing_pattern description" +msgid "The pattern of the top most layers." +msgstr "Het patroon van de bovenste lagen." + +#: fdmprinter.def.json +msgctxt "roofing_pattern option lines" +msgid "Lines" +msgstr "Lijnen" + +#: fdmprinter.def.json +msgctxt "roofing_pattern option concentric" +msgid "Concentric" +msgstr "Concentrisch" + +#: fdmprinter.def.json +msgctxt "roofing_pattern option zigzag" +msgid "Zig Zag" +msgstr "Zigzag" + +#: fdmprinter.def.json +msgctxt "roofing_angles label" +msgid "Top Surface Skin Line Directions" +msgstr "Lijnrichting bovenskin" + +#: fdmprinter.def.json +msgctxt "roofing_angles description" +msgid "A list of integer line directions to use when the top surface skin layers use the lines or zig zag pattern. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the traditional default angles (45 and 135 degrees)." +msgstr "Een lijst met gehele getallen voor lijnrichtingen die moet worden gebruikt wanneer voor de bovenste skinlagen een lijn- of zigzagpatroon wordt gebruikt. Elementen uit de lijst worden tijdens het printen van de lagen opeenvolgend gebruikt. Wanneer het einde van de lijst is bereikt, 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 traditionele standaardhoeken (45 en 135 graden) worden gebruikt." + +#: fdmprinter.def.json +msgctxt "infill_enable_travel_optimization label" +msgid "Infill Travel Optimization" +msgstr "Bewegingsoptimalisatie vulling" + +#: fdmprinter.def.json +msgctxt "infill_enable_travel_optimization description" +msgid "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." +msgstr "Wanneer deze optie is ingeschakeld, wordt de volgorde geoptimaliseerd waarin de vullijnen worden geprint om de afgelegde beweging te reduceren. De reductie in bewegingstijd die wordt bereikt, is in hoge mate afhankelijk van het model dat wordt geslicet, het vulpatroon, de dichtheid enz. Houd er rekening mee dat de slicetijd voor modellen met veel kleine vulgebieden aanzienlijk kan worden verlengd." + +#: fdmprinter.def.json +msgctxt "material_flow_dependent_temperature label" +msgid "Auto Temperature" +msgstr "Automatische Temperatuurinstelling" + +#: fdmprinter.def.json +msgctxt "material_flow_dependent_temperature description" +msgid "Change the temperature for each layer automatically with the average flow speed of that layer." +msgstr "Pas de temperatuur voor elke laag automatisch aan aan de gemiddelde doorvoersnelheid van de laag." + +#: fdmprinter.def.json +msgctxt "material_flow_temp_graph label" +msgid "Flow Temperature Graph" +msgstr "Grafiek Doorvoertemperatuur" + +#: fdmprinter.def.json +msgctxt "material_flow_temp_graph description" +msgid "Data linking material flow (in mm3 per second) to temperature (degrees Celsius)." +msgstr "Grafiek om de materiaaldoorvoer (in mm3 per seconde) te koppelen aan de temperatuur (graden Celsius)." + +#: 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 "support_skip_some_zags label" @@ -4934,6 +5044,46 @@ msgctxt "wireframe_nozzle_clearance description" msgid "Distance between the nozzle and horizontally downward lines. Larger clearance results in diagonally downward lines with a less steep angle, which in turn results in less upward connections with the next layer. Only applies to Wire Printing." msgstr "De afstand tussen de nozzle en horizontaal neergaande lijnen. Een grotere tussenruimte zorgt voor diagonaal neerwaarts gaande lijnen met een minder steile hoek. Hierdoor ontstaan minder opwaartse verbindingen met de volgende laag. Alleen van toepassing op Draadprinten." +#: fdmprinter.def.json +msgctxt "adaptive_layer_height_enabled label" +msgid "Use adaptive layers" +msgstr "Adaptieve lagen gebruiken" + +#: fdmprinter.def.json +msgctxt "adaptive_layer_height_enabled description" +msgid "Adaptive layers computes the layer heights depending on the shape of the model." +msgstr "Met adaptieve lagen berekent u de laaghoogte afhankelijk van de vorm van het model." + +#: fdmprinter.def.json +msgctxt "adaptive_layer_height_variation label" +msgid "Adaptive layers maximum variation" +msgstr "Maximale variatie adaptieve lagen" + +#: fdmprinter.def.json +msgctxt "adaptive_layer_height_variation description" +msgid "The maximum allowed height different from the base layer height in mm." +msgstr "De maximaal toegestane hoogte ten opzichte van de grondlaaghoogte in mm." + +#: fdmprinter.def.json +msgctxt "adaptive_layer_height_variation_step label" +msgid "Adaptive layers variation step size" +msgstr "Stapgrootte variatie adaptieve lagen" + +#: fdmprinter.def.json +msgctxt "adaptive_layer_height_variation_step description" +msgid "The difference in height of the next layer height compared to the previous one." +msgstr "Het hoogteverschil tussen de hoogte van de volgende laag ten opzichte van de vorige laag." + +#: fdmprinter.def.json +msgctxt "adaptive_layer_height_threshold label" +msgid "Adaptive layers threshold" +msgstr "Drempel adaptieve 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." + #: fdmprinter.def.json msgctxt "command_line_settings label" msgid "Command Line Settings" @@ -4994,6 +5144,26 @@ 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 "infill_offset_x description" +#~ msgid "The infill pattern is offset this distance along the X axis." +#~ msgstr "Het vulpatroon wordt over deze afstand verplaatst over de X-as." + +#~ msgctxt "infill_offset_y description" +#~ msgid "The infill pattern is offset this distance along the Y axis." +#~ msgstr "Het vulpatroon wordt over deze afstand verplaatst over de Y-as." + +#~ msgctxt "infill_overlap 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." + +#~ msgctxt "skin_overlap description" +#~ msgid "The amount of overlap between the skin and the walls as a percentage of the line width. A slight overlap allows the walls to connect firmly to the skin. This is a percentage of the average line widths of the skin lines and the innermost wall." +#~ msgstr "De mate van overlap tussen de skin en de wanden als percentage van de lijnbreedte. Met een lichte overlap kunnen de wanden goed hechten aan de skin. Dit is een percentage van de gemiddelde lijnbreedte van de skinlijnen en de binnenste wand." + +#~ msgctxt "material_bed_temperature description" +#~ msgid "The temperature used for the heated build plate. If this is 0, the bed will not heat up for this print." +#~ msgstr "De temperatuur van het verwarmde platform. Als deze waarde ingesteld is op 0, wordt het bed voor deze print niet verwarmd." + #~ msgctxt "wall_x_extruder_nr label" #~ msgid "Inner Walls Extruder" #~ msgstr "Extruder binnenwand" diff --git a/resources/i18n/pl_PL/cura.po b/resources/i18n/pl_PL/cura.po index 19b4c72931..c612eefc13 100644 --- a/resources/i18n/pl_PL/cura.po +++ b/resources/i18n/pl_PL/cura.po @@ -6,9 +6,9 @@ msgid "" msgstr "" "Project-Id-Version: Cura 3.0\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-11-21 16:58+0100\n" -"PO-Revision-Date: 2017-11-22 16:19+0100\n" +"Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" +"POT-Creation-Date: 2017-08-02 16:53+0000\n" +"PO-Revision-Date: 2018-02-10 14:24+0100\n" "Last-Translator: 'Jaguś' Paweł Jagusiak and Andrzej 'anraf1001' Rafalski\n" "Language-Team: reprapy.pl\n" "Language: pl_PL\n" @@ -16,9 +16,9 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 2.0.4\n" +"X-Generator: Poedit 2.0.6\n" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:29 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:26 msgctxt "@action" msgid "Machine Settings" msgstr "Ustawienia drukarki" @@ -55,12 +55,11 @@ msgstr "Łączenie z Doodle3D Connect" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:87 #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:155 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:874 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:646 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:875 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:659 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:370 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrintWindow.qml:78 -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:104 -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:99 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:355 #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:188 #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:376 #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:139 @@ -100,7 +99,7 @@ msgctxt "@info:tooltip" msgid "Open the Doodle3D Connect web interface" msgstr "Otwórz interfejs Doodle3D Connect" -#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:34 +#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:33 msgctxt "@item:inmenu" msgid "Show Changelog" msgstr "Pokaż Dziennik" @@ -115,78 +114,83 @@ msgctxt "@info:status" msgid "Profile has been flattened & activated." msgstr "Profil został spłaszczony i aktywowany." -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:26 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:27 msgctxt "@item:inmenu" msgid "USB printing" msgstr "Drukowanie USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:27 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:28 msgctxt "@action:button Preceded by 'Ready to'." msgid "Print via USB" msgstr "Drukuj przez USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:28 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:29 msgctxt "@info:tooltip" msgid "Print via USB" msgstr "Drukuj przez USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:30 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:31 msgctxt "@info:status" msgid "Connected via USB" msgstr "Połączono przez USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:154 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:183 msgctxt "@info:status" msgid "Unable to start a new job because the printer is busy or not connected." msgstr "Nie można uruchomić nowego zadania, ponieważ drukarka jest zajęta lub nie jest podłączona." -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:154 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:183 msgctxt "@info:title" msgid "Printer Unavailable" msgstr "Drukarka Niedostępna" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:457 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:485 msgctxt "@info:status" msgid "This printer does not support USB printing because it uses UltiGCode flavor." msgstr "Ta drukarka nie obsługuje drukowania USB, ponieważ korzysta z UltiGCode." -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:457 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:485 msgctxt "@info:title" msgid "USB Printing" msgstr "Drukowanie przez USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:461 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:489 msgctxt "@info:status" msgid "Unable to start a new job because the printer does not support usb printing." msgstr "Nie można uruchomić nowego zadania, ponieważ drukarka nie obsługuje drukowania poprzez USB." -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:461 -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:108 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:489 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:103 #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:146 #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:158 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:945 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1349 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1417 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:946 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1418 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1496 msgctxt "@info:title" msgid "Warning" msgstr "Ostrzeżenie" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:108 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:103 msgctxt "@info" msgid "Unable to update firmware because there are no printers connected." msgstr "Nie można zaktualizować oprogramowania, ponieważ nie ma podłączonych drukarek." -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:122 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:117 #, python-format msgctxt "@info" msgid "Could not find firmware required for the printer at %s." msgstr "Nie znaleziono oprogramowania wymaganego dla drukarki w %s." -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:122 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:117 msgctxt "@info:title" msgid "Printer Firmware" msgstr "Oprogramowanie Drukarki" +#: /home/ruben/Projects/Cura/plugins/PrepareStage/__init__.py:12 +msgctxt "@item:inmenu" +msgid "Prepare" +msgstr "Przygotuj" + #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:23 msgctxt "@action:button Preceded by 'Ready to'." msgid "Save to Removable Drive" @@ -230,11 +234,11 @@ 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:132 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:692 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:700 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:146 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:693 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:701 #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:153 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1358 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:160 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1427 msgctxt "@info:title" msgid "Error" msgstr "Błąd" @@ -284,7 +288,7 @@ msgid "Removable Drive" msgstr "Dysk wymienny" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:109 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:53 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:51 msgctxt "@action:button Preceded by 'Ready to'." msgid "Print over network" msgstr "Drukuj przez sieć" @@ -398,110 +402,110 @@ msgctxt "@info:title" msgid "Printer Status" msgstr "Status Drukarki" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:691 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:692 #, python-brace-format msgctxt "@info:status" msgid "Unable to start a new print job. No Printcore loaded in slot {0}" msgstr "Nie można uruchomić nowego zadania. Brak Printcore w slocie {0}" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:699 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:700 #, python-brace-format msgctxt "@info:status" msgid "Unable to start a new print job. No material loaded in slot {0}" msgstr "Nie można uruchomić nowego zadania. Brak materiału w slocie {0}" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:709 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:710 #, python-brace-format msgctxt "@label" msgid "Not enough material for spool {0}." msgstr "Nie ma wystarczającej ilości materiału na szpuli {0}." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:719 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:720 #, python-brace-format msgctxt "@label" msgid "Different PrintCore (Cura: {0}, Printer: {1}) selected for extruder {2}" msgstr "Różne PrintCore (Cura: {0}, Drukarka: {1}) wybrane dla ekstrudera {2}" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:733 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:734 #, 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/NetworkPrinterOutputDevice.py:741 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:742 #, python-brace-format msgctxt "@label" msgid "PrintCore {0} is not properly calibrated. XY calibration needs to be performed on the printer." msgstr "PrintCore {0} nie jest poprawnie skalibrowany. Kalibracja XY musi zostać wykonana na tej drukarce." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:746 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:747 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/NetworkPrinterOutputDevice.py:747 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:748 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/NetworkPrinterOutputDevice.py:753 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:754 msgctxt "@window:title" msgid "Mismatched configuration" msgstr "Niedopasowana konfiguracja" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:864 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:262 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:865 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:258 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/NetworkPrinterOutputDevice.py:873 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:874 msgctxt "@info:status" msgid "Sending data to printer" msgstr "Wysyłanie danych do drukarki" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:873 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:874 msgctxt "@info:title" msgid "Sending Data" msgstr "Wysyłanie danych" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:944 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:945 msgctxt "@info:status" msgid "Unable to send data to printer. Is another job still active?" msgstr "Nie można wysłać danych do drukarki. Czy inna praca jest nadal aktywna?" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1085 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1087 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:196 msgctxt "@label:MonitorStatus" msgid "Aborting print..." msgstr "Przerywanie drukowania..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1091 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1093 msgctxt "@label:MonitorStatus" msgid "Print aborted. Please check the printer" msgstr "Wydruk został przerwany. Sprawdź drukarkę" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1097 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1099 msgctxt "@label:MonitorStatus" msgid "Pausing print..." msgstr "Wstrzymywanie drukowania..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1099 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1101 msgctxt "@label:MonitorStatus" msgid "Resuming print..." msgstr "Wznawianie drukowania ..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1289 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1291 msgctxt "@window:title" msgid "Sync with your printer" msgstr "Synchronizuj się z drukarką" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1291 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1293 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/NetworkPrinterOutputDevice.py:1293 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1295 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." @@ -522,145 +526,203 @@ msgid "{printer_name} has finished printing '{job_name}'. Please collect the pri msgstr "{printer_name} skończyła drukowanie '{job_name}'. Proszę zabrać wydruk i potwierdzić oczyszczenie platformy roboczej." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:115 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:520 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:533 #, python-brace-format msgid "{printer_name} is reserved to print '{job_name}'. Please change the printer's configuration to match the job, for it to start printing." msgstr "{printer_name} jest zarezerwowana do druku '{job_name}'. Proszę zmień konfigurację drukarki, żeby pasowała do zadania dla niej, aby rozpocząć drukowanie." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:278 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:277 msgctxt "@info:status" msgid "Unable to send new print job: this 3D printer is not (yet) set up to host a group of connected Ultimaker 3 printers." msgstr "Nie można wysłać nowego zadania: ta drukarka 3D nie jest (jeszcze) ustawiona jako gospodarz grupy podłączonych drukarek Ultimaker 3." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:410 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:423 #, python-brace-format msgctxt "@info:status" msgid "Unable to send print job to group {cluster_name}." msgstr "Nie można wysłać zadania do grupy {cluster_name}." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:418 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:431 #, python-brace-format msgctxt "@info:status" msgid "Sent {file_name} to group {cluster_name}." msgstr "Wysłano {file_name} do grupy {cluster_name}." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:423 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:436 msgctxt "@action:button" msgid "Show print jobs" msgstr "Pokaż zadania druku" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:424 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:437 msgctxt "@info:tooltip" msgid "Opens the print jobs interface in your browser." msgstr "Otwiera interfejs zadań druku w przeglądarce." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:489 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:502 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:239 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:47 -msgctxt "@label" +msgctxt "@label Printer name" msgid "Unknown" -msgstr "Nieznany" +msgstr "Nieznana" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:492 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:505 #, 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/NetworkClusterPrinterOutputDevice.py:494 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:497 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:507 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:510 msgctxt "@info:status" msgid "Print finished" msgstr "Drukowanie zakończone" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:522 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:525 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:535 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:538 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:282 msgctxt "@label:status" msgid "Action required" msgstr "Konieczne są działania" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:643 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:656 #, python-brace-format msgctxt "@info:progress" msgid "Sending {file_name} to group {cluster_name}" msgstr "Wysyłanie {file_name} do grupy {cluster_name}" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.py:19 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.py:17 msgctxt "@action" msgid "Connect via Network" msgstr "Połącz przez sieć" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:64 +#: /home/ruben/Projects/Cura/plugins/MonitorStage/__init__.py:12 +msgctxt "@item:inmenu" +msgid "Monitor" +msgstr "Monitor" + +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:66 #, python-brace-format msgctxt "@info Don't translate {machine_name}, since it gets replaced by a printer name!" msgid "New features are available for your {machine_name}! It is recommended to update the firmware on your printer." msgstr "Nowe funkcje są dostępne dla twojej {machine_name}! Rekomendowane jest zaktualizowanie oprogramowania drukarki." -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:65 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:67 #, python-format msgctxt "@info:title The %s gets replaced with the printer name." msgid "New %s firmware available" msgstr "Nowe oprogramowanie %s jest dostępne" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:66 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:68 msgctxt "@action:button" msgid "How to update" msgstr "Jak zaktualizować" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:77 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:79 msgctxt "@info" msgid "Could not access update information." msgstr "Nie można uzyskać dostępu do informacji o aktualizacji" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksReader.py:199 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksReader.py:579 msgctxt "@info:status" -msgid "Errors appeared while opening your SolidWorks file! Please check, whether it is possible to open your file in SolidWorks itself without any problems as well!" -msgstr "Wystąpił błąd podczas otwierania pliku SolidWorks! Proszę sprawdź, czy możesz otworzyć plik SolidWorks bez żadnych problemów!" +msgid "SolidWorks reported errors, while opening your file. We recommend to solve these issues inside SolidWorks itself." +msgstr "SolidWorks zgłosił błędy podczas otwierania twojego pliku. Zalecamy rozwiązanie tego problemu w samym SolidWorksie." -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:31 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksReader.py:591 +msgctxt "@info:status" +msgid "" +"Found no models inside your drawing. Could you please check it's content again and make sure one part or assembly is inside?\n" +"\n" +" Thanks!." +msgstr "" +"Nie znaleziono modeli wewnątrz twojego rysunku. Czy mógłbyś sprawdzić jego zawartość ponownie i upewnić się, że znajduje się tam jedna część lub złożenie?\n" +"\n" +"Dziękuję!." + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksReader.py:595 +msgctxt "@info:status" +msgid "" +"Found more then one part or assembly inside your drawing. We currently only support drawings with exactly one part or assembly inside.\n" +"\n" +"Sorry!" +msgstr "" +"Znaleziono więcej niż jedną część lub złożenie wewnątrz rysunku. Obecnie obsługujemy tylko rysunki z dokładnie jedną częścią lub złożeniem.\n" +"\n" +"Przepraszamy!" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:25 msgctxt "@item:inlistbox" msgid "SolidWorks part file" msgstr "Plik części SolidWorks" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:35 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:29 msgctxt "@item:inlistbox" msgid "SolidWorks assembly file" msgstr "Plik złożenia SolidWorks" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.py:21 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:33 +msgctxt "@item:inlistbox" +msgid "SolidWorks drawing file" +msgstr "Plik rysunku SolidWorks" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:48 +msgctxt "@info:status" +msgid "" +"Dear customer,\n" +"We could not find a valid installation of SolidWorks on your system. That means that either SolidWorks is not installed or you don't own an valid license. Please make sure that running SolidWorks itself works without issues and/or contact your ICT.\n" +"\n" +"With kind regards\n" +" - Thomas Karl Pietrowski" +msgstr "" +"Szanowny kliencie,\n" +"Nie mogliśmy znaleźć poprawnej instalacji SolidWorks w twoim systemie. To oznacza, że albo nie masz zainstalowanego SolidWorks, albo nie masz ważnej licencji. Proszę upewnić się, że uruchomiony SolidWorks działa bez żadnych problemów i/lub skontaktuj się z ICT.\n" +"\n" +"Z wyrazami szacunku,\n" +" - Thomas Karl Pietrowski" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:57 +msgctxt "@info:status" +msgid "" +"Dear customer,\n" +"You are currently running this plugin on an operating system other than Windows. This plugin will only work on Windows with SolidWorks installed, including an valid license. Please install this plugin on a Windows machine with SolidWorks installed.\n" +"\n" +"With kind regards\n" +" - Thomas Karl Pietrowski" +msgstr "" +"Szanowny kliencie,\n" +"Używasz aktualnie tego pluginu na innym systemie niż Windows. Ten plugin działa tylko w Windows razem z zainstalowanym SolidWorks, włączając w to poprawną licencję. Proszę zainstalować ten plugin na maszynie z systemem Windows z zainstalowanym SolidWorks.\n" +"Z wyrazami szacunku,\n" +" - Thomas Karl Pietrowski" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksDialogHandler.py:70 msgid "Configure" msgstr "Konfiguruj" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/CommonComReader.py:135 -#, python-format -msgctxt "@info:status" -msgid "Error while starting %s!" -msgstr "Błąd podczas rozpoczynania %s!" +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksDialogHandler.py:71 +msgid "Installation guide for SolidWorks macro" +msgstr "Instalacja poradnika dla skrótów SolidWorks" #: /home/ruben/Projects/Cura/plugins/SimulationView/__init__.py:14 msgctxt "@item:inlistbox" -msgid "Simulation view" -msgstr "Widok symulacji" +msgid "Layer view" +msgstr "Widok warstwy" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:100 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:103 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:101 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:104 msgctxt "@info:title" msgid "Simulation View" msgstr "Widok symulacji" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.py:26 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.py:25 msgid "Modify G-Code" msgstr "Modyfikuj G-Code" #: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:43 msgctxt "@info" -msgid "Cura collects anonymised slicing statistics. You can disable this in the preferences." -msgstr "Cura zbiera anonimowe statystyki cięcia. Możesz wyłączyć to w ustawieniach." +msgid "Cura collects anonymized usage statistics." +msgstr "Cura zbiera anonimowe dane statystyczne." #: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:46 msgctxt "@info:title" @@ -669,14 +731,43 @@ msgstr "Zbieranie Danych" #: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:48 msgctxt "@action:button" -msgid "Dismiss" -msgstr "Anuluj" +msgid "Allow" +msgstr "Zezwól" + +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:49 +msgctxt "@action:tooltip" +msgid "Allow Cura to send anonymized usage statistics to help prioritize future improvements to Cura. Some of your preferences and settings are sent, the Cura version and a hash of the models you're slicing." +msgstr "Zezwól Cura na wysyłanie anonimowych danych statystycznych, aby pomóc w wyborze przyszłych usprawnień Cura. Część twoich ustawień i preferencji jest wysyłana, a także wersja Cury i kod modelu który tniesz." + +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:50 +msgctxt "@action:button" +msgid "Disable" +msgstr "Wyłącz" + +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:51 +msgctxt "@action:tooltip" +msgid "Don't allow Cura to send anonymized usage statistics. You can enable it again in the preferences." +msgstr "Nie zezwalaj Cura na wysyłanie anonimowych danych statystycznych. Możesz to włączyć ponownie w preferencjach." #: /home/ruben/Projects/Cura/plugins/LegacyProfileReader/__init__.py:14 msgctxt "@item:inlistbox" msgid "Cura 15.04 profiles" msgstr "Profile Cura 15.04 " +#: /home/ruben/Projects/Cura/plugins/CuraBlenderPlugin/__init__.py:15 +msgctxt "@item:inlistbox" +msgid "Blender file" +msgstr "Plik Blender" + +#: /home/ruben/Projects/Cura/plugins/CuraBlenderPlugin/CadIntegrationUtils/CommonReader.py:199 +msgctxt "@info:status" +msgid "" +"Could not export using \"{}\" quality!\n" +"Felt back to \"{}\"." +msgstr "" +"Nie można wyeksportować używając \"{}\" jakości!\n" +"Powrócono do \"{}\"." + #: /home/ruben/Projects/Cura/plugins/GCodeProfileReader/__init__.py:14 #: /home/ruben/Projects/Cura/plugins/GCodeReader/__init__.py:14 msgctxt "@item:inlistbox" @@ -708,49 +799,49 @@ msgctxt "@item:inlistbox" msgid "GIF Image" msgstr "Obraz GIF" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:269 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:299 msgctxt "@info:status" msgid "Unable to slice with the current material as it is incompatible with the selected machine or configuration." msgstr "Nie można pociąć z obecnym materiałem, ponieważ nie jest on kompatybilny z wybraną maszyną lub konfiguracją." -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:269 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:297 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:319 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:299 #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:327 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:336 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:349 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:357 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:366 msgctxt "@info:title" msgid "Unable to slice" msgstr "Nie można pociąć" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:296 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:326 #, python-brace-format msgctxt "@info:status" msgid "Unable to slice with the current settings. The following settings have errors: {0}" msgstr "Nie można pociąć z bieżącymi ustawieniami. Następujące ustawienia mają błędy: {0}" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:318 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:348 #, python-brace-format msgctxt "@info:status" msgid "Unable to slice due to some per-model settings. The following settings have errors on one or more models: {error_labels}" msgstr "Nie można pokroić przez ustawienia osobne dla modelu. Następujące ustawienia mają błędy w jednym lub więcej modeli: {error_labels}" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:326 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:356 msgctxt "@info:status" msgid "Unable to slice because the prime tower or prime position(s) are invalid." msgstr "Nie można pociąć, ponieważ wieża czyszcząca lub jej pozycja(e) są niewłaściwe." -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:335 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:365 msgctxt "@info:status" msgid "Nothing to slice because none of the models fit the build volume. Please scale or rotate models to fit." msgstr "Nic do pocięcia, ponieważ żaden z modeli nie pasuje do obszaru roboczego. Proszę o przeskalowanie lub obrócenie modelu, żeby pasował." #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:50 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:239 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:242 msgctxt "@info:status" msgid "Processing Layers" msgstr "Przetwarzanie warstw" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:239 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:242 msgctxt "@info:title" msgid "Information" msgstr "Informacja" @@ -787,14 +878,14 @@ msgstr "Nie udało się skopiować plików pluginu Siemens NX. Proszę sprawdź msgid "Failed to install Siemens NX plugin. Could not set environment variable UGII_USER_DIR for Siemens NX." msgstr "Nie udało się zainstalować pluginu Siemens NX. Nie można ustawić zmiennej środowiskowej UGII_USER_DIR dla Siemens NX." -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:167 -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:585 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:165 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:590 msgctxt "@title:tab" msgid "Recommended" msgstr "Zalecane" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:169 -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:590 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:167 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:595 msgctxt "@title:tab" msgid "Custom" msgstr "Niestandardowe" @@ -805,24 +896,24 @@ msgctxt "@item:inlistbox" msgid "3MF File" msgstr "Plik 3MF" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:126 -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1142 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:159 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1185 msgctxt "@label" msgid "Nozzle" msgstr "Dysza" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:164 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:152 #, python-brace-format msgctxt "@info:status" msgid "Failed to get plugin ID from {0}" msgstr "Nie udało się uzyskać ID wtyczki z {0}" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:165 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:153 msgctxt "@info:tile" msgid "Warning" msgstr "Ostrzeżenie" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:203 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:191 msgctxt "@window:title" msgid "Plugin browser" msgstr "Przeglądarka wtyczek" @@ -837,18 +928,18 @@ msgctxt "@item:inlistbox" msgid "G File" msgstr "Plik G-code" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:314 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:321 msgctxt "@info:status" msgid "Parsing G-code" msgstr "Analizowanie G-code" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:316 -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:426 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:323 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:464 msgctxt "@info:title" msgid "G-code Details" msgstr "Szczegóły G-code" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:424 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:462 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." @@ -859,6 +950,16 @@ 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:17 +msgctxt "@item:inlistbox" +msgid "Profile Assistant" +msgstr "Asystent Profilu" + #: /home/ruben/Projects/Cura/plugins/3MFWriter/__init__.py:30 msgctxt "@item:inlistbox" msgid "3MF file" @@ -890,142 +991,116 @@ msgctxt "@action" msgid "Level build plate" msgstr "Wypoziomuj stół" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:89 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:98 msgctxt "@tooltip" msgid "Outer Wall" msgstr "Zewnętrzna ściana" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:90 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:99 msgctxt "@tooltip" msgid "Inner Walls" msgstr "Ściany wewnętrzne" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:91 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:100 msgctxt "@tooltip" msgid "Skin" msgstr "Skin" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:92 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:101 msgctxt "@tooltip" msgid "Infill" msgstr "Wypełnienie" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:93 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:102 msgctxt "@tooltip" msgid "Support Infill" msgstr "Wypełnienie podpór" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:94 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:103 msgctxt "@tooltip" msgid "Support Interface" msgstr "Łączenie podpory" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:95 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:104 msgctxt "@tooltip" msgid "Support" msgstr "Podpory " -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:96 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:105 msgctxt "@tooltip" msgid "Skirt" msgstr "Obwódka" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:97 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:106 msgctxt "@tooltip" msgid "Travel" msgstr "Ruch jałowy" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:98 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:107 msgctxt "@tooltip" msgid "Retractions" msgstr "Retrakcja" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:99 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:108 msgctxt "@tooltip" msgid "Other" msgstr "Inny" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:199 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:231 msgctxt "@label unknown material" msgid "Unknown" msgstr "Nieznany" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:284 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:318 #, python-brace-format msgctxt "@label" msgid "Pre-sliced file {0}" msgstr "Plik pocięty wcześniej {0}" -#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:469 +#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:440 msgctxt "@item:material" msgid "No material loaded" msgstr "Nie załadowano materiału" -#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:476 +#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:447 msgctxt "@item:material" msgid "Unknown material" msgstr "Nieznany materiał" -#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:30 -msgctxt "@info:status" -msgid "Finding new location for objects" -msgstr "Znajdowanie nowej lokalizacji obiektów" - -#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:34 -msgctxt "@info:title" -msgid "Finding Location" -msgstr "Szukanie Lokalizacji" - -#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:89 -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:83 -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/ArrangeObjectsJob.py:90 -msgctxt "@info:title" -msgid "Can't Find Location" -msgstr "Nie można Znaleźć Lokalizacji" - -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:431 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:113 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:437 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:120 msgctxt "@title:window" msgid "File Already Exists" msgstr "Plik już istnieje" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:432 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:114 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:438 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:121 #, 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:815 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:872 msgctxt "@label" msgid "Custom" msgstr "Niestandardowy" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:819 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:876 msgctxt "@label" msgid "Custom Material" msgstr "Niestandardowy materiał" -#: /home/ruben/Projects/Cura/cura/Settings/ExtrudersModel.py:182 -msgctxt "@menuitem" -msgid "Global" -msgstr "Globalny" - -#: /home/ruben/Projects/Cura/cura/Settings/ExtrudersModel.py:229 +#: /home/ruben/Projects/Cura/cura/Settings/ExtrudersModel.py:205 msgctxt "@menuitem" msgid "Not overridden" msgstr "Nie zastąpione" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:117 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:124 msgctxt "@info:status" msgid "The selected material is incompatible with the selected machine or configuration." msgstr "Wybrany materiał jest niezgodny z wybranym urządzeniem lub konfiguracją." -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:118 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:125 #: /home/ruben/Projects/Cura/cura/Settings/MaterialManager.py:24 msgctxt "@info:title" msgid "Incompatible Material" @@ -1046,67 +1121,89 @@ msgctxt "@action" msgid "Undo changing the material diameter." msgstr "Cofnij zmianę średnicy materiału." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:144 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:151 #, 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:151 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:158 #, 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:156 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:163 #, 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:157 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:164 msgctxt "@info:title" msgid "Export succeeded" msgstr "Eksport udany" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:183 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:205 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:214 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:248 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:190 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:211 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:271 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to import profile from {0}: {1}" msgstr "Nie udało się zaimportować profilu z {0}: {1}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:216 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:252 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:230 +#, python-brace-format +msgctxt "@info:status Don't translate the XML tags or !" +msgid "This profile {0} contains incorrect data, could not import it." +msgstr "Ten profil {0} zawiera błędne dane, nie można go zaimportować." + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:240 +#, python-brace-format +msgctxt "@info:status Don't translate the XML tags or !" +msgid "The machine defined in profile {0} doesn't match with your current machine, could not import it." +msgstr "Maszyna zdefiniowana w profilu {0} nie zgadza się z obecnie wybraną maszyną, nie można zaimportować." + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:274 #, python-brace-format msgctxt "@info:status" msgid "Successfully imported profile {0}" msgstr "Profil zaimportowany {0}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:255 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:277 +#, 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:280 #, 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:274 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:298 msgctxt "@label" msgid "Custom profile" msgstr "Niestandardowy profil" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:285 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:313 msgctxt "@info:status" msgid "Profile is missing a quality type." msgstr "Profilowi brakuje typu jakości." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:321 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:349 #, python-brace-format msgctxt "@info:status" msgid "Could not find a quality type {0} for the current configuration." msgstr "Nie można znaleźć typu jakości {0} dla bieżącej konfiguracji." +#: /home/ruben/Projects/Cura/cura/ObjectsModel.py:46 +#, python-brace-format +msgctxt "@label" +msgid "Group #{group_nr}" +msgstr "Grupa #{group_nr}" + #: /home/ruben/Projects/Cura/cura/BuildVolume.py:100 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." @@ -1117,145 +1214,170 @@ msgctxt "@info:title" msgid "Build Volume" msgstr "Obszar Roboczy" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:34 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:25 msgctxt "@info:status" msgid "Multiplying and placing objects" msgstr "Zwielokrotnienie i umieszczanie przedmiotów" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:35 -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:83 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:26 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:78 msgctxt "@info:title" msgid "Placing Object" msgstr "Rozmieszczenie Obiektów" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:80 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:78 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:88 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:152 +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/Arranging/ArrangeObjectsJob.py:29 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:64 +msgctxt "@info:status" +msgid "Finding new location for objects" +msgstr "Znajdowanie nowej lokalizacji obiektów" + +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:33 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:68 +msgctxt "@info:title" +msgid "Finding Location" +msgstr "Szukanie Lokalizacji" + +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:89 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:153 +msgctxt "@info:title" +msgid "Can't Find Location" +msgstr "Nie można Znaleźć Lokalizacji" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:81 msgctxt "@title:window" msgid "Crash Report" -msgstr "Raport awarii" +msgstr "Raport Błędu" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:93 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:94 msgctxt "@label crash message" msgid "" -"

      A fatal exception has occurred. Please send us this Crash Report to fix the problem

      \n" +"

      A fatal error has occurred. 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 "" -"

      Wystąpił fatalny błąd. Proszę wyślij do nas ten Raport Błędu, abyśmy mogli naprawić błąd

      \n" -"

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

      \n" +"

      Wystąpił błąd krytyczny. Proszę wysłać do nas ten Raport Błędu, aby rozwiązać ten problem

      \n" +"

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

      \n" " " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:101 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:102 msgctxt "@title:groupbox" msgid "System information" msgstr "Informacje o systemie" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:109 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:110 msgctxt "@label unknown version of Cura" msgid "Unknown" msgstr "Nieznany" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:111 -#, python-brace-format -msgctxt "@label Cura version" -msgid "Cura version: {version}
      " -msgstr "Wersja Cura: {version}
      " - #: /home/ruben/Projects/Cura/cura/CrashHandler.py:112 -#, python-brace-format -msgctxt "@label Platform" -msgid "Platform: {platform}
      " -msgstr "Platforma: {platform}
      " +msgctxt "@label Cura version number" +msgid "Cura version" +msgstr "Wersja Cura" #: /home/ruben/Projects/Cura/cura/CrashHandler.py:113 -#, python-brace-format -msgctxt "@label Qt version" -msgid "Qt version: {qt}
      " -msgstr "Wersja Qt: {qt}
      " +msgctxt "@label Type of platform" +msgid "Platform" +msgstr "Platforma" #: /home/ruben/Projects/Cura/cura/CrashHandler.py:114 -#, python-brace-format -msgctxt "@label PyQt version" -msgid "PyQt version: {pyqt}
      " -msgstr "Wersja PyQt: {pyqt}
      " +msgctxt "@label" +msgid "Qt version" +msgstr "Wersja Qt" #: /home/ruben/Projects/Cura/cura/CrashHandler.py:115 -#, python-brace-format -msgctxt "@label OpenGL" -msgid "OpenGL: {opengl}
      " -msgstr "OpenGL: {opengl}
      " +msgctxt "@label" +msgid "PyQt version" +msgstr "Wersja PyQt" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:130 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:116 +msgctxt "@label OpenGL version" +msgid "OpenGL" +msgstr "OpenGL" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:133 +msgctxt "@label" +msgid "not yet initialised
      " +msgstr "jeszcze nie uruchomiono
      " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:136 #, python-brace-format msgctxt "@label OpenGL version" msgid "
    • OpenGL Version: {version}
    • " msgstr "
    • Wersja OpenGL: {version}
    • " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:131 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:137 #, python-brace-format msgctxt "@label OpenGL vendor" msgid "
    • OpenGL Vendor: {vendor}
    • " msgstr "
    • Wydawca OpenGL: {vendor}
    • " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:132 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:138 #, python-brace-format msgctxt "@label OpenGL renderer" msgid "
    • OpenGL Renderer: {renderer}
    • " msgstr "
    • OpenGL Renderer: {renderer}
    • " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:141 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:147 msgctxt "@title:groupbox" -msgid "Exception traceback" -msgstr "Śledzenie błędów" +msgid "Error traceback" +msgstr "Śledzenie błedu" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:208 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:214 msgctxt "@title:groupbox" msgid "Logs" msgstr "Logi" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:231 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:237 msgctxt "@title:groupbox" msgid "User description" msgstr "Opis użytkownika" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:246 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:252 msgctxt "@action:button" msgid "Send report" msgstr "Wyślij raport" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:256 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:274 msgctxt "@info:progress" msgid "Loading machines..." msgstr "Ładowanie drukarek..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:661 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:660 msgctxt "@info:progress" msgid "Setting up scene..." msgstr "Ustawianie sceny ..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:703 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:702 msgctxt "@info:progress" msgid "Loading interface..." msgstr "Ładowanie interfejsu ..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:874 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:899 #, 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:1348 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1417 #, 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:1357 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1426 #, 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:1416 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1495 msgctxt "@info:status" msgid "The selected model was too small to load." msgstr "Wybrany model był zbyta mały do załadowania." @@ -1284,12 +1406,11 @@ msgstr "X (Szerokość)" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:119 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:129 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:235 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:288 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:300 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:391 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:401 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:413 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:840 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:383 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:394 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:412 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:424 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:849 msgctxt "@label" msgid "mm" msgstr "mm" @@ -1379,68 +1500,67 @@ msgctxt "@tooltip" msgid "The height difference between the tip of the nozzle and the gantry system (X and Y axes). Used to prevent collisions between previous prints and the gantry when printing \"One at a Time\"." msgstr "Różnica w wysokości pomiędzy końcówką dyszy i systemem suwnym (osie X i Y). Używane do unikania kolizji z poprzednimi wydrukami podczas drukowania \"Jeden na Raz\"." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:255 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:254 msgctxt "@label" msgid "Number of Extruders" msgstr "Liczba ekstruderów" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:289 -msgctxt "@tooltip" -msgid "The nominal diameter of filament supported by the printer. The exact diameter will be overridden by the material and/or the profile." -msgstr "Nominalna średnica filamentu wspierana przez drukarkę. Dokładna średnica będzie nadpisana przez materiał i/lub profil." - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:291 -msgctxt "@label" -msgid "Material diameter" -msgstr "Średnica materiału" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:299 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:390 -msgctxt "@label" -msgid "Nozzle size" -msgstr "Rozmiar dyszy" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:317 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:310 msgctxt "@label" msgid "Start Gcode" msgstr "Początk. Gcode" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:327 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:320 msgctxt "@tooltip" msgid "Gcode commands to be executed at the very start." msgstr "Komendy Gcode wykonywane na samym początku." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:336 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:329 msgctxt "@label" msgid "End Gcode" msgstr "Końcowy Gcode" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:346 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:339 msgctxt "@tooltip" msgid "Gcode commands to be executed at the very end." msgstr "Komendy Gcode wykonywane na samym początku." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:378 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:370 msgctxt "@label" msgid "Nozzle Settings" msgstr "Ustawienia dyszy" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:400 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:382 +msgctxt "@label" +msgid "Nozzle size" +msgstr "Rozmiar dyszy" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:393 +msgctxt "@label" +msgid "Compatible material diameter" +msgstr "Kompatybilna średnica materiału" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:395 +msgctxt "@tooltip" +msgid "The nominal diameter of filament supported by the printer. The exact diameter will be overridden by the material and/or the profile." +msgstr "Nominalna średnica filamentu wspierana przez drukarkę. Dokładna średnica będzie nadpisana przez materiał i/lub profil." + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:411 msgctxt "@label" msgid "Nozzle offset X" msgstr "Korekcja dyszy X" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:412 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:423 msgctxt "@label" msgid "Nozzle offset Y" msgstr "Korekcja dyszy Y" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:433 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:444 msgctxt "@label" msgid "Extruder Start Gcode" msgstr "Początkowy Gcode ekstrudera" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:451 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:462 msgctxt "@label" msgid "Extruder End Gcode" msgstr "Końcowy Gcode ekstrudera" @@ -1453,8 +1573,9 @@ msgstr "Dziennik" #: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.qml:37 #: /home/ruben/Projects/Cura/plugins/USBPrinting/FirmwareUpdateWindow.qml:107 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:55 -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:445 -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:357 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:306 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:456 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:492 #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:80 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:123 #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:147 @@ -1538,7 +1659,7 @@ msgstr "Edycja" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:96 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:50 #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:95 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:190 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:171 msgctxt "@action:button" msgid "Remove" msgstr "Usunąć" @@ -1560,12 +1681,12 @@ msgid "Type" msgstr "Rodzaj" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:233 -msgctxt "@label" +msgctxt "@label Printer name" msgid "Ultimaker 3" msgstr "Ultimaker 3" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:236 -msgctxt "@label" +msgctxt "@label Printer name" msgid "Ultimaker 3 Extended" msgstr "Ultimaker 3 Extended" @@ -1611,8 +1732,6 @@ msgid "Enter the IP address or hostname of your printer on the network." msgstr "Wpisz adres IP lub nazwę hosta drukarki w sieci." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:379 -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:92 -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:88 #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:181 msgctxt "@action:button" msgid "OK" @@ -1633,6 +1752,11 @@ msgctxt "@label: arg 1 is group name" msgid "%1 is not set up to host a group of connected Ultimaker 3 printers" msgstr "%1 nie została ustawiona do hostowania grupy podłączonych drukarek Ultimaker 3" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterMonitorItem.qml:55 +msgctxt "@label link to connect manager" +msgid "Add/Remove printers" +msgstr "Dodaj/Usuń drukarki" + #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/OpenPanelButton.qml:14 msgctxt "@info:tooltip" msgid "Opens the print jobs page with your default web browser." @@ -1663,11 +1787,16 @@ msgid "Available" msgstr "Dostępna" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:43 -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:101 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:100 msgctxt "@label:MonitorStatus" msgid "Lost connection with the printer" msgstr "Utracone połączenie z drukarką" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:47 +msgctxt "@label Printer status" +msgid "Unknown" +msgstr "Nieznany" + #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:257 msgctxt "@label:status" msgid "Disabled" @@ -1759,138 +1888,252 @@ msgctxt "@action:button" msgid "Activate Configuration" msgstr "Uaktywnij konfigurację" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:20 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:21 msgctxt "@title:window" -msgid "Cura SolidWorks Plugin Configuration" -msgstr "Konfiguracja Wtyczki Cura SolidWorks" +msgid "SolidWorks: Export wizard" +msgstr "SolidWorks: Kreator eksportu" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:44 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:45 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:140 msgctxt "@action:label" -msgid "Default quality of the exported STL:" -msgstr "Domyślna jakość eksportowanego STL:" +msgid "Quality:" +msgstr "Jakość:" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:79 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:78 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:179 msgctxt "@option:curaSolidworksStlQuality" -msgid "Always ask" -msgstr "Zawsze pytaj" +msgid "Fine (3D-printing)" +msgstr "Dobra (druk 3D)" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:80 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:79 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:180 msgctxt "@option:curaSolidworksStlQuality" -msgid "Always use Fine quality" -msgstr "Zawsze używaj Dobrej jakości" +msgid "Coarse (3D-printing)" +msgstr "Słaba (druk 3D)" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:81 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:80 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:181 msgctxt "@option:curaSolidworksStlQuality" -msgid "Always use Coarse quality" -msgstr "Zawsze używaj Słabej jakości" +msgid "Fine (SolidWorks)" +msgstr "Dobra (SolidWorks)" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:20 -msgctxt "@title:window" -msgid "Import SolidWorks File as STL..." -msgstr "Importuj Plik SolidWorks jako STL..." - -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:43 -msgctxt "@info:tooltip" -msgid "Quality of the Exported STL" -msgstr "Jakość Eksportowanego STL" - -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:48 -msgctxt "@action:label" -msgid "Quality" -msgstr "Jakość" - -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:62 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:81 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:182 msgctxt "@option:curaSolidworksStlQuality" -msgid "Coarse" -msgstr "Słaba" +msgid "Coarse (SolidWorks)" +msgstr "Słaba (Solidworks)" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:63 -msgctxt "@option:curaSolidworksStlQuality" -msgid "Fine" -msgstr "Dobra" - -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:78 -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:82 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:94 msgctxt "@text:window" -msgid "Remember my choice" -msgstr "Zapamiętaj mój wybór" +msgid "Show this dialog again" +msgstr "Pokaż to okno ponownie" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:81 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:104 +msgctxt "@action:button" +msgid "Continue" +msgstr "Kontynuuj" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:116 +msgctxt "@action:button" +msgid "Abort" +msgstr "Przerwij" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:21 +msgctxt "@title:window" +msgid "How to install Cura SolidWorks macro" +msgstr "Jak zainstalować skróty SolidWorks dla Cura" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:62 +msgctxt "@description:label" +msgid "Steps:" +msgstr "Kroki:" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:140 +msgctxt "@action:button" +msgid "" +"Open the directory\n" +"with macro and icon" +msgstr "" +"Otwórz folder\n" +"ze skrótem i ikoną" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:160 +msgctxt "@description:label" +msgid "Instructions:" +msgstr "Instrukcje:" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:202 +msgctxt "@action:playpause" +msgid "Play" +msgstr "Odtwórz" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:206 +msgctxt "@action:playpause" +msgid "Pause" +msgstr "Zatrzymaj" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:268 +msgctxt "@action:button" +msgid "Previous Step" +msgstr "Poprzedni Krok" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:283 +msgctxt "@action:button" +msgid "Done" +msgstr "Zrobione" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:287 +msgctxt "@action:button" +msgid "Next Step" +msgstr "Następny Krok" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:21 +msgctxt "@title:window" +msgid "SolidWorks plugin: Configuration" +msgstr "Plugin SolidWorks: Konfiguracja" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:39 +msgctxt "@title:tab" +msgid "Conversion settings" +msgstr "Konwersja ustawień" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:66 +msgctxt "@label" +msgid "First choice:" +msgstr "Pierwszy wybór:" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:86 +msgctxt "@text:menu" +msgid "Latest installed version (Recommended)" +msgstr "Ostatnio zainstalowana wersja (Rekomendowana)" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:95 +msgctxt "@text:menu" +msgid "Default version" +msgstr "Domyślna wersja" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:193 +msgctxt "@label" +msgid "Show wizard before opening SolidWorks files" +msgstr "Pokaż konfigurator przed otworzeniem plików SolidWorks" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:203 +msgctxt "@label" +msgid "Automatically rotate opened file into normed orientation" +msgstr "Automatycznie obracaj otworzone pliki do unormowanej pozycji" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:210 +msgctxt "@title:tab" +msgid "Installation(s)" +msgstr "Instalacja(-e)" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:284 +msgctxt "@label" +msgid "COM service found" +msgstr "Usługa COM znaleziona" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:295 +msgctxt "@label" +msgid "Executable found" +msgstr "Znaleziono plik wykonywalny" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:306 +msgctxt "@label" +msgid "COM starting" +msgstr "Uruchamianie COM" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:317 +msgctxt "@label" +msgid "Revision number" +msgstr "Numer wydania" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:328 +msgctxt "@label" +msgid "Functions available" +msgstr "Dostępne funkcje" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:341 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:264 +msgctxt "@action:button" +msgid "Save" +msgstr "Zapisz" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:117 msgctxt "@label" msgid "Color scheme" msgstr "Schemat kolorów" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:96 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:132 msgctxt "@label:listbox" msgid "Material Color" msgstr "Kolor materiału" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:100 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:136 msgctxt "@label:listbox" msgid "Line Type" msgstr "Rodzaj linii" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:104 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:140 msgctxt "@label:listbox" msgid "Feedrate" msgstr "Szybkość Posuwu" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:108 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:144 msgctxt "@label:listbox" msgid "Layer thickness" msgstr "Grubość warstwy" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:148 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:185 msgctxt "@label" msgid "Compatibility Mode" msgstr "Tryb zgodności" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:230 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:264 msgctxt "@label" msgid "Show Travels" msgstr "Pokaż ruch jałowy" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:236 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:270 msgctxt "@label" msgid "Show Helpers" msgstr "Pokaż pomocnik" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:242 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:276 msgctxt "@label" msgid "Show Shell" msgstr "Pokaż powłokę" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:248 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:282 msgctxt "@label" msgid "Show Infill" msgstr "Pokaż wypełnienie" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:297 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:330 msgctxt "@label" msgid "Only Show Top Layers" msgstr "Pokaż tylko najwyższe warstwy" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:306 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:339 msgctxt "@label" msgid "Show 5 Detailed Layers On Top" msgstr "Pokaż 5 Szczegółowych Warstw" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:317 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:350 msgctxt "@label" msgid "Top / Bottom" msgstr "Góra/ Dół" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:321 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:354 msgctxt "@label" msgid "Inner Wall" msgstr "Wewnętrzna ściana" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:378 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:410 msgctxt "@label" msgid "min" msgstr "min" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:420 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:452 msgctxt "@label" msgid "max" msgstr "max" @@ -1915,7 +2158,7 @@ msgctxt "@label" msgid "Settings" msgstr "Ustawienia" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:455 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:466 msgctxt "@info:tooltip" msgid "Change active post-processing scripts" msgstr "Zmień aktywne skrypty post-processingu" @@ -1990,23 +2233,53 @@ msgctxt "@action:label" msgid "Smoothing" msgstr "Wygładzanie" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:208 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:38 +msgctxt "@label" +msgid "Mesh Type" +msgstr "Typ siatki" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:69 +msgctxt "@label" +msgid "Normal model" +msgstr "Normalny model" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:76 +msgctxt "@label" +msgid "Print as support" +msgstr "Drukuj jako podpora" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:84 +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:92 +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:100 +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:333 msgctxt "@action:button" msgid "Select settings" msgstr "Wybierz ustawienia" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:248 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:375 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:272 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:402 #: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:91 msgctxt "@label:textbox" msgid "Filter..." msgstr "Filtr..." -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:296 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:426 msgctxt "@label:checkbox" msgid "Show all" msgstr "Pokaż wszystko" @@ -2368,66 +2641,66 @@ msgctxt "@label" msgid "Everything is in order! You're done with your CheckUp." msgstr "Wszystko w porządku! Skończono sprawdzenie." -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:88 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:87 msgctxt "@label:MonitorStatus" msgid "Not connected to a printer" msgstr "Nie podłączono do drukarki" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:90 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:89 msgctxt "@label:MonitorStatus" msgid "Printer does not accept commands" msgstr "Drukarka nie akceptuje poleceń" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:96 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:95 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:194 msgctxt "@label:MonitorStatus" msgid "In maintenance. Please check the printer" msgstr "W naprawie. Sprawdź drukarkę" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:103 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:102 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:184 msgctxt "@label:MonitorStatus" msgid "Printing..." msgstr "Drukowanie..." -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:106 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:105 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:186 msgctxt "@label:MonitorStatus" msgid "Paused" msgstr "Wstrzymano" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:109 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:108 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:188 msgctxt "@label:MonitorStatus" msgid "Preparing..." msgstr "Przygotowywanie ..." -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:111 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:110 msgctxt "@label:MonitorStatus" msgid "Please remove the print" msgstr "Usuń wydruk" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:237 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:241 msgctxt "@label:" msgid "Resume" msgstr "Wznów" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:241 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:245 msgctxt "@label:" msgid "Pause" msgstr "Wstrzymaj" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:270 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:274 msgctxt "@label:" msgid "Abort Print" msgstr "Przerwij wydruk" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:280 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:284 msgctxt "@window:title" msgid "Abort print" msgstr "Przerwij wydruk" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:282 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:286 msgctxt "@label" msgid "Are you sure you want to abort the print?" msgstr "Czy na pewno chcesz przerwać drukowanie?" @@ -2462,19 +2735,19 @@ msgid "Customized" msgstr "Dostosowane" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:157 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:593 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:595 msgctxt "@option:discardOrKeep" msgid "Always ask me this" msgstr "Zawsze pytaj o to" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:158 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:594 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:596 msgctxt "@option:discardOrKeep" msgid "Discard and never ask again" msgstr "Odrzuć i nigdy nie pytaj" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:159 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:595 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:597 msgctxt "@option:discardOrKeep" msgid "Keep and never ask again" msgstr "Zachowaj i nigdy nie pytaj" @@ -2509,72 +2782,72 @@ msgctxt "@label" msgid "Brand" msgstr "Marka" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:92 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:88 msgctxt "@label" msgid "Material Type" msgstr "Typ Materiału" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:105 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:97 msgctxt "@label" msgid "Color" msgstr "Kolor" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:139 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:141 msgctxt "@label" msgid "Properties" msgstr "Właściwości" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:141 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:143 msgctxt "@label" msgid "Density" msgstr "Gęstość" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:156 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:158 msgctxt "@label" msgid "Diameter" msgstr "Średnica" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:185 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:187 msgctxt "@label" msgid "Filament Cost" msgstr "Koszt Filamentu" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:201 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:203 msgctxt "@label" msgid "Filament weight" msgstr "Waga filamentu" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:218 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:220 msgctxt "@label" msgid "Filament length" msgstr "Długość Filamentu" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:227 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:229 msgctxt "@label" msgid "Cost per Meter" msgstr "Koszt na metr" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:241 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:243 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/MaterialView.qml:248 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:250 msgctxt "@label" msgid "Unlink Material" msgstr "Odłącz materiał" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:259 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:261 msgctxt "@label" msgid "Description" msgstr "Opis" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:272 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:274 msgctxt "@label" msgid "Adhesion Information" msgstr "Informacje dotyczące przyczepności" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:298 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:300 msgctxt "@label" msgid "Print settings" msgstr "Ustawienia druku" @@ -2615,7 +2888,7 @@ msgid "Unit" msgstr "Jednostka" #: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:14 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:439 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:509 msgctxt "@title:tab" msgid "General" msgstr "Ogólny" @@ -2630,230 +2903,255 @@ msgctxt "@label" msgid "Language:" msgstr "Język:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:205 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:207 msgctxt "@label" msgid "Currency:" msgstr "Waluta:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:219 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:221 msgctxt "@label" msgid "Theme:" msgstr "Motyw:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:279 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:281 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:296 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:298 msgctxt "@info:tooltip" msgid "Slice automatically when changing settings." msgstr "Tnij automatycznie podczas zmiany ustawień." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:304 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:306 msgctxt "@option:check" msgid "Slice automatically" msgstr "Automatyczne Cięcie" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:318 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:320 msgctxt "@label" msgid "Viewport behavior" msgstr "Zachowanie okna edycji" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:326 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:328 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:335 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:337 msgctxt "@option:check" msgid "Display overhang" msgstr "Wyświetl zwis" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:342 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:344 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:347 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:349 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:356 +#: /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:361 +#: /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:370 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:372 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:375 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:377 msgctxt "@action:button" msgid "Zoom toward mouse direction" msgstr "Przybliżaj w kierunku myszy" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:384 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:386 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:389 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:391 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:397 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:399 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:402 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:404 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:414 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:416 msgctxt "@info:tooltip" msgid "Show caution message in gcode reader." msgstr "Pokaż komunikat ostrzegawczy w tekście G-code." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:423 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:425 msgctxt "@option:check" msgid "Caution message in gcode reader" msgstr "Komunikat ostrzegawczy w tekście G-code" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:430 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:432 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:435 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:437 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:451 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:453 msgctxt "@label" msgid "Opening and saving files" msgstr "Otwieranie i zapisywanie plików" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:457 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:459 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:462 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:464 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:473 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:478 msgctxt "@option:check" msgid "Scale extremely small models" msgstr "Skaluj bardzo małe modele" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:485 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:487 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:490 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:492 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:499 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:501 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:503 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:505 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:512 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:514 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:520 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:522 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:533 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:535 msgctxt "@option:openProject" msgid "Always ask" msgstr "Zawsze pytaj" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:534 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:536 msgctxt "@option:openProject" msgid "Always open as a project" msgstr "Zawsze otwieraj jako projekt" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:535 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:537 msgctxt "@option:openProject" msgid "Always import models" msgstr "Zawsze importuj modele" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:571 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:573 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:580 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:582 msgctxt "@label" msgid "Override Profile" msgstr "Nadpisz profil" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:629 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:631 msgctxt "@label" msgid "Privacy" msgstr "Prywatność" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:636 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:638 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:641 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:643 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:651 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:653 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:656 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:658 msgctxt "@option:check" msgid "Send (anonymous) print information" msgstr "Wyślij (anonimowe) informacje o drukowaniu" +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:674 +msgctxt "@label" +msgid "Experimental" +msgstr "Eksperymentalne" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:680 +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:685 +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/GeneralPage.qml:694 +msgctxt "@info:tooltip" +msgid "Should newly loaded models be arranged on the build plate? Used in conjunction with multi build plate (EXPERIMENTAL)" +msgstr "Czy nowo załadowane modele powinny zostać rozłożone na platformie roboczej? Używane w połączeniu z multi platformą roboczą (EKSPERYMENTALNE)" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:699 +msgctxt "@option:check" +msgid "Do not arrange objects on load" +msgstr "Nie układaj obiektów podczas ładowania" + #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:444 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:514 msgctxt "@title:tab" msgid "Printers" msgstr "Drukarki" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:37 #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:51 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:137 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:138 msgctxt "@action:button" msgid "Activate" msgstr "Aktywuj" @@ -2896,7 +3194,7 @@ msgid "Waiting for a printjob" msgstr "Oczekiwanie na zadanie drukowania" #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:448 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:518 msgctxt "@title:tab" msgid "Profiles" msgstr "Profile" @@ -2922,13 +3220,13 @@ msgid "Duplicate" msgstr "Duplikuj" #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:113 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:201 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:182 msgctxt "@action:button" msgid "Import" msgstr "Importuj" #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:119 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:212 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:193 msgctxt "@action:button" msgid "Export" msgstr "Eksportuj" @@ -2994,7 +3292,7 @@ msgid "Export Profile" msgstr "Eksportuj Profil" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:446 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:516 msgctxt "@title:tab" msgid "Materials" msgstr "Materiał" @@ -3009,60 +3307,60 @@ msgctxt "@action:label %1 is printer name" msgid "Printer: %1" msgstr "Drukarka: %1" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:149 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:150 msgctxt "@action:button" msgid "Create" msgstr "Stwórz" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:168 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:160 msgctxt "@action:button" msgid "Duplicate" msgstr "Duplikuj" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:311 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:319 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:298 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:306 msgctxt "@title:window" msgid "Import Material" msgstr "Importuj Materiał" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:320 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:307 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/MaterialsPage.qml:324 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:311 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/MaterialsPage.qml:343 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:358 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:329 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:344 msgctxt "@title:window" msgid "Export Material" msgstr "Eksportuj Materiał" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:362 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:348 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/MaterialsPage.qml:368 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:354 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully exported material to %1" msgstr "Udało się wyeksportować materiał do %1" #: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:18 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:793 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:869 msgctxt "@title:window" msgid "Add Printer" msgstr "Dodaj drukarkę" -#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:185 +#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:194 msgctxt "@label" msgid "Printer Name:" msgstr "Nazwa drukarki:" -#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:208 +#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:217 msgctxt "@action:button" msgid "Add Printer" msgstr "Dodaj drukarkę" @@ -3191,12 +3489,7 @@ msgctxt "@label" msgid "Profile:" msgstr "Profil:" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:66 -msgctxt "@" -msgid "No Profile Available" -msgstr "Brak Dostępnego Profilu" - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:104 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:102 msgctxt "@tooltip" msgid "" "Some setting/override values are different from the values stored in the profile.\n" @@ -3207,37 +3500,37 @@ msgstr "" "\n" "Kliknij, aby otworzyć menedżer profili." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:152 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:150 msgctxt "@label:textbox" msgid "Search..." msgstr "Szukanie..." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:483 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:482 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:498 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:497 msgctxt "@action:menu" msgid "Hide this setting" msgstr "Ukryj tę opcję" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:508 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:507 msgctxt "@action:menu" msgid "Don't show this setting" msgstr "Nie pokazuj tej opcji" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:512 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:511 msgctxt "@action:menu" msgid "Keep this setting visible" msgstr "Pozostaw tę opcję widoczną" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:531 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:530 msgctxt "@action:menu" msgid "Configure setting visiblity..." msgstr "Skonfiguruj widoczność ustawień..." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingCategory.qml:123 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingCategory.qml:250 msgctxt "@label" msgid "" "Some hidden settings use values different from their normal calculated value.\n" @@ -3248,27 +3541,27 @@ msgstr "" "\n" "Kliknij, aby te ustawienia były widoczne." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:62 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:61 msgctxt "@label Header for list of settings." msgid "Affects" msgstr "Wpływać" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:67 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:66 msgctxt "@label Header for list of settings." msgid "Affected By" msgstr "Pod wpływem" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:157 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:156 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 zawsze dzielone między wszystkie ekstrudery. Zmiana jego wartości tutaj spowoduje zmianę dla wszystkich ekstruderów" +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:160 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:159 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:186 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:190 msgctxt "@label" msgid "" "This setting has a value that is different from the profile.\n" @@ -3279,7 +3572,7 @@ msgstr "" "\n" "Kliknij, aby przywrócić wartość z profilu." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:284 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:288 msgctxt "@label" msgid "" "This setting is normally calculated, but it currently has an absolute value set.\n" @@ -3290,12 +3583,12 @@ msgstr "" "\n" "Kliknij, aby przywrócić wartość obliczoną." -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:120 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:128 msgctxt "@label:listbox" msgid "Print Setup" msgstr "Ustawienia druku" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:120 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:128 msgctxt "@label:listbox" msgid "" "Print Setup disabled\n" @@ -3304,59 +3597,59 @@ msgstr "" "Konfiguracja wydruku jest wyłączona\n" "Pliki G-code nie mogą zostać zmodyfikowane" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:336 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:342 msgctxt "@label Hours and minutes" msgid "00h 00min" msgstr "00godz. 00min." -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:354 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:359 msgctxt "@tooltip" -msgid "Time specification
      " -msgstr "Szacowany czas
      " +msgid "Time specification" +msgstr "Specyfikacja czasu" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:429 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:441 msgctxt "@label" msgid "Cost specification" msgstr "Szacowanie kosztów" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:434 -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:445 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:446 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:455 msgctxt "@label m for meter" msgid "%1m" msgstr "%1m" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:435 -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:446 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:447 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:456 msgctxt "@label g for grams" msgid "%1g" msgstr "%1g" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:444 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:454 msgctxt "@label" msgid "Total:" msgstr "Razem:" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:498 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:504 msgctxt "@label Print estimates: m for meters, g for grams, %4 is currency and %3 is print cost" msgid "%1m / ~ %2g / ~ %4 %3" msgstr "%1m / ~ %2g / ~ %4 %3" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:503 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:509 msgctxt "@label Print estimates: m for meters, g for grams" msgid "%1m / ~ %2g" msgstr "%1m / ~ %2g" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:586 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:591 msgctxt "@tooltip" msgid "Recommended Print Setup

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

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

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

      Drukowanie z precyzyjną kontrolą nad każdym elementem procesu cięcia." -#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:49 +#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:50 msgctxt "@title:menuitem %1 is the automatically selected material" msgid "Automatic: %1" msgstr "Automatyczny: %1" @@ -3366,6 +3659,16 @@ msgctxt "@title:menu menubar:toplevel" msgid "&View" msgstr "&Widok" +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:37 +msgctxt "@action:inmenu menubar:view" +msgid "&Camera position" +msgstr "&Pozycja kamery" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:52 +msgctxt "@action:inmenu menubar:view" +msgid "&Build plate" +msgstr "&Pole robocze" + #: /home/ruben/Projects/Cura/resources/qml/Menus/NozzleMenu.qml:40 msgctxt "@title:menuitem %1 is the nozzle currently loaded in the printer" msgid "Automatic: %1" @@ -3378,14 +3681,14 @@ msgid_plural "Print Selected Models With:" msgstr[0] "Wydrukuj wybrany model z:" msgstr[1] "Wydrukuj wybrane modele z:" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ContextMenu.qml:83 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ContextMenu.qml:114 msgctxt "@title:window" msgid "Multiply Selected Model" msgid_plural "Multiply Selected Models" msgstr[0] "Zduplikuj wybrany model" msgstr[1] "Zduplikuj wybrane modele" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ContextMenu.qml:108 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ContextMenu.qml:139 msgctxt "@label" msgid "Number of Copies" msgstr "Liczba kopii" @@ -3401,7 +3704,7 @@ msgid "No printer connected" msgstr "Nie podłączono drukarki" #: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:90 -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:138 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:139 msgctxt "@label" msgid "Extruder" msgstr "Ekstruder" @@ -3511,254 +3814,294 @@ msgctxt "@label" msgid "Estimated time left" msgstr "Szacowany czas pozostały" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:72 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:79 msgctxt "@action:inmenu" msgid "Toggle Fu&ll Screen" msgstr "Przełącz tryb pełnoekranowy" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:79 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:86 msgctxt "@action:inmenu menubar:edit" msgid "&Undo" msgstr "&Cofnij" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:89 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:96 msgctxt "@action:inmenu menubar:edit" msgid "&Redo" msgstr "&Ponów" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:99 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:106 msgctxt "@action:inmenu menubar:file" msgid "&Quit" msgstr "&Zamknij" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:107 -msgctxt "@action:inmenu menubar:view" -msgid "&Reset camera position" -msgstr "&Zresetuj pozycję kamery" - #: /home/ruben/Projects/Cura/resources/qml/Actions.qml:114 +msgctxt "@action:inmenu menubar:view" +msgid "&3D View" +msgstr "&Widok 3D" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:121 +msgctxt "@action:inmenu menubar:view" +msgid "&Front View" +msgstr "&Widok z przodu" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:128 +msgctxt "@action:inmenu menubar:view" +msgid "&Top View" +msgstr "&Widok z góry" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:135 +msgctxt "@action:inmenu menubar:view" +msgid "&Left Side View" +msgstr "&Widok z lewej strony" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:142 +msgctxt "@action:inmenu menubar:view" +msgid "&Right Side View" +msgstr "&Widok z prawej strony" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:149 msgctxt "@action:inmenu" msgid "Configure Cura..." msgstr "Konfiguruj Cura..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:121 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:156 msgctxt "@action:inmenu menubar:printer" msgid "&Add Printer..." msgstr "&Dodaj drukarkę..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:127 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:162 msgctxt "@action:inmenu menubar:printer" msgid "Manage Pr&inters..." msgstr "Zarządzaj drukarkami..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:134 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:169 msgctxt "@action:inmenu" msgid "Manage Materials..." msgstr "Zarządzaj materiałami..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:142 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:177 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:150 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:185 msgctxt "@action:inmenu menubar:profile" msgid "&Discard current changes" msgstr "&Odrzuć bieżące zmiany" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:162 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:197 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:168 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:203 msgctxt "@action:inmenu menubar:profile" msgid "Manage Profiles..." msgstr "Zarządzaj profilami..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:175 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:210 msgctxt "@action:inmenu menubar:help" msgid "Show Online &Documentation" msgstr "Pokaż dokumentację internetową" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:183 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:218 msgctxt "@action:inmenu menubar:help" msgid "Report a &Bug" msgstr "Zgłoś błąd" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:191 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:226 msgctxt "@action:inmenu menubar:help" msgid "&About..." msgstr "&O..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:198 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:233 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:208 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:243 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:217 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:252 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:226 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:261 msgctxt "@action:inmenu" msgid "Delete Model" msgstr "Usuń model" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:234 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:269 msgctxt "@action:inmenu" msgid "Ce&nter Model on Platform" msgstr "Wyśrodkuj model na platformie" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:240 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:275 msgctxt "@action:inmenu menubar:edit" msgid "&Group Models" msgstr "&Grupuj modele" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:250 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:295 msgctxt "@action:inmenu menubar:edit" msgid "Ungroup Models" msgstr "Rozgrupuj modele " -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:260 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:305 msgctxt "@action:inmenu menubar:edit" msgid "&Merge Models" msgstr "&Połącz modele" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:270 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:315 msgctxt "@action:inmenu" msgid "&Multiply Model..." msgstr "&Powiel model..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:277 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:322 msgctxt "@action:inmenu menubar:edit" msgid "&Select All Models" msgstr "&Wybierz wszystkie modele" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:287 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:332 msgctxt "@action:inmenu menubar:edit" msgid "&Clear Build Plate" msgstr "&Wyczyść stół" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:297 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:342 msgctxt "@action:inmenu menubar:file" msgid "Re&load All Models" msgstr "Przeładuj wszystkie modele" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:306 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:351 +msgctxt "@action:inmenu menubar:edit" +msgid "Arrange All Models To All Build Plates" +msgstr "Rozłóż Wszystkie Modele na Wszystkie Platformy Robocze." + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:358 msgctxt "@action:inmenu menubar:edit" msgid "Arrange All Models" msgstr "Ułóż wszystkie modele" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:314 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:366 msgctxt "@action:inmenu menubar:edit" msgid "Arrange Selection" msgstr "Wybór ułożenia" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:321 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:373 msgctxt "@action:inmenu menubar:edit" msgid "Reset All Model Positions" msgstr "Zresetuj wszystkie pozycje modelu" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:328 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:380 msgctxt "@action:inmenu menubar:edit" msgid "Reset All Model &Transformations" msgstr "Zresetuj wszystkie przekształcenia modelu" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:335 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:387 msgctxt "@action:inmenu menubar:file" msgid "&Open File(s)..." msgstr "&Otwórz plik(i)..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:343 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:395 msgctxt "@action:inmenu menubar:file" msgid "&New Project..." msgstr "&Nowy projekt..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:350 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:402 msgctxt "@action:inmenu menubar:help" msgid "Show Engine &Log..." msgstr "Pokaż &dziennik silnika..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:358 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:410 msgctxt "@action:inmenu menubar:help" msgid "Show Configuration Folder" msgstr "Pokaż folder konfiguracji" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:365 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:417 msgctxt "@action:menu" msgid "Configure setting visibility..." msgstr "Skonfiguruj widoczność ustawień ..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:372 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:424 msgctxt "@action:menu" msgid "Browse plugins..." msgstr "Przeglądaj wtyczki..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:379 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:431 msgctxt "@action:menu" msgid "Installed plugins..." msgstr "Zainstalowane wtyczki..." -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:28 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:438 +msgctxt "@action:inmenu menubar:view" +msgid "Expand/Collapse Sidebar" +msgstr "Rozłóż/Schowaj Pasek Boczny" + +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:26 msgctxt "@label:PrintjobStatus" msgid "Please load a 3D model" msgstr "Proszę załaduj model 3D" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:34 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:36 msgctxt "@label:PrintjobStatus" msgid "Ready to slice" msgstr "Gotowy do cięcia" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:36 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:38 msgctxt "@label:PrintjobStatus" msgid "Slicing..." msgstr "Cięcie..." -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:38 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:40 msgctxt "@label:PrintjobStatus %1 is target operation" msgid "Ready to %1" msgstr "Gotowy do %1" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:40 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:42 msgctxt "@label:PrintjobStatus" msgid "Unable to Slice" msgstr "Nie można pociąć" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:42 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:44 msgctxt "@label:PrintjobStatus" msgid "Slicing unavailable" msgstr "Cięcie niedostępne" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:162 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:171 +msgctxt "@info:tooltip" +msgid "Slice current printjob" +msgstr "Potnij aktualny wydruk" + +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:171 +msgctxt "@info:tooltip" +msgid "Cancel slicing process" +msgstr "Przerwij proces cięcia" + +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:183 msgctxt "@label:Printjob" msgid "Prepare" msgstr "Przygotuj" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:162 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:183 msgctxt "@label:Printjob" msgid "Cancel" msgstr "Anuluj" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:302 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:317 msgctxt "@info:tooltip" msgid "Select the active output device" msgstr "Wybierz aktywne urządzenie wyjściowe" #: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:19 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:620 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:696 msgctxt "@title:window" msgid "Open file(s)" msgstr "Otwórz plik(i)" @@ -3778,114 +4121,114 @@ msgctxt "@title:window" msgid "Ultimaker Cura" msgstr "Cura Ultimaker" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:81 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:102 msgctxt "@title:menu menubar:toplevel" msgid "&File" msgstr "&Plik" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:98 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:119 msgctxt "@action:inmenu menubar:file" msgid "&Save Selection to File" msgstr "&Zapisz wybór w pliku" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:107 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:128 msgctxt "@title:menu menubar:file" msgid "Save &As..." msgstr "Zapisz &jako..." -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:118 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:139 msgctxt "@title:menu menubar:file" -msgid "Save project" -msgstr "Zapisz projekt" +msgid "Save &Project..." +msgstr "Zapisz &Project..." -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:141 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:162 msgctxt "@title:menu menubar:toplevel" msgid "&Edit" msgstr "&Edytuj" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:158 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:179 msgctxt "@title:menu" msgid "&View" msgstr "&Widok" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:163 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:184 msgctxt "@title:menu" msgid "&Settings" msgstr "&Ustawienia" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:165 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:186 msgctxt "@title:menu menubar:toplevel" msgid "&Printer" msgstr "&Drukarka" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:175 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:187 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:196 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:208 msgctxt "@title:menu" msgid "&Material" msgstr "&Materiał" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:176 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:188 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:197 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:209 msgctxt "@title:menu" msgid "&Profile" msgstr "&Profil" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:180 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:201 msgctxt "@action:inmenu" msgid "Set as Active Extruder" msgstr "Ustaw jako aktywną głowicę" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:198 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:219 msgctxt "@title:menu menubar:toplevel" msgid "E&xtensions" msgstr "&Rozszerzenia" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:232 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:253 msgctxt "@title:menu menubar:toplevel" msgid "P&lugins" msgstr "W&tyczki" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:240 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:261 msgctxt "@title:menu menubar:toplevel" msgid "P&references" msgstr "Preferencje" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:248 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:269 msgctxt "@title:menu menubar:toplevel" msgid "&Help" msgstr "&Pomoc" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:330 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:351 msgctxt "@action:button" msgid "Open File" msgstr "Otwórz plik" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:442 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:512 msgctxt "@title:tab" msgid "Settings" msgstr "Ustawienia" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:478 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:554 msgctxt "@title:window" msgid "New project" msgstr "Nowy projekt" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:479 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:555 msgctxt "@info:question" msgid "Are you sure you want to start a new project? This will clear the build plate and any unsaved settings." msgstr "Czy na pewno chcesz rozpocząć nowy projekt? Spowoduje to wyczyszczenie stołu i niezapisanych ustawień." -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:721 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:797 msgctxt "@window:title" msgid "Install Plugin" msgstr "Zainstaluj Wtyczkę" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:728 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:804 msgctxt "@title:window" msgid "Open File(s)" msgstr "Otwórz plik(i)" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:731 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:807 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." @@ -3910,97 +4253,82 @@ msgctxt "@action:label" msgid "Don't show project summary on save again" msgstr "Nie pokazuj podsumowania projektu podczas ponownego zapisywania" -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:264 -msgctxt "@action:button" -msgid "Save" -msgstr "Zapisz" - -#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:74 -msgctxt "@title:tab" -msgid "Prepare" -msgstr "Przygotuj" - -#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:100 -msgctxt "@title:tab" -msgid "Monitor" -msgstr "Monitor" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:163 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:175 msgctxt "@label" msgid "Layer Height" msgstr "Wysokość warstwy" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:323 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:345 msgctxt "@tooltip" msgid "A custom profile is currently active. To enable the quality slider, choose a default quality profile in Custom tab" msgstr "Niestandardowy profil jest obecnie aktywny. Aby włączyć pasek jakości, wybierz domyślny profil w zakładce Niestandardowe" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:340 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:362 msgctxt "@label" msgid "Print Speed" msgstr "Prędkość Druku" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:350 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:374 msgctxt "@label" msgid "Slower" msgstr "Wolniej" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:361 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:385 msgctxt "@label" msgid "Faster" msgstr "Szybciej" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:388 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:423 msgctxt "@tooltip" msgid "You have modified some profile settings. If you want to change these go to custom mode." msgstr "Zmodyfikowałeś ustawienia profilu. Jeżeli chcesz je zmienić, przejdź do trybu niestandardowego." -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:413 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:446 msgctxt "@label" msgid "Infill" msgstr "Wypełnienie" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:633 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:668 msgctxt "@label" msgid "Gradual infill will gradually increase the amount of infill towards the top." msgstr "Stopniowe wypełnienie stopniowo zwiększa ilość wypełnień w górę." -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:645 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:680 msgctxt "@label" msgid "Enable gradual" msgstr "Włącz stopniowane" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:712 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:747 msgctxt "@label" msgid "Generate Support" msgstr "Generuj podpory" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:746 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:781 msgctxt "@label" msgid "Generate structures to support parts of the model which have overhangs. Without these structures, such parts would collapse during printing." msgstr "Generuje podpory wspierające części modelu, które mają zwis. Bez tych podpór takie części mogłyby spaść podczas drukowania." -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:764 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:799 msgctxt "@label" msgid "Support Extruder" msgstr "Ekstruder od podpór" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:816 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:851 msgctxt "@label" msgid "Select which extruder to use for support. This will build up supporting structures below the model to prevent the model from sagging or printing in mid air." msgstr "Wybierz, który ekstruder ma służyć do drukowania podpór. Powoduje to tworzenie podpór poniżej modelu, aby zapobiec spadaniu lub drukowaniu modelu w powietrzu." -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:839 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:874 msgctxt "@label" msgid "Build Plate Adhesion" msgstr "Popraw przycz. modelu" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:894 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:929 msgctxt "@label" msgid "Enable printing a brim or raft. This will add a flat area around or under your object which is easy to cut off afterwards." msgstr "Włącz drukowanie obrysu lub tratwy. Spowoduje to dodanie płaskiej powierzchni wokół lub pod Twoim obiektem, która jest łatwa do usunięcia po wydruku." -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:934 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:969 msgctxt "@label" msgid "Need help improving your prints?
      Read the Ultimaker Troubleshooting Guides" msgstr "Potrzebujesz pomocy w ulepszaniu wydruków?
      Przeczytaj instrukcje dotyczące rozwiązywania problemów" @@ -4017,17 +4345,22 @@ msgctxt "@title:window" msgid "Open project file" msgstr "Otwórz plik projektu" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:72 +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:93 msgctxt "@text:window" msgid "This is a Cura project file. Would you like to open it as a project or import the models from it?" msgstr "Jest to plik projektu Cura. Czy chcesz otworzyć go jako projekt, czy zaimportować z niego modele?" #: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:103 +msgctxt "@text:window" +msgid "Remember my choice" +msgstr "Zapamiętaj mój wybór" + +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:122 msgctxt "@action:button" msgid "Open as project" msgstr "Otwórz jako projekt" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:122 +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:131 msgctxt "@action:button" msgid "Import models" msgstr "Importuj modele" @@ -4037,21 +4370,36 @@ msgctxt "@title:window" msgid "Engine Log" msgstr "Dziennik silnika" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:242 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:245 msgctxt "@label" msgid "Material" msgstr "Materiał" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:349 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:352 msgctxt "@label" -msgid "Check compatibility" -msgstr "Sprawdź kompatybilność" +msgid "Check compatibility" +msgstr "Sprawdź kompatybilność" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:369 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:372 msgctxt "@tooltip" msgid "Click to check the material compatibility on Ultimaker.com." msgstr "Kliknij, aby sprawdzić zgodność materiału na Ultimaker.com." +#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:211 +msgctxt "@option:check" +msgid "See only current build plate" +msgstr "Pokaż tylko aktualną platformę roboczą" + +#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:227 +msgctxt "@action:button" +msgid "Arrange to all build plates" +msgstr "Rozłóż na wszystkich platformach roboczych" + +#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:247 +msgctxt "@action:button" +msgid "Arrange current build plate" +msgstr "Rozłóż na obecnej platformie roboczej" + #: MachineSettingsAction/plugin.json msgctxt "description" msgid "Provides a way to change machine settings (such as build volume, nozzle size, etc)" @@ -4142,6 +4490,26 @@ msgctxt "name" msgid "USB printing" msgstr "Drukowanie USB" +#: PrepareStage/plugin.json +msgctxt "description" +msgid "Provides a prepare stage in Cura." +msgstr "Zapewnia etap przygotowania w Cura." + +#: PrepareStage/plugin.json +msgctxt "name" +msgid "Prepare Stage" +msgstr "Etap Przygotowania" + +#: CuraLiveScriptingPlugin/plugin.json +msgctxt "description" +msgid "Provides an edit window for direct script editing." +msgstr "Zapewnia okno edycji dla bezpośredniego edytowania skryptów." + +#: CuraLiveScriptingPlugin/plugin.json +msgctxt "name" +msgid "Live scripting tool" +msgstr "Narzędzie pisania skryptów na żywo." + #: RemovableDriveOutputDevice/plugin.json msgctxt "description" msgid "Provides removable drive hotplugging and writing support." @@ -4162,6 +4530,16 @@ msgctxt "name" msgid "UM3 Network Connection" msgstr "Połączenie Sieciowe UM3" +#: MonitorStage/plugin.json +msgctxt "description" +msgid "Provides a monitor stage in Cura." +msgstr "Zapewnia etap monitorowania w Cura." + +#: MonitorStage/plugin.json +msgctxt "name" +msgid "Monitor Stage" +msgstr "Etap Monitorowania" + #: FirmwareUpdateChecker/plugin.json msgctxt "description" msgid "Checks for firmware updates." @@ -4174,8 +4552,8 @@ msgstr "Sprawdzacz Aktualizacji Oprogramowania" #: CuraSolidWorksPlugin/plugin.json msgctxt "description" -msgid "Gives you the possibility to open certain files via SolidWorks itself. These are then converted and loaded into Cura" -msgstr "Daje tobie możliwość otwierania plików poprzez SolidWorks. Pliki są potem konwertowane i ładowane do Cura" +msgid "Gives you the possibility to open certain files using SolidWorks itself. Conversion is done by this plugin and additional optimizations." +msgstr "Daje Tobie możliwość otwierania plików używają samego SolidWorks. Konwersja jest wykonywana przez ten plugin i dodatkowo optymalizowana." #: CuraSolidWorksPlugin/plugin.json msgctxt "name" @@ -4242,6 +4620,16 @@ msgctxt "name" msgid "Legacy Cura Profile Reader" msgstr "Czytnik Profili Starszej Cura" +#: CuraBlenderPlugin/plugin.json +msgctxt "description" +msgid "Helps to open Blender files directly in Cura." +msgstr "Pomaga w otwieraniu plików Blender bezpośrednio w Cura." + +#: CuraBlenderPlugin/plugin.json +msgctxt "name" +msgid "Blender Integration (experimental)" +msgstr "Integracja z Blenderem (eksperymentalny)" + #: GCodeProfileReader/plugin.json msgctxt "description" msgid "Provides support for importing profiles from g-code files." @@ -4402,6 +4790,16 @@ 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." @@ -4442,6 +4840,156 @@ msgctxt "name" msgid "Cura Profile Reader" msgstr "Czytnik Profili Cura" +#~ msgctxt "@label" +#~ msgid "Unknown" +#~ msgstr "Nieznany" + +#~ msgctxt "@info:status" +#~ msgid "Errors appeared while opening your SolidWorks file! Please check, whether it is possible to open your file in SolidWorks itself without any problems as well!" +#~ msgstr "Wystąpił błąd podczas otwierania pliku SolidWorks! Proszę sprawdź, czy możesz otworzyć plik SolidWorks bez żadnych problemów!" + +#~ msgctxt "@info:status" +#~ msgid "Error while starting %s!" +#~ msgstr "Błąd podczas rozpoczynania %s!" + +#~ msgctxt "@item:inlistbox" +#~ msgid "Simulation view" +#~ msgstr "Widok symulacji" + +#~ msgctxt "@info" +#~ msgid "Cura collects anonymised slicing statistics. You can disable this in the preferences." +#~ msgstr "Cura zbiera anonimowe statystyki cięcia. Możesz wyłączyć to w ustawieniach." + +#~ msgctxt "@action:button" +#~ msgid "Dismiss" +#~ msgstr "Anuluj" + +#~ msgctxt "@menuitem" +#~ msgid "Global" +#~ msgstr "Globalny" + +#~ msgctxt "@label crash message" +#~ msgid "" +#~ "

      A fatal exception has occurred. 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 "" +#~ "

      Wystąpił fatalny błąd. Proszę wyślij do nas ten Raport Błędu, abyśmy mogli naprawić błąd

      \n" +#~ "

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

      \n" +#~ " " + +#~ msgctxt "@label Cura version" +#~ msgid "Cura version: {version}
      " +#~ msgstr "Wersja Cura: {version}
      " + +#~ msgctxt "@label Platform" +#~ msgid "Platform: {platform}
      " +#~ msgstr "Platforma: {platform}
      " + +#~ msgctxt "@label Qt version" +#~ msgid "Qt version: {qt}
      " +#~ msgstr "Wersja Qt: {qt}
      " + +#~ msgctxt "@label PyQt version" +#~ msgid "PyQt version: {pyqt}
      " +#~ msgstr "Wersja PyQt: {pyqt}
      " + +#~ msgctxt "@label OpenGL" +#~ msgid "OpenGL: {opengl}
      " +#~ msgstr "OpenGL: {opengl}
      " + +#~ msgctxt "@title:groupbox" +#~ msgid "Exception traceback" +#~ msgstr "Śledzenie błędów" + +#~ msgctxt "@label" +#~ msgid "Material diameter" +#~ msgstr "Średnica materiału" + +#~ msgctxt "@label" +#~ msgid "Ultimaker 3" +#~ msgstr "Ultimaker 3" + +#~ msgctxt "@label" +#~ msgid "Ultimaker 3 Extended" +#~ msgstr "Ultimaker 3 Extended" + +#~ msgctxt "@title:window" +#~ msgid "Cura SolidWorks Plugin Configuration" +#~ msgstr "Konfiguracja Wtyczki Cura SolidWorks" + +#~ msgctxt "@action:label" +#~ msgid "Default quality of the exported STL:" +#~ msgstr "Domyślna jakość eksportowanego STL:" + +#~ msgctxt "@option:curaSolidworksStlQuality" +#~ msgid "Always ask" +#~ msgstr "Zawsze pytaj" + +#~ msgctxt "@option:curaSolidworksStlQuality" +#~ msgid "Always use Fine quality" +#~ msgstr "Zawsze używaj Dobrej jakości" + +#~ msgctxt "@option:curaSolidworksStlQuality" +#~ msgid "Always use Coarse quality" +#~ msgstr "Zawsze używaj Słabej jakości" + +#~ msgctxt "@title:window" +#~ msgid "Import SolidWorks File as STL..." +#~ msgstr "Importuj Plik SolidWorks jako STL..." + +#~ msgctxt "@info:tooltip" +#~ msgid "Quality of the Exported STL" +#~ msgstr "Jakość Eksportowanego STL" + +#~ msgctxt "@action:label" +#~ msgid "Quality" +#~ msgstr "Jakość" + +#~ msgctxt "@option:curaSolidworksStlQuality" +#~ msgid "Coarse" +#~ msgstr "Słaba" + +#~ msgctxt "@option:curaSolidworksStlQuality" +#~ msgid "Fine" +#~ msgstr "Dobra" + +#~ msgctxt "@" +#~ msgid "No Profile Available" +#~ msgstr "Brak Dostępnego Profilu" + +#~ 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 zawsze dzielone między wszystkie ekstrudery. Zmiana jego wartości tutaj spowoduje zmianę dla wszystkich ekstruderów" + +#~ msgctxt "@tooltip" +#~ msgid "Time specification
      " +#~ msgstr "Szacowany czas
      " + +#~ msgctxt "@action:inmenu menubar:view" +#~ msgid "&Reset camera position" +#~ msgstr "&Zresetuj pozycję kamery" + +#~ msgctxt "@title:menu menubar:file" +#~ msgid "Save project" +#~ msgstr "Zapisz projekt" + +#~ msgctxt "@title:tab" +#~ msgid "Prepare" +#~ msgstr "Przygotuj" + +#~ msgctxt "@title:tab" +#~ msgid "Monitor" +#~ msgstr "Monitor" + +#~ msgctxt "@label" +#~ msgid "Check compatibility" +#~ msgstr "Sprawdź kompatybilność" + +#~ msgctxt "description" +#~ msgid "Gives you the possibility to open certain files via SolidWorks itself. These are then converted and loaded into Cura" +#~ msgstr "Daje tobie możliwość otwierania plików poprzez SolidWorks. Pliki są potem konwertowane i ładowane do Cura" + #~ msgctxt "@label:status" #~ msgid "Blocked" #~ msgstr "Zablokowany" @@ -4462,13 +5010,9 @@ msgstr "Czytnik Profili Cura" #~ msgid "To ensure that your {machine_name} is equipped with the latest features it is recommended to update the firmware regularly. This can be done on the {machine_name} (when connected to the network) or via USB." #~ msgstr "Aby upewnić się że twoja {machine_name} jest wyposażona w najnowsze opcje rekomendowane jest aktualizowanie oprogramowania regularnie. Może to być wykonane na {machine_name} (kiedy jest podłączona do sieci) lub przez USB." -msgctxt "@item:inlistbox" -msgid "Layer view" -msgstr "Widok warstwy" - -msgctxt "@info:title" -msgid "Layer View" -msgstr "Widok warstwy" +#~ msgctxt "@info:title" +#~ msgid "Layer View" +#~ msgstr "Widok warstwy" #~ msgctxt "@menuitem" #~ msgid "Browse plugins" @@ -4570,9 +5114,9 @@ msgstr "Widok warstwy" #~ msgid "Provides the Layer view." #~ msgstr "Zapewnia widok warstw." -msgctxt "name" -msgid "Layer View" -msgstr "Widok Warstw" +#~ msgctxt "name" +#~ msgid "Layer View" +#~ msgstr "Widok Warstw" #~ msgctxt "@item:inlistbox" #~ msgid "X-Ray" @@ -4893,9 +5437,9 @@ msgstr "Widok Warstw" #~ msgid "Provides support for importing profiles from g-code files." #~ msgstr "Zapewnia obsługę importowania profili z plików g-code." -msgctxt "@label" -msgid "Layer View" -msgstr "Widok warstwy" +#~ msgctxt "@label" +#~ msgid "Layer View" +#~ msgstr "Widok warstwy" #~ msgctxt "@info:whatsthis" #~ msgid "Provides the Layer view." diff --git a/resources/i18n/pl_PL/fdmextruder.def.json.po b/resources/i18n/pl_PL/fdmextruder.def.json.po index 8e7a8c2084..3bed2b64ff 100644 --- a/resources/i18n/pl_PL/fdmextruder.def.json.po +++ b/resources/i18n/pl_PL/fdmextruder.def.json.po @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: Cura 3.0\n" -"Report-Msgid-Bugs-To: http://github.com/ultimaker/uranium\n" -"POT-Creation-Date: 2017-11-21 16:58+0000\n" +"Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" +"POT-Creation-Date: 2017-08-02 16:53+0000\n" "PO-Revision-Date: 2017-11-22 15:00+0100\n" "Last-Translator: 'Jaguś' Paweł Jagusiak and Andrzej 'anraf1001' Rafalski\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 4803933a28..989967bd75 100644 --- a/resources/i18n/pl_PL/fdmprinter.def.json.po +++ b/resources/i18n/pl_PL/fdmprinter.def.json.po @@ -6,16 +6,16 @@ msgid "" msgstr "" "Project-Id-Version: Cura 3.0\n" -"Report-Msgid-Bugs-To: http://github.com/ultimaker/uranium\n" -"POT-Creation-Date: 2017-11-21 16:58+0000\n" -"PO-Revision-Date: 2017-11-22 19:41+0100\n" +"Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" +"POT-Creation-Date: 2017-08-02 16:53+0000\n" +"PO-Revision-Date: 2018-02-10 14:03+0100\n" "Last-Translator: 'Jaguś' Paweł Jagusiak and Andrzej 'anraf1001' Rafalski\n" "Language-Team: reprapy.pl\n" "Language: pl_PL\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 2.0.4\n" +"X-Generator: Poedit 2.0.6\n" #: fdmprinter.def.json msgctxt "machine_settings label" @@ -350,6 +350,16 @@ msgctxt "machine_gcode_flavor option Repetier" msgid "Repetier" msgstr "Repetier" +#: fdmprinter.def.json +msgctxt "machine_firmware_retract label" +msgid "Firmware Retraction" +msgstr "Retrakcja Programowa" + +#: fdmprinter.def.json +msgctxt "machine_firmware_retract description" +msgid "Whether to use firmware retract commands (G10/G11) instead of using the E property in G1 commands to retract the material." +msgstr "Używaj komend retrakcji (G10/G11) zamiast używać współrzędną E w komendzie G1, aby wycofać materiał." + #: fdmprinter.def.json msgctxt "machine_disallowed_areas label" msgid "Disallowed areas" @@ -610,31 +620,6 @@ msgctxt "layer_height_0 description" msgid "The height of the initial layer in mm. A thicker initial layer makes adhesion to the build plate easier." msgstr "Wysokość początkowej warstwy w mm. Grubsza początkowa warstwa powoduje lepszą przyczepność do stołu." -#: fdmprinter.def.json -msgctxt "slicing_tolerance label" -msgid "Slicing Tolerance" -msgstr "Tolerancja Cięcia" - -#: fdmprinter.def.json -msgctxt "slicing_tolerance description" -msgid "How to slice layers with diagonal surfaces. The areas of a layer can be generated based on where the middle of the layer intersects the surface (Middle). Alternatively each layer can have the areas which fall inside of the volume throughout the height of the layer (Exclusive) or a layer has the areas which fall inside anywhere within the layer (Inclusive). Exclusive retains the most details, Inclusive makes for the best fit and Middle takes the least time to process." -msgstr "Jak ciąć warstwy z ukośnymi powierzchniami. Obszary warstwy mogą być generowane na podstawie miejsca gdzie środek warstwy przecina się z powierzchnią (Środek). Alternatywnie każda warstwa może mieć obszary, które wpadają do środka objętości poprzez wysokość warstwy (Wyłączne) lub warstwa ma obszary, które wpadają do środka w każdym miejscu na warstwie (Włącznie). Wyłącznie zatrzymuje najwięcej detali, Włącznie powoduje najlepsze dopasowanie, a Środek wymaga najmniej czasu do przetworzenia." - -#: fdmprinter.def.json -msgctxt "slicing_tolerance option middle" -msgid "Middle" -msgstr "Środek" - -#: fdmprinter.def.json -msgctxt "slicing_tolerance option exclusive" -msgid "Exclusive" -msgstr "Wyłącznie" - -#: fdmprinter.def.json -msgctxt "slicing_tolerance option inclusive" -msgid "Inclusive" -msgstr "Włącznie" - #: fdmprinter.def.json msgctxt "line_width label" msgid "Line Width" @@ -675,16 +660,6 @@ msgctxt "wall_line_width_x description" msgid "Width of a single wall line for all wall lines except the outermost one." msgstr "Szerokość jednej linii dla wszystkich linii ściany z wyjątkiem jednej najbardziej zewnętrznej." -#: fdmprinter.def.json -msgctxt "roofing_line_width label" -msgid "Top Surface Skin Line Width" -msgstr "Szerokość Linii Powierzchni Skóry" - -#: fdmprinter.def.json -msgctxt "roofing_line_width description" -msgid "Width of a single line of the areas at the top of the print." -msgstr "Szerokość pojedynczej linii na obszarach na górze wydruku." - #: fdmprinter.def.json msgctxt "skin_line_width label" msgid "Top/Bottom Line Width" @@ -865,41 +840,6 @@ msgctxt "roofing_layer_count description" msgid "The number of top most skin layers. Usually only one top most layer is sufficient to generate higher quality top surfaces." msgstr "Liczba warstw górnej skóry. Zazwyczaj tylko jedna górna warstwa poprawia jakość górnych powierzchni." -#: fdmprinter.def.json -msgctxt "roofing_pattern label" -msgid "Top Surface Skin Pattern" -msgstr "Wzór Górnej Pow. Skóry" - -#: fdmprinter.def.json -msgctxt "roofing_pattern description" -msgid "The pattern of the top most layers." -msgstr "Wzór najwyższych warstw." - -#: fdmprinter.def.json -msgctxt "roofing_pattern option lines" -msgid "Lines" -msgstr "Linie" - -#: fdmprinter.def.json -msgctxt "roofing_pattern option concentric" -msgid "Concentric" -msgstr "Koncentryczny" - -#: fdmprinter.def.json -msgctxt "roofing_pattern option zigzag" -msgid "Zig Zag" -msgstr "Zygzak" - -#: fdmprinter.def.json -msgctxt "roofing_angles label" -msgid "Top Surface Skin Line Directions" -msgstr "Kierunki Linii Górnej Pow. Skóry" - -#: fdmprinter.def.json -msgctxt "roofing_angles description" -msgid "A list of integer line directions to use when the top surface skin layers use the lines or zig zag pattern. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the traditional default angles (45 and 135 degrees)." -msgstr "Lista całkowitych kierunków linii używana kiedy skóra górnej powierzchni używa wzoru linii lub zygzaka. Elementy z listy są używane po kolei na każdej warstwie, a kiedy lista się skończy, zaczyna się od nowa. Elementy listy są oddzielone przecinkami, a cała lista zawarta jest w nawiasach kwadratowych. Domyślnie lista jest pusta co oznacza używanie tradycyjnych, domyślnych kątów (45 i 135 stopni)." - #: fdmprinter.def.json msgctxt "top_bottom_extruder_nr label" msgid "Top/Bottom Extruder" @@ -1030,6 +970,16 @@ msgctxt "wall_0_inset description" msgid "Inset applied to the path of the outer wall. If the outer wall is smaller than the nozzle, and printed after the inner walls, use this offset to get the hole in the nozzle to overlap with the inner walls instead of the outside of the model." msgstr "Wkład nałożony na ścieżkę zewnętrznej ściany. Jeśli zewnętrzna ścianka jest mniejsza niż dysza i jest drukowana po wewnętrznych ściankach, użyj tego przesunięcia, aby uzyskać otwór w dyszy, żeby nakładała się z wewnętrzną ścianą zamiast być na zewnątrz modelu." +#: fdmprinter.def.json +msgctxt "optimize_wall_printing_order label" +msgid "Optimize Wall Printing Order" +msgstr "Optymalizuj Kolejność Drukowania Ścian" + +#: fdmprinter.def.json +msgctxt "optimize_wall_printing_order description" +msgid "Optimize the order in which walls are printed so as to reduce the number of retractions and the distance travelled. Most parts will benefit from this being enabled but some may actually take longer so please compare the print time estimates with and without optimization." +msgstr "Optymalizuj kolejność, według której drukowane są ściany, aby zredukować ilość retrakcji i długości ruchu jałowego. Większość części powinno na tym zyskać, ale niektóre mogą drukować się dłużej, dlatego prosimy o porównaniu czasu drukowania z i bez włączonej opcji." + #: fdmprinter.def.json msgctxt "outer_inset_first label" msgid "Outer Before Inner Walls" @@ -1100,6 +1050,16 @@ msgctxt "fill_perimeter_gaps option everywhere" msgid "Everywhere" msgstr "Wszędzie" +#: fdmprinter.def.json +msgctxt "filter_out_tiny_gaps label" +msgid "Filter Out Tiny Gaps" +msgstr "Filtruj Małe Luki" + +#: fdmprinter.def.json +msgctxt "filter_out_tiny_gaps description" +msgid "Filter out tiny gaps to reduce blobs on outside of model." +msgstr "Filtruj małe luki, aby zredukować bloby na zewnątrz modelu." + #: fdmprinter.def.json msgctxt "fill_outline_gaps label" msgid "Print Thin Walls" @@ -1482,8 +1442,8 @@ msgstr "Przesunięcie Wypełn. w Osi X" #: fdmprinter.def.json msgctxt "infill_offset_x description" -msgid "The infill pattern is offset this distance along the X axis." -msgstr "Wypełnienie jest przesunięte o taką odległość wzdłuż osi X." +msgid "The infill pattern is moved this distance along the X axis." +msgstr "Wzór wypełnienia jest przesunięty o tę odległość wzdłuż osi X." #: fdmprinter.def.json msgctxt "infill_offset_y label" @@ -1492,8 +1452,8 @@ msgstr "Przesunięcie Wypełn. w Osi Y" #: fdmprinter.def.json msgctxt "infill_offset_y description" -msgid "The infill pattern is offset this distance along the Y axis." -msgstr "Wypełnienie jest przesunięte o taką odległość wzdłuż osi Y." +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 "sub_div_rad_add label" @@ -1512,8 +1472,8 @@ msgstr "Procent Nałożenia Wypełn." #: fdmprinter.def.json msgctxt "infill_overlap 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." +msgid "The amount of overlap between the infill and the walls as a percentage of the infill line width. A slight overlap allows the walls to connect firmly to the infill." +msgstr "Ilość nałożenia pomiędzy wypełnieniem i ścianami w procentach szerokości linii wypełnienia. Delikatne nałożenie pozwala na lepsze połączenie ścian z wypełnieniem." #: fdmprinter.def.json msgctxt "infill_overlap_mm label" @@ -1532,8 +1492,8 @@ msgstr "Procent Nakładania się Skóry" #: fdmprinter.def.json msgctxt "skin_overlap description" -msgid "The amount of overlap between the skin and the walls as a percentage of the line width. A slight overlap allows the walls to connect firmly to the skin. This is a percentage of the average line widths of the skin lines and the innermost wall." -msgstr "Wartość nałożenia pomiędzy skórą a ścianami jako procent szerokości linii. Delikatne nałożenie pozwala na dobre połączenie ścian ze skórą. Jest to procent średniej szerokości linii skóry i wewnętrznej ściany." +msgid "The amount of overlap between the skin and the walls as a percentage of the skin line width. A slight overlap allows the walls to connect firmly to the skin. This is a percentage of the average line widths of the skin lines and the innermost wall." +msgstr "Ilość nałożenia pomiędzy skórą a ścianami w procentach szerokości linii skóry. Delikatne nałożenie pozawala na lepsze połączenie się ścian ze skórą. Jest to procent średniej szerokości linii skóry i wewnętrznej ściany." #: fdmprinter.def.json msgctxt "skin_overlap_mm label" @@ -1695,16 +1655,6 @@ msgctxt "material description" msgid "Material" msgstr "Materiał" -#: fdmprinter.def.json -msgctxt "material_flow_dependent_temperature label" -msgid "Auto Temperature" -msgstr "Auto Temperatura" - -#: fdmprinter.def.json -msgctxt "material_flow_dependent_temperature description" -msgid "Change the temperature for each layer automatically with the average flow speed of that layer." -msgstr "Zmień temperaturę każdej warstwy automatycznie przy średniej prędkości przepływu tej warstwy." - #: fdmprinter.def.json msgctxt "default_material_print_temperature label" msgid "Default Printing Temperature" @@ -1755,16 +1705,6 @@ msgctxt "material_final_print_temperature description" msgid "The temperature to which to already start cooling down just before the end of printing." msgstr "Temperatura, od której zaczyna się chłodzenie tuż przed końcem drukowania." -#: fdmprinter.def.json -msgctxt "material_flow_temp_graph label" -msgid "Flow Temperature Graph" -msgstr "Wykres Temp. Przepływu" - -#: fdmprinter.def.json -msgctxt "material_flow_temp_graph description" -msgid "Data linking material flow (in mm3 per second) to temperature (degrees Celsius)." -msgstr "Dane łączące przepływ materiału (w mm3 na sekundę) z temperaturą (stopnie Celsjusza)." - #: fdmprinter.def.json msgctxt "material_extrusion_cool_down_speed label" msgid "Extrusion Cool Down Speed Modifier" @@ -1782,8 +1722,8 @@ msgstr "Temperatura Stołu" #: fdmprinter.def.json msgctxt "material_bed_temperature description" -msgid "The temperature used for the heated build plate. If this is 0, the bed will not heat up for this print." -msgstr "Temperatura stosowana przy podgrzewanym stole. Jeśli jest to 0, stół nie rozgrzeje się dla tego wydruku." +msgid "The temperature used for the heated build plate. If this is 0, the bed temperature will not be adjusted." +msgstr "Temperatura stosowana dla podgrzewanej platformy roboczej. Jeżeli jest ustawione 0, temperatura stołu nie będzie ustawiona." #: fdmprinter.def.json msgctxt "material_bed_temperature_layer_0 label" @@ -3455,6 +3395,16 @@ msgctxt "support_tower_roof_angle description" msgid "The angle of a rooftop of a tower. A higher value results in pointed tower roofs, a lower value results in flattened tower roofs." msgstr "Kąt dachu wieży. Wyższa wartość powoduje punktowy dach wieży, a niższa wartość powoduje płaskie dachy wieży." +#: fdmprinter.def.json +msgctxt "support_mesh_drop_down label" +msgid "Drop Down Support Mesh" +msgstr "Upuść Siatkę Podpory" + +#: fdmprinter.def.json +msgctxt "support_mesh_drop_down description" +msgid "Make support everywhere below the support mesh, so that there's no overhang in the support mesh." +msgstr "Twórz podpory wszędzie pod siatką podpory, tak aby nie było zwisu w siatce podpory." + #: fdmprinter.def.json msgctxt "platform_adhesion label" msgid "Build Plate Adhesion" @@ -4089,16 +4039,6 @@ msgctxt "meshfix_keep_open_polygons description" msgid "Normally Cura tries to stitch up small holes in the mesh and remove parts of a layer with big holes. Enabling this option keeps those parts which cannot be stitched. This option should be used as a last resort option when everything else fails to produce proper GCode." msgstr "Zwykle Cura próbuje zszywać małe dziury w siatce i usunąć części warstwy z dużymi otworami. Włączenie tej opcji powoduje zostawienie tych części, których nie można zszywać. Ta opcja powinna być używana jako ostatnia deska ratunku, gdy wszystko inne nie dostarczy właściwego G-code." -#: 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 "multiple_mesh_overlap label" msgid "Merged Meshes Overlap" @@ -4249,16 +4189,6 @@ msgctxt "support_mesh description" msgid "Use this mesh to specify support areas. This can be used to generate support structure." msgstr "Użyj tej siatki, aby określić obszary wsparcia. Można to wykorzystać do generowania struktury podpory." -#: fdmprinter.def.json -msgctxt "support_mesh_drop_down label" -msgid "Drop Down Support Mesh" -msgstr "Upuść Siatkę Podpory" - -#: fdmprinter.def.json -msgctxt "support_mesh_drop_down description" -msgid "Make support everywhere below the support mesh, so that there's no overhang in the support mesh." -msgstr "Twórz podpory wszędzie pod siatką podpory, tak aby nie było zwisu w siatce podpory." - #: fdmprinter.def.json msgctxt "anti_overhang_mesh label" msgid "Anti Overhang Mesh" @@ -4335,14 +4265,194 @@ msgid "experimental!" msgstr "eksperymentalne!" #: fdmprinter.def.json -msgctxt "optimize_wall_printing_order label" -msgid "Optimize Wall Printing Order" -msgstr "Optymalizuj Kolejność Drukowania Ścian" +msgctxt "support_tree_enable label" +msgid "Tree Support" +msgstr "Drzewne Podpory" #: fdmprinter.def.json -msgctxt "optimize_wall_printing_order description" -msgid "Optimize the order in which walls are printed so as to reduce the number of retractions and the distance travelled. Most parts will benefit from this being enabled but some may actually take longer so please compare the print time estimates with and without optimization." -msgstr "Optymalizuj kolejność, według której drukowane są ściany, aby zredukować ilość retrakcji i długości ruchu jałowego. Większość części powinno na tym zyskać, ale niektóre mogą drukować się dłużej, dlatego prosimy o porównaniu czasu drukowania z i bez włączonej opcji." +msgctxt "support_tree_enable description" +msgid "Generate a tree-like support with branches that support your print. This may reduce material usage and print time, but greatly increases slicing time." +msgstr "Generuj drzewiaste podpory z gałęziami podpierającymi wydruk. Może to zredukować zużycie materiału i czas wydruku, ale bardzo zwiększa czas cięcia." + +#: fdmprinter.def.json +msgctxt "support_tree_angle label" +msgid "Tree Support Branch Angle" +msgstr "Kąt Gałęzi Drzewnej Podpory" + +#: fdmprinter.def.json +msgctxt "support_tree_angle description" +msgid "The angle of the branches. Use a lower angle to make them more vertical and more stable. Use a higher angle to be able to have more reach." +msgstr "Kąt gałęzi. Użyj mniejszego kąta, aby były bardziej pionowe i stabilne. Użyj większego kąta, aby mieć większy zasięg." + +#: fdmprinter.def.json +msgctxt "support_tree_branch_distance label" +msgid "Tree Support Branch Distance" +msgstr "Odległość Gałęzi Drzewiastej Podpory" + +#: fdmprinter.def.json +msgctxt "support_tree_branch_distance description" +msgid "How far apart the branches need to be when they touch the model. Making this distance small will cause the tree support to touch the model at more points, causing better overhang but making support harder to remove." +msgstr "W jakich odległościach powinny znajdować się gałęzie kiedy dotykają modelu. Mały dystans spowoduje więcej punktów podparcia, co da lepsze nawisy, ale utrudni usuwanie podpór." + +#: fdmprinter.def.json +msgctxt "support_tree_branch_diameter label" +msgid "Tree Support Branch Diameter" +msgstr "Średnica Gałęzi Drzewiastej Podpory" + +#: fdmprinter.def.json +msgctxt "support_tree_branch_diameter description" +msgid "The diameter of the thinnest branches of tree support. Thicker branches are more sturdy. Branches towards the base will be thicker than this." +msgstr "Średnica najcieńszej gałęzi drzewiastej podpory. Grubsze gałęzie są bardziej sztywne. Gałęzie bliżej podłoża będą grubsze od tego." + +#: fdmprinter.def.json +msgctxt "support_tree_branch_diameter_angle label" +msgid "Tree Support Branch Diameter Angle" +msgstr "Kąt Średnicy Gałęzi Drzewiastej Podpory" + +#: fdmprinter.def.json +msgctxt "support_tree_branch_diameter_angle description" +msgid "The angle of the branches' diameter as they gradually become thicker towards the bottom. An angle of 0 will cause the branches to have uniform thickness over their length. A bit of an angle can increase stability of the tree support." +msgstr "Kąt średnicy gałęzi, które stają się grubsze bliżej podłoża. Kąt 0 spowoduje równą grubość na całej długości gałęzi. Delikatny kąt może spowodować lepszą stabilność podpór." + +#: fdmprinter.def.json +msgctxt "support_tree_collision_resolution label" +msgid "Tree Support Collision Resolution" +msgstr "Rozdzielczość Kolizji Drzewiastej Podpory" + +#: fdmprinter.def.json +msgctxt "support_tree_collision_resolution description" +msgid "Resolution to compute collisions with to avoid hitting the model. Setting this lower will produce more accurate trees that fail less often, but increases slicing time dramatically." +msgstr "Rozdzielczość przeliczania kolizji, aby unikać zderzeń z modelem. Ustawienie niższej wartości spowoduje bardziej dokładne drzewa, które rzadziej zawodzą, ale zwiększa to drastycznie czas cięcia." + +#: fdmprinter.def.json +msgctxt "support_tree_wall_thickness label" +msgid "Tree Support Wall Thickness" +msgstr "Grubość Ściany Drzewiastej Podpory" + +#: fdmprinter.def.json +msgctxt "support_tree_wall_thickness description" +msgid "The thickness of the walls of the branches of tree support. Thicker walls take longer to print but don't fall over as easily." +msgstr "Grubość ścian gałęzi drzewiastej podpory. Grubsze ściany drukują się dłużej, ale nie odpadają tak łatwo." + +#: fdmprinter.def.json +msgctxt "support_tree_wall_count label" +msgid "Tree Support Wall Line Count" +msgstr "Liczba Linii Ściany Drzewiastej Podpory" + +#: fdmprinter.def.json +msgctxt "support_tree_wall_count description" +msgid "The number of walls of the branches of tree support. Thicker walls take longer to print but don't fall over as easily." +msgstr "Liczba ścian gałęzi drzewiastej podpory. Grubsze ściany drukują się dłużej , ale nie odpadają tak łatwo." + +#: fdmprinter.def.json +msgctxt "slicing_tolerance label" +msgid "Slicing Tolerance" +msgstr "Tolerancja Cięcia" + +#: fdmprinter.def.json +msgctxt "slicing_tolerance description" +msgid "How to slice layers with diagonal surfaces. The areas of a layer can be generated based on where the middle of the layer intersects the surface (Middle). Alternatively each layer can have the areas which fall inside of the volume throughout the height of the layer (Exclusive) or a layer has the areas which fall inside anywhere within the layer (Inclusive). Exclusive retains the most details, Inclusive makes for the best fit and Middle takes the least time to process." +msgstr "Jak ciąć warstwy z ukośnymi powierzchniami. Obszary warstwy mogą być generowane na podstawie miejsca gdzie środek warstwy przecina się z powierzchnią (Środek). Alternatywnie każda warstwa może mieć obszary, które wpadają do środka objętości poprzez wysokość warstwy (Wyłączne) lub warstwa ma obszary, które wpadają do środka w każdym miejscu na warstwie (Włącznie). Wyłącznie zatrzymuje najwięcej detali, Włącznie powoduje najlepsze dopasowanie, a Środek wymaga najmniej czasu do przetworzenia." + +#: fdmprinter.def.json +msgctxt "slicing_tolerance option middle" +msgid "Middle" +msgstr "Środek" + +#: fdmprinter.def.json +msgctxt "slicing_tolerance option exclusive" +msgid "Exclusive" +msgstr "Wyłącznie" + +#: fdmprinter.def.json +msgctxt "slicing_tolerance option inclusive" +msgid "Inclusive" +msgstr "Włącznie" + +#: fdmprinter.def.json +msgctxt "roofing_line_width label" +msgid "Top Surface Skin Line Width" +msgstr "Szerokość Linii Powierzchni Skóry" + +#: fdmprinter.def.json +msgctxt "roofing_line_width description" +msgid "Width of a single line of the areas at the top of the print." +msgstr "Szerokość pojedynczej linii na obszarach na górze wydruku." + +#: fdmprinter.def.json +msgctxt "roofing_pattern label" +msgid "Top Surface Skin Pattern" +msgstr "Wzór Górnej Pow. Skóry" + +#: fdmprinter.def.json +msgctxt "roofing_pattern description" +msgid "The pattern of the top most layers." +msgstr "Wzór najwyższych warstw." + +#: fdmprinter.def.json +msgctxt "roofing_pattern option lines" +msgid "Lines" +msgstr "Linie" + +#: fdmprinter.def.json +msgctxt "roofing_pattern option concentric" +msgid "Concentric" +msgstr "Koncentryczny" + +#: fdmprinter.def.json +msgctxt "roofing_pattern option zigzag" +msgid "Zig Zag" +msgstr "Zygzak" + +#: fdmprinter.def.json +msgctxt "roofing_angles label" +msgid "Top Surface Skin Line Directions" +msgstr "Kierunki Linii Górnej Pow. Skóry" + +#: fdmprinter.def.json +msgctxt "roofing_angles description" +msgid "A list of integer line directions to use when the top surface skin layers use the lines or zig zag pattern. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the traditional default angles (45 and 135 degrees)." +msgstr "Lista całkowitych kierunków linii używana kiedy skóra górnej powierzchni używa wzoru linii lub zygzaka. Elementy z listy są używane po kolei na każdej warstwie, a kiedy lista się skończy, zaczyna się od nowa. Elementy listy są oddzielone przecinkami, a cała lista zawarta jest w nawiasach kwadratowych. Domyślnie lista jest pusta co oznacza używanie tradycyjnych, domyślnych kątów (45 i 135 stopni)." + +#: fdmprinter.def.json +msgctxt "infill_enable_travel_optimization label" +msgid "Infill Travel Optimization" +msgstr "Optymalizacja Ruchów Jałowych Wypełnienia" + +#: fdmprinter.def.json +msgctxt "infill_enable_travel_optimization description" +msgid "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." +msgstr "Kiedy włączone, kolejność drukowania linii wypełnienia jest optymalizowana tak, aby zredukować odległości ruchów jałowych. Osiągnięta redukcja czasu ruchów jałowych zależy od ciętego modelu, wzory wypełnienia, gęstości itd. Zauważ, że dla niektórych modeli, które mają małe obszary wypełnienia, czas ciecia modelu może się bardzo wydłużyć." + +#: fdmprinter.def.json +msgctxt "material_flow_dependent_temperature label" +msgid "Auto Temperature" +msgstr "Auto Temperatura" + +#: fdmprinter.def.json +msgctxt "material_flow_dependent_temperature description" +msgid "Change the temperature for each layer automatically with the average flow speed of that layer." +msgstr "Zmień temperaturę każdej warstwy automatycznie przy średniej prędkości przepływu tej warstwy." + +#: fdmprinter.def.json +msgctxt "material_flow_temp_graph label" +msgid "Flow Temperature Graph" +msgstr "Wykres Temp. Przepływu" + +#: fdmprinter.def.json +msgctxt "material_flow_temp_graph description" +msgid "Data linking material flow (in mm3 per second) to temperature (degrees Celsius)." +msgstr "Dane łączące przepływ materiału (w mm3 na sekundę) z temperaturą (stopnie Celsjusza)." + +#: 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 "support_skip_some_zags label" @@ -4943,6 +5053,46 @@ msgctxt "wireframe_nozzle_clearance description" msgid "Distance between the nozzle and horizontally downward lines. Larger clearance results in diagonally downward lines with a less steep angle, which in turn results in less upward connections with the next layer. Only applies to Wire Printing." msgstr "Odległość między dyszą a liniami skierowanymi w dół. Większe prześwity powodują ukośne linie skierowanie w dół o mniej stromym kącie, co z kolei skutkuje mniejszymi połączeniami z następną warstwą. Dotyczy tylko Drukowania Drutu." +#: fdmprinter.def.json +msgctxt "adaptive_layer_height_enabled label" +msgid "Use adaptive layers" +msgstr "Użyj zmiennych warstw" + +#: fdmprinter.def.json +msgctxt "adaptive_layer_height_enabled description" +msgid "Adaptive layers computes the layer heights depending on the shape of the model." +msgstr "Zmienne warstwy obliczają wysokości warstw w zależności od kształtu modelu." + +#: fdmprinter.def.json +msgctxt "adaptive_layer_height_variation label" +msgid "Adaptive layers maximum variation" +msgstr "Maks. zmiana zmiennych warstw" + +#: fdmprinter.def.json +msgctxt "adaptive_layer_height_variation description" +msgid "The maximum allowed height different from the base layer height in mm." +msgstr "Maksymalna dozwolona różnica wysokości od podstawowej wysokości warstwy w mm." + +#: fdmprinter.def.json +msgctxt "adaptive_layer_height_variation_step label" +msgid "Adaptive layers variation step size" +msgstr "Krok zmian zmiennych warstw" + +#: fdmprinter.def.json +msgctxt "adaptive_layer_height_variation_step description" +msgid "The difference in height of the next layer height compared to the previous one." +msgstr "Różnica w wysokości pomiędzy następną wysokością warstwy i poprzednią." + +#: fdmprinter.def.json +msgctxt "adaptive_layer_height_threshold label" +msgid "Adaptive layers threshold" +msgstr "Opóźnienie zmiennych warstw" + +#: 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." + #: fdmprinter.def.json msgctxt "command_line_settings label" msgid "Command Line Settings" @@ -5003,6 +5153,26 @@ 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 "infill_offset_x description" +#~ msgid "The infill pattern is offset this distance along the X axis." +#~ msgstr "Wypełnienie jest przesunięte o taką odległość wzdłuż osi X." + +#~ msgctxt "infill_offset_y description" +#~ msgid "The infill pattern is offset this distance along the Y axis." +#~ msgstr "Wypełnienie jest przesunięte o taką odległość wzdłuż osi Y." + +#~ msgctxt "infill_overlap 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." + +#~ msgctxt "skin_overlap description" +#~ msgid "The amount of overlap between the skin and the walls as a percentage of the line width. A slight overlap allows the walls to connect firmly to the skin. This is a percentage of the average line widths of the skin lines and the innermost wall." +#~ msgstr "Wartość nałożenia pomiędzy skórą a ścianami jako procent szerokości linii. Delikatne nałożenie pozwala na dobre połączenie ścian ze skórą. Jest to procent średniej szerokości linii skóry i wewnętrznej ściany." + +#~ msgctxt "material_bed_temperature description" +#~ msgid "The temperature used for the heated build plate. If this is 0, the bed will not heat up for this print." +#~ msgstr "Temperatura stosowana przy podgrzewanym stole. Jeśli jest to 0, stół nie rozgrzeje się dla tego wydruku." + #~ msgctxt "wall_x_extruder_nr label" #~ msgid "Inner Walls Extruder" #~ msgstr "Esktruder Wewn. Ściany" diff --git a/resources/i18n/pt_BR/cura.po b/resources/i18n/pt_BR/cura.po index e00c6099c4..9000a6ff35 100644 --- a/resources/i18n/pt_BR/cura.po +++ b/resources/i18n/pt_BR/cura.po @@ -1,14 +1,14 @@ # Cura -# Copyright (C) 2017 Ultimaker +# Copyright (C) 2018 Ultimaker # This file is distributed under the same license as the Cura package. -# Ruben Dulek , 2017. +# Ruben Dulek , 2018. # msgid "" msgstr "" -"Project-Id-Version: Cura 3.0\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-11-21 16:58+0100\n" -"PO-Revision-Date: 2017-12-04 10:20-0300\n" +"Project-Id-Version: Cura 3.2\n" +"Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" +"POT-Creation-Date: 2018-01-29 09:48+0000\n" +"PO-Revision-Date: 2018-02-12 10:20-0300\n" "Last-Translator: Cláudio Sampaio \n" "Language-Team: Cláudio Sampaio and CoderSquirrel \n" "Language: pt_BR\n" @@ -17,7 +17,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:29 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:26 msgctxt "@action" msgid "Machine Settings" msgstr "Ajustes da Máquina" @@ -54,12 +54,11 @@ msgstr "Conectando ao Doodle3D Connect" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:87 #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:155 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:874 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:646 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:875 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:659 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:370 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrintWindow.qml:78 -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:104 -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:99 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:355 #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:188 #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:376 #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:139 @@ -99,7 +98,7 @@ msgctxt "@info:tooltip" msgid "Open the Doodle3D Connect web interface" msgstr "Abrir a interface web do Doodle3D Connect" -#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:34 +#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:33 msgctxt "@item:inmenu" msgid "Show Changelog" msgstr "Exibir registro de alterações" @@ -114,78 +113,83 @@ msgctxt "@info:status" msgid "Profile has been flattened & activated." msgstr "O perfil foi achatado & ativado." -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:26 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:27 msgctxt "@item:inmenu" msgid "USB printing" msgstr "Impressão USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:27 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:28 msgctxt "@action:button Preceded by 'Ready to'." msgid "Print via USB" msgstr "Imprimir pela USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:28 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:29 msgctxt "@info:tooltip" msgid "Print via USB" msgstr "Imprimir pela USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:30 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:31 msgctxt "@info:status" msgid "Connected via USB" msgstr "Conectado via USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:154 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:183 msgctxt "@info:status" msgid "Unable to start a new job because the printer is busy or not connected." msgstr "Incapaz de iniciar novo trabalho porque a impressora está ocupada ou não conectada." -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:154 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:183 msgctxt "@info:title" msgid "Printer Unavailable" msgstr "Impressora Não Disponível" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:457 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:485 msgctxt "@info:status" msgid "This printer does not support USB printing because it uses UltiGCode flavor." msgstr "Esta impressora não suporta impressão USB porque usa G-Code UltiGCode." -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:457 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:485 msgctxt "@info:title" msgid "USB Printing" msgstr "Impressão USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:461 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:489 msgctxt "@info:status" msgid "Unable to start a new job because the printer does not support usb printing." msgstr "Incapaz de iniciar um novo trabalho porque a impressora não suporta impressão USB." -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:461 -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:108 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:489 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:103 #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:146 #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:158 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:945 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1349 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1417 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:946 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1418 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1496 msgctxt "@info:title" msgid "Warning" msgstr "Aviso" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:108 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:103 msgctxt "@info" msgid "Unable to update firmware because there are no printers connected." msgstr "Incapaz de atualizar firmware porque não há impressoras conectadas." -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:122 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:117 #, python-format msgctxt "@info" msgid "Could not find firmware required for the printer at %s." msgstr "Não foi possível encontrar o firmware requerido para a impressora em %s." -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:122 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:117 msgctxt "@info:title" msgid "Printer Firmware" msgstr "Firmware da Impressora" +#: /home/ruben/Projects/Cura/plugins/PrepareStage/__init__.py:12 +msgctxt "@item:inmenu" +msgid "Prepare" +msgstr "Preparar" + #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:23 msgctxt "@action:button Preceded by 'Ready to'." msgid "Save to Removable Drive" @@ -229,11 +233,11 @@ 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:132 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:692 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:700 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:146 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:693 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:701 #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:153 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1358 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:160 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1427 msgctxt "@info:title" msgid "Error" msgstr "Erro" @@ -283,7 +287,7 @@ msgid "Removable Drive" msgstr "Unidade Removível" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:109 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:53 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:51 msgctxt "@action:button Preceded by 'Ready to'." msgid "Print over network" msgstr "Imprimir pela rede" @@ -397,110 +401,110 @@ msgctxt "@info:title" msgid "Printer Status" msgstr "Status da Impressora" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:691 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:692 #, python-brace-format msgctxt "@info:status" msgid "Unable to start a new print job. No Printcore loaded in slot {0}" msgstr "Incapaz de iniciar um novo trabalho de impressão. Nenhum Printcore carregado no slot {0}" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:699 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:700 #, python-brace-format msgctxt "@info:status" msgid "Unable to start a new print job. No material loaded in slot {0}" msgstr "Incapaz de iniciar um novo trabalho de impressão. Não há material carregado no slot {0}" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:709 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:710 #, python-brace-format msgctxt "@label" msgid "Not enough material for spool {0}." msgstr "Não há material suficiente para o carretel {0}." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:719 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:720 #, python-brace-format msgctxt "@label" msgid "Different PrintCore (Cura: {0}, Printer: {1}) selected for extruder {2}" msgstr "PrintCore Diferente (Cura: {0}, Impressora: {1}) selecionado para o extrusor {2}" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:733 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:734 #, 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/NetworkPrinterOutputDevice.py:741 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:742 #, python-brace-format msgctxt "@label" msgid "PrintCore {0} is not properly calibrated. XY calibration needs to be performed on the printer." msgstr "O PrintCore {0} não está calibrado adequadamente. A calibração XY precisa ser executada na impressora." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:746 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:747 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/NetworkPrinterOutputDevice.py:747 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:748 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/NetworkPrinterOutputDevice.py:753 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:754 msgctxt "@window:title" msgid "Mismatched configuration" msgstr "Configuração divergente" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:864 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:262 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:865 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:258 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/NetworkPrinterOutputDevice.py:873 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:874 msgctxt "@info:status" msgid "Sending data to printer" msgstr "Enviando dados à impressora" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:873 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:874 msgctxt "@info:title" msgid "Sending Data" msgstr "Enviando Dados" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:944 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:945 msgctxt "@info:status" msgid "Unable to send data to printer. Is another job still active?" msgstr "Incapaz de enviar dados à impressora. Há outro trabalho de impressão ativo?" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1085 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1087 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:196 msgctxt "@label:MonitorStatus" msgid "Aborting print..." msgstr "Abortando impressão..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1091 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1093 msgctxt "@label:MonitorStatus" msgid "Print aborted. Please check the printer" msgstr "Impressão abortada. Por favor verifique a impressora" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1097 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1099 msgctxt "@label:MonitorStatus" msgid "Pausing print..." msgstr "Pausando impressão..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1099 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1101 msgctxt "@label:MonitorStatus" msgid "Resuming print..." msgstr "Continuando impressão..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1289 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1291 msgctxt "@window:title" msgid "Sync with your printer" msgstr "Sincronizar com a impressora" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1291 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1293 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/NetworkPrinterOutputDevice.py:1293 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1295 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." @@ -521,145 +525,204 @@ msgid "{printer_name} has finished printing '{job_name}'. Please collect the pri msgstr "{printer_name} acabou de imprimir '{job_name}'. Por favor colete a impressão e confirme esvaziamento da mesa." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:115 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:520 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:533 #, python-brace-format msgid "{printer_name} is reserved to print '{job_name}'. Please change the printer's configuration to match the job, for it to start printing." msgstr "{printer_name} está reservada para imprimir '{job_name}'. Por favor altere a configuração da impressora para combinar com este trabalho para que ela comece a imprimir." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:278 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:277 msgctxt "@info:status" msgid "Unable to send new print job: this 3D printer is not (yet) set up to host a group of connected Ultimaker 3 printers." msgstr "Incapaz de enviar novo trabalho de impressão: esta impressora 3D (ainda) não está configurada para hospedar um grupo de impressoras Ultimaker 3 conectadas." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:410 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:423 #, python-brace-format msgctxt "@info:status" msgid "Unable to send print job to group {cluster_name}." msgstr "Incapaz de enviar trabalho de impressão ao grupo {cluster_name}." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:418 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:431 #, python-brace-format msgctxt "@info:status" msgid "Sent {file_name} to group {cluster_name}." msgstr "{file_name} enviado ao grupo {cluster_name}." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:423 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:436 msgctxt "@action:button" msgid "Show print jobs" msgstr "Exibir trabalhos de impressão" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:424 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:437 msgctxt "@info:tooltip" msgid "Opens the print jobs interface in your browser." msgstr "Abrir a interface de trabalhos de impressão em seu navegador." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:489 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:502 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:239 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:47 -msgctxt "@label" +msgctxt "@label Printer name" msgid "Unknown" -msgstr "Desconhecido" +msgstr "Desconhecida" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:492 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:505 #, 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/NetworkClusterPrinterOutputDevice.py:494 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:497 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:507 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:510 msgctxt "@info:status" msgid "Print finished" msgstr "Impressão Concluída" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:522 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:525 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:535 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:538 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:282 msgctxt "@label:status" msgid "Action required" msgstr "Necessária uma ação" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:643 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:656 #, python-brace-format msgctxt "@info:progress" msgid "Sending {file_name} to group {cluster_name}" msgstr "Enviando {file_name} ao grupo {cluster_name}" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.py:19 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.py:17 msgctxt "@action" msgid "Connect via Network" msgstr "Conectar pela rede" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:64 +#: /home/ruben/Projects/Cura/plugins/MonitorStage/__init__.py:12 +msgctxt "@item:inmenu" +msgid "Monitor" +msgstr "Monitor" + +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:66 #, python-brace-format msgctxt "@info Don't translate {machine_name}, since it gets replaced by a printer name!" msgid "New features are available for your {machine_name}! It is recommended to update the firmware on your printer." msgstr "Novos recursos estão disponível para sua {machine_name}! Recomenda-se atualizar o firmware da impressora." -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:65 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:67 #, python-format msgctxt "@info:title The %s gets replaced with the printer name." msgid "New %s firmware available" msgstr "Novo firmware de %s disponível" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:66 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:68 msgctxt "@action:button" msgid "How to update" msgstr "Como atualizar" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:77 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:79 msgctxt "@info" msgid "Could not access update information." msgstr "Não foi possível acessar informação de atualização." -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksReader.py:199 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksReader.py:579 msgctxt "@info:status" -msgid "Errors appeared while opening your SolidWorks file! Please check, whether it is possible to open your file in SolidWorks itself without any problems as well!" -msgstr "Erros apareceram ao abrir seu arquivo SolidWorks! Por favor verifique se é possível abrir seu arquivo no próprio SolidWorks sem problema também!" +msgid "SolidWorks reported errors, while opening your file. We recommend to solve these issues inside SolidWorks itself." +msgstr "O SolidWorks relatou problemas ao abrir seu arquivo. Recomendamos resolver tais problemas dentro do próprio SolidWorks." -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:31 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksReader.py:591 +msgctxt "@info:status" +msgid "" +"Found no models inside your drawing. Could you please check it's content again and make sure one part or assembly is inside?\n" +"\n" +" Thanks!." +msgstr "" +"Não foram encontrados modelos dentro de seu desenho. Poderia verificar seu conteúdo novamente e se assegurar que uma parte ou montagem está incluída?\n" +"\n" +" Obrigado!." + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksReader.py:595 +msgctxt "@info:status" +msgid "" +"Found more then one part or assembly inside your drawing. We currently only support drawings with exactly one part or assembly inside.\n" +"\n" +"Sorry!" +msgstr "" +"Foi encontrado mais de uma parte ou montagem dentro de seu desenho. Atualmente só suportamos desenhos com exatamente uma parte ou montagem dentro.\n" +"\n" +"Desculpe!" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:25 msgctxt "@item:inlistbox" msgid "SolidWorks part file" msgstr "Arquivo de parte de SolidWorks" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:35 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:29 msgctxt "@item:inlistbox" msgid "SolidWorks assembly file" msgstr "Arquivo de montagem de SolidWorks" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.py:21 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:33 +msgctxt "@item:inlistbox" +msgid "SolidWorks drawing file" +msgstr "Arquivo de desenho do SolidWorks" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:48 +msgctxt "@info:status" +msgid "" +"Dear customer,\n" +"We could not find a valid installation of SolidWorks on your system. That means that either SolidWorks is not installed or you don't own an valid license. Please make sure that running SolidWorks itself works without issues and/or contact your ICT.\n" +"\n" +"With kind regards\n" +" - Thomas Karl Pietrowski" +msgstr "" +"Caro cliente,\n" +"Não foi encontrada uma intalação válida de SolidWorks no seu sistema. Isso significa que ou o SolidWorks não está instalado ou você nào tem licença válida. Por favor se assegure que rodar o Solidworks funciona sem problemas e/ou contate seu suporte.\n" +"\n" +"Atenciosamente\n" +" - Thomas Karl Pietrowski" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:57 +msgctxt "@info:status" +msgid "" +"Dear customer,\n" +"You are currently running this plugin on an operating system other than Windows. This plugin will only work on Windows with SolidWorks installed, including an valid license. Please install this plugin on a Windows machine with SolidWorks installed.\n" +"\n" +"With kind regards\n" +" - Thomas Karl Pietrowski" +msgstr "" +"Caro cliente,\n" +"Você está no momento rodando este complemento em um sistema operacional diferente de Windows. Este complemento só funcionará no Windows com o SolidWorks instalado e com licença válida. Por favor instale este complemento em uma máquina Windows com o SolidWorks instalado.\n" +"\n" +"Atenciosamente\n" +" - Thomas Karl Pietrowski" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksDialogHandler.py:70 msgid "Configure" msgstr "Configure" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/CommonComReader.py:135 -#, python-format -msgctxt "@info:status" -msgid "Error while starting %s!" -msgstr "Erro ao iniciar %s!" +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksDialogHandler.py:71 +msgid "Installation guide for SolidWorks macro" +msgstr "Guia de Instalação para macro do SolidWorks" #: /home/ruben/Projects/Cura/plugins/SimulationView/__init__.py:14 msgctxt "@item:inlistbox" -msgid "Simulation view" -msgstr "Visão simulada" +msgid "Layer view" +msgstr "Visão de Camadas" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:100 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:103 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:101 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:104 msgctxt "@info:title" msgid "Simulation View" msgstr "Visão Simulada" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.py:26 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.py:25 msgid "Modify G-Code" msgstr "Modificar G-Code" #: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:43 msgctxt "@info" -msgid "Cura collects anonymised slicing statistics. You can disable this in the preferences." -msgstr "O Cura coleta estatística de fatiamento anonimizadas. Você pode desabilitar isso nas preferências." +msgid "Cura collects anonymized usage statistics." +msgstr "O Cura coleta estatísticas anônimas de uso." #: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:46 msgctxt "@info:title" @@ -668,14 +731,43 @@ msgstr "Coletando Dados" #: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:48 msgctxt "@action:button" -msgid "Dismiss" -msgstr "Fechar" +msgid "Allow" +msgstr "Permitir" + +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:49 +msgctxt "@action:tooltip" +msgid "Allow Cura to send anonymized usage statistics to help prioritize future improvements to Cura. Some of your preferences and settings are sent, the Cura version and a hash of the models you're slicing." +msgstr "Permite que o Cura envie estatísticas anônimas de uso para ajudar a priorizar futuras melhorias ao software. Algumas de suas preferências e ajustes são enviados junto à versão atual do Cura e um hash dos modelos que estão sendo fatiados." + +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:50 +msgctxt "@action:button" +msgid "Disable" +msgstr "Desabilitar" + +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:51 +msgctxt "@action:tooltip" +msgid "Don't allow Cura to send anonymized usage statistics. You can enable it again in the preferences." +msgstr "Não permitir que o Cura envie estatísticas anônimas de uso. Você pode habilitar novamente nas preferências." #: /home/ruben/Projects/Cura/plugins/LegacyProfileReader/__init__.py:14 msgctxt "@item:inlistbox" msgid "Cura 15.04 profiles" msgstr "Perfis do Cura 15.04" +#: /home/ruben/Projects/Cura/plugins/CuraBlenderPlugin/__init__.py:15 +msgctxt "@item:inlistbox" +msgid "Blender file" +msgstr "Arquivo do Blender" + +#: /home/ruben/Projects/Cura/plugins/CuraBlenderPlugin/CadIntegrationUtils/CommonReader.py:199 +msgctxt "@info:status" +msgid "" +"Could not export using \"{}\" quality!\n" +"Felt back to \"{}\"." +msgstr "" +"Não foi possível exportar usando qualidade \"{}\"!\n" +"Foi usada a \"{}\"." + #: /home/ruben/Projects/Cura/plugins/GCodeProfileReader/__init__.py:14 #: /home/ruben/Projects/Cura/plugins/GCodeReader/__init__.py:14 msgctxt "@item:inlistbox" @@ -707,49 +799,49 @@ msgctxt "@item:inlistbox" msgid "GIF Image" msgstr "Imagem GIF" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:269 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:299 msgctxt "@info:status" msgid "Unable to slice with the current material as it is incompatible with the selected machine or configuration." msgstr "Incapaz de fatiar com o material atual visto que é incompatível com a máquina ou configuração selecionada." -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:269 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:297 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:319 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:299 #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:327 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:336 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:349 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:357 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:366 msgctxt "@info:title" msgid "Unable to slice" msgstr "Incapaz de fatiar" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:296 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:326 #, python-brace-format msgctxt "@info:status" msgid "Unable to slice with the current settings. The following settings have errors: {0}" msgstr "Incapaz de fatiar com os ajustes atuais. Os seguintes ajustes têm erros: {0}" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:318 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:348 #, python-brace-format msgctxt "@info:status" msgid "Unable to slice due to some per-model settings. The following settings have errors on one or more models: {error_labels}" msgstr "Incapaz de fatiar devido a alguns ajustes por modelo. Os seguintes ajustes têm erros em um ou mais dos modelos: {error_labels}" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:326 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:356 msgctxt "@info:status" msgid "Unable to slice because the prime tower or prime position(s) are invalid." msgstr "Incapaz de fatiar porque a torre de purga ou posição de purga são inválidas." -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:335 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:365 msgctxt "@info:status" msgid "Nothing to slice because none of the models fit the build volume. Please scale or rotate models to fit." msgstr "Nada a fatiar porque nenhum dos modelos cabe no volume de impressão. Por favor redimensione ou rotacione os modelos para caberem." #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:50 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:239 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:242 msgctxt "@info:status" msgid "Processing Layers" msgstr "Processando Camadas" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:239 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:242 msgctxt "@info:title" msgid "Information" msgstr "Informação" @@ -786,14 +878,14 @@ msgstr "Erro ao copiar arquivos de plugins Siemens NX. Por favor, verifique seu msgid "Failed to install Siemens NX plugin. Could not set environment variable UGII_USER_DIR for Siemens NX." msgstr "Erro ao instalar arquivos de plugins Siemens NX. Não foi possível ajustar a variável de ambiente UGII_USER_DIR para o Simenes NX." -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:167 -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:585 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:165 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:590 msgctxt "@title:tab" msgid "Recommended" msgstr "Recomendado" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:169 -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:590 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:167 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:595 msgctxt "@title:tab" msgid "Custom" msgstr "Personalizado" @@ -804,24 +896,24 @@ msgctxt "@item:inlistbox" msgid "3MF File" msgstr "Arquivo 3MF" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:126 -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1142 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:159 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1185 msgctxt "@label" msgid "Nozzle" msgstr "Bico" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:164 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:152 #, python-brace-format msgctxt "@info:status" msgid "Failed to get plugin ID from {0}" msgstr "Falha ao pegar identificador do complemento de {0}" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:165 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:153 msgctxt "@info:tile" msgid "Warning" msgstr "Aviso" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:203 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:191 msgctxt "@window:title" msgid "Plugin browser" msgstr "Navegador de complementos" @@ -836,18 +928,18 @@ msgctxt "@item:inlistbox" msgid "G File" msgstr "Arquivo G" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:314 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:321 msgctxt "@info:status" msgid "Parsing G-code" msgstr "Interpretando G-Code" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:316 -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:426 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:323 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:464 msgctxt "@info:title" msgid "G-code Details" msgstr "Detalhes do G-Code" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:424 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:462 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." @@ -858,6 +950,16 @@ 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:17 +msgctxt "@item:inlistbox" +msgid "Profile Assistant" +msgstr "Assistente de Perfil" + #: /home/ruben/Projects/Cura/plugins/3MFWriter/__init__.py:30 msgctxt "@item:inlistbox" msgid "3MF file" @@ -889,142 +991,116 @@ msgctxt "@action" msgid "Level build plate" msgstr "Nivelar mesa" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:89 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:98 msgctxt "@tooltip" msgid "Outer Wall" msgstr "Parede Externa" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:90 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:99 msgctxt "@tooltip" msgid "Inner Walls" msgstr "Paredes Internas" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:91 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:100 msgctxt "@tooltip" msgid "Skin" msgstr "Contorno" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:92 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:101 msgctxt "@tooltip" msgid "Infill" msgstr "Preenchimento" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:93 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:102 msgctxt "@tooltip" msgid "Support Infill" msgstr "Preenchimento de Suporte" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:94 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:103 msgctxt "@tooltip" msgid "Support Interface" msgstr "Interface de Suporte" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:95 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:104 msgctxt "@tooltip" msgid "Support" msgstr "Suporte" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:96 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:105 msgctxt "@tooltip" msgid "Skirt" msgstr "Skirt (Saia)" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:97 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:106 msgctxt "@tooltip" msgid "Travel" msgstr "Percurso" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:98 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:107 msgctxt "@tooltip" msgid "Retractions" msgstr "Retrações" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:99 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:108 msgctxt "@tooltip" msgid "Other" msgstr "Outros" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:199 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:231 msgctxt "@label unknown material" msgid "Unknown" msgstr "Desconhecido" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:284 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:318 #, python-brace-format msgctxt "@label" msgid "Pre-sliced file {0}" msgstr "Arquivo pré-fatiado {0}" -#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:469 +#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:440 msgctxt "@item:material" msgid "No material loaded" msgstr "Não há material carregado" -#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:476 +#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:447 msgctxt "@item:material" msgid "Unknown material" msgstr "Material desconhecido" -#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:30 -msgctxt "@info:status" -msgid "Finding new location for objects" -msgstr "Achando novos lugares para objetos" - -#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:34 -msgctxt "@info:title" -msgid "Finding Location" -msgstr "Buscando Localização" - -#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:89 -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:83 -msgctxt "@info:status" -msgid "Unable to find a location within the build volume for all objects" -msgstr "Incapaz de achar um lugar dentro do volume de construção para todos os objetos" - -#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:90 -msgctxt "@info:title" -msgid "Can't Find Location" -msgstr "Não Foi Encontrada Localização" - -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:431 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:113 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:437 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:120 msgctxt "@title:window" msgid "File Already Exists" msgstr "O Arquivo Já Existe" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:432 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:114 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:438 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:121 #, 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:815 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:872 msgctxt "@label" msgid "Custom" msgstr "Personalizado" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:819 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:876 msgctxt "@label" msgid "Custom Material" msgstr "Material Personalizado" -#: /home/ruben/Projects/Cura/cura/Settings/ExtrudersModel.py:182 -msgctxt "@menuitem" -msgid "Global" -msgstr "Global" - -#: /home/ruben/Projects/Cura/cura/Settings/ExtrudersModel.py:229 +#: /home/ruben/Projects/Cura/cura/Settings/ExtrudersModel.py:205 msgctxt "@menuitem" msgid "Not overridden" msgstr "Não sobrepujado" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:117 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:124 msgctxt "@info:status" msgid "The selected material is incompatible with the selected machine or configuration." msgstr "O material selecionado é incompatível com a máquina ou configuração selecionada." -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:118 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:125 #: /home/ruben/Projects/Cura/cura/Settings/MaterialManager.py:24 msgctxt "@info:title" msgid "Incompatible Material" @@ -1045,67 +1121,89 @@ msgctxt "@action" msgid "Undo changing the material diameter." msgstr "Desfaz a mudança no diâmetro do material." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:144 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:151 #, 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:151 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:158 #, 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:156 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:163 #, 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:157 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:164 msgctxt "@info:title" msgid "Export succeeded" msgstr "Exportação concluída" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:183 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:205 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:214 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:248 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:190 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:211 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:271 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to import profile from {0}: {1}" msgstr "Falha ao importa perfil de {0}: {1}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:216 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:252 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:230 +#, python-brace-format +msgctxt "@info:status Don't translate the XML tags or !" +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:240 +#, python-brace-format +msgctxt "@info:status Don't translate the XML tags or !" +msgid "The machine defined in profile {0} doesn't match with your current machine, could not import it." +msgstr "A máquina definida no perfil {0} não corresponde à sua máquina atual, não foi possível importá-lo." + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:274 #, 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:255 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:277 +#, 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:280 #, 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:274 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:298 msgctxt "@label" msgid "Custom profile" msgstr "Perfil personalizado" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:285 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:313 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:321 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:349 #, python-brace-format msgctxt "@info:status" msgid "Could not find a quality type {0} for the current configuration." msgstr "Não foi possível encontrar tipo de qualidade {0} para a configuração atual." +#: /home/ruben/Projects/Cura/cura/ObjectsModel.py:46 +#, python-brace-format +msgctxt "@label" +msgid "Group #{group_nr}" +msgstr "Grupo #{group_nr}" + #: /home/ruben/Projects/Cura/cura/BuildVolume.py:100 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." @@ -1116,145 +1214,170 @@ msgctxt "@info:title" msgid "Build Volume" msgstr "Volume de Impressão" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:34 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:25 msgctxt "@info:status" msgid "Multiplying and placing objects" msgstr "Multiplicando e colocando objetos" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:35 -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:83 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:26 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:78 msgctxt "@info:title" msgid "Placing Object" msgstr "Colocando Objeto" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:80 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:78 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:88 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:152 +msgctxt "@info:status" +msgid "Unable to find a location within the build volume for all objects" +msgstr "Incapaz de achar um lugar dentro do volume de construção para todos os objetos" + +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:29 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:64 +msgctxt "@info:status" +msgid "Finding new location for objects" +msgstr "Achando novos lugares para objetos" + +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:33 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:68 +msgctxt "@info:title" +msgid "Finding Location" +msgstr "Buscando Localização" + +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:89 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:153 +msgctxt "@info:title" +msgid "Can't Find Location" +msgstr "Não Foi Encontrada Localização" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:81 msgctxt "@title:window" msgid "Crash Report" msgstr "Relatório de Problema" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:93 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:94 msgctxt "@label crash message" msgid "" -"

      A fatal exception has occurred. Please send us this Crash Report to fix the problem

      \n" +"

      A fatal error has occurred. 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 "" -"

      Uma exceção fatal aocorreu. Por favor nos envie este Relatório de Erros para consertarmos o problema

      \n" -"

      Por favor use o botão \"Enviar relatório\" para postar um relato de bug automaticamente em nossos servidores

      \n" +"

      Um erro fatal ocorreu. Por favor nos envie este Relatório de Erro para consertar o problema

      \n" +"

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

      \n" " " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:101 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:102 msgctxt "@title:groupbox" msgid "System information" msgstr "Informação do Sistema" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:109 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:110 msgctxt "@label unknown version of Cura" msgid "Unknown" msgstr "Desconhecida" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:111 -#, python-brace-format -msgctxt "@label Cura version" -msgid "Cura version: {version}
      " -msgstr "Versão do Cura: {version}
      " - #: /home/ruben/Projects/Cura/cura/CrashHandler.py:112 -#, python-brace-format -msgctxt "@label Platform" -msgid "Platform: {platform}
      " -msgstr "Plataforma: {platform}
      " +msgctxt "@label Cura version number" +msgid "Cura version" +msgstr "Versão do Cura" #: /home/ruben/Projects/Cura/cura/CrashHandler.py:113 -#, python-brace-format -msgctxt "@label Qt version" -msgid "Qt version: {qt}
      " -msgstr "Versão da Qt: {qt}
      " +msgctxt "@label Type of platform" +msgid "Platform" +msgstr "Plataforma" #: /home/ruben/Projects/Cura/cura/CrashHandler.py:114 -#, python-brace-format -msgctxt "@label PyQt version" -msgid "PyQt version: {pyqt}
      " -msgstr "Versão da PyQt: {pyqt}
      " +msgctxt "@label" +msgid "Qt version" +msgstr "Versão do Qt" #: /home/ruben/Projects/Cura/cura/CrashHandler.py:115 -#, python-brace-format -msgctxt "@label OpenGL" -msgid "OpenGL: {opengl}
      " -msgstr "OpenGL: {opengl}
      " +msgctxt "@label" +msgid "PyQt version" +msgstr "Versão do PyQt" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:130 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:116 +msgctxt "@label OpenGL version" +msgid "OpenGL" +msgstr "OpenGL" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:133 +msgctxt "@label" +msgid "not yet initialised
      " +msgstr "ainda não inicializado
      " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:136 #, python-brace-format msgctxt "@label OpenGL version" msgid "
    • OpenGL Version: {version}
    • " msgstr "
    • Versão da OpenGL: {version}
    • " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:131 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:137 #, python-brace-format msgctxt "@label OpenGL vendor" msgid "
    • OpenGL Vendor: {vendor}
    • " msgstr "
    • Fornecedor da OpenGL: {vendor}
    • " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:132 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:138 #, python-brace-format msgctxt "@label OpenGL renderer" msgid "
    • OpenGL Renderer: {renderer}
    • " msgstr "
    • Renderizador da OpenGL: {renderer}
    • " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:141 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:147 msgctxt "@title:groupbox" -msgid "Exception traceback" -msgstr "Traceback de exceção" +msgid "Error traceback" +msgstr "Traceback do erro" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:208 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:214 msgctxt "@title:groupbox" msgid "Logs" msgstr "Registros" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:231 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:237 msgctxt "@title:groupbox" msgid "User description" msgstr "Descrição do usuário" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:246 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:252 msgctxt "@action:button" msgid "Send report" msgstr "Enviar relatório" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:256 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:274 msgctxt "@info:progress" msgid "Loading machines..." msgstr "Carregando máquinas..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:661 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:660 msgctxt "@info:progress" msgid "Setting up scene..." msgstr "Configurando cena..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:703 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:702 msgctxt "@info:progress" msgid "Loading interface..." msgstr "Carregando interface..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:874 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:899 #, 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:1348 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1417 #, 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:1357 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1426 #, 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:1416 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1495 msgctxt "@info:status" msgid "The selected model was too small to load." msgstr "O modelo selecionado é pequenos demais para carregar." @@ -1283,12 +1406,11 @@ msgstr "X (largura)" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:119 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:129 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:235 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:288 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:300 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:391 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:401 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:413 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:840 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:383 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:394 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:412 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:424 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:849 msgctxt "@label" msgid "mm" msgstr "mm" @@ -1378,68 +1500,67 @@ msgctxt "@tooltip" msgid "The height difference between the tip of the nozzle and the gantry system (X and Y axes). Used to prevent collisions between previous prints and the gantry when printing \"One at a Time\"." msgstr "A diferença de altura entre a ponta do bico e o sistema de eixos X e Y. Usado para prevenir colisões entre impressões e a cabeça ao imprimir \"Um de cada Vez\"." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:255 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:254 msgctxt "@label" msgid "Number of Extruders" msgstr "Número de Extrusores" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:289 -msgctxt "@tooltip" -msgid "The nominal diameter of filament supported by the printer. The exact diameter will be overridden by the material and/or the profile." -msgstr "O diâmetro nominal do filamento suportado pela impressora. O diâmetro exato será sobrepujado pelo material e/ou perfil." - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:291 -msgctxt "@label" -msgid "Material diameter" -msgstr "Diâmetro do material" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:299 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:390 -msgctxt "@label" -msgid "Nozzle size" -msgstr "Tamanho do bico" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:317 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:310 msgctxt "@label" msgid "Start Gcode" msgstr "G-Code Inicial" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:327 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:320 msgctxt "@tooltip" msgid "Gcode commands to be executed at the very start." msgstr "Comandos de G-Code a serem executados no início da impressão." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:336 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:329 msgctxt "@label" msgid "End Gcode" msgstr "G-Code Final" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:346 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:339 msgctxt "@tooltip" msgid "Gcode commands to be executed at the very end." msgstr "Comandos de G-Code a serem executados no final da impressão." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:378 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:370 msgctxt "@label" msgid "Nozzle Settings" msgstr "Ajustes do Bico" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:400 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:382 +msgctxt "@label" +msgid "Nozzle size" +msgstr "Tamanho do bico" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:393 +msgctxt "@label" +msgid "Compatible material diameter" +msgstr "Diâmetro de material compatível" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:395 +msgctxt "@tooltip" +msgid "The nominal diameter of filament supported by the printer. The exact diameter will be overridden by the material and/or the profile." +msgstr "O diâmetro nominal do filamento suportado pela impressora. O diâmetro exato será sobrepujado pelo material e/ou perfil." + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:411 msgctxt "@label" msgid "Nozzle offset X" msgstr "Deslocamento X do Bico" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:412 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:423 msgctxt "@label" msgid "Nozzle offset Y" msgstr "Deslocamento Y do Bico" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:433 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:444 msgctxt "@label" msgid "Extruder Start Gcode" msgstr "G-Code Inicial do Extrusor" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:451 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:462 msgctxt "@label" msgid "Extruder End Gcode" msgstr "G-Code Final do Extrusor" @@ -1452,8 +1573,9 @@ msgstr "Registro de alterações" #: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.qml:37 #: /home/ruben/Projects/Cura/plugins/USBPrinting/FirmwareUpdateWindow.qml:107 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:55 -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:445 -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:357 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:306 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:456 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:492 #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:80 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:123 #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:147 @@ -1537,7 +1659,7 @@ msgstr "Editar" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:96 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:50 #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:95 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:190 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:171 msgctxt "@action:button" msgid "Remove" msgstr "Remover" @@ -1559,12 +1681,12 @@ msgid "Type" msgstr "Tipo" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:233 -msgctxt "@label" +msgctxt "@label Printer name" msgid "Ultimaker 3" msgstr "Ultimaker 3" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:236 -msgctxt "@label" +msgctxt "@label Printer name" msgid "Ultimaker 3 Extended" msgstr "Ultimaker 3 Extended" @@ -1610,8 +1732,6 @@ msgid "Enter the IP address or hostname of your printer on the network." msgstr "Introduza o endereço IP ou hostname da sua impressora na rede." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:379 -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:92 -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:88 #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:181 msgctxt "@action:button" msgid "OK" @@ -1632,6 +1752,11 @@ msgctxt "@label: arg 1 is group name" msgid "%1 is not set up to host a group of connected Ultimaker 3 printers" msgstr "%1 não está configurada para hospedar um grupo de impressora Ultimaker 3 conectadas" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterMonitorItem.qml:55 +msgctxt "@label link to connect manager" +msgid "Add/Remove printers" +msgstr "Adicionar/Remover impressoras" + #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/OpenPanelButton.qml:14 msgctxt "@info:tooltip" msgid "Opens the print jobs page with your default web browser." @@ -1662,11 +1787,16 @@ msgid "Available" msgstr "Disponível" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:43 -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:101 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:100 msgctxt "@label:MonitorStatus" msgid "Lost connection with the printer" msgstr "A conexão à impressora foi perdida" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:47 +msgctxt "@label Printer status" +msgid "Unknown" +msgstr "Desconhecido" + #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:257 msgctxt "@label:status" msgid "Disabled" @@ -1758,138 +1888,252 @@ msgctxt "@action:button" msgid "Activate Configuration" msgstr "Ativar Configuração" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:20 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:21 msgctxt "@title:window" -msgid "Cura SolidWorks Plugin Configuration" -msgstr "Configuração do Complemento de Solidworks do Cura" +msgid "SolidWorks: Export wizard" +msgstr "SolidWorks: Assistente de Exportação" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:44 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:45 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:140 msgctxt "@action:label" -msgid "Default quality of the exported STL:" -msgstr "Qualidade default do STL exportado:" - -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:79 -msgctxt "@option:curaSolidworksStlQuality" -msgid "Always ask" -msgstr "Sempre perguntar" - -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:80 -msgctxt "@option:curaSolidworksStlQuality" -msgid "Always use Fine quality" -msgstr "Sempre usar qualidade Alta" - -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:81 -msgctxt "@option:curaSolidworksStlQuality" -msgid "Always use Coarse quality" -msgstr "Sempre usar qualidade Baixa" - -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:20 -msgctxt "@title:window" -msgid "Import SolidWorks File as STL..." -msgstr "Importar Arquivo SolidWorks como STL..." - -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:43 -msgctxt "@info:tooltip" -msgid "Quality of the Exported STL" -msgstr "Qualidade do STL Exportado" - -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:48 -msgctxt "@action:label" -msgid "Quality" +msgid "Quality:" msgstr "Qualidade" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:62 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:78 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:179 msgctxt "@option:curaSolidworksStlQuality" -msgid "Coarse" +msgid "Fine (3D-printing)" +msgstr "Fina (impressão-3D)" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:79 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:180 +msgctxt "@option:curaSolidworksStlQuality" +msgid "Coarse (3D-printing)" msgstr "Baixa" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:63 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:80 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:181 msgctxt "@option:curaSolidworksStlQuality" -msgid "Fine" -msgstr "Alta" +msgid "Fine (SolidWorks)" +msgstr "Fina (SolidWorks)" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:78 -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:82 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:81 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:182 +msgctxt "@option:curaSolidworksStlQuality" +msgid "Coarse (SolidWorks)" +msgstr "Baixa (SolidWorks)" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:94 msgctxt "@text:window" -msgid "Remember my choice" -msgstr "Lembrar minha escolha" +msgid "Show this dialog again" +msgstr "Mostrar este diálogo novamente" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:81 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:104 +msgctxt "@action:button" +msgid "Continue" +msgstr "Continuar" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:116 +msgctxt "@action:button" +msgid "Abort" +msgstr "Abortar" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:21 +msgctxt "@title:window" +msgid "How to install Cura SolidWorks macro" +msgstr "Como instalar a macro de SolidWorks do Cura" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:62 +msgctxt "@description:label" +msgid "Steps:" +msgstr "Passos:" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:140 +msgctxt "@action:button" +msgid "" +"Open the directory\n" +"with macro and icon" +msgstr "" +"Abrir o diretório\n" +"com a macro e o ícone" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:160 +msgctxt "@description:label" +msgid "Instructions:" +msgstr "Instruções:" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:202 +msgctxt "@action:playpause" +msgid "Play" +msgstr "Tocar" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:206 +msgctxt "@action:playpause" +msgid "Pause" +msgstr "Pausar" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:268 +msgctxt "@action:button" +msgid "Previous Step" +msgstr "Passo Anterior" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:283 +msgctxt "@action:button" +msgid "Done" +msgstr "Finalizado" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:287 +msgctxt "@action:button" +msgid "Next Step" +msgstr "Passo Seguinte" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:21 +msgctxt "@title:window" +msgid "SolidWorks plugin: Configuration" +msgstr "Complemento do SolidWorks: Configuração" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:39 +msgctxt "@title:tab" +msgid "Conversion settings" +msgstr "Ajustes de conversão" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:66 +msgctxt "@label" +msgid "First choice:" +msgstr "Primeira escolha:" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:86 +msgctxt "@text:menu" +msgid "Latest installed version (Recommended)" +msgstr "Última versão instalada (Recomendado)" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:95 +msgctxt "@text:menu" +msgid "Default version" +msgstr "Versão default" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:193 +msgctxt "@label" +msgid "Show wizard before opening SolidWorks files" +msgstr "Mostrar o assistente antes de abrir arquivos do SolidWorks" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:203 +msgctxt "@label" +msgid "Automatically rotate opened file into normed orientation" +msgstr "Rotacionar automaticamente o arquivo aberto em orientação normalizada" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:210 +msgctxt "@title:tab" +msgid "Installation(s)" +msgstr "Instalações" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:284 +msgctxt "@label" +msgid "COM service found" +msgstr "Serviço COM encontrado" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:295 +msgctxt "@label" +msgid "Executable found" +msgstr "Executável encontrado" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:306 +msgctxt "@label" +msgid "COM starting" +msgstr "COM iniciando" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:317 +msgctxt "@label" +msgid "Revision number" +msgstr "Número de revisão" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:328 +msgctxt "@label" +msgid "Functions available" +msgstr "Funções disponíveis" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:341 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:264 +msgctxt "@action:button" +msgid "Save" +msgstr "Salvar" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:117 msgctxt "@label" msgid "Color scheme" msgstr "Esquema de Cores" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:96 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:132 msgctxt "@label:listbox" msgid "Material Color" msgstr "Cor do Material" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:100 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:136 msgctxt "@label:listbox" msgid "Line Type" msgstr "Tipo de Linha" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:104 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:140 msgctxt "@label:listbox" msgid "Feedrate" msgstr "Taxa de alimentação" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:108 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:144 msgctxt "@label:listbox" msgid "Layer thickness" msgstr "Largura de camada" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:148 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:185 msgctxt "@label" msgid "Compatibility Mode" msgstr "Modo de Compatibilidade" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:230 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:264 msgctxt "@label" msgid "Show Travels" msgstr "Exibir Percursos" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:236 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:270 msgctxt "@label" msgid "Show Helpers" msgstr "Exibir Assistentes" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:242 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:276 msgctxt "@label" msgid "Show Shell" msgstr "Exibir Perímetro" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:248 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:282 msgctxt "@label" msgid "Show Infill" msgstr "Exibir Preenchimento" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:297 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:330 msgctxt "@label" msgid "Only Show Top Layers" msgstr "Somente Exibir Camadas Superiores" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:306 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:339 msgctxt "@label" msgid "Show 5 Detailed Layers On Top" msgstr "Exibir 5 Camadas Superiores Detalhadas" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:317 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:350 msgctxt "@label" msgid "Top / Bottom" msgstr "Topo / Base" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:321 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:354 msgctxt "@label" msgid "Inner Wall" msgstr "Parede Interna" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:378 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:410 msgctxt "@label" msgid "min" msgstr "mín" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:420 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:452 msgctxt "@label" msgid "max" msgstr "máx" @@ -1914,7 +2158,7 @@ msgctxt "@label" msgid "Settings" msgstr "Ajustes" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:455 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:466 msgctxt "@info:tooltip" msgid "Change active post-processing scripts" msgstr "Troca os scripts de pós-processamento ativos" @@ -1989,23 +2233,53 @@ msgctxt "@action:label" msgid "Smoothing" msgstr "Suavização" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:208 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:38 +msgctxt "@label" +msgid "Mesh Type" +msgstr "Tipo de Malha" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:69 +msgctxt "@label" +msgid "Normal model" +msgstr "Modelo normal" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:76 +msgctxt "@label" +msgid "Print as support" +msgstr "Imprimir como suporte" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:84 +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:92 +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:100 +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:333 msgctxt "@action:button" msgid "Select settings" msgstr "Selecionar ajustes" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:248 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:375 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:272 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:402 #: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:91 msgctxt "@label:textbox" msgid "Filter..." msgstr "Filtrar..." -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:296 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:426 msgctxt "@label:checkbox" msgid "Show all" msgstr "Exibir tudo" @@ -2367,66 +2641,66 @@ msgctxt "@label" msgid "Everything is in order! You're done with your CheckUp." msgstr "Tudo está em ordem! A verificação terminou." -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:88 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:87 msgctxt "@label:MonitorStatus" msgid "Not connected to a printer" msgstr "Não conectado a nenhuma impressora." -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:90 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:89 msgctxt "@label:MonitorStatus" msgid "Printer does not accept commands" msgstr "A impressora não aceita comandos" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:96 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:95 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:194 msgctxt "@label:MonitorStatus" msgid "In maintenance. Please check the printer" msgstr "Em manutenção. Por favor verifique a impressora" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:103 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:102 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:184 msgctxt "@label:MonitorStatus" msgid "Printing..." msgstr "Imprimindo..." -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:106 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:105 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:186 msgctxt "@label:MonitorStatus" msgid "Paused" msgstr "Pausado" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:109 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:108 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:188 msgctxt "@label:MonitorStatus" msgid "Preparing..." msgstr "Preparando..." -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:111 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:110 msgctxt "@label:MonitorStatus" msgid "Please remove the print" msgstr "Por favor remova a impressão" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:237 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:241 msgctxt "@label:" msgid "Resume" msgstr "Continuar" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:241 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:245 msgctxt "@label:" msgid "Pause" msgstr "Pausar" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:270 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:274 msgctxt "@label:" msgid "Abort Print" msgstr "Abortar Impressão" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:280 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:284 msgctxt "@window:title" msgid "Abort print" msgstr "Abortar impressão" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:282 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:286 msgctxt "@label" msgid "Are you sure you want to abort the print?" msgstr "Tem certeza que deseja abortar a impressão?" @@ -2461,19 +2735,19 @@ msgid "Customized" msgstr "Personalizado" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:157 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:593 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:595 msgctxt "@option:discardOrKeep" msgid "Always ask me this" msgstr "Sempre perguntar" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:158 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:594 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:596 msgctxt "@option:discardOrKeep" msgid "Discard and never ask again" msgstr "Descartar e não perguntar novamente" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:159 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:595 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:597 msgctxt "@option:discardOrKeep" msgid "Keep and never ask again" msgstr "Manter e não perguntar novamente" @@ -2508,72 +2782,72 @@ msgctxt "@label" msgid "Brand" msgstr "Marca" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:92 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:88 msgctxt "@label" msgid "Material Type" msgstr "Tipo de Material" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:105 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:97 msgctxt "@label" msgid "Color" msgstr "Cor" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:139 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:141 msgctxt "@label" msgid "Properties" msgstr "Propriedades" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:141 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:143 msgctxt "@label" msgid "Density" msgstr "Densidade" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:156 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:158 msgctxt "@label" msgid "Diameter" msgstr "Diâmetro" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:185 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:187 msgctxt "@label" msgid "Filament Cost" msgstr "Custo do Filamento" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:201 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:203 msgctxt "@label" msgid "Filament weight" msgstr "Peso do Filamento" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:218 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:220 msgctxt "@label" msgid "Filament length" msgstr "Comprimento do Filamento" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:227 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:229 msgctxt "@label" msgid "Cost per Meter" msgstr "Custo por Metro" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:241 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:243 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/MaterialView.qml:248 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:250 msgctxt "@label" msgid "Unlink Material" msgstr "Desvincular Material" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:259 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:261 msgctxt "@label" msgid "Description" msgstr "Descrição" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:272 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:274 msgctxt "@label" msgid "Adhesion Information" msgstr "Informação sobre Aderência" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:298 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:300 msgctxt "@label" msgid "Print settings" msgstr "Ajustes de impressão" @@ -2614,7 +2888,7 @@ msgid "Unit" msgstr "Unidade" #: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:14 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:439 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:509 msgctxt "@title:tab" msgid "General" msgstr "Geral" @@ -2629,230 +2903,255 @@ msgctxt "@label" msgid "Language:" msgstr "Idioma:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:205 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:207 msgctxt "@label" msgid "Currency:" msgstr "Moeda:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:219 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:221 msgctxt "@label" msgid "Theme:" msgstr "Tema:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:279 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:281 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:296 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:298 msgctxt "@info:tooltip" msgid "Slice automatically when changing settings." msgstr "Fatiar automaticamente quando mudar ajustes." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:304 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:306 msgctxt "@option:check" msgid "Slice automatically" msgstr "Fatiar automaticamente" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:318 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:320 msgctxt "@label" msgid "Viewport behavior" msgstr "Comportamento da área de visualização" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:326 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:328 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:335 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:337 msgctxt "@option:check" msgid "Display overhang" msgstr "Exibir seções pendentes" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:342 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:344 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:347 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:349 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:356 +#: /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:361 +#: /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:370 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:372 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:375 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:377 msgctxt "@action:button" msgid "Zoom toward mouse direction" msgstr "Ampliar na direção do mouse" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:384 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:386 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:389 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:391 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:397 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:399 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:402 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:404 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:414 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:416 msgctxt "@info:tooltip" msgid "Show caution message in gcode reader." msgstr "Exibir mensagem de advertência no leitor de g-code." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:423 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:425 msgctxt "@option:check" msgid "Caution message in gcode reader" msgstr "Mensagem de advertência no leitor de g-code" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:430 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:432 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:435 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:437 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:451 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:453 msgctxt "@label" msgid "Opening and saving files" msgstr "Abrindo e salvando arquivos" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:457 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:459 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:462 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:464 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:473 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:478 msgctxt "@option:check" msgid "Scale extremely small models" msgstr "Redimensionar modelos minúsculos" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:485 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:487 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:490 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:492 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:499 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:501 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:503 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:505 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:512 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:514 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:520 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:522 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:533 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:535 msgctxt "@option:openProject" msgid "Always ask" msgstr "Sempre perguntar" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:534 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:536 msgctxt "@option:openProject" msgid "Always open as a project" msgstr "Sempre abrir como projeto" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:535 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:537 msgctxt "@option:openProject" msgid "Always import models" msgstr "Sempre importar modelos" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:571 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:573 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:580 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:582 msgctxt "@label" msgid "Override Profile" msgstr "Sobrepujar Perfil" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:629 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:631 msgctxt "@label" msgid "Privacy" msgstr "Privacidade" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:636 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:638 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:641 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:643 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:651 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:653 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:656 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:658 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:674 +msgctxt "@label" +msgid "Experimental" +msgstr "Experimental" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:680 +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:685 +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/GeneralPage.qml:694 +msgctxt "@info:tooltip" +msgid "Should newly loaded models be arranged on the build plate? Used in conjunction with multi build plate (EXPERIMENTAL)" +msgstr "Novos modelos carregados devem ser posicionados na plataforma de impressão? Usado em conjunção com plataforma múltipla de impressão (EXPERIMENTAL)" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:699 +msgctxt "@option:check" +msgid "Do not arrange objects on load" +msgstr "Não posicionar objetos ao carregar." + #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:444 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:514 msgctxt "@title:tab" msgid "Printers" msgstr "Impressoras" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:37 #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:51 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:137 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:138 msgctxt "@action:button" msgid "Activate" msgstr "Ativar" @@ -2895,7 +3194,7 @@ msgid "Waiting for a printjob" msgstr "Esperando um trabalho de impressão" #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:448 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:518 msgctxt "@title:tab" msgid "Profiles" msgstr "Perfis" @@ -2921,13 +3220,13 @@ msgid "Duplicate" msgstr "Duplicar" #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:113 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:201 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:182 msgctxt "@action:button" msgid "Import" msgstr "Importar" #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:119 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:212 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:193 msgctxt "@action:button" msgid "Export" msgstr "Exportar" @@ -2993,7 +3292,7 @@ msgid "Export Profile" msgstr "Exportar Perfil" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:446 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:516 msgctxt "@title:tab" msgid "Materials" msgstr "Materiais" @@ -3008,60 +3307,60 @@ msgctxt "@action:label %1 is printer name" msgid "Printer: %1" msgstr "Impressora: %1" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:149 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:150 msgctxt "@action:button" msgid "Create" msgstr "Criar" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:168 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:160 msgctxt "@action:button" msgid "Duplicate" msgstr "Duplicar" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:311 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:319 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:298 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:306 msgctxt "@title:window" msgid "Import Material" msgstr "Importar Material" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:320 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:307 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/MaterialsPage.qml:324 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:311 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/MaterialsPage.qml:343 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:358 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:329 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:344 msgctxt "@title:window" msgid "Export Material" msgstr "Exportar Material" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:362 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:348 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/MaterialsPage.qml:368 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:354 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully exported material to %1" msgstr "Material exportado para %1 com sucesso" #: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:18 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:793 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:869 msgctxt "@title:window" msgid "Add Printer" msgstr "Adicionar Impressora" -#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:185 +#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:194 msgctxt "@label" msgid "Printer Name:" msgstr "Nome da Impressora:" -#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:208 +#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:217 msgctxt "@action:button" msgid "Add Printer" msgstr "Adicionar Impressora" @@ -3190,12 +3489,7 @@ msgctxt "@label" msgid "Profile:" msgstr "Perfil:" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:66 -msgctxt "@" -msgid "No Profile Available" -msgstr "Nenhum Perfil Disponível" - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:104 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:102 msgctxt "@tooltip" msgid "" "Some setting/override values are different from the values stored in the profile.\n" @@ -3206,37 +3500,37 @@ msgstr "" "\n" "Clique para abrir o gerenciador de perfis." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:152 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:150 msgctxt "@label:textbox" msgid "Search..." msgstr "Buscar..." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:483 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:482 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:498 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:497 msgctxt "@action:menu" msgid "Hide this setting" msgstr "Ocultar este ajuste" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:508 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:507 msgctxt "@action:menu" msgid "Don't show this setting" msgstr "Não exibir este ajuste" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:512 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:511 msgctxt "@action:menu" msgid "Keep this setting visible" msgstr "Manter este ajuste visível" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:531 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:530 msgctxt "@action:menu" msgid "Configure setting visiblity..." msgstr "Configurar a visibilidade dos ajustes..." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingCategory.qml:123 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingCategory.qml:250 msgctxt "@label" msgid "" "Some hidden settings use values different from their normal calculated value.\n" @@ -3247,27 +3541,27 @@ msgstr "" "\n" "Clique para tornar estes ajustes visíveis. " -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:62 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:61 msgctxt "@label Header for list of settings." msgid "Affects" msgstr "Afeta" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:67 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:66 msgctxt "@label Header for list of settings." msgid "Affected By" msgstr "Afetado Por" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:157 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:156 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. Alterá-lo aqui propagará o valor para todos os outros extrusores" +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:160 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:159 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:186 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:190 msgctxt "@label" msgid "" "This setting has a value that is different from the profile.\n" @@ -3277,7 +3571,7 @@ msgstr "" "Este ajuste tem um valor que é diferente do perfil.\n" "Clique para restaurar o valor do perfil." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:284 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:288 msgctxt "@label" msgid "" "This setting is normally calculated, but it currently has an absolute value set.\n" @@ -3287,12 +3581,12 @@ msgstr "" "Este ajuste é normalmente calculado, mas atualmente tem um conjunto absoluto de valores.\n" "Clique para restaurar o valor calculado." -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:120 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:128 msgctxt "@label:listbox" msgid "Print Setup" msgstr "Configuração de Impressão" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:120 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:128 msgctxt "@label:listbox" msgid "" "Print Setup disabled\n" @@ -3301,59 +3595,59 @@ msgstr "" "Configuração de Impressão desabilitada\n" "Arquivos G-Code não podem ser modificados" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:336 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:342 msgctxt "@label Hours and minutes" msgid "00h 00min" msgstr "00h 00min" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:354 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:359 msgctxt "@tooltip" -msgid "Time specification
      " -msgstr "Especificação de tempo
      " +msgid "Time specification" +msgstr "Especificação de tempo" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:429 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:441 msgctxt "@label" msgid "Cost specification" msgstr "Especificação de custo" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:434 -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:445 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:446 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:455 msgctxt "@label m for meter" msgid "%1m" msgstr "%1m" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:435 -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:446 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:447 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:456 msgctxt "@label g for grams" msgid "%1g" msgstr "%1g" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:444 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:454 msgctxt "@label" msgid "Total:" msgstr "Total:" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:498 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:504 msgctxt "@label Print estimates: m for meters, g for grams, %4 is currency and %3 is print cost" msgid "%1m / ~ %2g / ~ %4 %3" msgstr "%1m / ~ %2g / ~ %4 %3" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:503 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:509 msgctxt "@label Print estimates: m for meters, g for grams" msgid "%1m / ~ %2g" msgstr "%1m / ~ %2g" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:586 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:591 msgctxt "@tooltip" msgid "Recommended Print Setup

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

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

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

      Imprimir com controle fino sobre cada parte do processo de fatiamento." -#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:49 +#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:50 msgctxt "@title:menuitem %1 is the automatically selected material" msgid "Automatic: %1" msgstr "Automático: %1" @@ -3363,6 +3657,16 @@ msgctxt "@title:menu menubar:toplevel" msgid "&View" msgstr "&Ver" +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:37 +msgctxt "@action:inmenu menubar:view" +msgid "&Camera position" +msgstr "Posição da &câmera" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:52 +msgctxt "@action:inmenu menubar:view" +msgid "&Build plate" +msgstr "Plataforma de Impressão (&B)" + #: /home/ruben/Projects/Cura/resources/qml/Menus/NozzleMenu.qml:40 msgctxt "@title:menuitem %1 is the nozzle currently loaded in the printer" msgid "Automatic: %1" @@ -3375,14 +3679,14 @@ msgid_plural "Print Selected Models With:" msgstr[0] "Imprimir Modelo Selecionado Com:" msgstr[1] "Imprimir Modelos Selecionados Com:" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ContextMenu.qml:83 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ContextMenu.qml:114 msgctxt "@title:window" 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/Menus/ContextMenu.qml:108 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ContextMenu.qml:139 msgctxt "@label" msgid "Number of Copies" msgstr "Número de Cópias" @@ -3398,7 +3702,7 @@ msgid "No printer connected" msgstr "Nenhuma impressora conectada" #: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:90 -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:138 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:139 msgctxt "@label" msgid "Extruder" msgstr "Extrusor" @@ -3508,254 +3812,294 @@ msgctxt "@label" msgid "Estimated time left" msgstr "Tempo restante estimado" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:72 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:79 msgctxt "@action:inmenu" msgid "Toggle Fu&ll Screen" msgstr "A<ernar Tela Cheia" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:79 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:86 msgctxt "@action:inmenu menubar:edit" msgid "&Undo" -msgstr "Des&fazer" +msgstr "Desfazer (&U)" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:89 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:96 msgctxt "@action:inmenu menubar:edit" msgid "&Redo" msgstr "&Refazer" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:99 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:106 msgctxt "@action:inmenu menubar:file" msgid "&Quit" -msgstr "&Sair" - -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:107 -msgctxt "@action:inmenu menubar:view" -msgid "&Reset camera position" -msgstr "&Recompor posições de câmera" +msgstr "Sair (&Q)" #: /home/ruben/Projects/Cura/resources/qml/Actions.qml:114 +msgctxt "@action:inmenu menubar:view" +msgid "&3D View" +msgstr "Visão &3D" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:121 +msgctxt "@action:inmenu menubar:view" +msgid "&Front View" +msgstr "Visão &Frontal" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:128 +msgctxt "@action:inmenu menubar:view" +msgid "&Top View" +msgstr "Visão Superior (&T)" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:135 +msgctxt "@action:inmenu menubar:view" +msgid "&Left Side View" +msgstr "Visão do Lado Esquerdo (&L)" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:142 +msgctxt "@action:inmenu menubar:view" +msgid "&Right Side View" +msgstr "Visão do Lado Direito (&R)" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:149 msgctxt "@action:inmenu" msgid "Configure Cura..." msgstr "Configurar Cura..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:121 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:156 msgctxt "@action:inmenu menubar:printer" msgid "&Add Printer..." msgstr "&Adicionar Impressora..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:127 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:162 msgctxt "@action:inmenu menubar:printer" msgid "Manage Pr&inters..." msgstr "Adm&inistrar Impressoras..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:134 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:169 msgctxt "@action:inmenu" msgid "Manage Materials..." msgstr "Administrar Materiais..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:142 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:177 msgctxt "@action:inmenu menubar:profile" msgid "&Update profile with current settings/overrides" -msgstr "&Atualizar perfil com valores e sobrepujanças atuais" +msgstr "At&ualizar perfil com valores e sobrepujanças atuais" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:150 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:185 msgctxt "@action:inmenu menubar:profile" msgid "&Discard current changes" msgstr "&Descartar ajustes atuais" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:162 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:197 msgctxt "@action:inmenu menubar:profile" msgid "&Create profile from current settings/overrides..." msgstr "&Criar perfil a partir de ajustes atuais..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:168 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:203 msgctxt "@action:inmenu menubar:profile" msgid "Manage Profiles..." msgstr "Administrar perfis..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:175 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:210 msgctxt "@action:inmenu menubar:help" msgid "Show Online &Documentation" msgstr "Exibir &Documentação Online" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:183 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:218 msgctxt "@action:inmenu menubar:help" msgid "Report a &Bug" msgstr "Relatar um &Bug" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:191 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:226 msgctxt "@action:inmenu menubar:help" msgid "&About..." -msgstr "S&obre..." +msgstr "Sobre (&A)..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:198 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:233 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:208 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:243 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:217 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:252 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:226 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:261 msgctxt "@action:inmenu" msgid "Delete Model" msgstr "Remover Modelo" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:234 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:269 msgctxt "@action:inmenu" msgid "Ce&nter Model on Platform" msgstr "Ce&ntralizar Modelo na Mesa" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:240 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:275 msgctxt "@action:inmenu menubar:edit" msgid "&Group Models" msgstr "A&grupar Modelos" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:250 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:295 msgctxt "@action:inmenu menubar:edit" msgid "Ungroup Models" msgstr "Desagrupar Modelos" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:260 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:305 msgctxt "@action:inmenu menubar:edit" msgid "&Merge Models" msgstr "Co&mbinar Modelos" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:270 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:315 msgctxt "@action:inmenu" msgid "&Multiply Model..." msgstr "&Multiplicar Modelo..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:277 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:322 msgctxt "@action:inmenu menubar:edit" msgid "&Select All Models" msgstr "&Selecionar Todos Os Modelos" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:287 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:332 msgctxt "@action:inmenu menubar:edit" msgid "&Clear Build Plate" -msgstr "&Esvaziar a mesa de impressão" +msgstr "Esvaziar a Mesa de Impressão (&C)" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:297 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:342 msgctxt "@action:inmenu menubar:file" msgid "Re&load All Models" -msgstr "&Recarregar Todos Os Modelos" +msgstr "Recarregar Todos Os Mode&los" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:306 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:351 +msgctxt "@action:inmenu menubar:edit" +msgid "Arrange All Models To All Build Plates" +msgstr "Posicionar Todos os Modelos em Todas as Plataformas de Impressão" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:358 msgctxt "@action:inmenu menubar:edit" msgid "Arrange All Models" msgstr "Posicionar Todos os Modelos" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:314 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:366 msgctxt "@action:inmenu menubar:edit" msgid "Arrange Selection" msgstr "Posicionar Seleção" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:321 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:373 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:328 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:380 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:335 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:387 msgctxt "@action:inmenu menubar:file" msgid "&Open File(s)..." -msgstr "Abrir Arquiv&os(s)..." +msgstr "Abrir Arquiv&o(s)..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:343 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:395 msgctxt "@action:inmenu menubar:file" msgid "&New Project..." msgstr "&Novo Projeto..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:350 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:402 msgctxt "@action:inmenu menubar:help" msgid "Show Engine &Log..." -msgstr "&Exibir o Registro do Motor de Fatiamento..." +msgstr "Exibir o Registro do Motor de Fatiamento (&L)..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:358 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:410 msgctxt "@action:inmenu menubar:help" msgid "Show Configuration Folder" msgstr "Exibir Pasta de Configuração" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:365 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:417 msgctxt "@action:menu" msgid "Configure setting visibility..." msgstr "Configurar a visibilidade dos ajustes..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:372 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:424 msgctxt "@action:menu" msgid "Browse plugins..." msgstr "Navegar complementos..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:379 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:431 msgctxt "@action:menu" msgid "Installed plugins..." msgstr "Complementos instalados..." -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:28 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:438 +msgctxt "@action:inmenu menubar:view" +msgid "Expand/Collapse Sidebar" +msgstr "Expandir/Encolher Barra Lateral" + +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:26 msgctxt "@label:PrintjobStatus" msgid "Please load a 3D model" msgstr "Por favor carregue um modelo 3D" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:34 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:36 msgctxt "@label:PrintjobStatus" msgid "Ready to slice" msgstr "Pronto para fatiar" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:36 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:38 msgctxt "@label:PrintjobStatus" msgid "Slicing..." msgstr "Fatiando..." -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:38 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:40 msgctxt "@label:PrintjobStatus %1 is target operation" msgid "Ready to %1" msgstr "Pronto para %1" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:40 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:42 msgctxt "@label:PrintjobStatus" msgid "Unable to Slice" msgstr "Incapaz de Fatiar" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:42 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:44 msgctxt "@label:PrintjobStatus" msgid "Slicing unavailable" msgstr "Fatiamento indisponível" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:162 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:171 +msgctxt "@info:tooltip" +msgid "Slice current printjob" +msgstr "Fatiar trabalho de impressão atual" + +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:171 +msgctxt "@info:tooltip" +msgid "Cancel slicing process" +msgstr "Cancelar processo de fatiamento" + +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:183 msgctxt "@label:Printjob" msgid "Prepare" msgstr "Preparar" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:162 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:183 msgctxt "@label:Printjob" msgid "Cancel" msgstr "Cancelar" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:302 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:317 msgctxt "@info:tooltip" msgid "Select the active output device" msgstr "Selecione o dispositivo de saída ativo" #: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:19 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:620 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:696 msgctxt "@title:window" msgid "Open file(s)" msgstr "Abrir arquivo(s)" @@ -3775,114 +4119,114 @@ msgctxt "@title:window" msgid "Ultimaker Cura" msgstr "Ultimaker Cura" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:81 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:102 msgctxt "@title:menu menubar:toplevel" msgid "&File" -msgstr "&Arquivo" +msgstr "Arquivo (&F)" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:98 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:119 msgctxt "@action:inmenu menubar:file" msgid "&Save Selection to File" msgstr "Salvar &Seleção em Arquivo" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:107 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:128 msgctxt "@title:menu menubar:file" msgid "Save &As..." msgstr "S&alvar Como..." -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:118 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:139 msgctxt "@title:menu menubar:file" -msgid "Save project" -msgstr "Salvar projeto" +msgid "Save &Project..." +msgstr "Salvar &Projeto..." -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:141 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:162 msgctxt "@title:menu menubar:toplevel" msgid "&Edit" msgstr "&Editar" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:158 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:179 msgctxt "@title:menu" msgid "&View" msgstr "&Ver" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:163 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:184 msgctxt "@title:menu" msgid "&Settings" msgstr "Aju&stes" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:165 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:186 msgctxt "@title:menu menubar:toplevel" msgid "&Printer" msgstr "Im&pressora" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:175 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:187 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:196 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:208 msgctxt "@title:menu" msgid "&Material" msgstr "&Material" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:176 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:188 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:197 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:209 msgctxt "@title:menu" msgid "&Profile" msgstr "&Perfil" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:180 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:201 msgctxt "@action:inmenu" msgid "Set as Active Extruder" msgstr "Definir Como Extrusor Ativo" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:198 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:219 msgctxt "@title:menu menubar:toplevel" msgid "E&xtensions" msgstr "E&xtensões" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:232 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:253 msgctxt "@title:menu menubar:toplevel" msgid "P&lugins" msgstr "&Complementos" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:240 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:261 msgctxt "@title:menu menubar:toplevel" msgid "P&references" msgstr "P&referências" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:248 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:269 msgctxt "@title:menu menubar:toplevel" msgid "&Help" msgstr "A&juda" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:330 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:351 msgctxt "@action:button" msgid "Open File" msgstr "Abrir arquivo" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:442 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:512 msgctxt "@title:tab" msgid "Settings" msgstr "Ajustes" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:478 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:554 msgctxt "@title:window" msgid "New project" msgstr "Novo projeto" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:479 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:555 msgctxt "@info:question" msgid "Are you sure you want to start a new project? This will clear the build plate and any unsaved settings." msgstr "Tem certeza que quer iniciar novo projeto? Isto esvaziará a mesa de impressão e quaisquer ajustes não salvos." -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:721 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:797 msgctxt "@window:title" msgid "Install Plugin" msgstr "Instalar Complemento" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:728 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:804 msgctxt "@title:window" msgid "Open File(s)" msgstr "Abrir Arquivo(s)" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:731 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:807 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." @@ -3907,97 +4251,82 @@ msgctxt "@action:label" msgid "Don't show project summary on save again" msgstr "Não exibir resumo do projeto ao salvar novamente" -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:264 -msgctxt "@action:button" -msgid "Save" -msgstr "Salvar" - -#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:74 -msgctxt "@title:tab" -msgid "Prepare" -msgstr "Preparar" - -#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:100 -msgctxt "@title:tab" -msgid "Monitor" -msgstr "Monitorar" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:163 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:175 msgctxt "@label" msgid "Layer Height" msgstr "Altura de Camada" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:323 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:345 msgctxt "@tooltip" msgid "A custom profile is currently active. To enable the quality slider, choose a default quality profile in Custom tab" msgstr "Um perfil personalizado está atualmente ativo. Para habilitar o controle deslizante de qualidade, escolha um perfil de qualidade default na aba Personalizado" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:340 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:362 msgctxt "@label" msgid "Print Speed" msgstr "Velocidade de Impressão" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:350 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:374 msgctxt "@label" msgid "Slower" msgstr "Mais Lento" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:361 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:385 msgctxt "@label" msgid "Faster" msgstr "Mais Rápido" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:388 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:423 msgctxt "@tooltip" msgid "You have modified some profile settings. If you want to change these go to custom mode." msgstr "Você modificou alguns ajustes de perfil. Se você quiser alterá-los, use o modo personalizado." -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:413 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:446 msgctxt "@label" msgid "Infill" msgstr "Preenchimento:" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:633 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:668 msgctxt "@label" msgid "Gradual infill will gradually increase the amount of infill towards the top." msgstr "Preenchimento gradual aumentará gradualmente a quantidade de preenchimento em direção ao topo." -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:645 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:680 msgctxt "@label" msgid "Enable gradual" msgstr "Habilitar gradual" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:712 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:747 msgctxt "@label" msgid "Generate Support" msgstr "Gerar Suportes" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:746 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:781 msgctxt "@label" msgid "Generate structures to support parts of the model which have overhangs. Without these structures, such parts would collapse during printing." msgstr "Gera estrutura que suportarão partes do modelo que têm seções pendentes. Sem estas estruturas, tais partes desabariam durante a impressão." -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:764 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:799 msgctxt "@label" msgid "Support Extruder" msgstr "Extrusor do Suporte" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:816 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:851 msgctxt "@label" msgid "Select which extruder to use for support. This will build up supporting structures below the model to prevent the model from sagging or printing in mid air." msgstr "Selecione qual extrusor a usar para o suporte. Isto construirá estruturas de suportes abaixo do modelo para prevenir que o modelo desabe ou seja impresso no ar." -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:839 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:874 msgctxt "@label" msgid "Build Plate Adhesion" msgstr "Aderência à Mesa de Impressão" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:894 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:929 msgctxt "@label" msgid "Enable printing a brim or raft. This will add a flat area around or under your object which is easy to cut off afterwards." msgstr "Habilita imprimir um brim (bainha) ou raft (jangada). Adicionará uma área chata em volta ou sob o objeto que é fácil de remover após a impressão ter finalizado." -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:934 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:969 msgctxt "@label" msgid "Need help improving your prints?
      Read the Ultimaker Troubleshooting Guides" msgstr "Precisa de ajuda para melhorar sua impressões?
      Leia os Guias de Resolução de Problema da Ultimaker" @@ -4014,17 +4343,22 @@ msgctxt "@title:window" msgid "Open project file" msgstr "Abrir arquivo de projeto" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:72 +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:93 msgctxt "@text:window" msgid "This is a Cura project file. Would you like to open it as a project or import the models from it?" msgstr "Este é um arquivo de projeto do Cura. Gostaria de abri-lo como um projeto ou importar os modelos dele?" #: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:103 +msgctxt "@text:window" +msgid "Remember my choice" +msgstr "Lembrar minha escolha" + +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:122 msgctxt "@action:button" msgid "Open as project" msgstr "Abrir como projeto" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:122 +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:131 msgctxt "@action:button" msgid "Import models" msgstr "Importar modelos" @@ -4034,21 +4368,36 @@ msgctxt "@title:window" msgid "Engine Log" msgstr "Registro do Motor de Fatiamento" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:242 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:245 msgctxt "@label" msgid "Material" msgstr "Material" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:349 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:352 msgctxt "@label" -msgid "Check compatibility" -msgstr "Verificar compatibilidade" +msgid "Check compatibility" +msgstr "Verificar compatibilidade" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:369 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:372 msgctxt "@tooltip" msgid "Click to check the material compatibility on Ultimaker.com." msgstr "Clique para verificar a compatibilidade do material em Ultimaker.com." +#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:211 +msgctxt "@option:check" +msgid "See only current build plate" +msgstr "Ver somente a plataforma de impressão atual" + +#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:227 +msgctxt "@action:button" +msgid "Arrange to all build plates" +msgstr "Posicionar em todas as plataformas de impressão" + +#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:247 +msgctxt "@action:button" +msgid "Arrange current build plate" +msgstr "Reposicionar a plataforma de impressão atual" + #: MachineSettingsAction/plugin.json msgctxt "description" msgid "Provides a way to change machine settings (such as build volume, nozzle size, etc)" @@ -4139,6 +4488,26 @@ msgctxt "name" msgid "USB printing" msgstr "Impressão USB" +#: PrepareStage/plugin.json +msgctxt "description" +msgid "Provides a prepare stage in Cura." +msgstr "Provê um estágio de preparação no Cura." + +#: PrepareStage/plugin.json +msgctxt "name" +msgid "Prepare Stage" +msgstr "Estágio de Preparação" + +#: CuraLiveScriptingPlugin/plugin.json +msgctxt "description" +msgid "Provides an edit window for direct script editing." +msgstr "Provê uma janela de edição para edição direta de script." + +#: CuraLiveScriptingPlugin/plugin.json +msgctxt "name" +msgid "Live scripting tool" +msgstr "Ferramenta de scripting integrada" + #: RemovableDriveOutputDevice/plugin.json msgctxt "description" msgid "Provides removable drive hotplugging and writing support." @@ -4159,6 +4528,16 @@ msgctxt "name" msgid "UM3 Network Connection" msgstr "Conexão de Rede UM3" +#: MonitorStage/plugin.json +msgctxt "description" +msgid "Provides a monitor stage in Cura." +msgstr "Provê um estágio de monitor no Cura." + +#: MonitorStage/plugin.json +msgctxt "name" +msgid "Monitor Stage" +msgstr "Estágio de Monitor" + #: FirmwareUpdateChecker/plugin.json msgctxt "description" msgid "Checks for firmware updates." @@ -4171,8 +4550,8 @@ msgstr "Verificador de Atualizações de Firmware" #: CuraSolidWorksPlugin/plugin.json msgctxt "description" -msgid "Gives you the possibility to open certain files via SolidWorks itself. These are then converted and loaded into Cura" -msgstr "Te dá a possibilidade de abrir certos arquivos via o próprio SolidWorks. Tais são convertidos e carregados no Cura" +msgid "Gives you the possibility to open certain files using SolidWorks itself. Conversion is done by this plugin and additional optimizations." +msgstr "Te dá a possibilidade de abrir certos arquivos usando o SolidWorks. A conversão é feita por este plugin junto com personalizações adicionais." #: CuraSolidWorksPlugin/plugin.json msgctxt "name" @@ -4239,6 +4618,16 @@ msgctxt "name" msgid "Legacy Cura Profile Reader" msgstr "Leitor de Perfis de Cura Legado" +#: CuraBlenderPlugin/plugin.json +msgctxt "description" +msgid "Helps to open Blender files directly in Cura." +msgstr "Ajuda a abrir arquivos do Blender diretamente no Cura." + +#: CuraBlenderPlugin/plugin.json +msgctxt "name" +msgid "Blender Integration (experimental)" +msgstr "Integração ao Blender (experimental)" + #: GCodeProfileReader/plugin.json msgctxt "description" msgid "Provides support for importing profiles from g-code files." @@ -4399,6 +4788,16 @@ 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." @@ -4439,6 +4838,156 @@ msgctxt "name" msgid "Cura Profile Reader" msgstr "Leitor de Perfis do Cura" +#~ msgctxt "@label" +#~ msgid "Unknown" +#~ msgstr "Desconhecido" + +#~ msgctxt "@info:status" +#~ msgid "Errors appeared while opening your SolidWorks file! Please check, whether it is possible to open your file in SolidWorks itself without any problems as well!" +#~ msgstr "Erros apareceram ao abrir seu arquivo SolidWorks! Por favor verifique se é possível abrir seu arquivo no próprio SolidWorks sem problema também!" + +#~ msgctxt "@info:status" +#~ msgid "Error while starting %s!" +#~ msgstr "Erro ao iniciar %s!" + +#~ msgctxt "@item:inlistbox" +#~ msgid "Simulation view" +#~ msgstr "Visão simulada" + +#~ msgctxt "@info" +#~ msgid "Cura collects anonymised slicing statistics. You can disable this in the preferences." +#~ msgstr "O Cura coleta estatística de fatiamento anonimizadas. Você pode desabilitar isso nas preferências." + +#~ msgctxt "@action:button" +#~ msgid "Dismiss" +#~ msgstr "Fechar" + +#~ msgctxt "@menuitem" +#~ msgid "Global" +#~ msgstr "Global" + +#~ msgctxt "@label crash message" +#~ msgid "" +#~ "

      A fatal exception has occurred. 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 "" +#~ "

      Uma exceção fatal aocorreu. Por favor nos envie este Relatório de Erros para consertarmos o problema

      \n" +#~ "

      Por favor use o botão \"Enviar relatório\" para postar um relato de bug automaticamente em nossos servidores

      \n" +#~ " " + +#~ msgctxt "@label Cura version" +#~ msgid "Cura version: {version}
      " +#~ msgstr "Versão do Cura: {version}
      " + +#~ msgctxt "@label Platform" +#~ msgid "Platform: {platform}
      " +#~ msgstr "Plataforma: {platform}
      " + +#~ msgctxt "@label Qt version" +#~ msgid "Qt version: {qt}
      " +#~ msgstr "Versão da Qt: {qt}
      " + +#~ msgctxt "@label PyQt version" +#~ msgid "PyQt version: {pyqt}
      " +#~ msgstr "Versão da PyQt: {pyqt}
      " + +#~ msgctxt "@label OpenGL" +#~ msgid "OpenGL: {opengl}
      " +#~ msgstr "OpenGL: {opengl}
      " + +#~ msgctxt "@title:groupbox" +#~ msgid "Exception traceback" +#~ msgstr "Traceback de exceção" + +#~ msgctxt "@label" +#~ msgid "Material diameter" +#~ msgstr "Diâmetro do material" + +#~ msgctxt "@label" +#~ msgid "Ultimaker 3" +#~ msgstr "Ultimaker 3" + +#~ msgctxt "@label" +#~ msgid "Ultimaker 3 Extended" +#~ msgstr "Ultimaker 3 Extended" + +#~ msgctxt "@title:window" +#~ msgid "Cura SolidWorks Plugin Configuration" +#~ msgstr "Configuração do Complemento de Solidworks do Cura" + +#~ msgctxt "@action:label" +#~ msgid "Default quality of the exported STL:" +#~ msgstr "Qualidade default do STL exportado:" + +#~ msgctxt "@option:curaSolidworksStlQuality" +#~ msgid "Always ask" +#~ msgstr "Sempre perguntar" + +#~ msgctxt "@option:curaSolidworksStlQuality" +#~ msgid "Always use Fine quality" +#~ msgstr "Sempre usar qualidade Alta" + +#~ msgctxt "@option:curaSolidworksStlQuality" +#~ msgid "Always use Coarse quality" +#~ msgstr "Sempre usar qualidade Baixa" + +#~ msgctxt "@title:window" +#~ msgid "Import SolidWorks File as STL..." +#~ msgstr "Importar Arquivo SolidWorks como STL..." + +#~ msgctxt "@info:tooltip" +#~ msgid "Quality of the Exported STL" +#~ msgstr "Qualidade do STL Exportado" + +#~ msgctxt "@action:label" +#~ msgid "Quality" +#~ msgstr "Qualidade" + +#~ msgctxt "@option:curaSolidworksStlQuality" +#~ msgid "Coarse" +#~ msgstr "Baixa" + +#~ msgctxt "@option:curaSolidworksStlQuality" +#~ msgid "Fine" +#~ msgstr "Alta" + +#~ msgctxt "@" +#~ msgid "No Profile Available" +#~ msgstr "Nenhum Perfil Disponível" + +#~ 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. Alterá-lo aqui propagará o valor para todos os outros extrusores" + +#~ msgctxt "@tooltip" +#~ msgid "Time specification
      " +#~ msgstr "Especificação de tempo
      " + +#~ msgctxt "@action:inmenu menubar:view" +#~ msgid "&Reset camera position" +#~ msgstr "&Recompor posições de câmera" + +#~ msgctxt "@title:menu menubar:file" +#~ msgid "Save project" +#~ msgstr "Salvar projeto" + +#~ msgctxt "@title:tab" +#~ msgid "Prepare" +#~ msgstr "Preparar" + +#~ msgctxt "@title:tab" +#~ msgid "Monitor" +#~ msgstr "Monitorar" + +#~ msgctxt "@label" +#~ msgid "Check compatibility" +#~ msgstr "Verificar compatibilidade" + +#~ msgctxt "description" +#~ msgid "Gives you the possibility to open certain files via SolidWorks itself. These are then converted and loaded into Cura" +#~ msgstr "Te dá a possibilidade de abrir certos arquivos via o próprio SolidWorks. Tais são convertidos e carregados no Cura" + #~ msgctxt "@label:status" #~ msgid "Blocked" #~ msgstr "Bloqueado" @@ -4459,13 +5008,9 @@ msgstr "Leitor de Perfis do Cura" #~ msgid "To ensure that your {machine_name} is equipped with the latest features it is recommended to update the firmware regularly. This can be done on the {machine_name} (when connected to the network) or via USB." #~ msgstr "Para assegurar que sua {machine_name} esteja equipada com os recursos mais recentes, é recomendado atualizar o firmware regularmente. Isto pode ser feito na {machine_name} (quando conectado pela rede) ou via USB." -msgctxt "@item:inlistbox" -msgid "Layer view" -msgstr "Visão de Camadas" - -msgctxt "@info:title" -msgid "Layer View" -msgstr "Visão de Camadas" +#~ msgctxt "@info:title" +#~ msgid "Layer View" +#~ msgstr "Visão de Camadas" #~ msgctxt "@menuitem" #~ msgid "Browse plugins" @@ -4567,9 +5112,9 @@ msgstr "Visão de Camadas" #~ msgid "Provides the Layer view." #~ msgstr "Provê a visão de Camadas." -msgctxt "name" -msgid "Layer View" -msgstr "Visão de Camadas" +#~ msgctxt "name" +#~ msgid "Layer View" +#~ msgstr "Visão de Camadas" #~ msgctxt "@item:inlistbox" #~ msgid "X-Ray" @@ -4890,9 +5435,9 @@ msgstr "Visão de Camadas" #~ msgid "Provides support for importing profiles from g-code files." #~ msgstr "Provê suporte para importar perfis de arquivos G-Code." -msgctxt "@label" -msgid "Layer View" -msgstr "Visão de Camadas" +#~ msgctxt "@label" +#~ msgid "Layer View" +#~ msgstr "Visão de Camadas" #~ msgctxt "@info:whatsthis" #~ msgid "Provides the Layer view." diff --git a/resources/i18n/pt_BR/fdmextruder.def.json.po b/resources/i18n/pt_BR/fdmextruder.def.json.po index 1f222f9847..ad86d46edc 100644 --- a/resources/i18n/pt_BR/fdmextruder.def.json.po +++ b/resources/i18n/pt_BR/fdmextruder.def.json.po @@ -1,13 +1,13 @@ -# Cura JSON setting files -# Copyright (C) 2017 Ultimaker +# Cura +# Copyright (C) 2018 Ultimaker # This file is distributed under the same license as the Cura package. -# Ruben Dulek , 2017. +# Ruben Dulek , 2018. # msgid "" msgstr "" -"Project-Id-Version: Cura 3.0\n" -"Report-Msgid-Bugs-To: http://github.com/ultimaker/uranium\n" -"POT-Creation-Date: 2017-11-21 16:58+0000\n" +"Project-Id-Version: Cura 3.2\n" +"Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" +"POT-Creation-Date: 2017-08-02 16:53+0000\n" "PO-Revision-Date: 2017-12-04 09:00-0300\n" "Last-Translator: Cláudio Sampaio \n" "Language-Team: Cláudio Sampaio and CoderSquirrel \n" diff --git a/resources/i18n/pt_BR/fdmprinter.def.json.po b/resources/i18n/pt_BR/fdmprinter.def.json.po index 4aeea1d2f9..d42015f67c 100644 --- a/resources/i18n/pt_BR/fdmprinter.def.json.po +++ b/resources/i18n/pt_BR/fdmprinter.def.json.po @@ -1,14 +1,14 @@ -# Cura JSON setting files -# Copyright (C) 2017 Ultimaker +# Cura +# Copyright (C) 2018 Ultimaker # This file is distributed under the same license as the Cura package. -# Ruben Dulek , 2017. +# Ruben Dulek , 2018. # msgid "" msgstr "" -"Project-Id-Version: Cura 3.0\n" -"Report-Msgid-Bugs-To: http://github.com/ultimaker/uranium\n" -"POT-Creation-Date: 2017-11-21 16:58+0000\n" -"PO-Revision-Date: 2017-12-04 10:20-0300\n" +"Project-Id-Version: Cura 3.2\n" +"Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" +"POT-Creation-Date: 2018-01-29 09:48+0000\n" +"PO-Revision-Date: 2018-02-13 02:20-0300\n" "Last-Translator: Cláudio Sampaio \n" "Language-Team: Cláudio Sampaio and CoderSquirrel \n" "Language: pt_BR\n" @@ -350,6 +350,16 @@ msgctxt "machine_gcode_flavor option Repetier" msgid "Repetier" msgstr "Repetier" +#: fdmprinter.def.json +msgctxt "machine_firmware_retract label" +msgid "Firmware Retraction" +msgstr "Retração de Firmware" + +#: fdmprinter.def.json +msgctxt "machine_firmware_retract description" +msgid "Whether to use firmware retract commands (G10/G11) instead of using the E property in G1 commands to retract the material." +msgstr "Usar ou não comandos de retração de firmware (G10/G11) ao invés de usar a propriedade E dos comandos G1 para retrair o material." + #: fdmprinter.def.json msgctxt "machine_disallowed_areas label" msgid "Disallowed areas" @@ -610,31 +620,6 @@ msgctxt "layer_height_0 description" msgid "The height of the initial layer in mm. A thicker initial layer makes adhesion to the build plate easier." msgstr "A altura da camada inicial em mm. Uma camada inicial mais espessa faz a aderência à mesa de impressão ser maior." -#: fdmprinter.def.json -msgctxt "slicing_tolerance label" -msgid "Slicing Tolerance" -msgstr "Tolerância de Fatiamento" - -#: fdmprinter.def.json -msgctxt "slicing_tolerance description" -msgid "How to slice layers with diagonal surfaces. The areas of a layer can be generated based on where the middle of the layer intersects the surface (Middle). Alternatively each layer can have the areas which fall inside of the volume throughout the height of the layer (Exclusive) or a layer has the areas which fall inside anywhere within the layer (Inclusive). Exclusive retains the most details, Inclusive makes for the best fit and Middle takes the least time to process." -msgstr "Como fatiar camadas com superfícies diagonais. As áreas de uma camada podem ser geradas baseadas em onde o meio da camada interseciona a superfície (Meio). Alternativamente, cada camada pode ter as áreas que se encontram dentro do volume por toda a altura da camada (Exclusivo) ou a camada pode abranger todas as áreas que tenham qualquer penetração dentro do volume (Inclusivo). Exclusivo retém mais detalhes, Inclusivo é melhor para encaixes e Meio toma menos tempo para processar." - -#: fdmprinter.def.json -msgctxt "slicing_tolerance option middle" -msgid "Middle" -msgstr "Meio" - -#: fdmprinter.def.json -msgctxt "slicing_tolerance option exclusive" -msgid "Exclusive" -msgstr "Exclusivo" - -#: fdmprinter.def.json -msgctxt "slicing_tolerance option inclusive" -msgid "Inclusive" -msgstr "Inclusivo" - #: fdmprinter.def.json msgctxt "line_width label" msgid "Line Width" @@ -675,16 +660,6 @@ msgctxt "wall_line_width_x description" msgid "Width of a single wall line for all wall lines except the outermost one." msgstr "Largura de extrusão das paredes internas (todas menos a mais externa)." -#: fdmprinter.def.json -msgctxt "roofing_line_width label" -msgid "Top Surface Skin Line Width" -msgstr "Largura de extrusão da Superfície Superior" - -#: fdmprinter.def.json -msgctxt "roofing_line_width description" -msgid "Width of a single line of the areas at the top of the print." -msgstr "Largura de extrusão de um filete das áreas no topo da peça." - #: fdmprinter.def.json msgctxt "skin_line_width label" msgid "Top/Bottom Line Width" @@ -865,41 +840,6 @@ msgctxt "roofing_layer_count description" msgid "The number of top most skin layers. Usually only one top most layer is sufficient to generate higher quality top surfaces." msgstr "O número de camadas da superfície superior. Geralmente somente uma camada é suficiente para gerar superfícies de alta qualidade." -#: fdmprinter.def.json -msgctxt "roofing_pattern label" -msgid "Top Surface Skin Pattern" -msgstr "Padrão da Superfície Superior" - -#: fdmprinter.def.json -msgctxt "roofing_pattern description" -msgid "The pattern of the top most layers." -msgstr "O padrão das camadas superiores." - -#: fdmprinter.def.json -msgctxt "roofing_pattern option lines" -msgid "Lines" -msgstr "Linhas" - -#: fdmprinter.def.json -msgctxt "roofing_pattern option concentric" -msgid "Concentric" -msgstr "Concêntrico" - -#: fdmprinter.def.json -msgctxt "roofing_pattern option zigzag" -msgid "Zig Zag" -msgstr "Ziguezague" - -#: fdmprinter.def.json -msgctxt "roofing_angles label" -msgid "Top Surface Skin Line Directions" -msgstr "Direções dos Filetes da Superfície Superior" - -#: fdmprinter.def.json -msgctxt "roofing_angles description" -msgid "A list of integer line directions to use when the top surface skin layers use the lines or zig zag pattern. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the traditional default angles (45 and 135 degrees)." -msgstr "Uma lista de direções inteiras de filete a usar quando as camadas superiores usam o padrão de linhas ou ziguezague. Elementos desta lista são usados sequencialmente de acordo com o progresso das camadas e quando se chega ao fim da lista, se volta ao começo. Os itens da lista são separados por vírgulas e a lista inteira é contida em colchetes. O default é uma lista vazia que significa o uso dos ângulos default (45 e 135 graus)." - #: fdmprinter.def.json msgctxt "top_bottom_extruder_nr label" msgid "Top/Bottom Extruder" @@ -1030,6 +970,16 @@ msgctxt "wall_0_inset description" msgid "Inset applied to the path of the outer wall. If the outer wall is smaller than the nozzle, and printed after the inner walls, use this offset to get the hole in the nozzle to overlap with the inner walls instead of the outside of the model." msgstr "Penetração adicional aplicada ao caminho da parede externa. Se a parede externa for menor que o bico, e impressa depois das paredes internas, use este deslocamento para fazer o orifício do bico se sobrepor às paredes internas ao invés de ao lado de fora do modelo." +#: fdmprinter.def.json +msgctxt "optimize_wall_printing_order label" +msgid "Optimize Wall Printing Order" +msgstr "Otimizar Ordem de Impressão de Paredes" + +#: fdmprinter.def.json +msgctxt "optimize_wall_printing_order description" +msgid "Optimize the order in which walls are printed so as to reduce the number of retractions and the distance travelled. Most parts will benefit from this being enabled but some may actually take longer so please compare the print time estimates with and without optimization." +msgstr "Otimiza a ordem em que paredes são impressas de modo a reduzir o número de retrações e a distância percorrida. A maioria das peças se beneficiarão deste ajuste habilitado mas algumas podem acabar levando mais tempo, portanto por favor compare as estimativas de tempo de impressão com e sem otimização." + #: fdmprinter.def.json msgctxt "outer_inset_first label" msgid "Outer Before Inner Walls" @@ -1100,6 +1050,16 @@ msgctxt "fill_perimeter_gaps option everywhere" msgid "Everywhere" msgstr "Em todos os lugares" +#: fdmprinter.def.json +msgctxt "filter_out_tiny_gaps label" +msgid "Filter Out Tiny Gaps" +msgstr "Filtrar Pequenas Lacunas" + +#: fdmprinter.def.json +msgctxt "filter_out_tiny_gaps description" +msgid "Filter out tiny gaps to reduce blobs on outside of model." +msgstr "Filtrar (rempver) pequenas lacunas para reduzir bolhas no exterior do modelo." + #: fdmprinter.def.json msgctxt "fill_outline_gaps label" msgid "Print Thin Walls" @@ -1482,8 +1442,8 @@ msgstr "Deslocamento X do Preenchimento" #: fdmprinter.def.json msgctxt "infill_offset_x description" -msgid "The infill pattern is offset this distance along the X axis." -msgstr "O padrão de preenchimento é corrigido/deslocado nesta distância no eixo X." +msgid "The infill pattern is moved this distance along the X axis." +msgstr "O padrão de preenchimento é movido por esta distância no eixo X." #: fdmprinter.def.json msgctxt "infill_offset_y label" @@ -1492,8 +1452,8 @@ msgstr "Deslocamento do Preenchimento Y" #: fdmprinter.def.json msgctxt "infill_offset_y description" -msgid "The infill pattern is offset this distance along the Y axis." -msgstr "O padrão de preenchimento é corrigido/deslocado nesta distância no eixo Y." +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 "sub_div_rad_add label" @@ -1512,8 +1472,8 @@ msgstr "Porcentagem de Sobreposição do Preenchimento" #: fdmprinter.def.json msgctxt "infill_overlap 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 "Porcentagem de sobreposição entre o preenchimento e as paredes. Uma leve sobreposição permite que as paredes fiquem firmemente aderidas ao preenchimento." +msgid "The amount of overlap between the infill and the walls as a percentage of the infill line width. A slight overlap allows the walls to connect firmly to the infill." +msgstr "A quantidade de sobreposição entre o preenchimento e as paredes como uma porcentagem da largura de extrusão de preenchimento. Uma leve sobreposição permite que as paredes se conectem firmemente ao preenchimento." #: fdmprinter.def.json msgctxt "infill_overlap_mm label" @@ -1523,7 +1483,7 @@ msgstr "Sobreposição de Preenchimento" #: fdmprinter.def.json msgctxt "infill_overlap_mm description" msgid "The amount of overlap between the infill and the walls. A slight overlap allows the walls to connect firmly to the infill." -msgstr "Medida de sobreposição entre o preenchimento e as paredes. Uma leve sobreposição permite que as paredes fiquem firememente aderidas ao preenchimento." +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" @@ -1532,8 +1492,8 @@ msgstr "Porcentagem de Sobreposição do Contorno" #: fdmprinter.def.json msgctxt "skin_overlap description" -msgid "The amount of overlap between the skin and the walls as a percentage of the line width. A slight overlap allows the walls to connect firmly to the skin. This is a percentage of the average line widths of the skin lines and the innermost wall." -msgstr "A quantidade de sobreposição entre o contorno e as paredes como uma porcentagem da largura de extrusão. Uma sobreposição leve permite que as paredes se conectem firmemente ao contorno. Este ajuste é uma porcentagem das larguras de extrusão média do contorno e da parede mais interna." +msgid "The amount of overlap between the skin and the walls as a percentage of the skin line width. A slight overlap allows the walls to connect firmly to the skin. This is a percentage of the average line widths of the skin lines and the innermost wall." +msgstr "A quantidade de sobreposição entre o contorno e as paredes como uma porcentagem da largura de extrusão do contorno. Uma leve sobreposição permite que as paredes se conectem firmemente ao contorno. É uma porcentagem das larguras de extrusão médias das linhas de contorno e a parede mais interna." #: fdmprinter.def.json msgctxt "skin_overlap_mm label" @@ -1543,7 +1503,7 @@ msgstr "Sobreposição do Contorno" #: fdmprinter.def.json msgctxt "skin_overlap_mm description" msgid "The amount of overlap between the skin and the walls. A slight overlap allows the walls to connect firmly to the skin." -msgstr "Medida de sobreposição entre o contorno e as paredes. Uma ligeira sobreposição permite às paredes ficarem firmemente aderidas ao contorno." +msgstr "A quantidade de sobreposição entre o contorno e as paredes. Uma leve sobreposição permite às paredes ficarem firmemente aderidas ao contorno." #: fdmprinter.def.json msgctxt "infill_wipe_dist label" @@ -1695,16 +1655,6 @@ msgctxt "material description" msgid "Material" msgstr "Material" -#: fdmprinter.def.json -msgctxt "material_flow_dependent_temperature label" -msgid "Auto Temperature" -msgstr "Temperatura Automática" - -#: fdmprinter.def.json -msgctxt "material_flow_dependent_temperature description" -msgid "Change the temperature for each layer automatically with the average flow speed of that layer." -msgstr "Troca a temperatura para cada camada automaticamente de acordo com a velocidade média de fluxo desta camada." - #: fdmprinter.def.json msgctxt "default_material_print_temperature label" msgid "Default Printing Temperature" @@ -1755,16 +1705,6 @@ msgctxt "material_final_print_temperature description" msgid "The temperature to which to already start cooling down just before the end of printing." msgstr "A temperatura para a qual se deve começar a esfriar pouco antes do fim da impressão." -#: fdmprinter.def.json -msgctxt "material_flow_temp_graph label" -msgid "Flow Temperature Graph" -msgstr "Gráfico de Fluxo de Temperatura" - -#: fdmprinter.def.json -msgctxt "material_flow_temp_graph description" -msgid "Data linking material flow (in mm3 per second) to temperature (degrees Celsius)." -msgstr "Dados relacionando fluxo de material (em mm³ por segundo) a temperatura (graus Celsius)." - #: fdmprinter.def.json msgctxt "material_extrusion_cool_down_speed label" msgid "Extrusion Cool Down Speed Modifier" @@ -1782,8 +1722,8 @@ msgstr "Temperatura da Mesa de Impressão" #: fdmprinter.def.json msgctxt "material_bed_temperature description" -msgid "The temperature used for the heated build plate. If this is 0, the bed will not heat up for this print." -msgstr "A temperatura usada pela mesa aquecida de impressão. Se for 0, a mesa não aquecerá para esta impressão." +msgid "The temperature used for the heated build plate. If this is 0, the bed temperature will not be adjusted." +msgstr "A temperatura usada para a plataforma de impressão aquecida. Se for 0, a temperatura da mesa não será ajustada." #: fdmprinter.def.json msgctxt "material_bed_temperature_layer_0 label" @@ -3455,6 +3395,16 @@ msgctxt "support_tower_roof_angle description" msgid "The angle of a rooftop of a tower. A higher value results in pointed tower roofs, a lower value results in flattened tower roofs." msgstr "Ângulo do Teto (parte superior) de uma torre. Um valor maior resulta em tetos pontiagudos, um valor menor resulta em tetos achatados." +#: fdmprinter.def.json +msgctxt "support_mesh_drop_down label" +msgid "Drop Down Support Mesh" +msgstr "Malha de Suporte Abaixo" + +#: fdmprinter.def.json +msgctxt "support_mesh_drop_down description" +msgid "Make support everywhere below the support mesh, so that there's no overhang in the support mesh." +msgstr "Cria suport em todo lugar abaixo da malha de suporte de modo que não haja seções pendentes nela." + #: fdmprinter.def.json msgctxt "platform_adhesion label" msgid "Build Plate Adhesion" @@ -4089,16 +4039,6 @@ msgctxt "meshfix_keep_open_polygons description" msgid "Normally Cura tries to stitch up small holes in the mesh and remove parts of a layer with big holes. Enabling this option keeps those parts which cannot be stitched. This option should be used as a last resort option when everything else fails to produce proper GCode." msgstr "Normalmente o Cura tenta costurar pequenos furos na malha e remover partes de uma camada com grandes furos. Habilitar esta opção mantém aquelas partes que não podem ser costuradas. Este opção deve ser usada somente como uma última alternativa quando tudo o mais falha em produzir G-Code apropriado." -#: 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 "multiple_mesh_overlap label" msgid "Merged Meshes Overlap" @@ -4249,16 +4189,6 @@ msgctxt "support_mesh description" msgid "Use this mesh to specify support areas. This can be used to generate support structure." msgstr "Use esta malha para especificar áreas obrigatoriamente suportadas. Isto será usado para gerar estruturas de suporte." -#: fdmprinter.def.json -msgctxt "support_mesh_drop_down label" -msgid "Drop Down Support Mesh" -msgstr "Malha de Suporte Abaixo" - -#: fdmprinter.def.json -msgctxt "support_mesh_drop_down description" -msgid "Make support everywhere below the support mesh, so that there's no overhang in the support mesh." -msgstr "Cria suport em todo lugar abaixo da malha de suporte de modo que não haja seções pendentes nela." - #: fdmprinter.def.json msgctxt "anti_overhang_mesh label" msgid "Anti Overhang Mesh" @@ -4335,14 +4265,194 @@ msgid "experimental!" msgstr "experimental!" #: fdmprinter.def.json -msgctxt "optimize_wall_printing_order label" -msgid "Optimize Wall Printing Order" -msgstr "Otimizar Ordem de Impressão de Paredes" +msgctxt "support_tree_enable label" +msgid "Tree Support" +msgstr "Suporte de Árvore" #: fdmprinter.def.json -msgctxt "optimize_wall_printing_order description" -msgid "Optimize the order in which walls are printed so as to reduce the number of retractions and the distance travelled. Most parts will benefit from this being enabled but some may actually take longer so please compare the print time estimates with and without optimization." -msgstr "Otimiza a ordem em que paredes são impressas de modo a reduzir o número de retrações e a distância percorrida. A maioria das peças se beneficiarão deste ajuste habilitado mas algumas podem acabar levando mais tempo, portanto por favor compare as estimativas de tempo de impressão com e sem otimização." +msgctxt "support_tree_enable description" +msgid "Generate a tree-like support with branches that support your print. This may reduce material usage and print time, but greatly increases slicing time." +msgstr "Gera um suporte em árvore com galhos que apóiam sua impressão. Isto pode reduzir uso de material e tempo de impressão, mas aumenta bastante o tempo de fatiamento." + +#: fdmprinter.def.json +msgctxt "support_tree_angle label" +msgid "Tree Support Branch Angle" +msgstr "Ângulo do Galho do Suporte em Árvore" + +#: fdmprinter.def.json +msgctxt "support_tree_angle description" +msgid "The angle of the branches. Use a lower angle to make them more vertical and more stable. Use a higher angle to be able to have more reach." +msgstr "Ô angulo dos galhos. Use um ângulo menor para torná-los mais verticais e mais estáveis. Use um ângulo maior para aumentar o alcance." + +#: fdmprinter.def.json +msgctxt "support_tree_branch_distance label" +msgid "Tree Support Branch Distance" +msgstr "Distância dos Galhos do Suporte em Árvore" + +#: fdmprinter.def.json +msgctxt "support_tree_branch_distance description" +msgid "How far apart the branches need to be when they touch the model. Making this distance small will cause the tree support to touch the model at more points, causing better overhang but making support harder to remove." +msgstr "Quão distantes os galhos precisam estar quando tocam o modelo. Tornar esta distância pequena fará com que o suporte em árvore toque o modelo em mais pontos, permitindo maior sustentação mas tornando o suporte mais difícil de remover." + +#: fdmprinter.def.json +msgctxt "support_tree_branch_diameter label" +msgid "Tree Support Branch Diameter" +msgstr "Diâmetro de Galho do Suporte em Árvore" + +#: fdmprinter.def.json +msgctxt "support_tree_branch_diameter description" +msgid "The diameter of the thinnest branches of tree support. Thicker branches are more sturdy. Branches towards the base will be thicker than this." +msgstr "O diâmetro dos galhos mais finos do suporte em árvore. Galhos mais grossos são mais resistentes. Galhos na direção da base serão mais grossos que essa medida." + +#: fdmprinter.def.json +msgctxt "support_tree_branch_diameter_angle label" +msgid "Tree Support Branch Diameter Angle" +msgstr "Ângulo do Diâmetro do Galho do Suporte em Árvore" + +#: fdmprinter.def.json +msgctxt "support_tree_branch_diameter_angle description" +msgid "The angle of the branches' diameter as they gradually become thicker towards the bottom. An angle of 0 will cause the branches to have uniform thickness over their length. A bit of an angle can increase stability of the tree support." +msgstr "O ângulo do diâmetro dos galhos enquanto se tornam gradualmente mais grossos na direção da base. Um ângulo de 0 fará com que os galhos tenham grossura uniforme no seu comrpimento. Um ângulo levemente maior que zero pode aumentar a estabilidade do suporte em árvore." + +#: fdmprinter.def.json +msgctxt "support_tree_collision_resolution label" +msgid "Tree Support Collision Resolution" +msgstr "Resolução de Colisão do Suporte em Árvore" + +#: fdmprinter.def.json +msgctxt "support_tree_collision_resolution description" +msgid "Resolution to compute collisions with to avoid hitting the model. Setting this lower will produce more accurate trees that fail less often, but increases slicing time dramatically." +msgstr "Resolução para computar colisões com a qual evitar tocar o modelo. Ajustar valor mais baixos produzirá árvore mais precisas que falharão menos, mas aumentará o tempo de fatiamento dramaticamente." + +#: fdmprinter.def.json +msgctxt "support_tree_wall_thickness label" +msgid "Tree Support Wall Thickness" +msgstr "Espessura de Parede do Suporte em Árvore" + +#: fdmprinter.def.json +msgctxt "support_tree_wall_thickness description" +msgid "The thickness of the walls of the branches of tree support. Thicker walls take longer to print but don't fall over as easily." +msgstr "A espessura das paredes dos galhos do suporte em árvore. Paredes mais espessas tomarão mais tempo pra imprimir mas não tombarão facilmente." + +#: fdmprinter.def.json +msgctxt "support_tree_wall_count label" +msgid "Tree Support Wall Line Count" +msgstr "Número de Filetes da Parede do Suporte em Árvore" + +#: fdmprinter.def.json +msgctxt "support_tree_wall_count description" +msgid "The number of walls of the branches of tree support. Thicker walls take longer to print but don't fall over as easily." +msgstr "O número de filetes da parede dos galhos do suporte em árvore. Paredes mais espessas tomarão mais tempo pra imprimir mas não tombarão facilmente." + +#: fdmprinter.def.json +msgctxt "slicing_tolerance label" +msgid "Slicing Tolerance" +msgstr "Tolerância de Fatiamento" + +#: fdmprinter.def.json +msgctxt "slicing_tolerance description" +msgid "How to slice layers with diagonal surfaces. The areas of a layer can be generated based on where the middle of the layer intersects the surface (Middle). Alternatively each layer can have the areas which fall inside of the volume throughout the height of the layer (Exclusive) or a layer has the areas which fall inside anywhere within the layer (Inclusive). Exclusive retains the most details, Inclusive makes for the best fit and Middle takes the least time to process." +msgstr "Como fatiar camadas com superfícies diagonais. As áreas de uma camada podem ser geradas baseadas em onde o meio da camada interseciona a superfície (Meio). Alternativamente, cada camada pode ter as áreas que se encontram dentro do volume por toda a altura da camada (Exclusivo) ou a camada pode abranger todas as áreas que tenham qualquer penetração dentro do volume (Inclusivo). Exclusivo retém mais detalhes, Inclusivo é melhor para encaixes e Meio toma menos tempo para processar." + +#: fdmprinter.def.json +msgctxt "slicing_tolerance option middle" +msgid "Middle" +msgstr "Meio" + +#: fdmprinter.def.json +msgctxt "slicing_tolerance option exclusive" +msgid "Exclusive" +msgstr "Exclusivo" + +#: fdmprinter.def.json +msgctxt "slicing_tolerance option inclusive" +msgid "Inclusive" +msgstr "Inclusivo" + +#: fdmprinter.def.json +msgctxt "roofing_line_width label" +msgid "Top Surface Skin Line Width" +msgstr "Largura de extrusão da Superfície Superior" + +#: fdmprinter.def.json +msgctxt "roofing_line_width description" +msgid "Width of a single line of the areas at the top of the print." +msgstr "Largura de extrusão de um filete das áreas no topo da peça." + +#: fdmprinter.def.json +msgctxt "roofing_pattern label" +msgid "Top Surface Skin Pattern" +msgstr "Padrão da Superfície Superior" + +#: fdmprinter.def.json +msgctxt "roofing_pattern description" +msgid "The pattern of the top most layers." +msgstr "O padrão das camadas superiores." + +#: fdmprinter.def.json +msgctxt "roofing_pattern option lines" +msgid "Lines" +msgstr "Linhas" + +#: fdmprinter.def.json +msgctxt "roofing_pattern option concentric" +msgid "Concentric" +msgstr "Concêntrico" + +#: fdmprinter.def.json +msgctxt "roofing_pattern option zigzag" +msgid "Zig Zag" +msgstr "Ziguezague" + +#: fdmprinter.def.json +msgctxt "roofing_angles label" +msgid "Top Surface Skin Line Directions" +msgstr "Direções dos Filetes da Superfície Superior" + +#: fdmprinter.def.json +msgctxt "roofing_angles description" +msgid "A list of integer line directions to use when the top surface skin layers use the lines or zig zag pattern. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the traditional default angles (45 and 135 degrees)." +msgstr "Uma lista de direções inteiras de filete a usar quando as camadas superiores usam o padrão de linhas ou ziguezague. Elementos desta lista são usados sequencialmente de acordo com o progresso das camadas e quando se chega ao fim da lista, se volta ao começo. Os itens da lista são separados por vírgulas e a lista inteira é contida em colchetes. O default é uma lista vazia que significa o uso dos ângulos default (45 e 135 graus)." + +#: fdmprinter.def.json +msgctxt "infill_enable_travel_optimization label" +msgid "Infill Travel Optimization" +msgstr "Otimização de Percurso de Preenchimento" + +#: fdmprinter.def.json +msgctxt "infill_enable_travel_optimization description" +msgid "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." +msgstr "Quando habilitado, a ordem em que os filetes de preenchimento são impressos é otimizada para reduzir a distância percorrida. A redução em tempo de percurso conseguida depende bastante do modelo sendo fatiado, do padrão de preenchimento, da densidade, etc. Note que, para alguns modelos que têm áreas bem pequenas de preenchimento, o tempo de fatiamento pode ser aumentado bastante." + +#: fdmprinter.def.json +msgctxt "material_flow_dependent_temperature label" +msgid "Auto Temperature" +msgstr "Temperatura Automática" + +#: fdmprinter.def.json +msgctxt "material_flow_dependent_temperature description" +msgid "Change the temperature for each layer automatically with the average flow speed of that layer." +msgstr "Troca a temperatura para cada camada automaticamente de acordo com a velocidade média de fluxo desta camada." + +#: fdmprinter.def.json +msgctxt "material_flow_temp_graph label" +msgid "Flow Temperature Graph" +msgstr "Gráfico de Fluxo de Temperatura" + +#: fdmprinter.def.json +msgctxt "material_flow_temp_graph description" +msgid "Data linking material flow (in mm3 per second) to temperature (degrees Celsius)." +msgstr "Dados relacionando fluxo de material (em mm³ por segundo) a temperatura (graus Celsius)." + +#: 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 "support_skip_some_zags label" @@ -4943,6 +5053,46 @@ msgctxt "wireframe_nozzle_clearance description" msgid "Distance between the nozzle and horizontally downward lines. Larger clearance results in diagonally downward lines with a less steep angle, which in turn results in less upward connections with the next layer. Only applies to Wire Printing." msgstr "Distância entre o bico e os filetes descendentes horizontais. Espaços livres maiores resultarão em filetes descendentes diagonais com ângulo menos acentuado, o que por sua vez resulta em menos conexões ascendentes à próxima camada. Somente se aplica à Impressão em Arame." +#: fdmprinter.def.json +msgctxt "adaptive_layer_height_enabled label" +msgid "Use adaptive layers" +msgstr "Usar camadas adaptativas" + +#: fdmprinter.def.json +msgctxt "adaptive_layer_height_enabled description" +msgid "Adaptive layers computes the layer heights depending on the shape of the model." +msgstr "Camadas adaptativas fazem a computação das alturas de camada depender da forma do modelo." + +#: fdmprinter.def.json +msgctxt "adaptive_layer_height_variation label" +msgid "Adaptive layers maximum variation" +msgstr "Variação máxima das camadas adaptativas" + +#: fdmprinter.def.json +msgctxt "adaptive_layer_height_variation description" +msgid "The maximum allowed height different from the base layer height in mm." +msgstr "A dferença de altura máxima permitida da altura de camada base permitida, em mm." + +#: fdmprinter.def.json +msgctxt "adaptive_layer_height_variation_step label" +msgid "Adaptive layers variation step size" +msgstr "Tamanho de passo da variaçã das camadas adaptativas" + +#: fdmprinter.def.json +msgctxt "adaptive_layer_height_variation_step description" +msgid "The difference in height of the next layer height compared to the previous one." +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" + +#: 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." + #: fdmprinter.def.json msgctxt "command_line_settings label" msgid "Command Line Settings" @@ -5003,6 +5153,26 @@ 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 "infill_offset_x description" +#~ msgid "The infill pattern is offset this distance along the X axis." +#~ msgstr "O padrão de preenchimento é corrigido/deslocado nesta distância no eixo X." + +#~ msgctxt "infill_offset_y description" +#~ msgid "The infill pattern is offset this distance along the Y axis." +#~ msgstr "O padrão de preenchimento é corrigido/deslocado nesta distância no eixo Y." + +#~ msgctxt "infill_overlap 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 "Porcentagem de sobreposição entre o preenchimento e as paredes. Uma leve sobreposição permite que as paredes fiquem firmemente aderidas ao preenchimento." + +#~ msgctxt "skin_overlap description" +#~ msgid "The amount of overlap between the skin and the walls as a percentage of the line width. A slight overlap allows the walls to connect firmly to the skin. This is a percentage of the average line widths of the skin lines and the innermost wall." +#~ msgstr "A quantidade de sobreposição entre o contorno e as paredes como uma porcentagem da largura de extrusão. Uma sobreposição leve permite que as paredes se conectem firmemente ao contorno. Este ajuste é uma porcentagem das larguras de extrusão média do contorno e da parede mais interna." + +#~ msgctxt "material_bed_temperature description" +#~ msgid "The temperature used for the heated build plate. If this is 0, the bed will not heat up for this print." +#~ msgstr "A temperatura usada pela mesa aquecida de impressão. Se for 0, a mesa não aquecerá para esta impressão." + #~ msgctxt "wall_x_extruder_nr label" #~ msgid "Inner Walls Extruder" #~ msgstr "Extrusor das Paredes Internas" diff --git a/resources/i18n/pt_PT/cura.po b/resources/i18n/pt_PT/cura.po index 6fbc8664a9..b8a6bc87e7 100644 --- a/resources/i18n/pt_PT/cura.po +++ b/resources/i18n/pt_PT/cura.po @@ -1,32 +1,32 @@ # Cura -# Copyright (C) 2017 Ultimaker +# Copyright (C) 2018 Ultimaker # This file is distributed under the same license as the Cura package. -# Ruben Dulek , 2017. -# -#, fuzzy +# Ruben Dulek , 2018. +# msgid "" msgstr "" -"Project-Id-Version: Cura 3.1\n" +"Project-Id-Version: Cura 3.2\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2017-08-02 16:53+0000\n" -"PO-Revision-Date: 2017-12-07 13:41+0100\n" +"POT-Creation-Date: 2018-01-29 09:48+0000\n" +"PO-Revision-Date: 2018-02-05 13:25+0100\n" "Last-Translator: Bothof \n" -"Language-Team: Bothof\n" +"Language-Team: Paulo Miranda , Portuguese \n" "Language: pt_PT\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 2.0.5\n" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:29 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:26 msgctxt "@action" msgid "Machine Settings" -msgstr "Definições da máquina" +msgstr "Definições da Máquina" #: /home/ruben/Projects/Cura/plugins/XRayView/__init__.py:12 msgctxt "@item:inlistbox" msgid "X-Ray view" -msgstr "Visualização de raio X" +msgstr "Vista Raio-X" #: /home/ruben/Projects/Cura/plugins/X3DReader/__init__.py:13 msgctxt "@item:inlistbox" @@ -41,12 +41,12 @@ msgstr "Ficheiro GCode" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:65 msgctxt "@action:button" msgid "Print with Doodle3D WiFi-Box" -msgstr "Imprimir com Wi-Fi box Doodle3D" +msgstr "Imprimir com a Doodle3D WiFi-Box" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:66 msgctxt "@properties:tooltip" msgid "Print with Doodle3D WiFi-Box" -msgstr "Imprimir com Wi-Fi box Doodle3D" +msgstr "Imprimir com a Doodle3D WiFi-Box" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:86 msgctxt "@info:status" @@ -55,12 +55,11 @@ msgstr "A ligar ao Doodle3D Connect" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:87 #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:155 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:874 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:646 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:875 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:659 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:370 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrintWindow.qml:78 -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:104 -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:99 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:355 #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:188 #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:376 #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:139 @@ -78,12 +77,12 @@ msgstr "A enviar dados para o Doodle3D Connect" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:161 msgctxt "@info:status" msgid "Unable to send data to Doodle3D Connect. Is another job still active?" -msgstr "Não é possível enviar dados para o Doodle3D Connect. Existe outra tarefa ativa?" +msgstr "Não é possível enviar dados para o Doodle3D Connect. Será que há outro trabalho ainda ativo?" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:175 msgctxt "@info:status" msgid "Storing data on Doodle3D Connect" -msgstr "A armazenar dados no Doodle3D Connect" +msgstr "A guardar dados no Doodle3D Connect" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:213 msgctxt "@info:status" @@ -98,118 +97,134 @@ msgstr "Abrir Connect..." #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:214 msgctxt "@info:tooltip" msgid "Open the Doodle3D Connect web interface" -msgstr "Abrir a interface Web do Doodle3D Connect" +msgstr "Abrir a interface web do Doodle3D Connect" -#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:34 +#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:33 msgctxt "@item:inmenu" msgid "Show Changelog" -msgstr "Mostrar registo de alterações" +msgstr "Mostrar Lista das Alterações de cada Versão" +# rever! +# flatten -ver contexto! +# nivelar? #: /home/ruben/Projects/Cura/plugins/ProfileFlattener/ProfileFlattener.py:20 msgctxt "@item:inmenu" msgid "Flatten active settings" -msgstr "Definições ativas de aplanamento" +msgstr "Nivelar Definições Ativas" #: /home/ruben/Projects/Cura/plugins/ProfileFlattener/ProfileFlattener.py:32 msgctxt "@info:status" msgid "Profile has been flattened & activated." -msgstr "O perfil foi aplanado e ativado." - -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:26 -msgctxt "@item:inmenu" -msgid "USB printing" -msgstr "Impressão através de USB" +msgstr "O perfil foi nivelado & ativado." #: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:27 -msgctxt "@action:button Preceded by 'Ready to'." -msgid "Print via USB" -msgstr "Imprimir através de USB" +msgctxt "@item:inmenu" +msgid "USB printing" +msgstr "Impressão USB" #: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:28 +msgctxt "@action:button Preceded by 'Ready to'." +msgid "Print via USB" +msgstr "Imprimir por USB" + +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:29 msgctxt "@info:tooltip" msgid "Print via USB" -msgstr "Imprimir através de USB" +msgstr "Imprimir por USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:30 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:31 msgctxt "@info:status" msgid "Connected via USB" -msgstr "Ligado através de USB" +msgstr "Ligado via USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:154 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:183 msgctxt "@info:status" msgid "Unable to start a new job because the printer is busy or not connected." -msgstr "Não é possível iniciar uma nova tarefa porque a impressora está ocupada ou não está ligada." +msgstr "Não é possível iniciar um novo trabalho de impressão porque a impressora está ocupada ou não está ligada." -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:154 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:183 msgctxt "@info:title" msgid "Printer Unavailable" -msgstr "Impressora indisponível" +msgstr "Impressora Indisponível" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:457 +# rever! +# flavor +# variante? +# ou só "utilza o UltiGCode" +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:485 msgctxt "@info:status" -msgid "" -"This printer does not support USB printing because it uses UltiGCode flavor." -msgstr "Esta impressora não suporta impressão através de USB porque utiliza o padrão UltiGCode." +msgid "This printer does not support USB printing because it uses UltiGCode flavor." +msgstr "Esta impressora não suporta impressão por USB porque utiliza a variante UltiGCode." -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:457 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:485 msgctxt "@info:title" msgid "USB Printing" -msgstr "Impressão através de USB" +msgstr "Impressão por USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:461 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:489 msgctxt "@info:status" -msgid "" -"Unable to start a new job because the printer does not support usb printing." -msgstr "Não é possível iniciar uma nova tarefa porque a impressora não suporta impressão através de USB." +msgid "Unable to start a new job because the printer does not support usb printing." +msgstr "Não é possível iniciar um novo trabalho porque a impressora não suporta impressão por USB." -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:461 -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:108 +# rever! +# contexto! +# Atenção? +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:489 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:103 #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:146 #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:158 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:945 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1349 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1417 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:946 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1418 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1496 msgctxt "@info:title" msgid "Warning" msgstr "Aviso" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:108 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:103 msgctxt "@info" msgid "Unable to update firmware because there are no printers connected." msgstr "Não é possível atualizar o firmware porque não existem impressoras ligadas." -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:122 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:117 #, python-format msgctxt "@info" msgid "Could not find firmware required for the printer at %s." msgstr "Não foi possível encontrar o firmware necessário para a impressora em %s." -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:122 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:117 msgctxt "@info:title" msgid "Printer Firmware" -msgstr "Firmware da impressora" +msgstr "Firmware da Impressora" +#: /home/ruben/Projects/Cura/plugins/PrepareStage/__init__.py:12 +msgctxt "@item:inmenu" +msgid "Prepare" +msgstr "Preparar" + +# rever! +# unidade amovível +# disco amovível #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:23 msgctxt "@action:button Preceded by 'Ready to'." msgid "Save to Removable Drive" -msgstr "Guardar em unidade amovível" +msgstr "Guardar no Disco Externo" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:24 #, python-brace-format msgctxt "@item:inlistbox" msgid "Save to Removable Drive {0}" -msgstr "Guardar em unidade amovível {0}" +msgstr "Guardar no Disco Externo {0}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:89 #, python-brace-format msgctxt "@info:progress Don't translate the XML tags !" msgid "Saving to Removable Drive {0}" -msgstr "A guardar em unidade amovível {0}" +msgstr "A Guardar no Disco Externo {0}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:89 msgctxt "@info:title" msgid "Saving" -msgstr "A guardar" +msgstr "A Guardar" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:99 #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:102 @@ -222,21 +237,21 @@ msgstr "Não foi possível guardar em {0}: {1}{file_name} to group {cluster_name}" msgstr "A enviar {file_name} para o grupo {cluster_name}" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.py:19 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.py:17 msgctxt "@action" msgid "Connect via Network" -msgstr "Ligar através de rede" +msgstr "Ligar Através da Rede" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:64 +#: /home/ruben/Projects/Cura/plugins/MonitorStage/__init__.py:12 +msgctxt "@item:inmenu" +msgid "Monitor" +msgstr "Monitorizar" + +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:66 #, python-brace-format -msgctxt "" -"@info Don't translate {machine_name}, since it gets replaced by a printer " -"name!" -msgid "" -"New features are available for your {machine_name}! It is recommended to " -"update the firmware on your printer." -msgstr "Estão disponíveis novas funcionalidades para a sua {machine_name}! É recomendado atualizar o firmware na sua impressora." +msgctxt "@info Don't translate {machine_name}, since it gets replaced by a printer name!" +msgid "New features are available for your {machine_name}! It is recommended to update the firmware on your printer." +msgstr "Estão disponíveis novas funcionalidades para a impressora {machine_name}! É recomendado atualizar o firmware da impressora." -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:65 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:67 #, python-format msgctxt "@info:title The %s gets replaced with the printer name." msgid "New %s firmware available" -msgstr "Novo firmware %s disponível" +msgstr "Novo firmware para %s está disponível" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:66 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:68 msgctxt "@action:button" msgid "How to update" msgstr "Como atualizar" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:77 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:79 msgctxt "@info" msgid "Could not access update information." msgstr "Não foi possível aceder às informações de atualização." -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksReader.py:199 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksReader.py:579 +msgctxt "@info:status" +msgid "SolidWorks reported errors, while opening your file. We recommend to solve these issues inside SolidWorks itself." +msgstr "O SolidWorks comunicou erros ao abrir o ficheiro. Recomendamos a resolução destes problemas no SolidWorks." + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksReader.py:591 msgctxt "@info:status" msgid "" -"Errors appeared while opening your SolidWorks file! Please " -"check, whether it is possible to open your file in SolidWorks itself without " -"any problems as well!" -msgstr "Foram apresentados erros ao abrir o seu ficheiro SolidWorks! Verifique se é possível abrir o ficheiro no SolidWorks sem quaisquer problemas!" +"Found no models inside your drawing. Could you please check it's content again and make sure one part or assembly is inside?\n" +"\n" +" Thanks!." +msgstr "Não foram encontrados modelos no interior do seu desenho. Pode verificar novamente o seu conteúdo e confirmar se a peça ou conjunto está no seu interior?\n\n Obrigado!" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:31 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksReader.py:595 +msgctxt "@info:status" +msgid "" +"Found more then one part or assembly inside your drawing. We currently only support drawings with exactly one part or assembly inside.\n" +"\n" +"Sorry!" +msgstr "Detetou-se mais do que uma peça ou um conjunto no interior do seu desenho. Atualmente, apenas suportamos desenhos com exatamente uma peça ou um conjunto no seu interior.\n\nLamentamos!" + +# rever! +# versão PT do solidworks? +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:25 msgctxt "@item:inlistbox" msgid "SolidWorks part file" -msgstr "Ficheiro de peça SolidWorks" +msgstr "Ficheiro SolidWorks Peça" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:35 +# rever! +# versão PT do solidworks? +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:29 msgctxt "@item:inlistbox" msgid "SolidWorks assembly file" -msgstr "Ficheiro de montagem SolidWorks" +msgstr "Ficheiro SolidWorks de montagem" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.py:21 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:33 +msgctxt "@item:inlistbox" +msgid "SolidWorks drawing file" +msgstr "Ficheiro de desenho SolidWorks" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:48 +msgctxt "@info:status" +msgid "" +"Dear customer,\n" +"We could not find a valid installation of SolidWorks on your system. That means that either SolidWorks is not installed or you don't own an valid license. Please make sure that running SolidWorks itself works without issues and/or contact your ICT.\n" +"\n" +"With kind regards\n" +" - Thomas Karl Pietrowski" +msgstr "Caro cliente,\nNão conseguimos encontrar uma instalação válida do SolidWorks no seu sistema. Isto significa que o SolidWorks não está instalado ou que não possui uma licença válida. Certifique-se de que o SolidWorks é executado sem problemas e/ou entre em contacto com o seu serviço de TI.\n\nAtenciosamente\n – Thomas Karl Pietrowski" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:57 +msgctxt "@info:status" +msgid "" +"Dear customer,\n" +"You are currently running this plugin on an operating system other than Windows. This plugin will only work on Windows with SolidWorks installed, including an valid license. Please install this plugin on a Windows machine with SolidWorks installed.\n" +"\n" +"With kind regards\n" +" - Thomas Karl Pietrowski" +msgstr "Caro cliente,\nEstá 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 dispositivo Windows com o SolidWorks instalado.\n\nAtenciosamente\n – Thomas Karl Pietrowski" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksDialogHandler.py:70 msgid "Configure" msgstr "Configurar" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/CommonComReader.py:135 -#, python-format -msgctxt "@info:status" -msgid "Error while starting %s!" -msgstr "Erro ao iniciar %s!" +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksDialogHandler.py:71 +msgid "Installation guide for SolidWorks macro" +msgstr "Guia de instalação para uma macro SolidWorks" #: /home/ruben/Projects/Cura/plugins/SimulationView/__init__.py:14 msgctxt "@item:inlistbox" -msgid "Simulation view" -msgstr "Visualização de simulação" +msgid "Layer view" +msgstr "Visualização de camadas" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:100 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:103 msgctxt "@info:status" msgid "Cura does not accurately display layers when Wire Printing is enabled" -msgstr "O Cura não apresenta as camadas de forma precisa quando a Impressão de fios está ativada" +msgstr "Quando a opção \"Wire Printing\" está activa, o Cura não permite visualizar as camadas de uma forma precisa" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:101 +# rever! +# ver contexto +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:104 msgctxt "@info:title" msgid "Simulation View" -msgstr "Visualização de simulação" +msgstr "Visualização por Camadas" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.py:26 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.py:25 msgid "Modify G-Code" msgstr "Modificar G-Code" #: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:43 msgctxt "@info" -msgid "" -"Cura collects anonymised slicing statistics. You can disable this in the " -"preferences." -msgstr "O Cura recolhe estatísticas de segmentação anónimas. É possível desativar esta opção nas preferências." +msgid "Cura collects anonymized usage statistics." +msgstr "O Cura recolhe estatísticas de utilização anónimas." #: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:46 msgctxt "@info:title" msgid "Collecting Data" -msgstr "A recolher dados" +msgstr "A Recolher Dados" #: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:48 msgctxt "@action:button" -msgid "Dismiss" -msgstr "Dispensar" +msgid "Allow" +msgstr "Permitir" + +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:49 +msgctxt "@action:tooltip" +msgid "Allow Cura to send anonymized usage statistics to help prioritize future improvements to Cura. Some of your preferences and settings are sent, the Cura version and a hash of the models you're slicing." +msgstr "Permitir que o Cura envie estatísticas de utilização anónimas para ajudar a priorizar futuras melhorias do Cura. São enviadas algumas das suas preferências e definições, a versão do Cura e um hash dos modelos que está a seccionar." + +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:50 +msgctxt "@action:button" +msgid "Disable" +msgstr "Desativar" + +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:51 +msgctxt "@action:tooltip" +msgid "Don't allow Cura to send anonymized usage statistics. You can enable it again in the preferences." +msgstr "Não permitir que o Cura envie estatísticas de utilização anónimas. É possível ativá-las novamente nas suas preferências." #: /home/ruben/Projects/Cura/plugins/LegacyProfileReader/__init__.py:14 msgctxt "@item:inlistbox" msgid "Cura 15.04 profiles" msgstr "Perfis Cura 15.04" +#: /home/ruben/Projects/Cura/plugins/CuraBlenderPlugin/__init__.py:15 +msgctxt "@item:inlistbox" +msgid "Blender file" +msgstr "Ficheiro Blender" + +#: /home/ruben/Projects/Cura/plugins/CuraBlenderPlugin/CadIntegrationUtils/CommonReader.py:199 +msgctxt "@info:status" +msgid "" +"Could not export using \"{}\" quality!\n" +"Felt back to \"{}\"." +msgstr "Não foi possível exportar utilizando a qualidade \"{}\"!\nFoi revertido para \"{}\"." + #: /home/ruben/Projects/Cura/plugins/GCodeProfileReader/__init__.py:14 #: /home/ruben/Projects/Cura/plugins/GCodeReader/__init__.py:14 msgctxt "@item:inlistbox" @@ -743,58 +831,55 @@ msgctxt "@item:inlistbox" msgid "GIF Image" msgstr "Imagem GIF" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:269 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:299 msgctxt "@info:status" -msgid "" -"Unable to slice with the current material as it is incompatible with the " -"selected machine or configuration." -msgstr "Não é possível segmentar com o material atual, uma vez que é incompatível com a máquina ou configuração selecionada." +msgid "Unable to slice with the current material as it is incompatible with the selected machine or configuration." +msgstr "Não é possível seccionar com o material atual, uma vez que é incompatível com a impressora ou configuração selecionada." -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:269 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:297 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:319 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:299 #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:327 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:336 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:349 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:357 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:366 msgctxt "@info:title" msgid "Unable to slice" -msgstr "Não é possível segmentar" - -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:296 -#, python-brace-format -msgctxt "@info:status" -msgid "" -"Unable to slice with the current settings. The following settings have " -"errors: {0}" -msgstr "Não é possível segmentar com as definições atuais. As seguintes definições apresentam erros: {0}" - -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:318 -#, python-brace-format -msgctxt "@info:status" -msgid "" -"Unable to slice due to some per-model settings. The following settings have " -"errors on one or more models: {error_labels}" -msgstr "Não é possível segmentar devido a algumas definições por modelo. As seguintes definições apresentam erros num ou mais modelos: {error_labels}" +msgstr "Não é possível Seccionar" #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:326 +#, python-brace-format msgctxt "@info:status" -msgid "" -"Unable to slice because the prime tower or prime position(s) are invalid." -msgstr "Não é possível segmentar porque a torre ou a(s) posição(ões) de preparação é(são) inválidas." +msgid "Unable to slice with the current settings. The following settings have errors: {0}" +msgstr "Não é possível seccionar com as definições atuais. As seguintes definições apresentam erros: {0}" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:335 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:348 +#, python-brace-format msgctxt "@info:status" -msgid "" -"Nothing to slice because none of the models fit the build volume. Please " -"scale or rotate models to fit." -msgstr "Sem conteúdo para segmentar porque nenhum dos modelos se adapta ao volume de construção. Dimensione ou rode os modelos para os adaptar." +msgid "Unable to slice due to some per-model settings. The following settings have errors on one or more models: {error_labels}" +msgstr "Não é possível seccionar devido a algumas definições por modelo. As seguintes definições apresentam erros num ou mais modelos: {error_labels}" + +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:356 +msgctxt "@info:status" +msgid "Unable to slice because the prime tower or prime position(s) are invalid." +msgstr "Não é possível seccionar porque a torre de preparação ou a(s) posição(ões) de preparação é(são) inválidas." + +# rever! +# models fit the +# dentro do? +# contido pelo +# se adapta? +# cabem no...? +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:365 +msgctxt "@info:status" +msgid "Nothing to slice because none of the models fit the build volume. Please scale or rotate models to fit." +msgstr "Sem conteúdo para seccionar porque nenhum dos modelos está dentro do volume de construção. Por favor redimensione, mova ou rode os modelos para os adaptar ao volume de construção." #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:50 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:239 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:242 msgctxt "@info:status" msgid "Processing Layers" -msgstr "A processar camadas" +msgstr "A Processar Camadas" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:239 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:242 msgctxt "@info:title" msgid "Information" msgstr "Informações" @@ -802,22 +887,20 @@ msgstr "Informações" #: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/__init__.py:14 msgctxt "@label" msgid "Per Model Settings" -msgstr "Definições por modelo" +msgstr "Definições Por-Modelo" #: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/__init__.py:15 msgctxt "@info:tooltip" msgid "Configure Per Model Settings" -msgstr "Configurar definições por modelo" +msgstr "Configurar definições individuais Por-Modelo" #: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:23 msgid "Install" msgstr "Instalar" #: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:43 -msgid "" -"Failed to copy Siemens NX plugins files. Please check your UGII_USER_DIR. It " -"is not set to a directory." -msgstr "Falha ao copiar os ficheiros de plug-in Siemens NX. Verifique o seu UGII_USER_DIR. Não está atribuído a um diretório." +msgid "Failed to copy Siemens NX plugins files. Please check your UGII_USER_DIR. It is not set to a directory." +msgstr "Falha ao copiar os ficheiros do plug-in Siemens NX. Verifique o seu UGII_USER_DIR. Não está atribuído a um diretório." #: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:50 #: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:59 @@ -826,24 +909,21 @@ msgid "Successfully installed Siemens NX Cura plugin." msgstr "Plug-in Siemens NX Cura instalado com sucesso." #: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:65 -msgid "" -"Failed to copy Siemens NX plugins files. Please check your UGII_USER_DIR." -msgstr "Falha ao copiar os ficheiros de plug-in Siemens NX. Verifique o seu UGII_USER_DIR." +msgid "Failed to copy Siemens NX plugins files. Please check your UGII_USER_DIR." +msgstr "Falha ao copiar os ficheiros do plug-in Siemens NX. Verifique o seu UGII_USER_DIR." #: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:85 -msgid "" -"Failed to install Siemens NX plugin. Could not set environment variable " -"UGII_USER_DIR for Siemens NX." +msgid "Failed to install Siemens NX plugin. Could not set environment variable UGII_USER_DIR for Siemens NX." msgstr "Falha ao instalar o plug-in Siemens NX. Não foi possível definir a variável do ambiente UGII_USER_DIR para o Siemens NX." -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:167 -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:585 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:165 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:590 msgctxt "@title:tab" msgid "Recommended" msgstr "Recomendado" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:169 -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:590 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:167 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:595 msgctxt "@title:tab" msgid "Custom" msgstr "Personalizado" @@ -854,24 +934,24 @@ msgctxt "@item:inlistbox" msgid "3MF File" msgstr "Ficheiro 3MF" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:126 -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1142 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:159 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1185 msgctxt "@label" msgid "Nozzle" -msgstr "Bocal" +msgstr "Nozzle" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:164 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:152 #, python-brace-format msgctxt "@info:status" msgid "Failed to get plugin ID from {0}" -msgstr "Falha ao obter ID de plug-in de {0}" +msgstr "Falha ao obter ID do plug-in de {0}" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:165 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:153 msgctxt "@info:tile" msgid "Warning" -msgstr "Aviso" +msgstr "Atenção" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:203 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:191 msgctxt "@window:title" msgid "Plugin browser" msgstr "Browser de plug-ins" @@ -879,30 +959,28 @@ msgstr "Browser de plug-ins" #: /home/ruben/Projects/Cura/plugins/SolidView/__init__.py:12 msgctxt "@item:inmenu" msgid "Solid view" -msgstr "Visualização sólida" +msgstr "Vista Sólidos" #: /home/ruben/Projects/Cura/plugins/GCodeReader/__init__.py:18 msgctxt "@item:inlistbox" msgid "G File" msgstr "Ficheiro G" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:314 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:321 msgctxt "@info:status" msgid "Parsing G-code" msgstr "A analisar G-Code" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:316 -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:426 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:323 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:464 msgctxt "@info:title" msgid "G-code Details" msgstr "Detalhes do G-code" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:424 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:462 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 o g-code é apropriado para a sua impressora e respetiva configuração antes de enviar o ficheiro. A representação do g-code poderá ser imprecisa." +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 o g-code é apropriado para a sua impressora e a respetiva configuração antes de enviar o ficheiro. A visualização do g-code poderá não ser correcta." #: /home/ruben/Projects/Cura/plugins/CuraProfileWriter/__init__.py:14 #: /home/ruben/Projects/Cura/plugins/CuraProfileReader/__init__.py:14 @@ -910,6 +988,16 @@ 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:17 +msgctxt "@item:inlistbox" +msgid "Profile Assistant" +msgstr "Assistente de perfis" + #: /home/ruben/Projects/Cura/plugins/3MFWriter/__init__.py:30 msgctxt "@item:inlistbox" msgid "3MF file" @@ -918,7 +1006,7 @@ msgstr "Ficheiro 3MF" #: /home/ruben/Projects/Cura/plugins/3MFWriter/__init__.py:38 msgctxt "@item:inlistbox" msgid "Cura Project 3MF file" -msgstr "Ficheiro 3MF de projeto Cura" +msgstr "Ficheiro 3MF de Projeto Cura" #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelection.py:20 #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelection.py:18 @@ -934,153 +1022,126 @@ msgstr "Atualizar firmware" #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.py:14 msgctxt "@action" msgid "Checkup" -msgstr "Exame" +msgstr "Checkup" #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.py:15 msgctxt "@action" msgid "Level build plate" -msgstr "Nivelar placa de construção" +msgstr "Nivelar base de construção" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:89 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:98 msgctxt "@tooltip" msgid "Outer Wall" -msgstr "Parede externa" +msgstr "Parede Exterior" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:90 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:99 msgctxt "@tooltip" msgid "Inner Walls" -msgstr "Paredes internas" +msgstr "Paredes Interiores" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:91 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:100 msgctxt "@tooltip" msgid "Skin" msgstr "Revestimento" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:92 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:101 msgctxt "@tooltip" msgid "Infill" -msgstr "Preenchimento" +msgstr "Enchimento" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:93 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:102 msgctxt "@tooltip" msgid "Support Infill" -msgstr "Preenchimento de suporte" +msgstr "Enchimento dos Suportes" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:94 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:103 msgctxt "@tooltip" msgid "Support Interface" -msgstr "Interface de suporte" +msgstr "Interface dos Suportes" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:95 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:104 msgctxt "@tooltip" msgid "Support" -msgstr "Suporte" +msgstr "Suportes" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:96 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:105 msgctxt "@tooltip" msgid "Skirt" msgstr "Contorno" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:97 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:106 msgctxt "@tooltip" msgid "Travel" msgstr "Deslocação" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:98 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:107 msgctxt "@tooltip" msgid "Retractions" msgstr "Retrações" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:99 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:108 msgctxt "@tooltip" msgid "Other" msgstr "Outro" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:199 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:231 msgctxt "@label unknown material" msgid "Unknown" msgstr "Desconhecido" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:284 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:318 #, python-brace-format msgctxt "@label" msgid "Pre-sliced file {0}" -msgstr "Ficheiro pré-segmentado {0}" +msgstr "Ficheiro pré-seccionado {0}" -#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:469 +#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:440 msgctxt "@item:material" msgid "No material loaded" -msgstr "Nenhum material carregado" +msgstr "Nenhum material inserido" -#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:476 +#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:447 msgctxt "@item:material" msgid "Unknown material" msgstr "Material desconhecido" -#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:30 -msgctxt "@info:status" -msgid "Finding new location for objects" -msgstr "A procurar nova localização para objetos" - -#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:34 -msgctxt "@info:title" -msgid "Finding Location" -msgstr "A procurar localização" - -#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:89 -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:83 -msgctxt "@info:status" -msgid "Unable to find a location within the build volume for all objects" -msgstr "Não é possível encontrar uma localização no volume de construção para todos os objetos" - -#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:90 -msgctxt "@info:title" -msgid "Can't Find Location" -msgstr "Não é possível encontrar localização" - -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:431 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:113 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:437 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:120 msgctxt "@title:window" msgid "File Already Exists" -msgstr "O ficheiro já existe" +msgstr "O Ficheiro Já Existe" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:432 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:114 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:438 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:121 #, 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?" +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:815 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:872 msgctxt "@label" msgid "Custom" msgstr "Personalizado" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:819 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:876 msgctxt "@label" msgid "Custom Material" -msgstr "Material personalizado" +msgstr "Material Personalizado" -#: /home/ruben/Projects/Cura/cura/Settings/ExtrudersModel.py:182 -msgctxt "@menuitem" -msgid "Global" -msgstr "Global" - -#: /home/ruben/Projects/Cura/cura/Settings/ExtrudersModel.py:229 +# rever! +# Não substituído? +# Sem alterar? +#: /home/ruben/Projects/Cura/cura/Settings/ExtrudersModel.py:205 msgctxt "@menuitem" msgid "Not overridden" -msgstr "Não substituído" +msgstr "Manter" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:117 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:124 msgctxt "@info:status" -msgid "" -"The selected material is incompatible with the selected machine or " -"configuration." -msgstr "O material selecionado é incompatível com a máquina ou configuração selecionada." +msgid "The selected material is incompatible with the selected machine or configuration." +msgstr "O material selecionado é incompatível com a máquina ou a configuração selecionada." -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:118 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:125 #: /home/ruben/Projects/Cura/cura/Settings/MaterialManager.py:24 msgctxt "@info:title" msgid "Incompatible Material" @@ -1088,92 +1149,105 @@ msgstr "Material incompatível" #: /home/ruben/Projects/Cura/cura/Settings/MaterialManager.py:24 msgctxt "@info:status Has a cancel button next to it." -msgid "" -"The selected material diameter causes the material to become incompatible " -"with the current printer." +msgid "The selected material diameter causes the material to become incompatible with the current printer." msgstr "O diâmetro do material selecionado faz com que o material se torne incompatível com a impressora atual." #: /home/ruben/Projects/Cura/cura/Settings/MaterialManager.py:25 msgctxt "@action:button" msgid "Undo" -msgstr "Anular" +msgstr "Desfazer" #: /home/ruben/Projects/Cura/cura/Settings/MaterialManager.py:25 msgctxt "@action" msgid "Undo changing the material diameter." -msgstr "Anular alteração do diâmetro do material." - -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:144 -#, 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}" +msgstr "Desfazer a alteração do diâmetro do material." #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:151 #, 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 gravador comunicou uma falha." +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:156 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:158 +#, 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:163 #, 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:157 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:164 msgctxt "@info:title" msgid "Export succeeded" msgstr "Exportação bem-sucedida" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:183 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:205 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:214 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:248 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:190 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:211 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:271 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" -msgid "" -"Failed to import profile from {0}: {1}" +msgid "Failed to import profile from {0}: {1}" msgstr "Falha ao importar perfil de {0}: {1}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:216 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:252 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:230 +#, python-brace-format +msgctxt "@info:status Don't translate the XML tags or !" +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:240 +#, python-brace-format +msgctxt "@info:status Don't translate the XML tags or !" +msgid "The machine defined in profile {0} doesn't match with your current machine, could not import it." +msgstr "A máquina definida no perfil {0} não corresponde à sua máquina atual, não foi possível importá-la." + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:274 #, 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:255 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:277 +#, python-brace-format +msgctxt "@info:status" +msgid "File {0} does not contain any valid profile." +msgstr "O ficheiro {0} não contém nenhum perfil válido." + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:280 #, python-brace-format msgctxt "@info:status" msgid "Profile {0} has an unknown file type or is corrupted." -msgstr "O perfil {0} tem um tipo de ficheiro desconhecido ou está corrompido." +msgstr "O perfil {0} é de um formato de ficheiro desconhecido ou está corrompido." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:274 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:298 msgctxt "@label" msgid "Custom profile" msgstr "Perfil personalizado" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:285 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:313 msgctxt "@info:status" msgid "Profile is missing a quality type." -msgstr "O perfil tem um tipo de qualidade em falta." +msgstr "O perfil não inclui qualquer tipo de qualidade." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:321 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:349 #, python-brace-format msgctxt "@info:status" msgid "Could not find a quality type {0} for the current configuration." msgstr "Não foi possível encontrar um tipo de qualidade {0} para a configuração atual." +#: /home/ruben/Projects/Cura/cura/ObjectsModel.py:46 +#, python-brace-format +msgctxt "@label" +msgid "Group #{group_nr}" +msgstr "Grupo #{group_nr}" + #: /home/ruben/Projects/Cura/cura/BuildVolume.py:100 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." +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:102 @@ -1181,146 +1255,170 @@ msgctxt "@info:title" msgid "Build Volume" msgstr "Volume de construção" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:34 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:25 msgctxt "@info:status" msgid "Multiplying and placing objects" -msgstr "Multiplicar e dispor objetos" +msgstr "Multiplicar e posicionar objetos" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:35 -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:83 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:26 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:78 msgctxt "@info:title" msgid "Placing Object" -msgstr "A dispor objeto" +msgstr "A Posicionar Objeto" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:80 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:78 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:88 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:152 +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/Arranging/ArrangeObjectsJob.py:29 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:64 +msgctxt "@info:status" +msgid "Finding new location for objects" +msgstr "A procurar nova posição para os objetos" + +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:33 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:68 +msgctxt "@info:title" +msgid "Finding Location" +msgstr "A Procurar Posição" + +# rever! +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:89 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:153 +msgctxt "@info:title" +msgid "Can't Find Location" +msgstr "Não é Possível Posicionar" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:81 msgctxt "@title:window" msgid "Crash Report" -msgstr "Relatório de falhas" +msgstr "Relatório de Falhas" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:93 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:94 msgctxt "@label crash message" msgid "" -"

      A fatal exception has occurred. 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" +"

      A fatal error has occurred. 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 uma exceção fatal. Envie-nos este relatório de falhas para resolver o problema

      \n

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

      \n " +msgstr "

      Ocorreu um erro fatal. Envie-nos este relatório de falhas para resolver o problema

      \n

      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:101 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:102 msgctxt "@title:groupbox" msgid "System information" msgstr "Informações do sistema" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:109 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:110 msgctxt "@label unknown version of Cura" msgid "Unknown" msgstr "Desconhecido" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:111 -#, python-brace-format -msgctxt "@label Cura version" -msgid "Cura version: {version}
      " -msgstr "Versão do Cura: {version}
      " - #: /home/ruben/Projects/Cura/cura/CrashHandler.py:112 -#, python-brace-format -msgctxt "@label Platform" -msgid "Platform: {platform}
      " -msgstr "Plataforma: {platform}
      " +msgctxt "@label Cura version number" +msgid "Cura version" +msgstr "Versão do Cura" #: /home/ruben/Projects/Cura/cura/CrashHandler.py:113 -#, python-brace-format -msgctxt "@label Qt version" -msgid "Qt version: {qt}
      " -msgstr "Versão Qt: {qt}
      " +msgctxt "@label Type of platform" +msgid "Platform" +msgstr "Plataforma" #: /home/ruben/Projects/Cura/cura/CrashHandler.py:114 -#, python-brace-format -msgctxt "@label PyQt version" -msgid "PyQt version: {pyqt}
      " -msgstr "Versão PyQt: {pyqt}
      " +msgctxt "@label" +msgid "Qt version" +msgstr "Qt version" #: /home/ruben/Projects/Cura/cura/CrashHandler.py:115 -#, python-brace-format -msgctxt "@label OpenGL" -msgid "OpenGL: {opengl}
      " -msgstr "OpenGL: {opengl}
      " +msgctxt "@label" +msgid "PyQt version" +msgstr "PyQt version" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:130 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:116 +msgctxt "@label OpenGL version" +msgid "OpenGL" +msgstr "OpenGL" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:133 +msgctxt "@label" +msgid "not yet initialised
      " +msgstr "ainda não foi inicializado
      " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:136 #, python-brace-format msgctxt "@label OpenGL version" msgid "
    • OpenGL Version: {version}
    • " msgstr "
    • Versão do OpenGL: {version}
    • " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:131 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:137 #, python-brace-format msgctxt "@label OpenGL vendor" msgid "
    • OpenGL Vendor: {vendor}
    • " msgstr "
    • Vendedor do OpenGL: {vendor}
    • " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:132 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:138 #, python-brace-format msgctxt "@label OpenGL renderer" msgid "
    • OpenGL Renderer: {renderer}
    • " msgstr "
    • Processador do OpenGL: {renderer}
    • " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:141 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:147 msgctxt "@title:groupbox" -msgid "Exception traceback" -msgstr "Determinação da origem da exceção" +msgid "Error traceback" +msgstr "Determinação da origem do erro" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:208 +# rever! +# Registos? +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:214 msgctxt "@title:groupbox" msgid "Logs" -msgstr "Registos" +msgstr "Relatórios" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:231 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:237 msgctxt "@title:groupbox" msgid "User description" msgstr "Descrição do utilizador" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:246 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:252 msgctxt "@action:button" msgid "Send report" msgstr "Enviar relatório" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:256 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:274 msgctxt "@info:progress" msgid "Loading machines..." msgstr "A carregar máquinas..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:661 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:660 msgctxt "@info:progress" msgid "Setting up scene..." msgstr "A configurar cenário..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:703 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:702 msgctxt "@info:progress" msgid "Loading interface..." msgstr "A carregar interface..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:874 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:899 #, python-format -msgctxt "" -"@info 'width', 'depth' and 'height' are variable names that must NOT be " -"translated; just translate the format of ##x##x## mm." +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" +msgstr "%(width).1f x %(depth).1f x %(height).1f mm" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1348 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1417 #, 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:1357 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1426 #, 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:1416 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1495 msgctxt "@info:status" msgid "The selected model was too small to load." msgstr "O modelo selecionado era demasiado pequeno para carregar." @@ -1338,7 +1436,7 @@ msgstr "Impressora" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:97 msgctxt "@label" msgid "Printer Settings" -msgstr "Definições da impressora" +msgstr "Definições da Impressora" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:108 msgctxt "@label" @@ -1349,12 +1447,11 @@ msgstr "X (largura)" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:119 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:129 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:235 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:288 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:300 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:391 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:401 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:413 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:840 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:383 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:394 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:412 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:424 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:849 msgctxt "@label" msgid "mm" msgstr "mm" @@ -1372,7 +1469,7 @@ msgstr "Z (altura)" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:140 msgctxt "@label" msgid "Build plate shape" -msgstr "Forma da placa de construção" +msgstr "Forma da base de construção" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:149 msgctxt "@option:check" @@ -1387,64 +1484,52 @@ msgstr "Base aquecida" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:168 msgctxt "@label" msgid "Gcode flavor" -msgstr "Padrão Gcode" +msgstr "Variante Gcode" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:181 msgctxt "@label" msgid "Printhead Settings" -msgstr "Definições da cabeça de impressão" +msgstr "Definições Cabeça de Impressão" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:191 msgctxt "@label" msgid "X min" -msgstr "X mín." +msgstr "X mín" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:192 msgctxt "@tooltip" -msgid "" -"Distance from the left of the printhead to the center of the nozzle. Used to " -"prevent colissions between previous prints and the printhead when printing " -"\"One at a Time\"." -msgstr "Distância desde a parte esquerda da cabeça de impressão até ao centro do bocal. Utilizado para impedir colisões entre as impressões anteriores e a cabeça de impressão ao imprimir \"Individualmente\"." +msgid "Distance from the left of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." +msgstr "Distância desde a parte esquerda da cabeça de impressão até ao centro do nozzle. Utilizado para impedir colisões entre as impressões anteriores e a cabeça de impressão ao imprimir \"Individualmente\"." #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:201 msgctxt "@label" msgid "Y min" -msgstr "Y mín." +msgstr "Y mín" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:202 msgctxt "@tooltip" -msgid "" -"Distance from the front of the printhead to the center of the nozzle. Used " -"to prevent colissions between previous prints and the printhead when " -"printing \"One at a Time\"." -msgstr "Distância desde a parte frontal da cabeça de impressão até ao centro do bocal. Utilizado para impedir colisões entre as impressões anteriores e a cabeça de impressão ao imprimir \"Individualmente\"." +msgid "Distance from the front of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." +msgstr "Distância desde a parte frontal da cabeça de impressão até ao centro do nozzle. Utilizado para impedir colisões entre as impressões anteriores e a cabeça de impressão ao imprimir \"Individualmente\"." #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:211 msgctxt "@label" msgid "X max" -msgstr "X máx." +msgstr "X máx" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:212 msgctxt "@tooltip" -msgid "" -"Distance from the right of the printhead to the center of the nozzle. Used " -"to prevent colissions between previous prints and the printhead when " -"printing \"One at a Time\"." -msgstr "Distância desde a parte direita da cabeça de impressão até ao centro do bocal. Utilizado para impedir colisões entre as impressões anteriores e a cabeça de impressão ao imprimir \"Individualmente\"." +msgid "Distance from the right of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." +msgstr "Distância desde a parte direita da cabeça de impressão até ao centro do nozzle. Utilizado para impedir colisões entre as impressões anteriores e a cabeça de impressão ao imprimir \"Individualmente\"." #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:221 msgctxt "@label" msgid "Y max" -msgstr "Y máx." +msgstr "Y máx" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:222 msgctxt "@tooltip" -msgid "" -"Distance from the rear of the printhead to the center of the nozzle. Used to " -"prevent colissions between previous prints and the printhead when printing " -"\"One at a Time\"." -msgstr "Distância desde a parte posterior da cabeça de impressão até ao centro do bocal. Utilizado para impedir colisões entre as impressões anteriores e a cabeça de impressão ao imprimir \"Individualmente\"." +msgid "Distance from the rear of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." +msgstr "Distância desde a parte posterior da cabeça de impressão até ao centro do nozzle. Utilizado para impedir colisões entre as impressões anteriores e a cabeça de impressão ao imprimir \"Individualmente\"." #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:234 msgctxt "@label" @@ -1453,90 +1538,85 @@ msgstr "Altura do pórtico" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:236 msgctxt "@tooltip" -msgid "" -"The height difference between the tip of the nozzle and the gantry system (X " -"and Y axes). Used to prevent collisions between previous prints and the " -"gantry when printing \"One at a Time\"." -msgstr "A diferença de altura entre a ponta do bocal e o sistema de pórtico (eixos X e Y). Utilizado para impedir colisões entre as impressões anteriores e o pórtico ao imprimir \"Individualmente\"." +msgid "The height difference between the tip of the nozzle and the gantry system (X and Y axes). Used to prevent collisions between previous prints and the gantry when printing \"One at a Time\"." +msgstr "A diferença de altura entre a ponta do nozzle e o sistema de pórtico (eixos X e Y). Utilizado para impedir colisões entre as impressões anteriores e o pórtico ao imprimir \"Individualmente\"." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:255 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:254 msgctxt "@label" msgid "Number of Extruders" -msgstr "Número de extrusoras" +msgstr "Número de Extrusores" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:289 -msgctxt "@tooltip" -msgid "" -"The nominal diameter of filament supported by the printer. The exact " -"diameter will be overridden by the material and/or the profile." -msgstr "O diâmetro nominal do filamento suportado pela impressora. O diâmetro exato será substituído pelo material e/ou perfil." - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:291 -msgctxt "@label" -msgid "Material diameter" -msgstr "Diâmetro do material" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:299 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:390 -msgctxt "@label" -msgid "Nozzle size" -msgstr "Tamanho do bocal" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:317 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:310 msgctxt "@label" msgid "Start Gcode" msgstr "Gcode inicial" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:327 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:320 msgctxt "@tooltip" msgid "Gcode commands to be executed at the very start." msgstr "Comandos Gcode a serem executados no início." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:336 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:329 msgctxt "@label" msgid "End Gcode" msgstr "Gcode final" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:346 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:339 msgctxt "@tooltip" msgid "Gcode commands to be executed at the very end." msgstr "Comandos Gcode a serem executados no fim." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:378 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:370 msgctxt "@label" msgid "Nozzle Settings" -msgstr "Definições do bocal" +msgstr "Definições do Nozzle" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:400 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:382 +msgctxt "@label" +msgid "Nozzle size" +msgstr "Tamanho do nozzle" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:393 +msgctxt "@label" +msgid "Compatible material diameter" +msgstr "Diâmetro do material compatível" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:395 +msgctxt "@tooltip" +msgid "The nominal diameter of filament supported by the printer. The exact diameter will be overridden by the material and/or the profile." +msgstr "O diâmetro nominal do filamento suportado pela impressora. O diâmetro exato será substituído pelo material e/ou perfil." + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:411 msgctxt "@label" msgid "Nozzle offset X" -msgstr "Desvio X do bocal" +msgstr "Desvio X do Nozzle" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:412 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:423 msgctxt "@label" msgid "Nozzle offset Y" -msgstr "Desvio Y do bocal" +msgstr "Desvio Y do Nozzle" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:433 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:444 msgctxt "@label" msgid "Extruder Start Gcode" -msgstr "Gcode inicial da extrusora" +msgstr "Gcode Inicial do Extrusor" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:451 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:462 msgctxt "@label" msgid "Extruder End Gcode" -msgstr "Gcode final da extrusora" +msgstr "Gcode Final do Extrusor" #: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.qml:18 msgctxt "@label" msgid "Changelog" -msgstr "Registo de alterações" +msgstr "Lista das Alterações" #: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.qml:37 #: /home/ruben/Projects/Cura/plugins/USBPrinting/FirmwareUpdateWindow.qml:107 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:55 -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:445 -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:357 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:306 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:456 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:492 #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:80 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:123 #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:147 @@ -1598,11 +1678,7 @@ msgstr "Ligar à impressora em rede" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:65 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" +"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 à impressora, poderá ainda assim utilizar uma unidade USB para transferir ficheiros g-code para a impressora.\n\nSelecione a sua impressora na lista a seguir:" @@ -1621,7 +1697,7 @@ msgstr "Editar" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:96 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:50 #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:95 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:190 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:171 msgctxt "@action:button" msgid "Remove" msgstr "Remover" @@ -1634,10 +1710,8 @@ msgstr "Atualizar" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:194 msgctxt "@label" -msgid "" -"If your printer is not listed, read the network printing " -"troubleshooting guide" -msgstr "Se a sua impressora não estiver indicada, leia o guia de resolução de problemas de impressão em rede" +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, leia o guia de resolução de problemas de impressão em rede" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:221 msgctxt "@label" @@ -1645,19 +1719,19 @@ msgid "Type" msgstr "Tipo" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:233 -msgctxt "@label" +msgctxt "@label Printer name" msgid "Ultimaker 3" msgstr "Ultimaker 3" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:236 -msgctxt "@label" +msgctxt "@label Printer name" msgid "Ultimaker 3 Extended" msgstr "Ultimaker 3 Extended" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:252 msgctxt "@label" msgid "Firmware version" -msgstr "Versão de firmware" +msgstr "Versão de Firmware" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:264 msgctxt "@label" @@ -1688,7 +1762,7 @@ msgstr "Ligar" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:319 msgctxt "@title:window" msgid "Printer Address" -msgstr "Endereço da impressora" +msgstr "Endereço da Impressora" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:349 msgctxt "@alabel" @@ -1696,8 +1770,6 @@ 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." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:379 -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:92 -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:88 #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:181 msgctxt "@action:button" msgid "OK" @@ -1706,7 +1778,7 @@ msgstr "OK" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrintWindow.qml:24 msgctxt "@title:window" msgid "Print over network" -msgstr "Imprimir através da rede" +msgstr "Imprimir Através da Rede" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrintWindow.qml:92 msgctxt "@action:button" @@ -1718,16 +1790,21 @@ msgctxt "@label: arg 1 is group name" msgid "%1 is not set up to host a group of connected Ultimaker 3 printers" msgstr "%1 não está configurado para alojar um grupo de impressoras Ultimaker 3 ligadas em rede" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterMonitorItem.qml:55 +msgctxt "@label link to connect manager" +msgid "Add/Remove printers" +msgstr "Adicionar/remover impressoras" + #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/OpenPanelButton.qml:14 msgctxt "@info:tooltip" msgid "Opens the print jobs page with your default web browser." -msgstr "Abre a página de tarefas de impressão com o seu browser predefinido." +msgstr "Abre a página com a lista dos trabalhos de impressão, no seu browser predefinido." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/OpenPanelButton.qml:15 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterControlItem.qml:131 msgctxt "@action:button" msgid "View print jobs" -msgstr "Visualizar tarefas de impressão" +msgstr "Ver Trabalhos em Impressão" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:37 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:278 @@ -1740,7 +1817,7 @@ msgstr "A preparar para imprimir" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:271 msgctxt "@label:status" msgid "Printing" -msgstr "A imprimir" +msgstr "A Imprimir" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:41 msgctxt "@label:status" @@ -1748,10 +1825,15 @@ msgid "Available" msgstr "Disponível" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:43 -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:101 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:100 msgctxt "@label:MonitorStatus" msgid "Lost connection with the printer" -msgstr "Ligação com a impressora perdida" +msgstr "Perdeu-se a ligação com a impressora" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:47 +msgctxt "@label Printer status" +msgid "Unknown" +msgstr "Desconhecido" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:257 msgctxt "@label:status" @@ -1771,12 +1853,12 @@ msgstr "Concluído" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:290 msgctxt "@label:status" msgid "Paused" -msgstr "Em pausa" +msgstr "Em Pausa" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:292 msgctxt "@label:status" msgid "Resuming" -msgstr "A retomar" +msgstr "A Recomeçar" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:294 msgctxt "@label:status" @@ -1787,17 +1869,17 @@ msgstr "Impressão cancelada" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:410 msgctxt "@label" msgid "Not accepting print jobs" -msgstr "Não são aceites tarefas de impressão" +msgstr "Não são aceites trabalhos de impressão" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:403 msgctxt "@label" msgid "Finishes at: " -msgstr "Termina a: " +msgstr "Termina em: " #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:405 msgctxt "@label" msgid "Clear build plate" -msgstr "Limpar placa de construção" +msgstr "Limpar base de construção" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:414 msgctxt "@label" @@ -1807,12 +1889,12 @@ msgstr "A aguardar pela alteração de configuração" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterControlItem.qml:64 msgctxt "@title" msgid "Print jobs" -msgstr "Tarefas de impressão" +msgstr "Trabalhos em Impressão" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterControlItem.qml:94 msgctxt "@label" msgid "Printing" -msgstr "A imprimir" +msgstr "A Imprimir" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterControlItem.qml:112 msgctxt "@label" @@ -1827,7 +1909,7 @@ msgstr "Impressoras" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterControlItem.qml:225 msgctxt "@action:button" msgid "View printers" -msgstr "Visualizar impressoras" +msgstr "Ver Impressoras" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:37 msgctxt "@info:tooltip" @@ -1837,148 +1919,266 @@ msgstr "Ligar a uma impressora" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:116 msgctxt "@info:tooltip" msgid "Load the configuration of the printer into Cura" -msgstr "Carregar a configuração da impressora para o Cura" +msgstr "Importar a configuração da impressora para o Cura" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:117 msgctxt "@action:button" msgid "Activate Configuration" -msgstr "Ativar configuração" +msgstr "Ativar Configuração" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:20 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:21 msgctxt "@title:window" -msgid "Cura SolidWorks Plugin Configuration" -msgstr "Configuração do plug-in SolidWorks do Cura" +msgid "SolidWorks: Export wizard" +msgstr "SolidWorks: Exportar assistente" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:44 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:45 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:140 msgctxt "@action:label" -msgid "Default quality of the exported STL:" -msgstr "Qualidade predefinida do STL exportado:" +msgid "Quality:" +msgstr "Qualidade:" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:79 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:78 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:179 msgctxt "@option:curaSolidworksStlQuality" -msgid "Always ask" -msgstr "Perguntar sempre" +msgid "Fine (3D-printing)" +msgstr "Alta resolução (impressão 3D)" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:80 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:79 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:180 msgctxt "@option:curaSolidworksStlQuality" -msgid "Always use Fine quality" -msgstr "Utilizar sempre qualidade de alta resolução" +msgid "Coarse (3D-printing)" +msgstr "Baixa resolução (impressão 3D)" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:81 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:80 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:181 msgctxt "@option:curaSolidworksStlQuality" -msgid "Always use Coarse quality" -msgstr "Utilizar sempre a qualidade de baixa resolução" +msgid "Fine (SolidWorks)" +msgstr "Alta resolução (SolidWorks)" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:20 -msgctxt "@title:window" -msgid "Import SolidWorks File as STL..." -msgstr "Importar ficheiro SolidWorks como STL..." - -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:43 -msgctxt "@info:tooltip" -msgid "Quality of the Exported STL" -msgstr "Qualidade do STL exportado" - -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:48 -msgctxt "@action:label" -msgid "Quality" -msgstr "Qualidade" - -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:62 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:81 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:182 msgctxt "@option:curaSolidworksStlQuality" -msgid "Coarse" -msgstr "Baixa resolução" +msgid "Coarse (SolidWorks)" +msgstr "Baixa resolução (SolidWorks)" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:63 -msgctxt "@option:curaSolidworksStlQuality" -msgid "Fine" -msgstr "Alta resolução" - -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:78 -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:82 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:94 msgctxt "@text:window" -msgid "Remember my choice" -msgstr "Memorizar a minha escolha" +msgid "Show this dialog again" +msgstr "Mostrar esta caixa de diálogo novamente" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:81 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:104 +msgctxt "@action:button" +msgid "Continue" +msgstr "Continuar" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:116 +msgctxt "@action:button" +msgid "Abort" +msgstr "Cancelar" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:21 +msgctxt "@title:window" +msgid "How to install Cura SolidWorks macro" +msgstr "Como instalar a macro Cura SolidWorks" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:62 +msgctxt "@description:label" +msgid "Steps:" +msgstr "Passos:" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:140 +msgctxt "@action:button" +msgid "" +"Open the directory\n" +"with macro and icon" +msgstr "Abrir o diretório\ncom macro e ícone" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:160 +msgctxt "@description:label" +msgid "Instructions:" +msgstr "Instruções:" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:202 +msgctxt "@action:playpause" +msgid "Play" +msgstr "Reproduzir" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:206 +msgctxt "@action:playpause" +msgid "Pause" +msgstr "Colocar em pausa" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:268 +msgctxt "@action:button" +msgid "Previous Step" +msgstr "Passo anterior" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:283 +msgctxt "@action:button" +msgid "Done" +msgstr "Concluído" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:287 +msgctxt "@action:button" +msgid "Next Step" +msgstr "Passo seguinte" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:21 +msgctxt "@title:window" +msgid "SolidWorks plugin: Configuration" +msgstr "Plug-in SolidWorks: Configuração" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:39 +msgctxt "@title:tab" +msgid "Conversion settings" +msgstr "Definições de conversão" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:66 +msgctxt "@label" +msgid "First choice:" +msgstr "Primeira escolha:" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:86 +msgctxt "@text:menu" +msgid "Latest installed version (Recommended)" +msgstr "Última versão instalada (Recomendada)" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:95 +msgctxt "@text:menu" +msgid "Default version" +msgstr "Versão predefinida" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:193 +msgctxt "@label" +msgid "Show wizard before opening SolidWorks files" +msgstr "Mostrar assistente antes de abrir ficheiros SolidWorks" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:203 +msgctxt "@label" +msgid "Automatically rotate opened file into normed orientation" +msgstr "Rodar automaticamente o ficheiro aberto para uma orientação normalizada" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:210 +msgctxt "@title:tab" +msgid "Installation(s)" +msgstr "Instalação(ões)" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:284 +msgctxt "@label" +msgid "COM service found" +msgstr "Serviço COM encontrado" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:295 +msgctxt "@label" +msgid "Executable found" +msgstr "Executável encontrado" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:306 +msgctxt "@label" +msgid "COM starting" +msgstr "A iniciar COM" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:317 +msgctxt "@label" +msgid "Revision number" +msgstr "Número da revisão" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:328 +msgctxt "@label" +msgid "Functions available" +msgstr "Funções disponíveis" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:341 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:264 +msgctxt "@action:button" +msgid "Save" +msgstr "Guardar" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:117 msgctxt "@label" msgid "Color scheme" msgstr "Esquema de cores" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:96 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:132 msgctxt "@label:listbox" msgid "Material Color" -msgstr "Cor do material" +msgstr "Cor do Material" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:100 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:136 msgctxt "@label:listbox" msgid "Line Type" -msgstr "Tipo de linha" +msgstr "Tipo de Linha" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:104 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:140 msgctxt "@label:listbox" msgid "Feedrate" -msgstr "Velocidade de alimentação" +msgstr "Velocidade de Alimentação" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:108 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:144 msgctxt "@label:listbox" msgid "Layer thickness" -msgstr "Espessura da camada" +msgstr "Espessura da Camada" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:148 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:185 msgctxt "@label" msgid "Compatibility Mode" -msgstr "Modo de compatibilidade" +msgstr "Modo Compatibilidade" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:230 +# rever! +# Mostrar...? +# Ver...? +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:264 msgctxt "@label" msgid "Show Travels" -msgstr "Mostrar deslocações" +msgstr "Deslocações" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:236 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:270 msgctxt "@label" msgid "Show Helpers" -msgstr "Mostrar auxiliares" +msgstr "Auxiliares" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:242 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:276 msgctxt "@label" msgid "Show Shell" -msgstr "Mostrar cobertura" +msgstr "Invólucro" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:248 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:282 msgctxt "@label" msgid "Show Infill" -msgstr "Mostrar preenchimento" +msgstr "Enchimento" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:297 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:330 msgctxt "@label" msgid "Only Show Top Layers" -msgstr "Mostrar apenas camadas superiores" +msgstr "Mostrar Só Camadas Superiores" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:306 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:339 msgctxt "@label" msgid "Show 5 Detailed Layers On Top" -msgstr "Mostrar cinco camadas detalhadas no topo" +msgstr "Mostrar 5 Camadas Superiores Detalhadas" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:317 +# rever! +# todas as strings com a frase +# Topo / Base ?? +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:350 msgctxt "@label" msgid "Top / Bottom" -msgstr "Superior/Inferior" +msgstr "Superior / Inferior" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:321 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:354 msgctxt "@label" msgid "Inner Wall" -msgstr "Parede interna" +msgstr "Parede Interior" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:378 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:410 msgctxt "@label" msgid "min" -msgstr "mín." +msgstr "mín" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:420 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:452 msgctxt "@label" msgid "max" -msgstr "máx." +msgstr "máx" #: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:18 msgctxt "@title:window" @@ -2000,7 +2200,7 @@ msgctxt "@label" msgid "Settings" msgstr "Definições" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:455 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:466 msgctxt "@info:tooltip" msgid "Change active post-processing scripts" msgstr "Alterar scripts de pós-processamento ativos" @@ -2013,17 +2213,18 @@ msgstr "Converter imagem..." #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:33 msgctxt "@info:tooltip" msgid "The maximum distance of each pixel from \"Base.\"" -msgstr "A distância máxima de cada pixel desde a \"Base\"." +msgstr "A distância máxima de cada pixel desde a \"Base\"" #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:38 msgctxt "@action:label" msgid "Height (mm)" msgstr "Altura (mm)" +# rever! #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:56 msgctxt "@info:tooltip" msgid "The base height from the build plate in millimeters." -msgstr "A altura da base desde a placa de construção em milímetros." +msgstr "A altura da \"Base\" desde a base de construção em milímetros." #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:61 msgctxt "@action:label" @@ -2033,7 +2234,7 @@ msgstr "Base (mm)" #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:79 msgctxt "@info:tooltip" msgid "The width in millimeters on the build plate." -msgstr "A largura em milímetros na placa de construção." +msgstr "A largura em milímetros na base de construção." #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:84 msgctxt "@action:label" @@ -2043,7 +2244,7 @@ msgstr "Largura (mm)" #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:103 msgctxt "@info:tooltip" msgid "The depth in millimeters on the build plate" -msgstr "A profundidade em milímetros na placa de construção" +msgstr "A profundidade em milímetros na base de construção" #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:108 msgctxt "@action:label" @@ -2052,12 +2253,8 @@ msgstr "Profundidade (mm)" #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:126 msgctxt "@info:tooltip" -msgid "" -"By default, white pixels represent high points on the mesh and black pixels " -"represent low points on the mesh. Change this option to reverse the behavior " -"such that black pixels represent high points on the mesh and white pixels " -"represent low points on the mesh." -msgstr "Por predefinição, os pixels brancos representam os pontos altos na malha e os pixels pretos representam os pontos baixos na malha. Altere esta opção para inverter o comportamento de forma que os pixels pretos representem os pontos altos na malha e os pixels brancos representem os pontos baixos na malha." +msgid "By default, white pixels represent high points on the mesh and black pixels represent low points on the mesh. Change this option to reverse the behavior such that black pixels represent high points on the mesh and white pixels represent low points on the mesh." +msgstr "Por predefinição, os pixels brancos representam os pontos altos do objecto e os pixels pretos representam os pontos baixos do objecto. Altere esta opção para inverter o comportamento de forma que os pixels pretos representem os pontos altos do objecto e os pixels brancos representem os pontos baixos do objecto." #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:139 msgctxt "@item:inlistbox" @@ -2079,23 +2276,53 @@ msgctxt "@action:label" msgid "Smoothing" msgstr "Suavização" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:208 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:38 +msgctxt "@label" +msgid "Mesh Type" +msgstr "Tipo de malha" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:69 +msgctxt "@label" +msgid "Normal model" +msgstr "Modelo normal" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:76 +msgctxt "@label" +msgid "Print as support" +msgstr "Imprimir como suporte" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:84 +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:92 +msgctxt "@label" +msgid "Modify settings for overlap with other models" +msgstr "Modificar definições para sobreposição com outros modelos" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:100 +msgctxt "@label" +msgid "Modify settings for infill of other models" +msgstr "Modificar definições para preenchimento de outros modelos" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:333 msgctxt "@action:button" msgid "Select settings" msgstr "Selecionar definições" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:248 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:375 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:272 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:402 #: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:91 msgctxt "@label:textbox" msgid "Filter..." msgstr "Filtrar..." -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:296 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:426 msgctxt "@label:checkbox" msgid "Show all" msgstr "Mostrar tudo" @@ -2103,7 +2330,7 @@ msgstr "Mostrar tudo" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:14 msgctxt "@title:window" msgid "Open Project" -msgstr "Abrir projeto" +msgstr "Abrir Projeto" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:58 msgctxt "@action:ComboBox option" @@ -2130,7 +2357,7 @@ msgstr "Definições da impressora" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:108 msgctxt "@info:tooltip" msgid "How should the conflict in the machine be resolved?" -msgstr "Como deve ser resolvido o conflito na máquina?" +msgstr "Como deve ser resolvido o conflito da máquina?" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:128 #: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:99 @@ -2164,6 +2391,8 @@ msgctxt "@action:label" msgid "Not in profile" msgstr "Inexistente no perfil" +# rever! +# contexto?! #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:221 #: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:179 msgctxt "@action:label" @@ -2220,7 +2449,7 @@ msgstr "%1 de %2" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:368 msgctxt "@action:warning" msgid "Loading a project will clear all models on the build plate." -msgstr "O carregamento de um projeto irá limpar todos os modelos na placa de construção." +msgstr "Abrir um projeto irá apagar todos os modelos na base de construção." #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:386 msgctxt "@action:button" @@ -2235,7 +2464,7 @@ msgstr "Procurar e atualizar plug-ins" #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:27 msgctxt "@label" msgid "Here you can find a list of Third Party plugins." -msgstr "Aqui pode encontrar uma lista de plug-ins de terceiros." +msgstr "Aqui pode encontrar uma lista de plug-ins criados por terceiros." #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:145 msgctxt "@action:button" @@ -2278,13 +2507,13 @@ msgstr "Rejeitar" #: /home/ruben/Projects/Cura/plugins/UserAgreementPlugin/UserAgreement.qml:16 msgctxt "@title:window" msgid "User Agreement" -msgstr "Contrato de utilizador" +msgstr "Contrato de Utilizador" #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:25 #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:25 msgctxt "@title" msgid "Select Printer Upgrades" -msgstr "Selecionar atualizações da impressora" +msgstr "Selecionar Atualizações da Impressora" #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:37 msgctxt "@label" @@ -2294,57 +2523,47 @@ msgstr "Selecione quaisquer atualizações realizadas a esta Ultimaker 2." #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:45 msgctxt "@label" msgid "Olsson Block" -msgstr "Bloco Olsson" +msgstr "Olson Block" #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:27 msgctxt "@title" msgid "Build Plate Leveling" -msgstr "Nivelamento da placa de construção" +msgstr "Nivelamento da Base de Construção" #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:38 msgctxt "@label" -msgid "" -"To make sure your prints will come out great, you can now adjust your " -"buildplate. When you click 'Move to Next Position' the nozzle will move to " -"the different positions that can be adjusted." -msgstr "Para assegurar uma boa qualidade das suas impressões, é agora possível ajustar a placa de construção. Quando clica em \"Avançar para a posição seguinte\", o bocal irá deslocar-se para as diferentes posições que podem ser ajustadas." +msgid "To make sure your prints will come out great, you can now adjust your buildplate. When you click 'Move to Next Position' the nozzle will move to the different positions that can be adjusted." +msgstr "Para assegurar uma boa qualidade das suas impressões, pode agora ajustar a base de construção. Quando clica em \"Avançar para a posição seguinte\", o nozzle irá deslocar-se para as diferentes posições que podem ser ajustadas." #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:47 msgctxt "@label" -msgid "" -"For every position; insert a piece of paper under the nozzle and adjust the " -"print build plate height. The print build plate height is right when the " -"paper is slightly gripped by the tip of the nozzle." -msgstr "Para cada posição, introduza um pedaço de papel debaixo do bocal e ajuste a altura da placa de construção da impressão. A altura da placa de construção da impressão está correta quando o papel ficar ligeiramente preso na ponta do bocal." +msgid "For every position; insert a piece of paper under the nozzle and adjust the print build plate height. The print build plate height is right when the paper is slightly gripped by the tip of the nozzle." +msgstr "Para cada posição, introduza um pedaço de papel debaixo do nozzle e ajuste a altura da base de construção. A altura da base de construção está correta quando o papel fica ligeiramente preso pelo nozzle." #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:62 msgctxt "@action:button" msgid "Start Build Plate Leveling" -msgstr "Iniciar nivelamento da placa de construção" +msgstr "Iniciar Nivelamento da base de construção" #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:74 msgctxt "@action:button" msgid "Move to Next Position" -msgstr "Avançar para posição seguinte" +msgstr "Avançar para Posição Seguinte" #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UpgradeFirmwareMachineAction.qml:27 msgctxt "@title" msgid "Upgrade Firmware" -msgstr "Atualizar firmware" +msgstr "Atualizar Firmware" +# rever! #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UpgradeFirmwareMachineAction.qml:38 msgctxt "@label" -msgid "" -"Firmware is the piece of software running directly on your 3D printer. This " -"firmware controls the step motors, regulates the temperature and ultimately " -"makes your printer work." -msgstr "O firmware é a parte do software que é executada diretamente na sua impressora 3D. Este firmware controla os motores de passo, regula a temperatura e assegura o funcionamento da sua impressora." +msgid "Firmware is the piece of software running directly on your 3D printer. This firmware controls the step motors, regulates the temperature and ultimately makes your printer work." +msgstr "O firmware é o software que é executado diretamente na sua impressora 3D. Este firmware controla os motores de passo, regula a temperatura e basicamente assegura o funcionamento da sua impressora." #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UpgradeFirmwareMachineAction.qml:48 msgctxt "@label" -msgid "" -"The firmware shipping with new printers works, but new versions tend to have " -"more features and improvements." +msgid "The firmware shipping with new printers works, but new versions tend to have more features and improvements." msgstr "O firmware que é expedido com as novas impressoras funciona corretamente, mas as novas versões costumam ter mais funcionalidades e melhorias." #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UpgradeFirmwareMachineAction.qml:62 @@ -2370,24 +2589,22 @@ msgstr "Selecione quaisquer atualizações realizadas a esta Ultimaker Original #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:45 msgctxt "@label" msgid "Heated Build Plate (official kit or self-built)" -msgstr "Placa de construção aquecida (kit oficial ou de construção própria)" +msgstr "Base de Construção Aquecida (kit oficial ou de construção própria)" #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:27 msgctxt "@title" msgid "Check Printer" -msgstr "Verificar impressora" +msgstr "Verificar Impressora" #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:39 msgctxt "@label" -msgid "" -"It's a good idea to do a few sanity checks on your Ultimaker. You can skip " -"this step if you know your machine is functional" -msgstr "É recomendado efetuar algumas verificações de conformidade à sua Ultimaker. Pode ignorar este passo se souber que a sua máquina está funcional" +msgid "It's a good idea to do a few sanity checks on your Ultimaker. You can skip this step if you know your machine is functional" +msgstr "É recomendado efetuar algumas verificações de teste à sua Ultimaker. Pode ignorar este passo se souber que a sua máquina está funcional" #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:53 msgctxt "@action:button" msgid "Start Printer Check" -msgstr "Iniciar verificação da impressora" +msgstr "Iniciar Verificação da Impressora" #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:80 msgctxt "@label" @@ -2402,12 +2619,15 @@ msgstr "Ligado" #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:89 msgctxt "@info:status" msgid "Not connected" -msgstr "Não ligado" +msgstr "Sem ligação" +# rever! +# contexto?! +# X mín. de posição final: #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:99 msgctxt "@label" msgid "Min endstop X: " -msgstr "X mín. de posição final: " +msgstr "Mín. endtop X: " #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:109 #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:130 @@ -2425,37 +2645,41 @@ msgctxt "@info:status" msgid "Not checked" msgstr "Não verificado" +# rever! +# contexto?! #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:120 msgctxt "@label" msgid "Min endstop Y: " -msgstr "Y mín. de posição final: " +msgstr "Mín. endtop Y: " +# rever! +# contexto?! #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:141 msgctxt "@label" msgid "Min endstop Z: " -msgstr "Z mín. de posição final: " +msgstr "Mín. endstop Z: " #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:163 msgctxt "@label" msgid "Nozzle temperature check: " -msgstr "Verificação da temperatura do bocal: " +msgstr "Verificação da temperatura do nozzle: " #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:187 #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:248 msgctxt "@action:button" msgid "Stop Heating" -msgstr "Parar aquecimento" +msgstr "Parar Aquecimento" #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:187 #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:248 msgctxt "@action:button" msgid "Start Heating" -msgstr "Iniciar aquecimento" +msgstr "Iniciar Aquecimento" #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:223 msgctxt "@label" msgid "Build plate temperature check:" -msgstr "Verificação da temperatura da placa de construção:" +msgstr "Verificação da temperatura da base de construção:" #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:234 msgctxt "@info:status" @@ -2467,66 +2691,66 @@ msgctxt "@label" msgid "Everything is in order! You're done with your CheckUp." msgstr "Está tudo em ordem! O seu exame está concluído." -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:88 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:87 msgctxt "@label:MonitorStatus" msgid "Not connected to a printer" -msgstr "Não ligado a uma impressora" +msgstr "Sem ligação a uma impressora" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:90 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:89 msgctxt "@label:MonitorStatus" msgid "Printer does not accept commands" msgstr "A impressora não aceita comandos" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:96 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:95 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:194 msgctxt "@label:MonitorStatus" msgid "In maintenance. Please check the printer" msgstr "Em manutenção. Verifique a impressora" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:103 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:102 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:184 msgctxt "@label:MonitorStatus" msgid "Printing..." msgstr "A imprimir..." -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:106 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:105 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:186 msgctxt "@label:MonitorStatus" msgid "Paused" msgstr "Em pausa" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:109 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:108 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:188 msgctxt "@label:MonitorStatus" msgid "Preparing..." msgstr "A preparar..." -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:111 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:110 msgctxt "@label:MonitorStatus" msgid "Please remove the print" msgstr "Remova a impressão" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:237 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:241 msgctxt "@label:" msgid "Resume" msgstr "Retomar" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:241 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:245 msgctxt "@label:" msgid "Pause" msgstr "Colocar em pausa" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:270 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:274 msgctxt "@label:" msgid "Abort Print" msgstr "Cancelar impressão" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:280 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:284 msgctxt "@window:title" msgid "Abort print" msgstr "Cancelar impressão" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:282 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:286 msgctxt "@label" msgid "Are you sure you want to abort the print?" msgstr "Tem a certeza de que deseja cancelar a impressão?" @@ -2534,14 +2758,14 @@ msgstr "Tem a certeza de que deseja cancelar a impressão?" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:15 msgctxt "@title:window" msgid "Discard or Keep changes" -msgstr "Eliminar ou manter as alterações" +msgstr "Descartar ou Manter as alterações" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:57 msgctxt "@text:window" msgid "" "You have customized some profile settings.\n" "Would you like to keep or discard those settings?" -msgstr "Personalizou algumas definições do perfil.\nGostaria de manter ou eliminar essas definições?" +msgstr "Alterou algumas das definições do perfil.\nGostaria de manter ou descartar essas alterações?" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:110 msgctxt "@title:column" @@ -2559,19 +2783,19 @@ msgid "Customized" msgstr "Personalizado" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:157 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:593 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:595 msgctxt "@option:discardOrKeep" msgid "Always ask me this" msgstr "Perguntar sempre isto" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:158 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:594 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:596 msgctxt "@option:discardOrKeep" msgid "Discard and never ask again" -msgstr "Eliminar e não perguntar novamente" +msgstr "Descartar e não perguntar novamente" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:159 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:595 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:597 msgctxt "@option:discardOrKeep" msgid "Keep and never ask again" msgstr "Manter e não perguntar novamente" @@ -2579,7 +2803,7 @@ msgstr "Manter e não perguntar novamente" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:196 msgctxt "@action:button" msgid "Discard" -msgstr "Eliminar" +msgstr "Descartar" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:209 msgctxt "@action:button" @@ -2599,79 +2823,79 @@ msgstr "Informações" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:68 msgctxt "@label" msgid "Display Name" -msgstr "Apresentar nome" +msgstr "Nome" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:78 msgctxt "@label" msgid "Brand" msgstr "Marca" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:92 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:88 msgctxt "@label" msgid "Material Type" -msgstr "Tipo de material" +msgstr "Tipo de Material" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:105 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:97 msgctxt "@label" msgid "Color" msgstr "Cor" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:139 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:141 msgctxt "@label" msgid "Properties" msgstr "Propriedades" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:141 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:143 msgctxt "@label" msgid "Density" msgstr "Densidade" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:156 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:158 msgctxt "@label" msgid "Diameter" msgstr "Diâmetro" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:185 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:187 msgctxt "@label" msgid "Filament Cost" -msgstr "Custo do filamento" +msgstr "Custo do Filamento" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:201 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:203 msgctxt "@label" msgid "Filament weight" -msgstr "Peso do filamento" +msgstr "Peso do Filamento" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:218 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:220 msgctxt "@label" msgid "Filament length" msgstr "Comprimento do filamento" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:227 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:229 msgctxt "@label" msgid "Cost per Meter" -msgstr "Custo por metro" +msgstr "Custo por Metro" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:241 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:243 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/MaterialView.qml:248 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:250 msgctxt "@label" msgid "Unlink Material" -msgstr "Desassociar material" +msgstr "Desassociar Material" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:259 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:261 msgctxt "@label" msgid "Description" msgstr "Descrição" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:272 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:274 msgctxt "@label" msgid "Adhesion Information" -msgstr "Informações de aderência" +msgstr "Informações de Aderência" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:298 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:300 msgctxt "@label" msgid "Print settings" msgstr "Definições de impressão" @@ -2679,12 +2903,12 @@ msgstr "Definições de impressão" #: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:14 msgctxt "@title:tab" msgid "Setting Visibility" -msgstr "Visibilidade das definições" +msgstr "Visibilidade das Definições" #: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:44 msgctxt "@label:textbox" msgid "Check all" -msgstr "Verificar tudo" +msgstr "Selecionar tudo" #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:40 msgctxt "@info:status" @@ -2712,7 +2936,7 @@ msgid "Unit" msgstr "Unidade" #: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:14 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:439 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:509 msgctxt "@title:tab" msgid "General" msgstr "Geral" @@ -2727,246 +2951,259 @@ msgctxt "@label" msgid "Language:" msgstr "Idioma:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:205 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:207 msgctxt "@label" msgid "Currency:" msgstr "Moeda:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:219 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:221 msgctxt "@label" msgid "Theme:" msgstr "Tema:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:279 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:281 msgctxt "@label" -msgid "" -"You will need to restart the application for these changes to have effect." +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:296 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:298 msgctxt "@info:tooltip" msgid "Slice automatically when changing settings." -msgstr "Segmentar automaticamente ao alterar as definições." +msgstr "Seccionar automaticamente ao alterar as definições." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:304 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:306 msgctxt "@option:check" msgid "Slice automatically" -msgstr "Segmentar automaticamente" +msgstr "Seccionar automaticamente" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:318 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:320 msgctxt "@label" msgid "Viewport behavior" msgstr "Comportamento da janela" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:326 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:328 msgctxt "@info:tooltip" -msgid "" -"Highlight unsupported areas of the model in red. Without support these areas " -"will not print properly." -msgstr "Realce a vermelho as áreas não suportadas do modelo. Sem suporte, estas áreas não serão impressas adequadamente." +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." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:335 +# rever! +# consolas? +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:337 msgctxt "@option:check" msgid "Display overhang" -msgstr "Apresentar saliência" +msgstr "Mostrar Saliências (Overhangs)" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:342 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:344 msgctxt "@info:tooltip" -msgid "" -"Moves the camera so the model is in the center of the view when a model is " -"selected" +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:347 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:349 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:356 +#: /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:361 +#: /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âmara." +msgstr "Inverta a direção do zoom da câmera." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:370 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:372 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:375 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:377 msgctxt "@action:button" msgid "Zoom toward mouse direction" -msgstr "Aplicar zoom na direção do rato" +msgstr "Fazer Zoom na direção do rato" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:384 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:386 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 deixem de se cruzar?" +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:389 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:391 msgctxt "@option:check" msgid "Ensure models are kept apart" -msgstr "Garantir que os modelos são mantidos afastados" +msgstr "Garantir que os modelos não se interceptam" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:397 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:399 msgctxt "@info:tooltip" msgid "Should models on the platform be moved down to touch the build plate?" -msgstr "Os modelos na plataforma devem ser movidos para baixo de forma a tocar na placa de construção?" +msgstr "Pousar os modelos na base de construção?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:402 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:404 msgctxt "@option:check" msgid "Automatically drop models to the build plate" -msgstr "Baixar modelos automaticamente para a placa de construção" +msgstr "Pousar automaticamente os modelos na base de construção" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:414 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:416 msgctxt "@info:tooltip" msgid "Show caution message in gcode reader." -msgstr "Mostrar mensagem de atenção no leitor de gcode." +msgstr "Mostrar mensagem de aviso no leitor de gcode." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:423 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:425 msgctxt "@option:check" msgid "Caution message in gcode reader" -msgstr "Mensagem de atenção no leitor de gcode" +msgstr "Mensagem de aviso no leitor de gcode" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:430 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:432 msgctxt "@info:tooltip" msgid "Should layer be forced into compatibility mode?" msgstr "A camada deve ser forçada a entrar no modo de compatibilidade?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:435 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:437 msgctxt "@option:check" msgid "Force layer view compatibility mode (restart required)" -msgstr "Forçar modo de compatibilidade da visualização da camada (é necessário reiniciar)" +msgstr "Forçar o modo de compatibilidade na visualização por camada (é necessário reiniciar)" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:451 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:453 msgctxt "@label" msgid "Opening and saving files" msgstr "Abrir e guardar ficheiros" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:457 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:459 msgctxt "@info:tooltip" msgid "Should models be scaled to the build volume if they are too large?" -msgstr "Os modelos devem ser dimensionados até ao volume de construção se forem demasiado grandes?" +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:462 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:464 msgctxt "@option:check" msgid "Scale large models" -msgstr "Dimensionar modelos grandes" +msgstr "Redimensionar modelos demasiado grandes" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:471 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:473 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, a sua unidade estiver em metros e não em milímetros. Estes modelos devem ser aumentados verticalmente?" +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:478 msgctxt "@option:check" msgid "Scale extremely small models" -msgstr "Dimensionar modelos extremamente pequenos" +msgstr "Redimensionar modelos extremamente pequenos" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:485 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:487 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 da tarefa de impressão automaticamente?" +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:490 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:492 msgctxt "@option:check" msgid "Add machine prefix to job name" -msgstr "Adicionar prefixo da máquina ao nome da tarefa" +msgstr "Adicionar prefixo da máquina ao nome do trabalho" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:499 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:501 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:503 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:505 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:512 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:514 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:520 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:522 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:533 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:535 msgctxt "@option:openProject" msgid "Always ask" msgstr "Perguntar sempre" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:534 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:536 msgctxt "@option:openProject" msgid "Always open as a project" msgstr "Abrir sempre como projeto" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:535 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:537 msgctxt "@option:openProject" msgid "Always import models" msgstr "Importar sempre modelos" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:571 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:573 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." +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:580 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:582 msgctxt "@label" msgid "Override Profile" msgstr "Substituir perfil" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:629 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:631 msgctxt "@label" msgid "Privacy" msgstr "Privacidade" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:636 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:638 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:641 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:643 msgctxt "@option:check" msgid "Check for updates on start" msgstr "Procurar atualizações ao iniciar" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:651 +# rever! +# legal wording +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:653 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 "Devem os dados anónimos sobre a sua impressão ser enviados para a Ultimaker? Observe que não são enviados nem armazenados modelos, endereços IP ou outras informações que forneçam a identificação pessoal." +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 "Devem 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:656 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:658 msgctxt "@option:check" msgid "Send (anonymous) print information" -msgstr "Enviar informações de impressão (anónimas)" +msgstr "Enviar informações (anónimas) da impressão" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:674 +msgctxt "@label" +msgid "Experimental" +msgstr "Experimental" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:680 +msgctxt "@info:tooltip" +msgid "Use multi build plate functionality" +msgstr "Utilizar a funcionalidade de múltiplas placas de construção" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:685 +msgctxt "@option:check" +msgid "Use multi build plate functionality (restart required)" +msgstr "Utilizar a funcionalidade de múltiplas placas de construção (é necessário reiniciar)" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:694 +msgctxt "@info:tooltip" +msgid "Should newly loaded models be arranged on the build plate? Used in conjunction with multi build plate (EXPERIMENTAL)" +msgstr "Os modelos recém-carregados devem ser dispostos na placa de construção? Utilizado em conjunto com múltiplas placas de construção (EXPERIMENTAL)" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:699 +msgctxt "@option:check" +msgid "Do not arrange objects on load" +msgstr "Não dispor objetos durante o carregamento" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:444 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:514 msgctxt "@title:tab" msgid "Printers" msgstr "Impressoras" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:37 #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:51 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:137 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:138 msgctxt "@action:button" msgid "Activate" msgstr "Ativar" @@ -2975,7 +3212,7 @@ msgstr "Ativar" #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:102 msgctxt "@action:button" msgid "Rename" -msgstr "Renomear" +msgstr "Mudar Nome" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:149 msgctxt "@label" @@ -3001,15 +3238,15 @@ msgstr "Estado:" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:190 msgctxt "@label:MonitorStatus" msgid "Waiting for someone to clear the build plate" -msgstr "A aguardar que alguém limpe a placa de construção" +msgstr "A aguardar que alguém limpe a base de construção" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:199 msgctxt "@label:MonitorStatus" msgid "Waiting for a printjob" -msgstr "A aguardar por uma tarefa de impressão" +msgstr "A aguardar por um trabalho de impressão" #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:448 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:518 msgctxt "@title:tab" msgid "Profiles" msgstr "Perfis" @@ -3035,13 +3272,13 @@ msgid "Duplicate" msgstr "Duplicar" #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:113 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:201 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:182 msgctxt "@action:button" msgid "Import" msgstr "Importar" #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:119 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:212 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:193 msgctxt "@action:button" msgid "Export" msgstr "Exportar" @@ -3059,14 +3296,12 @@ msgstr "Atualizar perfil com as definições/substituições atuais" #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:173 msgctxt "@action:button" msgid "Discard current changes" -msgstr "Eliminar alterações atuais" +msgstr "Descartar alterações atuais" #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:190 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 a seguir." +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:197 msgctxt "@action:label" @@ -3076,12 +3311,12 @@ msgstr "As suas definições atuais correspondem ao perfil selecionado." #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:215 msgctxt "@title:tab" msgid "Global Settings" -msgstr "Definições globais" +msgstr "Definições Globais" #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:258 msgctxt "@title:window" msgid "Rename Profile" -msgstr "Renomear perfil" +msgstr "Mudar Nome do Perfil" #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:271 msgctxt "@title:window" @@ -3109,15 +3344,13 @@ msgid "Export Profile" msgstr "Exportar perfil" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:446 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:516 msgctxt "@title:tab" msgid "Materials" msgstr "Materiais" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:116 -msgctxt "" -"@action:label %1 is printer name, %2 is how this printer names variants, %3 " -"is variant name" +msgctxt "@action:label %1 is printer name, %2 is how this printer names variants, %3 is variant name" msgid "Printer: %1, %2: %3" msgstr "Impressora: %1, %2: %3" @@ -3126,65 +3359,63 @@ msgctxt "@action:label %1 is printer name" msgid "Printer: %1" msgstr "Impressora: %1" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:149 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:150 msgctxt "@action:button" msgid "Create" msgstr "Criar" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:168 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:160 msgctxt "@action:button" msgid "Duplicate" msgstr "Duplicar" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:311 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:319 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:298 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:306 msgctxt "@title:window" msgid "Import Material" msgstr "Importar material" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:320 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:307 msgctxt "@info:status Don't translate the XML tags or !" -msgid "" -"Could not import material %1: %2" +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/MaterialsPage.qml:324 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:311 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/MaterialsPage.qml:343 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:358 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:329 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:344 msgctxt "@title:window" msgid "Export Material" -msgstr "Exportar material" +msgstr "Exportar Material" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:362 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:348 msgctxt "@info:status Don't translate the XML tags and !" -msgid "" -"Failed to export material to %1: %2" +msgid "Failed to export material to %1: %2" msgstr "Falha ao exportar material para %1: %2" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:368 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:354 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully exported material to %1" msgstr "Material exportado com êxito para %1" #: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:18 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:793 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:869 msgctxt "@title:window" msgid "Add Printer" -msgstr "Adicionar impressora" +msgstr "Adicionar Impressora" -#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:185 +#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:194 msgctxt "@label" msgid "Printer Name:" -msgstr "Nome da impressora:" +msgstr "Nome da Impressora:" -#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:208 +#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:217 msgctxt "@action:button" msgid "Add Printer" -msgstr "Adicionar impressora" +msgstr "Adicionar Impressora" #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:15 msgctxt "@title:window" @@ -3199,7 +3430,7 @@ msgstr "versão: %1" #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:56 msgctxt "@label" msgid "End-to-end solution for fused filament 3D printing." -msgstr "Solução completa para impressão 3D por filamento fundido." +msgstr "A Solução completa para a impressão 3D por filamento fundido." #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:69 msgctxt "@info:credit" @@ -3216,7 +3447,7 @@ msgstr "Interface gráfica do utilizador" #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:119 msgctxt "@label" msgid "Application framework" -msgstr "Estrutura de aplicações" +msgstr "Framework da aplicação" #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:120 msgctxt "@label" @@ -3236,8 +3467,10 @@ msgstr "Linguagem de programação" #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:124 msgctxt "@label" msgid "GUI framework" -msgstr "Estrutura da GUI" +msgstr "GUI framework" +# rever! +# use eng programing terms? #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:125 msgctxt "@label" msgid "GUI framework bindings" @@ -3308,82 +3541,86 @@ msgctxt "@label" msgid "Profile:" msgstr "Perfil:" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:66 -msgctxt "@" -msgid "No Profile Available" -msgstr "Nenhum perfil disponível" - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:104 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:102 msgctxt "@tooltip" msgid "" -"Some setting/override values are different from the values stored in the " -"profile.\n" +"Some setting/override values are different from the values stored in the profile.\n" "\n" "Click to open the profile manager." msgstr "Alguns valores de definição/substituição são diferentes dos valores armazenados no perfil.\n\nClique para abrir o gestor de perfis." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:152 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:150 msgctxt "@label:textbox" msgid "Search..." msgstr "Procurar..." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:483 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:482 msgctxt "@action:menu" msgid "Copy value to all extruders" -msgstr "Copiar valor para todas as extrusoras" +msgstr "Copiar valor para todos os extrusores" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:498 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:497 msgctxt "@action:menu" msgid "Hide this setting" -msgstr "Ocultar esta definição" +msgstr "Esconder esta definição" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:508 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:507 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:512 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:511 msgctxt "@action:menu" msgid "Keep this setting visible" msgstr "Manter esta definição visível" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:531 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:530 msgctxt "@action:menu" msgid "Configure setting visiblity..." msgstr "Configurar visibilidade da definição..." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingCategory.qml:123 +# rever! +# ocultas? +# escondidas? +# valor normal? automatico? +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingCategory.qml:250 msgctxt "@label" msgid "" -"Some hidden settings use values different from their normal calculated " -"value.\n" +"Some hidden settings use values different from their normal calculated value.\n" "\n" "Click to make these settings visible." -msgstr "Algumas definições ocultas utilizam valores diferentes do respetivo valor normal calculado.\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\nClique para tornar estas definições visíveis." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:62 +# rever! +# Afeta? +# Influencia? +# Altera? +# Modifica? +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:61 msgctxt "@label Header for list of settings." msgid "Affects" -msgstr "Afeta" +msgstr "Modifica" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:67 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:66 msgctxt "@label Header for list of settings." msgid "Affected By" -msgstr "Afetado por" +msgstr "Modificado Por" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:157 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:156 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 todas as extrusoras. Ao alterá-la aqui, o valor será alterado para todas as extrusoras" +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 todas as extrusoras. Ao alterá-la aqui, o valor será alterado para todas as extrusoras." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:160 +# rever! +# contexto?! +# resolvido? +# por-extrusor +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:159 msgctxt "@label" msgid "The value is resolved from per-extruder values " -msgstr "O valor é resolvido a partir de valores por extrusora " +msgstr "O valor é calculado com base nos valores por-extrusor " -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:186 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:190 msgctxt "@label" msgid "" "This setting has a value that is different from the profile.\n" @@ -3391,86 +3628,81 @@ msgid "" "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." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:284 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:288 msgctxt "@label" msgid "" -"This setting is normally calculated, but it currently has an absolute value " -"set.\n" +"This setting is normally calculated, but it currently has an absolute value set.\n" "\n" "Click to restore the calculated value." -msgstr "Geralmente, esta definição é calculada, mas atualmente tem um valor absoluto definido.\n\nClique para restaurar o valor calculado." +msgstr "Normalmente, o valor desta definição é calculado, mas atualmente tem definido um valor absoluto.\n\nClique para restaurar o valor calculado." -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:120 +# rever! +# Configuração da Impressão? +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:128 msgctxt "@label:listbox" msgid "Print Setup" -msgstr "Configuração de impressão" +msgstr "Configurar Impressão" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:120 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:128 msgctxt "@label:listbox" msgid "" "Print Setup disabled\n" "G-code files cannot be modified" -msgstr "Configuração de impressão desativada\nOs ficheiros G-code não podem ser modificados" +msgstr "Configuração da Impressão desativada\nOs ficheiros G-code não podem ser modificados" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:336 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:342 msgctxt "@label Hours and minutes" msgid "00h 00min" msgstr "00h00min" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:354 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:359 msgctxt "@tooltip" -msgid "Time specification
      " -msgstr "Especificação de tempo
      " +msgid "Time specification" +msgstr "Especificação de tempo" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:429 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:441 msgctxt "@label" msgid "Cost specification" msgstr "Especificação de custos" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:434 -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:445 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:446 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:455 msgctxt "@label m for meter" msgid "%1m" msgstr "%1 m" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:435 -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:446 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:447 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:456 msgctxt "@label g for grams" msgid "%1g" msgstr "%1 g" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:444 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:454 msgctxt "@label" msgid "Total:" msgstr "Total:" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:498 -msgctxt "" -"@label Print estimates: m for meters, g for grams, %4 is currency and %3 is " -"print cost" +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:504 +msgctxt "@label Print estimates: m for meters, g for grams, %4 is currency and %3 is print cost" msgid "%1m / ~ %2g / ~ %4 %3" msgstr "%1 m/~ %2 g/~ %4 %3" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:503 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:509 msgctxt "@label Print estimates: m for meters, g for grams" msgid "%1m / ~ %2g" msgstr "%1 m/~ %2 g" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:586 -msgctxt "@tooltip" -msgid "" -"Recommended Print Setup

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

      Imprima com as definições recomendadas para a impressora, o material e a qualidade selecionados." - #: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:591 msgctxt "@tooltip" -msgid "" -"Custom Print Setup

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

      Imprima com controlo detalhado de cada etapa do processo de segmentação." +msgid "Recommended Print Setup

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

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

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

      Imprimir com um controlo detalhado de todas as definições específicas de cada uma das etapas do processo de seccionamento." + +#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:50 msgctxt "@title:menuitem %1 is the automatically selected material" msgid "Automatic: %1" msgstr "Automático: %1" @@ -3480,6 +3712,16 @@ msgctxt "@title:menu menubar:toplevel" msgid "&View" msgstr "&Visualizar" +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:37 +msgctxt "@action:inmenu menubar:view" +msgid "&Camera position" +msgstr "&Posição da câmara" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:52 +msgctxt "@action:inmenu menubar:view" +msgid "&Build plate" +msgstr "&Placa de construção" + #: /home/ruben/Projects/Cura/resources/qml/Menus/NozzleMenu.qml:40 msgctxt "@title:menuitem %1 is the nozzle currently loaded in the printer" msgid "Automatic: %1" @@ -3489,25 +3731,25 @@ msgstr "Automático: %1" msgctxt "@label" msgid "Print Selected Model With:" msgid_plural "Print Selected Models With:" -msgstr[0] "Imprimir modelo selecionado com:" +msgstr[0] "Imprimir Modelo Selecionado Com:" msgstr[1] "Imprimir modelos selecionados com:" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ContextMenu.qml:83 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ContextMenu.qml:114 msgctxt "@title:window" msgid "Multiply Selected Model" msgid_plural "Multiply Selected Models" -msgstr[0] "Multiplicar modelo selecionado" +msgstr[0] "Multiplicar Modelo Selecionado" msgstr[1] "Multiplicar modelos selecionados" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ContextMenu.qml:108 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ContextMenu.qml:139 msgctxt "@label" msgid "Number of Copies" -msgstr "Número de cópias" +msgstr "Número de Cópias" #: /home/ruben/Projects/Cura/resources/qml/Menus/RecentFilesMenu.qml:13 msgctxt "@title:menu menubar:file" msgid "Open &Recent" -msgstr "Abrir &recente" +msgstr "Abrir &Recente" #: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:38 msgctxt "@info:status" @@ -3515,48 +3757,44 @@ msgid "No printer connected" msgstr "Nenhuma impressora ligada" #: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:90 -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:138 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:139 msgctxt "@label" msgid "Extruder" -msgstr "Extrusora" +msgstr "Extrusor" #: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:120 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." +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 da extremidade quente. A extremidade quente irá aquecer ou arrefecer até esta temperatura. Se esta opção for definida como 0, o aquecimento da extremidade quente será desligado." #: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:152 msgctxt "@tooltip" msgid "The current temperature of this extruder." -msgstr "A temperatura atual desta extrusora." +msgstr "A temperatura actual deste extrusor." #: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:188 msgctxt "@tooltip" msgid "The colour of the material in this extruder." -msgstr "A cor do material nesta extrusora." +msgstr "A cor do material neste extrusor." #: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:220 msgctxt "@tooltip" msgid "The material in this extruder." -msgstr "O material nesta extrusora." +msgstr "O material neste extrusor." #: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:252 msgctxt "@tooltip" msgid "The nozzle inserted in this extruder." -msgstr "O bocal inserido nesta extrusora." +msgstr "O nozzle inserido neste extrusor." #: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:283 msgctxt "@label" msgid "Build plate" -msgstr "Placa de construção" +msgstr "Base de construção" #: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:312 msgctxt "@tooltip" -msgid "" -"The target temperature of the heated bed. The bed will heat up or cool down " -"towards this temperature. If this is 0, the bed heating is turned off." +msgid "The target temperature of the heated bed. The bed will heat up or cool down towards this temperature. If this is 0, the bed heating is turned off." msgstr "A temperatura desejada da base aquecida. A base irá aquecer ou arrefecer até esta temperatura. Se esta opção for definida como 0, o aquecimento da base será desligado." #: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:344 @@ -3581,17 +3819,17 @@ msgstr "Pré-aquecer" #: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:650 msgctxt "@tooltip of pre-heat" -msgid "" -"Heat the bed in advance before printing. You can continue adjusting your " -"print while it is heating, and you won't have to wait for the bed to heat up " -"when you're ready to print." -msgstr "Aqueça a base com antecedência antes da impressão. Pode continuar a ajustar a impressora durante o aquecimento e não precisará de esperar que a base aqueça quando estiver pronto para imprimir." +msgid "Heat the bed in advance before printing. You can continue adjusting your print while it is heating, and you won't have to wait for the bed to heat up when you're ready to print." +msgstr "Aqueçer a base com antecedência antes de imprimir. Pode continuar a ajustar as definições de impressão durante o aquecimento e não precisará de esperar que a base aqueça quando começar a impressão." #: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:703 msgctxt "@label" msgid "Printer control" msgstr "Controlo da impressora" +# rever! +# contexto?! +# Jog? #: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:717 msgctxt "@label" msgid "Jog Position" @@ -3607,6 +3845,9 @@ msgctxt "@label" msgid "Z" msgstr "Z" +# rever! +# contexto?! +# Jog? #: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:907 msgctxt "@label" msgid "Jog Distance" @@ -3620,403 +3861,443 @@ msgstr "Impressão ativa" #: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:1023 msgctxt "@label" msgid "Job Name" -msgstr "Nome da tarefa" +msgstr "Nome do trabalho" #: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:1029 msgctxt "@label" msgid "Printing Time" -msgstr "Tempo de impressão" +msgstr "Tempo de Impressão" #: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:1035 msgctxt "@label" msgid "Estimated time left" msgstr "Tempo restante estimado" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:72 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:79 msgctxt "@action:inmenu" msgid "Toggle Fu&ll Screen" msgstr "Alternar para e&crã inteiro" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:79 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:86 msgctxt "@action:inmenu menubar:edit" msgid "&Undo" -msgstr "&Anular" +msgstr "&Desfazer" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:89 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:96 msgctxt "@action:inmenu menubar:edit" msgid "&Redo" msgstr "&Refazer" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:99 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:106 msgctxt "@action:inmenu menubar:file" msgid "&Quit" msgstr "&Sair" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:107 -msgctxt "@action:inmenu menubar:view" -msgid "&Reset camera position" -msgstr "&Repor posição da câmara" - #: /home/ruben/Projects/Cura/resources/qml/Actions.qml:114 +msgctxt "@action:inmenu menubar:view" +msgid "&3D View" +msgstr "&Visualização 3D" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:121 +msgctxt "@action:inmenu menubar:view" +msgid "&Front View" +msgstr "&Vista frontal" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:128 +msgctxt "@action:inmenu menubar:view" +msgid "&Top View" +msgstr "&Vista superior" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:135 +msgctxt "@action:inmenu menubar:view" +msgid "&Left Side View" +msgstr "&Vista lateral esquerda" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:142 +msgctxt "@action:inmenu menubar:view" +msgid "&Right Side View" +msgstr "&Vista lateral direita" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:149 msgctxt "@action:inmenu" msgid "Configure Cura..." msgstr "Configurar Cura..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:121 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:156 msgctxt "@action:inmenu menubar:printer" msgid "&Add Printer..." -msgstr "&Adicionar impressora..." +msgstr "&Adicionar Impressora..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:127 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:162 msgctxt "@action:inmenu menubar:printer" msgid "Manage Pr&inters..." -msgstr "Gerir im&pressoras..." +msgstr "Gerir Im&pressoras..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:134 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:169 msgctxt "@action:inmenu" msgid "Manage Materials..." -msgstr "Gerir materiais..." +msgstr "Gerir Materiais..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:142 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:177 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:150 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:185 msgctxt "@action:inmenu menubar:profile" msgid "&Discard current changes" -msgstr "&Eliminar alterações atuais" +msgstr "&Descartar alterações atuais" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:162 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:197 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:168 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:203 msgctxt "@action:inmenu menubar:profile" msgid "Manage Profiles..." -msgstr "Gerir perfis..." +msgstr "Gerir Perfis..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:175 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:210 msgctxt "@action:inmenu menubar:help" msgid "Show Online &Documentation" msgstr "Mostrar &documentação online" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:183 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:218 msgctxt "@action:inmenu menubar:help" msgid "Report a &Bug" msgstr "Reportar um &erro" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:191 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:226 msgctxt "@action:inmenu menubar:help" msgid "&About..." msgstr "&Sobre..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:198 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:233 msgctxt "@action:inmenu menubar:edit" msgid "Delete &Selected Model" msgid_plural "Delete &Selected Models" -msgstr[0] "Eliminar modelo &selecionado" -msgstr[1] "Eliminar modelos &selecionados" +msgstr[0] "Apagar Modelo &Selecionado" +msgstr[1] "Apagar Modelos &Selecionados" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:208 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:243 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:217 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:252 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:226 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:261 msgctxt "@action:inmenu" msgid "Delete Model" -msgstr "Eliminar modelo" +msgstr "Apagar Modelo" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:234 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:269 msgctxt "@action:inmenu" msgid "Ce&nter Model on Platform" -msgstr "Ce&ntrar modelo na plataforma" +msgstr "Ce&ntrar Modelo na Base" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:240 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:275 msgctxt "@action:inmenu menubar:edit" msgid "&Group Models" -msgstr "&Agrupar modelos" +msgstr "&Agrupar Modelos" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:250 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:295 msgctxt "@action:inmenu menubar:edit" msgid "Ungroup Models" -msgstr "Desagrupar modelos" +msgstr "Desagrupar Modelos" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:260 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:305 msgctxt "@action:inmenu menubar:edit" msgid "&Merge Models" -msgstr "&Unir modelos" +msgstr "&Combinar Modelos" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:270 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:315 msgctxt "@action:inmenu" msgid "&Multiply Model..." -msgstr "&Multiplicar modelo..." +msgstr "&Multiplicar Modelo..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:277 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:322 msgctxt "@action:inmenu menubar:edit" msgid "&Select All Models" msgstr "&Selecionar todos os modelos" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:287 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:332 msgctxt "@action:inmenu menubar:edit" msgid "&Clear Build Plate" -msgstr "&Limpar placa de construção" +msgstr "&Limpar base de construção" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:297 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:342 msgctxt "@action:inmenu menubar:file" msgid "Re&load All Models" msgstr "Re&carregar todos os modelos" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:306 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:351 +msgctxt "@action:inmenu menubar:edit" +msgid "Arrange All Models To All Build Plates" +msgstr "Dispor todos os modelos para todas as placas de construção" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:358 msgctxt "@action:inmenu menubar:edit" msgid "Arrange All Models" msgstr "Dispor todos os modelos" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:314 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:366 msgctxt "@action:inmenu menubar:edit" msgid "Arrange Selection" msgstr "Dispor seleção" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:321 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:373 msgctxt "@action:inmenu menubar:edit" msgid "Reset All Model Positions" msgstr "Repor todas as posições de modelos" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:328 +# rever! +# Cancelar todas? +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:380 msgctxt "@action:inmenu menubar:edit" msgid "Reset All Model &Transformations" -msgstr "Repor todas as &transformações de modelos" +msgstr "Repor Todas as &Transformações do Modelo" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:335 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:387 msgctxt "@action:inmenu menubar:file" msgid "&Open File(s)..." -msgstr "&Abrir ficheiro(s)..." +msgstr "&Abrir Ficheiro(s)..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:343 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:395 msgctxt "@action:inmenu menubar:file" msgid "&New Project..." -msgstr "&Novo projeto..." +msgstr "&Novo Projeto..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:350 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:402 msgctxt "@action:inmenu menubar:help" msgid "Show Engine &Log..." msgstr "Mostrar ®isto de motor..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:358 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:410 msgctxt "@action:inmenu menubar:help" msgid "Show Configuration Folder" msgstr "Mostrar pasta de configuração" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:365 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:417 msgctxt "@action:menu" msgid "Configure setting visibility..." msgstr "Configurar visibilidade das definições..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:372 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:424 msgctxt "@action:menu" msgid "Browse plugins..." msgstr "Procurar plug-ins..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:379 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:431 msgctxt "@action:menu" msgid "Installed plugins..." msgstr "Plug-ins instalados..." -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:28 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:438 +msgctxt "@action:inmenu menubar:view" +msgid "Expand/Collapse Sidebar" +msgstr "Expandir/fechar barra lateral" + +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:26 msgctxt "@label:PrintjobStatus" msgid "Please load a 3D model" -msgstr "Carregue um modelo 3D" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:34 -msgctxt "@label:PrintjobStatus" -msgid "Ready to slice" -msgstr "Pronto para segmentar" +msgstr "Por favor abra um Modelo 3D ou Projeto" +# rever! +# Pronto para? +# Preparado para? #: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:36 msgctxt "@label:PrintjobStatus" -msgid "Slicing..." -msgstr "A segmentar..." +msgid "Ready to slice" +msgstr "Disponível para seccionar" #: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:38 +msgctxt "@label:PrintjobStatus" +msgid "Slicing..." +msgstr "A Seccionar..." + +# rever! +# Pronto para? +# Preparado para? +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:40 msgctxt "@label:PrintjobStatus %1 is target operation" msgid "Ready to %1" -msgstr "Pronto para %1" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:40 -msgctxt "@label:PrintjobStatus" -msgid "Unable to Slice" -msgstr "Não é possível segmentar" +msgstr "Disponível para %1" #: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:42 msgctxt "@label:PrintjobStatus" -msgid "Slicing unavailable" -msgstr "Segmentação indisponível" +msgid "Unable to Slice" +msgstr "Não é possível Seccionar" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:162 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:44 +msgctxt "@label:PrintjobStatus" +msgid "Slicing unavailable" +msgstr "Seccionamento indisponível" + +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:171 +msgctxt "@info:tooltip" +msgid "Slice current printjob" +msgstr "Seccionar o trabalho de impressão atual" + +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:171 +msgctxt "@info:tooltip" +msgid "Cancel slicing process" +msgstr "Cancelar o processo de seccionamento" + +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:183 msgctxt "@label:Printjob" msgid "Prepare" msgstr "Preparar" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:162 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:183 msgctxt "@label:Printjob" msgid "Cancel" msgstr "Cancelar" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:302 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:317 msgctxt "@info:tooltip" msgid "Select the active output device" -msgstr "Selecione o dispositivo de saída ativo" +msgstr "Selecione o dispositivo de saída" #: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:19 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:620 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:696 msgctxt "@title:window" msgid "Open file(s)" msgstr "Abrir ficheiro(s)" #: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:64 msgctxt "@text:window" -msgid "" -"We have found one or more project file(s) within the files you have " -"selected. You can open only one project file at a time. We suggest to only " -"import models from those files. Would you like to proceed?" -msgstr "Encontrámos um ou mais ficheiros de projeto nos ficheiros selecionados. Só é possível abrir um ficheiro de projeto de cada vez. Sugerimos que importe apenas modelos desses ficheiros. Deseja continuar?" +msgid "We have found one or more project file(s) within the files you have selected. You can open only one project file at a time. We suggest to only import models from those files. Would you like to proceed?" +msgstr "Encontrámos um ou mais projetos do Cura nos ficheiros selecionados. Só é possível abrir um Projeto do Cura, de cada vez. Sugerimos importar apenas os modelos 3D desses Projetos do Cura. Deseja continuar?" #: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:99 msgctxt "@action:button" msgid "Import all as models" -msgstr "Importar tudo como modelos" +msgstr "Importar tudo como modelos 3D" #: /home/ruben/Projects/Cura/resources/qml/Cura.qml:19 msgctxt "@title:window" msgid "Ultimaker Cura" msgstr "Ultimaker Cura" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:81 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:102 msgctxt "@title:menu menubar:toplevel" msgid "&File" msgstr "&Ficheiro" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:98 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:119 msgctxt "@action:inmenu menubar:file" msgid "&Save Selection to File" msgstr "&Guardar seleção para ficheiro" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:107 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:128 msgctxt "@title:menu menubar:file" msgid "Save &As..." msgstr "Guardar &como..." -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:118 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:139 msgctxt "@title:menu menubar:file" -msgid "Save project" -msgstr "Guardar projeto" +msgid "Save &Project..." +msgstr "Guardar &projeto..." -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:141 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:162 msgctxt "@title:menu menubar:toplevel" msgid "&Edit" msgstr "&Editar" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:158 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:179 msgctxt "@title:menu" msgid "&View" msgstr "&Visualizar" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:163 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:184 msgctxt "@title:menu" msgid "&Settings" msgstr "&Definições" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:165 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:186 msgctxt "@title:menu menubar:toplevel" msgid "&Printer" msgstr "&Impressora" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:175 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:187 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:196 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:208 msgctxt "@title:menu" msgid "&Material" msgstr "&Material" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:176 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:188 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:197 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:209 msgctxt "@title:menu" msgid "&Profile" msgstr "&Perfil" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:180 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:201 msgctxt "@action:inmenu" msgid "Set as Active Extruder" -msgstr "Definir como extrusora ativa" +msgstr "Definir como Extrusor Ativo" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:198 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:219 msgctxt "@title:menu menubar:toplevel" msgid "E&xtensions" msgstr "E&xtensões" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:232 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:253 msgctxt "@title:menu menubar:toplevel" msgid "P&lugins" msgstr "P&lug-ins" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:240 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:261 msgctxt "@title:menu menubar:toplevel" msgid "P&references" msgstr "P&referências" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:248 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:269 msgctxt "@title:menu menubar:toplevel" msgid "&Help" msgstr "&Ajuda" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:330 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:351 msgctxt "@action:button" msgid "Open File" msgstr "Abrir ficheiro" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:442 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:512 msgctxt "@title:tab" msgid "Settings" msgstr "Definições" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:478 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:554 msgctxt "@title:window" msgid "New project" msgstr "Novo projeto" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:479 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:555 msgctxt "@info:question" -msgid "" -"Are you sure you want to start a new project? This will clear the build " -"plate and any unsaved settings." -msgstr "Tem a certeza de que deseja iniciar um novo projeto? Isto irá limpar a placa de construção e quaisquer definições não guardadas." +msgid "Are you sure you want to start a new project? This will clear the build plate and any unsaved settings." +msgstr "Tem a certeza de que deseja iniciar um novo projeto? Isto irá apagar tudo na base de construção assim como quaisquer definições que não tenham sido guardadas." -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:721 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:797 msgctxt "@window:title" msgid "Install Plugin" msgstr "Instalar plug-in" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:728 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:804 msgctxt "@title:window" msgid "Open File(s)" msgstr "Abrir ficheiro(s)" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:731 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:807 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." +msgid "We have found one or more G-Code files within the files you have selected. You can only open one G-Code file at a time. If you want to open a G-Code file, please just select only one." msgstr "Encontrámos um ou mais ficheiros G-Code nos ficheiros selecionados. Só é possível abrir um ficheiro G-Code de cada vez. Se pretender abrir um ficheiro G-code, selecione apenas um." #: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:14 @@ -4027,7 +4308,7 @@ msgstr "Guardar projeto" #: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:136 msgctxt "@action:label" msgid "Extruder %1" -msgstr "Extrusora %1" +msgstr "Extrusor %1" #: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:146 msgctxt "@action:label" @@ -4037,187 +4318,187 @@ msgstr "%1 & material" #: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:242 msgctxt "@action:label" msgid "Don't show project summary on save again" -msgstr "Não mostrar resumo de projeto ao guardar novamente" +msgstr "Não mostrar novamente o resumo do projeto ao guardar" -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:264 -msgctxt "@action:button" -msgid "Save" -msgstr "Guardar" - -#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:74 -msgctxt "@title:tab" -msgid "Prepare" -msgstr "Preparar" - -#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:100 -msgctxt "@title:tab" -msgid "Monitor" -msgstr "Monitorizar" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:163 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:175 msgctxt "@label" msgid "Layer Height" -msgstr "Altura da camada" +msgstr "Espessura da Camada" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:323 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:345 msgctxt "@tooltip" -msgid "" -"A custom profile is currently active. To enable the quality slider, choose a " -"default quality profile in Custom tab" -msgstr "Está atualmente ativo um perfil personalizado. Para ativar o controlo de deslize de qualidade, escolha um perfil de qualidade predefinido no separador Personalizado" +msgid "A custom profile is currently active. To enable the quality slider, choose a default quality profile in Custom tab" +msgstr "De momento está activo um perfil personalizado. Para poder ativar o controlo de qualidade, por favor selecione um dos perfis de qualidade predefinidos no modo Personalizado" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:340 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:362 msgctxt "@label" msgid "Print Speed" -msgstr "Velocidade de impressão" +msgstr "Velocidade Impressão" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:350 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:374 msgctxt "@label" msgid "Slower" -msgstr "Mais lenta" +msgstr "Mais Lenta" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:361 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:385 msgctxt "@label" msgid "Faster" -msgstr "Mais rápida" +msgstr "Mais Rápida" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:388 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:423 msgctxt "@tooltip" -msgid "" -"You have modified some profile settings. If you want to change these go to " -"custom mode." -msgstr "Algumas definições de perfil foram modificadas. Se pretender alterá-las, aceda ao modo personalizado." +msgid "You have modified some profile settings. If you want to change these go to custom mode." +msgstr "Algumas definições do perfil foram modificadas. Se pretender alterá-las, aceda ao modo Personalizado." -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:413 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:446 msgctxt "@label" msgid "Infill" -msgstr "Preenchimento" +msgstr "Enchimento" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:633 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:668 msgctxt "@label" -msgid "" -"Gradual infill will gradually increase the amount of infill towards the top." -msgstr "O preenchimento gradual irá aumentar progressivamente a quantidade de preenchimento em direção ao topo." +msgid "Gradual infill will gradually increase the amount of infill towards the top." +msgstr "O enchimento gradual irá aumentar progressivamente a densidade do enchimento em direção ao topo." -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:645 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:680 msgctxt "@label" msgid "Enable gradual" -msgstr "Ativar gradação" +msgstr "Enchimento Gradual" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:712 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:747 msgctxt "@label" msgid "Generate Support" -msgstr "Gerar suporte" +msgstr "Criar Suportes" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:746 +# rever! +# collapse ? +# desmoronar? desabar? +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:781 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 estruturas para suportar peças do modelo com saliências. Sem estas estruturas, essas peças desintegrar-se-iam durante a impressão." +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/SidebarSimple.qml:764 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:799 msgctxt "@label" msgid "Support Extruder" -msgstr "Extrusora de suporte" +msgstr "Extrusor dos Suportes" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:816 +# rever! +# mid air? no ar? no meio do ar? +# sagging? deformar? +# Isto irá construir estruturas de suporte debaixo do modelo para impedir a deformação de partes suspensas do modelo ou que a impressão seja feita no ar. +# a utilizar? usado? +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:851 msgctxt "@label" -msgid "" -"Select which extruder to use for support. This will build up supporting " -"structures below the model to prevent the model from sagging or printing in " -"mid air." -msgstr "Selecione a extrusora a ser utilizada para suporte. Isto irá construir estruturas de suporte debaixo do modelo para impedir a flacidez do modelo ou a impressão em suspenso." +msgid "Select which extruder to use for support. This will build up supporting structures below the model to prevent the model from sagging or printing in mid air." +msgstr "Selecionar qual o extrusor usado para imprimir os suportes. Isto irá construir estruturas de suporte por debaixo do modelo para impedir que as partes suspensas do modelo se deformem ou que sejam impressas no ar." -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:839 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:874 msgctxt "@label" msgid "Build Plate Adhesion" -msgstr "Aderência à placa de construção" +msgstr "Aderência à Base" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:894 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:929 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 "Ativa a impressão de uma borda ou base reticular. Isto irá adicionar uma área plana em torno ou debaixo do seu objeto, o que facilitará o respetivo corte posteriormente." +msgid "Enable printing a brim or raft. This will add a flat area around or under your object which is easy to cut off afterwards." +msgstr "Permite a impressão de uma Aba (Brim) ou Raft. Isto irá adicionar, respectivamente, uma área plana em torno ou sob a base do seu objeto, que são fáceis de retirar posteriormente." -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:934 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:969 msgctxt "@label" -msgid "" -"Need help improving your prints?
      Read the Ultimaker " -"Troubleshooting Guides" -msgstr "Precisa de ajuda para melhorar as suas impressões?
      Leia os Guias de resolução de problemas da Ultimaker" +msgid "Need help improving your prints?
      Read the Ultimaker Troubleshooting Guides" +msgstr "Precisa de ajuda para melhorar as suas impressões?
      Por favor leia os Guias Ultimaker de Resolução de Problemas" #: /home/ruben/Projects/Cura/resources/qml/ExtruderButton.qml:16 msgctxt "@label %1 is filled in with the name of an extruder" msgid "Print Selected Model with %1" msgid_plural "Print Selected Models with %1" -msgstr[0] "Imprimir modelo selecionado com %1" -msgstr[1] "Imprimir modelos selecionados com %1" +msgstr[0] "Imprimir Modelo Selecionado com o %1" +msgstr[1] "Imprimir Modelos Selecionados com o %1" #: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:20 msgctxt "@title:window" msgid "Open project file" msgstr "Abrir ficheiro de projeto" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:72 +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:93 msgctxt "@text:window" -msgid "" -"This is a Cura project file. Would you like to open it as a project or " -"import the models from it?" -msgstr "Este é um ficheiro de projeto Cura. Gostaria de o abrir como um projeto ou importar os modelos a partir dele?" +msgid "This is a Cura project file. Would you like to open it as a project or import the models from it?" +msgstr "Este ficheiro é um Projeto do Cura. Pretende abrir como Projeto ou só importar os modelos 3D incluídos no Projeto?" #: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:103 +msgctxt "@text:window" +msgid "Remember my choice" +msgstr "Memorizar a minha escolha" + +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:122 msgctxt "@action:button" msgid "Open as project" msgstr "Abrir como projeto" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:122 +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:131 msgctxt "@action:button" msgid "Import models" msgstr "Importar modelos" +# rever! +# contexto?! +# Relatório? +# Registo de motor? +# use english string? #: /home/ruben/Projects/Cura/resources/qml/EngineLog.qml:15 msgctxt "@title:window" msgid "Engine Log" -msgstr "Registo de motor" +msgstr "Engine Log" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:242 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:245 msgctxt "@label" msgid "Material" msgstr "Material" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:349 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:352 msgctxt "@label" -msgid "Check compatibility" -msgstr "Verificar compatibilidade" +msgid "Check compatibility" +msgstr "Verificar a compatibilidade" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:369 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:372 msgctxt "@tooltip" msgid "Click to check the material compatibility on Ultimaker.com." -msgstr "Clique para verificar a compatibilidade do material em Ultimaker.com." +msgstr "Clique para verificar a compatibilidade dos materiais em Ultimaker.com." + +#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:211 +msgctxt "@option:check" +msgid "See only current build plate" +msgstr "Ver apenas a placa de construção atual" + +#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:227 +msgctxt "@action:button" +msgid "Arrange to all build plates" +msgstr "Dispor em todas as placas de construção" + +#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:247 +msgctxt "@action:button" +msgid "Arrange current build plate" +msgstr "Dispor a placa de construção atual" #: MachineSettingsAction/plugin.json msgctxt "description" -msgid "" -"Provides a way to change machine settings (such as build volume, nozzle " -"size, etc)" -msgstr "Proporciona uma forma de alterar as definições da máquina (como o volume de construção, o tamanho do bocal etc.)" +msgid "Provides a way to change machine settings (such as build volume, nozzle size, etc)" +msgstr "Proporciona uma forma de alterar as definições da máquina (tal como o volume de construção, o tamanho do nozzle, etc)" #: MachineSettingsAction/plugin.json msgctxt "name" msgid "Machine Settings action" -msgstr "Ação de definições da máquina" +msgstr "Função Definições da Máquina" #: XRayView/plugin.json msgctxt "description" msgid "Provides the X-Ray view." -msgstr "Fornece a visualização de raio X." +msgstr "Permite a visualização em Raio-X." #: XRayView/plugin.json msgctxt "name" msgid "X-Ray View" -msgstr "Visualização de raio X" +msgstr "Vista Raio-X" #: X3DReader/plugin.json msgctxt "description" @@ -4242,7 +4523,7 @@ msgstr "Gravador de GCode" #: 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 num ficheiro HTML." +msgstr "Descarregar o conteúdo de todas as definições para um ficheiro HTML." #: cura-god-mode-plugin/src/GodMode/plugin.json msgctxt "name" @@ -4252,23 +4533,26 @@ msgstr "Modo God" #: Doodle3D-cura-plugin/Doodle3D/plugin.json msgctxt "description" msgid "Accepts G-Code and sends them over WiFi to a Doodle3D WiFi-Box." -msgstr "Aceita G-Codes e envia-os por Wi-Fi para uma Wi-Fi box Doodle3D." +msgstr "Recebe ficheiros G-Code e envia-os por Wi-Fi para uma Doodle3D Wi-Fi Box ." #: Doodle3D-cura-plugin/Doodle3D/plugin.json msgctxt "name" msgid "Doodle3D WiFi-Box" -msgstr "Wi-Fi box Doodle3D" +msgstr "Doodle3D Wi-Fi Box" #: ChangeLogPlugin/plugin.json msgctxt "description" msgid "Shows changes since latest checked version." -msgstr "Mostra as alterações efetuadas desde a última versão verificada." +msgstr "Mostra as novas alterações efetuadas desde a última versão." #: ChangeLogPlugin/plugin.json msgctxt "name" msgid "Changelog" -msgstr "Registo de alterações" +msgstr "Lista das Alterações" +# rever! +# contexto! +# flattend - aplanado? nivelado? limpo? basico? #: ProfileFlattener/plugin.json msgctxt "description" msgid "Create a flattend quality changes profile." @@ -4281,8 +4565,7 @@ msgstr "Aplanador de perfis" #: 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 "Aceita G-Codes e envia-os para uma impressora. O plug-in também pode atualizar firmware." #: USBPrinting/plugin.json @@ -4290,6 +4573,26 @@ msgctxt "name" msgid "USB printing" msgstr "Impressão através de USB" +#: PrepareStage/plugin.json +msgctxt "description" +msgid "Provides a prepare stage in Cura." +msgstr "Fornece uma fase de preparação no Cura." + +#: PrepareStage/plugin.json +msgctxt "name" +msgid "Prepare Stage" +msgstr "Fase de preparação" + +#: CuraLiveScriptingPlugin/plugin.json +msgctxt "description" +msgid "Provides an edit window for direct script editing." +msgstr "Fornece uma janela de edição para a edição direta de scripts." + +#: CuraLiveScriptingPlugin/plugin.json +msgctxt "name" +msgid "Live scripting tool" +msgstr "Ferramenta de scripting em direto" + #: RemovableDriveOutputDevice/plugin.json msgctxt "description" msgid "Provides removable drive hotplugging and writing support." @@ -4310,22 +4613,30 @@ msgctxt "name" msgid "UM3 Network Connection" msgstr "Ligação de rede UM3" +#: MonitorStage/plugin.json +msgctxt "description" +msgid "Provides a monitor stage in Cura." +msgstr "Fornece uma fase de monitorização no Cura." + +#: MonitorStage/plugin.json +msgctxt "name" +msgid "Monitor Stage" +msgstr "Fase de monitorização" + #: FirmwareUpdateChecker/plugin.json msgctxt "description" msgid "Checks for firmware updates." -msgstr "Procura atualizações de firmware." +msgstr "Procura e verifica se existem atualizações de firmware." #: FirmwareUpdateChecker/plugin.json msgctxt "name" msgid "Firmware Update Checker" -msgstr "Verificador de atualizações de firmware" +msgstr "Verificador Atualizações Firmware" #: CuraSolidWorksPlugin/plugin.json msgctxt "description" -msgid "" -"Gives you the possibility to open certain files via SolidWorks itself. These " -"are then converted and loaded into Cura" -msgstr "Oferece a possibilidade de abrir determinados ficheiros através do SolidWorks. Estes são posteriormente convertidos e carregados para o Cura" +msgid "Gives you the possibility to open certain files using SolidWorks itself. Conversion is done by this plugin and additional optimizations." +msgstr "Oferece a possibilidade de abrir determinados ficheiros utilizando o SolidWorks. A conversão é efetuada através deste plug-in e de otimizações adicionais." #: CuraSolidWorksPlugin/plugin.json msgctxt "name" @@ -4335,12 +4646,13 @@ msgstr "SolidWorks Integration" #: SimulationView/plugin.json msgctxt "description" msgid "Provides the Simulation view." -msgstr "Fornece a visualização de simulação." +msgstr "Permite a visualização por camadas." +# rever! #: SimulationView/plugin.json msgctxt "name" msgid "Simulation View" -msgstr "Visualização de simulação" +msgstr "Vista Camadas" #: PostProcessingPlugin/plugin.json msgctxt "description" @@ -4350,27 +4662,27 @@ msgstr "Extensão que permite a utilização de scripts criados pelo utilizador #: PostProcessingPlugin/plugin.json msgctxt "name" msgid "Post Processing" -msgstr "Pós-processamento" +msgstr "Pós-Processamento" #: AutoSave/plugin.json msgctxt "description" msgid "Automatically saves Preferences, Machines and Profiles after changes." -msgstr "Guarda automaticamente preferências, máquinas e perfis após as alterações." +msgstr "Guarda Automaticamente as Preferências, Máquinas e Perfis após fazer alterações." #: AutoSave/plugin.json msgctxt "name" msgid "Auto Save" -msgstr "Guardar automaticamente" +msgstr "Guardar Automaticamente" #: SliceInfoPlugin/plugin.json msgctxt "description" msgid "Submits anonymous slice info. Can be disabled through preferences." -msgstr "Envia informações de segmentação anónimas. Pode ser desativado nas preferências." +msgstr "Envia informações anónimas sobre o seccionamento. Pode ser desativado nas preferências." #: SliceInfoPlugin/plugin.json msgctxt "name" msgid "Slice info" -msgstr "Informações de segmentação" +msgstr "Informações do seccionamento" #: XmlMaterialProfile/plugin.json msgctxt "description" @@ -4380,22 +4692,32 @@ msgstr "Fornece capacidades para ler e gravar perfis de material com base em XML #: XmlMaterialProfile/plugin.json msgctxt "name" msgid "Material Profiles" -msgstr "Perfis de material" +msgstr "Perfis de Materiais" #: LegacyProfileReader/plugin.json msgctxt "description" msgid "Provides support for importing profiles from legacy Cura versions." -msgstr "Fornece suporte para importar perfis de versões legadas do Cura." +msgstr "Permite importar perfis de versões antigas do Cura." #: LegacyProfileReader/plugin.json msgctxt "name" msgid "Legacy Cura Profile Reader" -msgstr "Leitor de perfis legados do Cura" +msgstr "Leitor de perfis antigos do Cura" + +#: CuraBlenderPlugin/plugin.json +msgctxt "description" +msgid "Helps to open Blender files directly in Cura." +msgstr "Ajuda a abrir ficheiros Blender diretamente no Cura." + +#: CuraBlenderPlugin/plugin.json +msgctxt "name" +msgid "Blender Integration (experimental)" +msgstr "Integração do Blender (experimental)" #: GCodeProfileReader/plugin.json msgctxt "description" msgid "Provides support for importing profiles from g-code files." -msgstr "Fornece suporte para importar perfis de ficheiros g-code." +msgstr "Permite importar perfis a partir de ficheiros g-code." #: GCodeProfileReader/plugin.json msgctxt "name" @@ -4475,7 +4797,7 @@ msgstr "Leitor de imagens" #: CuraEngineBackend/plugin.json msgctxt "description" msgid "Provides the link to the CuraEngine slicing backend." -msgstr "Fornece a hiperligação para o back-end de segmentação do CuraEngine." +msgstr "Fornece a hiperligação para o back-end de seccionamento do CuraEngine." #: CuraEngineBackend/plugin.json msgctxt "name" @@ -4485,12 +4807,12 @@ msgstr "Back-end do CuraEngine" #: PerObjectSettingsTool/plugin.json msgctxt "description" msgid "Provides the Per Model Settings." -msgstr "Fornece as definições por modelo." +msgstr "Fornece as definições por-modelo." #: PerObjectSettingsTool/plugin.json msgctxt "name" msgid "Per Model Settings Tool" -msgstr "Ferramenta de definições por modelo" +msgstr "Ferramenta de definições Por-Modelo" #: cura-siemensnx-plugin/plugin.json msgctxt "description" @@ -4525,37 +4847,49 @@ msgstr "Browser de plug-ins" #: SolidView/plugin.json msgctxt "description" msgid "Provides a normal solid mesh view." -msgstr "Fornece uma visualização de malha sólida normal." +msgstr "Permite a visualização (simples) dos objetos como sólidos." #: SolidView/plugin.json msgctxt "name" msgid "Solid View" -msgstr "Visualização sólida" +msgstr "Vista Sólidos" #: GCodeReader/plugin.json msgctxt "description" msgid "Allows loading and displaying G-code files." -msgstr "Permite carregar e apresentar ficheiros G-code." +msgstr "Permite abrir e visualizar ficheiros G-code." #: GCodeReader/plugin.json msgctxt "name" msgid "G-code Reader" msgstr "Leitor de G-code" +# rever! +# Fornece suporte para exportar perfis Cura. #: CuraProfileWriter/plugin.json msgctxt "description" msgid "Provides support for exporting Cura profiles." -msgstr "Fornece suporte para exportar perfis Cura." +msgstr "Possibilita a exportação de perfis do Cura." #: CuraProfileWriter/plugin.json msgctxt "name" msgid "Cura Profile Writer" msgstr "Gravador de perfis Cura" +#: CuraPrintProfileCreator/plugin.json +msgctxt "description" +msgid "Allows material manufacturers to create new material and quality profiles using a drop-in UI." +msgstr "Permite aos fabricantes de material a criação de novo material e de perfis de qualidade utilizando uma IU de fácil acesso." + +#: CuraPrintProfileCreator/plugin.json +msgctxt "name" +msgid "Print Profile Assistant" +msgstr "Assistente de perfis de impressão" + #: 3MFWriter/plugin.json msgctxt "description" msgid "Provides support for writing 3MF files." -msgstr "Fornece suporte para gravar ficheiros 3MF." +msgstr "Possiblita a gravação de ficheiros 3MF." #: 3MFWriter/plugin.json msgctxt "name" @@ -4565,24 +4899,27 @@ msgstr "Gravador 3MF" #: UserAgreementPlugin/plugin.json msgctxt "description" msgid "Ask the user once if he/she agrees with our license" -msgstr "Pergunta uma vez ao utilizador se concorda com a nossa licença" +msgstr "Perguntar, uma vez, ao utilizador, se concorda com a licença" +# rever! +# check the legal term in pt +# licença? +# acordo? +# use the same term for label and description #: UserAgreementPlugin/plugin.json msgctxt "name" msgid "UserAgreement" -msgstr "Contrato do utilizador" +msgstr "Contrato de Utilizador" #: UltimakerMachineActions/plugin.json msgctxt "description" -msgid "" -"Provides machine actions for Ultimaker machines (such as bed leveling " -"wizard, selecting upgrades, etc)" -msgstr "Fornece ações automáticas para as máquinas Ultimaker (como assistentes de nivelamento da base, seleção de atualizações etc.)" +msgid "Provides machine actions for Ultimaker machines (such as bed leveling wizard, selecting upgrades, etc)" +msgstr "Disponibiliza ações especificas para as máquinas Ultimaker (tais como, assistente de nivelamento da base, seleção de atualizações etc.)" #: UltimakerMachineActions/plugin.json msgctxt "name" msgid "Ultimaker machine actions" -msgstr "Ações automáticas da Ultimaker" +msgstr "Ações para impressoras Ultimaker" #: CuraProfileReader/plugin.json msgctxt "description" @@ -4592,4 +4929,161 @@ msgstr "Fornece suporte para importar perfis Cura." #: CuraProfileReader/plugin.json msgctxt "name" msgid "Cura Profile Reader" -msgstr "Leitor de perfis Cura" +msgstr "Leitor de Perfis Cura" + +#~ msgctxt "@label" +#~ msgid "Unknown" +#~ msgstr "Desconhecido" + +# rever! +# versão PT do solidworks? +#~ msgctxt "@info:status" +#~ msgid "Errors appeared while opening your SolidWorks file! Please check, whether it is possible to open your file in SolidWorks itself without any problems as well!" +#~ msgstr "Foram encontrados erros ao abrir o seu ficheiro SolidWorks! Verifique se é possível abrir o ficheiro, sem quaisquer problemas, no SolidWorks!" + +#~ msgctxt "@info:status" +#~ msgid "Error while starting %s!" +#~ msgstr "Erro ao iniciar %s!" + +#~ msgctxt "@item:inlistbox" +#~ msgid "Simulation view" +#~ msgstr "Ver Camadas" + +#~ msgctxt "@info" +#~ msgid "Cura collects anonymised slicing statistics. You can disable this in the preferences." +#~ msgstr "O Cura recolhe, de forma anónima, estatística das opções de seccionamento usadas. Se desejar pode desactivar esta opção nas preferências." + +# rever! +# contexto! +# pode ser _fechar_ +# dispensar +# ignorar +#~ msgctxt "@action:button" +#~ msgid "Dismiss" +#~ msgstr "Dispensar" + +#~ msgctxt "@menuitem" +#~ msgid "Global" +#~ msgstr "Global" + +#~ msgctxt "@label crash message" +#~ msgid "" +#~ "

      A fatal exception has occurred. 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 uma exceção fatal. Por favor envie-nos este Relatório de Falhas para podermos resolver o problema

      \n" +#~ "

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

      \n" +#~ " " + +#~ msgctxt "@label Cura version" +#~ msgid "Cura version: {version}
      " +#~ msgstr "Versão do Cura: {version}
      " + +#~ msgctxt "@label Platform" +#~ msgid "Platform: {platform}
      " +#~ msgstr "Plataforma: {platform}
      " + +#~ msgctxt "@label Qt version" +#~ msgid "Qt version: {qt}
      " +#~ msgstr "Versão Qt: {qt}
      " + +#~ msgctxt "@label PyQt version" +#~ msgid "PyQt version: {pyqt}
      " +#~ msgstr "Versão PyQt: {pyqt}
      " + +#~ msgctxt "@label OpenGL" +#~ msgid "OpenGL: {opengl}
      " +#~ msgstr "OpenGL: {opengl}
      " + +#~ msgctxt "@title:groupbox" +#~ msgid "Exception traceback" +#~ msgstr "Determinação da origem da exceção" + +#~ msgctxt "@label" +#~ msgid "Material diameter" +#~ msgstr "Diâmetro do material" + +#~ msgctxt "@label" +#~ msgid "Ultimaker 3" +#~ msgstr "Ultimaker 3" + +#~ msgctxt "@label" +#~ msgid "Ultimaker 3 Extended" +#~ msgstr "Ultimaker 3 Extended" + +#~ msgctxt "@title:window" +#~ msgid "Cura SolidWorks Plugin Configuration" +#~ msgstr "Configuração do plug-in SolidWorks do Cura" + +#~ msgctxt "@action:label" +#~ msgid "Default quality of the exported STL:" +#~ msgstr "Qualidade predefinida do STL exportado:" + +#~ msgctxt "@option:curaSolidworksStlQuality" +#~ msgid "Always ask" +#~ msgstr "Perguntar sempre" + +#~ msgctxt "@option:curaSolidworksStlQuality" +#~ msgid "Always use Fine quality" +#~ msgstr "Utilizar sempre Alta Resolução" + +#~ msgctxt "@option:curaSolidworksStlQuality" +#~ msgid "Always use Coarse quality" +#~ msgstr "Utilizar sempre Baixa resolução" + +#~ msgctxt "@title:window" +#~ msgid "Import SolidWorks File as STL..." +#~ msgstr "Importar ficheiro SolidWorks como STL..." + +#~ msgctxt "@info:tooltip" +#~ msgid "Quality of the Exported STL" +#~ msgstr "Qualidade do STL Exportado" + +#~ msgctxt "@action:label" +#~ msgid "Quality" +#~ msgstr "Qualidade" + +#~ msgctxt "@option:curaSolidworksStlQuality" +#~ msgid "Coarse" +#~ msgstr "Baixa resolução" + +#~ msgctxt "@option:curaSolidworksStlQuality" +#~ msgid "Fine" +#~ msgstr "Alta resolução" + +#~ msgctxt "@" +#~ msgid "No Profile Available" +#~ msgstr "Nenhum Perfil Disponível" + +#~ 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" + +#~ msgctxt "@tooltip" +#~ msgid "Time specification
      " +#~ msgstr "Especificação de tempo
      " + +#~ msgctxt "@action:inmenu menubar:view" +#~ msgid "&Reset camera position" +#~ msgstr "&Repor posição da câmara" + +#~ msgctxt "@title:menu menubar:file" +#~ msgid "Save project" +#~ msgstr "Guardar projeto" + +#~ msgctxt "@title:tab" +#~ msgid "Prepare" +#~ msgstr "Preparar" + +#~ msgctxt "@title:tab" +#~ msgid "Monitor" +#~ msgstr "Monitorizar" + +#~ msgctxt "@label" +#~ msgid "Check compatibility" +#~ msgstr "Verificar compatibilidade dos materiais" + +#~ msgctxt "description" +#~ msgid "Gives you the possibility to open certain files via SolidWorks itself. These are then converted and loaded into Cura" +#~ msgstr "Oferece a possibilidade de abrir determinados ficheiros através do SolidWorks. Estes são posteriormente convertidos e carregados para o Cura" diff --git a/resources/i18n/pt_PT/fdmextruder.def.json.po b/resources/i18n/pt_PT/fdmextruder.def.json.po index 852fe4d562..46f333a02e 100644 --- a/resources/i18n/pt_PT/fdmextruder.def.json.po +++ b/resources/i18n/pt_PT/fdmextruder.def.json.po @@ -2,20 +2,21 @@ # Copyright (C) 2017 Ultimaker # This file is distributed under the same license as the Cura package. # Ruben Dulek , 2017. -# +# msgid "" msgstr "" "Project-Id-Version: Cura 3.1\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" "POT-Creation-Date: 2017-08-02 16:53+0000\n" -"PO-Revision-Date: 2017-12-07 13:41+0100\n" -"Last-Translator: Bothof \n" +"PO-Revision-Date: 2018-01-23 19:35+0000\n" +"Last-Translator: Paulo Miranda \n" "Language-Team: Bothof\n" "Language: pt_PT\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 2.0.5\n" #: fdmextruder.def.json msgctxt "machine_settings label" @@ -30,155 +31,147 @@ msgstr "Definições específicas da máquina" #: fdmextruder.def.json msgctxt "extruder_nr label" msgid "Extruder" -msgstr "Extrusora" +msgstr "Extrusor" #: fdmextruder.def.json msgctxt "extruder_nr description" msgid "The extruder train used for printing. This is used in multi-extrusion." -msgstr "A máquina extrusora utilizada para imprimir. Esta é utilizada em extrusões múltiplas." +msgstr "O núcleos de extrusão utilizado para imprimir. Definição usada com múltiplos extrusores." #: fdmextruder.def.json msgctxt "machine_nozzle_id label" msgid "Nozzle ID" -msgstr "ID do bocal" +msgstr "ID do Nozzle" #: fdmextruder.def.json msgctxt "machine_nozzle_id description" msgid "The nozzle ID for an extruder train, such as \"AA 0.4\" and \"BB 0.8\"." -msgstr "A ID do bocal para uma máquina de extrusão, tal como \"AA 0.4\" e \"BB 0.8\"." +msgstr "O ID do nozzle de um núcleo de extrusão, tal como \"AA 0.4\" e \"BB 0.8\"." #: fdmextruder.def.json msgctxt "machine_nozzle_size label" msgid "Nozzle Diameter" -msgstr "Diâmetro do bocal" +msgstr "Diâmetro do Nozzle" #: fdmextruder.def.json msgctxt "machine_nozzle_size description" -msgid "" -"The inner diameter of the nozzle. Change this setting when using a non-" -"standard nozzle size." -msgstr "O diâmetro interno do bocal. Altere esta definição ao utilizar um tamanho de bocal não convencional." +msgid "The inner diameter of the nozzle. Change this setting when using a non-standard nozzle size." +msgstr "O diâmetro interno do nozzle. Altere esta definição quando utilizar um nozzle com um tamanho não convencional." #: fdmextruder.def.json msgctxt "machine_nozzle_offset_x label" msgid "Nozzle X Offset" -msgstr "Desvio X do bocal" +msgstr "Desvio X do Nozzle" #: fdmextruder.def.json msgctxt "machine_nozzle_offset_x description" msgid "The x-coordinate of the offset of the nozzle." -msgstr "A coordenada X do desvio do bocal." +msgstr "A coordenada X do desvio do nozzle." #: fdmextruder.def.json msgctxt "machine_nozzle_offset_y label" msgid "Nozzle Y Offset" -msgstr "Desvio Y do bocal" +msgstr "Desvio Y do Nozzle" #: fdmextruder.def.json msgctxt "machine_nozzle_offset_y description" msgid "The y-coordinate of the offset of the nozzle." -msgstr "A coordenada Y do desvio do bocal." +msgstr "A coordenada Y do desvio do nozzle." #: fdmextruder.def.json msgctxt "machine_extruder_start_code label" msgid "Extruder Start G-Code" -msgstr "G-Code inicial da extrusora" +msgstr "G-Code Inicial do Extrusor" #: fdmextruder.def.json msgctxt "machine_extruder_start_code description" msgid "Start g-code to execute whenever turning the extruder on." -msgstr "G-Code inicial a ser executado sempre que a extrusora for ligada." +msgstr "G-Code inicial a ser executado sempre que o extrusor for ligado." #: fdmextruder.def.json msgctxt "machine_extruder_start_pos_abs label" msgid "Extruder Start Position Absolute" -msgstr "Posição inicial absoluta da extrusora" +msgstr "Posição Inicial Absoluta do Extrusor" #: fdmextruder.def.json msgctxt "machine_extruder_start_pos_abs description" -msgid "" -"Make the extruder starting position absolute rather than relative to the " -"last-known location of the head." -msgstr "Torne a posição inicial da extrusora absoluta em vez de relativa à última posição conhecida da cabeça." +msgid "Make the extruder starting position absolute rather than relative to the last-known location of the head." +msgstr "Define a posição inicial do extrusor, absoluta em vez de relativa à última posição conhecida da cabeça de impressão." #: fdmextruder.def.json msgctxt "machine_extruder_start_pos_x label" msgid "Extruder Start Position X" -msgstr "X da posição inicial da extrusora" +msgstr "Posição X Inicial do Extrusor" #: fdmextruder.def.json msgctxt "machine_extruder_start_pos_x description" msgid "The x-coordinate of the starting position when turning the extruder on." -msgstr "A coordenada X da posição inicial ao ligar a extrusora." +msgstr "A coordenada X da posição inicial ao ligar o extrusor." #: fdmextruder.def.json msgctxt "machine_extruder_start_pos_y label" msgid "Extruder Start Position Y" -msgstr "Y da posição inicial da extrusora" +msgstr "Posição Y Inicial do Extrusor" #: fdmextruder.def.json msgctxt "machine_extruder_start_pos_y description" msgid "The y-coordinate of the starting position when turning the extruder on." -msgstr "A coordenada Y da posição inicial ao ligar a extrusora." +msgstr "A coordenada Y da posição inicial ao ligar o extrusor." #: fdmextruder.def.json msgctxt "machine_extruder_end_code label" msgid "Extruder End G-Code" -msgstr "G-Code final da extrusora" +msgstr "G-Code Final do Extrusor" #: fdmextruder.def.json msgctxt "machine_extruder_end_code description" msgid "End g-code to execute whenever turning the extruder off." -msgstr "G-Code final a ser executado sempre que a extrusora for desligada." +msgstr "G-Code final a ser executado sempre que o extrusor for desligado." #: fdmextruder.def.json msgctxt "machine_extruder_end_pos_abs label" msgid "Extruder End Position Absolute" -msgstr "Posição final absoluta da extrusora" +msgstr "Posição Final Absoluta do Extrusor" #: fdmextruder.def.json msgctxt "machine_extruder_end_pos_abs description" -msgid "" -"Make the extruder ending position absolute rather than relative to the last-" -"known location of the head." -msgstr "Torne a posição final da extrusora absoluta em vez de relativa à última localização conhecida da cabeça." +msgid "Make the extruder ending position absolute rather than relative to the last-known location of the head." +msgstr "Define a posição final do extrusor, absoluta em vez de relativa à última posição conhecida da cabeça de impressão." #: fdmextruder.def.json msgctxt "machine_extruder_end_pos_x label" msgid "Extruder End Position X" -msgstr "X da posição final da extrusora" +msgstr "Posição X Final do Extrusor" #: fdmextruder.def.json msgctxt "machine_extruder_end_pos_x description" msgid "The x-coordinate of the ending position when turning the extruder off." -msgstr "A coordenada X da posição final ao desligar a extrusora." +msgstr "A coordenada X da posição final ao desligar o extrusor." #: fdmextruder.def.json msgctxt "machine_extruder_end_pos_y label" msgid "Extruder End Position Y" -msgstr "Y da posição final da extrusora" +msgstr "Posição Y Final do Extrusor" #: fdmextruder.def.json msgctxt "machine_extruder_end_pos_y description" msgid "The y-coordinate of the ending position when turning the extruder off." -msgstr "A coordenada Y da posição final ao desligar a extrusora." +msgstr "A coordenada Y da posição final ao desligar o extrusor." #: fdmextruder.def.json msgctxt "extruder_prime_pos_z label" msgid "Extruder Prime Z Position" -msgstr "Posição Z de preparação da extrusora" +msgstr "Posição Z Preparação do Extrusor" #: fdmextruder.def.json msgctxt "extruder_prime_pos_z description" -msgid "" -"The Z coordinate of the position where the nozzle primes at the start of " -"printing." -msgstr "A coordenada Z da posição de preparação do bocal ao iniciar a impressão." +msgid "The Z coordinate of the position where the nozzle primes at the start of printing." +msgstr "A coordenada Z da posição onde o nozzle é preparado ao iniciar a impressão." #: fdmextruder.def.json msgctxt "platform_adhesion label" msgid "Build Plate Adhesion" -msgstr "Aderência à placa de construção" +msgstr "Aderência Base Construção" #: fdmextruder.def.json msgctxt "platform_adhesion description" @@ -188,23 +181,19 @@ msgstr "Aderência" #: fdmextruder.def.json msgctxt "extruder_prime_pos_x label" msgid "Extruder Prime X Position" -msgstr "Posição X de preparação da extrusora" +msgstr "Posição X Preparação do Extrusor" #: fdmextruder.def.json msgctxt "extruder_prime_pos_x description" -msgid "" -"The X coordinate of the position where the nozzle primes at the start of " -"printing." -msgstr "A coordenada X da posição de preparação do bocal ao iniciar a impressão." +msgid "The X coordinate of the position where the nozzle primes at the start of printing." +msgstr "A coordenada X da posição onde o nozzle é preparado ao iniciar a impressão." #: fdmextruder.def.json msgctxt "extruder_prime_pos_y label" msgid "Extruder Prime Y Position" -msgstr "Posição Y de preparação da extrusora" +msgstr "Posição Y Preparação do Extrusor" #: fdmextruder.def.json msgctxt "extruder_prime_pos_y description" -msgid "" -"The Y coordinate of the position where the nozzle primes at the start of " -"printing." -msgstr "A coordenada Y da posição de preparação do bocal ao iniciar a impressão." +msgid "The Y coordinate of the position where the nozzle primes at the start of printing." +msgstr "A coordenada Y da posição onde o nozzle é preparado ao iniciar a impressão." diff --git a/resources/i18n/pt_PT/fdmprinter.def.json.po b/resources/i18n/pt_PT/fdmprinter.def.json.po index d7385d9584..e106780669 100644 --- a/resources/i18n/pt_PT/fdmprinter.def.json.po +++ b/resources/i18n/pt_PT/fdmprinter.def.json.po @@ -2,20 +2,22 @@ # Copyright (C) 2017 Ultimaker # This file is distributed under the same license as the Cura package. # Ruben Dulek , 2017. -# +# msgid "" msgstr "" "Project-Id-Version: Cura 3.1\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" "POT-Creation-Date: 2017-08-02 16:53+0000\n" -"PO-Revision-Date: 2017-12-07 13:41+0100\n" -"Last-Translator: Bothof \n" +"PO-Revision-Date: 2018-01-23 19:42+0000\n" +"Last-Translator: Paulo Miranda \n" "Language-Team: Bothof\n" "Language: pt_PT\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 2.0.5\n" +"X-Poedit-Bookmarks: 111,-1,-1,-1,-1,-1,-1,-1,-1,-1\n" #: fdmprinter.def.json msgctxt "machine_settings label" @@ -44,15 +46,13 @@ msgstr "Mostrar variantes da máquina" #: fdmprinter.def.json msgctxt "machine_show_variants description" -msgid "" -"Whether to show the different variants of this machine, which are described " -"in separate json files." +msgid "Whether to show the different variants of this machine, which are described in separate json files." msgstr "Mostrar ou não as diferentes variantes desta máquina, as quais são descritas em ficheiros json separados." #: fdmprinter.def.json msgctxt "machine_start_gcode label" msgid "Start GCode" -msgstr "GCode inicial" +msgstr "GCode Inicial" #: fdmprinter.def.json msgctxt "machine_start_gcode description" @@ -64,7 +64,7 @@ msgstr "Comandos Gcode a serem executados no início – separados por \n." #: fdmprinter.def.json msgctxt "machine_end_gcode label" msgid "End GCode" -msgstr "GCode final" +msgstr "GCode Final" #: fdmprinter.def.json msgctxt "machine_end_gcode description" @@ -76,75 +76,67 @@ msgstr "Comandos Gcode a serem executados no fim – separados por \n." #: fdmprinter.def.json msgctxt "material_guid label" msgid "Material GUID" -msgstr "GUID de material" +msgstr "GUID do material" #: fdmprinter.def.json msgctxt "material_guid description" msgid "GUID of the material. This is set automatically. " -msgstr "GUID do material. Isto é definido automaticamente. " +msgstr "GUID do material. Este é definido automaticamente. " #: fdmprinter.def.json msgctxt "material_bed_temp_wait label" msgid "Wait for Build Plate Heatup" -msgstr "Aguardar pelo aquecimento da placa de construção" +msgstr "Esperar pelo Aquecimento da Base de Construção" #: fdmprinter.def.json msgctxt "material_bed_temp_wait description" -msgid "" -"Whether to insert a command to wait until the build plate temperature is " -"reached at the start." -msgstr "Introduzir ou não um comando para aguardar até que a temperatura da placa de construção seja atingida durante o arranque." +msgid "Whether to insert a command to wait until the build plate temperature is reached at the start." +msgstr "Introduzir ou não um comando para esperar até que a temperatura da base de construção seja atingida durante o arranque." #: fdmprinter.def.json msgctxt "material_print_temp_wait label" msgid "Wait for Nozzle Heatup" -msgstr "Aguardar pelo aquecimento do bocal" +msgstr "Esperar pelo Aquecimento do Nozzle" #: fdmprinter.def.json msgctxt "material_print_temp_wait description" msgid "Whether to wait until the nozzle temperature is reached at the start." -msgstr "Aguardar ou não até que a temperatura do bocal seja atingida durante o arranque." +msgstr "Esperar ou não até que a temperatura do nozzle seja atingida durante o arranque." #: fdmprinter.def.json msgctxt "material_print_temp_prepend label" msgid "Include Material Temperatures" -msgstr "Incluir temperaturas do material" +msgstr "Incluir Temperaturas do Material" #: fdmprinter.def.json msgctxt "material_print_temp_prepend description" -msgid "" -"Whether to include nozzle temperature commands at the start of the gcode. " -"When the start_gcode already contains nozzle temperature commands Cura " -"frontend will automatically disable this setting." -msgstr "Incluir ou não os comandos de temperatura do bocal no início do gcode. Se o gcode_inicial já contiver os comandos de temperatura do bocal, o front-end do Cura desativará automaticamente esta definição." +msgid "Whether to include nozzle temperature commands at the start of the gcode. When the start_gcode already contains nozzle temperature commands Cura frontend will automatically disable this setting." +msgstr "Incluir ou não os comandos de temperatura do nozzle no início do gcode. Se o gcode_inicial já incluir os comandos de temperatura do nozzle, o front-end do Cura desativará automaticamente esta definição." #: fdmprinter.def.json msgctxt "material_bed_temp_prepend label" msgid "Include Build Plate Temperature" -msgstr "Incluir temperatura da placa de construção" +msgstr "Incluir Temperatura da Base de Construção" #: fdmprinter.def.json msgctxt "material_bed_temp_prepend description" -msgid "" -"Whether to include build plate temperature commands at the start of the " -"gcode. When the start_gcode already contains build plate temperature " -"commands Cura frontend will automatically disable this setting." -msgstr "Incluir ou não os comandos de temperatura da placa de construção no início do gcode. Se o gcode_inicial já contiver os comandos de temperatura da placa de construção, o front-end do Cura desativará automaticamente esta definição." +msgid "Whether to include build plate temperature commands at the start of the gcode. When the start_gcode already contains build plate temperature commands Cura frontend will automatically disable this setting." +msgstr "Incluir ou não os comandos de temperatura da base de construção no início do gcode. Se o gcode_inicial já incluir os comandos de temperatura da base de construção, o front-end do Cura desativará automaticamente esta definição." #: fdmprinter.def.json msgctxt "machine_width label" msgid "Machine Width" -msgstr "Largura da máquina" +msgstr "Largura da Máquina" #: fdmprinter.def.json msgctxt "machine_width description" msgid "The width (X-direction) of the printable area." -msgstr "A largura (direção X) da área de impressão." +msgstr "O diâmetro (direção X) da área de impressão." #: fdmprinter.def.json msgctxt "machine_depth label" msgid "Machine Depth" -msgstr "Profundidade da máquina" +msgstr "Profundidade da Máquina" #: fdmprinter.def.json msgctxt "machine_depth description" @@ -154,18 +146,17 @@ msgstr "A profundidade (direção Y) da área de impressão." #: fdmprinter.def.json msgctxt "machine_shape label" msgid "Build Plate Shape" -msgstr "Forma da placa de construção" +msgstr "Forma da Base de Construção" #: fdmprinter.def.json msgctxt "machine_shape description" -msgid "" -"The shape of the build plate without taking unprintable areas into account." -msgstr "A forma da placa de construção sem ter em consideração as áreas não imprimíveis." +msgid "The shape of the build plate without taking unprintable areas into account." +msgstr "A forma da base de construção sem ter em consideração as áreas onde não é possível imprimir." #: fdmprinter.def.json msgctxt "machine_shape option rectangular" msgid "Rectangular" -msgstr "Retangular" +msgstr "Rectangular" #: fdmprinter.def.json msgctxt "machine_shape option elliptic" @@ -175,7 +166,7 @@ msgstr "Elíptica" #: fdmprinter.def.json msgctxt "machine_height label" msgid "Machine Height" -msgstr "Altura da máquina" +msgstr "Altura da Máquina" #: fdmprinter.def.json msgctxt "machine_height description" @@ -185,70 +176,64 @@ msgstr "A altura (direção Z) da área de impressão." #: fdmprinter.def.json msgctxt "machine_heated_bed label" msgid "Has Heated Build Plate" -msgstr "Contém placa de construção aquecida" +msgstr "Tem Base de Construção Aquecida" #: fdmprinter.def.json msgctxt "machine_heated_bed description" msgid "Whether the machine has a heated build plate present." -msgstr "Se a máquina contém ou não uma placa de construção aquecida." +msgstr "Se a máquina tem ou não uma base de construção aquecida." #: fdmprinter.def.json msgctxt "machine_center_is_zero label" msgid "Is Center Origin" -msgstr "O centro é a origem" +msgstr "O Centro é a Origem" #: fdmprinter.def.json msgctxt "machine_center_is_zero description" -msgid "" -"Whether the X/Y coordinates of the zero position of the printer is at the " -"center of the printable area." -msgstr "Se as coordenadas X/Y da posição zero da impressora se encontram no centro da área de impressão." +msgid "Whether the X/Y coordinates of the zero position of the printer is at the center of the printable area." +msgstr "Se as coordenadas X/Y da posição zero (origem) da impressora são o centro da área de impressão." #: fdmprinter.def.json msgctxt "machine_extruder_count label" msgid "Number of Extruders" -msgstr "Número de extrusoras" +msgstr "Número de Extrusores" +# train? +# nucleo? #: fdmprinter.def.json msgctxt "machine_extruder_count description" -msgid "" -"Number of extruder trains. An extruder train is the combination of a feeder, " -"bowden tube, and nozzle." -msgstr "Número de máquinas de extrusão. Uma máquina de extrusão é a combinação de um alimentador, de um tubo Bowden e de um bocal." +msgid "Number of extruder trains. An extruder train is the combination of a feeder, bowden tube, and nozzle." +msgstr "Número de núcleos de extrusão. Um núcleo de extrusão é o conjunto de um alimentador (feeder), tubo bowden e nozzle." #: fdmprinter.def.json msgctxt "machine_nozzle_tip_outer_diameter label" msgid "Outer nozzle diameter" -msgstr "Diâmetro externo do bocal" +msgstr "Diâmetro externo do nozzle" #: fdmprinter.def.json msgctxt "machine_nozzle_tip_outer_diameter description" msgid "The outer diameter of the tip of the nozzle." -msgstr "O diâmetro externo da ponta do bocal." +msgstr "O diâmetro externo da ponta do nozzle." #: fdmprinter.def.json msgctxt "machine_nozzle_head_distance label" msgid "Nozzle length" -msgstr "Comprimento do bocal" +msgstr "Comprimento do nozzle" #: fdmprinter.def.json msgctxt "machine_nozzle_head_distance description" -msgid "" -"The height difference between the tip of the nozzle and the lowest part of " -"the print head." -msgstr "A diferença de altura entre a ponta do bocal e o extremo inferior da cabeça de impressão." +msgid "The height difference between the tip of the nozzle and the lowest part of the print head." +msgstr "A diferença de altura entre a ponta do nozzle e o extremo inferior da cabeça de impressão." #: fdmprinter.def.json msgctxt "machine_nozzle_expansion_angle label" msgid "Nozzle angle" -msgstr "Ângulo do bocal" +msgstr "Ângulo do nozzle" #: fdmprinter.def.json msgctxt "machine_nozzle_expansion_angle description" -msgid "" -"The angle between the horizontal plane and the conical part right above the " -"tip of the nozzle." -msgstr "O ângulo entre o plano horizontal e a peça cónica imediatamente acima da ponta do bocal." +msgid "The angle between the horizontal plane and the conical part right above the tip of the nozzle." +msgstr "O ângulo entre o plano horizontal e a parte cónica imediatamente acima da ponta do nozzle." #: fdmprinter.def.json msgctxt "machine_heat_zone_length label" @@ -257,76 +242,66 @@ msgstr "Comprimento da zona de aquecimento" #: fdmprinter.def.json msgctxt "machine_heat_zone_length description" -msgid "" -"The distance from the tip of the nozzle in which heat from the nozzle is " -"transferred to the filament." -msgstr "A distância a partir da ponta do bocal à qual o calor do bocal é transferido para o filamento." +msgid "The distance from the tip of the nozzle in which heat from the nozzle is transferred to the filament." +msgstr "A distância, a partir da ponta do nozzle, na qual o calor do nozzle é transferido para o filamento." #: fdmprinter.def.json msgctxt "machine_filament_park_distance label" msgid "Filament Park Distance" -msgstr "Distância de estacionamento do filamento" +msgstr "Distância de \"estacionamento\" do filamento" #: fdmprinter.def.json msgctxt "machine_filament_park_distance description" -msgid "" -"The distance from the tip of the nozzle where to park the filament when an " -"extruder is no longer used." -msgstr "A distância a partir da ponta do bocal à qual o filamento deve ser estacionado quando já não existe uma extrusora em utilização." +msgid "The distance from the tip of the nozzle where to park the filament when an extruder is no longer used." +msgstr "A distância, a partir da ponta do nozzle, à qual o filamento deve ser \"estacionado\" quando um extrusor já não está em utilização." #: fdmprinter.def.json msgctxt "machine_nozzle_temp_enabled label" msgid "Enable Nozzle Temperature Control" -msgstr "Ativar controlo de temperatura do bocal" +msgstr "Ativar Controlo da Temperatura do Nozzle" #: fdmprinter.def.json msgctxt "machine_nozzle_temp_enabled description" -msgid "" -"Whether to control temperature from Cura. Turn this off to control nozzle " -"temperature from outside of Cura." -msgstr "Controlar ou não a temperatura a partir do Cura. Desative esta opção para controlar a temperatura do bocal a partir de fora do Cura." +msgid "Whether to control temperature from Cura. Turn this off to control nozzle temperature from outside of Cura." +msgstr "Controlar ou não a temperatura a partir do Cura. Desative esta opção para controlar a temperatura do nozzle a partir de fora do Cura." #: fdmprinter.def.json msgctxt "machine_nozzle_heat_up_speed label" msgid "Heat up speed" msgstr "Velocidade de aquecimento" +# intervalo? #: fdmprinter.def.json msgctxt "machine_nozzle_heat_up_speed description" -msgid "" -"The speed (°C/s) by which the nozzle heats up averaged over the window of " -"normal printing temperatures and the standby temperature." -msgstr "A velocidade média (°C/s) a que o bocal é aquecido calculada no intervalo entre as temperaturas normais de impressão e a temperatura de espera." +msgid "The speed (°C/s) by which the nozzle heats up averaged over the window of normal printing temperatures and the standby temperature." +msgstr "A velocidade média (°C/s) a que o nozzle é aquecido, calculada no intervalo entre as temperaturas normais de impressão e a temperatura de espera." #: fdmprinter.def.json msgctxt "machine_nozzle_cool_down_speed label" msgid "Cool down speed" msgstr "Velocidade de arrefecimento" +# intervalo? #: fdmprinter.def.json msgctxt "machine_nozzle_cool_down_speed description" -msgid "" -"The speed (°C/s) by which the nozzle cools down averaged over the window of " -"normal printing temperatures and the standby temperature." -msgstr "A velocidade média (°C/s) a que o bocal arrefece calculada no intervalo entre as temperaturas normais de impressão e a temperatura de espera." +msgid "The speed (°C/s) by which the nozzle cools down averaged over the window of normal printing temperatures and the standby temperature." +msgstr "A velocidade média (°C/s) a que o nozzle arrefece, calculada no intervalo entre as temperaturas normais de impressão e a temperatura em modo de espera." #: fdmprinter.def.json msgctxt "machine_min_cool_heat_time_window label" msgid "Minimal Time Standby Temperature" -msgstr "Tempo mínimo para temperatura de espera" +msgstr "Tempo Mínimo da Temperatura em Modo de Espera" #: fdmprinter.def.json msgctxt "machine_min_cool_heat_time_window description" -msgid "" -"The minimal time an extruder has to be inactive before the nozzle is cooled. " -"Only when an extruder is not used for longer than this time will it be " -"allowed to cool down to the standby temperature." -msgstr "O tempo mínimo durante o qual uma extrusora tem de estar inativa antes de o bocal arrefecer. Apenas é permitido arrefecer até à temperatura de espera quando uma extrusora não for utilizada durante um período de tempo superior a este." +msgid "The minimal time an extruder has to be inactive before the nozzle is cooled. Only when an extruder is not used for longer than this time will it be allowed to cool down to the standby temperature." +msgstr "O tempo mínimo durante o qual um extrusor tem de estar inativo antes de o nozzle ser arrefecido. Apenas é permitido começar a arrefecer até à temperatura de Modo de Espera quando um extrusor não for utilizado por um período de tempo superior a este." +# variedade ou especie ou tipo? #: fdmprinter.def.json msgctxt "machine_gcode_flavor label" msgid "Gcode flavour" -msgstr "Padrão de Gcode" +msgstr "Variedade de Gcode" #: fdmprinter.def.json msgctxt "machine_gcode_flavor description" @@ -341,7 +316,7 @@ msgstr "Marlin" #: fdmprinter.def.json msgctxt "machine_gcode_flavor option RepRap (Volumetric)" msgid "Marlin (Volumetric)" -msgstr "Marlin (volumétrico)" +msgstr "Marlin (Volumétrico)" #: fdmprinter.def.json msgctxt "machine_gcode_flavor option RepRap (RepRap)" @@ -378,6 +353,16 @@ msgctxt "machine_gcode_flavor option Repetier" msgid "Repetier" msgstr "Repetier" +#: fdmprinter.def.json +msgctxt "machine_firmware_retract label" +msgid "Firmware Retraction" +msgstr "Retração de firmware" + +#: fdmprinter.def.json +msgctxt "machine_firmware_retract description" +msgid "Whether to use firmware retract commands (G10/G11) instead of using the E property in G1 commands to retract the material." +msgstr "Utilizar ou não comandos de retração de firmware (G10/G11) em vez de utilizar a propriedade E em comandos G1 para retrair o material." + #: fdmprinter.def.json msgctxt "machine_disallowed_areas label" msgid "Disallowed areas" @@ -391,12 +376,12 @@ msgstr "Uma lista de polígonos com áreas onde a cabeça de impressão não pod #: fdmprinter.def.json msgctxt "nozzle_disallowed_areas label" msgid "Nozzle Disallowed Areas" -msgstr "Áreas não permitidas do bocal" +msgstr "Áreas não permitidas ao nozzle" #: fdmprinter.def.json msgctxt "nozzle_disallowed_areas description" msgid "A list of polygons with areas the nozzle is not allowed to enter." -msgstr "Uma lista de polígonos com áreas onde o bocal não pode entrar." +msgstr "Uma lista de polígonos com áreas onde o nozzle não pode entrar." #: fdmprinter.def.json msgctxt "machine_head_polygon label" @@ -406,17 +391,17 @@ msgstr "Polígono da cabeça da máquina" #: fdmprinter.def.json msgctxt "machine_head_polygon description" msgid "A 2D silhouette of the print head (fan caps excluded)." -msgstr "Uma silhueta 2D da cabeça de impressão (excluindo as tampas da ventoinha)." +msgstr "Uma silhueta 2D da cabeça de impressão (excluindo tampas do(s) ventilador(s))." #: fdmprinter.def.json msgctxt "machine_head_with_fans_polygon label" msgid "Machine head & Fan polygon" -msgstr "Polígono da cabeça e da ventoinha da máquina" +msgstr "Polígono da cabeça e ventilador da máquina" #: fdmprinter.def.json msgctxt "machine_head_with_fans_polygon description" msgid "A 2D silhouette of the print head (fan caps included)." -msgstr "Uma silhueta 2D da cabeça de impressão (incluindo as tampas da ventoinha)." +msgstr "Uma silhueta 2D da cabeça de impressão (incluindo tampas do(s) ventilador(s))." #: fdmprinter.def.json msgctxt "gantry_height label" @@ -425,101 +410,93 @@ msgstr "Altura do pórtico" #: fdmprinter.def.json msgctxt "gantry_height description" -msgid "" -"The height difference between the tip of the nozzle and the gantry system (X " -"and Y axes)." -msgstr "A diferença de altura entre a ponta do bocal e o sistema de pórtico (eixos X e Y)." +msgid "The height difference between the tip of the nozzle and the gantry system (X and Y axes)." +msgstr "A diferença de altura entre a ponta do nozzle e o sistema de pórtico (eixos X e Y)." #: fdmprinter.def.json msgctxt "machine_nozzle_id label" msgid "Nozzle ID" -msgstr "ID do bocal" +msgstr "ID do Nozzle" #: fdmprinter.def.json msgctxt "machine_nozzle_id description" msgid "The nozzle ID for an extruder train, such as \"AA 0.4\" and \"BB 0.8\"." -msgstr "A ID do bocal para uma máquina de extrusão, tal como \"AA 0.4\" e \"BB 0.8\"." +msgstr "O ID do nozzle de um núcleo de extrusão, tal como \"AA 0.4\" e \"BB 0.8\"." #: fdmprinter.def.json msgctxt "machine_nozzle_size label" msgid "Nozzle Diameter" -msgstr "Diâmetro do bocal" +msgstr "Diâmetro do Nozzle" #: fdmprinter.def.json msgctxt "machine_nozzle_size description" -msgid "" -"The inner diameter of the nozzle. Change this setting when using a non-" -"standard nozzle size." -msgstr "O diâmetro interno do bocal. Altere esta definição ao utilizar um tamanho de bocal não convencional." +msgid "The inner diameter of the nozzle. Change this setting when using a non-standard nozzle size." +msgstr "O diâmetro interno do nozzle. Altere esta definição quando utilizar um nozzle com um tamanho não convencional." #: fdmprinter.def.json msgctxt "machine_use_extruder_offset_to_offset_coords label" msgid "Offset With Extruder" -msgstr "Desvio da extrusora" +msgstr "Desviar com Extrusor" #: fdmprinter.def.json msgctxt "machine_use_extruder_offset_to_offset_coords description" msgid "Apply the extruder offset to the coordinate system." -msgstr "Aplique o desvio da extrusora ao sistema de coordenadas." +msgstr "Aplicar o desvio do extrusor ao sistema de coordenadas." #: fdmprinter.def.json msgctxt "extruder_prime_pos_z label" msgid "Extruder Prime Z Position" -msgstr "Posição Z de preparação da extrusora" +msgstr "Posição Z para Preparação Extrusor" #: fdmprinter.def.json msgctxt "extruder_prime_pos_z description" -msgid "" -"The Z coordinate of the position where the nozzle primes at the start of " -"printing." -msgstr "A coordenada Z da posição de preparação do bocal ao iniciar a impressão." +msgid "The Z coordinate of the position where the nozzle primes at the start of printing." +msgstr "A coordenada Z da posição onde fazer a preparação do nozzle no inicio da impressão." #: fdmprinter.def.json msgctxt "extruder_prime_pos_abs label" msgid "Absolute Extruder Prime Position" -msgstr "Posição absoluta de preparação da extrusora" +msgstr "Posição Absoluta Preparação Extrusor" #: fdmprinter.def.json msgctxt "extruder_prime_pos_abs description" -msgid "" -"Make the extruder prime position absolute rather than relative to the last-" -"known location of the head." -msgstr "Torne a posição de preparação da extrusora absoluta em vez de relativa à última posição conhecida da cabeça." +msgid "Make the extruder prime position absolute rather than relative to the last-known location of the head." +msgstr "Definir como absoluta, a posição para a preparação do extrusor, em vez de relativa à última posição conhecida da cabeça." #: fdmprinter.def.json msgctxt "machine_max_feedrate_x label" msgid "Maximum Speed X" -msgstr "Velocidade X máxima" +msgstr "Velocidade X Máxima" #: fdmprinter.def.json msgctxt "machine_max_feedrate_x description" msgid "The maximum speed for the motor of the X-direction." -msgstr "A velocidade máxima do motor na direção X." +msgstr "A velocidade máxima do motor da direção X." #: fdmprinter.def.json msgctxt "machine_max_feedrate_y label" msgid "Maximum Speed Y" -msgstr "Velocidade Y máxima" +msgstr "Velocidade Y Máxima" #: fdmprinter.def.json msgctxt "machine_max_feedrate_y description" msgid "The maximum speed for the motor of the Y-direction." -msgstr "A velocidade máxima do motor na direção Y." +msgstr "A velocidade máxima do motor da direção Y." #: fdmprinter.def.json msgctxt "machine_max_feedrate_z label" msgid "Maximum Speed Z" -msgstr "Velocidade Z máxima" +msgstr "Velocidade Z Máxima" #: fdmprinter.def.json msgctxt "machine_max_feedrate_z description" msgid "The maximum speed for the motor of the Z-direction." -msgstr "A velocidade máxima do motor na direção Z." +msgstr "A velocidade máxima do motor da direção Z." #: fdmprinter.def.json msgctxt "machine_max_feedrate_e label" msgid "Maximum Feedrate" -msgstr "Velocidade máxima de alimentação" +msgstr "Velocidade Máxima de Alimentação" #: fdmprinter.def.json msgctxt "machine_max_feedrate_e description" @@ -529,37 +506,37 @@ msgstr "A velocidade máxima do filamento." #: fdmprinter.def.json msgctxt "machine_max_acceleration_x label" msgid "Maximum Acceleration X" -msgstr "Aceleração X máxima" +msgstr "Aceleração X Máxima" #: fdmprinter.def.json msgctxt "machine_max_acceleration_x description" msgid "Maximum acceleration for the motor of the X-direction" -msgstr "A aceleração máxima do motor na direção X" +msgstr "A aceleração máxima do motor da direção X" #: fdmprinter.def.json msgctxt "machine_max_acceleration_y label" msgid "Maximum Acceleration Y" -msgstr "Aceleração Y máxima" +msgstr "Aceleração Y Máxima" #: fdmprinter.def.json msgctxt "machine_max_acceleration_y description" msgid "Maximum acceleration for the motor of the Y-direction." -msgstr "A aceleração máxima do motor na direção Y." +msgstr "A aceleração máxima do motor da direção Y." #: fdmprinter.def.json msgctxt "machine_max_acceleration_z label" msgid "Maximum Acceleration Z" -msgstr "Aceleração Z máxima" +msgstr "Aceleração Z Máxima" #: fdmprinter.def.json msgctxt "machine_max_acceleration_z description" msgid "Maximum acceleration for the motor of the Z-direction." -msgstr "A aceleração máxima do motor na direção Z." +msgstr "A aceleração máxima do motor da direção Z." #: fdmprinter.def.json msgctxt "machine_max_acceleration_e label" msgid "Maximum Filament Acceleration" -msgstr "Aceleração máxima do filamento" +msgstr "Aceleração Máxima do Filamento" #: fdmprinter.def.json msgctxt "machine_max_acceleration_e description" @@ -569,7 +546,7 @@ msgstr "A aceleração máxima do motor do filamento." #: fdmprinter.def.json msgctxt "machine_acceleration label" msgid "Default Acceleration" -msgstr "Aceleração predefinida" +msgstr "Aceleração Predefinida" #: fdmprinter.def.json msgctxt "machine_acceleration description" @@ -579,38 +556,39 @@ msgstr "A aceleração predefinida do movimento da cabeça de impressão." #: fdmprinter.def.json msgctxt "machine_max_jerk_xy label" msgid "Default X-Y Jerk" -msgstr "Solavanco X-Y predefinido" +msgstr "Jerk X-Y Predefinido" #: fdmprinter.def.json msgctxt "machine_max_jerk_xy description" msgid "Default jerk for movement in the horizontal plane." -msgstr "O solavanco predefinido do movimento no plano horizontal." +msgstr "O jerk predefinido do movimento no plano horizontal." #: fdmprinter.def.json msgctxt "machine_max_jerk_z label" msgid "Default Z Jerk" -msgstr "Solavanco Z predefinido" +msgstr "Jerk Z Predefinido" #: fdmprinter.def.json msgctxt "machine_max_jerk_z description" msgid "Default jerk for the motor of the Z-direction." -msgstr "O solavanco predefinido do motor na direção Z." +msgstr "O jerk predefinido do motor da direção Z." #: fdmprinter.def.json msgctxt "machine_max_jerk_e label" msgid "Default Filament Jerk" -msgstr "Solavanco predefinido do filamento" +msgstr "Jerk Predefinido do Filamento" #: fdmprinter.def.json msgctxt "machine_max_jerk_e description" msgid "Default jerk for the motor of the filament." -msgstr "O solavanco predefinido do motor do filamento." +msgstr "O jerk predefinido do motor do filamento." #: fdmprinter.def.json msgctxt "machine_minimum_feedrate label" msgid "Minimum Feedrate" -msgstr "Velocidade mínima de alimentação" +msgstr "Velocidade Mínima de Alimentação" +# english string correct? #: fdmprinter.def.json msgctxt "machine_minimum_feedrate description" msgid "The minimal movement speed of the print head." @@ -623,443 +601,327 @@ msgstr "Qualidade" #: fdmprinter.def.json msgctxt "resolution description" -msgid "" -"All settings that influence the resolution of the print. These settings have " -"a large impact on the quality (and print time)" -msgstr "Todas as definições que influenciam a resolução da impressão. Estas definições têm um grande impacto na qualidade (e no tempo de impressão)." +msgid "All settings that influence the resolution of the print. These settings have a large impact on the quality (and print time)" +msgstr "Todas as definições que influenciam a resolução da impressão. Estas definições têm um grande impacto na qualidade. (e no tempo de impressão)." #: fdmprinter.def.json msgctxt "layer_height label" msgid "Layer Height" -msgstr "Altura da camada" +msgstr "Espessura das Camadas (Layers)" +# Valores? ou numeros? ou espessura? +# mais elevadas ou maiores? #: fdmprinter.def.json msgctxt "layer_height description" -msgid "" -"The height of each layer in mm. Higher values produce faster prints in lower " -"resolution, lower values produce slower prints in higher resolution." -msgstr "A altura de cada camada em mm. Valores mais elevados produzem impressões mais rápidas com menor resolução e valores mais baixos produzem impressões mais lentas com maior resolução." +msgid "The height of each layer in mm. Higher values produce faster prints in lower resolution, lower values produce slower prints in higher resolution." +msgstr "A espessura de cada camada em milímetros. Espessuras maiores produzem impressões rápidas com baixa resolução, e, espessuras pequenas, produzem impressões mais lentas mas com uma maior resolução/qualidade." #: fdmprinter.def.json msgctxt "layer_height_0 label" msgid "Initial Layer Height" -msgstr "Altura da camada inicial" +msgstr "Espessura da Camada Inicial" #: fdmprinter.def.json msgctxt "layer_height_0 description" -msgid "" -"The height of the initial layer in mm. A thicker initial layer makes " -"adhesion to the build plate easier." -msgstr "A altura da camada inicial em mm. Uma camada inicial mais espessa facilita a aderência à placa de construção." - -#: fdmprinter.def.json -msgctxt "slicing_tolerance label" -msgid "Slicing Tolerance" -msgstr "Tolerância da segmentação" - -#: fdmprinter.def.json -msgctxt "slicing_tolerance description" -msgid "" -"How to slice layers with diagonal surfaces. The areas of a layer can be " -"generated based on where the middle of the layer intersects the surface " -"(Middle). Alternatively each layer can have the areas which fall inside of " -"the volume throughout the height of the layer (Exclusive) or a layer has the " -"areas which fall inside anywhere within the layer (Inclusive). Exclusive " -"retains the most details, Inclusive makes for the best fit and Middle takes " -"the least time to process." -msgstr "Como segmentar camadas com superfícies diagonais. As áreas de uma camada podem ser geradas com base no local onde o centro da camada se cruza com a superfície (Centro). Como alternativa, cada camada pode conter as áreas que se encontram no interior do volume da altura da camada (Exclusivo) ou as áreas que se encontram no interior de qualquer parte da camada (Inclusivo). A opção Exclusivo retém o maior número de detalhes, a opção Inclusivo garante o melhor ajuste e a opção Centro tem o menor tempo de processamento." - -#: fdmprinter.def.json -msgctxt "slicing_tolerance option middle" -msgid "Middle" -msgstr "Centro" - -#: fdmprinter.def.json -msgctxt "slicing_tolerance option exclusive" -msgid "Exclusive" -msgstr "Exclusivo" - -#: fdmprinter.def.json -msgctxt "slicing_tolerance option inclusive" -msgid "Inclusive" -msgstr "Inclusivo" +msgid "The height of the initial layer in mm. A thicker initial layer makes adhesion to the build plate easier." +msgstr "A espessura da camada inicial em milímetros. Uma camada inicial mais espessa facilita a aderência à base de construção." +# rever! +# Diâmetro da linha? +# ou +# Largura da linha? #: fdmprinter.def.json msgctxt "line_width label" msgid "Line Width" -msgstr "Largura da linha" +msgstr "Diâmetro da Linha" #: fdmprinter.def.json msgctxt "line_width description" -msgid "" -"Width of a single line. Generally, the width of each line should correspond " -"to the width of the nozzle. However, slightly reducing this value could " -"produce better prints." -msgstr "A largura de uma única linha. Normalmente, a largura de cada linha deve corresponder à largura do bocal. No entanto, reduzir ligeiramente este valor pode produzir melhores impressões." +msgid "Width of a single line. Generally, the width of each line should correspond to the width of the nozzle. However, slightly reducing this value could produce better prints." +msgstr "O diâmetro (largura) de uma única linha. Normalmente, o diâmetro de cada linha deve corresponder ao diâmetro do nozzle. No entanto, reduzir ligeiramente este valor pode produzir melhores impressões." #: fdmprinter.def.json msgctxt "wall_line_width label" msgid "Wall Line Width" -msgstr "Largura da linha de parede" +msgstr "Diâmetro Linha Parede" #: fdmprinter.def.json msgctxt "wall_line_width description" msgid "Width of a single wall line." -msgstr "A largura de uma única linha de parede." +msgstr "O diâmetro de uma única linha de parede." #: fdmprinter.def.json msgctxt "wall_line_width_0 label" msgid "Outer Wall Line Width" -msgstr "Largura da linha de parede externa" +msgstr "Diâmetro Linha Parede Exterior" #: fdmprinter.def.json msgctxt "wall_line_width_0 description" -msgid "" -"Width of the outermost wall line. By lowering this value, higher levels of " -"detail can be printed." -msgstr "A largura da linha de parede mais externa. Ao reduzir este valor, é possível imprimir com maior nível de detalhe." +msgid "Width of the outermost wall line. By lowering this value, higher levels of detail can be printed." +msgstr "O diâmetro da linha de parede mais exterior. Ao reduzir este valor, é possível imprimir com maior nível de detalhe." #: fdmprinter.def.json msgctxt "wall_line_width_x label" msgid "Inner Wall(s) Line Width" -msgstr "Largura da linha de parede(s) interna" +msgstr "Diâmetro Linha Parede(s) Interior" #: fdmprinter.def.json msgctxt "wall_line_width_x description" -msgid "" -"Width of a single wall line for all wall lines except the outermost one." -msgstr "A largura de uma única linha de parede para todas as linhas de parede exceto a mais externa." - -#: fdmprinter.def.json -msgctxt "roofing_line_width label" -msgid "Top Surface Skin Line Width" -msgstr "Largura da linha de revestimento da superfície superior" - -#: fdmprinter.def.json -msgctxt "roofing_line_width description" -msgid "Width of a single line of the areas at the top of the print." -msgstr "A largura de uma única linha das áreas na parte superior da impressão." +msgid "Width of a single wall line for all wall lines except the outermost one." +msgstr "O diâmetro de uma única linha de parede para todas as linhas de parede excepto a mais exterior." #: fdmprinter.def.json msgctxt "skin_line_width label" msgid "Top/Bottom Line Width" -msgstr "Largura da linha superior/inferior" +msgstr "Diâmetro Linha Superior / Inferior" #: fdmprinter.def.json msgctxt "skin_line_width description" msgid "Width of a single top/bottom line." -msgstr "A largura de uma única linha superior/inferior." +msgstr "O diâmetro de uma única linha das superfícies superior/inferior." #: fdmprinter.def.json msgctxt "infill_line_width label" msgid "Infill Line Width" -msgstr "Largura da linha de preenchimento" +msgstr "Diâmetro Linha Enchimento" #: fdmprinter.def.json msgctxt "infill_line_width description" msgid "Width of a single infill line." -msgstr "A largura de uma única linha de preenchimento." +msgstr "O diâmetro de uma única linha de enchimento." #: fdmprinter.def.json msgctxt "skirt_brim_line_width label" msgid "Skirt/Brim Line Width" -msgstr "Largura da linha de contorno/borda" +msgstr "Diâmetro Linha Contorno / Aba" #: fdmprinter.def.json msgctxt "skirt_brim_line_width description" msgid "Width of a single skirt or brim line." -msgstr "A largura de uma única linha de contorno ou borda." +msgstr "O diâmetro de uma única linha do contorno ou da aba." #: fdmprinter.def.json msgctxt "support_line_width label" msgid "Support Line Width" -msgstr "Largura da linha de suporte" +msgstr "Diâmetro Linha Suportes" #: fdmprinter.def.json msgctxt "support_line_width description" msgid "Width of a single support structure line." -msgstr "A largura de uma única linha de estrutura de suporte." +msgstr "O diâmetro de uma única linha da estrutura de suporte." #: fdmprinter.def.json msgctxt "support_interface_line_width label" msgid "Support Interface Line Width" -msgstr "Largura da linha da interface de suporte" +msgstr "Diâmetro Linha Interface Suporte" #: fdmprinter.def.json msgctxt "support_interface_line_width description" msgid "Width of a single line of support roof or floor." -msgstr "A largura de uma única linha de piso ou teto de suporte." +msgstr "O diâmetro de uma única linha do chão ou tecto de suporte." #: fdmprinter.def.json msgctxt "support_roof_line_width label" msgid "Support Roof Line Width" -msgstr "Largura da linha do teto de suporte" +msgstr "Diâmetro Linha Tecto Suporte" #: fdmprinter.def.json msgctxt "support_roof_line_width description" msgid "Width of a single support roof line." -msgstr "A largura de uma única linha de teto de suporte." +msgstr "O diâmetro de uma única linha do tecto de suporte." #: fdmprinter.def.json msgctxt "support_bottom_line_width label" msgid "Support Floor Line Width" -msgstr "Largura da linha do piso de suporte" +msgstr "Diâmetro Linha Piso Suporte" #: fdmprinter.def.json msgctxt "support_bottom_line_width description" msgid "Width of a single support floor line." -msgstr "A largura de uma única linha de piso de suporte." +msgstr "O diâmetro de uma única linha do piso de suporte." #: fdmprinter.def.json msgctxt "prime_tower_line_width label" msgid "Prime Tower Line Width" -msgstr "Largura da linha da torre de preparação" +msgstr "Diâmetro Linha Torre Preparação" #: fdmprinter.def.json msgctxt "prime_tower_line_width description" msgid "Width of a single prime tower line." -msgstr "A largura de uma única linha da torre de preparação." +msgstr "O diâmetro de uma única linha da torre de preparação." #: fdmprinter.def.json msgctxt "initial_layer_line_width_factor label" msgid "Initial Layer Line Width" -msgstr "Largura da linha da camada inicial" +msgstr "Diâmetro Linha Camada Inicial" #: fdmprinter.def.json msgctxt "initial_layer_line_width_factor description" -msgid "" -"Multiplier of the line width on the first layer. Increasing this could " -"improve bed adhesion." -msgstr "Multiplicador da largura da linha na primeira camada. Aumentar a largura poderá melhorar a aderência à base." +msgid "Multiplier of the line width on the first layer. Increasing this could improve bed adhesion." +msgstr "Multiplicador do diâmetro da linha da camada inicial. Aumentar o diâmetro poderá melhorar a aderência à base de construção." #: fdmprinter.def.json msgctxt "shell label" msgid "Shell" -msgstr "Cobertura" +msgstr "Invólucro" #: fdmprinter.def.json msgctxt "shell description" msgid "Shell" -msgstr "Cobertura" +msgstr "Invólucro" #: fdmprinter.def.json msgctxt "wall_extruder_nr label" msgid "Wall Extruder" -msgstr "Extrusora de parede" +msgstr "Extrusor Paredes" +# Este é utilizado em extrusões múltiplas. ?? +# Definição utilizada com múltiplos extrusores. ?? +# Definição para múltiplos extrusores. #: fdmprinter.def.json msgctxt "wall_extruder_nr description" -msgid "" -"The extruder train used for printing the walls. This is used in multi-" -"extrusion." -msgstr "A máquina de extrusão utilizada para imprimir as paredes. Esta é utilizada em extrusões múltiplas." +msgid "The extruder train used for printing the walls. This is used in multi-extrusion." +msgstr "O núcleo de extrusão utilizado para imprimir as paredes. Definição usada com múltiplos extrusores." #: fdmprinter.def.json msgctxt "wall_0_extruder_nr label" msgid "Outer Wall Extruder" -msgstr "Extrusora de parede externa" +msgstr "Extrusor Parede Exterior" #: fdmprinter.def.json msgctxt "wall_0_extruder_nr description" -msgid "" -"The extruder train used for printing the outer wall. This is used in multi-" -"extrusion." -msgstr "A máquina de extrusão utilizada para imprimir a parede externa. Esta é utilizada em extrusões múltiplas." +msgid "The extruder train used for printing the outer wall. This is used in multi-extrusion." +msgstr "O núcleo de extrusão utilizado para imprimir a parede exterior. Definição usada com múltiplos extrusores." #: fdmprinter.def.json msgctxt "wall_x_extruder_nr label" msgid "Inner Wall Extruder" -msgstr "Extrusora de parede interna" +msgstr "Extrusor Paredes Interiores" #: fdmprinter.def.json msgctxt "wall_x_extruder_nr description" -msgid "" -"The extruder train used for printing the inner walls. This is used in multi-" -"extrusion." -msgstr "A máquina de extrusão utilizada para imprimir as paredes internas. Esta é utilizada em extrusões múltiplas." +msgid "The extruder train used for printing the inner walls. This is used in multi-extrusion." +msgstr "O núcleo de extrusão utilizado para imprimir as paredes interiores. Definição usada com múltiplos extrusores." #: fdmprinter.def.json msgctxt "wall_thickness label" msgid "Wall Thickness" -msgstr "Espessura das paredes" +msgstr "Espessura das Paredes" #: fdmprinter.def.json msgctxt "wall_thickness description" -msgid "" -"The thickness of the walls in the horizontal direction. This value divided " -"by the wall line width defines the number of walls." -msgstr "A espessura das paredes na direção horizontal. Este valor, dividido pela largura da linha de parede, define o número de paredes." +msgid "The thickness of the walls in the horizontal direction. This value divided by the wall line width defines the number of walls." +msgstr "A espessura das paredes na direção horizontal. Este valor, dividido pelo diâmetro da linha de parede, define o número de paredes." #: fdmprinter.def.json msgctxt "wall_line_count label" msgid "Wall Line Count" -msgstr "Contagem de linhas de parede" +msgstr "Número Linhas Paredes" #: fdmprinter.def.json msgctxt "wall_line_count description" -msgid "" -"The number of walls. When calculated by the wall thickness, this value is " -"rounded to a whole number." -msgstr "O número de paredes. Quando calculado através da espessura da parede, este valor é arredondado para um número inteiro." +msgid "The number of walls. When calculated by the wall thickness, this value is rounded to a whole number." +msgstr "O número de paredes. Quando calculado através da espessura das paredes, este valor é arredondado para um número inteiro." #: fdmprinter.def.json msgctxt "wall_0_wipe_dist label" msgid "Outer Wall Wipe Distance" -msgstr "Distância de limpeza da parede externa" +msgstr "Distância Limpeza Parede Exterior" #: fdmprinter.def.json msgctxt "wall_0_wipe_dist description" -msgid "" -"Distance of a travel move inserted after the outer wall, to hide the Z seam " -"better." -msgstr "A distância de um movimento de deslocação inserido depois da parede externa para ocultar melhor a costura Z." +msgid "Distance of a travel move inserted after the outer wall, to hide the Z seam better." +msgstr "A distância de um movimento de deslocação inserido depois da parede exterior, para ocultar melhor a junta Z." #: fdmprinter.def.json msgctxt "roofing_extruder_nr label" msgid "Top Surface Skin Extruder" -msgstr "Extrusora de revestimento da superfície superior" +msgstr "Extrusor Revestimento Superior" #: fdmprinter.def.json msgctxt "roofing_extruder_nr description" -msgid "" -"The extruder train used for printing the top most skin. This is used in " -"multi-extrusion." -msgstr "A máquina de extrusão utilizada para imprimir o revestimento superior. Esta é utilizada em extrusões múltiplas." +msgid "The extruder train used for printing the top most skin. This is used in multi-extrusion." +msgstr "O núcleo de extrusão utilizado para imprimir a(s) camada(s) de revestimento das superfícies mais superiores. Definição usada com múltiplos extrusores." #: fdmprinter.def.json msgctxt "roofing_layer_count label" msgid "Top Surface Skin Layers" -msgstr "Camadas de revestimento da superfície superior" +msgstr "Camadas Revestimento Superior" #: fdmprinter.def.json msgctxt "roofing_layer_count description" -msgid "" -"The number of top most skin layers. Usually only one top most layer is " -"sufficient to generate higher quality top surfaces." -msgstr "O número de camadas de revestimento superiores. Por norma, uma só camada superior é suficiente para gerar superfícies superiores de maior qualidade." - -#: fdmprinter.def.json -msgctxt "roofing_pattern label" -msgid "Top Surface Skin Pattern" -msgstr "Padrão do revestimento da superfície superior" - -#: fdmprinter.def.json -msgctxt "roofing_pattern description" -msgid "The pattern of the top most layers." -msgstr "O padrão das camadas superiores." - -#: fdmprinter.def.json -msgctxt "roofing_pattern option lines" -msgid "Lines" -msgstr "Linhas" - -#: fdmprinter.def.json -msgctxt "roofing_pattern option concentric" -msgid "Concentric" -msgstr "Concêntrico" - -#: fdmprinter.def.json -msgctxt "roofing_pattern option zigzag" -msgid "Zig Zag" -msgstr "Ziguezague" - -#: fdmprinter.def.json -msgctxt "roofing_angles label" -msgid "Top Surface Skin Line Directions" -msgstr "Direções da linha de revestimento da superfície superior" - -#: fdmprinter.def.json -msgctxt "roofing_angles description" -msgid "" -"A list of integer line directions to use when the top surface skin layers " -"use the lines or zig zag pattern. Elements from the list are used " -"sequentially as the layers progress and when the end of the list is reached, " -"it starts at the beginning again. The list items are separated by commas and " -"the whole list is contained in square brackets. Default is an empty list " -"which means use the traditional default angles (45 and 135 degrees)." -msgstr "Uma lista de valores inteiros relativos às direções de linha a utilizar quando as camadas de revestimento da superfície superior utilizarem o padrão de linhas ou ziguezague. Os elementos 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 é disposta entre parênteses retos. A predefinição é uma lista vazia, cujas médias utilizam os ângulos predefinidos tradicionais (45 e 135 graus)." +msgid "The number of top most skin layers. Usually only one top most layer is sufficient to generate higher quality top surfaces." +msgstr "O número de camadas de revestimento da superfície superior. Por norma, uma só camada superior é suficiente para gerar superfícies superiores de maior qualidade." #: fdmprinter.def.json msgctxt "top_bottom_extruder_nr label" msgid "Top/Bottom Extruder" -msgstr "Extrusora superior/inferior" +msgstr "Extrusor Superior / Inferior" #: fdmprinter.def.json msgctxt "top_bottom_extruder_nr description" -msgid "" -"The extruder train used for printing the top and bottom skin. This is used " -"in multi-extrusion." -msgstr "A máquina de extrusão utilizada para imprimir o revestimento superior e inferior. Esta é utilizada em extrusões múltiplas." +msgid "The extruder train used for printing the top and bottom skin. This is used in multi-extrusion." +msgstr "O núcleo de extrusão utilizado para imprimir as camadas superiores e inferiores da impressão. Definição usada com múltiplos extrusores." #: fdmprinter.def.json msgctxt "top_bottom_thickness label" msgid "Top/Bottom Thickness" -msgstr "Espessura superior/inferior" +msgstr "Espessura Superior / Inferior" #: fdmprinter.def.json msgctxt "top_bottom_thickness description" -msgid "" -"The thickness of the top/bottom layers in the print. This value divided by " -"the layer height defines the number of top/bottom layers." -msgstr "A espessura das camadas superiores/inferiores na impressão. Este valor, dividido pela altura da camada, define o número de camadas superiores/inferiores." +msgid "The thickness of the top/bottom layers in the print. This value divided by the layer height defines the number of top/bottom layers." +msgstr "A espessura total das camadas superiores e inferiores na impressão. Este valor, dividido pela Espessura das Camadas, define o número de camadas superiores / inferiores." #: fdmprinter.def.json msgctxt "top_thickness label" msgid "Top Thickness" -msgstr "Espessura superior" +msgstr "Espessura Superior" #: fdmprinter.def.json msgctxt "top_thickness description" -msgid "" -"The thickness of the top layers in the print. This value divided by the " -"layer height defines the number of top layers." -msgstr "A espessura das camadas superiores na impressão. Este valor, dividido pela altura da camada, define o número de camadas superiores." +msgid "The thickness of the top layers in the print. This value divided by the layer height defines the number of top layers." +msgstr "A espessura total das camadas superiores na impressão. Este valor, dividido pela Espessura das Camadas, define o número de camadas superiores." #: fdmprinter.def.json msgctxt "top_layers label" msgid "Top Layers" -msgstr "Camadas superiores" +msgstr "Camadas Superiores" #: fdmprinter.def.json msgctxt "top_layers description" -msgid "" -"The number of top layers. When calculated by the top thickness, this value " -"is rounded to a whole number." -msgstr "O número de camadas superiores. Quando calculado através da espessura superior, este valor é arredondado para um número inteiro." +msgid "The number of top layers. When calculated by the top thickness, this value is rounded to a whole number." +msgstr "O número de camadas superiores. Quando calculado através da Espessura Superior, este valor é arredondado para um número inteiro." #: fdmprinter.def.json msgctxt "bottom_thickness label" msgid "Bottom Thickness" -msgstr "Espessura inferior" +msgstr "Espessura Inferior" #: fdmprinter.def.json msgctxt "bottom_thickness description" -msgid "" -"The thickness of the bottom layers in the print. This value divided by the " -"layer height defines the number of bottom layers." -msgstr "A espessura das camadas inferiores na impressão. Este valor, dividido pela altura da camada, define o número de camadas inferiores." +msgid "The thickness of the bottom layers in the print. This value divided by the layer height defines the number of bottom layers." +msgstr "A espessura total das camadas inferiores na impressão. Este valor, dividido pela Espessura das Camadas, define o número de camadas inferiores." #: fdmprinter.def.json msgctxt "bottom_layers label" msgid "Bottom Layers" -msgstr "Camadas inferiores" +msgstr "Camadas Inferiores" #: fdmprinter.def.json 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 pela espessura inferior, este valor é arredondado para um número inteiro." +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 "top_bottom_pattern label" msgid "Top/Bottom Pattern" -msgstr "Padrão superior/inferior" +msgstr "Padrão Superior / Inferior" #: fdmprinter.def.json msgctxt "top_bottom_pattern description" msgid "The pattern of the top/bottom layers." -msgstr "O padrão das camadas superiores/inferiores." +msgstr "O padrão geométrico das camadas superiores / inferiores." #: fdmprinter.def.json msgctxt "top_bottom_pattern option lines" @@ -1076,15 +938,17 @@ msgctxt "top_bottom_pattern option zigzag" msgid "Zig Zag" msgstr "Ziguezague" +# Is the English string correct? meaning? #: fdmprinter.def.json msgctxt "top_bottom_pattern_0 label" msgid "Bottom Pattern Initial Layer" -msgstr "Camada inicial de padrão inferior" +msgstr "Padrão da Base na Camada Inicial" +# Is the English string correct? meaning? #: fdmprinter.def.json msgctxt "top_bottom_pattern_0 description" msgid "The pattern on the bottom of the print on the first layer." -msgstr "O padrão na parte inferior da primeira camada." +msgstr "O padrão geométrico da base da peça na camada inicial." #: fdmprinter.def.json msgctxt "top_bottom_pattern_0 option lines" @@ -1104,104 +968,103 @@ msgstr "Ziguezague" #: fdmprinter.def.json msgctxt "skin_angles label" msgid "Top/Bottom Line Directions" -msgstr "Direções de linha superior/inferior" +msgstr "Direções Linha Superior / Inferior" #: fdmprinter.def.json msgctxt "skin_angles description" -msgid "" -"A list of integer line directions to use when the top/bottom layers use the " -"lines or zig zag pattern. Elements from the list are used sequentially as " -"the layers progress and when the end of the list is reached, it starts at " -"the beginning again. The list items are separated by commas and the whole " -"list is contained in square brackets. Default is an empty list which means " -"use the traditional default angles (45 and 135 degrees)." -msgstr "Uma lista de valores inteiros relativos às direções de linha a utilizar quando as camadas superiores/inferiores utilizarem o padrão de linhas ou ziguezague. Os elementos 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 é disposta entre parênteses retos. A predefinição é uma lista vazia, cujas médias utilizam os ângulos predefinidos tradicionais (45 e 135 graus)." +msgid "A list of integer line directions to use when the top/bottom layers use the lines or zig zag pattern. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the traditional default angles (45 and 135 degrees)." +msgstr "Uma lista de ângulos (números inteiros) relativos às direções de linha a utilizar quando as camadas da superfície superiores/inferiores utilizarem os padrões de Linhas ou Ziguezague. 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 tradicionais (45 e 135 graus)." +# Inserção? +# desvio? +# Movimento? #: fdmprinter.def.json msgctxt "wall_0_inset label" msgid "Outer Wall Inset" -msgstr "Inserção de parede externa" +msgstr "Desvio Parede Exterior" #: fdmprinter.def.json msgctxt "wall_0_inset description" -msgid "" -"Inset applied to the path of the outer wall. If the outer wall is smaller " -"than the nozzle, and printed after the inner walls, use this offset to get " -"the hole in the nozzle to overlap with the inner walls instead of the " -"outside of the model." -msgstr "Inserção aplicada à trajetória da parede externa. Se a parede externa for menor que o bocal e impressa depois das paredes internas, utilize este desvio para que o orifício do bocal se sobreponha às paredes internas e não ao exterior do modelo." +msgid "Inset applied to the path of the outer wall. If the outer wall is smaller than the nozzle, and printed after the inner walls, use this offset to get the hole in the nozzle to overlap with the inner walls instead of the outside of the model." +msgstr "Desvio aplicado à trajetória da parede exterior. Se a parede exterior for menor que o nozzle e impressa depois das paredes interiores, utilize este desvio para que o buraco do nozzle se sobreponha às paredes interiores e não ao exterior do modelo." +# rever! +# ordem de -impressão- das paredes? +# incluir _Impressão_? +#: fdmprinter.def.json +msgctxt "optimize_wall_printing_order label" +msgid "Optimize Wall Printing Order" +msgstr "Otimizar Ordem Paredes" + +#: fdmprinter.def.json +msgctxt "optimize_wall_printing_order description" +msgid "Optimize the order in which walls are printed so as to reduce the number of retractions and the distance travelled. Most parts will benefit from this being enabled but some may actually take longer so please compare the print time estimates with and without optimization." +msgstr "Otimizar a ordem pela qual as paredes são impressas de forma a reduzir o número de retrações e a distância percorrida. A maioria das peças irá beneficiar com a ativação desta opção, mas algumas podem na realidade demorar mais tempo, portanto, por favor compare as estimativas do tempo de impressão com e sem otimização." + +# antes das interiores? #: fdmprinter.def.json msgctxt "outer_inset_first label" msgid "Outer Before Inner Walls" -msgstr "Paredes externas antes das internas" +msgstr "Paredes Exteriores Primeiro" #: fdmprinter.def.json msgctxt "outer_inset_first description" -msgid "" -"Prints walls in order of outside to inside when enabled. This can help " -"improve dimensional accuracy in X and Y when using a high viscosity plastic " -"like ABS; however it can decrease outer surface print quality, especially on " -"overhangs." -msgstr "Quando ativado, imprime paredes do exterior para o interior. Isto pode ajudar a melhorar a precisão dimensional em X e Y ao utilizar um plástico de alta viscosidade, como o ABS; no entanto, pode diminuir a qualidade de impressão da superfície externa, especialmente em saliências." +msgid "Prints walls in order of outside to inside when enabled. This can help improve dimensional accuracy in X and Y when using a high viscosity plastic like ABS; however it can decrease outer surface print quality, especially on overhangs." +msgstr "Quando ativado, imprime as paredes do exterior para o interior. Isto pode ajudar a melhorar a precisão dimensional em X e Y quando utilizar um plástico com alta viscosidade, como o ABS; no entanto, pode diminuir a qualidade de impressão da superfície exterior, especialmente em saliências." #: fdmprinter.def.json msgctxt "alternate_extra_perimeter label" msgid "Alternate Extra Wall" -msgstr "Alternar parede adicional" +msgstr "Alternar Parede Adicional" +# capturado? +# integrado? #: fdmprinter.def.json msgctxt "alternate_extra_perimeter description" -msgid "" -"Prints an extra wall at every other layer. This way infill gets caught " -"between these extra walls, resulting in stronger prints." -msgstr "Imprime uma parede adicional em camadas alternadas. Deste modo, o preenchimento é capturado entre estas paredes adicionais, resultando em impressões mais robustas." +msgid "Prints an extra wall at every other layer. This way infill gets caught between these extra walls, resulting in stronger prints." +msgstr "Imprimir uma parede adicional em camadas alternadas. Deste modo, o enchimento é \"capturado\" entre estas paredes adicionais, resultando em impressões mais robustas." #: fdmprinter.def.json msgctxt "travel_compensate_overlapping_walls_enabled label" msgid "Compensate Wall Overlaps" -msgstr "Compensar sobreposição de paredes" +msgstr "Compensar Sobreposição Paredes" #: fdmprinter.def.json msgctxt "travel_compensate_overlapping_walls_enabled description" -msgid "" -"Compensate the flow for parts of a wall being printed where there is already " -"a wall in place." -msgstr "Compensa o fluxo de peças de uma parede a ser impressa onde já existe uma parede." +msgid "Compensate the flow for parts of a wall being printed where there is already a wall in place." +msgstr "Compensar o fluxo em partes de uma parede a ser impressa, onde já exista uma parede." #: fdmprinter.def.json msgctxt "travel_compensate_overlapping_walls_0_enabled label" msgid "Compensate Outer Wall Overlaps" -msgstr "Compensar sobreposição de paredes externas" +msgstr "Compensar Sobreposição Paredes Exteriores" #: fdmprinter.def.json msgctxt "travel_compensate_overlapping_walls_0_enabled description" -msgid "" -"Compensate the flow for parts of an outer wall being printed where there is " -"already a wall in place." -msgstr "Compensa o fluxo de peças de uma parede externa a ser impressa onde já existe uma parede." +msgid "Compensate the flow for parts of an outer wall being printed where there is already a wall in place." +msgstr "Compensar o fluxo em partes de uma parede exterior a ser impressa, onde já exista uma parede." #: fdmprinter.def.json msgctxt "travel_compensate_overlapping_walls_x_enabled label" msgid "Compensate Inner Wall Overlaps" -msgstr "Compensar sobreposição de paredes internas" +msgstr "Compensar Sobreposição Paredes Interiores" #: fdmprinter.def.json msgctxt "travel_compensate_overlapping_walls_x_enabled description" -msgid "" -"Compensate the flow for parts of an inner wall being printed where there is " -"already a wall in place." -msgstr "Compensa o fluxo de peças de uma parede interna a ser impressa onde já existe uma parede." +msgid "Compensate the flow for parts of an inner wall being printed where there is already a wall in place." +msgstr "Compensar o fluxo em partes de uma parede interior a ser impressa, onde já exista uma parede." #: fdmprinter.def.json msgctxt "fill_perimeter_gaps label" msgid "Fill Gaps Between Walls" -msgstr "Preencher folgas entre paredes" +msgstr "Preencher Folgas Paredes" +# rever! +# onde nenhuma parede cabe #: fdmprinter.def.json msgctxt "fill_perimeter_gaps description" msgid "Fills the gaps between walls where no walls fit." -msgstr "Preenche as folgas entre paredes onde não é possível instalar paredes." +msgstr "Preencher as folgas entre paredes onde não é possível criar paredes." #: fdmprinter.def.json msgctxt "fill_perimeter_gaps option nowhere" @@ -1213,63 +1076,63 @@ msgctxt "fill_perimeter_gaps option everywhere" msgid "Everywhere" msgstr "Em todo o lado" +#: fdmprinter.def.json +msgctxt "filter_out_tiny_gaps label" +msgid "Filter Out Tiny Gaps" +msgstr "Eliminar pequenas folgas" + +#: fdmprinter.def.json +msgctxt "filter_out_tiny_gaps description" +msgid "Filter out tiny gaps to reduce blobs on outside of model." +msgstr "Eliminar pequenas folgas para reduzir blobs no exterior do modelo." + #: fdmprinter.def.json msgctxt "fill_outline_gaps label" msgid "Print Thin Walls" -msgstr "Imprimir paredes finas" +msgstr "Imprimir Paredes Finas" #: fdmprinter.def.json msgctxt "fill_outline_gaps description" -msgid "" -"Print pieces of the model which are horizontally thinner than the nozzle " -"size." -msgstr "Imprime peças do modelo que são horizontalmente mais finas do que o tamanho do bocal." +msgid "Print pieces of the model which are horizontally thinner than the nozzle size." +msgstr "Imprimir paredes do modelo que são mais finas horizontalmente do que o tamanho do nozzle." #: fdmprinter.def.json msgctxt "xy_offset label" msgid "Horizontal Expansion" -msgstr "Expansão horizontal" +msgstr "Expansão Horizontal" #: fdmprinter.def.json msgctxt "xy_offset description" -msgid "" -"Amount of offset applied to all polygons in each layer. Positive values can " -"compensate for too big holes; negative values can compensate for too small " -"holes." -msgstr "Quantidade de desvio aplicado a todos os polígonos em cada camada. Os valores positivos podem compensar orifícios demasiado grandes; os valores negativos podem compensar orifícios demasiado pequenos." +msgid "Amount of offset applied to all polygons in each layer. Positive values can compensate for too big holes; negative values can compensate for too small holes." +msgstr "Quantidade de desvio aplicado a todos os polígonos em cada camada.\n Valores positivos podem compensar buracos demasiado grandes; os valores negativos podem compensar buracos demasiado pequenos." #: fdmprinter.def.json msgctxt "xy_offset_layer_0 label" msgid "Initial Layer Horizontal Expansion" -msgstr "Expansão horizontal da camada inicial" +msgstr "Expansão Horizontal Camada Inicial" +# conhecido como? +# o chamado ? #: fdmprinter.def.json msgctxt "xy_offset_layer_0 description" -msgid "" -"Amount of offset applied to all polygons in the first layer. A negative " -"value can compensate for squishing of the first layer known as \"elephant's " -"foot\"." -msgstr "Quantidade de desvio aplicado a todos os polígonos na primeira camada. Um valor negativo pode compensar o esmagamento da primeira camada, conhecido como o \"pé de elefante\"." +msgid "Amount of offset applied to all polygons in the first layer. A negative value can compensate for squishing of the first layer known as \"elephant's foot\"." +msgstr "Quantidade de desvio aplicado a todos os polígonos na primeira camada.\n Um valor negativo pode compensar o \"esmagamento\" da camada inicial, conhecido como \"pé de elefante\"." #: fdmprinter.def.json msgctxt "z_seam_type label" msgid "Z Seam Alignment" -msgstr "Alinhamento da costura Z" +msgstr "Alinhamento da Junta-Z" +# adoptar? #: fdmprinter.def.json msgctxt "z_seam_type description" -msgid "" -"Starting point of each path in a layer. When paths in consecutive layers " -"start at the same point a vertical seam may show on the print. When aligning " -"these near a user specified location, the seam is easiest to remove. When " -"placed randomly the inaccuracies at the paths' start will be less " -"noticeable. When taking the shortest path the print will be quicker." -msgstr "Ponto inicial de cada trajetória numa camada. Quando as trajetórias das camadas consecutivas começam no mesmo ponto, pode ser apresentada uma costura vertical na impressão. Ao alinhá-las próximo a uma posição especificada pelo utilizador, é mais fácil remover a costura. Quando dispostas aleatoriamente, as imprecisões no início das trajetórias serão menos percetíveis. Ao adotar a trajetória mais curta, a impressão será mais rápida." +msgid "Starting point of each path in a layer. When paths in consecutive layers start at the same point a vertical seam may show on the print. When aligning these near a user specified location, the seam is easiest to remove. When placed randomly the inaccuracies at the paths' start will be less noticeable. When taking the shortest path the print will be quicker." +msgstr "Ponto inicial de cada trajetória de uma camada.\nQuando as trajetórias em camadas consecutivas começam no mesmo ponto, pode aparecer uma junta vertical na impressão.\n Ao alinhar o inicio das trajectórias próximo a uma posição definida pelo utilizador, é mais fácil remover a linha de junta. Quando dispostas aleatoriamente, as imprecisões no início das trajetórias serão menos perceptíveis. Ao adoptar a trajetória mais curta, a impressão será mais rápida." #: fdmprinter.def.json msgctxt "z_seam_type option back" msgid "User Specified" -msgstr "Especificado pelo utilizador" +msgstr "Definido pelo utilizador" #: fdmprinter.def.json msgctxt "z_seam_type option shortest" @@ -1281,143 +1144,140 @@ msgctxt "z_seam_type option random" msgid "Random" msgstr "Aleatório" +# canto? ou esquina? angulo? +# acentuado? agudo? #: fdmprinter.def.json msgctxt "z_seam_type option sharpest_corner" msgid "Sharpest Corner" -msgstr "Canto mais acentuado" +msgstr "Canto mais Acentuado" #: fdmprinter.def.json msgctxt "z_seam_x label" msgid "Z Seam X" -msgstr "X da costura Z" +msgstr "X da Junta-Z" #: fdmprinter.def.json msgctxt "z_seam_x description" -msgid "" -"The X coordinate of the position near where to start printing each part in a " -"layer." +msgid "The X coordinate of the position near where to start printing each part in a layer." msgstr "A coordenada X da posição próxima do local onde a impressão de cada parte de uma camada será iniciada." #: fdmprinter.def.json msgctxt "z_seam_y label" msgid "Z Seam Y" -msgstr "Y da costura Z" +msgstr "Y da Junta-Z" #: fdmprinter.def.json msgctxt "z_seam_y description" -msgid "" -"The Y coordinate of the position near where to start printing each part in a " -"layer." +msgid "The Y coordinate of the position near where to start printing each part in a layer." msgstr "A coordenada Y da posição próxima do local onde a impressão de cada parte de uma camada será iniciada." +# rever! +# canto? esquina? angulo? #: fdmprinter.def.json msgctxt "z_seam_corner label" msgid "Seam Corner Preference" -msgstr "Preferência de canto da costura" +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 costura. Nenhum significa que os cantos não influenciam a posição da costura. Ocultar costura torna mais provável que esta surja num canto interno. Expor costura torna mais provável que esta surja num canto externo. Ocultar ou expor costura torna mais provável que esta surja num canto interno 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." +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." #: fdmprinter.def.json msgctxt "z_seam_corner option z_seam_corner_none" msgid "None" msgstr "Nenhum" +# rever! +# ocultar? esconder? #: fdmprinter.def.json msgctxt "z_seam_corner option z_seam_corner_inner" msgid "Hide Seam" -msgstr "Ocultar costura" +msgstr "Ocultar Junta" +# rever! +# expor? mostrar? #: fdmprinter.def.json msgctxt "z_seam_corner option z_seam_corner_outer" msgid "Expose Seam" -msgstr "Expor costura" +msgstr "Expor Junta" +# rever! +# ocultar ou esconder? #: fdmprinter.def.json msgctxt "z_seam_corner option z_seam_corner_any" msgid "Hide or Expose Seam" -msgstr "Ocultar ou expor costura" +msgstr "Ocultar ou Expor Junta" #: fdmprinter.def.json msgctxt "z_seam_relative label" msgid "Z Seam Relative" -msgstr "Relativo à costura Z" +msgstr "Relativo à Junta-Z" #: fdmprinter.def.json 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 costura Z são relativas ao centro de cada peça. Quando desativado, as coordenadas definem uma posição absoluta na placa de construção." +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 pequenas folgas Z" +msgstr "Ignorar Pequenos 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 pequenas folgas verticais, pode ser gasto cerca de 5% de tempo de cálculo adicional na criação de um revestimento superior e inferior nessas folgas reduzidas. Nesse caso, desative esta definição." +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." #: fdmprinter.def.json msgctxt "skin_outline_count label" msgid "Extra Skin Wall Count" -msgstr "Contagem de paredes de revestimento adicional" +msgstr "Paredes Revestimento Extra" +# rever! +# tetos ? tectos? +# iniciados? que começam? +# materialde enchimento? #: fdmprinter.def.json msgctxt "skin_outline_count description" -msgid "" -"Replaces the outermost part of the top/bottom pattern with a number of " -"concentric lines. Using one or two lines improves roofs that start on infill " -"material." -msgstr "Substitui a parte mais externa do padrão superior/inferior por várias linhas concêntricas. Utilizar uma ou duas linhas melhora os tetos iniciados com material de preenchimento." +msgid "Replaces the outermost part of the top/bottom pattern with a number of concentric lines. Using one or two lines improves roofs that start on infill material." +msgstr "Substitui a parte mais exterior do padrão superior/inferior por um número de linhas concêntricas. Usar uma ou duas linhas melhora os tectos que começam no material de enchimento." #: fdmprinter.def.json msgctxt "ironing_enabled label" msgid "Enable Ironing" -msgstr "Ativar engomagem" +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 "Passa novamente sobre a superfície superior, mas sem extrudir material. O objetivo é derreter mais o plástico na parte superior, criando uma superfície mais uniforme." +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." #: fdmprinter.def.json msgctxt "ironing_only_highest_layer label" msgid "Iron Only Highest Layer" -msgstr "Engomar apenas camada superior" +msgstr "Engomar Só Última Camada" #: fdmprinter.def.json msgctxt "ironing_only_highest_layer description" -msgid "" -"Only perform ironing on the very last layer of the mesh. This saves time if " -"the lower layers don't need a smooth surface finish." -msgstr "Engoma apenas a última camada de malha. Isto permite poupar tempo se as camadas inferiores não precisarem de um acabamento de superfície uniforme." +msgid "Only perform ironing on the very last layer of the mesh. This saves time if the lower layers don't need a smooth surface finish." +msgstr "Engomar apenas a última camada do modelo. Isto permite poupar tempo se as camadas inferiores não precisarem de ter um acabamento mais suave." #: fdmprinter.def.json msgctxt "ironing_pattern label" msgid "Ironing Pattern" -msgstr "Padrão de engomagem" +msgstr "Padrão de Engomar" #: fdmprinter.def.json msgctxt "ironing_pattern description" msgid "The pattern to use for ironing top surfaces." -msgstr "O padrão a utilizar para engomar as superfícies superiores." +msgstr "O padrão geométrico a utilizar para engomar as superfícies superiores." #: fdmprinter.def.json msgctxt "ironing_pattern option concentric" @@ -1432,64 +1292,62 @@ msgstr "Ziguezague" #: fdmprinter.def.json msgctxt "ironing_line_spacing label" msgid "Ironing Line Spacing" -msgstr "Espaçamento da linha de engomagem" +msgstr "Distância Linhas de Engomar" #: fdmprinter.def.json msgctxt "ironing_line_spacing description" msgid "The distance between the lines of ironing." -msgstr "A distância entre as linhas de engomagem." +msgstr "A distância entre as linhas de engomar." #: fdmprinter.def.json msgctxt "ironing_flow label" msgid "Ironing Flow" -msgstr "Fluxo de engomagem" +msgstr "Fluxo de Engomar" +# rever! +# filled - abastecido? cheio? #: fdmprinter.def.json msgctxt "ironing_flow description" -msgid "" -"The amount of material, relative to a normal skin line, to extrude during " -"ironing. Keeping the nozzle filled helps filling some of the crevices of the " -"top surface, but too much results in overextrusion and blips on the side of " -"the surface." -msgstr "A quantidade de material, em relação a uma linha de revestimento normal, a ser extrudido durante a engomagem. Manter o bocal abastecido ajuda a preencher algumas das fendas da superfície superior, mas o excesso de abastecimento resulta em sobre-extrusão e bolhas na parte lateral da superfície." +msgid "The amount of material, relative to a normal skin line, to extrude during ironing. Keeping the nozzle filled helps filling some of the crevices of the top surface, but too much results in overextrusion and blips on the side of the surface." +msgstr "A quantidade de material, em relação a uma linha de revestimento normal, a ser extrudido durante o processo de engomar. Manter o nozzle cheio ajuda a preencher algumas das fissuras da superfície superior, mas cheio de mais, provoca sobre-extrusão e pequenos pontos ou \"bolhas\" na parte lateral da superfície." #: fdmprinter.def.json msgctxt "ironing_inset label" msgid "Ironing Inset" -msgstr "Inserção de engomagem" +msgstr "Desvio Interior de Engomar" #: fdmprinter.def.json msgctxt "ironing_inset description" -msgid "" -"A distance to keep from the edges of the model. Ironing all the way to the " -"edge of the mesh may result in a jagged edge on your print." -msgstr "A distância a manter em relação às extremidades do modelo. Engomar até à extremidade da malha pode resultar numa extremidade irregular na sua impressão." +msgid "A distance to keep from the edges of the model. Ironing all the way to the edge of the mesh may result in a jagged edge on your print." +msgstr "A distância a manter em relação às extremidades do modelo. \"Engomar\" até à extremidade da superfície pode resultar em arestas irregulares na impressão." #: fdmprinter.def.json msgctxt "speed_ironing label" msgid "Ironing Speed" -msgstr "Velocidade de engomagem" +msgstr "Velocidade de Engomar" #: fdmprinter.def.json msgctxt "speed_ironing description" msgid "The speed at which to pass over the top surface." -msgstr "A velocidade de passagem sobre a superfície superior." +msgstr "A velocidade da passagem do nozzle (engomar) sobre a superfície superior." #: fdmprinter.def.json msgctxt "acceleration_ironing label" msgid "Ironing Acceleration" -msgstr "Aceleração de engomagem" +msgstr "Aceleração de Engomar" #: fdmprinter.def.json msgctxt "acceleration_ironing description" msgid "The acceleration with which ironing is performed." -msgstr "A aceleração com a qual a engomagem é efetuada." +msgstr "A aceleração com a qual se realiza o processo de engomar." #: fdmprinter.def.json msgctxt "jerk_ironing label" msgid "Ironing Jerk" -msgstr "Solavanco de engomagem" +msgstr "Jerk de Engomar" +# rever! +# A velocidade máxima da alteração da velocidade instantânea #: fdmprinter.def.json msgctxt "jerk_ironing description" msgid "The maximum instantaneous velocity change while performing ironing." @@ -1498,61 +1356,62 @@ msgstr "A mudança de velocidade instantânea máxima ao engomar." #: fdmprinter.def.json msgctxt "infill label" msgid "Infill" -msgstr "Preenchimento" +msgstr "Enchimento" #: fdmprinter.def.json msgctxt "infill description" msgid "Infill" -msgstr "Preenchimento" +msgstr "Enchimento" #: fdmprinter.def.json msgctxt "infill_extruder_nr label" msgid "Infill Extruder" -msgstr "Extrusora de preenchimento" +msgstr "Extrusor Enchimento" #: fdmprinter.def.json msgctxt "infill_extruder_nr description" -msgid "" -"The extruder train used for printing infill. This is used in multi-extrusion." -msgstr "A máquina de extrusão utilizada para imprimir o preenchimento. Esta é utilizada em extrusões múltiplas." +msgid "The extruder train used for printing infill. This is used in multi-extrusion." +msgstr "O núcleo de extrusão utilizado para imprimir o enchimento. Definição usada com múltiplos extrusores." #: fdmprinter.def.json msgctxt "infill_sparse_density label" msgid "Infill Density" -msgstr "Densidade de preenchimento" +msgstr "Densidade do Enchimento" #: fdmprinter.def.json msgctxt "infill_sparse_density description" msgid "Adjusts the density of infill of the print." -msgstr "Ajusta a densidade do preenchimento da impressão." +msgstr "Ajusta a densidade do enchimento da impressão." +# rever! +# Distância? espaço? intervalo? #: fdmprinter.def.json msgctxt "infill_line_distance label" msgid "Infill Line Distance" -msgstr "Distância da linha de preenchimento" +msgstr "Distância Linhas Enchimento" #: fdmprinter.def.json msgctxt "infill_line_distance description" -msgid "" -"Distance between the printed infill lines. This setting is calculated by the " -"infill density and the infill line width." -msgstr "A distância entre as linhas de preenchimento impressas. Esta definição é calculada através da densidade de preenchimento e da largura da linha de preenchimento." +msgid "Distance between the printed infill lines. This setting is calculated by the infill density and the infill line width." +msgstr "A distância entre as linhas de enchimento impressas. O valor desta definição é calculada através da densidade de enchimento e do diâmetro da linha de enchimento." #: fdmprinter.def.json msgctxt "infill_pattern label" msgid "Infill Pattern" -msgstr "Padrão de preenchimento" +msgstr "Padrão de Enchimento" +# of the print +# da impressão? da peça? +# A direção do +# No enchimento com Linha e Ziguezague a direção é invertida em camadas alternadas +# invertido? rodado? +# padrões - ?geometricos?? +# alterados? mudam? movidos? delocados? +# fornecer uma? permitir uma? #: fdmprinter.def.json msgctxt "infill_pattern description" -msgid "" -"The pattern of the infill material of the print. The line and zig zag infill " -"swap direction on alternate layers, reducing material cost. The grid, " -"triangle, tri-hexagon, cubic, octet, quarter cubic, cross and concentric " -"patterns are fully printed every layer. Cubic, quarter cubic and octet " -"infill change with every layer to provide a more equal distribution of " -"strength over each direction." -msgstr "O padrão do material de preenchimento da impressão. A direção de troca de preenchimento de linha e ziguezague em camadas alternadas, reduzindo os custos de material. Os padrões de grelha, triângulo, tri-hexágono, cubo, octeto, quarto cúbico, cruz e concêntrico são totalmente impressos em cada camada. Os preenchimentos cúbico, quarto cúbico e octeto são alterados a cada camada para fornecer uma distribuição mais uniforme da resistência em cada direção." +msgid "The pattern of the infill material of the print. The line and zig zag infill swap direction on alternate layers, reducing material cost. The grid, triangle, tri-hexagon, cubic, octet, quarter cubic, cross and concentric patterns are fully printed every layer. Cubic, quarter cubic and octet infill change with every layer to provide a more equal distribution of strength over each direction." +msgstr "O padrão geométrico do enchimento da impressão. A direção do enchimento com Linhas e Ziguezague é invertida em camadas alternadas, reduzindo os custos em material. Os padrões em Grelha, Triângulo, Tri-Hexágono, Cúbico, Octeto, Quarto Cúbico, Cruz e Concêntrico são totalmente impressos em cada camada. Os enchimentos Cúbico, Quarto Cúbico e Octeto são deslocados em cada camada para permitir uma distribuição mais uniforme da resistência em cada direção." #: fdmprinter.def.json msgctxt "infill_pattern option grid" @@ -1572,7 +1431,7 @@ msgstr "Triângulos" #: fdmprinter.def.json msgctxt "infill_pattern option trihexagon" msgid "Tri-Hexagon" -msgstr "Tri-hexágono" +msgstr "Tri-Hexágono" #: fdmprinter.def.json msgctxt "infill_pattern option cubic" @@ -1582,7 +1441,7 @@ msgstr "Cúbico" #: fdmprinter.def.json msgctxt "infill_pattern option cubicsubdiv" msgid "Cubic Subdivision" -msgstr "Subdivisão cúbica" +msgstr "Subdivisão Cúbica" #: fdmprinter.def.json msgctxt "infill_pattern option tetrahedral" @@ -1592,7 +1451,7 @@ msgstr "Octeto" #: fdmprinter.def.json msgctxt "infill_pattern option quarter_cubic" msgid "Quarter Cubic" -msgstr "Quarto cúbico" +msgstr "Quarto Cúbico" #: fdmprinter.def.json msgctxt "infill_pattern option concentric" @@ -1622,273 +1481,215 @@ msgstr "Cruz 3D" #: fdmprinter.def.json msgctxt "zig_zaggify_infill label" msgid "Connect Infill Lines" -msgstr "Ligar linhas de preenchimento" +msgstr "Ligar Linhas Enchimento" #: fdmprinter.def.json msgctxt "zig_zaggify_infill description" -msgid "" -"Connect the ends where the infill pattern meets the inner wall using a line " -"which follows the shape of the inner wall. Enabling this setting can make " -"the infill adhere to the walls better and reduce the effects of infill on " -"the quality of vertical surfaces. Disabling this setting reduces the amount " -"of material used." -msgstr "Liga as extremidades onde o padrão de preenchimento entra em contacto com a parede interna utilizando uma linha que acompanha a forma da parede interna. Ativar esta definição pode melhorar a aderência do preenchimento às paredes e reduzir os efeitos do preenchimento na qualidade das superfícies verticais. Desativar esta definição reduz a quantidade de material utilizado." +msgid "Connect the ends where the infill pattern meets the inner wall using a line which follows the shape of the inner wall. Enabling this setting can make the infill adhere to the walls better and reduce the effects of infill on the quality of vertical surfaces. Disabling this setting reduces the amount of material used." +msgstr "Ligar as extremidades onde o padrão de enchimento entra em contacto com a parede interior utilizando uma linha que acompanha a forma da parede interior. Ativar esta definição pode melhorar a adesão do enchimento às paredes e reduzir os efeitos do enchimento na qualidade das superfícies verticais. Desativar esta definição reduz a quantidade de material utilizado." #: fdmprinter.def.json msgctxt "infill_angles label" msgid "Infill Line Directions" -msgstr "Direções da linha de preenchimento" +msgstr "Direções Linhas Enchimento" #: fdmprinter.def.json msgctxt "infill_angles description" -msgid "" -"A list of integer line directions to use. Elements from the list are used " -"sequentially as the layers progress and when the end of the list is reached, " -"it starts at the beginning again. The list items are separated by commas and " -"the whole list is contained in square brackets. Default is an empty list " -"which means use the traditional default angles (45 and 135 degrees for the " -"lines and zig zag patterns and 45 degrees for all other patterns)." -msgstr "Uma lista de valores inteiros relativos às direções de linha a utilizar. Os elementos 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 é disposta entre parênteses retos. A predefinição é uma lista vazia, cujas médias utilizam os ângulos predefinidos tradicionais (45 e 135 graus para os padrões de linha e ziguezague e 45 graus para todos os restantes padrões)." +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the traditional default angles (45 and 135 degrees for the lines and zig zag patterns and 45 degrees for all other patterns)." +msgstr "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 tradicionais (45 e 135 graus para os padrões de Linhas ou Ziguezague e 45 graus para todos os outros padrões)." #: fdmprinter.def.json msgctxt "infill_offset_x label" msgid "Infill X Offset" -msgstr "Desvio X do preenchimento" +msgstr "Deslocar Enchimento em X" #: fdmprinter.def.json msgctxt "infill_offset_x description" -msgid "The infill pattern is offset this distance along the X axis." -msgstr "O padrão de preenchimento apresenta um desvio a esta distância ao longo do eixo X." +msgid "The infill pattern is moved this distance along the X axis." +msgstr "O padrão de preenchimento foi movido a esta distância ao longo do eixo X." +# Desvio? +# Delocar? deslocamento +# Mover? #: fdmprinter.def.json msgctxt "infill_offset_y label" msgid "Infill Y Offset" -msgstr "Desvio Y do preenchimento" +msgstr "Deslocar Enchimento em Y" #: fdmprinter.def.json msgctxt "infill_offset_y description" -msgid "The infill pattern is offset this distance along the Y axis." -msgstr "O padrão de preenchimento apresenta um desvio a esta distância ao longo do eixo Y." +msgid "The infill pattern is moved this distance along the Y axis." +msgstr "O padrão de preenchimento foi movido a esta distância ao longo do eixo Y." #: fdmprinter.def.json msgctxt "sub_div_rad_add label" msgid "Cubic Subdivision Shell" -msgstr "Cobertura de subdivisão cúbica" +msgstr "Invólucro Subdivisão Cúbica" #: fdmprinter.def.json msgctxt "sub_div_rad_add description" -msgid "" -"An addition to the radius from the center of each cube to check for the " -"boundary of the model, as to decide whether this cube should be subdivided. " -"Larger values lead to a thicker shell of small cubes near the boundary of " -"the model." -msgstr "Um acréscimo ao raio do centro de cada cubo para verificar os limites do modelo, de forma a decidir se este cubo deve ser subdividido. Valores mais elevados resultam numa cobertura mais espessa dos cubos pequenos próximos aos limites do modelo." +msgid "An addition to the radius from the center of each cube to check for the boundary of the model, as to decide whether this cube should be subdivided. Larger values lead to a thicker shell of small cubes near the boundary of the model." +msgstr "Um acréscimo ao raio a partir do centro de cada cubo para encontrar os limites do modelo, de forma a decidir se este cubo deve ser subdividido. Valores mais elevados resultam num invólucro mais espesso com cubos pequenos perto do limite do modelo." #: fdmprinter.def.json msgctxt "infill_overlap label" msgid "Infill Overlap Percentage" -msgstr "Percentagem de sobreposição do preenchimento" +msgstr "Sobreposição Enchimento (%)" #: fdmprinter.def.json msgctxt "infill_overlap 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 ligeira sobreposição permite que as paredes sejam ligadas firmemente ao preenchimento." +msgid "The amount of overlap between the infill and the walls as a percentage of the infill line width. A slight overlap allows the walls to connect firmly to the infill." +msgstr "A quantidade de sobreposição entre o preenchimento e as paredes, como percentagem de largura da linha de preenchimento. Uma ligeira sobreposição permite que as paredes sejam ligadas firmemente ao preenchimento." #: fdmprinter.def.json msgctxt "infill_overlap_mm label" msgid "Infill Overlap" -msgstr "Sobreposição do preenchimento" +msgstr "Sobreposição Enchimento (mm)" #: fdmprinter.def.json msgctxt "infill_overlap_mm description" -msgid "" -"The amount of overlap between the infill and the walls. A slight overlap " -"allows the walls to connect firmly to the infill." -msgstr "A quantidade de sobreposição entre o preenchimento e as paredes. Uma ligeira sobreposição permite que as paredes sejam ligadas firmemente ao preenchimento." +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 "Percentagem de sobreposição do revestimento" +msgstr "Sobreposição Revestimento (%)" #: fdmprinter.def.json msgctxt "skin_overlap description" -msgid "" -"The amount of overlap between the skin and the walls as a percentage of the " -"line width. A slight overlap allows the walls to connect firmly to the skin. " -"This is a percentage of the average line widths of the skin lines and the " -"innermost wall." -msgstr "A quantidade de sobreposição entre o revestimento e as paredes, como percentagem de largura da linha. Uma ligeira sobreposição permite que as paredes se liguem firmemente ao revestimento. Esta é uma percentagem das larguras médias de linha das linhas de revestimento e da parede mais interna." +msgid "The amount of overlap between the skin and the walls as a percentage of the skin line width. A slight overlap allows the walls to connect firmly to the skin. This is a percentage of the average line widths of the skin lines and the innermost wall." +msgstr "A quantidade de sobreposição entre o revestimento e as paredes, como percentagem de largura da linha de revestimento. Uma ligeira sobreposição permite que as paredes se liguem firmemente ao revestimento. Esta é uma percentagem das larguras médias de linha das linhas de revestimento e da parede mais interna." #: fdmprinter.def.json msgctxt "skin_overlap_mm label" msgid "Skin Overlap" -msgstr "Sobreposição de revestimento" +msgstr "Sobreposição Revestimento (mm)" #: fdmprinter.def.json msgctxt "skin_overlap_mm description" -msgid "" -"The amount of overlap between the skin and the walls. A slight overlap " -"allows the walls to connect firmly to the skin." -msgstr "A quantidade de sobreposição entre o revestimento e as paredes. Uma ligeira sobreposição permite que as paredes se liguem firmemente ao revestimento." +msgid "The amount of overlap between the skin and the walls. A slight overlap allows the walls to connect firmly to the skin." +msgstr "A distância em milímetros da sobreposição entre o revestimento e as paredes. Uma ligeira sobreposição permite que as paredes se liguem firmemente ao revestimento." #: fdmprinter.def.json msgctxt "infill_wipe_dist label" msgid "Infill Wipe Distance" -msgstr "Distância de limpeza do preenchimento" +msgstr "Distância Limpeza Enchimento" #: fdmprinter.def.json msgctxt "infill_wipe_dist description" -msgid "" -"Distance of a travel move inserted after every infill line, to make the " -"infill stick to the walls better. This option is similar to infill overlap, " -"but without extrusion and only on one end of the infill line." -msgstr "A distância de um movimento de deslocação inserido depois de cada linha de preenchimento, para melhorar a aderência do preenchimento às paredes. Esta opção é semelhante à sobreposição de preenchimento, mas sem extrusão e apenas numa das extremidades da linha de preenchimento." +msgid "Distance of a travel move inserted after every infill line, to make the infill stick to the walls better. This option is similar to infill overlap, but without extrusion and only on one end of the infill line." +msgstr "A distância de um movimento de deslocação inserido depois de cada linha de enchimento, para melhorar a união do enchimento às paredes. Esta opção é semelhante à sobreposição de enchimento, mas sem extrusão e apenas numa das extremidades da linha de enchimento." #: fdmprinter.def.json msgctxt "infill_sparse_thickness label" msgid "Infill Layer Thickness" -msgstr "Espessura da camada de preenchimento" +msgstr "Espessura Camada Enchimento" #: fdmprinter.def.json msgctxt "infill_sparse_thickness description" -msgid "" -"The thickness per layer of infill material. This value should always be a " -"multiple of the layer height and is otherwise rounded." -msgstr "A espessura por camada de material de preenchimento. Este valor deve sempre ser um múltiplo da altura da camada. Caso contrário, será arredondado." +msgid "The thickness per layer of infill material. This value should always be a multiple of the layer height and is otherwise rounded." +msgstr "A espessura por camada de material de enchimento. Este valor deve ser sempre um múltiplo da Espessura das Camadas, ou será arredondado." #: fdmprinter.def.json msgctxt "gradual_infill_steps label" msgid "Gradual Infill Steps" -msgstr "Passos de preenchimento gradual" +msgstr "Degraus Enchimento Gradual" #: fdmprinter.def.json msgctxt "gradual_infill_steps description" -msgid "" -"Number of times to reduce the infill density by half when getting further " -"below top surfaces. Areas which are closer to top surfaces get a higher " -"density, up to the Infill Density." -msgstr "O número de vezes que a densidade de preenchimento deve ser reduzida para metade ao alcançar superfícies superiores mais abaixo. As áreas que se encontram mais próximas das superfícies superiores obtêm uma maior densidade, até ao limite da Densidade de preenchimento." +msgid "Number of times to reduce the infill density by half when getting further below top surfaces. Areas which are closer to top surfaces get a higher density, up to the Infill Density." +msgstr "O número de vezes que a densidade de enchimento deve ser reduzida para metade ao alcançar superfícies superiores mais abaixo. As áreas que se encontram mais próximas das superfícies superiores têm uma maior densidade, até ao definido na Densidade de Enchimento." #: fdmprinter.def.json msgctxt "gradual_infill_step_height label" msgid "Gradual Infill Step Height" -msgstr "Altura do passo de preenchimento gradual" +msgstr "Altura do passo de enchimento gradual" #: fdmprinter.def.json msgctxt "gradual_infill_step_height description" -msgid "" -"The height of infill of a given density before switching to half the density." -msgstr "A altura de preenchimento de uma determinada densidade antes de mudar para metade da densidade." +msgid "The height of infill of a given density before switching to half the density." +msgstr "A altura de enchimento de uma determinada densidade antes de mudar para metade da densidade." #: fdmprinter.def.json msgctxt "infill_before_walls label" msgid "Infill Before Walls" -msgstr "Preenchimento antes das paredes" +msgstr "Enchimento antes das paredes" #: fdmprinter.def.json msgctxt "infill_before_walls description" -msgid "" -"Print the infill before printing the walls. Printing the walls first may " -"lead to more accurate walls, but overhangs print worse. Printing the infill " -"first leads to sturdier walls, but the infill pattern might sometimes show " -"through the surface." -msgstr "Imprime o preenchimento antes de imprimir as paredes. Imprimir as paredes em primeiro lugar pode resultar em paredes mais precisas, embora as saliências sejam impressas com menor qualidade. Imprimir o preenchimento em primeiro lugar resulta em paredes mais robustas, embora, por vezes, o padrão de preenchimento possa ser visto através da superfície." +msgid "Print the infill before printing the walls. Printing the walls first may lead to more accurate walls, but overhangs print worse. Printing the infill first leads to sturdier walls, but the infill pattern might sometimes show through the surface." +msgstr "Imprime o enchimento antes de imprimir as paredes. Imprimir as paredes em primeiro lugar pode resultar em paredes mais precisas, embora as saliências sejam impressas com menor qualidade. Imprimir o enchimento em primeiro lugar resulta em paredes mais robustas, embora, por vezes, o padrão geométrico de enchimento possa ser visto através da superfície." #: fdmprinter.def.json msgctxt "min_infill_area label" msgid "Minimum Infill Area" -msgstr "Área de preenchimento mínimo" +msgstr "Área de enchimento mínimo" #: fdmprinter.def.json msgctxt "min_infill_area description" msgid "Don't generate areas of infill smaller than this (use skin instead)." -msgstr "Não cria áreas de preenchimento mais reduzidas do que esta (em vez disso, utiliza o revestimento)." +msgstr "Não cria áreas de enchimento mais reduzidas do que esta (em vez disso, utiliza o revestimento)." #: fdmprinter.def.json msgctxt "skin_preshrink label" msgid "Skin Removal Width" -msgstr "Largura de remoção do revestimento" +msgstr "Largura Remoção Revestimento" #: fdmprinter.def.json msgctxt "skin_preshrink description" -msgid "" -"The largest width of skin areas which are to be removed. Every skin area " -"smaller than this value will disappear. This can help in limiting the amount " -"of time and material spent on printing top/bottom skin at slanted surfaces " -"in the model." +msgid "The largest width of skin areas which are to be removed. Every skin area smaller than this value will disappear. This can help in limiting the amount of time and material spent on printing top/bottom skin at slanted surfaces in the model." msgstr "A maior largura das áreas de revestimento a serem removidas. Todas as áreas de revestimento inferiores a este valor irão desaparecer. Isto pode ajudar a limitar a quantidade de tempo e material gastos na impressão do revestimento superior/inferior nas superfícies inclinadas do modelo." #: fdmprinter.def.json msgctxt "top_skin_preshrink label" msgid "Top Skin Removal Width" -msgstr "Largura de remoção do revestimento superior" +msgstr "Largura Remoção Revestimento Superior" #: fdmprinter.def.json msgctxt "top_skin_preshrink description" -msgid "" -"The largest width of top skin areas which are to be removed. Every skin area " -"smaller than this value will disappear. This can help in limiting the amount " -"of time and material spent on printing top skin at slanted surfaces in the " -"model." +msgid "The largest width of top skin areas which are to be removed. Every skin area smaller than this value will disappear. This can help in limiting the amount of time and material spent on printing top skin at slanted surfaces in the model." msgstr "A maior largura das áreas de revestimento superiores a serem removidas. Todas as áreas de revestimento inferiores a este valor irão desaparecer. Isto pode ajudar a limitar a quantidade de tempo e material gastos na impressão do revestimento superior nas superfícies inclinadas do modelo." #: fdmprinter.def.json msgctxt "bottom_skin_preshrink label" msgid "Bottom Skin Removal Width" -msgstr "Largura de remoção do revestimento inferior" +msgstr "Largura Remoção Revestimento Inferior" #: fdmprinter.def.json msgctxt "bottom_skin_preshrink description" -msgid "" -"The largest width of bottom skin areas which are to be removed. Every skin " -"area smaller than this value will disappear. This can help in limiting the " -"amount of time and material spent on printing bottom skin at slanted " -"surfaces in the model." +msgid "The largest width of bottom skin areas which are to be removed. Every skin area smaller than this value will disappear. This can help in limiting the amount of time and material spent on printing bottom skin at slanted surfaces in the model." msgstr "A maior largura das áreas de revestimento inferiores a serem removidas. Todas as áreas de revestimento inferiores a este valor irão desaparecer. Isto pode ajudar a limitar a quantidade de tempo e material gastos na impressão do revestimento inferior nas superfícies inclinadas do modelo." #: fdmprinter.def.json msgctxt "expand_skins_expand_distance label" msgid "Skin Expand Distance" -msgstr "Distância de expansão do revestimento" +msgstr "Distância Expansão Revestimento" #: fdmprinter.def.json msgctxt "expand_skins_expand_distance description" -msgid "" -"The distance the skins are expanded into the infill. Higher values makes the " -"skin attach better to the infill pattern and makes the walls on neighboring " -"layers adhere better to the skin. Lower values save amount of material used." -msgstr "A distância a que os revestimentos são expandidos para o preenchimento. Os valores mais elevados melhoram a fixação do revestimento no padrão de preenchimento, bem como a aderência das paredes das camadas adjacentes ao revestimento. Os valores mais baixos reduzem a quantidade de material utilizado." +msgid "The distance the skins are expanded into the infill. Higher values makes the skin attach better to the infill pattern and makes the walls on neighboring layers adhere better to the skin. Lower values save amount of material used." +msgstr "A distância a que os revestimentos são expandidos para o enchimento. Os valores mais elevados melhoram a fixação do revestimento no padrão geométrico de enchimento, bem como a aderência das paredes das camadas adjacentes ao revestimento. Os valores mais baixos reduzem a quantidade de material utilizado." #: fdmprinter.def.json msgctxt "top_skin_expand_distance label" msgid "Top Skin Expand Distance" -msgstr "Distância de expansão do revestimento superior" +msgstr "Distância Expansão Revestimento Superior" #: fdmprinter.def.json msgctxt "top_skin_expand_distance description" -msgid "" -"The distance the top skins are expanded into the infill. Higher values makes " -"the skin attach better to the infill pattern and makes the walls on the " -"layer above adhere better to the skin. Lower values save amount of material " -"used." -msgstr "A distância à qual os revestimentos superiores são expandidos para o preenchimento. Os valores mais elevados melhoram a fixação do revestimento no padrão de preenchimento, bem como a aderência das paredes da camada superior ao revestimento. Os valores mais baixos reduzem a quantidade de material utilizado." +msgid "The distance the top skins are expanded into the infill. Higher values makes the skin attach better to the infill pattern and makes the walls on the layer above adhere better to the skin. Lower values save amount of material used." +msgstr "A distância à qual os revestimentos superiores são expandidos para o enchimento. Os valores mais elevados melhoram a fixação do revestimento no padrão geométrico geométrico de enchimento, bem como a aderência das paredes da camada superior ao revestimento. Os valores mais baixos reduzem a quantidade de material utilizado." #: fdmprinter.def.json msgctxt "bottom_skin_expand_distance label" msgid "Bottom Skin Expand Distance" -msgstr "Distância de expansão do revestimento inferior" +msgstr "Distância Expansão Revestimento Inferior" #: fdmprinter.def.json msgctxt "bottom_skin_expand_distance description" -msgid "" -"The distance the bottom skins are expanded into the infill. Higher values " -"makes the skin attach better to the infill pattern and makes the skin adhere " -"better to the walls on the layer below. Lower values save amount of material " -"used." -msgstr "A distância à qual os revestimentos inferiores são expandidos para o preenchimento. Os valores mais elevados melhoram a fixação do revestimento no padrão de preenchimento, bem como a aderência do revestimento às paredes da camada inferior. Os valores mais baixos reduzem a quantidade de material utilizado." +msgid "The distance the bottom skins are expanded into the infill. Higher values makes the skin attach better to the infill pattern and makes the skin adhere better to the walls on the layer below. Lower values save amount of material used." +msgstr "A distância à qual os revestimentos inferiores são expandidos para o enchimento. Os valores mais elevados melhoram a fixação do revestimento no padrão geométrico de enchimento, bem como a aderência do revestimento às paredes da camada inferior. Os valores mais baixos reduzem a quantidade de material utilizado." #: fdmprinter.def.json msgctxt "max_skin_angle_for_expansion label" @@ -1897,25 +1698,17 @@ msgstr "Ângulo máximo do revestimento para expansão" #: fdmprinter.def.json msgctxt "max_skin_angle_for_expansion description" -msgid "" -"Top and/or bottom surfaces of your object with an angle larger than this " -"setting, won't have their top/bottom skin expanded. This avoids expanding " -"the narrow skin areas that are created when the model surface has a near " -"vertical slope. An angle of 0° is horizontal, while an angle of 90° is " -"vertical." -msgstr "As superfícies superiores/inferiores do objeto com um ângulo superior a esta definição não conseguirão expandir o revestimento superior/inferior. Isto evita a expansão das áreas de revestimento reduzidas que são criadas quando a superfície do modelo apresenta uma inclinação quase vertical. Um ângulo de 0° é horizontal e um ângulo de 90° é vertical." +msgid "Top and/or bottom surfaces of your object with an angle larger than this setting, won't have their top/bottom skin expanded. This avoids expanding the narrow skin areas that are created when the model surface has a near vertical slope. An angle of 0° is horizontal, while an angle of 90° is vertical." +msgstr "As superfícies superiores e/ou inferiores do objeto com um ângulo superior a este valor não irão expandir o seu revestimento superior/inferior. Isto evita a expansão das áreas de revestimento reduzidas que são criadas quando a superfície do modelo apresenta uma inclinação quase vertical. Um ângulo de 0° é horizontal e um ângulo de 90° é vertical." #: fdmprinter.def.json msgctxt "min_skin_width_for_expansion label" msgid "Minimum Skin Width for Expansion" -msgstr "Largura mínima do revestimento para expansão" +msgstr "Largura Mínima Revestimento para Expansão" #: fdmprinter.def.json msgctxt "min_skin_width_for_expansion description" -msgid "" -"Skin areas narrower than this are not expanded. This avoids expanding the " -"narrow skin areas that are created when the model surface has a slope close " -"to the vertical." +msgid "Skin areas narrower than this are not expanded. This avoids expanding the narrow skin areas that are created when the model surface has a slope close to the vertical." msgstr "As áreas de revestimento mais reduzidas do que este valor não são expandidas. Isto evita a expansão das áreas de revestimento reduzidas que são criadas quando a superfície do modelo apresenta uma inclinação quase vertical." #: fdmprinter.def.json @@ -1928,30 +1721,20 @@ msgctxt "material description" msgid "Material" msgstr "Material" -#: fdmprinter.def.json -msgctxt "material_flow_dependent_temperature label" -msgid "Auto Temperature" -msgstr "Temperatura automática" - -#: fdmprinter.def.json -msgctxt "material_flow_dependent_temperature description" -msgid "" -"Change the temperature for each layer automatically with the average flow " -"speed of that layer." -msgstr "Muda automaticamente a temperatura de cada camada com a velocidade média de fluxo dessa camada." - #: fdmprinter.def.json msgctxt "default_material_print_temperature label" msgid "Default Printing Temperature" -msgstr "Temperatura de impressão predefinida" +msgstr "Temperatura Impressão Predefinida" +# rever! +# english string missing period +# devem ter como base este valor. +# devem ser baseadas neste valor. +# devem utilizar desvios com base neste valor. #: fdmprinter.def.json msgctxt "default_material_print_temperature description" -msgid "" -"The default temperature used for printing. This should be the \"base\" " -"temperature of a material. All other print temperatures should use offsets " -"based on this value" -msgstr "A temperatura predefinida utilizada para a impressão. Esta deve ser a temperatura \"base\" de um material. Todas as outras temperaturas de impressão devem utilizar desvios com base neste valor." +msgid "The default temperature used for printing. This should be the \"base\" temperature of a material. All other print temperatures should use offsets based on this value" +msgstr "A temperatura predefinida utilizada para a impressão. Esta deve ser a temperatura \"base\" de um material. Todas as outras temperaturas de impressão devem ser baseadas neste valor" #: fdmprinter.def.json msgctxt "material_print_temperature label" @@ -1966,13 +1749,11 @@ msgstr "A temperatura utilizada para a impressão." #: fdmprinter.def.json msgctxt "material_print_temperature_layer_0 label" msgid "Printing Temperature Initial Layer" -msgstr "Temperatura de impressão da camada inicial" +msgstr "Temperatura Impressão Camada Inicial" #: fdmprinter.def.json msgctxt "material_print_temperature_layer_0 description" -msgid "" -"The temperature used for printing the first layer. Set at 0 to disable " -"special handling of the initial layer." +msgid "The temperature used for printing the first layer. Set at 0 to disable special handling of the initial layer." msgstr "A temperatura utilizada para imprimir a primeira camada. Esta é definida como 0 para desativar o manuseamento especial da camada inicial." #: fdmprinter.def.json @@ -1982,9 +1763,7 @@ msgstr "Temperatura de impressão inicial" #: fdmprinter.def.json msgctxt "material_initial_print_temperature description" -msgid "" -"The minimal temperature while heating up to the Printing Temperature at " -"which printing can already start." +msgid "The minimal temperature while heating up to the Printing Temperature at which printing can already start." msgstr "A temperatura mínima ao aquecer até à Temperatura de impressão à qual a impressão já pode começar." #: fdmprinter.def.json @@ -1994,23 +1773,9 @@ msgstr "Temperatura de impressão final" #: fdmprinter.def.json msgctxt "material_final_print_temperature description" -msgid "" -"The temperature to which to already start cooling down just before the end " -"of printing." +msgid "The temperature to which to already start cooling down just before the end of printing." msgstr "A temperatura à qual o arrefecimento é iniciado imediatamente antes do final da impressão." -#: fdmprinter.def.json -msgctxt "material_flow_temp_graph label" -msgid "Flow Temperature Graph" -msgstr "Gráfico de temperatura de fluxo" - -#: fdmprinter.def.json -msgctxt "material_flow_temp_graph description" -msgid "" -"Data linking material flow (in mm3 per second) to temperature (degrees " -"Celsius)." -msgstr "Os dados que ligam o fluxo de material (em mm3 por segundo) à temperatura (graus Celsius)." - #: fdmprinter.def.json msgctxt "material_extrusion_cool_down_speed label" msgid "Extrusion Cool Down Speed Modifier" @@ -2018,32 +1783,28 @@ msgstr "Modificador da velocidade de arrefecimento da extrusão" #: fdmprinter.def.json msgctxt "material_extrusion_cool_down_speed description" -msgid "" -"The extra speed by which the nozzle cools while extruding. The same value is " -"used to signify the heat up speed lost when heating up while extruding." -msgstr "A velocidade adicional a que o bocal arrefece durante a extrusão. É utilizado o mesmo valor para indicar a velocidade de aquecimento perdida ao aquecer durante a extrusão." +msgid "The extra speed by which the nozzle cools while extruding. The same value is used to signify the heat up speed lost when heating up while extruding." +msgstr "A velocidade adicional a que o nozzle arrefece durante a extrusão. É utilizado o mesmo valor para indicar a velocidade de aquecimento perdida ao aquecer durante a extrusão." #: fdmprinter.def.json msgctxt "material_bed_temperature label" msgid "Build Plate Temperature" -msgstr "Temperatura da placa de construção" +msgstr "Temperatura da base de construção" #: fdmprinter.def.json msgctxt "material_bed_temperature description" -msgid "" -"The temperature used for the heated build plate. If this is 0, the bed will " -"not heat up for this print." -msgstr "A temperatura utilizada para a placa de construção aquecida. Se for 0, a base não será aquecida para esta impressão." +msgid "The temperature used for the heated build plate. If this is 0, the bed temperature will not be adjusted." +msgstr "A temperatura utilizada para a placa de construção aquecida. Se for 0, a temperatura da base não será ajustada." #: fdmprinter.def.json msgctxt "material_bed_temperature_layer_0 label" msgid "Build Plate Temperature Initial Layer" -msgstr "Temperatura da placa de construção da camada inicial" +msgstr "Temperatura da base de construção da camada inicial" #: fdmprinter.def.json msgctxt "material_bed_temperature_layer_0 description" msgid "The temperature used for the heated build plate at the first layer." -msgstr "A temperatura utilizada para a placa de construção aquecida na primeira camada." +msgstr "A temperatura utilizada para a base de construção aquecida na primeira camada." #: fdmprinter.def.json msgctxt "material_diameter label" @@ -2052,9 +1813,7 @@ msgstr "Diâmetro" #: fdmprinter.def.json msgctxt "material_diameter description" -msgid "" -"Adjusts the diameter of the filament used. Match this value with the " -"diameter of the used filament." +msgid "Adjusts the diameter of the filament used. Match this value with the diameter of the used filament." msgstr "Ajusta o diâmetro do filamento utilizado. Faça corresponder este valor com o diâmetro do filamento utilizado." #: fdmprinter.def.json @@ -2084,36 +1843,33 @@ msgstr "Fluxo" #: fdmprinter.def.json msgctxt "material_flow description" -msgid "" -"Flow compensation: the amount of material extruded is multiplied by this " -"value." +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 "retraction_enable label" msgid "Enable Retraction" -msgstr "Ativar retração" +msgstr "Ativar Retração" #: fdmprinter.def.json msgctxt "retraction_enable description" -msgid "" -"Retract the filament when the nozzle is moving over a non-printed area. " -msgstr "Retrai o filamento quando o bocal está em movimento numa área sem impressão. " +msgid "Retract the filament when the nozzle is moving over a non-printed area. " +msgstr "Retrai o filamento quando o nozzle está em movimento numa área sem impressão. " #: fdmprinter.def.json msgctxt "retract_at_layer_change label" msgid "Retract at Layer Change" -msgstr "Retrair na mudança de camada" +msgstr "Retrair na Mudança Camada" #: fdmprinter.def.json msgctxt "retract_at_layer_change description" msgid "Retract the filament when the nozzle is moving to the next layer." -msgstr "Retrai o filamento quando o bocal se está a deslocar para a camada seguinte." +msgstr "Retrai o filamento quando o nozzle se está a deslocar para a camada seguinte." #: fdmprinter.def.json msgctxt "retraction_amount label" msgid "Retraction Distance" -msgstr "Distância de retração" +msgstr "Distância de Retração" #: fdmprinter.def.json msgctxt "retraction_amount description" @@ -2123,29 +1879,37 @@ msgstr "O comprimento do material retraído durante um movimento de retração." #: fdmprinter.def.json msgctxt "retraction_speed label" msgid "Retraction Speed" -msgstr "Velocidade de retração" +msgstr "Velocidade de Retração" #: fdmprinter.def.json msgctxt "retraction_speed description" -msgid "" -"The speed at which the filament is retracted and primed during a retraction " -"move." +msgid "The speed at which the filament is retracted and primed during a retraction move." msgstr "A velocidade a que o filamento é retraído e preparado durante um movimento de retração." +# rever! +# retrair? +# é retraido? +# recuo? +# recolhido? #: fdmprinter.def.json msgctxt "retraction_retract_speed label" msgid "Retraction Retract Speed" -msgstr "Velocidade de recolha de retração" +msgstr "Velocidade Retrair na Retração" +# rever! +# retrair? +# é retraido? +# recuo? +# recolhido? #: fdmprinter.def.json msgctxt "retraction_retract_speed description" msgid "The speed at which the filament is retracted during a retraction move." -msgstr "A velocidade a que o filamento é recolhido durante um movimento de retração." +msgstr "A velocidade a que o filamento é retraído durante um movimento de retração." #: fdmprinter.def.json msgctxt "retraction_prime_speed label" msgid "Retraction Prime Speed" -msgstr "Velocidade de preparação de retração" +msgstr "Velocidade Preparar na Retração" #: fdmprinter.def.json msgctxt "retraction_prime_speed description" @@ -2155,113 +1919,95 @@ msgstr "A velocidade a que o filamento é preparado durante um movimento de retr #: fdmprinter.def.json msgctxt "retraction_extra_prime_amount label" msgid "Retraction Extra Prime Amount" -msgstr "Quantidade de preparação adicional de retração" +msgstr "Preparação Adicional de Retração" #: fdmprinter.def.json msgctxt "retraction_extra_prime_amount description" -msgid "" -"Some material can ooze away during a travel move, which can be compensated " -"for here." -msgstr "Pode ocorrer vazamento de material durante um movimento de deslocação, o qual pode ser compensado aqui." +msgid "Some material can ooze away during a travel move, which can be compensated for here." +msgstr "Pode ocorrer escorrimento de material durante um movimento de deslocação, o qual pode ser compensado aqui." #: fdmprinter.def.json msgctxt "retraction_min_travel label" msgid "Retraction Minimum Travel" -msgstr "Deslocação mínima de retração" +msgstr "Deslocação Mínima da Retração" #: fdmprinter.def.json msgctxt "retraction_min_travel description" -msgid "" -"The minimum distance of travel needed for a retraction to happen at all. " -"This helps to get fewer retractions in a small area." +msgid "The minimum distance of travel needed for a retraction to happen at all. This helps to get fewer retractions in a small area." msgstr "A distância mínima de deslocação necessária para que ocorra uma retração. Isto ajuda a obter menos retrações numa área reduzida." #: fdmprinter.def.json msgctxt "retraction_count_max label" msgid "Maximum Retraction Count" -msgstr "Contagem máxima de retração" +msgstr "Número Máximo Retrações" #: fdmprinter.def.json msgctxt "retraction_count_max description" -msgid "" -"This setting limits the number of retractions occurring within the minimum " -"extrusion distance window. Further retractions within this window will be " -"ignored. This avoids retracting repeatedly on the same piece of filament, as " -"that can flatten the filament and cause grinding issues." +msgid "This setting limits the number of retractions occurring within the minimum extrusion distance window. Further retractions within this window will be ignored. This avoids retracting repeatedly on the same piece of filament, as that can flatten the filament and cause grinding issues." msgstr "Esta definição limita o número de retrações que ocorrem no intervalo mínimo de distância de extrusão. As retrações adicionais dentro deste intervalo serão ignoradas. Isto evita a retração repetida no mesmo filamento, uma vez que tal pode achatar o filamento e causar problemas de trituração." #: fdmprinter.def.json msgctxt "retraction_extrusion_window label" msgid "Minimum Extrusion Distance Window" -msgstr "Intervalo mínimo de distância de extrusão" +msgstr "Intervalo Mínimo Distância Extrusão" +# de forma a que o número de vezes que uma retração acontece na mesma área do material seja efetivamente limitado. #: fdmprinter.def.json msgctxt "retraction_extrusion_window description" -msgid "" -"The window in which the maximum retraction count is enforced. This value " -"should be approximately the same as the retraction distance, so that " -"effectively the number of times a retraction passes the same patch of " -"material is limited." -msgstr "O intervalo no qual a contagem máxima de retração é aplicada. Este valor deve ser aproximadamente o mesmo que a distância de retração, de forma que o número de vezes que uma retração passa no mesmo retalho de material seja efetivamente limitado." +msgid "The window in which the maximum retraction count is enforced. This value should be approximately the same as the retraction distance, so that effectively the number of times a retraction passes the same patch of material is limited." +msgstr "O intervalo no qual o número máximo de retrações é aplicado. Este valor deve ser aproximadamente o mesmo que o da Distância de Retração, de forma a limitar, efectivamente, o número de vezes que uma retração acontece na mesma área do filamento." #: fdmprinter.def.json msgctxt "material_standby_temperature label" msgid "Standby Temperature" -msgstr "Temperatura de espera" +msgstr "Temperatura em Espera" #: fdmprinter.def.json msgctxt "material_standby_temperature description" -msgid "" -"The temperature of the nozzle when another nozzle is currently used for " -"printing." -msgstr "A temperatura do bocal quando outro bocal está a ser utilizado para a impressão." +msgid "The temperature of the nozzle when another nozzle is currently used for printing." +msgstr "A temperatura do nozzle quando outro nozzle está a ser utilizado para a impressão." +# rever! +# restantes retração srtings #: fdmprinter.def.json msgctxt "switch_extruder_retraction_amount label" msgid "Nozzle Switch Retraction Distance" -msgstr "Distância de retração de substituição do bocal" +msgstr "Distância de retração de substituição do nozzle" #: fdmprinter.def.json msgctxt "switch_extruder_retraction_amount description" -msgid "" -"The amount of retraction: Set at 0 for no retraction at all. This should " -"generally be the same as the length of the heat zone." +msgid "The amount of retraction: Set at 0 for no retraction at all. This should generally be the same as the length of the heat zone." msgstr "A quantidade de retração: defina como 0 para não obter qualquer retração. Normalmente, esta deve ser a mesma que o comprimento da zona de aquecimento." #: fdmprinter.def.json msgctxt "switch_extruder_retraction_speeds label" msgid "Nozzle Switch Retraction Speed" -msgstr "Velocidade de retração de substituição do bocal" +msgstr "Velocidade de retração de substituição do nozzle" #: fdmprinter.def.json msgctxt "switch_extruder_retraction_speeds description" -msgid "" -"The speed at which the filament is retracted. A higher retraction speed " -"works better, but a very high retraction speed can lead to filament grinding." +msgid "The speed at which the filament is retracted. A higher retraction speed works better, but a very high retraction speed can lead to filament grinding." msgstr "A velocidade a que o filamento é retraído. Uma maior velocidade de retração funciona melhor, mas uma velocidade de retração muito elevada pode resultar na trituração do filamento." #: fdmprinter.def.json msgctxt "switch_extruder_retraction_speed label" msgid "Nozzle Switch Retract Speed" -msgstr "Velocidade de recolha de substituição do bocal" +msgstr "Velocidade de recolha de substituição do nozzle" #: fdmprinter.def.json msgctxt "switch_extruder_retraction_speed description" -msgid "" -"The speed at which the filament is retracted during a nozzle switch retract." -msgstr "A velocidade a que o filamento é retraído durante uma recolha de substituição do bocal." +msgid "The speed at which the filament is retracted during a nozzle switch retract." +msgstr "A velocidade a que o filamento é retraído durante uma recolha de substituição do nozzle." #: fdmprinter.def.json msgctxt "switch_extruder_prime_speed label" msgid "Nozzle Switch Prime Speed" -msgstr "Velocidade de preparação de substituição do bocal" +msgstr "Velocidade de preparação de substituição do nozzle" #: fdmprinter.def.json 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 bocal." +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 "speed label" @@ -2276,8 +2022,13 @@ msgstr "Velocidade" #: fdmprinter.def.json msgctxt "speed_print label" msgid "Print Speed" -msgstr "Velocidade de impressão" +msgstr "Velocidade de Impressão" +# rever! +# a que +# em que +# com que ?? +# com qual #: fdmprinter.def.json msgctxt "speed_print description" msgid "The speed at which printing happens." @@ -2286,17 +2037,22 @@ msgstr "A velocidade a que é efetuada a impressão." #: fdmprinter.def.json msgctxt "speed_infill label" msgid "Infill Speed" -msgstr "Velocidade de preenchimento" +msgstr "Velocidade Enchimento" +# rever! +# a que +# em que +# com que ?? +# com qual #: fdmprinter.def.json msgctxt "speed_infill description" msgid "The speed at which infill is printed." -msgstr "A velocidade a que o preenchimento é impresso." +msgstr "A velocidade a que o enchimento é impresso." #: fdmprinter.def.json msgctxt "speed_wall label" msgid "Wall Speed" -msgstr "Velocidade de parede" +msgstr "Velocidade Paredes" #: fdmprinter.def.json msgctxt "speed_wall description" @@ -2306,34 +2062,31 @@ msgstr "A velocidade a que as paredes são impressas." #: fdmprinter.def.json msgctxt "speed_wall_0 label" msgid "Outer Wall Speed" -msgstr "Velocidade de parede externa" +msgstr "Velocidade Parede Exterior" +# rever! +# english string correct? plural? #: fdmprinter.def.json msgctxt "speed_wall_0 description" -msgid "" -"The speed at which the outermost walls are printed. Printing the outer wall " -"at a lower speed improves the final skin quality. However, having a large " -"difference between the inner wall speed and the outer wall speed will affect " -"quality in a negative way." -msgstr "A velocidade a que as paredes externas são impressas. Imprimir a parede externa a uma velocidade mais reduzida melhora a qualidade final do revestimento. No entanto, a existência de uma grande diferença entre a velocidade da parede interna e a velocidade de parede externa afetará a qualidade de forma negativa." +msgid "The speed at which the outermost walls are printed. Printing the outer wall at a lower speed improves the final skin quality. However, having a large difference between the inner wall speed and the outer wall speed will affect quality in a negative way." +msgstr "A velocidade a que as paredes exteriores são impressas. Imprimir a parede exterior a uma velocidade mais reduzida melhora a qualidade final do revestimento. No entanto, a existência de uma grande diferença entre a velocidade da parede interior e a velocidade de parede exterior afetará a qualidade de uma forma negativa." #: fdmprinter.def.json msgctxt "speed_wall_x label" msgid "Inner Wall Speed" -msgstr "Velocidade de parede interna" +msgstr "Velocidade Parede Interior" +# rever! +# É conveniente introduzir esta definição entre a velocidade de parede exterior e a velocidade de enchimento. #: fdmprinter.def.json msgctxt "speed_wall_x description" -msgid "" -"The speed at which all inner walls are printed. Printing the inner wall " -"faster than the outer wall will reduce printing time. It works well to set " -"this in between the outer wall speed and the infill speed." -msgstr "A velocidade a que todas as paredes internas são impressas. Imprimir a parede interna mais rapidamente do que a parede externa irá reduzir o tempo de impressão. É conveniente introduzir esta definição entre a velocidade de parede externa e a velocidade de preenchimento." +msgid "The speed at which all inner walls are printed. Printing the inner wall faster than the outer wall will reduce printing time. It works well to set this in between the outer wall speed and the infill speed." +msgstr "A velocidade a que todas as paredes interiores são impressas. Imprimir a parede interior mais rapidamente do que a parede exterior irá reduzir o tempo de impressão. O resultado é melhor quando este valor é entre a velocidade de parede exterior e a velocidade de enchimento." #: fdmprinter.def.json msgctxt "speed_roofing label" msgid "Top Surface Skin Speed" -msgstr "Velocidade de revestimento da superfície superior" +msgstr "Velocidade Revestimento Superior" #: fdmprinter.def.json msgctxt "speed_roofing description" @@ -2343,7 +2096,7 @@ msgstr "A velocidade a que as camadas de revestimento da superfície superior s #: fdmprinter.def.json msgctxt "speed_topbottom label" msgid "Top/Bottom Speed" -msgstr "Velocidade superior/inferior" +msgstr "Velocidade Superior/Inferior" #: fdmprinter.def.json msgctxt "speed_topbottom description" @@ -2353,27 +2106,22 @@ msgstr "A velocidade a que as camadas superiores/inferiores são impressas." #: fdmprinter.def.json msgctxt "speed_support label" msgid "Support Speed" -msgstr "Velocidade de suporte" +msgstr "Velocidade Suporte" #: fdmprinter.def.json msgctxt "speed_support description" -msgid "" -"The speed at which the support structure is printed. Printing support at " -"higher speeds can greatly reduce printing time. The surface quality of the " -"support structure is not important since it is removed after printing." +msgid "The speed at which the support structure is printed. Printing support at higher speeds can greatly reduce printing time. The surface quality of the support structure is not important since it is removed after printing." msgstr "A velocidade a que a estrutura de suporte é impressa. Imprimir o suporte a velocidades elevadas pode reduzir consideravelmente o tempo de impressão. A qualidade da superfície da estrutura de suporte não é importante, uma vez que esta é removida após a impressão." #: fdmprinter.def.json msgctxt "speed_support_infill label" msgid "Support Infill Speed" -msgstr "Velocidade de preenchimento do suporte" +msgstr "Velocidade de enchimento do suporte" #: fdmprinter.def.json msgctxt "speed_support_infill description" -msgid "" -"The speed at which the infill of support is printed. Printing the infill at " -"lower speeds improves stability." -msgstr "A velocidade a que o preenchimento do suporte é impresso. Imprimir o preenchimento a velocidades baixas melhora a estabilidade." +msgid "The speed at which the infill of support is printed. Printing the infill at lower speeds improves stability." +msgstr "A velocidade a que o enchimento do suporte é impresso. Imprimir o enchimento a velocidades baixas melhora a estabilidade." #: fdmprinter.def.json msgctxt "speed_support_interface label" @@ -2382,22 +2130,18 @@ msgstr "Velocidade da interface de suporte" #: fdmprinter.def.json msgctxt "speed_support_interface description" -msgid "" -"The speed at which the roofs and floors of support are printed. Printing " -"them at lower speeds can improve overhang quality." -msgstr "A velocidade a que os tetos e os pisos de suporte são impressos. Imprimi-los a velocidades baixas pode melhorar a qualidade das saliências." +msgid "The speed at which the roofs and floors of support are printed. Printing them at lower speeds can improve overhang quality." +msgstr "A velocidade a que os tectos e os pisos de suporte são impressos. Imprimi-los a velocidades baixas pode melhorar a qualidade das saliências." #: fdmprinter.def.json msgctxt "speed_support_roof label" msgid "Support Roof Speed" -msgstr "Velocidade do teto de suporte" +msgstr "Velocidade do tecto de suporte" #: fdmprinter.def.json msgctxt "speed_support_roof description" -msgid "" -"The speed at which the roofs of support are printed. Printing them at lower " -"speeds can improve overhang quality." -msgstr "A velocidade a que os tetos de suporte são impressos. Imprimi-los a velocidades baixas pode melhorar a qualidade das saliências." +msgid "The speed at which the roofs of support are printed. Printing them at lower speeds can improve overhang quality." +msgstr "A velocidade a que os tectos de suporte são impressos. Imprimi-los a velocidades baixas pode melhorar a qualidade das saliências." #: fdmprinter.def.json msgctxt "speed_support_bottom label" @@ -2406,9 +2150,7 @@ msgstr "Velocidade do piso de suporte" #: fdmprinter.def.json msgctxt "speed_support_bottom description" -msgid "" -"The speed at which the floor of support is printed. Printing it at lower " -"speed can improve adhesion of support on top of your model." +msgid "The speed at which the floor of support is printed. Printing it at lower speed can improve adhesion of support on top of your model." msgstr "A velocidade a que o piso de suporte é impresso. Imprimi-lo a uma velocidade baixa pode melhorar a aderência do suporte na parte superior do modelo." #: fdmprinter.def.json @@ -2418,10 +2160,7 @@ msgstr "Velocidade da torre de preparação" #: fdmprinter.def.json msgctxt "speed_prime_tower description" -msgid "" -"The speed at which the prime tower is printed. Printing the prime tower " -"slower can make it more stable when the adhesion between the different " -"filaments is suboptimal." +msgid "The speed at which the prime tower is printed. Printing the prime tower slower can make it more stable when the adhesion between the different filaments is suboptimal." msgstr "A velocidade à qual a torre de preparação é impressa. Imprimir a torre de preparação mais lentamente pode torná-la mais estável quando a aderência entre os diferentes filamentos é insuficiente." #: fdmprinter.def.json @@ -2437,14 +2176,12 @@ msgstr "A velocidade a que os movimentos de deslocação são efetuados." #: fdmprinter.def.json msgctxt "speed_layer_0 label" msgid "Initial Layer Speed" -msgstr "Velocidade da camada inicial" +msgstr "Velocidade Camada Inicial" #: fdmprinter.def.json msgctxt "speed_layer_0 description" -msgid "" -"The speed for the initial layer. A lower value is advised to improve " -"adhesion to the build plate." -msgstr "A velocidade da camada inicial. É recomendado um valor inferior para melhorar a aderência à placa de construção." +msgid "The speed for the initial layer. A lower value is advised to improve adhesion to the build plate." +msgstr "A velocidade da camada inicial. É recomendado um valor inferior para melhorar a aderência à base de construção." #: fdmprinter.def.json msgctxt "speed_print_layer_0 label" @@ -2453,10 +2190,8 @@ msgstr "Velocidade de impressão da camada inicial" #: fdmprinter.def.json msgctxt "speed_print_layer_0 description" -msgid "" -"The speed of printing for the initial layer. A lower value is advised to " -"improve adhesion to the build plate." -msgstr "A velocidade de impressão da camada inicial. É recomendado um valor inferior para melhorar a aderência à placa de construção." +msgid "The speed of printing for the initial layer. A lower value is advised to improve adhesion to the build plate." +msgstr "A velocidade de impressão da camada inicial. É recomendado um valor inferior para melhorar a aderência à base de construção." #: fdmprinter.def.json msgctxt "speed_travel_layer_0 label" @@ -2465,37 +2200,29 @@ msgstr "Velocidade de deslocação da camada inicial" #: fdmprinter.def.json msgctxt "speed_travel_layer_0 description" -msgid "" -"The speed of travel moves in the initial layer. A lower value is advised to " -"prevent pulling previously printed parts away from the build plate. The " -"value of this setting can automatically be calculated from the ratio between " -"the Travel Speed and the Print Speed." -msgstr "A velocidade dos movimentos de deslocação na camada inicial. É recomendado um valor inferior para evitar que as peças anteriormente impressas sejam separadas da placa de construção. O valor desta definição pode ser automaticamente calculado a partir da proporção entre a Velocidade de deslocação e a Velocidade de impressão." +msgid "The speed of travel moves in the initial layer. A lower value is advised to prevent pulling previously printed parts away from the build plate. The value of this setting can automatically be calculated from the ratio between the Travel Speed and the Print Speed." +msgstr "A velocidade dos movimentos de deslocação na camada inicial. É recomendado um valor inferior para evitar que as peças anteriormente impressas sejam separadas da base de construção. O valor desta definição pode ser automaticamente calculado a partir da proporção entre a Velocidade de deslocação e a Velocidade de impressão." #: fdmprinter.def.json msgctxt "skirt_brim_speed label" msgid "Skirt/Brim Speed" -msgstr "Velocidade de contorno/borda" +msgstr "Velocidade Contorno / Aba" #: fdmprinter.def.json msgctxt "skirt_brim_speed description" -msgid "" -"The speed at which the skirt and brim are printed. Normally this is done at " -"the initial layer speed, but sometimes you might want to print the skirt or " -"brim at a different speed." -msgstr "A velocidade a que o contorno e a borda são impressos. Geralmente, isto é efetuado à velocidade de camada inicial, mas, por vezes, pode preferir imprimir o contorno ou a borda a uma velocidade diferente." +msgid "The speed at which the skirt and brim are printed. Normally this is done at the initial layer speed, but sometimes you might want to print the skirt or brim at a different speed." +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" +# 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 a que a placa de construção é movida. Defini-la como zero faz com que a impressão utilize as predefinições de firmware para a velocidade Z máxima." +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." #: fdmprinter.def.json msgctxt "speed_slowdown_layers label" @@ -2504,11 +2231,8 @@ msgstr "Número de camadas mais lentas" #: fdmprinter.def.json msgctxt "speed_slowdown_layers description" -msgid "" -"The first few layers are printed slower than the rest of the model, to get " -"better adhesion to the build plate and improve the overall success rate of " -"prints. The speed is gradually increased over these layers." -msgstr "As primeiras camadas são impressas mais lentamente do que o resto do modelo para obter uma melhor aderência à placa de construção e melhorar a taxa de sucesso geral das impressões. A velocidade é aumentada gradualmente nessas camadas." +msgid "The first few layers are printed slower than the rest of the model, to get better adhesion to the build plate and improve the overall success rate of prints. The speed is gradually increased over these layers." +msgstr "As primeiras camadas são impressas mais lentamente do que o resto do modelo para obter uma melhor aderência à base de construção e melhorar a taxa de sucesso geral das impressões. A velocidade é aumentada gradualmente nessas camadas." #: fdmprinter.def.json msgctxt "speed_equalize_flow_enabled label" @@ -2517,12 +2241,8 @@ msgstr "Equilibrar fluxo de filamento" #: fdmprinter.def.json msgctxt "speed_equalize_flow_enabled description" -msgid "" -"Print thinner than normal lines faster so that the amount of material " -"extruded per second remains the same. Thin pieces in your model might " -"require lines printed with smaller line width than provided in the settings. " -"This setting controls the speed changes for such lines." -msgstr "Imprime linhas mais finas do que o normal de forma mais rápida, para que a quantidade de material extrudido por segundo permaneça o mesmo. As peças finas do modelo podem requerer linhas impressas com uma menor largura de linha do que a fornecida nas definições. Esta definição controla as mudanças de velocidade dessas linhas." +msgid "Print thinner than normal lines faster so that the amount of material extruded per second remains the same. Thin pieces in your model might require lines printed with smaller line width than provided in the settings. This setting controls the speed changes for such lines." +msgstr "Imprime linhas mais finas do que o normal de forma mais rápida, para que a quantidade de material extrudido por segundo permaneça o mesmo. As peças finas do modelo podem requerer linhas impressas com uma menor espessura de linha do que a especificada nas definições. Esta definição controla as mudanças de velocidade dessas linhas." #: fdmprinter.def.json msgctxt "speed_equalize_flow_max label" @@ -2531,8 +2251,7 @@ msgstr "Velocidade máxima para equilíbrio de fluxo" #: fdmprinter.def.json msgctxt "speed_equalize_flow_max description" -msgid "" -"Maximum print speed when adjusting the print speed in order to equalize flow." +msgid "Maximum print speed when adjusting the print speed in order to equalize flow." msgstr "A velocidade máxima de impressão ao ajustar a velocidade de impressão para equilibrar o fluxo." #: fdmprinter.def.json @@ -2542,9 +2261,7 @@ msgstr "Ativar controlo da aceleração" #: fdmprinter.def.json msgctxt "acceleration_enabled description" -msgid "" -"Enables adjusting the print head acceleration. Increasing the accelerations " -"can reduce printing time at the cost of print quality." +msgid "Enables adjusting the print head acceleration. Increasing the accelerations can reduce printing time at the cost of print quality." msgstr "Permite o ajuste da aceleração da cabeça de impressão. Aumentar as acelerações pode reduzir o tempo de impressão em detrimento da qualidade de impressão." #: fdmprinter.def.json @@ -2560,12 +2277,12 @@ msgstr "A aceleração com que é efetuada a impressão." #: fdmprinter.def.json msgctxt "acceleration_infill label" msgid "Infill Acceleration" -msgstr "Aceleração de preenchimento" +msgstr "Aceleração de enchimento" #: fdmprinter.def.json msgctxt "acceleration_infill description" msgid "The acceleration with which infill is printed." -msgstr "A aceleração com que o preenchimento é impresso." +msgstr "A aceleração com que o enchimento é impresso." #: fdmprinter.def.json msgctxt "acceleration_wall label" @@ -2580,27 +2297,27 @@ msgstr "A aceleração com que as paredes são impressas." #: fdmprinter.def.json msgctxt "acceleration_wall_0 label" msgid "Outer Wall Acceleration" -msgstr "Aceleração da parede externa" +msgstr "Aceleração da parede exterior" #: fdmprinter.def.json msgctxt "acceleration_wall_0 description" msgid "The acceleration with which the outermost walls are printed." -msgstr "A aceleração com que as paredes mais externas são impressas." +msgstr "A aceleração com que as paredes exteriores são impressas." #: fdmprinter.def.json msgctxt "acceleration_wall_x label" msgid "Inner Wall Acceleration" -msgstr "Aceleração da parede interna" +msgstr "Aceleração da parede interior" #: fdmprinter.def.json msgctxt "acceleration_wall_x description" msgid "The acceleration with which all inner walls are printed." -msgstr "A aceleração com que todas as paredes internas são impressas." +msgstr "A aceleração com que todas as paredes interiores são impressas." #: fdmprinter.def.json msgctxt "acceleration_roofing label" msgid "Top Surface Skin Acceleration" -msgstr "Aceleração do revestimento da superfície superior" +msgstr "Aceleração Revestimento Superior" #: fdmprinter.def.json msgctxt "acceleration_roofing description" @@ -2630,12 +2347,12 @@ msgstr "A aceleração com que a estrutura de suporte é impressa." #: fdmprinter.def.json msgctxt "acceleration_support_infill label" msgid "Support Infill Acceleration" -msgstr "Aceleração de preenchimento do suporte" +msgstr "Aceleração de enchimento do suporte" #: fdmprinter.def.json msgctxt "acceleration_support_infill description" msgid "The acceleration with which the infill of support is printed." -msgstr "A aceleração com que o preenchimento do suporte é impresso." +msgstr "A aceleração com que o enchimento do suporte é impresso." #: fdmprinter.def.json msgctxt "acceleration_support_interface label" @@ -2644,22 +2361,18 @@ msgstr "Aceleração da interface de suporte" #: fdmprinter.def.json msgctxt "acceleration_support_interface description" -msgid "" -"The acceleration with which the roofs and floors of support are printed. " -"Printing them at lower acceleration can improve overhang quality." -msgstr "A aceleração com que os tetos e pisos de suporte são impressos. Imprimi-los com uma aceleração inferior pode melhorar a qualidade das saliências." +msgid "The acceleration with which the roofs and floors of support are printed. Printing them at lower acceleration can improve overhang quality." +msgstr "A aceleração com que os tectos e pisos de suporte são impressos. Imprimi-los com uma aceleração inferior pode melhorar a qualidade das saliências." #: fdmprinter.def.json msgctxt "acceleration_support_roof label" msgid "Support Roof Acceleration" -msgstr "Aceleração do teto de suporte" +msgstr "Aceleração do tecto de suporte" #: fdmprinter.def.json msgctxt "acceleration_support_roof description" -msgid "" -"The acceleration with which the roofs of support are printed. Printing them " -"at lower acceleration can improve overhang quality." -msgstr "A aceleração com que os tetos de suporte são impressos. Imprimi-los com uma aceleração inferior pode melhorar a qualidade das saliências." +msgid "The acceleration with which the roofs of support are printed. Printing them at lower acceleration can improve overhang quality." +msgstr "A aceleração com que os tectos de suporte são impressos. Imprimi-los com uma aceleração inferior pode melhorar a qualidade das saliências." #: fdmprinter.def.json msgctxt "acceleration_support_bottom label" @@ -2668,9 +2381,7 @@ msgstr "Aceleração do piso de suporte" #: fdmprinter.def.json msgctxt "acceleration_support_bottom description" -msgid "" -"The acceleration with which the floors of support are printed. Printing them " -"at lower acceleration can improve adhesion of support on top of your model." +msgid "The acceleration with which the floors of support are printed. Printing them at lower acceleration can improve adhesion of support on top of your model." msgstr "A aceleração com que os pisos de suporte são impressos. Imprimi-los com uma aceleração inferior pode melhorar a aderência do suporte na parte superior do modelo." #: fdmprinter.def.json @@ -2726,195 +2437,176 @@ msgstr "A aceleração dos movimentos de deslocação na camada inicial." #: fdmprinter.def.json msgctxt "acceleration_skirt_brim label" msgid "Skirt/Brim Acceleration" -msgstr "Aceleração de contorno/borda" +msgstr "Aceleração Contorno / Aba" #: fdmprinter.def.json msgctxt "acceleration_skirt_brim description" -msgid "" -"The acceleration with which the skirt and brim are printed. Normally this is " -"done with the initial layer acceleration, but sometimes you might want to " -"print the skirt or brim at a different acceleration." -msgstr "A aceleração com que o contorno e a borda são impressos. Geralmente, isto é efetuado com a aceleração da camada inicial, mas, por vezes, pode preferir imprimir o contorno ou a borda com uma aceleração diferente." +msgid "The acceleration with which the skirt and brim are printed. Normally this is done with the initial layer acceleration, but sometimes you might want to print the skirt or brim at a different acceleration." +msgstr "A aceleração com que o contorno e a aba são impressos. Normalmente, isto é efetuado com a aceleração da camada inicial, mas, por vezes, pode preferir imprimir o contorno ou a aba com uma aceleração diferente." #: fdmprinter.def.json msgctxt "jerk_enabled label" msgid "Enable Jerk Control" -msgstr "Ativar controlo de solavanco" +msgstr "Ativar Controlo do Jerk" +# rever! +# solavanco? +# movimento brusco #: fdmprinter.def.json msgctxt "jerk_enabled description" -msgid "" -"Enables adjusting the jerk of print head when the velocity in the X or Y " -"axis changes. Increasing the jerk can reduce printing time at the cost of " -"print quality." -msgstr "Permite o ajuste do solavanco da cabeça de impressão quando a velocidade nos eixos X ou Y muda. Aumentar o solavanco pode reduzir o tempo de impressão em detrimento da qualidade de impressão." +msgid "Enables adjusting the jerk of print head when the velocity in the X or Y axis changes. Increasing the jerk can reduce printing time at the cost of print quality." +msgstr "Permite ajustar o jerk da cabeça de impressão quando a velocidade nos eixos X ou Y muda. Aumentar o jerk pode reduzir o tempo de impressão em detrimento da qualidade de impressão." #: fdmprinter.def.json msgctxt "jerk_print label" msgid "Print Jerk" -msgstr "Solavanco de impressão" +msgstr "Jerk da Impressão" +# rever! +# all jerk strings +# ver qual a trad é mais aproximada doo sentido original +# tradução original - A mudança de velocidade instantânea máxima da cabeça de impressão. #: fdmprinter.def.json msgctxt "jerk_print description" msgid "The maximum instantaneous velocity change of the print head." -msgstr "A mudança de velocidade instantânea máxima da cabeça de impressão." +msgstr "A velocidade instantânea máxima num movimento brusco da cabeça de impressão." #: fdmprinter.def.json msgctxt "jerk_infill label" msgid "Infill Jerk" -msgstr "Solavanco de preenchimento" +msgstr "Jerk do Enchimento" #: fdmprinter.def.json msgctxt "jerk_infill description" msgid "The maximum instantaneous velocity change with which infill is printed." -msgstr "A mudança de velocidade instantânea máxima com a qual o preenchimento é impresso." +msgstr "A mudança de velocidade instantânea máxima com a qual o enchimento é impresso." #: fdmprinter.def.json msgctxt "jerk_wall label" msgid "Wall Jerk" -msgstr "Solavanco de parede" +msgstr "Jerk das Paredes" #: fdmprinter.def.json msgctxt "jerk_wall description" -msgid "" -"The maximum instantaneous velocity change with which the walls are printed." +msgid "The maximum instantaneous velocity change with which the walls are printed." msgstr "A mudança de velocidade instantânea máxima com a qual as paredes são impressas." #: fdmprinter.def.json msgctxt "jerk_wall_0 label" msgid "Outer Wall Jerk" -msgstr "Solavanco de parede externa" +msgstr "Jerk da Parede Exterior" #: fdmprinter.def.json msgctxt "jerk_wall_0 description" -msgid "" -"The maximum instantaneous velocity change with which the outermost walls are " -"printed." -msgstr "A mudança de velocidade instantânea máxima com a qual as paredes externas são impressas." +msgid "The maximum instantaneous velocity change with which the outermost walls are printed." +msgstr "A mudança de velocidade instantânea máxima com a qual as paredes exteriores são impressas." #: fdmprinter.def.json msgctxt "jerk_wall_x label" msgid "Inner Wall Jerk" -msgstr "Solavanco de parede interna" +msgstr "Jerk das Paredes Interiores" #: fdmprinter.def.json msgctxt "jerk_wall_x description" -msgid "" -"The maximum instantaneous velocity change with which all inner walls are " -"printed." -msgstr "A mudança de velocidade instantânea máxima com a qual todas as paredes internas são impressas." +msgid "The maximum instantaneous velocity change with which all inner walls are printed." +msgstr "A mudança de velocidade instantânea máxima com a qual todas as paredes interiores são impressas." #: fdmprinter.def.json msgctxt "jerk_roofing label" msgid "Top Surface Skin Jerk" -msgstr "Solavanco de revestimento da superfície superior" +msgstr "Jerk Revestimento Superior" #: fdmprinter.def.json msgctxt "jerk_roofing description" -msgid "" -"The maximum instantaneous velocity change with which top surface skin layers " -"are printed." +msgid "The maximum instantaneous velocity change with which top surface skin layers are printed." msgstr "A mudança de velocidade instantânea máxima com a qual as camadas de revestimento da superfície superior são impressas." #: fdmprinter.def.json msgctxt "jerk_topbottom label" msgid "Top/Bottom Jerk" -msgstr "Solavanco superior/inferior" +msgstr "Jerk Superior/Inferior" #: fdmprinter.def.json msgctxt "jerk_topbottom description" -msgid "" -"The maximum instantaneous velocity change with which top/bottom layers are " -"printed." +msgid "The maximum instantaneous velocity change with which top/bottom layers are printed." msgstr "A mudança de velocidade instantânea máxima com a qual as camadas superiores/inferiores são impressas." #: fdmprinter.def.json msgctxt "jerk_support label" msgid "Support Jerk" -msgstr "Solavanco de suporte" +msgstr "Jerk do Suporte" #: fdmprinter.def.json msgctxt "jerk_support description" -msgid "" -"The maximum instantaneous velocity change with which the support structure " -"is printed." +msgid "The maximum instantaneous velocity change with which the support structure is printed." msgstr "A mudança de velocidade instantânea máxima com a qual a estrutura de suporte é impressa." #: fdmprinter.def.json msgctxt "jerk_support_infill label" msgid "Support Infill Jerk" -msgstr "Solavanco de preenchimento do suporte" +msgstr "Jerk do Enchimento do Suporte" #: fdmprinter.def.json msgctxt "jerk_support_infill description" -msgid "" -"The maximum instantaneous velocity change with which the infill of support " -"is printed." -msgstr "A mudança de velocidade instantânea máxima com a qual o preenchimento do suporte é impresso." +msgid "The maximum instantaneous velocity change with which the infill of support is printed." +msgstr "A mudança de velocidade instantânea máxima com a qual o enchimento do suporte é impresso." #: fdmprinter.def.json msgctxt "jerk_support_interface label" msgid "Support Interface Jerk" -msgstr "Solavanco de interface de suporte" +msgstr "Jerk da Interface do Suporte" #: fdmprinter.def.json msgctxt "jerk_support_interface description" -msgid "" -"The maximum instantaneous velocity change with which the roofs and floors of " -"support are printed." -msgstr "A mudança de velocidade instantânea máxima com a qual os tetos e pisos de suporte são impressos." +msgid "The maximum instantaneous velocity change with which the roofs and floors of support are printed." +msgstr "A mudança de velocidade instantânea máxima com a qual os tectos e pisos de suporte são impressos." #: fdmprinter.def.json msgctxt "jerk_support_roof label" msgid "Support Roof Jerk" -msgstr "Solavanco de teto de suporte" +msgstr "Jerk do Tecto do Suporte" #: fdmprinter.def.json msgctxt "jerk_support_roof description" -msgid "" -"The maximum instantaneous velocity change with which the roofs of support " -"are printed." -msgstr "A mudança de velocidade instantânea máxima com a qual os tetos de suporte são impressos." +msgid "The maximum instantaneous velocity change with which the roofs of support are printed." +msgstr "A mudança de velocidade instantânea máxima com a qual os tectos de suporte são impressos." +# rever! +# piso? #: fdmprinter.def.json msgctxt "jerk_support_bottom label" msgid "Support Floor Jerk" -msgstr "Solavanco de piso de suporte" +msgstr "Jerk do Piso do Suporte" #: fdmprinter.def.json msgctxt "jerk_support_bottom description" -msgid "" -"The maximum instantaneous velocity change with which the floors of support " -"are printed." +msgid "The maximum instantaneous velocity change with which the floors of support are printed." msgstr "A mudança de velocidade instantânea máxima com a qual os pisos de suporte são impressos." #: fdmprinter.def.json msgctxt "jerk_prime_tower label" msgid "Prime Tower Jerk" -msgstr "Solavanco da torre de preparação" +msgstr "Jerk da Torre de Preparação" #: fdmprinter.def.json msgctxt "jerk_prime_tower description" -msgid "" -"The maximum instantaneous velocity change with which the prime tower is " -"printed." +msgid "The maximum instantaneous velocity change with which the prime tower is printed." msgstr "A mudança de velocidade instantânea máxima com a qual a torre de preparação é impressa." #: fdmprinter.def.json msgctxt "jerk_travel label" msgid "Travel Jerk" -msgstr "Solavanco de deslocação" +msgstr "Jerk de Deslocação" #: fdmprinter.def.json msgctxt "jerk_travel description" -msgid "" -"The maximum instantaneous velocity change with which travel moves are made." +msgid "The maximum instantaneous velocity change with which travel moves are made." msgstr "A mudança de velocidade instantânea máxima com a qual os movimentos de deslocação são impressos." #: fdmprinter.def.json msgctxt "jerk_layer_0 label" msgid "Initial Layer Jerk" -msgstr "Solavanco de camada inicial" +msgstr "Jerk da Camada Inicial" #: fdmprinter.def.json msgctxt "jerk_layer_0 description" @@ -2924,19 +2616,17 @@ msgstr "A mudança de velocidade instantânea máxima de impressão para a camad #: fdmprinter.def.json msgctxt "jerk_print_layer_0 label" msgid "Initial Layer Print Jerk" -msgstr "Solavanco de impressão da camada inicial" +msgstr "Jerk Impressão Camada Inicial" #: fdmprinter.def.json msgctxt "jerk_print_layer_0 description" -msgid "" -"The maximum instantaneous velocity change during the printing of the initial " -"layer." +msgid "The maximum instantaneous velocity change during the printing of the initial layer." msgstr "A mudança de velocidade instantânea máxima durante a impressão da camada inicial." #: fdmprinter.def.json msgctxt "jerk_travel_layer_0 label" msgid "Initial Layer Travel Jerk" -msgstr "Solavanco de deslocação da camada inicial" +msgstr "Jerk Deslocação Camada Inicial" #: fdmprinter.def.json msgctxt "jerk_travel_layer_0 description" @@ -2946,15 +2636,20 @@ msgstr "A aceleração dos movimentos de deslocação na camada inicial." #: fdmprinter.def.json msgctxt "jerk_skirt_brim label" msgid "Skirt/Brim Jerk" -msgstr "Solavanco de contorno/borda" +msgstr "Jerk de Contorno / Aba" #: fdmprinter.def.json msgctxt "jerk_skirt_brim description" -msgid "" -"The maximum instantaneous velocity change with which the skirt and brim are " -"printed." -msgstr "A mudança de velocidade instantânea máxima com a qual o contorno e a borda são impressos." +msgid "The maximum instantaneous velocity change with which the skirt and brim are printed." +msgstr "A mudança de velocidade instantânea máxima com a qual o contorno e a aba são impressos." +# rever! +# Deslocação? +# Deslocamento? +# Movimento? +# Viagem? +# Trajectória? +# Travel? #: fdmprinter.def.json msgctxt "travel label" msgid "Travel" @@ -2968,17 +2663,12 @@ msgstr "deslocação" #: fdmprinter.def.json msgctxt "retraction_combing label" msgid "Combing Mode" -msgstr "Modo de combing" +msgstr "Modo de Combing" #: fdmprinter.def.json msgctxt "retraction_combing description" -msgid "" -"Combing keeps the nozzle within already printed areas when traveling. This " -"results in slightly longer travel moves but reduces the need for " -"retractions. If combing is off, the material will retract and the nozzle " -"moves in a straight line to the next point. It is also possible to avoid " -"combing over top/bottom skin areas by combing within the infill only." -msgstr "O combing mantém o bocal nas áreas já impressas durante a deslocação. Isto resulta em movimentos de deslocação ligeiramente mais longos, mas reduz a necessidade de retrações. Se o combing estiver desativado, o material será retraído e o bocal irá deslocar-se em linha reta para o próximo ponto. Também é possível evitar o combing em áreas de revestimento superiores/inferiores efetuando o combing apenas no preenchimento." +msgid "Combing keeps the nozzle within already printed areas when traveling. This results in slightly longer travel moves but reduces the need for retractions. If combing is off, the material will retract and the nozzle moves in a straight line to the next point. It is also possible to avoid combing over top/bottom skin areas by combing within the infill only." +msgstr "\"Combing\" mantém o nozzle dentro das áreas já impressas durante o movimento. Isto resulta em movimentos ligeiramente mais longos, mas reduz a necessidade de retrações. Se o \"Combing\" estiver desativado, o material será retraído e o nozzle irá deslocar-se em linha recta para o próximo ponto. Também é possível evitar o \"Combing\" em áreas de revestimento superiores/inferiores efetuando o \"Combing\" apenas dentro do enchimento." #: fdmprinter.def.json msgctxt "retraction_combing option off" @@ -2993,29 +2683,27 @@ msgstr "Tudo" #: fdmprinter.def.json msgctxt "retraction_combing option noskin" msgid "No Skin" -msgstr "Sem revestimento" +msgstr "Sem Revestimento" #: fdmprinter.def.json msgctxt "travel_retract_before_outer_wall label" msgid "Retract Before Outer Wall" -msgstr "Retrair antes da parede externa" +msgstr "Retrair Antes Parede Exterior" #: fdmprinter.def.json msgctxt "travel_retract_before_outer_wall description" msgid "Always retract when moving to start an outer wall." -msgstr "Retrair sempre durante o movimento de início de uma parede externa." +msgstr "Retrair sempre quando se vai começar uma parede exterior." #: fdmprinter.def.json msgctxt "travel_avoid_other_parts label" msgid "Avoid Printed Parts When Traveling" -msgstr "Evitar peças impressas durante a deslocação" +msgstr "Evitar Áreas Impressas Durante Movimento" #: fdmprinter.def.json msgctxt "travel_avoid_other_parts description" -msgid "" -"The nozzle avoids already printed parts when traveling. This option is only " -"available when combing is enabled." -msgstr "O bocal evita as peças já impressas durante a deslocação. Esta opção só está disponível quando o combing está ativado." +msgid "The nozzle avoids already printed parts when traveling. This option is only available when combing is enabled." +msgstr "O nozzle evita as áreas já impressas durante a deslocação. Esta opção só está disponível quando o combing está ativado." #: fdmprinter.def.json msgctxt "travel_avoid_distance label" @@ -3024,62 +2712,48 @@ msgstr "Distância para evitar peças durante a deslocação" #: fdmprinter.def.json 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 bocal e as peças já impressas ao evitá-las durante os movimentos de deslocação." +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 "Iniciar camadas com a mesma peça" +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, comece por imprimir o objeto junto ao mesmo ponto para não iniciar uma nova camada imprimindo a peça com a qual terminou a camada anterior. Isto produz melhores saliências e pequenas peças, mas aumenta o tempo de impressão." +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" -msgstr "X de início da camada" +msgstr "X Início Camada" #: fdmprinter.def.json msgctxt "layer_start_x description" -msgid "" -"The X coordinate of the position near where to find the part to start " -"printing each layer." +msgid "The X coordinate of the position near where to find the part to start printing each layer." msgstr "A coordenada X da posição próxima do local onde se situa a peça pela qual iniciar a impressão de cada camada." #: fdmprinter.def.json msgctxt "layer_start_y label" msgid "Layer Start Y" -msgstr "Y de início da camada" +msgstr "Y Início Camada" #: fdmprinter.def.json msgctxt "layer_start_y description" -msgid "" -"The Y coordinate of the position near where to find the part to start " -"printing each layer." +msgid "The Y coordinate of the position near where to find the part to start printing each layer." msgstr "A coordenada Y da posição do local onde se situa a peça pela qual iniciar a impressão de cada camada." #: fdmprinter.def.json msgctxt "retraction_hop_enabled label" msgid "Z Hop When Retracted" -msgstr "Salto Z ao retrair" +msgstr "Salto-Z ao Retrair" #: fdmprinter.def.json msgctxt "retraction_hop_enabled description" -msgid "" -"Whenever a retraction is done, the build plate is lowered to create " -"clearance between the nozzle and the print. It prevents the nozzle from " -"hitting the print during travel moves, reducing the chance to knock the " -"print from the build plate." -msgstr "Sempre que for efetuada uma retração, a placa de construção é baixada para criar uma folga entre o bocal e a impressão. Desta forma, evita-se que o bocal atinja a impressão durante os movimentos de deslocação, reduzindo a probabilidade de derrubar a impressão da placa de construção." +msgid "Whenever a retraction is done, the build plate is lowered to create clearance between the nozzle and the print. It prevents the nozzle from hitting the print during travel moves, reducing the chance to knock the print from the build plate." +msgstr "Sempre que for efetuada uma retração, a base de construção é rebaixada para criar uma folga entre o nozzle e a impressão. Desta forma, evita-se que o nozzle atinja a impressão durante os movimentos de deslocação, reduzindo a probabilidade de derrubar a impressão da base de construção." #: fdmprinter.def.json msgctxt "retraction_hop_only_when_collides label" @@ -3088,34 +2762,39 @@ msgstr "Salto Z apenas sobre as peças impressas" #: fdmprinter.def.json msgctxt "retraction_hop_only_when_collides description" -msgid "" -"Only perform a Z Hop when moving over printed parts which cannot be avoided " -"by horizontal motion by Avoid Printed Parts when Traveling." -msgstr "Efetua um salto Z apenas ao deslocar-se sobre as peças impressas que não podem ser evitadas pelo movimento horizontal através da opção Evitar peças impressas durante a deslocação." +msgid "Only perform a Z Hop when moving over printed parts which cannot be avoided by horizontal motion by Avoid Printed Parts when Traveling." +msgstr "Efetua um salto Z apenas ao deslocar-se sobre as peças impressas que não podem ser evitadas pelo movimento horizontal através da opção Evitar Peças impressas durante a deslocação." #: fdmprinter.def.json msgctxt "retraction_hop label" msgid "Z Hop Height" -msgstr "Altura do salto Z" +msgstr "Altura do Salto-Z" #: fdmprinter.def.json msgctxt "retraction_hop description" msgid "The height difference when performing a Z Hop." -msgstr "A diferença de altura ao efetuar um salto Z." +msgstr "A diferença de altura ao efetuar um Salto-Z." +# rever! +# Salto? +# Pulo? +# Rebaixar? #: fdmprinter.def.json msgctxt "retraction_hop_after_extruder_switch label" msgid "Z Hop After Extruder Switch" -msgstr "Salto Z após substituição da extrusora" +msgstr "Salto-Z Após Mudança Extrusor" +# rever! #: fdmprinter.def.json msgctxt "retraction_hop_after_extruder_switch description" -msgid "" -"After the machine switched from one extruder to the other, the build plate " -"is lowered to create clearance between the nozzle and the print. This " -"prevents the nozzle from leaving oozed material on the outside of a print." -msgstr "Após a máquina mudar de uma extrusora para outra, a placa de construção é baixada para criar uma folga entre o bocal e a impressão. Desta forma, evita-se que o bocal liberte material vazado para a parte exterior de uma impressão." +msgid "After the machine switched from one extruder to the other, the build plate is lowered to create clearance between the nozzle and the print. This prevents the nozzle from leaving oozed material on the outside of a print." +msgstr "Após a máquina mudar de um extrusor para outro, a base de construção é rebaixada para criar uma folga entre o nozzle e a impressão. Desta forma, evita-se que o nozzle deixe, na parte exterior de uma impressão, algum material que possa escorrer quando acaba de imprimir." +# rever! +# todoas as strings de Arrefecimento +# limiar? +# intervalo? +# limite? #: fdmprinter.def.json msgctxt "cooling label" msgid "Cooling" @@ -3129,102 +2808,87 @@ msgstr "Arrefecimento" #: fdmprinter.def.json msgctxt "cool_fan_enabled label" msgid "Enable Print Cooling" -msgstr "Ativar arrefecimento de impressão" +msgstr "Ativar Arrefecimento Impressão" #: fdmprinter.def.json msgctxt "cool_fan_enabled description" -msgid "" -"Enables the print cooling fans while printing. The fans improve print " -"quality on layers with short layer times and bridging / overhangs." -msgstr "Ativa as ventoinhas de arrefecimento de impressão ao imprimir. As ventoinhas melhoram a qualidade de impressão com menores tempos de camada e pontes/saliências." +msgid "Enables the print cooling fans while printing. The fans improve print quality on layers with short layer times and bridging / overhangs." +msgstr "Ativa os ventiladores de arrefecimento durante a impressão. Os ventiladores melhoram a qualidade de impressão, nas camadas que têm uma curta duração de impressão e / ou nas partes do modelo que contêm vãos / saliências." #: fdmprinter.def.json msgctxt "cool_fan_speed label" msgid "Fan Speed" -msgstr "Velocidade da ventoinha" +msgstr "Velocidade Ventiladores" +# rever! +# ...giram. +# A velocidade a que giram os ventiladores... +# rotação? +# A velocidade de rotação dos ventiladores... #: fdmprinter.def.json msgctxt "cool_fan_speed description" msgid "The speed at which the print cooling fans spin." -msgstr "A velocidade a que as ventoinhas de arrefecimento da impressão giram." +msgstr "A velocidade de rotação dos ventiladores de arrefecimento da impressão." #: fdmprinter.def.json msgctxt "cool_fan_speed_min label" msgid "Regular Fan Speed" -msgstr "Velocidade normal da ventoinha" +msgstr "Velocidade Normal Ventiladores" #: fdmprinter.def.json 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 "A velocidade a que as ventoinhas giram antes de atingir o limiar. Quando uma camada é impressa mais rapidamente do que o limiar, a velocidade da ventoinha tende gradualmente a aproximar-se da velocidade máxima." +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 "A velocidade a que os ventiladores giram antes de atingir o limiar. Quando uma camada é impressa mais rapidamente do que o limiar, a velocidade do ventilador tende gradualmente a aproximar-se da velocidade máxima." #: fdmprinter.def.json msgctxt "cool_fan_speed_max label" msgid "Maximum Fan Speed" -msgstr "Velocidade máxima da ventoinha" +msgstr "Velocidade Máxima Ventiladores" #: fdmprinter.def.json msgctxt "cool_fan_speed_max description" -msgid "" -"The speed at which the fans spin on the minimum layer time. The fan speed " -"gradually increases between the regular fan speed and maximum fan speed when " -"the threshold is hit." -msgstr "A velocidade a que as ventoinhas giram no tempo mínimo de camada. A velocidade da ventoinha aumenta gradualmente entre a velocidade normal da ventoinha e a velocidade máxima da ventoinha quando o limiar é alcançado." +msgid "The speed at which the fans spin on the minimum layer time. The fan speed gradually increases between the regular fan speed and maximum fan speed when the threshold is hit." +msgstr "A velocidade a que os ventiladores giram no tempo mínimo de camada. A velocidade do ventilador aumenta gradualmente entre a velocidade normal do ventilador e a velocidade máxima do ventilador quando o limiar é alcançado." #: fdmprinter.def.json msgctxt "cool_min_layer_time_fan_speed_max label" msgid "Regular/Maximum Fan Speed Threshold" -msgstr "Limiar de velocidade normal/máxima da ventoinha" +msgstr "Limiar Normal / Máximo Velocidade Ventilador" #: fdmprinter.def.json msgctxt "cool_min_layer_time_fan_speed_max description" -msgid "" -"The layer time which sets the threshold between regular fan speed and " -"maximum fan speed. Layers that print slower than this time use regular fan " -"speed. For faster layers the fan speed gradually increases towards the " -"maximum fan speed." -msgstr "O tempo de camada que define o limiar entre a velocidade normal da ventoinha e a velocidade máxima da ventoinha. As camadas que são impressas mais lentamente utilizam a velocidade normal da ventoinha. Para camadas mais rápidas, a velocidade da ventoinha aumenta gradualmente até à velocidade máxima." +msgid "The layer time which sets the threshold between regular fan speed and maximum fan speed. Layers that print slower than this time use regular fan speed. For faster layers the fan speed gradually increases towards the maximum fan speed." +msgstr "O tempo de camada que define o limiar entre a velocidade normal e a velocidade máxima do ventilador. As camadas que são impressas mais lentamente utilizam a velocidade normal do ventilador. Para camadas mais rápidas, a velocidade do ventilador aumenta gradualmente até à velocidade máxima." #: fdmprinter.def.json msgctxt "cool_fan_speed_0 label" msgid "Initial Fan Speed" -msgstr "Velocidade inicial da ventoinha" +msgstr "Velocidade Inicial do ventilador" #: fdmprinter.def.json 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 "A velocidade a que as ventoinhas giram ao iniciar a impressão. Nas camadas subsequentes, a velocidade da ventoinha aumenta gradualmente até à camada correspondente à Velocidade normal da ventoinha em altura." +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 "A velocidade a que os ventiladores giram ao iniciar a impressão. Nas camadas subsequentes, a velocidade do ventilador aumenta gradualmente até à camada correspondente à Velocidade normal do ventilador em altura." #: fdmprinter.def.json msgctxt "cool_fan_full_at_height label" msgid "Regular Fan Speed at Height" -msgstr "Velocidade normal da ventoinha em altura" +msgstr "Altura Velocidade Normal Ventilador" #: fdmprinter.def.json msgctxt "cool_fan_full_at_height description" -msgid "" -"The height at which the fans spin on regular fan speed. At the layers below " -"the fan speed gradually increases from Initial Fan Speed to Regular Fan " -"Speed." -msgstr "A altura a que as ventoinhas giram à velocidade normal da ventoinha. Nas camadas inferiores, a velocidade da ventoinha aumenta gradualmente da Velocidade inicial da ventoinha para a Velocidade normal da ventoinha." +msgid "The height at which the fans spin on regular fan speed. At the layers below the fan speed gradually increases from Initial Fan Speed to Regular Fan Speed." +msgstr "A altura a que os ventiladores giram à velocidade normal. Nas camadas inferiores, a velocidade do ventilador aumenta gradualmente da Velocidade Inicial até a Velocidade Normal do ventilador." #: fdmprinter.def.json msgctxt "cool_fan_full_layer label" msgid "Regular Fan Speed at Layer" -msgstr "Velocidade normal da ventoinha na camada" +msgstr "Camada Velocidade Normal Ventilador" #: fdmprinter.def.json msgctxt "cool_fan_full_layer description" -msgid "" -"The layer at which the fans spin on regular fan speed. If regular fan speed " -"at height is set, this value is calculated and rounded to a whole number." -msgstr "A camada na qual as ventoinhas giram à velocidade normal da ventoinha. Se for definida a velocidade normal da ventoinha em altura, este valor é calculado e arredondado para um número inteiro." +msgid "The layer at which the fans spin on regular fan speed. If regular fan speed at height is set, this value is calculated and rounded to a whole number." +msgstr "A camada na qual os ventiladores giram à velocidade normal do ventilador. Se a Altura para Velocidade Normal do ventilador estiver definida , este valor é calculado e arredondado para um número inteiro." #: fdmprinter.def.json msgctxt "cool_min_layer_time label" @@ -3233,133 +2897,108 @@ msgstr "Tempo mínimo por camada" #: fdmprinter.def.json msgctxt "cool_min_layer_time description" -msgid "" -"The minimum time spent in a layer. This forces the printer to slow down, to " -"at least spend the time set here in one layer. This allows the printed " -"material to cool down properly before printing the next layer. Layers may " -"still take shorter than the minimal layer time if Lift Head is disabled and " -"if the Minimum Speed would otherwise be violated." -msgstr "O tempo mínimo gasto numa camada. Isto força a impressora a abrandar para que, no mínimo, o tempo aqui definido seja gasto numa camada. Isto permite que o material impresso arrefeça devidamente antes de imprimir a camada seguinte. Ainda assim, as camadas podem demorar menos do que o tempo mínimo por camada se a opção Elevar cabeça estiver desativada e se a Velocidade mínima for desrespeitada." +msgid "The minimum time spent in a layer. This forces the printer to slow down, to at least spend the time set here in one layer. This allows the printed material to cool down properly before printing the next layer. Layers may still take shorter than the minimal layer time if Lift Head is disabled and if the Minimum Speed would otherwise be violated." +msgstr "O tempo mínimo gasto numa camada. Isto força a impressora a abrandar para que, no mínimo, o tempo aqui definido seja gasto numa camada. Isto permite que o material impresso arrefeça devidamente antes de imprimir a camada seguinte. Ainda assim, as camadas podem demorar menos do que o tempo mínimo por camada se a opção Elevar Cabeça estiver desativada e se a Velocidade Mínima for desrespeitada." #: fdmprinter.def.json msgctxt "cool_min_speed label" msgid "Minimum Speed" -msgstr "Velocidade mínima" +msgstr "Velocidade Mínima" #: fdmprinter.def.json msgctxt "cool_min_speed description" -msgid "" -"The minimum print speed, despite slowing down due to the minimum layer time. " -"When the printer would slow down too much, the pressure in the nozzle would " -"be too low and result in bad print quality." -msgstr "A velocidade mínima de impressão, apesar do abrandamento devido ao tempo mínimo por camada. Se a impressora abrandar demasiado, a pressão do bocal será demasiado baixa, o que resultará numa má qualidade de impressão." +msgid "The minimum print speed, despite slowing down due to the minimum layer time. When the printer would slow down too much, the pressure in the nozzle would be too low and result in bad print quality." +msgstr "A velocidade mínima de impressão, apesar do abrandamento devido ao tempo mínimo por camada. Se a impressora abrandar demasiado, a pressão no nozzle será demasiado baixa, o que resultará numa má qualidade de impressão." #: fdmprinter.def.json msgctxt "cool_lift_head label" msgid "Lift Head" -msgstr "Elevar cabeça" +msgstr "Elevar Cabeça" #: fdmprinter.def.json msgctxt "cool_lift_head description" -msgid "" -"When the minimum speed is hit because of minimum layer time, lift the head " -"away from the print and wait the extra time until the minimum layer time is " -"reached." -msgstr "Quando a velocidade mínima for alcançada devido ao tempo mínimo por camada, eleve e afaste a cabeça da impressão e aguarde o tempo adicional até atingir o tempo mínimo por camada." +msgid "When the minimum speed is hit because of minimum layer time, lift the head away from the print and wait the extra time until the minimum layer time is reached." +msgstr "Quando a velocidade mínima for alcançada devido ao tempo mínimo por camada, elevar e afastar a cabeça da impressão e aguardar o tempo adicional até atingir o tempo mínimo por camada." #: fdmprinter.def.json msgctxt "support label" msgid "Support" -msgstr "Suporte" +msgstr "Suportes" #: fdmprinter.def.json msgctxt "support description" msgid "Support" -msgstr "Suporte" +msgstr "Suportes" #: fdmprinter.def.json msgctxt "support_enable label" msgid "Generate Support" -msgstr "Gerar suporte" +msgstr "Criar Suportes" #: fdmprinter.def.json msgctxt "support_enable description" -msgid "" -"Generate structures to support parts of the model which have overhangs. " -"Without these structures, such parts would collapse during printing." -msgstr "Gera estruturas para suportar peças do modelo com saliências. Sem estas estruturas, essas peças desintegrar-se-iam durante a impressão." +msgid "Generate structures to support parts of the model which have overhangs. Without these structures, such parts would collapse during printing." +msgstr "Criar estruturas para suportar partes do modelo, suspensas ou com saliências. Sem estas estruturas, essas partes do modelo podem deformar-se ou mesmo desmoronar durante a impressão." #: fdmprinter.def.json msgctxt "support_extruder_nr label" msgid "Support Extruder" -msgstr "Extrusora de suporte" +msgstr "Extrusor dos Suportes" #: fdmprinter.def.json msgctxt "support_extruder_nr description" -msgid "" -"The extruder train to use for printing the support. This is used in multi-" -"extrusion." -msgstr "A máquina de extrusão a ser utilizada para imprimir o suporte. Esta é utilizada em extrusões múltiplas." +msgid "The extruder train to use for printing the support. This is used in multi-extrusion." +msgstr "O núcleo de extrusão utilizado para imprimir os suportes. Definição usada com múltiplos extrusores." #: fdmprinter.def.json msgctxt "support_infill_extruder_nr label" msgid "Support Infill Extruder" -msgstr "Extrusora de preenchimento do suporte" +msgstr "Extrusor de enchimento do suporte" #: fdmprinter.def.json msgctxt "support_infill_extruder_nr description" -msgid "" -"The extruder train to use for printing the infill of the support. This is " -"used in multi-extrusion." -msgstr "A máquina de extrusão a ser utilizada para imprimir o preenchimento do suporte. Esta é utilizada em extrusões múltiplas." +msgid "The extruder train to use for printing the infill of the support. This is used in multi-extrusion." +msgstr "O núcleo de extrusão utilizado para imprimir o enchimento dos suportes. Definição usada com múltiplos extrusores." #: fdmprinter.def.json msgctxt "support_extruder_nr_layer_0 label" msgid "First Layer Support Extruder" -msgstr "Extrusora de suporte da primeira camada" +msgstr "Extrusor de suporte da primeira camada" #: fdmprinter.def.json msgctxt "support_extruder_nr_layer_0 description" -msgid "" -"The extruder train to use for printing the first layer of support infill. " -"This is used in multi-extrusion." -msgstr "A máquina de extrusão a ser utilizada para imprimir a primeira camada de preenchimento do suporte. Esta é utilizada em extrusões múltiplas." +msgid "The extruder train to use for printing the first layer of support infill. This is used in multi-extrusion." +msgstr "O núcleo de extrusão utilizado para imprimir a primeira camada de enchimento dos suportes. Definição usada com múltiplos extrusores." #: fdmprinter.def.json msgctxt "support_interface_extruder_nr label" msgid "Support Interface Extruder" -msgstr "Extrusora de interface de suporte" +msgstr "Extrusor de interface de suporte" #: fdmprinter.def.json msgctxt "support_interface_extruder_nr description" -msgid "" -"The extruder train to use for printing the roofs and floors of the support. " -"This is used in multi-extrusion." -msgstr "A máquina de extrusão a ser utilizada para imprimir os tetos e pisos do suporte. Esta é utilizada em extrusões múltiplas." +msgid "The extruder train to use for printing the roofs and floors of the support. This is used in multi-extrusion." +msgstr "O núcleo de extrusão utilizado para imprimir os tectos e pisos do suporte. Definição usada com múltiplos extrusores." #: fdmprinter.def.json msgctxt "support_roof_extruder_nr label" msgid "Support Roof Extruder" -msgstr "Extrusora de teto de suporte" +msgstr "Extrusor de tecto de suporte" #: fdmprinter.def.json msgctxt "support_roof_extruder_nr description" -msgid "" -"The extruder train to use for printing the roofs of the support. This is " -"used in multi-extrusion." -msgstr "A máquina de extrusão a ser utilizada para imprimir os tetos de suporte. Esta é utilizada em extrusões múltiplas." +msgid "The extruder train to use for printing the roofs of the support. This is used in multi-extrusion." +msgstr "O núcleo de extrusão utilizado para imprimir os tectos do suporte. Definição usada com múltiplos extrusores." #: fdmprinter.def.json msgctxt "support_bottom_extruder_nr label" msgid "Support Floor Extruder" -msgstr "Extrusora de piso de suporte" +msgstr "Extrusor de piso de suporte" #: fdmprinter.def.json msgctxt "support_bottom_extruder_nr description" -msgid "" -"The extruder train to use for printing the floors of the support. This is " -"used in multi-extrusion." -msgstr "A máquina de extrusão a ser utilizada para imprimir os pisos de suporte. Esta é utilizada em extrusões múltiplas." +msgid "The extruder train to use for printing the floors of the support. This is used in multi-extrusion." +msgstr "O núcleo de extrusão utilizado para imprimir os pisos do suporte. Definição usada com múltiplos extrusores." #: fdmprinter.def.json msgctxt "support_type label" @@ -3368,16 +3007,13 @@ msgstr "Colocação do suporte" #: fdmprinter.def.json msgctxt "support_type description" -msgid "" -"Adjusts the placement of the support structures. The placement can be set to " -"touching build plate or everywhere. When set to everywhere the support " -"structures will also be printed on the model." -msgstr "Ajusta a colocação das estruturas de suporte. A colocação pode ser definida para tocar na placa de construção ou em todo o lado. Quando definida para tocar em todo o lado, as estruturas de suporte também serão impressas no modelo." +msgid "Adjusts the placement of the support structures. The placement can be set to touching build plate or everywhere. When set to everywhere the support structures will also be printed on the model." +msgstr "Ajusta a colocação das estruturas de suporte. A colocação pode ser definida para tocar na base de construção ou em todo o lado. Quando definida para tocar em todo o lado, as estruturas de suporte também serão impressas no modelo." #: fdmprinter.def.json msgctxt "support_type option buildplate" msgid "Touching Buildplate" -msgstr "Tocar na placa de construção" +msgstr "A Tocar na base de construção" #: fdmprinter.def.json msgctxt "support_type option everywhere" @@ -3387,26 +3023,22 @@ msgstr "Em todo o lado" #: fdmprinter.def.json msgctxt "support_angle label" msgid "Support Overhang Angle" -msgstr "Ângulo de saliência de suporte" +msgstr "Ângulo Saliência para Suportes" #: fdmprinter.def.json msgctxt "support_angle description" -msgid "" -"The minimum angle of overhangs for which support is added. At a value of 0° " -"all overhangs are supported, 90° will not provide any support." -msgstr "O ângulo mínimo de saliências ao qual é adicionado suporte. Com um valor de 0°, todas as saliências são suportadas e com um valor de 90° não será fornecido qualquer suporte." +msgid "The minimum angle of overhangs for which support is added. At a value of 0° all overhangs are supported, 90° will not provide any support." +msgstr "O ângulo mínimo das saliências ao qual é adicionado suportes. Com um valor de 0°, todas as saliências são suportadas e um valor de 90° não irá gerar qualquer suporte." #: fdmprinter.def.json msgctxt "support_pattern label" msgid "Support Pattern" -msgstr "Padrão de suporte" +msgstr "Padrão de Suportes" #: fdmprinter.def.json msgctxt "support_pattern description" -msgid "" -"The pattern of the support structures of the print. The different options " -"available result in sturdy or easy to remove support." -msgstr "O padrão das estruturas de suporte da impressão. As diferentes opções disponíveis resultam num suporte robusto ou de fácil remoção." +msgid "The pattern of the support structures of the print. The different options available result in sturdy or easy to remove support." +msgstr "O padrão geométrico das estruturas de suporte da impressão. As diferentes opções disponíveis resultam num suporte robusto ou de fácil remoção." #: fdmprinter.def.json msgctxt "support_pattern option lines" @@ -3450,9 +3082,7 @@ msgstr "Ligar ziguezagues de suporte" #: fdmprinter.def.json msgctxt "support_connect_zigzags description" -msgid "" -"Connect the ZigZags. This will increase the strength of the zig zag support " -"structure." +msgid "Connect the ZigZags. This will increase the strength of the zig zag support structure." msgstr "Liga os ziguezagues. Isto irá aumentar a resistência da estrutura de suporte em ziguezague." #: fdmprinter.def.json @@ -3462,9 +3092,7 @@ msgstr "Densidade do suporte" #: fdmprinter.def.json msgctxt "support_infill_rate description" -msgid "" -"Adjusts the density of the support structure. A higher value results in " -"better overhangs, but the supports are harder to remove." +msgid "Adjusts the density of the support structure. A higher value results in better overhangs, but the supports are harder to remove." msgstr "Ajusta a densidade da estrutura de suporte. Um valor mais elevado resulta em melhores saliências, embora os suportes sejam mais difíceis de remover." #: fdmprinter.def.json @@ -3474,9 +3102,7 @@ msgstr "Distância da linha de suporte" #: fdmprinter.def.json msgctxt "support_line_distance description" -msgid "" -"Distance between the printed support structure lines. This setting is " -"calculated by the support density." +msgid "Distance between the printed support structure lines. This setting is calculated by the support density." msgstr "A distância entre as linhas da estrutura de suporte impressas. Esta definição é calculada através da densidade do suporte." #: fdmprinter.def.json @@ -3486,10 +3112,7 @@ msgstr "Distância Z de suporte" #: fdmprinter.def.json msgctxt "support_z_distance description" -msgid "" -"Distance from the top/bottom of the support structure to the print. This gap " -"provides clearance to remove the supports after the model is printed. This " -"value is rounded up to a multiple of the layer height." +msgid "Distance from the top/bottom of the support structure to the print. This gap provides clearance to remove the supports after the model is printed. This value is rounded up to a multiple of the layer height." msgstr "A distância entre a parte superior/inferior da estrutura de suporte e a impressão. Esta folga permite retirar os suportes depois de o modelo ser impresso. Este valor é arredondado para um múltiplo da altura da camada." #: fdmprinter.def.json @@ -3529,11 +3152,7 @@ msgstr "Prioridade da distância de suporte" #: fdmprinter.def.json msgctxt "support_xy_overrides_z description" -msgid "" -"Whether the Support X/Y Distance overrides the Support Z Distance or vice " -"versa. When X/Y overrides Z the X/Y distance can push away the support from " -"the model, influencing the actual Z distance to the overhang. We can disable " -"this by not applying the X/Y distance around overhangs." +msgid "Whether the Support X/Y Distance overrides the Support Z Distance or vice versa. When X/Y overrides Z the X/Y distance can push away the support from the model, influencing the actual Z distance to the overhang. We can disable this by not applying the X/Y distance around overhangs." msgstr "Se a Distância X/Y de suporte substitui a Distância Z de suporte ou vice-versa. Quando X/Y substitui Z, a distância X/Y pode afastar o suporte do modelo, influenciando a distância Z real relativamente às saliências. É possível desativar esta opção não aplicando a distância X/Y em torno das saliências." #: fdmprinter.def.json @@ -3553,36 +3172,28 @@ msgstr "Distância X/Y mínima de suporte" #: fdmprinter.def.json msgctxt "support_xy_distance_overhang description" -msgid "" -"Distance of the support structure from the overhang in the X/Y directions. " +msgid "Distance of the support structure from the overhang in the X/Y directions. " msgstr "A distância da estrutura de suporte relativamente às saliências nas direções X/Y. " #: fdmprinter.def.json msgctxt "support_bottom_stair_step_height label" msgid "Support Stair Step Height" -msgstr "Altura dos degraus de suporte" +msgstr "Altura Degraus Suporte" #: fdmprinter.def.json msgctxt "support_bottom_stair_step_height description" -msgid "" -"The height of the steps of the stair-like bottom of support resting on the " -"model. A low value makes the support harder to remove, but too high values " -"can lead to unstable support structures. Set to zero to turn off the stair-" -"like behaviour." -msgstr "A altura dos degraus da parte inferior semelhante a uma escada do suporte apoiado sobre o modelo. Um valor inferior dificulta a remoção do suporte, mas valores demasiado elevados podem resultar em estruturas de suporte instáveis. É definido como zero para desativar o comportamento semelhante a uma escada." +msgid "The height of the steps of the stair-like bottom of support resting on the model. A low value makes the support harder to remove, but too high values can lead to unstable support structures. Set to zero to turn off the stair-like behaviour." +msgstr "A altura dos degraus da parte inferior, semelhante a uma escada, do suporte apoiado sobre o modelo. Um valor pequeno dificulta a remoção do suporte, mas valores demasiado grandes podem resultar em estruturas de suporte instáveis. Definir como zero para desativar o comportamento semelhante a uma escada." #: fdmprinter.def.json msgctxt "support_bottom_stair_step_width label" msgid "Support Stair Step Maximum Width" -msgstr "Largura máxima dos degraus de suporte" +msgstr "Largura Máxima Degraus Suporte" #: fdmprinter.def.json msgctxt "support_bottom_stair_step_width description" -msgid "" -"The maximum width of the steps of the stair-like bottom of support resting " -"on the model. A low value makes the support harder to remove, but too high " -"values can lead to unstable support structures." -msgstr "A largura máxima dos degraus da parte inferior semelhante a uma escada do suporte apoiado sobre o modelo. Um valor inferior dificulta a remoção do suporte, mas valores demasiado elevados podem resultar em estruturas de suporte instáveis." +msgid "The maximum width of the steps of the stair-like bottom of support resting on the model. A low value makes the support harder to remove, but too high values can lead to unstable support structures." +msgstr "A largura máxima dos degraus da parte inferior, semelhante a uma escada, do suporte apoiado sobre o modelo. Um valor pequeno dificulta a remoção do suporte, mas valores demasiado grandes podem resultar em estruturas de suporte instáveis." #: fdmprinter.def.json msgctxt "support_join_distance label" @@ -3591,10 +3202,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 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 as estruturas separadas estão mais próximas do que este valor, as estruturas fundem-se numa só." #: fdmprinter.def.json @@ -3604,47 +3212,38 @@ msgstr "Expansão horizontal de suporte" #: fdmprinter.def.json msgctxt "support_offset description" -msgid "" -"Amount of offset applied to all support polygons in each layer. Positive " -"values can smooth out the support areas and result in more sturdy support." +msgid "Amount of offset applied to all support polygons in each layer. Positive values can smooth out the support areas and result in more sturdy support." msgstr "Quantidade de desvio aplicado a todos os polígonos de suporte em cada camada. Os valores positivos podem uniformizar as áreas de suporte e produzir suportes mais robustos." #: fdmprinter.def.json msgctxt "support_infill_sparse_thickness label" msgid "Support Infill Layer Thickness" -msgstr "Espessura da camada de preenchimento de suporte" +msgstr "Espessura da camada de enchimento de suporte" #: fdmprinter.def.json msgctxt "support_infill_sparse_thickness description" -msgid "" -"The thickness per layer of support infill material. This value should always " -"be a multiple of the layer height and is otherwise rounded." -msgstr "A espessura por camada de material de preenchimento de suporte. Este valor deve sempre ser um múltiplo da altura da camada. Caso contrário, será arredondado." +msgid "The thickness per layer of support infill material. This value should always be a multiple of the layer height and is otherwise rounded." +msgstr "A espessura por camada de material de enchimento de suporte. Este valor deve sempre ser um múltiplo da altura da camada. Caso contrário, será arredondado." #: fdmprinter.def.json msgctxt "gradual_support_infill_steps label" msgid "Gradual Support Infill Steps" -msgstr "Passos de preenchimento gradual de suporte" +msgstr "Passos de enchimento gradual de suporte" #: fdmprinter.def.json msgctxt "gradual_support_infill_steps description" -msgid "" -"Number of times to reduce the support infill density by half when getting " -"further below top surfaces. Areas which are closer to top surfaces get a " -"higher density, up to the Support Infill Density." -msgstr "O número de vezes que a densidade de preenchimento do suporte deve ser reduzida para metade ao alcançar superfícies superiores mais abaixo. As áreas que se encontram mais próximas das superfícies superiores obtêm uma maior densidade, até ao limite da Densidade de preenchimento do suporte." +msgid "Number of times to reduce the support infill density by half when getting further below top surfaces. Areas which are closer to top surfaces get a higher density, up to the Support Infill Density." +msgstr "O número de vezes que a densidade de enchimento do suporte deve ser reduzida para metade ao alcançar superfícies superiores mais abaixo. As áreas que se encontram mais próximas das superfícies superiores obtêm uma maior densidade, até ao limite da Densidade de enchimento do suporte." #: fdmprinter.def.json msgctxt "gradual_support_infill_step_height label" msgid "Gradual Support Infill Step Height" -msgstr "Altura do passo de preenchimento gradual de suporte" +msgstr "Altura do passo de enchimento gradual de suporte" #: fdmprinter.def.json msgctxt "gradual_support_infill_step_height description" -msgid "" -"The height of support infill of a given density before switching to half the " -"density." -msgstr "A altura do preenchimento de suporte de uma determinada densidade antes de mudar para metade da densidade." +msgid "The height of support infill of a given density before switching to half the density." +msgstr "A altura do enchimento de suporte de uma determinada densidade antes de mudar para metade da densidade." #: fdmprinter.def.json msgctxt "support_interface_enable label" @@ -3653,23 +3252,18 @@ msgstr "Ativar interface de suporte" #: fdmprinter.def.json msgctxt "support_interface_enable description" -msgid "" -"Generate a dense interface between the model and the support. This will " -"create a skin at the top of the support on which the model is printed and at " -"the bottom of the support, where it rests on the model." +msgid "Generate a dense interface between the model and the support. This will create a skin at the top of the support on which the model is printed and at the bottom of the support, where it rests on the model." msgstr "Gera uma interface densa entre o modelo e o suporte. Isto irá criar um revestimento na parte superior do suporte, onde o modelo é impresso, e na parte inferior do suporte, onde este é apoiado sobre o modelo." #: fdmprinter.def.json msgctxt "support_roof_enable label" msgid "Enable Support Roof" -msgstr "Ativar teto de suporte" +msgstr "Ativar tecto de suporte" #: fdmprinter.def.json msgctxt "support_roof_enable description" -msgid "" -"Generate a dense slab of material between the top of support and the model. " -"This will create a skin between the model and support." -msgstr "Gera uma placa densa de material entre a parte superior do suporte e o modelo. Isto irá criar um revestimento entre o modelo e o suporte." +msgid "Generate a dense slab of material between the top of support and the model. This will create a skin between the model and support." +msgstr "Gera uma base densa de material entre a parte superior do suporte e o modelo. Isto irá criar um revestimento entre o modelo e o suporte." #: fdmprinter.def.json msgctxt "support_bottom_enable label" @@ -3678,10 +3272,8 @@ msgstr "Ativar piso de suporte" #: fdmprinter.def.json msgctxt "support_bottom_enable description" -msgid "" -"Generate a dense slab of material between the bottom of the support and the " -"model. This will create a skin between the model and support." -msgstr "Gera uma placa densa de material entre a parte inferior do suporte e o modelo. Isto irá criar um revestimento entre o modelo e o suporte." +msgid "Generate a dense slab of material between the bottom of the support and the model. This will create a skin between the model and support." +msgstr "Gera uma base densa de material entre a parte inferior do suporte e o modelo. Isto irá criar um revestimento entre o modelo e o suporte." #: fdmprinter.def.json msgctxt "support_interface_height label" @@ -3690,22 +3282,18 @@ msgstr "Espessura da interface de suporte" #: fdmprinter.def.json msgctxt "support_interface_height description" -msgid "" -"The thickness of the interface of the support where it touches with the " -"model on the bottom or the top." +msgid "The thickness of the interface of the support where it touches with the model on the bottom or the top." msgstr "A espessura da interface de suporte onde esta entra em contacto com o modelo na parte inferior ou superior." #: fdmprinter.def.json msgctxt "support_roof_height label" msgid "Support Roof Thickness" -msgstr "Espessura do teto de suporte" +msgstr "Espessura do tecto de suporte" #: fdmprinter.def.json msgctxt "support_roof_height description" -msgid "" -"The thickness of the support roofs. This controls the amount of dense layers " -"at the top of the support on which the model rests." -msgstr "A espessura dos tetos de suporte. Isto controla a quantidade de camadas densas na parte superior do suporte na qual o modelo é apoiado." +msgid "The thickness of the support roofs. This controls the amount of dense layers at the top of the support on which the model rests." +msgstr "A espessura dos tectos de suporte. Isto controla a quantidade de camadas densas na parte superior do suporte na qual o modelo é apoiado." #: fdmprinter.def.json msgctxt "support_bottom_height label" @@ -3714,24 +3302,18 @@ msgstr "Espessura do piso de suporte" #: fdmprinter.def.json msgctxt "support_bottom_height description" -msgid "" -"The thickness of the support floors. This controls the number of dense " -"layers that are printed on top of places of a model on which support rests." +msgid "The thickness of the support floors. This controls the number of dense layers that are printed on top of places of a model on which support rests." msgstr "A espessura dos pisos de suporte. Isto controla o número de camadas densas que são impressas por cima de locais de um modelo no qual o suporte é apoiado." #: fdmprinter.def.json msgctxt "support_interface_skip_height label" msgid "Support Interface Resolution" -msgstr "Resolução da interface de suporte" +msgstr "Resolução Interface Suporte" #: fdmprinter.def.json msgctxt "support_interface_skip_height description" -msgid "" -"When checking where there's model above and below the support, take steps of " -"the given height. Lower values will slice slower, while higher values may " -"cause normal support to be printed in some places where there should have " -"been support interface." -msgstr "Ao verificar os locais onde existe modelo por cima e por baixo do suporte, tome as medidas necessárias de acordo com a altura determinada. Os valores mais reduzidos irão segmentar mais lentamente, enquanto os valores mais elevados podem fazer com que o suporte normal seja impresso em alguns locais onde deveria existir uma interface de suporte." +msgid "When checking where there's model above and below the support, take steps of the given height. Lower values will slice slower, while higher values may cause normal support to be printed in some places where there should have been support interface." +msgstr "Ao verificar os locais onde existe modelo por cima e por baixo do suporte, tome as medidas necessárias de acordo com a altura determinada. Os valores mais reduzidos irão seccionar mais lentamente, enquanto os valores mais elevados podem fazer com que o suporte normal seja impresso em alguns locais onde deveria existir uma interface de suporte." #: fdmprinter.def.json msgctxt "support_interface_density label" @@ -3740,35 +3322,28 @@ msgstr "Densidade da interface de suporte" #: fdmprinter.def.json msgctxt "support_interface_density description" -msgid "" -"Adjusts the density of the roofs and floors of the support structure. A " -"higher value results in better overhangs, but the supports are harder to " -"remove." -msgstr "Ajusta a densidade dos tetos e pisos da estrutura de suporte. Um valor mais elevado resulta em melhores saliências, embora os suportes sejam mais difíceis de remover." +msgid "Adjusts the density of the roofs and floors of the support structure. A higher value results in better overhangs, but the supports are harder to remove." +msgstr "Ajusta a densidade dos tectos e pisos da estrutura de suporte. Um valor mais elevado resulta em melhores saliências, embora os suportes sejam mais difíceis de remover." #: fdmprinter.def.json msgctxt "support_roof_density label" msgid "Support Roof Density" -msgstr "Densidade do teto de suporte" +msgstr "Densidade do tecto de suporte" #: fdmprinter.def.json msgctxt "support_roof_density description" -msgid "" -"The density of the roofs of the support structure. A higher value results in " -"better overhangs, but the supports are harder to remove." -msgstr "A densidade dos tetos da estrutura de suporte. Um valor mais elevado resulta em melhores saliências, embora os suportes sejam mais difíceis de remover." +msgid "The density of the roofs of the support structure. A higher value results in better overhangs, but the supports are harder to remove." +msgstr "A densidade dos tectos da estrutura de suporte. Um valor mais elevado resulta em melhores saliências, embora os suportes sejam mais difíceis de remover." #: fdmprinter.def.json msgctxt "support_roof_line_distance label" msgid "Support Roof Line Distance" -msgstr "Distância da linha do teto de suporte" +msgstr "Distância da linha do tecto de suporte" #: fdmprinter.def.json msgctxt "support_roof_line_distance description" -msgid "" -"Distance between the printed support roof lines. This setting is calculated " -"by the Support Roof Density, but can be adjusted separately." -msgstr "A distância entre as linhas do teto de suporte impressas. Esta definição é calculada através da Densidade do teto de suporte, mas pode ser ajustada em separado." +msgid "Distance between the printed support roof lines. This setting is calculated by the Support Roof Density, but can be adjusted separately." +msgstr "A distância entre as linhas do tecto de suporte impressas. Esta definição é calculada através da Densidade do tecto de suporte, mas pode ser ajustada em separado." #: fdmprinter.def.json msgctxt "support_bottom_density label" @@ -3777,9 +3352,7 @@ msgstr "Densidade do piso de suporte" #: fdmprinter.def.json msgctxt "support_bottom_density description" -msgid "" -"The density of the floors of the support structure. A higher value results " -"in better adhesion of the support on top of the model." +msgid "The density of the floors of the support structure. A higher value results in better adhesion of the support on top of the model." msgstr "A densidade dos pisos da estrutura de suporte. Um valor mais elevado resulta numa melhor aderência do suporte na parte superior do modelo." #: fdmprinter.def.json @@ -3789,9 +3362,7 @@ msgstr "Distância da linha do piso de suporte" #: fdmprinter.def.json msgctxt "support_bottom_line_distance description" -msgid "" -"Distance between the printed support floor lines. This setting is calculated " -"by the Support Floor Density, but can be adjusted separately." +msgid "Distance between the printed support floor lines. This setting is calculated by the Support Floor Density, but can be adjusted separately." msgstr "A distância entre as linhas do piso de suporte impressas. Esta definição é calculada através da Densidade do piso de suporte, mas pode ser ajustada em separado." #: fdmprinter.def.json @@ -3801,10 +3372,8 @@ msgstr "Padrão da interface de suporte" #: fdmprinter.def.json msgctxt "support_interface_pattern description" -msgid "" -"The pattern with which the interface of the support with the model is " -"printed." -msgstr "O padrão com o qual a interface de suporte do modelo é impressa." +msgid "The pattern with which the interface of the support with the model is printed." +msgstr "O padrão geométrico com que a interface do suporte com o modelo, é impressa." #: fdmprinter.def.json msgctxt "support_interface_pattern option lines" @@ -3839,12 +3408,12 @@ msgstr "Ziguezague" #: fdmprinter.def.json msgctxt "support_roof_pattern label" msgid "Support Roof Pattern" -msgstr "Padrão do teto de suporte" +msgstr "Padrão do tecto de suporte" #: fdmprinter.def.json msgctxt "support_roof_pattern description" msgid "The pattern with which the roofs of the support are printed." -msgstr "O padrão com que os tetos do suporte são impressos." +msgstr "O padrão geométrico com que os tectos do suporte são impressos." #: fdmprinter.def.json msgctxt "support_roof_pattern option lines" @@ -3876,15 +3445,18 @@ msgctxt "support_roof_pattern option zigzag" msgid "Zig Zag" msgstr "Ziguezague" +# rever! +# piso? chão? base? #: fdmprinter.def.json msgctxt "support_bottom_pattern label" msgid "Support Floor Pattern" -msgstr "Padrão do piso de suporte" +msgstr "Padrão Chão Suporte" +# pisos? #: fdmprinter.def.json msgctxt "support_bottom_pattern description" msgid "The pattern with which the floors of the support are printed." -msgstr "O padrão com que os pisos do suporte são impressos." +msgstr "O padrão geométrico com que os chãos do suporte são impressos." #: fdmprinter.def.json msgctxt "support_bottom_pattern option lines" @@ -3923,11 +3495,8 @@ msgstr "Utilizar torres" #: fdmprinter.def.json msgctxt "support_use_towers description" -msgid "" -"Use specialized towers to support tiny overhang areas. These towers have a " -"larger diameter than the region they support. Near the overhang the towers' " -"diameter decreases, forming a roof." -msgstr "Utiliza torres especializadas para suportar pequenas áreas de saliências. Estas torres têm um diâmetro maior do que a região que suportam. Junto às saliências, o diâmetro das torres diminui, formando um teto." +msgid "Use specialized towers to support tiny overhang areas. These towers have a larger diameter than the region they support. Near the overhang the towers' diameter decreases, forming a roof." +msgstr "Utiliza torres especializadas para suportar pequenas áreas de saliências. Estas torres têm um diâmetro maior do que a região que suportam. Junto às saliências, o diâmetro das torres diminui, formando um tecto." #: fdmprinter.def.json msgctxt "support_tower_diameter label" @@ -3946,100 +3515,96 @@ msgstr "Diâmetro mínimo" #: 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." +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." #: fdmprinter.def.json msgctxt "support_tower_roof_angle label" msgid "Tower Roof Angle" -msgstr "Ângulo do teto da torre" +msgstr "Ângulo do tecto da torre" #: fdmprinter.def.json msgctxt "support_tower_roof_angle description" -msgid "" -"The angle of a rooftop of a tower. A higher value results in pointed tower " -"roofs, a lower value results in flattened tower roofs." -msgstr "O ângulo do topo de uma torre. Um valor mais elevado resulta em tetos de torre pontiagudos, enquanto um valor mais reduzido resulta em tetos de torre achatados." +msgid "The angle of a rooftop of a tower. A higher value results in pointed tower roofs, a lower value results in flattened tower roofs." +msgstr "O ângulo do topo de uma torre. Um valor mais elevado resulta em tectos de torre pontiagudos, enquanto um valor mais reduzido resulta em tectos de torre achatados." + +#: fdmprinter.def.json +msgctxt "support_mesh_drop_down label" +msgid "Drop Down Support Mesh" +msgstr "Malha de suporte pendente" + +#: fdmprinter.def.json +msgctxt "support_mesh_drop_down description" +msgid "Make support everywhere below the support mesh, so that there's no overhang in the support mesh." +msgstr "Cria suporte em qualquer local abaixo da malha de suporte, para que não existam saliências na malha de suporte." #: fdmprinter.def.json msgctxt "platform_adhesion label" msgid "Build Plate Adhesion" -msgstr "Aderência à placa de construção" +msgstr "Aderência" #: fdmprinter.def.json msgctxt "platform_adhesion description" msgid "Adhesion" -msgstr "Aderência" +msgstr "Aderência à Base de Construção" #: fdmprinter.def.json msgctxt "prime_blob_enable label" msgid "Enable Prime Blob" -msgstr "Ativar blob de preparação" +msgstr "\"Blob\" de Preparação" +# rever! +# borrão? +# antes de começar a impressão? #: fdmprinter.def.json msgctxt "prime_blob_enable description" -msgid "" -"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." -msgstr "Preparar ou não o filamento com um blob antes da impressão. Ativar esta definição irá assegurar que a extrusora terá material pronto no bocal antes da impressão. A opção Imprimir borda ou contorno também pode atuar como purga, caso esse em que desativar esta definição permite ganhar algum tempo." +msgid "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." +msgstr "Preparar, ou não, o filamento com um \"blob\" (borrão) antes da impressão. Ativar esta definição irá assegurar que o extrusor terá material disponível no nozzle antes da impressão. A opção de Imprimir Aba ou Contorno também podem actuar como preparação do filamento, e nesses casos, desativar esta definição permite poupar algum tempo." #: fdmprinter.def.json msgctxt "extruder_prime_pos_x label" msgid "Extruder Prime X Position" -msgstr "Posição X de preparação da extrusora" +msgstr "Posição X Preparação Extrusor" #: fdmprinter.def.json msgctxt "extruder_prime_pos_x description" -msgid "" -"The X coordinate of the position where the nozzle primes at the start of " -"printing." -msgstr "A coordenada X da posição de preparação do bocal ao iniciar a impressão." +msgid "The X coordinate of the position where the nozzle primes at the start of printing." +msgstr "A coordenada X da posição onde o é feita a preparação do nozzle no inicio da impressão." #: fdmprinter.def.json msgctxt "extruder_prime_pos_y label" msgid "Extruder Prime Y Position" -msgstr "Posição Y de preparação da extrusora" +msgstr "Posição Y Preparação Extrusor" #: fdmprinter.def.json msgctxt "extruder_prime_pos_y description" -msgid "" -"The Y coordinate of the position where the nozzle primes at the start of " -"printing." -msgstr "A coordenada Y da posição de preparação do bocal ao iniciar a impressão." +msgid "The Y coordinate of the position where the nozzle primes at the start of printing." +msgstr "A coordenada Y da posição onde o é feita a preparação do nozzle no inicio da impressão." #: fdmprinter.def.json msgctxt "adhesion_type label" msgid "Build Plate Adhesion Type" -msgstr "Tipo de aderência à placa de construção" +msgstr "Modos de Aderência" #: fdmprinter.def.json msgctxt "adhesion_type description" -msgid "" -"Different options that help to improve both priming your extrusion and " -"adhesion to the build plate. Brim adds a single layer flat area around the " -"base of your model to prevent warping. Raft adds a thick grid with a roof " -"below the model. Skirt is a line printed around the model, but not connected " -"to the model." -msgstr "Diferentes opções que ajudam a melhorar a purga da extrusão e a aderência à placa de construção. A borda acrescenta uma área plana de camada única em torno da base do modelo para evitar a deformação. A base reticular acrescenta uma grelha espessa com um teto por baixo do modelo. O contorno é uma linha impressa à volta do modelo, mas que não está ligada ao modelo." +msgid "Different options that help to improve both priming your extrusion and adhesion to the build plate. Brim adds a single layer flat area around the base of your model to prevent warping. Raft adds a thick grid with a roof below the model. Skirt is a line printed around the model, but not connected to the model." +msgstr "Diferentes modos que ajudam a melhorar a aderência à base de construção, e também fazer uma melhor preparação inicial da extrusão. Contorno (Skirt) imprime uma linha paralela ao perímetro do modelo. \r Aba (Brim) acrescenta uma única camada em torno da base do modelo para prevenir empenos ou deformações na parte inferior dos modelos. Raft adiciona uma plataforma, composta por uma grelha espessa e um tecto, entre o modelo e a base de impressão." #: fdmprinter.def.json msgctxt "adhesion_type option skirt" msgid "Skirt" -msgstr "Contorno" +msgstr "Contorno (Skirt)" #: fdmprinter.def.json msgctxt "adhesion_type option brim" msgid "Brim" -msgstr "Borda" +msgstr "Aba (Brim)" #: fdmprinter.def.json msgctxt "adhesion_type option raft" msgid "Raft" -msgstr "Base reticular" +msgstr "Raft" #: fdmprinter.def.json msgctxt "adhesion_type option none" @@ -4049,441 +3614,385 @@ msgstr "Nenhum" #: fdmprinter.def.json msgctxt "adhesion_extruder_nr label" msgid "Build Plate Adhesion Extruder" -msgstr "Extrusora de aderência à placa de construção" +msgstr "Extrusor para Aderência" #: fdmprinter.def.json msgctxt "adhesion_extruder_nr description" -msgid "" -"The extruder train to use for printing the skirt/brim/raft. This is used in " -"multi-extrusion." -msgstr "A máquina de extrusão a ser utilizada para imprimir o contorno/a borda/a base reticular. Esta é utilizada em extrusões múltiplas." +msgid "The extruder train to use for printing the skirt/brim/raft. This is used in multi-extrusion." +msgstr "O núcleo de extrusão utilizado para imprimir o Contorno / Aba / Raft. Definição usada com múltiplos extrusores." #: fdmprinter.def.json msgctxt "skirt_line_count label" msgid "Skirt Line Count" -msgstr "Contagem de linhas de contorno" +msgstr "Número Linhas Contorno" #: fdmprinter.def.json msgctxt "skirt_line_count description" -msgid "" -"Multiple skirt lines help to prime your extrusion better for small models. " -"Setting this to 0 will disable the skirt." -msgstr "Linhas de contorno múltiplas ajudam a preparar melhor a extrusão para modelos pequenos. Definir a contagem como 0 irá desativar o contorno." +msgid "Multiple skirt lines help to prime your extrusion better for small models. Setting this to 0 will disable the skirt." +msgstr "Varias linhas de contorno ajudam a preparar melhor a extrusão para modelos pequenos. Definir este valor como 0 desactiva o contorno." #: fdmprinter.def.json msgctxt "skirt_gap label" msgid "Skirt Distance" -msgstr "Distância do contorno" +msgstr "Distância Contorno" #: fdmprinter.def.json 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 a primeira camada da impressão.\nEsta é a distância mínima. Linhas de contorno múltiplas irão estender-se para fora desta distância." +"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." #: fdmprinter.def.json msgctxt "skirt_brim_minimal_length label" msgid "Skirt/Brim Minimum Length" -msgstr "Comprimento mínimo do contorno/da borda" +msgstr "Comprimento Mínimo Contorno/Aba" #: fdmprinter.def.json msgctxt "skirt_brim_minimal_length description" -msgid "" -"The minimum length of the skirt or brim. If this length is not reached by " -"all skirt or brim lines together, more skirt or brim lines will be added " -"until the minimum length is reached. Note: If the line count is set to 0 " -"this is ignored." -msgstr "O comprimento mínimo do contorno ou da borda. Se este comprimento não for alcançado em conjunto por todas as linhas de contorno ou borda, serão acrescentadas mais linhas de contorno ou borda até o comprimento mínimo ser alcançado. Nota: Se a contagem de linhas for definida como 0, isto é ignorado." +msgid "The minimum length of the skirt or brim. If this length is not reached by all skirt or brim lines together, more skirt or brim lines will be added until the minimum length is reached. Note: If the line count is set to 0 this is ignored." +msgstr "O comprimento mínimo do Contorno ou da Aba. Se este comprimento não for alcançado pelo conjunto de todas as linhas do Contorno ou da Aba, serão acrescentadas mais linhas ao Contorno ou à Aba até o comprimento mínimo ser alcançado. Nota: Se o valor do Número de Linhas for 0, esta definição é ignorada." #: fdmprinter.def.json msgctxt "brim_width label" msgid "Brim Width" -msgstr "Largura da borda" +msgstr "Largura da Aba" #: fdmprinter.def.json msgctxt "brim_width description" -msgid "" -"The distance from the model to the outermost brim line. A larger brim " -"enhances adhesion to the build plate, but also reduces the effective print " -"area." -msgstr "A distância do modelo à linha de borda mais exterior. Uma borda mais larga melhora a aderência à placa de construção, mas também reduz a área de impressão efetiva." +msgid "The distance from the model to the outermost brim line. A larger brim enhances adhesion to the build plate, but also reduces the effective print area." +msgstr "A distância desde o modelo até à linha mais exterior da Aba. Uma Aba mais larga melhora a aderência à base de construção, mas também reduz a área de impressão efetiva." #: fdmprinter.def.json msgctxt "brim_line_count label" msgid "Brim Line Count" -msgstr "Contagem de linhas de borda" +msgstr "Número Linhas da Aba" #: fdmprinter.def.json msgctxt "brim_line_count description" -msgid "" -"The number of lines used for a brim. More brim lines enhance adhesion to the " -"build plate, but also reduces the effective print area." -msgstr "O número de linhas utilizado para uma borda. Uma maior quantidade de linhas de borda melhora a aderência à placa de construção, mas também reduz a área de impressão efetiva." +msgid "The number of lines used for a brim. More brim lines enhance adhesion to the build plate, but also reduces the effective print area." +msgstr "O número de linhas utilizado para uma aba. Um maior número de linhas da aba melhora a aderência à base de construção, mas também reduz a área de impressão efetiva." #: fdmprinter.def.json msgctxt "brim_outside_only label" msgid "Brim Only on Outside" -msgstr "Borda apenas no exterior" +msgstr "Aba Apenas no Exterior" #: fdmprinter.def.json msgctxt "brim_outside_only description" -msgid "" -"Only print the brim on the outside of the model. This reduces the amount of " -"brim you need to remove afterwards, while it doesn't reduce the bed adhesion " -"that much." -msgstr "Imprime apenas a borda no exterior do modelo. Isto reduz a quantidade de bordas a remover posteriormente, mas não reduz tanto a aderência à base." +msgid "Only print the brim on the outside of the model. This reduces the amount of brim you need to remove afterwards, while it doesn't reduce the bed adhesion that much." +msgstr "Imprimir a aba apenas no exterior do modelo. Isto reduz a quantidade de abas a remover posteriormente, e ao mesmo tempo não reduz assim tanto a aderência à base." #: fdmprinter.def.json msgctxt "raft_margin label" msgid "Raft Extra Margin" -msgstr "Margem adicional da base reticular" +msgstr "Margem Adicional Raft" #: fdmprinter.def.json msgctxt "raft_margin description" -msgid "" -"If the raft is enabled, this is the extra raft area around the model which " -"is also given a raft. Increasing this margin will create a stronger raft " -"while using more material and leaving less area for your print." -msgstr "Se a base reticular for ativada, esta será a área de base reticular adicional em torno do modelo, a qual também receberá uma base reticular. Aumentar esta margem irá criar uma base reticular mais sólida, ao mesmo tempo que irá utilizar mais material e deixar menos área para a impressão." +msgid "If the raft is enabled, this is the extra raft area around the model which is also given a raft. Increasing this margin will create a stronger raft while using more material and leaving less area for your print." +msgstr "Se o Raft estiver ativado, esta será a área de raft adicional em torno do modelo que também terá um raft. Aumentar o valor desta margem irá criar um raft mais robusto, mas ao mesmo tempo utiliza mais material e reduz a área disponível para a impressão." #: fdmprinter.def.json msgctxt "raft_smoothing label" msgid "Raft Smoothing" -msgstr "Suavização da base reticular" +msgstr "Suavização Raft" #: fdmprinter.def.json msgctxt "raft_smoothing description" -msgid "" -"This setting controls how much inner corners in the raft outline are " -"rounded. Inward corners are rounded to a semi circle with a radius equal to " -"the value given here. This setting also removes holes in the raft outline " -"which are smaller than such a circle." -msgstr "Esta definição controla o nível de arredondamento dos cantos internos no contorno da base reticular. Os cantos internos são arredondados para um semicírculo com um raio igual ao valor aqui fornecido. Esta definição também remove os orifícios no contorno da base reticular que sejam inferiores a esse semicírculo." +msgid "This setting controls how much inner corners in the raft outline are rounded. Inward corners are rounded to a semi circle with a radius equal to the value given here. This setting also removes holes in the raft outline which are smaller than such a circle." +msgstr "Esta definição controla o nível do arredondamento dos cantos internos do contorno do raft. Os cantos internos são arredondados para um semicírculo com um raio igual ao valor aqui fornecido. Esta definição também remove buracos no contorno do raft que sejam menores que esse semicírculo." #: fdmprinter.def.json msgctxt "raft_airgap label" msgid "Raft Air Gap" -msgstr "Folga de ar da base reticular" +msgstr "Caixa de Ar do Raft" #: fdmprinter.def.json msgctxt "raft_airgap description" -msgid "" -"The gap between the final raft layer and the first layer of the model. Only " -"the first layer is raised by this amount to lower the bonding between the " -"raft layer and the model. Makes it easier to peel off the raft." -msgstr "A folga entre a camada da base reticular final e a primeira camada do modelo. Apenas a primeira camada é elevada de acordo com este valor para diminuir a ligação entre a camada da base reticular e o modelo. Isto facilita a remoção da base reticular." +msgid "The gap between the final raft layer and the first layer of the model. Only the first layer is raised by this amount to lower the bonding between the raft layer and the model. Makes it easier to peel off the raft." +msgstr "A espaço entre a camada final do raft e a primeira camada do modelo. Apenas a primeira camada do modelo é elevada por este valor, para assim reduzir a união entre o raft e o modelo. Isto facilita a remoção do raft." #: fdmprinter.def.json msgctxt "layer_0_z_overlap label" msgid "Initial Layer Z Overlap" -msgstr "Sobreposição Z da camada inicial" +msgstr "Sobreposição Z Camada Inicial" +# O valor da distância com que todos os modelos acima da primeira camada do modelo serão deslocados para baixo. #: fdmprinter.def.json msgctxt "layer_0_z_overlap description" -msgid "" -"Make the first and second layer of the model overlap in the Z direction to " -"compensate for the filament lost in the airgap. All models above the first " -"model layer will be shifted down by this amount." -msgstr "Sobrepõe a primeira e a segunda camadas do modelo na direção Z para compensar o filamento perdido na folga de ar. Todos os modelos acima da primeira camada do modelo serão deslocados para baixo neste valor." +msgid "Make the first and second layer of the model overlap in the Z direction to compensate for the filament lost in the airgap. All models above the first model layer will be shifted down by this amount." +msgstr "Sobrepõe, na direção Z, a primeira e a segunda camadas do modelo para compensar o filamento perdido na caixa de ar. O valor da distância com que todos os modelos acima da primeira camada do modelo serão deslocados para baixo." #: fdmprinter.def.json msgctxt "raft_surface_layers label" msgid "Raft Top Layers" -msgstr "Camadas superiores da base reticular" +msgstr "Camadas Superiores do Raft" #: fdmprinter.def.json msgctxt "raft_surface_layers description" -msgid "" -"The number of top layers on top of the 2nd raft layer. These are fully " -"filled layers that the model sits on. 2 layers result in a smoother top " -"surface than 1." -msgstr "O número de camadas superiores na parte superior da 2.ª camada da base reticular. Estas são camadas totalmente preenchidas onde o modelo é apoiado. Duas camadas resultam numa superfície superior mais uniforme do que uma." +msgid "The number of top layers on top of the 2nd raft layer. These are fully filled layers that the model sits on. 2 layers result in a smoother top surface than 1." +msgstr "O número de camadas superiores impressas em cima da camada do meio do raft. Estas são as camadas, totalmente preenchidas, onde o modelo assenta. Duas camadas resultam numa superfície superior mais uniforme, do que só uma camada." #: fdmprinter.def.json msgctxt "raft_surface_thickness label" msgid "Raft Top Layer Thickness" -msgstr "Espessura das camada superiores da base reticular" +msgstr "Espessura Camada Superior Raft" #: fdmprinter.def.json msgctxt "raft_surface_thickness description" msgid "Layer thickness of the top raft layers." -msgstr "A espessura das camadas superiores da base reticular." +msgstr "A espessura das camadas superiores do raft." #: fdmprinter.def.json msgctxt "raft_surface_line_width label" msgid "Raft Top Line Width" -msgstr "Largura das linhas superiores da base reticular" +msgstr "Diâmetro Linha Superior do Raft" #: fdmprinter.def.json msgctxt "raft_surface_line_width description" -msgid "" -"Width of the lines in the top surface of the raft. These can be thin lines " -"so that the top of the raft becomes smooth." -msgstr "A largura das linhas na superfície superior da base reticular. Estas podem ser linhas finas para que a parte superior da base reticular fique uniforme." +msgid "Width of the lines in the top surface of the raft. These can be thin lines so that the top of the raft becomes smooth." +msgstr "O diâmetro das linhas da superfície superior do raft. Estas podem ser linhas finas para que a parte superior do raft seja uniforme e liso." #: fdmprinter.def.json msgctxt "raft_surface_line_spacing label" msgid "Raft Top Spacing" -msgstr "Espaçamento superior da base reticular" +msgstr "Espaçamento Superior do Raft" #: fdmprinter.def.json msgctxt "raft_surface_line_spacing description" -msgid "" -"The distance between the raft lines for the top raft layers. The spacing " -"should be equal to the line width, so that the surface is solid." -msgstr "A distância entre as linhas da base reticular para as camadas superiores da base reticular. O espaçamento deve ser igual à largura da linha, para que a superfície seja sólida." +msgid "The distance between the raft lines for the top raft layers. The spacing should be equal to the line width, so that the surface is solid." +msgstr "A distância entre linhas nas camadas superiores do raft. O espaçamento deve ser, igual ao Diâmetro da Linha, para que a superfície seja uniforme." #: fdmprinter.def.json msgctxt "raft_interface_thickness label" msgid "Raft Middle Thickness" -msgstr "Espessura média da base reticular" +msgstr "Espessura do Meio do Raft" #: fdmprinter.def.json msgctxt "raft_interface_thickness description" msgid "Layer thickness of the middle raft layer." -msgstr "A espessura da camada média da base reticular." +msgstr "A espessura da camada do meio do raft. (segunda camada)" #: fdmprinter.def.json msgctxt "raft_interface_line_width label" msgid "Raft Middle Line Width" -msgstr "Largura da linha média da base reticular" +msgstr "Diâmetro Linha do Meio do Raft" #: fdmprinter.def.json msgctxt "raft_interface_line_width description" -msgid "" -"Width of the lines in the middle raft layer. Making the second layer extrude " -"more causes the lines to stick to the build plate." -msgstr "A largura das linhas na camada média da base reticular. Extrudir mais a segunda camada provoca a aderência das linhas à placa de construção." +msgid "Width of the lines in the middle raft layer. Making the second layer extrude more causes the lines to stick to the build plate." +msgstr "O diâmetro das linhas na camada do meio do raft. Extrudir mais a segunda camada provoca a aderência das linhas à base de construção." #: fdmprinter.def.json msgctxt "raft_interface_line_spacing label" msgid "Raft Middle Spacing" -msgstr "Espaçamento médio da base reticular" +msgstr "Espaçamento do Meio do Raft" #: fdmprinter.def.json msgctxt "raft_interface_line_spacing description" -msgid "" -"The distance between the raft lines for the middle raft layer. The spacing " -"of the middle should be quite wide, while being dense enough to support the " -"top raft layers." -msgstr "A distância entre as linhas da base reticular para a camada média da base reticular. O espaçamento médio deve ser bastante amplo, mas suficientemente denso para suportar as camadas superiores da base reticular." +msgid "The distance between the raft lines for the middle raft layer. The spacing of the middle should be quite wide, while being dense enough to support the top raft layers." +msgstr "A distância entre linhas na camada do meio do raft. O espaçamento entre as linhas da camada do meio, deve ser grande, mas ao mesmo tempo suficientemente denso para conseguir suportar as camadas superiores do raft." #: fdmprinter.def.json msgctxt "raft_base_thickness label" msgid "Raft Base Thickness" -msgstr "Espessura inferior da base reticular" +msgstr "Espessura da Base do Raft" #: fdmprinter.def.json msgctxt "raft_base_thickness description" -msgid "" -"Layer thickness of the base raft layer. This should be a thick layer which " -"sticks firmly to the printer build plate." -msgstr "A espessura da camada inferior da base reticular. Esta deve ser uma camada espessa que adira firmemente à placa de construção da impressora." +msgid "Layer thickness of the base raft layer. This should be a thick layer which sticks firmly to the printer build plate." +msgstr "A espessura da camada inferior (base) do raft. Esta deve ser uma camada espessa para aderir firmemente à base de construção da impressora." #: fdmprinter.def.json msgctxt "raft_base_line_width label" msgid "Raft Base Line Width" -msgstr "Largura da linha inferior da base reticular" +msgstr "Diâmetro Linha Base do Raft" #: fdmprinter.def.json msgctxt "raft_base_line_width description" -msgid "" -"Width of the lines in the base raft layer. These should be thick lines to " -"assist in build plate adhesion." -msgstr "A largura das linhas na camada inferior da base reticular. Estas devem ser linhas espessas para auxiliar na aderência à placa de construção." +msgid "Width of the lines in the base raft layer. These should be thick lines to assist in build plate adhesion." +msgstr "O diâmetro das linhas na camada inferior (base) do raft. Devem ser linhas espessas para auxiliar na aderência à base de construção." #: fdmprinter.def.json msgctxt "raft_base_line_spacing label" msgid "Raft Line Spacing" -msgstr "Espaçamento da linha da base reticular" +msgstr "Espaçamento Linhas Base Raft" #: fdmprinter.def.json msgctxt "raft_base_line_spacing description" -msgid "" -"The distance between the raft lines for the base raft layer. Wide spacing " -"makes for easy removal of the raft from the build plate." -msgstr "A distância entre as linhas da base reticular para a camada inferior da base reticular. Um espaçamento amplo facilita a remoção da base reticular da placa de construção." +msgid "The distance between the raft lines for the base raft layer. Wide spacing makes for easy removal of the raft from the build plate." +msgstr "A distância entre linhas na camada inferior (base) do raft. Um maior espaçamento facilita a remoção do raft da base de construção." #: fdmprinter.def.json msgctxt "raft_speed label" msgid "Raft Print Speed" -msgstr "Velocidade de impressão da base reticular" +msgstr "Velocidade Impressão do Raft" #: fdmprinter.def.json msgctxt "raft_speed description" msgid "The speed at which the raft is printed." -msgstr "A velocidade a que a base reticular é impressa." +msgstr "A velocidade a que o raft é impresso." #: fdmprinter.def.json msgctxt "raft_surface_speed label" msgid "Raft Top Print Speed" -msgstr "Velocidade de impressão superior da base reticular" +msgstr "Velocidade do Topo do Raft" #: fdmprinter.def.json msgctxt "raft_surface_speed description" -msgid "" -"The speed at which the top raft layers are printed. These should be printed " -"a bit slower, so that the nozzle can slowly smooth out adjacent surface " -"lines." -msgstr "A velocidade a que as camadas superiores da base reticular são impressas. Estas devem ser impressas um pouco mais devagar, para que o bocal possa uniformizar lentamente as linhas das superfícies adjacentes." +msgid "The speed at which the top raft layers are printed. These should be printed a bit slower, so that the nozzle can slowly smooth out adjacent surface lines." +msgstr "A velocidade a que as camadas superiores do raft são impressas. Estas devem ser impressas um pouco mais devagar, para que o nozzle possa uniformizar lentamente as linhas adjacentes da superfície." #: fdmprinter.def.json msgctxt "raft_interface_speed label" msgid "Raft Middle Print Speed" -msgstr "Velocidade de impressão média da base reticular" +msgstr "Velocidade do Meio do Raft" #: fdmprinter.def.json msgctxt "raft_interface_speed description" -msgid "" -"The speed at which the middle raft layer is printed. This should be printed " -"quite slowly, as the volume of material coming out of the nozzle is quite " -"high." -msgstr "A velocidade a que a camada média da base reticular é impressa. Esta deve ser impressa bastante devagar, uma vez que o volume de material que advém do bocal é bastante elevado." +msgid "The speed at which the middle raft layer is printed. This should be printed quite slowly, as the volume of material coming out of the nozzle is quite high." +msgstr "A velocidade a que a camada do meio do raft é impressa. Esta deve ser impressa bastante devagar, uma vez que o volume de material que vai sair pelo nozzle é bastante elevado." #: fdmprinter.def.json msgctxt "raft_base_speed label" msgid "Raft Base Print Speed" -msgstr "Velocidade de impressão inferior da base reticular" +msgstr "Velocidade da Base do Raft" #: fdmprinter.def.json msgctxt "raft_base_speed description" -msgid "" -"The speed at which the base raft layer is printed. This should be printed " -"quite slowly, as the volume of material coming out of the nozzle is quite " -"high." -msgstr "A velocidade a que a camada inferior da base reticular é impressa. Esta deve ser impressa bastante devagar, uma vez que o volume de material que advém do bocal é bastante elevado." +msgid "The speed at which the base raft layer is printed. This should be printed quite slowly, as the volume of material coming out of the nozzle is quite high." +msgstr "A velocidade a que a camada inferior (base) do raft é impressa. Esta deve ser impressa bastante devagar, uma vez que o volume de material que vai sair pelo nozzle é bastante elevado." #: fdmprinter.def.json msgctxt "raft_acceleration label" msgid "Raft Print Acceleration" -msgstr "Aceleração de impressão da base reticular" +msgstr "Aceleração Impressão do Raft" #: fdmprinter.def.json msgctxt "raft_acceleration description" msgid "The acceleration with which the raft is printed." -msgstr "A aceleração com que a base reticular é impressa." +msgstr "A aceleração com que o raft é impresso." #: fdmprinter.def.json msgctxt "raft_surface_acceleration label" msgid "Raft Top Print Acceleration" -msgstr "Aceleração de impressão superior da base reticular" +msgstr "Aceleração do Topo do Raft" #: fdmprinter.def.json msgctxt "raft_surface_acceleration description" msgid "The acceleration with which the top raft layers are printed." -msgstr "A aceleração com que as camadas superiores da base reticular são impressas." +msgstr "A aceleração com que as camadas superiores do raft são impressas." #: fdmprinter.def.json msgctxt "raft_interface_acceleration label" msgid "Raft Middle Print Acceleration" -msgstr "Aceleração de impressão média da base reticular" +msgstr "Aceleração do Meio do Raft" #: fdmprinter.def.json msgctxt "raft_interface_acceleration description" msgid "The acceleration with which the middle raft layer is printed." -msgstr "A aceleração com que a camada média da base reticular é impressa." +msgstr "A aceleração com que a camada do meio do raft é impressa." #: fdmprinter.def.json msgctxt "raft_base_acceleration label" msgid "Raft Base Print Acceleration" -msgstr "Aceleração de impressão inferior da base reticular" +msgstr "Aceleração da Base do Raft" #: fdmprinter.def.json msgctxt "raft_base_acceleration description" msgid "The acceleration with which the base raft layer is printed." -msgstr "A aceleração com que a camada inferior da base reticular é impressa." +msgstr "A aceleração com que a camada inferior (base) do raft é impressa." #: fdmprinter.def.json msgctxt "raft_jerk label" msgid "Raft Print Jerk" -msgstr "Solavanco de impressão da base reticular" +msgstr "Jerk de impressão do raft" #: fdmprinter.def.json msgctxt "raft_jerk description" msgid "The jerk with which the raft is printed." -msgstr "O solavanco com que a base reticular é impressa." +msgstr "O jerk com que o raft é impresso." #: fdmprinter.def.json msgctxt "raft_surface_jerk label" msgid "Raft Top Print Jerk" -msgstr "Solavanco de impressão superior da base reticular" +msgstr "Jerk de impressão superior do raft" #: fdmprinter.def.json msgctxt "raft_surface_jerk description" msgid "The jerk with which the top raft layers are printed." -msgstr "O solavanco com que as camadas superiores da base reticular são impressas." +msgstr "O jerk com que as camadas superiores do raft são impressas." #: fdmprinter.def.json msgctxt "raft_interface_jerk label" msgid "Raft Middle Print Jerk" -msgstr "Solavanco de impressão média da base reticular" +msgstr "Jerk de impressão do meio do raft" #: fdmprinter.def.json msgctxt "raft_interface_jerk description" msgid "The jerk with which the middle raft layer is printed." -msgstr "O solavanco com que a camada média da base reticular é impressa." +msgstr "O jerk com que a camada do meio do raft é impressa." #: fdmprinter.def.json msgctxt "raft_base_jerk label" msgid "Raft Base Print Jerk" -msgstr "Solavanco de impressão inferior da base reticular" +msgstr "Jerk de impressão inferior do raft" #: fdmprinter.def.json msgctxt "raft_base_jerk description" msgid "The jerk with which the base raft layer is printed." -msgstr "O solavanco com que a camada inferior da base reticular é impressa." +msgstr "O jerk com que a camada da base do raft é impressa." #: fdmprinter.def.json msgctxt "raft_fan_speed label" msgid "Raft Fan Speed" -msgstr "Velocidade da ventoinha da base reticular" +msgstr "Velocidade do ventilador do raft" #: fdmprinter.def.json msgctxt "raft_fan_speed description" msgid "The fan speed for the raft." -msgstr "A velocidade da ventoinha da base reticular." +msgstr "A velocidade do ventilador do raft." #: fdmprinter.def.json msgctxt "raft_surface_fan_speed label" msgid "Raft Top Fan Speed" -msgstr "Velocidade da ventoinha superior da base reticular" +msgstr "Velocidade do ventilador superior do raft" #: fdmprinter.def.json msgctxt "raft_surface_fan_speed description" msgid "The fan speed for the top raft layers." -msgstr "A velocidade da ventoinha das camadas superiores da base reticular." +msgstr "A velocidade do ventilador das camadas superiores do raft." #: fdmprinter.def.json msgctxt "raft_interface_fan_speed label" msgid "Raft Middle Fan Speed" -msgstr "Velocidade da ventoinha média da base reticular" +msgstr "Velocidade do ventilador do meio do raft" #: fdmprinter.def.json msgctxt "raft_interface_fan_speed description" msgid "The fan speed for the middle raft layer." -msgstr "A velocidade da ventoinha da camada média da base reticular." +msgstr "A velocidade do ventilador da camada do meio do raft." #: fdmprinter.def.json msgctxt "raft_base_fan_speed label" msgid "Raft Base Fan Speed" -msgstr "Velocidade da ventoinha inferior da base reticular" +msgstr "Velocidade do ventilador inferior do raft" #: fdmprinter.def.json msgctxt "raft_base_fan_speed description" msgid "The fan speed for the base raft layer." -msgstr "A velocidade da ventoinha da camada inferior da base reticular." +msgstr "A velocidade do ventilador da camada inferior do raft." #: fdmprinter.def.json msgctxt "dual label" msgid "Dual Extrusion" -msgstr "Extrusão dupla" +msgstr "Dupla Extrusão" #: fdmprinter.def.json msgctxt "dual description" msgid "Settings used for printing with multiple extruders." -msgstr "Definições utilizadas para imprimir com várias extrusoras." +msgstr "Definições utilizadas para imprimir com vários extrusores." #: fdmprinter.def.json msgctxt "prime_tower_enable label" @@ -4492,20 +4001,18 @@ msgstr "Ativar torre de preparação" #: fdmprinter.def.json msgctxt "prime_tower_enable description" -msgid "" -"Print a tower next to the print which serves to prime the material after " -"each nozzle switch." -msgstr "Imprime uma torre próxima da impressão que prepara o material depois de cada substituição do bocal." +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_size label" msgid "Prime Tower Size" -msgstr "Tamanho da torre de preparação" +msgstr "Tamanho Torre de Preparação" #: fdmprinter.def.json msgctxt "prime_tower_size description" msgid "The width of the prime tower." -msgstr "A largura da torre de preparação." +msgstr "O diâmetro da torre de preparação." #: fdmprinter.def.json msgctxt "prime_tower_min_volume label" @@ -4514,9 +4021,7 @@ msgstr "Volume mínimo da torre de preparação" #: fdmprinter.def.json msgctxt "prime_tower_min_volume description" -msgid "" -"The minimum volume for each layer of the prime tower in order to purge " -"enough material." +msgid "The minimum volume for each layer of the prime tower in order to purge enough material." msgstr "O volume mínimo para cada camada da torre de preparação para preparar material suficiente." #: fdmprinter.def.json @@ -4526,9 +4031,7 @@ msgstr "Espessura da torre de preparação" #: fdmprinter.def.json msgctxt "prime_tower_wall_thickness description" -msgid "" -"The thickness of the hollow prime tower. A thickness larger than half the " -"Prime Tower Minimum Volume will result in a dense prime tower." +msgid "The thickness of the hollow prime tower. A thickness larger than half the Prime Tower Minimum Volume will result in a dense prime tower." msgstr "A espessura da torre de preparação oca. Uma espessura superior a metade do Volume mínimo da torre de preparação irá resultar numa torre de preparação densa." #: fdmprinter.def.json @@ -4558,89 +4061,85 @@ 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." +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" -msgstr "Limpar bocal inativo na torre de preparação" +msgstr "Limpar nozzle inativo na torre de preparação" #: fdmprinter.def.json msgctxt "prime_tower_wipe_enabled description" -msgid "" -"After printing the prime tower with one nozzle, wipe the oozed material from " -"the other nozzle off on the prime tower." -msgstr "Após a impressão da torre de preparação com um bocal, limpe o material que vazou do bocal para a torre de preparação." +msgid "After printing the prime tower with one nozzle, wipe the oozed material from the other nozzle off on the prime tower." +msgstr "Após a impressão da torre de preparação com um nozzle, limpe o material que vazou do nozzle para a torre de preparação." +# rever! +# mudança? +# troca? +# substituição? #: fdmprinter.def.json msgctxt "dual_pre_wipe label" msgid "Wipe Nozzle After Switch" -msgstr "Limpar bocal após substituição" +msgstr "Limpar nozzle após mudança" +# rever! +# vazou? vazado? +# escorreu? escorrido? #: fdmprinter.def.json msgctxt "dual_pre_wipe description" -msgid "" -"After switching extruder, wipe the oozed material off of the nozzle on the " -"first thing printed. This performs a safe slow wipe move at a place where " -"the oozed material causes least harm to the surface quality of your print." -msgstr "Após a substituição da extrusora, limpe o material que vazou do bocal para a primeira peça impressa. Isto executa um movimento lento de limpeza segura num local onde o material vazado seja menos prejudicial para a qualidade da superfície da sua impressão." +msgid "After switching extruder, wipe the oozed material off of the nozzle on the first thing printed. This performs a safe slow wipe move at a place where the oozed material causes least harm to the surface quality of your print." +msgstr "Após a mudança de extrusor, limpar o material que escorreu do nozzle na primeira \"coisa\" impressa. Isto executa um movimento lento de limpeza num local onde o material que tenha escorrido seja menos prejudicial para a qualidade da superfície da sua impressão." #: fdmprinter.def.json msgctxt "prime_tower_purge_volume label" msgid "Prime Tower Purge Volume" -msgstr "Volume de purga da torre de preparação" +msgstr "Volume Purga Torre Preparação" #: fdmprinter.def.json msgctxt "prime_tower_purge_volume description" -msgid "" -"Amount of filament to be purged when wiping on the prime tower. Purging is " -"useful for compensating the filament lost by oozing during inactivity of the " -"nozzle." -msgstr "Quantidade de filamento a ser purgado ao limpar a torre de preparação. A purga é útil para compensar o filamento perdido por vazamento durante a inatividade do bocal." +msgid "Amount of filament to be purged when wiping on the prime tower. Purging is useful for compensating the filament lost by oozing during inactivity of the nozzle." +msgstr "Quantidade de filamento a ser purgado ao limpar na torre de preparação. A purga é útil para compensar o filamento perdido por escorrimento durante a inatividade do nozzle." +# rever! #: fdmprinter.def.json msgctxt "ooze_shield_enabled label" msgid "Enable Ooze Shield" -msgstr "Ativar proteção contra vazamentos" +msgstr "Ativar proteção contra escorrimento" #: fdmprinter.def.json msgctxt "ooze_shield_enabled description" -msgid "" -"Enable exterior ooze shield. This will create a shell around the model which " -"is likely to wipe a second nozzle if it's at the same height as the first " -"nozzle." -msgstr "Ativa a proteção exterior contra vazamentos. Isto irá criar uma cobertura em torno do modelo que deverá limpar um segundo bocal, caso este se encontre à mesma altura que o primeiro bocal." +msgid "Enable exterior ooze shield. This will create a shell around the model which is likely to wipe a second nozzle if it's at the same height as the first nozzle." +msgstr "Ativa a proteção exterior contra escorrimentos. Isto irá criar um invólucro em torno do modelo que deverá limpar um segundo nozzle, caso este se encontre à mesma altura que o primeiro nozzle." #: fdmprinter.def.json msgctxt "ooze_shield_angle label" msgid "Ooze Shield Angle" -msgstr "Ângulo da proteção contra vazamentos" +msgstr "Ângulo da proteção contra escorrimentos" #: fdmprinter.def.json msgctxt "ooze_shield_angle description" -msgid "" -"The maximum angle a part in the ooze shield will have. With 0 degrees being " -"vertical, and 90 degrees being horizontal. A smaller angle leads to less " -"failed ooze shields, but more material." -msgstr "O ângulo máximo que uma peça da proteção contra vazamentos poderá ter. 0 graus é vertical e 90 graus é horizontal. Um ângulo menor resulta em menos falhas na proteção contra vazamentos, mas mais material." +msgid "The maximum angle a part in the ooze shield will have. With 0 degrees being vertical, and 90 degrees being horizontal. A smaller angle leads to less failed ooze shields, but more material." +msgstr "O ângulo máximo que uma peça da proteção contra escorrimentos poderá ter. 0 graus é vertical e 90 graus é horizontal. Um ângulo menor resulta em menos falhas na proteção contra escorrimentos, mas mais material." #: fdmprinter.def.json msgctxt "ooze_shield_dist label" msgid "Ooze Shield Distance" -msgstr "Distância da proteção contra vazamentos" +msgstr "Distância da proteção contra escorrimentos" #: fdmprinter.def.json msgctxt "ooze_shield_dist description" msgid "Distance of the ooze shield from the print, in the X/Y directions." -msgstr "A distância da proteção contra vazamentos relativamente à impressão nas direções X/Y." +msgstr "A distância da proteção contra escorrimentos relativamente à impressão nas direções X/Y." +# rever! +# correção? reparação? +# correções? reparações? Emendas? +# objectos? mesh? malha? #: fdmprinter.def.json msgctxt "meshfix label" msgid "Mesh Fixes" -msgstr "Correção de malhas" +msgstr "Correção de Objectos (Mesh)" #: fdmprinter.def.json msgctxt "meshfix description" @@ -4650,80 +4149,64 @@ msgstr "correção_categorias" #: fdmprinter.def.json msgctxt "meshfix_union_all label" msgid "Union Overlapping Volumes" -msgstr "União de volumes sobrepostos" +msgstr "Unir Volumes Sobrepostos" #: fdmprinter.def.json msgctxt "meshfix_union_all description" -msgid "" -"Ignore the internal geometry arising from overlapping volumes within a mesh " -"and print the volumes as one. This may cause unintended internal cavities to " -"disappear." -msgstr "Ignora a geometria interna provocada pela sobreposição de volumes numa malha e imprime os volumes como um só. Pode provocar o desaparecimento de cavidades internas indesejadas." +msgid "Ignore the internal geometry arising from overlapping volumes within a mesh and print the volumes as one. This may cause unintended internal cavities to disappear." +msgstr "Ignorar a geometria interna provocada pela sobreposição de volumes num objecto e imprime os volumes como um só. Pode provocar o desaparecimento indesejado de cavidades interiores." #: fdmprinter.def.json msgctxt "meshfix_union_all_remove_holes label" msgid "Remove All Holes" -msgstr "Remover todos os orifícios" +msgstr "Remover Todos Buracos" #: fdmprinter.def.json msgctxt "meshfix_union_all_remove_holes description" -msgid "" -"Remove the holes in each layer and keep only the outside shape. This will " -"ignore any invisible internal geometry. However, it also ignores layer holes " -"which can be viewed from above or below." -msgstr "Remove os orifícios em cada camada e mantém apenas a forma exterior. Isto irá ignorar qualquer geometria interna invisível. No entanto, também ignora orifícios de camadas que podem ser vistos por cima ou por baixo." +msgid "Remove the holes in each layer and keep only the outside shape. This will ignore any invisible internal geometry. However, it also ignores layer holes which can be viewed from above or below." +msgstr "Remove os buracos em cada camada e mantém apenas a forma exterior. Isto irá ignorar qualquer geometria interna invisível. No entanto, também ignora buracos de camadas que podem ser vistos por cima ou por baixo." +# rever! +# english meaning +# extensiva ou intensiva +# coser extensivamente #: fdmprinter.def.json msgctxt "meshfix_extensive_stitching label" msgid "Extensive Stitching" -msgstr "Costura extensiva" +msgstr "Costura Extensiva" #: fdmprinter.def.json msgctxt "meshfix_extensive_stitching description" -msgid "" -"Extensive stitching tries to stitch up open holes in the mesh by closing the " -"hole with touching polygons. This option can introduce a lot of processing " -"time." -msgstr "A costura extensiva tenta coser orifícios abertos na malha, ao fechá-los com os polígonos em contacto. Esta opção pode acrescentar bastante tempo de processamento." +msgid "Extensive stitching tries to stitch up open holes in the mesh by closing the hole with touching polygons. This option can introduce a lot of processing time." +msgstr "A costura extensiva tenta coser buracos abertos na malha, ao fechá-los com os polígonos adjacentes. Esta opção pode acrescentar bastante tempo de processamento." +# rever! +# desconectadas? +# soltas? +# Separadas? #: fdmprinter.def.json msgctxt "meshfix_keep_open_polygons label" msgid "Keep Disconnected Faces" -msgstr "Manter faces desconectadas" +msgstr "Manter Faces Soltas" +# rever! +# english string meaning? #: fdmprinter.def.json msgctxt "meshfix_keep_open_polygons description" -msgid "" -"Normally Cura tries to stitch up small holes in the mesh and remove parts of " -"a layer with big holes. Enabling this option keeps those parts which cannot " -"be stitched. This option should be used as a last resort option when " -"everything else fails to produce proper GCode." -msgstr "Geralmente, o Cura tenta coser orifícios pequenos na malha e remover as peças de uma camada com orifícios grandes. Ativar esta opção conserva as peças que não podem ser cosidas. Esta opção deve ser utilizada como último recurso quando tudo o resto não produz um GCode adequado." - -#: 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 a segmentação. Se aumentar este tamanho, a malha terá uma resolução inferior. Isto poderá permitir que a impressora mantenha a velocidade existente para processar o g-code e irá aumentar a velocidade de segmentação ao remover os detalhes da malha que não podem ser processados." +msgid "Normally Cura tries to stitch up small holes in the mesh and remove parts of a layer with big holes. Enabling this option keeps those parts which cannot be stitched. This option should be used as a last resort option when everything else fails to produce proper GCode." +msgstr "Geralmente, o Cura tenta remendar pequenos buracos na malha e remover partes de uma camada com buracos grandes. Ativar esta opção conserva as peças que não podem ser remendadas. Esta opção deve ser utilizada como último recurso quando tudo o resto não produz um GCode adequado." +# rever! +# does it apply only to Merged obkects (menu) or individual objects that touch +# merged - combinadas? - fundidas? #: fdmprinter.def.json msgctxt "multiple_mesh_overlap label" msgid "Merged Meshes Overlap" -msgstr "Sobreposição de malhas fundidas" +msgstr "Sobreposição Malhas Combinadas" #: fdmprinter.def.json msgctxt "multiple_mesh_overlap description" -msgid "" -"Make meshes which are touching each other overlap a bit. This makes them " -"bond together better." +msgid "Make meshes which are touching each other overlap a bit. This makes them bond together better." msgstr "Faz com que as malhas em contacto se sobreponham ligeiramente. Isto melhora a sua ligação." #: fdmprinter.def.json @@ -4731,12 +4214,11 @@ msgctxt "carve_multiple_volumes label" msgid "Remove Mesh Intersection" msgstr "Remover interceção de malhas" +# rever! #: fdmprinter.def.json msgctxt "carve_multiple_volumes description" -msgid "" -"Remove areas where multiple meshes are overlapping with each other. This may " -"be used if merged dual material objects overlap with each other." -msgstr "Remove as áreas onde várias malhas se sobrepõem entre si. Isto pode ser utilizado se houver sobreposição de objetos de material duplo fundido." +msgid "Remove areas where multiple meshes are overlapping with each other. This may be used if merged dual material objects overlap with each other." +msgstr "Remover as áreas onde várias malhas se sobrepõem entre si. Isto pode ser utilizado se houver uma sobreposição dos objetos com diferentes materiais que estejam combinados." #: fdmprinter.def.json msgctxt "alternate_carve_order label" @@ -4745,30 +4227,23 @@ msgstr "Alternar remoção de malha" #: fdmprinter.def.json msgctxt "alternate_carve_order description" -msgid "" -"Switch to which mesh intersecting volumes will belong with every layer, so " -"that the overlapping meshes become interwoven. Turning this setting off will " -"cause one of the meshes to obtain all of the volume in the overlap, while it " -"is removed from the other meshes." +msgid "Switch to which mesh intersecting volumes will belong with every layer, so that the overlapping meshes become interwoven. Turning this setting off will cause one of the meshes to obtain all of the volume in the overlap, while it is removed from the other meshes." msgstr "Altera para os volumes de interceção de malha que pertencerão a cada camada, para que as malhas sobrepostas fiquem entrelaçadas. Desativar esta definição poderá fazer com que uma das malhas obtenha todo o volume na sobreposição, sendo removido das outras malhas." #: fdmprinter.def.json msgctxt "remove_empty_first_layers label" msgid "Remove Empty First Layers" -msgstr "Remover primeiras camadas vazias" +msgstr "Remover Camadas Iniciais Vazias" #: fdmprinter.def.json 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 segmentação estiver definida como Exclusivo ou Centro." +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 "blackmagic label" msgid "Special Modes" -msgstr "Modos especiais" +msgstr "Modos Especiais" #: fdmprinter.def.json msgctxt "blackmagic description" @@ -4782,13 +4257,8 @@ msgstr "Sequência de impressão" #: fdmprinter.def.json msgctxt "print_sequence description" -msgid "" -"Whether to print all models one layer at a time or to wait for one model to " -"finish, before moving on to the next. One at a time mode is only possible if " -"all models are separated in such a way that the whole print head can move in " -"between and all models are lower than the distance between the nozzle and " -"the X/Y axes." -msgstr "Imprime todos os modelos uma camada de cada vez ou aguarda pela conclusão de um modelo antes de avançar para o seguinte. O modo Individualmente apenas é possível se todos os modelos estiverem separados de tal forma que toda a cabeça de impressão possa mover-se entre eles e todos os modelos estejam abaixo da distância entre o bocal e os eixos X/Y." +msgid "Whether to print all models one layer at a time or to wait for one model to finish, before moving on to the next. One at a time mode is only possible if all models are separated in such a way that the whole print head can move in between and all models are lower than the distance between the nozzle and the X/Y axes." +msgstr "Imprime todos os modelos uma camada de cada vez ou aguarda pela conclusão de um modelo antes de avançar para o seguinte. O modo Individualmente apenas é possível se todos os modelos estiverem separados de tal forma que toda a cabeça de impressão possa mover-se entre eles e todos os modelos estejam abaixo da distância entre o nozzle e os eixos X/Y." #: fdmprinter.def.json msgctxt "print_sequence option all_at_once" @@ -4803,28 +4273,28 @@ msgstr "Individualmente" #: fdmprinter.def.json msgctxt "infill_mesh label" msgid "Infill Mesh" -msgstr "Malha de preenchimento" +msgstr "Objecto de Enchimento" +# rever! +# mesh - malha? - objecto? - modelo? #: fdmprinter.def.json msgctxt "infill_mesh description" -msgid "" -"Use this mesh to modify the infill of other meshes with which it overlaps. " -"Replaces infill regions of other meshes with regions for this mesh. It's " -"suggested to only print one Wall and no Top/Bottom Skin for this mesh." -msgstr "Utilize esta malha para modificar o preenchimento de outras malhas com as quais se sobrepõe. Substitui as regiões de preenchimento de outras malhas por regiões para esta malha. É recomendável imprimir apenas uma parede sem revestimento superior/inferior para esta malha." +msgid "Use this mesh to modify the infill of other meshes with which it overlaps. Replaces infill regions of other meshes with regions for this mesh. It's suggested to only print one Wall and no Top/Bottom Skin for this mesh." +msgstr "Utilize este objecto para modificar o enchimento de outros objectos com os quais se sobrepõe. Substitui as regiões de enchimento de outros objectos por regiões deste objecto. É recomendado imprimir este objecto apenas com uma Parede e sem Superfícies Superior/Inferior." #: fdmprinter.def.json msgctxt "infill_mesh_order label" msgid "Infill Mesh Order" -msgstr "Ordem de malhas de preenchimento" +msgstr "Hierarquia Objectos Enchimento" +# rever! +# ordem superior? +# inferior? +# normais? #: fdmprinter.def.json msgctxt "infill_mesh_order description" -msgid "" -"Determines which infill mesh is inside the infill of another infill mesh. An " -"infill mesh with a higher order will modify the infill of infill meshes with " -"lower order and normal meshes." -msgstr "Determina qual a malha de preenchimento que se encontra no interior do preenchimento de outra malha de preenchimento. Uma malha de preenchimento de ordem superior irá modificar o preenchimento das malhas de preenchimento de ordem inferior e das malhas normais." +msgid "Determines which infill mesh is inside the infill of another infill mesh. An infill mesh with a higher order will modify the infill of infill meshes with lower order and normal meshes." +msgstr "Determina qual o Objecto de Enchimento que se encontra no interior do enchimento de outro Objecto de Enchimento. Um objecto de enchimento com um nível superior na hierarquia irá modificar o enchimento dos objectos de enchimento em níveis inferiores assim como o enchimento dos objectos normais." #: fdmprinter.def.json msgctxt "cutting_mesh label" @@ -4833,11 +4303,8 @@ msgstr "Malha de corte" #: fdmprinter.def.json msgctxt "cutting_mesh description" -msgid "" -"Limit the volume of this mesh to within other meshes. You can use this to " -"make certain areas of one mesh print with different settings and with a " -"whole different extruder." -msgstr "Limita o volume desta malha para o interior de outras malhas. Pode utilizar esta opção para fazer com que determinadas áreas de uma malha sejam impressas com diferentes definições e com uma extrusora distinta." +msgid "Limit the volume of this mesh to within other meshes. You can use this to make certain areas of one mesh print with different settings and with a whole different extruder." +msgstr "Limita o volume desta malha para o interior de outras malhas. Pode utilizar esta opção para fazer com que determinadas áreas de uma malha sejam impressas com diferentes definições e com um extrusor distinta." #: fdmprinter.def.json msgctxt "mold_enabled label" @@ -4846,10 +4313,8 @@ msgstr "Molde" #: fdmprinter.def.json msgctxt "mold_enabled description" -msgid "" -"Print models as a mold, which can be cast in order to get a model which " -"resembles the models on the build plate." -msgstr "Imprime modelos como moldes, os quais podem ser fundidos de forma a obter um modelo que se assemelhe aos modelos da placa de construção." +msgid "Print models as a mold, which can be cast in order to get a model which resembles the models on the build plate." +msgstr "Imprime modelos como moldes, os quais podem ser fundidos de forma a obter um modelo que se assemelhe aos modelos da base de construção." #: fdmprinter.def.json msgctxt "mold_width label" @@ -4858,15 +4323,13 @@ msgstr "Largura mínima do molde" #: fdmprinter.def.json msgctxt "mold_width description" -msgid "" -"The minimal distance between the ouside of the mold and the outside of the " -"model." +msgid "The minimal distance between the ouside of the mold and the outside of the model." msgstr "A distância mínima entre o exterior do molde e o exterior do modelo." #: fdmprinter.def.json msgctxt "mold_roof_height label" msgid "Mold Roof Height" -msgstr "Altura do teto do molde" +msgstr "Altura do tecto do molde" #: fdmprinter.def.json msgctxt "mold_roof_height description" @@ -4880,11 +4343,8 @@ msgstr "Ângulo do molde" #: fdmprinter.def.json msgctxt "mold_angle description" -msgid "" -"The angle of overhang of the outer walls created for the mold. 0° will make " -"the outer shell of the mold vertical, while 90° will make the outside of the " -"model follow the contour of the model." -msgstr "O ângulo da saliência das paredes exteriores criadas para o molde. 0° irá tornar a cobertura exterior do molde vertical, enquanto 90° fará com que o exterior do modelo siga o contorno do mesmo." +msgid "The angle of overhang of the outer walls created for the mold. 0° will make the outer shell of the mold vertical, while 90° will make the outside of the model follow the contour of the model." +msgstr "O ângulo da saliência das paredes exteriores criadas para o molde. 0° irá tornar o invólucro exterior do molde vertical, enquanto 90° fará com que o exterior do modelo siga o contorno do mesmo." #: fdmprinter.def.json msgctxt "support_mesh label" @@ -4893,23 +4353,9 @@ msgstr "Malha de suporte" #: fdmprinter.def.json msgctxt "support_mesh description" -msgid "" -"Use this mesh to specify support areas. This can be used to generate support " -"structure." +msgid "Use this mesh to specify support areas. This can be used to generate support structure." msgstr "Utilize esta malha para especificar áreas de suporte. Esta opção pode ser utilizada para gerar estruturas de suporte." -#: fdmprinter.def.json -msgctxt "support_mesh_drop_down label" -msgid "Drop Down Support Mesh" -msgstr "Malha de suporte pendente" - -#: fdmprinter.def.json -msgctxt "support_mesh_drop_down description" -msgid "" -"Make support everywhere below the support mesh, so that there's no overhang " -"in the support mesh." -msgstr "Cria suporte em qualquer local abaixo da malha de suporte, para que não existam saliências na malha de suporte." - #: fdmprinter.def.json msgctxt "anti_overhang_mesh label" msgid "Anti Overhang Mesh" @@ -4917,9 +4363,7 @@ msgstr "Malha antissaliências" #: fdmprinter.def.json msgctxt "anti_overhang_mesh description" -msgid "" -"Use this mesh to specify where no part of the model should be detected as " -"overhang. This can be used to remove unwanted support structure." +msgid "Use this mesh to specify where no part of the model should be detected as overhang. This can be used to remove unwanted support structure." msgstr "Utilize esta malha para especificar a parte do modelo que não deve ser detetada como saliência. Esta opção pode ser utilizada para remover estruturas de suporte indesejadas." #: fdmprinter.def.json @@ -4929,13 +4373,8 @@ msgstr "Modo de superfície" #: fdmprinter.def.json msgctxt "magic_mesh_surface_mode description" -msgid "" -"Treat the model as a surface only, a volume, or volumes with loose surfaces. " -"The normal print mode only prints enclosed volumes. \"Surface\" prints a " -"single wall tracing the mesh surface with no infill and no top/bottom skin. " -"\"Both\" prints enclosed volumes like normal and any remaining polygons as " -"surfaces." -msgstr "Trata o modelo apenas como superfície, volume ou volumes com superfícies soltas. O modo de impressão normal imprime apenas volumes delimitados. O modo \"Superfície\" imprime uma única parede que acompanha a superfície da malha sem preenchimento ou revestimento superior/inferior. O modo \"Ambos\" imprime volumes delimitados normalmente e quaisquer polígonos restantes como superfícies." +msgid "Treat the model as a surface only, a volume, or volumes with loose surfaces. The normal print mode only prints enclosed volumes. \"Surface\" prints a single wall tracing the mesh surface with no infill and no top/bottom skin. \"Both\" prints enclosed volumes like normal and any remaining polygons as surfaces." +msgstr "Trata o modelo apenas como superfície, volume ou volumes com superfícies soltas. O modo de impressão normal imprime apenas volumes delimitados. O modo \"Superfície\" imprime uma única parede que acompanha a superfície da malha sem enchimento ou revestimento superior/inferior. O modo \"Ambos\" imprime volumes delimitados normalmente e quaisquer polígonos restantes como superfícies." #: fdmprinter.def.json msgctxt "magic_mesh_surface_mode option normal" @@ -4955,29 +4394,24 @@ msgstr "Ambos" #: fdmprinter.def.json msgctxt "magic_spiralize label" msgid "Spiralize Outer Contour" -msgstr "Contorno externo em espiral" +msgstr "\"Spiralize\" Contorno Exterior" +# rever! +# um aumento em Z #: fdmprinter.def.json msgctxt "magic_spiralize description" -msgid "" -"Spiralize smooths out the Z move of the outer edge. This will create a " -"steady Z increase over the whole print. This feature turns a solid model " -"into a single walled print with a solid bottom. This feature should only be " -"enabled when each layer only contains a single part." -msgstr "Esta opção uniformiza o movimento Z da extremidade exterior. Isto irá criar um aumento Z constante em toda a impressão. Esta funcionalidade torna um modelo sólido numa única impressão de parede com um fundo sólido. Esta funcionalidade só deve ser ativada quando cada camada contiver apenas uma única peça." +msgid "Spiralize smooths out the Z move of the outer edge. This will create a steady Z increase over the whole print. This feature turns a solid model into a single walled print with a solid bottom. This feature should only be enabled when each layer only contains a single part." +msgstr "\"Spiralize\" é uma opção que uniformiza o movimento em Z do contorno exterior. Isto irá criar uma elevação em Z, constante, em toda a peça. Esta funcionalidade transforma um modelo sólido numa impressão com uma única parede e com uma base sólida. Esta funcionalidade só deve ser ativada quando cada camada contiver apenas uma única peça." #: fdmprinter.def.json msgctxt "smooth_spiralized_contours label" msgid "Smooth Spiralized Contours" -msgstr "Suavizar contornos em espiral" +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 em espiral para reduzir a visibilidade da costura Z (a costura Z deve ser praticamente impercetível na impressão, mas continuará a ser visível na visualização da camada). Observe que a suavização tenderá a desfocar pequenos detalhes na 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 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." #: fdmprinter.def.json msgctxt "relative_extrusion label" @@ -4986,13 +4420,7 @@ msgstr "Extrusão relativa" #: fdmprinter.def.json msgctxt "relative_extrusion description" -msgid "" -"Use relative extrusion rather than absolute extrusion. Using relative E-" -"steps makes for easier post-processing of the Gcode. However, it's not " -"supported by all printers and it may produce very slight deviations in the " -"amount of deposited material compared to absolute E-steps. Irrespective of " -"this setting, the extrusion mode will always be set to absolute before any " -"Gcode script is output." +msgid "Use relative extrusion rather than absolute extrusion. Using relative E-steps makes for easier post-processing of the Gcode. However, it's not supported by all printers and it may produce very slight deviations in the amount of deposited material compared to absolute E-steps. Irrespective of this setting, the extrusion mode will always be set to absolute before any Gcode script is output." msgstr "Utilize a extrusão relativa em vez da extrusão absoluta. A utilização de passos E relativos facilita o pós-processamento do Gcode. Contudo, isto não é compatível com todas as impressoras e poderá produzir ligeiros desvios na quantidade de material depositado em comparação com os passos E absolutos. Independentemente desta definição, o modo de extrusão será sempre definido como absoluto antes da saída de qualquer script Gcode." #: fdmprinter.def.json @@ -5006,31 +4434,217 @@ msgid "experimental!" msgstr "experimental!" #: fdmprinter.def.json -msgctxt "optimize_wall_printing_order label" -msgid "Optimize Wall Printing Order" -msgstr "Otimizar ordem de impressão de paredes" +msgctxt "support_tree_enable label" +msgid "Tree Support" +msgstr "Suporte em árvore" #: fdmprinter.def.json -msgctxt "optimize_wall_printing_order description" -msgid "" -"Optimize the order in which walls are printed so as to reduce the number of " -"retractions and the distance travelled. Most parts will benefit from this " -"being enabled but some may actually take longer so please compare the print " -"time estimates with and without optimization." -msgstr "Otimiza a ordem na qual as paredes são impressas de forma a reduzir o número de retrações e a distância percorrida. A maioria das peças irá beneficiar da ativação desta opção, embora algumas possam demorar mais tempo, portanto compare as estimativas de tempo de impressão com e sem otimização." +msgctxt "support_tree_enable description" +msgid "Generate a tree-like support with branches that support your print. This may reduce material usage and print time, but greatly increases slicing time." +msgstr "Crie uma estrutura em forma de árvore com ramos que suportem a sua impressão. Isto poderá reduzir a utilização de material e o tempo de impressão, mas aumentará consideravelmente o tempo de seccionamento." +#: fdmprinter.def.json +msgctxt "support_tree_angle label" +msgid "Tree Support Branch Angle" +msgstr "Ângulo dos ramos do suporte em árvore" + +#: fdmprinter.def.json +msgctxt "support_tree_angle description" +msgid "The angle of the branches. Use a lower angle to make them more vertical and more stable. Use a higher angle to be able to have more reach." +msgstr "O ângulo dos ramos. Utilize um ângulo menor para torná-los mais verticais e estáveis. Utilize um ângulo maior para obter mais alcance." + +#: fdmprinter.def.json +msgctxt "support_tree_branch_distance label" +msgid "Tree Support Branch Distance" +msgstr "Distância dos ramos do suporte em árvore" + +#: fdmprinter.def.json +msgctxt "support_tree_branch_distance description" +msgid "How far apart the branches need to be when they touch the model. Making this distance small will cause the tree support to touch the model at more points, causing better overhang but making support harder to remove." +msgstr "A distância a que os ramos devem encontrar-se ao entrar em contacto com o modelo. Diminuir esta distância irá fazer com que o suporte em árvore entre em contacto com o modelo em vários pontos, melhorando a qualidade das saliências, mas dificultando a sua remoção." + +#: fdmprinter.def.json +msgctxt "support_tree_branch_diameter label" +msgid "Tree Support Branch Diameter" +msgstr "Diâmetro dos ramos do suporte em árvore" + +#: fdmprinter.def.json +msgctxt "support_tree_branch_diameter description" +msgid "The diameter of the thinnest branches of tree support. Thicker branches are more sturdy. Branches towards the base will be thicker than this." +msgstr "O diâmetro dos ramos mais finos do suporte em árvore. Os ramos mais espessos são mais robustos. Os ramos tornar-se-ão mais espessos em direção à base." + +#: fdmprinter.def.json +msgctxt "support_tree_branch_diameter_angle label" +msgid "Tree Support Branch Diameter Angle" +msgstr "Ângulo do diâmetro dos ramos do suporte em árvore" + +#: fdmprinter.def.json +msgctxt "support_tree_branch_diameter_angle description" +msgid "The angle of the branches' diameter as they gradually become thicker towards the bottom. An angle of 0 will cause the branches to have uniform thickness over their length. A bit of an angle can increase stability of the tree support." +msgstr "O ângulo do diâmetro dos ramos, à medida que ficam mais espessos em direção à base. Um ângulo de 0 irá causar uma espessura uniforme dos ramos ao longo do seu comprimento. Um ângulo reduzido poderá aumentar a estabilidade do suporte em árvore." + +#: fdmprinter.def.json +msgctxt "support_tree_collision_resolution label" +msgid "Tree Support Collision Resolution" +msgstr "Resolução de colisão do suporte em árvore" + +#: fdmprinter.def.json +msgctxt "support_tree_collision_resolution description" +msgid "Resolution to compute collisions with to avoid hitting the model. Setting this lower will produce more accurate trees that fail less often, but increases slicing time dramatically." +msgstr "Resolução do cálculo de colisões para evitar a colisão com o modelo. Uma definição inferior irá produzir árvores mais precisas com menos falhas, mas aumentar drasticamente o tempo de seccionamento." + +#: fdmprinter.def.json +msgctxt "support_tree_wall_thickness label" +msgid "Tree Support Wall Thickness" +msgstr "Espessura das paredes do suporte em árvore" + +#: fdmprinter.def.json +msgctxt "support_tree_wall_thickness description" +msgid "The thickness of the walls of the branches of tree support. Thicker walls take longer to print but don't fall over as easily." +msgstr "A espessura das paredes dos ramos do suporte em árvore. As paredes mais espessas demoram mais tempo a imprimir, mas não caem tão facilmente." + +#: fdmprinter.def.json +msgctxt "support_tree_wall_count label" +msgid "Tree Support Wall Line Count" +msgstr "Contagem de linhas das paredes do suporte em árvore" + +#: fdmprinter.def.json +msgctxt "support_tree_wall_count description" +msgid "The number of walls of the branches of tree support. Thicker walls take longer to print but don't fall over as easily." +msgstr "O número de paredes dos ramos do suporte em árvore. As paredes mais espessas demoram mais tempo a imprimir, mas não caem tão facilmente." + +#: fdmprinter.def.json +msgctxt "slicing_tolerance label" +msgid "Slicing Tolerance" +msgstr "Tolerância do Seccionamento" + +# rever! +# centro ou meio? +#: fdmprinter.def.json +msgctxt "slicing_tolerance description" +msgid "How to slice layers with diagonal surfaces. The areas of a layer can be generated based on where the middle of the layer intersects the surface (Middle). Alternatively each layer can have the areas which fall inside of the volume throughout the height of the layer (Exclusive) or a layer has the areas which fall inside anywhere within the layer (Inclusive). Exclusive retains the most details, Inclusive makes for the best fit and Middle takes the least time to process." +msgstr "Métodos para seccionar as camadas com as superfícies diagonais. As áreas de uma camada podem ser geradas onde o centro da camada intersecta a superfície (Centro). Como alternativa, cada camada pode conter as áreas que se encontram no interior do volume ao longo da espessura da camada (Exclusivo) ou uma camada pode conter as áreas que se encontram no interior dos perímetros da camada (Inclusivo). A opção Exclusivo retém o maior número de detalhes, a opção Inclusivo garante a melhor adaptação ao modelo e a opção Centro tem o menor tempo de processamento." + +#: fdmprinter.def.json +msgctxt "slicing_tolerance option middle" +msgid "Middle" +msgstr "Centro" + +#: fdmprinter.def.json +msgctxt "slicing_tolerance option exclusive" +msgid "Exclusive" +msgstr "Exclusivo" + +#: fdmprinter.def.json +msgctxt "slicing_tolerance option inclusive" +msgid "Inclusive" +msgstr "Inclusivo" + +#: fdmprinter.def.json +msgctxt "roofing_line_width label" +msgid "Top Surface Skin Line Width" +msgstr "Diâmetro Linha Revestimento Superior" + +#: fdmprinter.def.json +msgctxt "roofing_line_width description" +msgid "Width of a single line of the areas at the top of the print." +msgstr "O diâmetro de uma única linha das superfícies de revestimento na parte superior da impressão." + +#: fdmprinter.def.json +msgctxt "roofing_pattern label" +msgid "Top Surface Skin Pattern" +msgstr "Padrão Revestimento Superior" + +#: fdmprinter.def.json +msgctxt "roofing_pattern description" +msgid "The pattern of the top most layers." +msgstr "O padrão geométrico das camadas de revestimento da superfície superior." + +#: fdmprinter.def.json +msgctxt "roofing_pattern option lines" +msgid "Lines" +msgstr "Linhas" + +#: fdmprinter.def.json +msgctxt "roofing_pattern option concentric" +msgid "Concentric" +msgstr "Concêntrico" + +#: fdmprinter.def.json +msgctxt "roofing_pattern option zigzag" +msgid "Zig Zag" +msgstr "Ziguezague" + +#: fdmprinter.def.json +msgctxt "roofing_angles label" +msgid "Top Surface Skin Line Directions" +msgstr "Direções Linha Revestimento Superior" + +#: fdmprinter.def.json +msgctxt "roofing_angles description" +msgid "A list of integer line directions to use when the top surface skin layers use the lines or zig zag pattern. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the traditional default angles (45 and 135 degrees)." +msgstr "Uma lista de ângulos (números inteiros) relativos às direções de linha a utilizar quando as camadas de revestimento da superfície superior utilizarem o padrão de Linhas ou Ziguezague. 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 tradicionais (45 e 135 graus)." + +#: fdmprinter.def.json +msgctxt "infill_enable_travel_optimization label" +msgid "Infill Travel Optimization" +msgstr "Otimização da deslocação de preenchimento" + +#: fdmprinter.def.json +msgctxt "infill_enable_travel_optimization description" +msgid "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." +msgstr "Quando ativada, a ordem pela qual as linhas de preenchimento são impressas é otimizada para reduzir a distância percorrida. A redução do tempo de deslocação alcançado depende em grande medida do modelo a segmentar, do padrão de preenchimento, da densidade etc. Observe que, em alguns modelos com muitas áreas de preenchimento reduzidas, o tempo de segmentação do modelo pode aumentar consideravelmente." + +#: fdmprinter.def.json +msgctxt "material_flow_dependent_temperature label" +msgid "Auto Temperature" +msgstr "Temperatura automática" + +#: fdmprinter.def.json +msgctxt "material_flow_dependent_temperature description" +msgid "Change the temperature for each layer automatically with the average flow speed of that layer." +msgstr "Mudar, automaticamente, a temperatura de cada camada com a velocidade de fluxo média dessa camada." + +#: fdmprinter.def.json +msgctxt "material_flow_temp_graph label" +msgid "Flow Temperature Graph" +msgstr "Gráfico de temperatura de fluxo" + +#: fdmprinter.def.json +msgctxt "material_flow_temp_graph description" +msgid "Data linking material flow (in mm3 per second) to temperature (degrees Celsius)." +msgstr "Os dados que ligam o fluxo de material (em mm3 por segundo) à temperatura (graus Celsius)." + +#: 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." + +# rever! +# Is the english string correct? for the label? +# -Break up +# Partir? +# Dividir? +# -chunks +# Partes? +# Pedaços? #: fdmprinter.def.json msgctxt "support_skip_some_zags label" msgid "Break Up Support In Chunks" -msgstr "Separar suporte em blocos" +msgstr "Separar Suportes em Blocos" #: fdmprinter.def.json msgctxt "support_skip_some_zags description" -msgid "" -"Skip some support line connections to make the support structure easier to " -"break away. This setting is applicable to the Zig Zag support infill pattern." -msgstr "Ignora algumas ligações de linha de suporte para facilitar a separação da estrutura de suporte. Esta definição é aplicável ao padrão de preenchimento de suporte em ziguezague." +msgid "Skip some support line connections to make the support structure easier to break away. This setting is applicable to the Zig Zag support infill pattern." +msgstr "Ignorar algumas ligações das linhas de suporte para facilitar a separação da estrutura de suporte. Esta definição é aplicável ao padrão em Ziguezague do enchimento de suporte." +# rever! +# Is the english string correct? for the label? #: fdmprinter.def.json msgctxt "support_skip_zag_per_mm label" msgid "Support Chunk Size" @@ -5038,34 +4652,30 @@ msgstr "Tamanho do bloco de suporte" #: fdmprinter.def.json msgctxt "support_skip_zag_per_mm description" -msgid "" -"Leave out a connection between support lines once every N millimeter to make " -"the support structure easier to break away." -msgstr "Deixa uma ligação entre as linhas de suporte a cada X milímetros para facilitar a separação da estrutura de suporte." +msgid "Leave out a connection between support lines once every N millimeter to make the support structure easier to break away." +msgstr "Omitir uma ligação entre as linhas de suporte a cada \"x\" milímetros para facilitar a separação da estrutura de suporte." +# rever! +# Is the english string correct? for the label? #: fdmprinter.def.json msgctxt "support_zag_skip_count label" msgid "Support Chunk Line Count" -msgstr "Contagem de linhas do bloco de suporte" +msgstr "Número de linhas do bloco de suporte" #: fdmprinter.def.json msgctxt "support_zag_skip_count description" -msgid "" -"Skip one in every N connection lines to make the support structure easier to " -"break away." -msgstr "Ignora uma em cada X linhas de ligação para facilitar a separação da estrutura de suporte." +msgid "Skip one in every N connection lines to make the support structure easier to break away." +msgstr "Ignorar uma em cada \"x\" linhas de ligação para facilitar a separação da estrutura de suporte." #: fdmprinter.def.json msgctxt "draft_shield_enabled label" msgid "Enable Draft Shield" -msgstr "Ativar proteção contra correntes de ar" +msgstr "Barreira contra correntes de ar" #: fdmprinter.def.json msgctxt "draft_shield_enabled description" -msgid "" -"This will create a wall around the model, which traps (hot) air and shields " -"against exterior airflow. Especially useful for materials which warp easily." -msgstr "Isto irá criar uma parede em torno do modelo que retém ar (quente) e o protege contra fluxos de ar exterior. Esta opção é especialmente útil para materiais que se deformam com facilidade." +msgid "This will create a wall around the model, which traps (hot) air and shields against exterior airflow. Especially useful for materials which warp easily." +msgstr "Isto irá criar uma parede em torno do modelo, que retém o ar (quente) e protege contra correntes de ar externas. Esta opção é especialmente útil para materiais que se deformam com facilidade." #: fdmprinter.def.json msgctxt "draft_shield_dist label" @@ -5084,9 +4694,7 @@ msgstr "Limite de proteção contra correntes de ar" #: fdmprinter.def.json msgctxt "draft_shield_height_limitation description" -msgid "" -"Set the height of the draft shield. Choose to print the draft shield at the " -"full height of the model or at a limited height." +msgid "Set the height of the draft shield. Choose to print the draft shield at the full height of the model or at a limited height." msgstr "Define a altura da proteção contra correntes de ar. Opte por imprimir a proteção contra correntes de ar com a altura máxima do modelo ou com uma altura limitada." #: fdmprinter.def.json @@ -5106,9 +4714,7 @@ msgstr "Altura da proteção contra correntes de ar" #: fdmprinter.def.json msgctxt "draft_shield_height description" -msgid "" -"Height limitation of the draft shield. Above this height no draft shield " -"will be printed." +msgid "Height limitation of the draft shield. Above this height no draft shield will be printed." msgstr "Limite de altura da proteção contra correntes de ar. Não será impressa qualquer proteção contra correntes de ar acima desta altura." #: fdmprinter.def.json @@ -5118,10 +4724,7 @@ msgstr "Tornar saliência imprimível" #: fdmprinter.def.json msgctxt "conical_overhang_enabled description" -msgid "" -"Change the geometry of the printed model such that minimal support is " -"required. Steep overhangs will become shallow overhangs. Overhanging areas " -"will drop down to become more vertical." +msgid "Change the geometry of the printed model such that minimal support is required. Steep overhangs will become shallow overhangs. Overhanging areas will drop down to become more vertical." msgstr "Altera a geometria do modelo impresso de forma que seja necessário suporte mínimo. Saliências acentuadas tornar-se-ão saliências rasas. As áreas de saliências irão baixar para se tornarem mais verticais." #: fdmprinter.def.json @@ -5131,24 +4734,20 @@ msgstr "Ângulo máximo do modelo" #: fdmprinter.def.json msgctxt "conical_overhang_angle description" -msgid "" -"The maximum angle of overhangs after the they have been made printable. At a " -"value of 0° all overhangs are replaced by a piece of model connected to the " -"build plate, 90° will not change the model in any way." -msgstr "O ângulo máximo das saliências após se terem tornado imprimíveis. Com um valor de 0°, todas as saliências são substituídas por um modelo ligado à placa de construção e, com um valor de 90°, o modelo não será alterado de forma alguma." +msgid "The maximum angle of overhangs after the they have been made printable. At a value of 0° all overhangs are replaced by a piece of model connected to the build plate, 90° will not change the model in any way." +msgstr "O ângulo máximo das saliências após se terem tornado imprimíveis. Com um valor de 0°, todas as saliências são substituídas por um modelo ligado à base de construção e, com um valor de 90°, o modelo não será alterado de forma alguma." #: fdmprinter.def.json msgctxt "coasting_enable label" msgid "Enable Coasting" msgstr "Ativar desaceleração" +# rever! +# fios soltos? #: fdmprinter.def.json msgctxt "coasting_enable description" -msgid "" -"Coasting replaces the last part of an extrusion path with a travel path. The " -"oozed material is used to print the last piece of the extrusion path in " -"order to reduce stringing." -msgstr "A desaceleração substitui a última parte de um caminho de extrusão por um caminho de deslocamento. O material vazado é utilizado para imprimir a última parte do caminho de extrusão de forma a reduzir os fios soltos." +msgid "Coasting replaces the last part of an extrusion path with a travel path. The oozed material is used to print the last piece of the extrusion path in order to reduce stringing." +msgstr "\"Coasting\" substitui a última parte de um percurso de extrusão por um percurso de deslocamento. O material que escorreu é utilizado para imprimir a última parte do percurso de extrusão de forma a reduzir os s." #: fdmprinter.def.json msgctxt "coasting_volume label" @@ -5157,10 +4756,8 @@ msgstr "Volume de desaceleração" #: fdmprinter.def.json msgctxt "coasting_volume description" -msgid "" -"The volume otherwise oozed. This value should generally be close to the " -"nozzle diameter cubed." -msgstr "O volume que, caso contrário, vazaria. Geralmente, este valor deve ser próximo ao diâmetro cúbico do bocal." +msgid "The volume otherwise oozed. This value should generally be close to the nozzle diameter cubed." +msgstr "O volume que de outra forma iria escorrer. Geralmente, este valor deve ser próximo ao diâmetro cúbico do nozzle." #: fdmprinter.def.json msgctxt "coasting_min_volume label" @@ -5169,11 +4766,7 @@ msgstr "Volume mínimo antes da desaceleração" #: fdmprinter.def.json msgctxt "coasting_min_volume description" -msgid "" -"The smallest volume an extrusion path should have before allowing coasting. " -"For smaller extrusion paths, less pressure has been built up in the bowden " -"tube and so the coasted volume is scaled linearly. This value should always " -"be larger than the Coasting Volume." +msgid "The smallest volume an extrusion path should have before allowing coasting. For smaller extrusion paths, less pressure has been built up in the bowden tube and so the coasted volume is scaled linearly. This value should always be larger than the Coasting Volume." msgstr "O menor volume que um caminho de extrusão deve ter antes de permitir a desaceleração. Para caminhos de extrusão mais curtos, é acumulada menos pressão no tubo Bowden e, como tal, o volume de desaceleração adota uma escala linear. Este valor deve sempre ser superior ao Volume de desaceleração." #: fdmprinter.def.json @@ -5183,24 +4776,18 @@ msgstr "Velocidade de desaceleração" #: fdmprinter.def.json 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." +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 do revestimento" +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 as direções apenas X e apenas Y." +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" @@ -5209,9 +4796,7 @@ msgstr "Tamanho da bolsa de cruz 3D" #: fdmprinter.def.json msgctxt "cross_infill_pocket_size description" -msgid "" -"The size of pockets at four-way crossings in the cross 3D pattern at heights " -"where the pattern is touching itself." +msgid "The size of pockets at four-way crossings in the cross 3D pattern at heights where the pattern is touching itself." msgstr "O tamanho das bolsas em cruzamentos de quatro vias no padrão de cruz 3D em alturas onde o padrão está em contacto consigo próprio." #: fdmprinter.def.json @@ -5221,60 +4806,47 @@ msgstr "Alternar bolsas de cruz 3D" #: fdmprinter.def.json msgctxt "cross_infill_apply_pockets_alternatingly description" -msgid "" -"Only apply pockets at half of the four-way crossings in the cross 3D pattern " -"and alternate the location of the pockets between heights where the pattern " -"is touching itself." +msgid "Only apply pockets at half of the four-way crossings in the cross 3D pattern and alternate the location of the pockets between heights where the pattern is touching itself." msgstr "Aplica bolsas em apenas metade dos cruzamentos de quatro vias no padrão de cruz 3D e alterna a localização das bolsas entre alturas onde o padrão está em contacto consigo próprio." #: fdmprinter.def.json msgctxt "spaghetti_infill_enabled label" msgid "Spaghetti Infill" -msgstr "Preenchimento em esparguete" +msgstr "Enchimento em esparguete" #: fdmprinter.def.json msgctxt "spaghetti_infill_enabled description" -msgid "" -"Print the infill every so often, so that the filament will curl up " -"chaotically inside the object. This reduces print time, but the behaviour is " -"rather unpredictable." -msgstr "Imprime o preenchimento de tempos a tempos, para que o filamento encaracole desordenadamente dentro do objeto. Isto reduz o tempo de impressão, mas o comportamento é um pouco imprevisível." +msgid "Print the infill every so often, so that the filament will curl up chaotically inside the object. This reduces print time, but the behaviour is rather unpredictable." +msgstr "Imprime o enchimento de tempos a tempos, para que o filamento encaracole desordenadamente dentro do objeto. Isto reduz o tempo de impressão, mas o comportamento é um pouco imprevisível." #: fdmprinter.def.json msgctxt "spaghetti_infill_stepped label" msgid "Spaghetti Infill Stepping" -msgstr "Passos de preenchimento em esparguete" +msgstr "Passos de enchimento em esparguete" #: fdmprinter.def.json msgctxt "spaghetti_infill_stepped description" -msgid "" -"Whether to print spaghetti infill in steps or extrude all the infill " -"filament at the end of the print." -msgstr "Imprime o preenchimento em esparguete de forma faseada ou extrude todos os filamentos de preenchimento no final da impressão." +msgid "Whether to print spaghetti infill in steps or extrude all the infill filament at the end of the print." +msgstr "Imprime o enchimento em esparguete de forma faseada ou extrude todos os filamentos de enchimento no final da impressão." #: fdmprinter.def.json msgctxt "spaghetti_max_infill_angle label" msgid "Spaghetti Maximum Infill Angle" -msgstr "Ângulo de preenchimento máximo em esparguete" +msgstr "Ângulo de enchimento máximo em esparguete" #: fdmprinter.def.json msgctxt "spaghetti_max_infill_angle description" -msgid "" -"The maximum angle w.r.t. the Z axis of the inside of the print for areas " -"which are to be filled with spaghetti infill afterwards. Lowering this value " -"causes more angled parts in your model to be filled on each layer." -msgstr "O ângulo máximo em relação ao eixo Z do interior da impressão para áreas que devem ser preenchidas posteriormente com o preenchimento em esparguete. A redução deste valor produz mais partes angulares no modelo que deverão ser preenchidas em cada camada." +msgid "The maximum angle w.r.t. the Z axis of the inside of the print for areas which are to be filled with spaghetti infill afterwards. Lowering this value causes more angled parts in your model to be filled on each layer." +msgstr "O ângulo máximo em relação ao eixo Z do interior da impressão para áreas que devem ser preenchidas posteriormente com o enchimento em esparguete. A redução deste valor produz mais partes angulares no modelo que deverão ser preenchidas em cada camada." #: fdmprinter.def.json msgctxt "spaghetti_max_height label" msgid "Spaghetti Infill Maximum Height" -msgstr "Altura máxima de preenchimento em esparguete" +msgstr "Altura máxima de enchimento em esparguete" #: fdmprinter.def.json msgctxt "spaghetti_max_height description" -msgid "" -"The maximum height of inside space which can be combined and filled from the " -"top." +msgid "The maximum height of inside space which can be combined and filled from the top." msgstr "A altura máxima do espaço interior que pode ser combinado e preenchido a partir da parte superior." #: fdmprinter.def.json @@ -5284,9 +4856,8 @@ msgstr "Inserção em esparguete" #: fdmprinter.def.json msgctxt "spaghetti_inset description" -msgid "" -"The offset from the walls from where the spaghetti infill will be printed." -msgstr "O desvio das paredes a partir do qual o preenchimento em esparguete será impresso." +msgid "The offset from the walls from where the spaghetti infill will be printed." +msgstr "O desvio das paredes a partir do qual o enchimento em esparguete será impresso." #: fdmprinter.def.json msgctxt "spaghetti_flow label" @@ -5295,23 +4866,18 @@ msgstr "Fluxo em esparguete" #: fdmprinter.def.json msgctxt "spaghetti_flow description" -msgid "" -"Adjusts the density of the spaghetti infill. Note that the Infill Density " -"only controls the line spacing of the filling pattern, not the amount of " -"extrusion for spaghetti infill." -msgstr "Ajusta a densidade do preenchimento em esparguete. Observe que a Densidade de preenchimento controla apenas o espaçamento entre linhas do padrão de preenchimento e não a quantidade de extrusão para o preenchimento em esparguete." +msgid "Adjusts the density of the spaghetti infill. Note that the Infill Density only controls the line spacing of the filling pattern, not the amount of extrusion for spaghetti infill." +msgstr "Ajusta a densidade do enchimento em esparguete. Observe que a Densidade de enchimento controla apenas o espaçamento entre linhas do padrão de enchimento e não a quantidade de extrusão para o enchimento em esparguete." #: fdmprinter.def.json msgctxt "spaghetti_infill_extra_volume label" msgid "Spaghetti Infill Extra Volume" -msgstr "Volume adicional de preenchimento em esparguete" +msgstr "Volume adicional de enchimento em esparguete" #: fdmprinter.def.json msgctxt "spaghetti_infill_extra_volume description" -msgid "" -"A correction term to adjust the total volume being extruded each time when " -"filling spaghetti." -msgstr "Um termo de correção para ajustar o volume total a ser extrudido sempre que for realizado o preenchimento em esparguete." +msgid "A correction term to adjust the total volume being extruded each time when filling spaghetti." +msgstr "Um termo de correção para ajustar o volume total a ser extrudido sempre que for realizado o enchimento em esparguete." #: fdmprinter.def.json msgctxt "support_conical_enabled label" @@ -5320,9 +4886,7 @@ 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." +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." #: fdmprinter.def.json @@ -5332,11 +4896,7 @@ msgstr "Ângulo do suporte cónico" #: fdmprinter.def.json msgctxt "support_conical_angle description" -msgid "" -"The angle of the tilt of conical support. With 0 degrees being vertical, and " -"90 degrees being horizontal. Smaller angles cause the support to be more " -"sturdy, but consist of more material. Negative angles cause the base of the " -"support to be wider than the top." +msgid "The angle of the tilt of conical support. With 0 degrees being vertical, and 90 degrees being horizontal. Smaller angles cause the support to be more sturdy, but consist of more material. Negative angles cause the base of the support to be wider than the top." msgstr "O ângulo da inclinação do suporte cónico. 0 graus é vertical e 90 graus é horizontal. Ângulos mais reduzidos tornam o suporte mais robusto, mas consomem mais material. Ângulos negativos tornam a base do suporte mais larga do que a parte superior." #: fdmprinter.def.json @@ -5346,57 +4906,47 @@ msgstr "Largura mínima do suporte cónico" #: fdmprinter.def.json msgctxt "support_conical_min_width description" -msgid "" -"Minimum width to which the base of the conical support area is reduced. " -"Small widths can lead to unstable support structures." -msgstr "A largura mínima para a qual a base da área do suporte cónico é reduzida. Larguras reduzidas podem originar estruturas de suporte instáveis." +msgid "Minimum width to which the base of the conical support area is reduced. Small widths can lead to unstable support structures." +msgstr "O diâmetro mínima para a qual a base da área do suporte cónico é reduzida. Larguras reduzidas podem originar estruturas de suporte instáveis." #: fdmprinter.def.json msgctxt "infill_hollow label" msgid "Hollow Out Objects" -msgstr "Esvaziar objetos" +msgstr "Esvaziar Objetos" #: fdmprinter.def.json msgctxt "infill_hollow description" -msgid "" -"Remove all infill and make the inside of the object eligible for support." -msgstr "Remove todo o preenchimento e torna o interior do objeto elegível para suporte." +msgid "Remove all infill and make the inside of the object eligible for support." +msgstr "Remover todo o enchimento e tornar o interior do objeto elegível para ter suportes." #: fdmprinter.def.json msgctxt "magic_fuzzy_skin_enabled label" msgid "Fuzzy Skin" -msgstr "Revestimento difuso" +msgstr "Revestimento Difuso" #: fdmprinter.def.json msgctxt "magic_fuzzy_skin_enabled description" -msgid "" -"Randomly jitter while printing the outer wall, so that the surface has a " -"rough and fuzzy look." -msgstr "Vibra aleatoriamente enquanto imprime a parede externa, para que a superfície apresente um aspeto rugoso e difuso." +msgid "Randomly jitter while printing the outer wall, so that the surface has a rough and fuzzy look." +msgstr "Vibra aleatoriamente enquanto imprime a parede exterior, para que a superfície apresente um aspeto rugoso e difuso." #: fdmprinter.def.json msgctxt "magic_fuzzy_skin_thickness label" msgid "Fuzzy Skin Thickness" -msgstr "Espessura do revestimento difuso" +msgstr "Espessura Revestimento Difuso" #: fdmprinter.def.json msgctxt "magic_fuzzy_skin_thickness description" -msgid "" -"The width within which to jitter. It's advised to keep this below the outer " -"wall width, since the inner walls are unaltered." -msgstr "A largura dentro da qual deve ser produzida vibração. É recomendado mantê-la abaixo da largura da parede externa, uma vez que as paredes internas não são alteradas." +msgid "The width within which to jitter. It's advised to keep this below the outer wall width, since the inner walls are unaltered." +msgstr "O diâmetro dentro da qual deve ser produzida vibração. É recomendado mantê-la abaixo do diâmetro da parede exterior, uma vez que as paredes interiores não são alteradas." #: fdmprinter.def.json msgctxt "magic_fuzzy_skin_point_density label" msgid "Fuzzy Skin Density" -msgstr "Densidade do revestimento difuso" +msgstr "Densidade Revestimento Difuso" #: fdmprinter.def.json msgctxt "magic_fuzzy_skin_point_density description" -msgid "" -"The average density of points introduced on each polygon in a layer. Note " -"that the original points of the polygon are discarded, so a low density " -"results in a reduction of the resolution." +msgid "The average density of points introduced on each polygon in a layer. Note that the original points of the polygon are discarded, so a low density results in a reduction of the resolution." msgstr "A densidade média dos pontos introduzidos em cada polígono numa camada. Observe que os pontos originais do polígono são eliminados, pelo que uma densidade baixa resulta numa redução da resolução." #: fdmprinter.def.json @@ -5406,11 +4956,7 @@ msgstr "Distância do ponto de revestimento difuso" #: fdmprinter.def.json msgctxt "magic_fuzzy_skin_point_dist description" -msgid "" -"The average distance between the random points introduced on each line " -"segment. Note that the original points of the polygon are discarded, so a " -"high smoothness results in a reduction of the resolution. This value must be " -"higher than half the Fuzzy Skin Thickness." +msgid "The average distance between the random points introduced on each line segment. Note that the original points of the polygon are discarded, so a high smoothness results in a reduction of the resolution. This value must be higher than half the Fuzzy Skin Thickness." msgstr "A distância média entre os pontos aleatórios introduzidos em cada segmento de linha. Observe que os pontos originais do polígono são eliminados, pelo que uma suavidade elevada resulta numa redução da resolução. Este valor deve ser superior a metade da Espessura do revestimento difuso." #: fdmprinter.def.json @@ -5421,7 +4967,7 @@ 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 mm a ser compensada." +msgstr "A distância máxima em milímetros a ser compensada." #: fdmprinter.def.json msgctxt "flow_rate_extrusion_offset_factor label" @@ -5436,40 +4982,31 @@ msgstr "O fator de multiplicação da taxa de fluxo -> translação de distânci #: fdmprinter.def.json msgctxt "wireframe_enabled label" msgid "Wire Printing" -msgstr "Impressão de fios" +msgstr "Impressão em Fios" #: fdmprinter.def.json msgctxt "wireframe_enabled description" -msgid "" -"Print only the outside surface with a sparse webbed structure, printing 'in " -"thin air'. This is realized by horizontally printing the contours of the " -"model at given Z intervals which are connected via upward and diagonally " -"downward lines." -msgstr "Imprime apenas a superfície externa com uma estrutura entrelaçada dispersa a partir \"do ar\". Isto é realizado ao imprimir horizontalmente os contornos do modelo em determinados intervalos Z que são ligados através de linhas ascendentes e diagonais descendentes." +msgid "Print only the outside surface with a sparse webbed structure, printing 'in thin air'. This is realized by horizontally printing the contours of the model at given Z intervals which are connected via upward and diagonally downward lines." +msgstr "Imprime apenas a superfície exterior com uma estrutura entrelaçada dispersa a partir \"do ar\". Isto é realizado ao imprimir horizontalmente os contornos do modelo em determinados intervalos Z que são ligados através de linhas ascendentes e diagonais descendentes." #: fdmprinter.def.json msgctxt "wireframe_height label" msgid "WP Connection Height" -msgstr "Altura de ligação da impressão de fios" +msgstr "Altura de ligação da impressão em fios" #: fdmprinter.def.json msgctxt "wireframe_height description" -msgid "" -"The height of the upward and diagonally downward lines between two " -"horizontal parts. This determines the overall density of the net structure. " -"Only applies to Wire Printing." +msgid "The height of the upward and diagonally downward lines between two horizontal parts. This determines the overall density of the net structure. Only applies to Wire Printing." msgstr "A altura das linhas ascendentes e diagonais descendentes entre duas partes horizontais. Isto determina a densidade geral da estrutura de rede. Aplica-se apenas à impressão de fios." #: fdmprinter.def.json msgctxt "wireframe_roof_inset label" msgid "WP Roof Inset Distance" -msgstr "Distância de inserção do teto da impressão de fios" +msgstr "Distância de inserção do tecto da impressão de fios" #: fdmprinter.def.json msgctxt "wireframe_roof_inset description" -msgid "" -"The distance covered when making a connection from a roof outline inward. " -"Only applies to Wire Printing." +msgid "The distance covered when making a connection from a roof outline inward. Only applies to Wire Printing." msgstr "A distância percorrida ao efetuar uma ligação a partir de um contorno de telhado interno. Aplica-se apenas à impressão de fios." #: fdmprinter.def.json @@ -5479,10 +5016,8 @@ msgstr "Velocidade da impressão de fios" #: fdmprinter.def.json msgctxt "wireframe_printspeed description" -msgid "" -"Speed at which the nozzle moves when extruding material. Only applies to " -"Wire Printing." -msgstr "Velocidade à qual o bocal se movimenta ao extrudir material. Aplica-se apenas à impressão de fios." +msgid "Speed at which the nozzle moves when extruding material. Only applies to Wire Printing." +msgstr "Velocidade à qual o nozzle se movimenta ao extrudir material. Aplica-se apenas à impressão de fios." #: fdmprinter.def.json msgctxt "wireframe_printspeed_bottom label" @@ -5491,9 +5026,7 @@ msgstr "Velocidade de impressão da parte inferior da impressão de fios" #: fdmprinter.def.json msgctxt "wireframe_printspeed_bottom description" -msgid "" -"Speed of printing the first layer, which is the only layer touching the " -"build platform. Only applies to Wire Printing." +msgid "Speed of printing the first layer, which is the only layer touching the build platform. Only applies to Wire Printing." msgstr "Velocidade de impressão da primeira camada, que é a única camada que entra em contacto com a plataforma de construção. Aplica-se apenas à impressão de fios." #: fdmprinter.def.json @@ -5503,8 +5036,7 @@ msgstr "Velocidade de impressão ascendente da impressão de fios" #: fdmprinter.def.json msgctxt "wireframe_printspeed_up description" -msgid "" -"Speed of printing a line upward 'in thin air'. Only applies to Wire Printing." +msgid "Speed of printing a line upward 'in thin air'. Only applies to Wire Printing." msgstr "A velocidade de impressão de uma linha ascendente \"no ar\". Aplica-se apenas à impressão de fios." #: fdmprinter.def.json @@ -5514,8 +5046,7 @@ msgstr "Velocidade de impressão descendente da impressão de fios" #: fdmprinter.def.json msgctxt "wireframe_printspeed_down description" -msgid "" -"Speed of printing a line diagonally downward. Only applies to Wire Printing." +msgid "Speed of printing a line diagonally downward. Only applies to Wire Printing." msgstr "Velocidade de impressão de uma linha diagonal descendente. Aplica-se apenas à impressão de fios." #: fdmprinter.def.json @@ -5525,9 +5056,7 @@ msgstr "Velocidade de impressão horizontal da impressão de fios" #: fdmprinter.def.json msgctxt "wireframe_printspeed_flat description" -msgid "" -"Speed of printing the horizontal contours of the model. Only applies to Wire " -"Printing." +msgid "Speed of printing the horizontal contours of the model. Only applies to Wire Printing." msgstr "Velocidade de impressão de contornos horizontais do modelo. Aplica-se apenas à impressão de fios." #: fdmprinter.def.json @@ -5537,9 +5066,7 @@ msgstr "Fluxo de impressão de fios" #: fdmprinter.def.json msgctxt "wireframe_flow description" -msgid "" -"Flow compensation: the amount of material extruded is multiplied by this " -"value. Only applies to Wire Printing." +msgid "Flow compensation: the amount of material extruded is multiplied by this value. Only applies to Wire Printing." msgstr "Compensação de fluxo: a quantidade de material extrudido é multiplicada por este valor. Aplica-se apenas à impressão de fios." #: fdmprinter.def.json @@ -5559,8 +5086,7 @@ msgstr "Fluxo plano da impressão de fios" #: fdmprinter.def.json msgctxt "wireframe_flow_flat description" -msgid "" -"Flow compensation when printing flat lines. Only applies to Wire Printing." +msgid "Flow compensation when printing flat lines. Only applies to Wire Printing." msgstr "Compensação de fluxo ao imprimir linhas planas. Aplica-se apenas à impressão de fios." #: fdmprinter.def.json @@ -5570,9 +5096,7 @@ msgstr "Atraso superior da impressão de fios" #: fdmprinter.def.json msgctxt "wireframe_top_delay description" -msgid "" -"Delay time after an upward move, so that the upward line can harden. Only " -"applies to Wire Printing." +msgid "Delay time after an upward move, so that the upward line can harden. Only applies to Wire Printing." msgstr "O tempo de atraso após um movimento ascendente, para que a linha ascendente possa endurecer. Aplica-se apenas à impressão de fios." #: fdmprinter.def.json @@ -5592,10 +5116,7 @@ msgstr "Atraso plano da impressão de fios" #: fdmprinter.def.json msgctxt "wireframe_flat_delay description" -msgid "" -"Delay time between two horizontal segments. Introducing such a delay can " -"cause better adhesion to previous layers at the connection points, while too " -"long delays cause sagging. Only applies to Wire Printing." +msgid "Delay time between two horizontal segments. Introducing such a delay can cause better adhesion to previous layers at the connection points, while too long delays cause sagging. Only applies to Wire Printing." msgstr "Tempo de atraso entre dois segmentos horizontais. A introdução desse atraso pode causar melhor aderência às camadas anteriores nos pontos de ligação. No entanto, os atrasos demasiado longos podem causar flacidez. Aplica-se apenas à impressão de fios." #: fdmprinter.def.json @@ -5607,8 +5128,7 @@ msgstr "Facilidade de movimento ascendente da impressão de fios" 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." +"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." #: fdmprinter.def.json @@ -5618,10 +5138,7 @@ msgstr "Tamanho do nó da impressão de fios" #: fdmprinter.def.json msgctxt "wireframe_top_jump description" -msgid "" -"Creates a small knot at the top of an upward line, so that the consecutive " -"horizontal layer has a better chance to connect to it. Only applies to Wire " -"Printing." +msgid "Creates a small knot at the top of an upward line, so that the consecutive horizontal layer has a better chance to connect to it. Only applies to Wire Printing." msgstr "Cria um pequeno nó no topo de uma linha ascendente, para que a camada horizontal subsequente possa ligar-se com maior facilidade. Aplica-se apenas à impressão de fios." #: fdmprinter.def.json @@ -5631,9 +5148,7 @@ msgstr "Queda da impressão de fios" #: fdmprinter.def.json msgctxt "wireframe_fall_down description" -msgid "" -"Distance with which the material falls down after an upward extrusion. This " -"distance is compensated for. Only applies to Wire Printing." +msgid "Distance with which the material falls down after an upward extrusion. This distance is compensated for. Only applies to Wire Printing." msgstr "Distância à qual o material cai após uma extrusão ascendente. Esta distância é compensada. Aplica-se apenas à impressão de fios." #: fdmprinter.def.json @@ -5643,10 +5158,7 @@ msgstr "Arrastamento da impressão de fios" #: fdmprinter.def.json msgctxt "wireframe_drag_along description" -msgid "" -"Distance with which the material of an upward extrusion is dragged along " -"with the diagonally downward extrusion. This distance is compensated for. " -"Only applies to Wire Printing." +msgid "Distance with which the material of an upward extrusion is dragged along with the diagonally downward extrusion. This distance is compensated for. Only applies to Wire Printing." msgstr "Distância à qual o material de uma extrusão ascendente é arrastado juntamente com a extrusão diagonal descendente. Esta distância é compensada. Aplica-se apenas à impressão de fios." #: fdmprinter.def.json @@ -5656,14 +5168,7 @@ msgstr "Estratégia de impressão de fios" #: fdmprinter.def.json msgctxt "wireframe_strategy description" -msgid "" -"Strategy for making sure two consecutive layers connect at each connection " -"point. Retraction lets the upward lines harden in the right position, but " -"may cause filament grinding. A knot can be made at the end of an upward line " -"to heighten the chance of connecting to it and to let the line cool; " -"however, it may require slow printing speeds. Another strategy is to " -"compensate for the sagging of the top of an upward line; however, the lines " -"won't always fall down as predicted." +msgid "Strategy for making sure two consecutive layers connect at each connection point. Retraction lets the upward lines harden in the right position, but may cause filament grinding. A knot can be made at the end of an upward line to heighten the chance of connecting to it and to let the line cool; however, it may require slow printing speeds. Another strategy is to compensate for the sagging of the top of an upward line; however, the lines won't always fall down as predicted." msgstr "Estratégia para assegurar que duas camadas consecutivas se ligam a cada ponto de ligação. A retração permite que as linhas ascendentes endureçam na posição correta, mas pode causar a trituração do filamento. É possível fazer um nó no final de uma linha ascendente para aumentar a probabilidade de ligação e para permitir o arrefecimento da linha. No entanto, podem ser necessárias velocidades de impressão reduzidas. Outra estratégia é compensar a flacidez do topo de uma linha ascendente. Porém, as linhas nem sempre cairão conforme previsto." #: fdmprinter.def.json @@ -5688,63 +5193,88 @@ msgstr "Linhas retas descendentes da impressão de fios" #: fdmprinter.def.json msgctxt "wireframe_straight_before_down description" -msgid "" -"Percentage of a diagonally downward line which is covered by a horizontal " -"line piece. This can prevent sagging of the top most point of upward lines. " -"Only applies to Wire Printing." +msgid "Percentage of a diagonally downward line which is covered by a horizontal line piece. This can prevent sagging of the top most point of upward lines. Only applies to Wire Printing." msgstr "A percentagem de uma linha diagonal descendente que é abrangida por uma peça da linha horizontal. Isto pode impedir a flacidez do ponto mais elevado das linhas ascendentes. Aplica-se apenas à impressão de fios." #: fdmprinter.def.json msgctxt "wireframe_roof_fall_down label" msgid "WP Roof Fall Down" -msgstr "Queda do teto da impressão de fios" +msgstr "Queda do tecto da impressão de fios" #: fdmprinter.def.json msgctxt "wireframe_roof_fall_down description" -msgid "" -"The distance which horizontal roof lines printed 'in thin air' fall down " -"when being printed. This distance is compensated for. Only applies to Wire " -"Printing." -msgstr "A distância à qual as linhas horizontais do teto que são impressas \"no ar\" caem ao ser impressas. Esta distância é compensada. Aplica-se apenas à impressão de fios." +msgid "The distance which horizontal roof lines printed 'in thin air' fall down when being printed. This distance is compensated for. Only applies to Wire Printing." +msgstr "A distância à qual as linhas horizontais do tecto que são impressas \"no ar\" caem ao ser impressas. Esta distância é compensada. Aplica-se apenas à impressão de fios." #: fdmprinter.def.json msgctxt "wireframe_roof_drag_along label" msgid "WP Roof Drag Along" -msgstr "Arrastamento do teto da impressão de fios" +msgstr "Arrastamento do tecto da impressão de fios" #: fdmprinter.def.json msgctxt "wireframe_roof_drag_along description" -msgid "" -"The distance of the end piece of an inward line which gets dragged along " -"when going back to the outer outline of the roof. This distance is " -"compensated for. Only applies to Wire Printing." -msgstr "A distância da parte final de uma linha interna que é arrastada ao regressar ao contorno externo do teto. Esta distância é compensada. Aplica-se apenas à impressão de fios." +msgid "The distance of the end piece of an inward line which gets dragged along when going back to the outer outline of the roof. This distance is compensated for. Only applies to Wire Printing." +msgstr "A distância da parte final de uma linha interior que é arrastada ao regressar ao contorno externo do tecto. Esta distância é compensada. Aplica-se apenas à impressão de fios." #: fdmprinter.def.json msgctxt "wireframe_roof_outer_delay label" msgid "WP Roof Outer Delay" -msgstr "Atraso externo do teto da impressão de fios" +msgstr "Atraso externo do tecto da impressão de fios" #: fdmprinter.def.json msgctxt "wireframe_roof_outer_delay description" -msgid "" -"Time spent at the outer perimeters of hole which is to become a roof. Longer " -"times can ensure a better connection. Only applies to Wire Printing." -msgstr "Tempo gasto nos perímetros externos do orifício que se irá transformar em teto. Períodos de tempo mais longos permitem garantir uma melhor ligação. Aplica-se apenas à impressão de fios." +msgid "Time spent at the outer perimeters of hole which is to become a roof. Longer times can ensure a better connection. Only applies to Wire Printing." +msgstr "Tempo gasto nos perímetros externos do buraco que se irá transformar em tecto. Períodos de tempo mais longos permitem garantir uma melhor ligação. Aplica-se apenas à impressão de fios." #: fdmprinter.def.json msgctxt "wireframe_nozzle_clearance label" msgid "WP Nozzle Clearance" -msgstr "Espaço do bocal da impressão de fios" +msgstr "Espaço do nozzle da impressão de fios" #: fdmprinter.def.json msgctxt "wireframe_nozzle_clearance description" -msgid "" -"Distance between the nozzle and horizontally downward lines. Larger " -"clearance results in diagonally downward lines with a less steep angle, " -"which in turn results in less upward connections with the next layer. Only " -"applies to Wire Printing." -msgstr "Distância entre o bocal e as linhas horizontais descendentes. Uma maior folga resulta em linhas horizontais descendentes com um ângulo menos acentuado, o que, por sua vez, resulta em menos ligações ascendentes com a camada seguinte. Aplica-se apenas à impressão de fios." +msgid "Distance between the nozzle and horizontally downward lines. Larger clearance results in diagonally downward lines with a less steep angle, which in turn results in less upward connections with the next layer. Only applies to Wire Printing." +msgstr "Distância entre o nozzle e as linhas horizontais descendentes. Uma maior folga resulta em linhas horizontais descendentes com um ângulo menos acentuado, o que, por sua vez, resulta em menos ligações ascendentes com a camada seguinte. Aplica-se apenas à impressão de fios." + +#: fdmprinter.def.json +msgctxt "adaptive_layer_height_enabled label" +msgid "Use adaptive layers" +msgstr "Utilizar camadas adaptáveis" + +#: fdmprinter.def.json +msgctxt "adaptive_layer_height_enabled description" +msgid "Adaptive layers computes the layer heights depending on the shape of the model." +msgstr "As camadas adaptáveis calculam a altura da camada dependendo da forma do modelo." + +#: fdmprinter.def.json +msgctxt "adaptive_layer_height_variation label" +msgid "Adaptive layers maximum variation" +msgstr "Variação máxima das camadas adaptáveis" + +#: fdmprinter.def.json +msgctxt "adaptive_layer_height_variation description" +msgid "The maximum allowed height different from the base layer height in mm." +msgstr "A altura máxima permitida em comparação com a altura da camada da base em mm." + +#: fdmprinter.def.json +msgctxt "adaptive_layer_height_variation_step label" +msgid "Adaptive layers variation step size" +msgstr "Tamanho da fase de variação das camadas adaptáveis" + +#: fdmprinter.def.json +msgctxt "adaptive_layer_height_variation_step description" +msgid "The difference in height of the next layer height compared to the previous one." +msgstr "A diferença de altura da camada seguinte em comparação com a anterior." + +#: fdmprinter.def.json +msgctxt "adaptive_layer_height_threshold label" +msgid "Adaptive layers threshold" +msgstr "Limite 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 "Limita ou não a utilização de uma camada mais pequena. Este número é comparado com a tangente da inclinação mais acentuada numa camada." #: fdmprinter.def.json msgctxt "command_line_settings label" @@ -5753,9 +5283,7 @@ msgstr "Definições de linha de comando" #: fdmprinter.def.json msgctxt "command_line_settings description" -msgid "" -"Settings which are only used if CuraEngine isn't called from the Cura " -"frontend." +msgid "Settings which are only used if CuraEngine isn't called from the Cura frontend." msgstr "Definições que só são utilizadas se o CuraEngine não for ativado a partir do front-end do Cura." #: fdmprinter.def.json @@ -5765,10 +5293,8 @@ msgstr "Centrar objeto" #: fdmprinter.def.json msgctxt "center_object description" -msgid "" -"Whether to center the object on the middle of the build platform (0,0), " -"instead of using the coordinate system in which the object was saved." -msgstr "Permite centrar o objeto no centro da plataforma de construção (0,0), em vez de utilizar o sistema de coordenadas no qual o objeto foi guardado." +msgid "Whether to center the object on the middle of the build platform (0,0), instead of using the coordinate system in which the object was saved." +msgstr "Permite centrar o objeto no centro da base de construção (0,0), em vez de utilizar o sistema de coordenadas no qual o objeto foi guardado." #: fdmprinter.def.json msgctxt "mesh_position_x label" @@ -5797,18 +5323,37 @@ msgstr "Posição Z da malha" #: fdmprinter.def.json msgctxt "mesh_position_z description" -msgid "" -"Offset applied to the object in the z direction. With this you can perform " -"what was used to be called 'Object Sink'." -msgstr "Desvio aplicado ao objeto na direção Z. Com esta opção, é possível realizar o que se costumava designar \"Afundamento de objetos\"." +msgid "Offset applied to the object in the z direction. With this you can perform what was used to be called 'Object Sink'." +msgstr "Desvio aplicado ao objeto na direção Z. Com esta opção, é possível realizar o que se costumava designar como \"Afundamento de objetos\"." #: fdmprinter.def.json msgctxt "mesh_rotation_matrix label" msgid "Mesh Rotation Matrix" -msgstr "Matriz de rotação da malha" +msgstr "Matriz Rotação da Malha" #: fdmprinter.def.json 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 ao carregá-lo a partir do ficheiro." +msgid "Transformation matrix to be applied to the model when loading it from file." +msgstr "Matriz de transformação a ser aplicada no modelo ao abrir o ficheiro." + +#~ msgctxt "infill_offset_x description" +#~ msgid "The infill pattern is offset this distance along the X axis." +#~ msgstr "O padrão geométrico de enchimento é deslocado por esta distância ao longo do eixo X." + +#~ msgctxt "infill_offset_y description" +#~ msgid "The infill pattern is offset this distance along the Y axis." +#~ msgstr "O padrão geométrico de enchimento é deslocado por esta distância ao longo do eixo Y." + +#~ msgctxt "infill_overlap 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 Percentagem de sobreposição entre o enchimento e as paredes. Uma ligeira sobreposição permite que as paredes sejam ligadas firmemente ao enchimento." + +# rever! +# Esta é uma percentagem das larguras médias de linha das linhas de revestimento e da parede mais interna. +#~ msgctxt "skin_overlap description" +#~ msgid "The amount of overlap between the skin and the walls as a percentage of the line width. A slight overlap allows the walls to connect firmly to the skin. This is a percentage of the average line widths of the skin lines and the innermost wall." +#~ msgstr "A sobreposição entre o revestimento e as paredes, como percentagem do diâmetro da linha. Uma ligeira sobreposição permite que as paredes se liguem firmemente ao revestimento. Esta é uma percentagem da média dos diâmetros da linha de revestimento e da parede mais interior." + +#~ msgctxt "material_bed_temperature description" +#~ msgid "The temperature used for the heated build plate. If this is 0, the bed will not heat up for this print." +#~ msgstr "A temperatura utilizada para a base de construção aquecida. Se for 0, a base não será aquecida para esta impressão." diff --git a/resources/i18n/ru_RU/cura.po b/resources/i18n/ru_RU/cura.po index a953a8c87e..5b803cc357 100644 --- a/resources/i18n/ru_RU/cura.po +++ b/resources/i18n/ru_RU/cura.po @@ -1,16 +1,16 @@ # Cura -# Copyright (C) 2017 Ultimaker +# Copyright (C) 2018 Ultimaker # This file is distributed under the same license as the Cura package. -# Ruben Dulek , 2017. -# +# Ruben Dulek , 2018. +# msgid "" msgstr "" -"Project-Id-Version: Cura 3.0\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-11-21 16:58+0100\n" -"PO-Revision-Date: 2017-11-30 13:05+0100\n" -"Last-Translator: Ruslan Popov \n" -"Language-Team: Ruslan Popov\n" +"Project-Id-Version: Cura 3.2\n" +"Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" +"POT-Creation-Date: 2018-01-29 09:48+0000\n" +"PO-Revision-Date: 2018-02-05 13:25+0100\n" +"Last-Translator: Bothof \n" +"Language-Team: 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.0.4\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:29 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:26 msgctxt "@action" msgid "Machine Settings" msgstr "Параметры принтера" @@ -55,12 +55,11 @@ msgstr "Соединение с Doodle3D Connect" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:87 #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:155 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:874 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:646 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:875 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:659 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:370 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrintWindow.qml:78 -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:104 -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:99 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:355 #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:188 #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:376 #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:139 @@ -100,7 +99,7 @@ msgctxt "@info:tooltip" msgid "Open the Doodle3D Connect web interface" msgstr "Открыть Doodle3D Connect web интерфейс" -#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:34 +#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:33 msgctxt "@item:inmenu" msgid "Show Changelog" msgstr "Показать журнал изменений" @@ -115,78 +114,83 @@ msgctxt "@info:status" msgid "Profile has been flattened & activated." msgstr "Профиль был нормализован и активирован." -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:26 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:27 msgctxt "@item:inmenu" msgid "USB printing" msgstr "USB печать" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:27 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:28 msgctxt "@action:button Preceded by 'Ready to'." msgid "Print via USB" msgstr "Печатать через USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:28 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:29 msgctxt "@info:tooltip" msgid "Print via USB" msgstr "Печатать через USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:30 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:31 msgctxt "@info:status" msgid "Connected via USB" msgstr "Подключено через USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:154 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:183 msgctxt "@info:status" msgid "Unable to start a new job because the printer is busy or not connected." msgstr "Невозможно запустить новое задание, потому что принтер занят или не подключен." -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:154 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:183 msgctxt "@info:title" msgid "Printer Unavailable" msgstr "Принтер недоступен" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:457 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:485 msgctxt "@info:status" msgid "This printer does not support USB printing because it uses UltiGCode flavor." msgstr "Данный принтер не поддерживает печать через USB, потому что он использует UltiGCode диалект." -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:457 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:485 msgctxt "@info:title" msgid "USB Printing" msgstr "USB печать" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:461 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:489 msgctxt "@info:status" msgid "Unable to start a new job because the printer does not support usb printing." msgstr "Невозможно запустить новую задачу, так как принтер не поддерживает печать через USB." -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:461 -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:108 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:489 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:103 #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:146 #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:158 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:945 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1349 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1417 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:946 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1418 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1496 msgctxt "@info:title" msgid "Warning" msgstr "Внимание" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:108 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:103 msgctxt "@info" msgid "Unable to update firmware because there are no printers connected." msgstr "Невозможно обновить прошивку, потому что не были найдены подключенные принтеры." -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:122 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:117 #, python-format msgctxt "@info" msgid "Could not find firmware required for the printer at %s." msgstr "Не могу найти прошивку, подходящую для принтера в %s." -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:122 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:117 msgctxt "@info:title" msgid "Printer Firmware" msgstr "Прошивка принтера" +#: /home/ruben/Projects/Cura/plugins/PrepareStage/__init__.py:12 +msgctxt "@item:inmenu" +msgid "Prepare" +msgstr "Подготовка" + #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:23 msgctxt "@action:button Preceded by 'Ready to'." msgid "Save to Removable Drive" @@ -230,11 +234,11 @@ msgid "Could not save to removable drive {0}: {1}" msgstr "Невозможно сохранить на внешний носитель {0}: {1}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:132 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:692 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:700 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:146 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:693 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:701 #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:153 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1358 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:160 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1427 msgctxt "@info:title" msgid "Error" msgstr "Ошибка" @@ -284,7 +288,7 @@ msgid "Removable Drive" msgstr "Внешний носитель" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:109 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:53 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:51 msgctxt "@action:button Preceded by 'Ready to'." msgid "Print over network" msgstr "Печать через сеть" @@ -398,110 +402,110 @@ msgctxt "@info:title" msgid "Printer Status" msgstr "Состояние принтера" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:691 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:692 #, python-brace-format msgctxt "@info:status" msgid "Unable to start a new print job. No Printcore loaded in slot {0}" msgstr "Невозможно запустить новую задачу на печать. PrinterCore не был загружен в слот {0}" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:699 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:700 #, python-brace-format msgctxt "@info:status" msgid "Unable to start a new print job. No material loaded in slot {0}" msgstr "Невозможно запустить новую задачу на печать. Материал не загружен в слот {0}" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:709 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:710 #, python-brace-format msgctxt "@label" msgid "Not enough material for spool {0}." msgstr "Недостаточно материала в катушке {0}." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:719 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:720 #, python-brace-format msgctxt "@label" msgid "Different PrintCore (Cura: {0}, Printer: {1}) selected for extruder {2}" msgstr "Разный PrintCore (Cura: {0}, Принтер: {1}) выбран для экструдера {2}" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:733 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:734 #, 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/NetworkPrinterOutputDevice.py:741 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:742 #, python-brace-format msgctxt "@label" msgid "PrintCore {0} is not properly calibrated. XY calibration needs to be performed on the printer." msgstr "PrintCore {0} не откалибровано. Необходимо выполнить XY калибровку для принтера." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:746 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:747 msgctxt "@label" msgid "Are you sure you wish to print with the selected configuration?" msgstr "Вы уверены, что желаете печатать с использованием выбранной конфигурации?" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:747 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:748 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/NetworkPrinterOutputDevice.py:753 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:754 msgctxt "@window:title" msgid "Mismatched configuration" msgstr "Несовпадение конфигурации" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:864 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:262 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:865 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:258 msgctxt "@info:status" msgid "Sending new jobs (temporarily) blocked, still sending the previous print job." msgstr "Отправка новых заданий (временно) заблокирована, идёт отправка предыдущего задания." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:873 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:874 msgctxt "@info:status" msgid "Sending data to printer" msgstr "Отправка данных на принтер" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:873 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:874 msgctxt "@info:title" msgid "Sending Data" msgstr "Отправка данных" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:944 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:945 msgctxt "@info:status" msgid "Unable to send data to printer. Is another job still active?" msgstr "Невозможно отправить данные на принтер. Другая задача всё ещё активна?" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1085 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1087 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:196 msgctxt "@label:MonitorStatus" msgid "Aborting print..." msgstr "Прерывание печати…" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1091 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1093 msgctxt "@label:MonitorStatus" msgid "Print aborted. Please check the printer" msgstr "Печать прервана. Пожалуйста, проверьте принтер" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1097 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1099 msgctxt "@label:MonitorStatus" msgid "Pausing print..." msgstr "Печать приостановлена..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1099 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1101 msgctxt "@label:MonitorStatus" msgid "Resuming print..." msgstr "Печать возобновлена..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1289 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1291 msgctxt "@window:title" msgid "Sync with your printer" msgstr "Синхронизация с вашим принтером" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1291 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1293 msgctxt "@label" msgid "Would you like to use your current printer configuration in Cura?" msgstr "Желаете использовать текущую конфигурацию принтера в Cura?" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1293 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1295 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 и материалы, которые вставлены в ваш принтер." @@ -522,145 +526,188 @@ msgid "{printer_name} has finished printing '{job_name}'. Please collect the pri msgstr "{printer_name} завершил печать '{job_name}'. Пожалуйста, освободите область печати." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:115 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:520 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:533 #, python-brace-format msgid "{printer_name} is reserved to print '{job_name}'. Please change the printer's configuration to match the job, for it to start printing." msgstr "{printer_name} назначен для печати '{job_name}'. Пожалуйста, измените конфигурацию принтера, чтобы она соответствовала заданию." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:278 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:277 msgctxt "@info:status" msgid "Unable to send new print job: this 3D printer is not (yet) set up to host a group of connected Ultimaker 3 printers." msgstr "Невозможно отправить новое задание: данный 3D принтер (ещё) не настроен на управление группой подключенных принтеров Ultimaker 3." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:410 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:423 #, python-brace-format msgctxt "@info:status" msgid "Unable to send print job to group {cluster_name}." msgstr "Невозможно отправить задание на группу {cluster_name}." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:418 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:431 #, python-brace-format msgctxt "@info:status" msgid "Sent {file_name} to group {cluster_name}." msgstr "Отправка {file_name} на группу {cluster_name}." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:423 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:436 msgctxt "@action:button" msgid "Show print jobs" msgstr "Показать задания на печать" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:424 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:437 msgctxt "@info:tooltip" msgid "Opens the print jobs interface in your browser." msgstr "Открыть интерфейс с заданиями печати в вашем браузере." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:489 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:502 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:239 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:47 -msgctxt "@label" +msgctxt "@label Printer name" msgid "Unknown" -msgstr "Неизвестный" +msgstr "Неизвестно" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:492 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:505 #, 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/NetworkClusterPrinterOutputDevice.py:494 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:497 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:507 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:510 msgctxt "@info:status" msgid "Print finished" msgstr "Печать завершена" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:522 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:525 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:535 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:538 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:282 msgctxt "@label:status" msgid "Action required" msgstr "Необходимое действие" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:643 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:656 #, python-brace-format msgctxt "@info:progress" msgid "Sending {file_name} to group {cluster_name}" msgstr "Отправляем {file_name} на группу {cluster_name}" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.py:19 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.py:17 msgctxt "@action" msgid "Connect via Network" msgstr "Подключиться через сеть" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:64 +#: /home/ruben/Projects/Cura/plugins/MonitorStage/__init__.py:12 +msgctxt "@item:inmenu" +msgid "Monitor" +msgstr "Монитор" + +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:66 #, python-brace-format msgctxt "@info Don't translate {machine_name}, since it gets replaced by a printer name!" msgid "New features are available for your {machine_name}! It is recommended to update the firmware on your printer." msgstr "Для {machine_name} доступны новые функции! Рекомендуется обновить встроенное программное обеспечение принтера." -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:65 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:67 #, python-format msgctxt "@info:title The %s gets replaced with the printer name." msgid "New %s firmware available" msgstr "Доступна новая прошивка %s" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:66 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:68 msgctxt "@action:button" msgid "How to update" msgstr "Порядок обновления" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:77 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:79 msgctxt "@info" msgid "Could not access update information." msgstr "Не могу получить информацию об обновлениях." -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksReader.py:199 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksReader.py:579 msgctxt "@info:status" -msgid "Errors appeared while opening your SolidWorks file! Please check, whether it is possible to open your file in SolidWorks itself without any problems as well!" -msgstr "Возникли ошибки во время открытия файла SolidWorks! Пожалуйста, проверьте может ли SolidWorks открыть этот файл без проблем!" +msgid "SolidWorks reported errors, while opening your file. We recommend to solve these issues inside SolidWorks itself." +msgstr "При открытии вашего файла поступили сообщения об ошибках от SolidWorks. Рекомендуется устранить данные проблемы непосредственно в SolidWorks." -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:31 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksReader.py:591 +msgctxt "@info:status" +msgid "" +"Found no models inside your drawing. Could you please check it's content again and make sure one part or assembly is inside?\n" +"\n" +" Thanks!." +msgstr "В вашем чертеже не обнаружены модели. Проверьте еще раз его содержимое и убедитесь в наличии одной части или сборки.\n\nБлагодарим!" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksReader.py:595 +msgctxt "@info:status" +msgid "" +"Found more then one part or assembly inside your drawing. We currently only support drawings with exactly one part or assembly inside.\n" +"\n" +"Sorry!" +msgstr "В вашем чертеже обнаружено больше одной части или сборки. В данный момент поддерживаются исключительно чертежи с одной частью или сборкой.\n\nСожалеем!" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:25 msgctxt "@item:inlistbox" msgid "SolidWorks part file" msgstr "Файл компонентов SolidWorks" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:35 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:29 msgctxt "@item:inlistbox" msgid "SolidWorks assembly file" msgstr "Файл сборки SolidWorks" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.py:21 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:33 +msgctxt "@item:inlistbox" +msgid "SolidWorks drawing file" +msgstr "Файл чертежа SolidWorks" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:48 +msgctxt "@info:status" +msgid "" +"Dear customer,\n" +"We could not find a valid installation of SolidWorks on your system. That means that either SolidWorks is not installed or you don't own an valid license. Please make sure that running SolidWorks itself works without issues and/or contact your ICT.\n" +"\n" +"With kind regards\n" +" - Thomas Karl Pietrowski" +msgstr "Уважаемый клиент!\nМы не обнаружили подходящую установку SolidWorks в вашей системе. Это означает, что ПО SolidWorks не установлено либо у вас нет подходящей лицензии. Убедитесь, что при запуске ПО SolidWorks оно работает надлежащим образом и (или) обратитесь к своим специалистам по ИКТ.\n\nС наилучшими пожеланиями,\n - Томас Карл Петровски (Thomas Karl Pietrowski)" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:57 +msgctxt "@info:status" +msgid "" +"Dear customer,\n" +"You are currently running this plugin on an operating system other than Windows. This plugin will only work on Windows with SolidWorks installed, including an valid license. Please install this plugin on a Windows machine with SolidWorks installed.\n" +"\n" +"With kind regards\n" +" - Thomas Karl Pietrowski" +msgstr "Уважаемый клиент!\nВ данный момент этот плагин запущен в операционной системе, отличной от Windows. Плагин функционирует исключительно под управлением ОС Windows с установленным ПО SolidWorks, для которого имеется подходящая лицензия. Установите данный плагин на принтер под управлением Windows с установленным ПО SolidWorks.\n\nС наилучшими пожеланиями,\n - Томас Карл Петровски (Thomas Karl Pietrowski)" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksDialogHandler.py:70 msgid "Configure" msgstr "Настройка" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/CommonComReader.py:135 -#, python-format -msgctxt "@info:status" -msgid "Error while starting %s!" -msgstr "Ошибка при запуске %s!" +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksDialogHandler.py:71 +msgid "Installation guide for SolidWorks macro" +msgstr "Руководство по установке макроса SolidWorks" #: /home/ruben/Projects/Cura/plugins/SimulationView/__init__.py:14 msgctxt "@item:inlistbox" -msgid "Simulation view" -msgstr "Вид моделирования" +msgid "Layer view" +msgstr "Просмотр слоёв" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:100 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:103 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:101 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:104 msgctxt "@info:title" msgid "Simulation View" msgstr "Вид моделирования" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.py:26 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.py:25 msgid "Modify G-Code" msgstr "Изменить G-код" #: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:43 msgctxt "@info" -msgid "Cura collects anonymised slicing statistics. You can disable this in the preferences." -msgstr "Cura собирает анонимную статистику о нарезке модели. Вы можете отключить это в настройках." +msgid "Cura collects anonymized usage statistics." +msgstr "Cura собирает анонимизированную статистику об использовании." #: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:46 msgctxt "@info:title" @@ -669,14 +716,41 @@ msgstr "Сбор данных" #: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:48 msgctxt "@action:button" -msgid "Dismiss" -msgstr "Отменить" +msgid "Allow" +msgstr "Разрешить" + +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:49 +msgctxt "@action:tooltip" +msgid "Allow Cura to send anonymized usage statistics to help prioritize future improvements to Cura. Some of your preferences and settings are sent, the Cura version and a hash of the models you're slicing." +msgstr "Разрешить Cura отправлять анонимизированную статистику об использовании, чтобы помочь назначить приоритеты будущим улучшениям в Cura. Отправлены некоторые ваши настройки и параметры, включая версию Cura и хэш моделей, разделяемых на слои." + +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:50 +msgctxt "@action:button" +msgid "Disable" +msgstr "Отключить" + +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:51 +msgctxt "@action:tooltip" +msgid "Don't allow Cura to send anonymized usage statistics. You can enable it again in the preferences." +msgstr "Запретить Cura отправлять анонимизированную статистику об использовании. Данное разрешение можно повторно активировать в разделе параметров." #: /home/ruben/Projects/Cura/plugins/LegacyProfileReader/__init__.py:14 msgctxt "@item:inlistbox" msgid "Cura 15.04 profiles" msgstr "Профили Cura 15.04" +#: /home/ruben/Projects/Cura/plugins/CuraBlenderPlugin/__init__.py:15 +msgctxt "@item:inlistbox" +msgid "Blender file" +msgstr "Файл Blender" + +#: /home/ruben/Projects/Cura/plugins/CuraBlenderPlugin/CadIntegrationUtils/CommonReader.py:199 +msgctxt "@info:status" +msgid "" +"Could not export using \"{}\" quality!\n" +"Felt back to \"{}\"." +msgstr "Не удалось выполнить экспорт с использованием качества \"{}\"!\nВыполнен возврат к \"{}\"." + #: /home/ruben/Projects/Cura/plugins/GCodeProfileReader/__init__.py:14 #: /home/ruben/Projects/Cura/plugins/GCodeReader/__init__.py:14 msgctxt "@item:inlistbox" @@ -708,49 +782,49 @@ msgctxt "@item:inlistbox" msgid "GIF Image" msgstr "GIF изображение" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:269 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:299 msgctxt "@info:status" msgid "Unable to slice with the current material as it is incompatible with the selected machine or configuration." msgstr "Невозможно нарезать модель, используя текущий материал, так как он несовместим с выбранной машиной или конфигурацией." -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:269 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:297 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:319 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:299 #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:327 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:336 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:349 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:357 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:366 msgctxt "@info:title" msgid "Unable to slice" msgstr "Невозможно нарезать" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:296 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:326 #, python-brace-format msgctxt "@info:status" msgid "Unable to slice with the current settings. The following settings have errors: {0}" msgstr "Не могу выполнить слайсинг на текущих настройках. Проверьте следующие настройки: {0}" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:318 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:348 #, python-brace-format msgctxt "@info:status" msgid "Unable to slice due to some per-model settings. The following settings have errors on one or more models: {error_labels}" msgstr "Не удалось выполнить слайсинг из-за настроек модели. Следующие настройки ошибочны для одной или нескольких моделей: {error_labels}" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:326 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:356 msgctxt "@info:status" msgid "Unable to slice because the prime tower or prime position(s) are invalid." msgstr "Слайсинг невозможен так как черновая башня или её позиция неверные." -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:335 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:365 msgctxt "@info:status" msgid "Nothing to slice because none of the models fit the build volume. Please scale or rotate models to fit." msgstr "Нечего нарезать, так как ни одна модель не попадает в объём принтера. Пожалуйста, отмасштабируйте или поверните модель." #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:50 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:239 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:242 msgctxt "@info:status" msgid "Processing Layers" msgstr "Обработка слоёв" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:239 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:242 msgctxt "@info:title" msgid "Information" msgstr "Информация" @@ -787,14 +861,14 @@ msgstr "Не удалось скопировать файлы плагинов S msgid "Failed to install Siemens NX plugin. Could not set environment variable UGII_USER_DIR for Siemens NX." msgstr "Не удалось установить плагин Siemens NX. Не удалось установить переменную среды UGII_USER_DIR для Siemens NX." -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:167 -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:585 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:165 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:590 msgctxt "@title:tab" msgid "Recommended" msgstr "Рекомендованная" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:169 -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:590 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:167 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:595 msgctxt "@title:tab" msgid "Custom" msgstr "Своя" @@ -805,24 +879,24 @@ msgctxt "@item:inlistbox" msgid "3MF File" msgstr "Файл 3MF" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:126 -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1142 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:159 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1185 msgctxt "@label" msgid "Nozzle" msgstr "Сопло" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:164 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:152 #, python-brace-format msgctxt "@info:status" msgid "Failed to get plugin ID from {0}" msgstr "Невозможно получить идентификатор плагин {0}" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:165 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:153 msgctxt "@info:tile" msgid "Warning" msgstr "Внимание" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:203 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:191 msgctxt "@window:title" msgid "Plugin browser" msgstr "Браузер плагинов" @@ -837,18 +911,18 @@ msgctxt "@item:inlistbox" msgid "G File" msgstr "Файл G" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:314 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:321 msgctxt "@info:status" msgid "Parsing G-code" msgstr "Обработка G-code" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:316 -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:426 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:323 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:464 msgctxt "@info:title" msgid "G-code Details" msgstr "Параметры G-code" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:424 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:462 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." @@ -859,6 +933,16 @@ 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:17 +msgctxt "@item:inlistbox" +msgid "Profile Assistant" +msgstr "Помощник по профилю" + #: /home/ruben/Projects/Cura/plugins/3MFWriter/__init__.py:30 msgctxt "@item:inlistbox" msgid "3MF file" @@ -890,142 +974,116 @@ msgctxt "@action" msgid "Level build plate" msgstr "Выравнивание стола" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:89 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:98 msgctxt "@tooltip" msgid "Outer Wall" msgstr "Внешняя стенка" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:90 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:99 msgctxt "@tooltip" msgid "Inner Walls" msgstr "Внутренние стенки" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:91 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:100 msgctxt "@tooltip" msgid "Skin" msgstr "Покрытие" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:92 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:101 msgctxt "@tooltip" msgid "Infill" msgstr "Заполнение" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:93 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:102 msgctxt "@tooltip" msgid "Support Infill" msgstr "Заполнение поддержек" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:94 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:103 msgctxt "@tooltip" msgid "Support Interface" msgstr "Связующий слой поддержек" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:95 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:104 msgctxt "@tooltip" msgid "Support" msgstr "Поддержки" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:96 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:105 msgctxt "@tooltip" msgid "Skirt" msgstr "Юбка" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:97 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:106 msgctxt "@tooltip" msgid "Travel" msgstr "Перемещение" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:98 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:107 msgctxt "@tooltip" msgid "Retractions" msgstr "Откаты" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:99 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:108 msgctxt "@tooltip" msgid "Other" msgstr "Другое" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:199 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:231 msgctxt "@label unknown material" msgid "Unknown" msgstr "Неизвестно" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:284 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:318 #, python-brace-format msgctxt "@label" msgid "Pre-sliced file {0}" msgstr "Предообратка файла {0}" -#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:469 +#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:440 msgctxt "@item:material" msgid "No material loaded" msgstr "Материал не загружен" -#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:476 +#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:447 msgctxt "@item:material" msgid "Unknown material" msgstr "Неизвестный материал" -#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:30 -msgctxt "@info:status" -msgid "Finding new location for objects" -msgstr "Поиск места для новых объектов" - -#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:34 -msgctxt "@info:title" -msgid "Finding Location" -msgstr "Поиск места" - -#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:89 -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:83 -msgctxt "@info:status" -msgid "Unable to find a location within the build volume for all objects" -msgstr "Невозможно разместить все объекты внутри печатаемого объёма" - -#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:90 -msgctxt "@info:title" -msgid "Can't Find Location" -msgstr "Не могу найти место" - -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:431 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:113 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:437 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:120 msgctxt "@title:window" msgid "File Already Exists" msgstr "Файл уже существует" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:432 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:114 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:438 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:121 #, 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:815 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:872 msgctxt "@label" msgid "Custom" msgstr "Своё" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:819 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:876 msgctxt "@label" msgid "Custom Material" msgstr "Собственный материал" -#: /home/ruben/Projects/Cura/cura/Settings/ExtrudersModel.py:182 -msgctxt "@menuitem" -msgid "Global" -msgstr "Общие" - -#: /home/ruben/Projects/Cura/cura/Settings/ExtrudersModel.py:229 +#: /home/ruben/Projects/Cura/cura/Settings/ExtrudersModel.py:205 msgctxt "@menuitem" msgid "Not overridden" msgstr "Не переопределен" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:117 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:124 msgctxt "@info:status" msgid "The selected material is incompatible with the selected machine or configuration." msgstr "Выбранный материал несовместим с выбранным принтером или конфигурацией." -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:118 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:125 #: /home/ruben/Projects/Cura/cura/Settings/MaterialManager.py:24 msgctxt "@info:title" msgid "Incompatible Material" @@ -1046,67 +1104,89 @@ msgctxt "@action" msgid "Undo changing the material diameter." msgstr "Отмена изменения диаметра материала." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:144 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:151 #, 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:151 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:158 #, 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:156 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:163 #, 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:157 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:164 msgctxt "@info:title" msgid "Export succeeded" msgstr "Экспорт успешно завершен" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:183 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:205 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:214 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:248 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:190 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:211 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:271 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to import profile from {0}: {1}" msgstr "Невозможно импортировать профиль из {0}: {1}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:216 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:252 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:230 +#, python-brace-format +msgctxt "@info:status Don't translate the XML tags or !" +msgid "This profile {0} contains incorrect data, could not import it." +msgstr "Данный профиль {0} содержит неверные данные, поэтому его невозможно импортировать." + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:240 +#, python-brace-format +msgctxt "@info:status Don't translate the XML tags or !" +msgid "The machine defined in profile {0} doesn't match with your current machine, could not import it." +msgstr "Аппарат, заданный в профиле {0}, не совпадает с вашим текущим аппаратом, поэтому его невозможно импортировать." + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:274 #, python-brace-format msgctxt "@info:status" msgid "Successfully imported profile {0}" msgstr "Успешно импортирован профиль {0}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:255 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:277 +#, 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:280 #, 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:274 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:298 msgctxt "@label" msgid "Custom profile" msgstr "Собственный профиль" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:285 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:313 msgctxt "@info:status" msgid "Profile is missing a quality type." msgstr "У профайла отсутствует тип качества." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:321 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:349 #, python-brace-format msgctxt "@info:status" msgid "Could not find a quality type {0} for the current configuration." msgstr "Невозможно найти тип качества {0} для текущей конфигурации." +#: /home/ruben/Projects/Cura/cura/ObjectsModel.py:46 +#, python-brace-format +msgctxt "@label" +msgid "Group #{group_nr}" +msgstr "Группа #{group_nr}" + #: /home/ruben/Projects/Cura/cura/BuildVolume.py:100 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." @@ -1117,142 +1197,167 @@ msgctxt "@info:title" msgid "Build Volume" msgstr "Объём печати" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:34 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:25 msgctxt "@info:status" msgid "Multiplying and placing objects" msgstr "Размножение и размещение объектов" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:35 -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:83 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:26 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:78 msgctxt "@info:title" msgid "Placing Object" msgstr "Размещение объекта" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:80 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:78 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:88 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:152 +msgctxt "@info:status" +msgid "Unable to find a location within the build volume for all objects" +msgstr "Невозможно разместить все объекты внутри печатаемого объёма" + +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:29 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:64 +msgctxt "@info:status" +msgid "Finding new location for objects" +msgstr "Поиск места для новых объектов" + +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:33 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:68 +msgctxt "@info:title" +msgid "Finding Location" +msgstr "Поиск места" + +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:89 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:153 +msgctxt "@info:title" +msgid "Can't Find Location" +msgstr "Не могу найти место" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:81 msgctxt "@title:window" msgid "Crash Report" msgstr "Отчёт о сбое" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:93 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:94 msgctxt "@label crash message" msgid "" -"

      A fatal exception has occurred. Please send us this Crash Report to fix the problem

      \n" +"

      A fatal error has occurred. 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 "

      Произошло критическое исключение. Отправьте нам этот отчёт о сбое, чтобы мы могли устранить проблему

      \n

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

      \n " +msgstr "

      Возникла критическая ошибка. Отправьте нам этот отчет о сбое, чтобы мы могли устранить проблему

      \n

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

      \n " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:101 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:102 msgctxt "@title:groupbox" msgid "System information" msgstr "Информация о системе" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:109 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:110 msgctxt "@label unknown version of Cura" msgid "Unknown" msgstr "Неизвестно" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:111 -#, python-brace-format -msgctxt "@label Cura version" -msgid "Cura version: {version}
      " -msgstr "Версия Cura: {version}
      " - #: /home/ruben/Projects/Cura/cura/CrashHandler.py:112 -#, python-brace-format -msgctxt "@label Platform" -msgid "Platform: {platform}
      " -msgstr "Платформа: {platform}
      " +msgctxt "@label Cura version number" +msgid "Cura version" +msgstr "Версия Cura" #: /home/ruben/Projects/Cura/cura/CrashHandler.py:113 -#, python-brace-format -msgctxt "@label Qt version" -msgid "Qt version: {qt}
      " -msgstr "Версия Qt: {qt}
      " +msgctxt "@label Type of platform" +msgid "Platform" +msgstr "Платформа" #: /home/ruben/Projects/Cura/cura/CrashHandler.py:114 -#, python-brace-format -msgctxt "@label PyQt version" -msgid "PyQt version: {pyqt}
      " -msgstr "Версия PyQt: {pyqt}
      " +msgctxt "@label" +msgid "Qt version" +msgstr "Версия Qt" #: /home/ruben/Projects/Cura/cura/CrashHandler.py:115 -#, python-brace-format -msgctxt "@label OpenGL" -msgid "OpenGL: {opengl}
      " -msgstr "OpenGL: {opengl}
      " +msgctxt "@label" +msgid "PyQt version" +msgstr "Версия PyQt" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:130 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:116 +msgctxt "@label OpenGL version" +msgid "OpenGL" +msgstr "OpenGL" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:133 +msgctxt "@label" +msgid "not yet initialised
      " +msgstr "в данный момент не инициализировано
      " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:136 #, python-brace-format msgctxt "@label OpenGL version" msgid "
    • OpenGL Version: {version}
    • " msgstr "
    • Версия OpenGL: {version}
    • " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:131 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:137 #, python-brace-format msgctxt "@label OpenGL vendor" msgid "
    • OpenGL Vendor: {vendor}
    • " msgstr "
    • Поставщик OpenGL: {vendor}
    • " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:132 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:138 #, python-brace-format msgctxt "@label OpenGL renderer" msgid "
    • OpenGL Renderer: {renderer}
    • " msgstr "
    • Средство визуализации OpenGL: {renderer}
    • " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:141 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:147 msgctxt "@title:groupbox" -msgid "Exception traceback" -msgstr "Диагностика исключения" +msgid "Error traceback" +msgstr "Обратное отслеживание ошибки" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:208 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:214 msgctxt "@title:groupbox" msgid "Logs" msgstr "Журналы" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:231 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:237 msgctxt "@title:groupbox" msgid "User description" msgstr "Описание пользователя" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:246 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:252 msgctxt "@action:button" msgid "Send report" msgstr "Отправить отчёт" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:256 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:274 msgctxt "@info:progress" msgid "Loading machines..." msgstr "Загрузка принтеров..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:661 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:660 msgctxt "@info:progress" msgid "Setting up scene..." msgstr "Настройка сцены..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:703 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:702 msgctxt "@info:progress" msgid "Loading interface..." msgstr "Загрузка интерфейса..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:874 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:899 #, 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:1348 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1417 #, 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:1357 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1426 #, 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:1416 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1495 msgctxt "@info:status" msgid "The selected model was too small to load." msgstr "Выбранная модель слишком мала для загрузки." @@ -1281,12 +1386,11 @@ msgstr "X (Ширина)" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:119 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:129 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:235 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:288 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:300 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:391 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:401 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:413 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:840 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:383 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:394 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:412 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:424 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:849 msgctxt "@label" msgid "mm" msgstr "мм" @@ -1376,68 +1480,67 @@ msgctxt "@tooltip" msgid "The height difference between the tip of the nozzle and the gantry system (X and Y axes). Used to prevent collisions between previous prints and the gantry when printing \"One at a Time\"." msgstr "Разница в высоте от кончика сопла до портала (по осям X и Y). Используется для предотвращения столкновений с уже напечатанной частью и головой в режиме \"По отдельности\"." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:255 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:254 msgctxt "@label" msgid "Number of Extruders" msgstr "Количество экструдеров" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:289 -msgctxt "@tooltip" -msgid "The nominal diameter of filament supported by the printer. The exact diameter will be overridden by the material and/or the profile." -msgstr "Номинальный диаметр материала, поддерживаемый принтером. Точный диаметр будет указан в материале и/или в профиле." - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:291 -msgctxt "@label" -msgid "Material diameter" -msgstr "Диаметр материала" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:299 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:390 -msgctxt "@label" -msgid "Nozzle size" -msgstr "Диаметр сопла" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:317 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:310 msgctxt "@label" msgid "Start Gcode" msgstr "Начало G-кода" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:327 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:320 msgctxt "@tooltip" msgid "Gcode commands to be executed at the very start." msgstr "Команды в G-коде, которые будут выполнены при старте печати." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:336 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:329 msgctxt "@label" msgid "End Gcode" msgstr "Конец G-кода" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:346 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:339 msgctxt "@tooltip" msgid "Gcode commands to be executed at the very end." msgstr "Команды в G-коде, которые будут выполнены в конце печати." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:378 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:370 msgctxt "@label" msgid "Nozzle Settings" msgstr "Параметры сопла" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:400 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:382 +msgctxt "@label" +msgid "Nozzle size" +msgstr "Диаметр сопла" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:393 +msgctxt "@label" +msgid "Compatible material diameter" +msgstr "Диаметр совместимого материала" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:395 +msgctxt "@tooltip" +msgid "The nominal diameter of filament supported by the printer. The exact diameter will be overridden by the material and/or the profile." +msgstr "Номинальный диаметр материала, поддерживаемый принтером. Точный диаметр будет указан в материале и/или в профиле." + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:411 msgctxt "@label" msgid "Nozzle offset X" msgstr "Смещение сопла по оси X" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:412 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:423 msgctxt "@label" msgid "Nozzle offset Y" msgstr "Смещение сопла по оси Y" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:433 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:444 msgctxt "@label" msgid "Extruder Start Gcode" msgstr "G-код старта экструдера" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:451 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:462 msgctxt "@label" msgid "Extruder End Gcode" msgstr "G-код завершения экструдера" @@ -1450,8 +1553,9 @@ msgstr "Журнал изменений" #: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.qml:37 #: /home/ruben/Projects/Cura/plugins/USBPrinting/FirmwareUpdateWindow.qml:107 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:55 -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:445 -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:357 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:306 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:456 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:492 #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:80 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:123 #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:147 @@ -1532,7 +1636,7 @@ msgstr "Правка" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:96 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:50 #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:95 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:190 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:171 msgctxt "@action:button" msgid "Remove" msgstr "Удалить" @@ -1554,14 +1658,14 @@ msgid "Type" msgstr "Тип" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:233 -msgctxt "@label" +msgctxt "@label Printer name" msgid "Ultimaker 3" msgstr "Ultimaker 3" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:236 -msgctxt "@label" +msgctxt "@label Printer name" msgid "Ultimaker 3 Extended" -msgstr "Ultimaker 3 Расширенный" +msgstr "Ultimaker 3 Extended" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:252 msgctxt "@label" @@ -1605,8 +1709,6 @@ msgid "Enter the IP address or hostname of your printer on the network." msgstr "Введите IP адрес принтера или его имя в сети." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:379 -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:92 -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:88 #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:181 msgctxt "@action:button" msgid "OK" @@ -1627,6 +1729,11 @@ msgctxt "@label: arg 1 is group name" msgid "%1 is not set up to host a group of connected Ultimaker 3 printers" msgstr "%1 не настроен для управления группой подключенных принтеров Ultimaker 3" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterMonitorItem.qml:55 +msgctxt "@label link to connect manager" +msgid "Add/Remove printers" +msgstr "Добавить/удалить принтеры" + #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/OpenPanelButton.qml:14 msgctxt "@info:tooltip" msgid "Opens the print jobs page with your default web browser." @@ -1657,11 +1764,16 @@ msgid "Available" msgstr "Доступен" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:43 -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:101 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:100 msgctxt "@label:MonitorStatus" msgid "Lost connection with the printer" msgstr "Потеряно соединение с принтером" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:47 +msgctxt "@label Printer status" +msgid "Unknown" +msgstr "Неизвестно" + #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:257 msgctxt "@label:status" msgid "Disabled" @@ -1753,138 +1865,250 @@ msgctxt "@action:button" msgid "Activate Configuration" msgstr "Активировать конфигурацию" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:20 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:21 msgctxt "@title:window" -msgid "Cura SolidWorks Plugin Configuration" -msgstr "Конфигурация плагина SolidWorks" +msgid "SolidWorks: Export wizard" +msgstr "SolidWorks: Мастер экспорта" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:44 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:45 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:140 msgctxt "@action:label" -msgid "Default quality of the exported STL:" -msgstr "Качество по-умолчанию экспортируемого STL:" +msgid "Quality:" +msgstr "Качество:" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:79 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:78 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:179 msgctxt "@option:curaSolidworksStlQuality" -msgid "Always ask" -msgstr "Всегда спрашивать" +msgid "Fine (3D-printing)" +msgstr "Точное (3D-печать)" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:80 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:79 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:180 msgctxt "@option:curaSolidworksStlQuality" -msgid "Always use Fine quality" -msgstr "Всегда использовать хорошее качество" +msgid "Coarse (3D-printing)" +msgstr "Грубое (3D-печать)" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:81 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:80 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:181 msgctxt "@option:curaSolidworksStlQuality" -msgid "Always use Coarse quality" -msgstr "Всегда использовать грубое качество" +msgid "Fine (SolidWorks)" +msgstr "Точное (SolidWorks)" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:20 -msgctxt "@title:window" -msgid "Import SolidWorks File as STL..." -msgstr "Импортировать SolidWorks файл как STL..." - -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:43 -msgctxt "@info:tooltip" -msgid "Quality of the Exported STL" -msgstr "Качество экспортируемого STL" - -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:48 -msgctxt "@action:label" -msgid "Quality" -msgstr "Качество" - -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:62 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:81 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:182 msgctxt "@option:curaSolidworksStlQuality" -msgid "Coarse" -msgstr "Грубое" +msgid "Coarse (SolidWorks)" +msgstr "Грубое (SolidWorks)" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:63 -msgctxt "@option:curaSolidworksStlQuality" -msgid "Fine" -msgstr "Хорошее" - -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:78 -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:82 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:94 msgctxt "@text:window" -msgid "Remember my choice" -msgstr "Запомнить мой выбор" +msgid "Show this dialog again" +msgstr "Показывать это диалоговое окно в дальнейшем" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:81 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:104 +msgctxt "@action:button" +msgid "Continue" +msgstr "Продолжить" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:116 +msgctxt "@action:button" +msgid "Abort" +msgstr "Прервать" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:21 +msgctxt "@title:window" +msgid "How to install Cura SolidWorks macro" +msgstr "Порядок установки макроса Cura SolidWorks" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:62 +msgctxt "@description:label" +msgid "Steps:" +msgstr "Шаги:" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:140 +msgctxt "@action:button" +msgid "" +"Open the directory\n" +"with macro and icon" +msgstr "Откройте каталог\nс макросом и значком" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:160 +msgctxt "@description:label" +msgid "Instructions:" +msgstr "Инструкции:" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:202 +msgctxt "@action:playpause" +msgid "Play" +msgstr "Воспроизвести" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:206 +msgctxt "@action:playpause" +msgid "Pause" +msgstr "Пауза" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:268 +msgctxt "@action:button" +msgid "Previous Step" +msgstr "Предыдущий шаг" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:283 +msgctxt "@action:button" +msgid "Done" +msgstr "Готово" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:287 +msgctxt "@action:button" +msgid "Next Step" +msgstr "Следующий шаг" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:21 +msgctxt "@title:window" +msgid "SolidWorks plugin: Configuration" +msgstr "Плагин SolidWorks: Конфигурация" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:39 +msgctxt "@title:tab" +msgid "Conversion settings" +msgstr "Настройки преобразования" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:66 +msgctxt "@label" +msgid "First choice:" +msgstr "Первый выбранный вариант:" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:86 +msgctxt "@text:menu" +msgid "Latest installed version (Recommended)" +msgstr "Последняя установленная версия (рекомендуется)" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:95 +msgctxt "@text:menu" +msgid "Default version" +msgstr "Версия по умолчанию" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:193 +msgctxt "@label" +msgid "Show wizard before opening SolidWorks files" +msgstr "Показывать окно мастера перед открытием файлов SolidWorks" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:203 +msgctxt "@label" +msgid "Automatically rotate opened file into normed orientation" +msgstr "Автоматически поворачивать открытый файл с применением нормированной ориентации" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:210 +msgctxt "@title:tab" +msgid "Installation(s)" +msgstr "Установка (-и)" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:284 +msgctxt "@label" +msgid "COM service found" +msgstr "Обнаружена служба COM" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:295 +msgctxt "@label" +msgid "Executable found" +msgstr "Обнаружен исполняемый файл" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:306 +msgctxt "@label" +msgid "COM starting" +msgstr "COM запускается" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:317 +msgctxt "@label" +msgid "Revision number" +msgstr "Номер редакции" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:328 +msgctxt "@label" +msgid "Functions available" +msgstr "Доступные функции" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:341 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:264 +msgctxt "@action:button" +msgid "Save" +msgstr "Сохранить" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:117 msgctxt "@label" msgid "Color scheme" msgstr "Цветовая схема" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:96 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:132 msgctxt "@label:listbox" msgid "Material Color" msgstr "Цвет материала" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:100 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:136 msgctxt "@label:listbox" msgid "Line Type" msgstr "Тип линии" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:104 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:140 msgctxt "@label:listbox" msgid "Feedrate" msgstr "Скорость подачи" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:108 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:144 msgctxt "@label:listbox" msgid "Layer thickness" msgstr "Толщина слоя" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:148 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:185 msgctxt "@label" msgid "Compatibility Mode" msgstr "Режим совместимости" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:230 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:264 msgctxt "@label" msgid "Show Travels" msgstr "Показать движения" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:236 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:270 msgctxt "@label" msgid "Show Helpers" msgstr "Показать поддержку" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:242 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:276 msgctxt "@label" msgid "Show Shell" msgstr "Показать стенки" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:248 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:282 msgctxt "@label" msgid "Show Infill" msgstr "Показать заполнение" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:297 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:330 msgctxt "@label" msgid "Only Show Top Layers" msgstr "Показать только верхние слои" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:306 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:339 msgctxt "@label" msgid "Show 5 Detailed Layers On Top" msgstr "Показать 5 детализированных слоёв сверху" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:317 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:350 msgctxt "@label" msgid "Top / Bottom" msgstr "Дно / крышка" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:321 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:354 msgctxt "@label" msgid "Inner Wall" msgstr "Внутренняя стенка" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:378 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:410 msgctxt "@label" msgid "min" msgstr "мин." -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:420 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:452 msgctxt "@label" msgid "max" msgstr "макс." @@ -1909,7 +2133,7 @@ msgctxt "@label" msgid "Settings" msgstr "Параметры" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:455 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:466 msgctxt "@info:tooltip" msgid "Change active post-processing scripts" msgstr "Изменить активные скрипты пост-обработки" @@ -1984,23 +2208,53 @@ msgctxt "@action:label" msgid "Smoothing" msgstr "Сглаживание" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:208 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:38 +msgctxt "@label" +msgid "Mesh Type" +msgstr "Тип объекта" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:69 +msgctxt "@label" +msgid "Normal model" +msgstr "Нормальная модель" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:76 +msgctxt "@label" +msgid "Print as support" +msgstr "Печать в качестве поддержки" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:84 +msgctxt "@label" +msgid "Don't support overlap with other models" +msgstr "Не поддерживать перекрытие с другими моделями" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:92 +msgctxt "@label" +msgid "Modify settings for overlap with other models" +msgstr "Изменять настройки для перекрытия с другими моделями" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:100 +msgctxt "@label" +msgid "Modify settings for infill of other models" +msgstr "Изменять настройки для заполнения других моделей" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:333 msgctxt "@action:button" msgid "Select settings" msgstr "Выберите параметры" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:248 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:375 msgctxt "@title:window" msgid "Select Settings to Customize for this model" msgstr "Выберите параметр для изменения этой модели" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:272 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:402 #: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:91 msgctxt "@label:textbox" msgid "Filter..." msgstr "Фильтр..." -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:296 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:426 msgctxt "@label:checkbox" msgid "Show all" msgstr "Показать всё" @@ -2361,66 +2615,66 @@ msgctxt "@label" msgid "Everything is in order! You're done with your CheckUp." msgstr "Всё в порядке! Проверка завершена." -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:88 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:87 msgctxt "@label:MonitorStatus" msgid "Not connected to a printer" msgstr "Не подключен к принтеру" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:90 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:89 msgctxt "@label:MonitorStatus" msgid "Printer does not accept commands" msgstr "Принтер не принимает команды" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:96 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:95 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:194 msgctxt "@label:MonitorStatus" msgid "In maintenance. Please check the printer" msgstr "В режиме обслуживания. Пожалуйста, проверьте принтер" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:103 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:102 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:184 msgctxt "@label:MonitorStatus" msgid "Printing..." msgstr "Печать..." -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:106 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:105 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:186 msgctxt "@label:MonitorStatus" msgid "Paused" msgstr "Приостановлен" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:109 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:108 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:188 msgctxt "@label:MonitorStatus" msgid "Preparing..." msgstr "Подготовка..." -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:111 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:110 msgctxt "@label:MonitorStatus" msgid "Please remove the print" msgstr "Пожалуйста, удалите напечатанное" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:237 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:241 msgctxt "@label:" msgid "Resume" msgstr "Продолжить" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:241 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:245 msgctxt "@label:" msgid "Pause" msgstr "Пауза" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:270 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:274 msgctxt "@label:" msgid "Abort Print" msgstr "Прервать печать" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:280 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:284 msgctxt "@window:title" msgid "Abort print" msgstr "Прекращение печати" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:282 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:286 msgctxt "@label" msgid "Are you sure you want to abort the print?" msgstr "Вы уверены, что желаете прервать печать?" @@ -2453,19 +2707,19 @@ msgid "Customized" msgstr "Свой" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:157 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:593 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:595 msgctxt "@option:discardOrKeep" msgid "Always ask me this" msgstr "Всегда спрашивать меня" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:158 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:594 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:596 msgctxt "@option:discardOrKeep" msgid "Discard and never ask again" msgstr "Сбросить и никогда больше не спрашивать" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:159 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:595 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:597 msgctxt "@option:discardOrKeep" msgid "Keep and never ask again" msgstr "Сохранить и никогда больше не спрашивать" @@ -2500,72 +2754,72 @@ msgctxt "@label" msgid "Brand" msgstr "Брэнд" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:92 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:88 msgctxt "@label" msgid "Material Type" msgstr "Тип материала" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:105 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:97 msgctxt "@label" msgid "Color" msgstr "Цвет" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:139 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:141 msgctxt "@label" msgid "Properties" msgstr "Свойства" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:141 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:143 msgctxt "@label" msgid "Density" msgstr "Плотность" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:156 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:158 msgctxt "@label" msgid "Diameter" msgstr "Диаметр" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:185 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:187 msgctxt "@label" msgid "Filament Cost" msgstr "Стоимость материала" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:201 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:203 msgctxt "@label" msgid "Filament weight" msgstr "Вес материала" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:218 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:220 msgctxt "@label" msgid "Filament length" msgstr "Длина материала" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:227 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:229 msgctxt "@label" msgid "Cost per Meter" msgstr "Стоимость метра" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:241 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:243 msgctxt "@label" msgid "This material is linked to %1 and shares some of its properties." msgstr "Данный материал привязан к %1 и имеет ряд его свойств." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:248 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:250 msgctxt "@label" msgid "Unlink Material" msgstr "Отвязать материал" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:259 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:261 msgctxt "@label" msgid "Description" msgstr "Описание" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:272 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:274 msgctxt "@label" msgid "Adhesion Information" msgstr "Информация об адгезии" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:298 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:300 msgctxt "@label" msgid "Print settings" msgstr "Параметры печати" @@ -2606,7 +2860,7 @@ msgid "Unit" msgstr "Единица" #: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:14 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:439 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:509 msgctxt "@title:tab" msgid "General" msgstr "Общее" @@ -2621,230 +2875,255 @@ msgctxt "@label" msgid "Language:" msgstr "Язык:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:205 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:207 msgctxt "@label" msgid "Currency:" msgstr "Валюта:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:219 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:221 msgctxt "@label" msgid "Theme:" msgstr "Тема:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:279 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:281 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:296 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:298 msgctxt "@info:tooltip" msgid "Slice automatically when changing settings." msgstr "Нарезать автоматически при изменении настроек." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:304 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:306 msgctxt "@option:check" msgid "Slice automatically" msgstr "Нарезать автоматически" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:318 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:320 msgctxt "@label" msgid "Viewport behavior" msgstr "Поведение окна" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:326 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:328 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:335 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:337 msgctxt "@option:check" msgid "Display overhang" msgstr "Отобразить нависания" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:342 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:344 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:347 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:349 msgctxt "@action:button" msgid "Center camera when item is selected" msgstr "Центрировать камеру на выбранном объекте" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:356 +#: /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:361 +#: /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:370 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:372 msgctxt "@info:tooltip" msgid "Should zooming move in the direction of the mouse?" msgstr "Увеличивать по мере движения мышкой?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:375 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:377 msgctxt "@action:button" msgid "Zoom toward mouse direction" msgstr "Увеличивать по движению мышки" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:384 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:386 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:389 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:391 msgctxt "@option:check" msgid "Ensure models are kept apart" msgstr "Удостовериться, что модели размещены рядом" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:397 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:399 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:402 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:404 msgctxt "@option:check" msgid "Automatically drop models to the build plate" msgstr "Автоматически опускать модели на стол" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:414 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:416 msgctxt "@info:tooltip" msgid "Show caution message in gcode reader." msgstr "Показывать важное сообщение при чтении G-кода." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:423 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:425 msgctxt "@option:check" msgid "Caution message in gcode reader" msgstr "Важное сообщение при чтении G-кода" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:430 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:432 msgctxt "@info:tooltip" msgid "Should layer be forced into compatibility mode?" msgstr "Должен ли слой быть переведён в режим совместимости?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:435 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:437 msgctxt "@option:check" msgid "Force layer view compatibility mode (restart required)" msgstr "Просматривать слои в режиме совместимости (требуется перезапуск)" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:451 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:453 msgctxt "@label" msgid "Opening and saving files" msgstr "Открытие и сохранение файлов" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:457 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:459 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:462 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:464 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:473 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:478 msgctxt "@option:check" msgid "Scale extremely small models" msgstr "Масштабировать очень маленькие модели" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:485 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:487 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:490 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:492 msgctxt "@option:check" msgid "Add machine prefix to job name" msgstr "Добавить префикс принтера к имени задачи" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:499 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:501 msgctxt "@info:tooltip" msgid "Should a summary be shown when saving a project file?" msgstr "Показывать сводку при сохранении файла проекта?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:503 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:505 msgctxt "@option:check" msgid "Show summary dialog when saving project" msgstr "Показывать сводку при сохранении проекта" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:512 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:514 msgctxt "@info:tooltip" msgid "Default behavior when opening a project file" msgstr "Стандартное поведение при открытии файла проекта" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:520 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:522 msgctxt "@window:text" msgid "Default behavior when opening a project file: " msgstr "Стандартное поведение при открытии файла проекта: " -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:533 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:535 msgctxt "@option:openProject" msgid "Always ask" msgstr "Всегда спрашивать" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:534 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:536 msgctxt "@option:openProject" msgid "Always open as a project" msgstr "Всегда открывать как проект" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:535 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:537 msgctxt "@option:openProject" msgid "Always import models" msgstr "Всегда импортировать модели" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:571 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:573 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:580 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:582 msgctxt "@label" msgid "Override Profile" msgstr "Переопределение профиля" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:629 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:631 msgctxt "@label" msgid "Privacy" msgstr "Приватность" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:636 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:638 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:641 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:643 msgctxt "@option:check" msgid "Check for updates on start" msgstr "Проверять обновления при старте" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:651 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:653 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:656 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:658 msgctxt "@option:check" msgid "Send (anonymous) print information" msgstr "Отправлять (анонимно) информацию о печати" +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:674 +msgctxt "@label" +msgid "Experimental" +msgstr "Экспериментальное" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:680 +msgctxt "@info:tooltip" +msgid "Use multi build plate functionality" +msgstr "Использовать функционал нескольких рабочих столов" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:685 +msgctxt "@option:check" +msgid "Use multi build plate functionality (restart required)" +msgstr "Использовать функционал нескольких рабочих столов (требуется перезапуск)" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:694 +msgctxt "@info:tooltip" +msgid "Should newly loaded models be arranged on the build plate? Used in conjunction with multi build plate (EXPERIMENTAL)" +msgstr "Должны ли новые загруженные модели выравниваться на рабочем столе? Используется в сочетании с несколькими рабочими столами (ЭКСПЕРИМЕНТАЛЬНАЯ ОПЦИЯ)" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:699 +msgctxt "@option:check" +msgid "Do not arrange objects on load" +msgstr "Не выравнивать объекты под нагрузкой" + #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:444 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:514 msgctxt "@title:tab" msgid "Printers" msgstr "Принтеры" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:37 #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:51 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:137 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:138 msgctxt "@action:button" msgid "Activate" msgstr "Активировать" @@ -2887,7 +3166,7 @@ msgid "Waiting for a printjob" msgstr "Ожидаем задание на печать" #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:448 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:518 msgctxt "@title:tab" msgid "Profiles" msgstr "Профили" @@ -2913,13 +3192,13 @@ msgid "Duplicate" msgstr "Дублировать" #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:113 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:201 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:182 msgctxt "@action:button" msgid "Import" msgstr "Импорт" #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:119 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:212 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:193 msgctxt "@action:button" msgid "Export" msgstr "Экспорт" @@ -2985,7 +3264,7 @@ msgid "Export Profile" msgstr "Экспортировать профиль" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:446 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:516 msgctxt "@title:tab" msgid "Materials" msgstr "Материалы" @@ -3000,60 +3279,60 @@ msgctxt "@action:label %1 is printer name" msgid "Printer: %1" msgstr "Принтер: %1" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:149 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:150 msgctxt "@action:button" msgid "Create" msgstr "Создать" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:168 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:160 msgctxt "@action:button" msgid "Duplicate" msgstr "Дублировать" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:311 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:319 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:298 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:306 msgctxt "@title:window" msgid "Import Material" msgstr "Импортировать материал" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:320 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:307 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/MaterialsPage.qml:324 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:311 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully imported material %1" msgstr "Успешно импортированный материал %1" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:343 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:358 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:329 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:344 msgctxt "@title:window" msgid "Export Material" msgstr "Экспортировать материал" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:362 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:348 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/MaterialsPage.qml:368 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:354 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully exported material to %1" msgstr "Материал успешно экспортирован в %1" #: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:18 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:793 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:869 msgctxt "@title:window" msgid "Add Printer" msgstr "Добавление принтера" -#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:185 +#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:194 msgctxt "@label" msgid "Printer Name:" msgstr "Имя принтера:" -#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:208 +#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:217 msgctxt "@action:button" msgid "Add Printer" msgstr "Добавить принтер" @@ -3180,12 +3459,7 @@ msgctxt "@label" msgid "Profile:" msgstr "Профиль:" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:66 -msgctxt "@" -msgid "No Profile Available" -msgstr "отсутствуют доступные профили" - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:104 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:102 msgctxt "@tooltip" msgid "" "Some setting/override values are different from the values stored in the profile.\n" @@ -3193,37 +3467,37 @@ msgid "" "Click to open the profile manager." msgstr "Значения некоторых параметров отличаются от значений профиля.\n\nНажмите для открытия менеджера профилей." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:152 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:150 msgctxt "@label:textbox" msgid "Search..." msgstr "Поиск..." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:483 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:482 msgctxt "@action:menu" msgid "Copy value to all extruders" msgstr "Скопировать значение для всех экструдеров" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:498 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:497 msgctxt "@action:menu" msgid "Hide this setting" msgstr "Спрятать этот параметр" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:508 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:507 msgctxt "@action:menu" msgid "Don't show this setting" msgstr "Не показывать этот параметр" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:512 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:511 msgctxt "@action:menu" msgid "Keep this setting visible" msgstr "Оставить этот параметр видимым" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:531 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:530 msgctxt "@action:menu" msgid "Configure setting visiblity..." msgstr "Настроить видимость параметров..." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingCategory.qml:123 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingCategory.qml:250 msgctxt "@label" msgid "" "Some hidden settings use values different from their normal calculated value.\n" @@ -3231,27 +3505,27 @@ msgid "" "Click to make these settings visible." msgstr "Некоторые из скрытых параметров используют значения, отличающиеся от их вычисленных значений.\n\nЩёлкните. чтобы сделать эти параметры видимыми." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:62 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:61 msgctxt "@label Header for list of settings." msgid "Affects" msgstr "Влияет на" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:67 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:66 msgctxt "@label Header for list of settings." msgid "Affected By" msgstr "Зависит от" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:157 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:156 msgctxt "@label" -msgid "This setting is always shared between all extruders. Changing it here will change the value for all extruders" -msgstr "Этот параметр всегда действует на все экструдеры. Его изменение повлияет на все экструдеры" +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:160 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:159 msgctxt "@label" msgid "The value is resolved from per-extruder values " msgstr "Значение получается из параметров каждого экструдера " -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:186 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:190 msgctxt "@label" msgid "" "This setting has a value that is different from the profile.\n" @@ -3259,7 +3533,7 @@ msgid "" "Click to restore the value of the profile." msgstr "Значение этого параметра отличается от значения в профиле.\n\nЩёлкните для восстановления значения из профиля." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:284 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:288 msgctxt "@label" msgid "" "This setting is normally calculated, but it currently has an absolute value set.\n" @@ -3267,71 +3541,71 @@ msgid "" "Click to restore the calculated value." msgstr "Обычно это значение вычисляется, но в настоящий момент было установлено явно.\n\nЩёлкните для восстановления вычисленного значения." -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:120 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:128 msgctxt "@label:listbox" msgid "Print Setup" msgstr "Настройка печати" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:120 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:128 msgctxt "@label:listbox" msgid "" "Print Setup disabled\n" "G-code files cannot be modified" msgstr "Настройка принтера отключена\nG-code файлы нельзя изменять" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:336 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:342 msgctxt "@label Hours and minutes" msgid "00h 00min" msgstr "00 ч 00 мин" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:354 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:359 msgctxt "@tooltip" -msgid "Time specification
      " -msgstr "Формат отображения времени
      " +msgid "Time specification" +msgstr "Настройка расчета времени" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:429 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:441 msgctxt "@label" msgid "Cost specification" msgstr "Настройка расчета стоимости" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:434 -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:445 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:446 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:455 msgctxt "@label m for meter" msgid "%1m" msgstr "%1 м" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:435 -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:446 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:447 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:456 msgctxt "@label g for grams" msgid "%1g" msgstr "%1 г" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:444 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:454 msgctxt "@label" msgid "Total:" msgstr "Итого:" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:498 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:504 msgctxt "@label Print estimates: m for meters, g for grams, %4 is currency and %3 is print cost" msgid "%1m / ~ %2g / ~ %4 %3" msgstr "%1 м / ~ %2 г / ~ %4 %3" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:503 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:509 msgctxt "@label Print estimates: m for meters, g for grams" msgid "%1m / ~ %2g" msgstr "%1 м / ~ %2 г" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:586 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:591 msgctxt "@tooltip" msgid "Recommended Print Setup

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

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

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

      Печатайте с полным контролем над каждой особенностью процесса слайсинга." -#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:49 +#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:50 msgctxt "@title:menuitem %1 is the automatically selected material" msgid "Automatic: %1" msgstr "Автоматически: %1" @@ -3341,6 +3615,16 @@ msgctxt "@title:menu menubar:toplevel" msgid "&View" msgstr "Вид" +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:37 +msgctxt "@action:inmenu menubar:view" +msgid "&Camera position" +msgstr "Положение камеры" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:52 +msgctxt "@action:inmenu menubar:view" +msgid "&Build plate" +msgstr "Рабочий стол" + #: /home/ruben/Projects/Cura/resources/qml/Menus/NozzleMenu.qml:40 msgctxt "@title:menuitem %1 is the nozzle currently loaded in the printer" msgid "Automatic: %1" @@ -3354,7 +3638,7 @@ msgstr[0] "Печать выбранной модели:" msgstr[1] "Печать выбранных моделей:" msgstr[2] "Печать выбранных моделей:" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ContextMenu.qml:83 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ContextMenu.qml:114 msgctxt "@title:window" msgid "Multiply Selected Model" msgid_plural "Multiply Selected Models" @@ -3362,7 +3646,7 @@ msgstr[0] "Размножить выбранную модель" msgstr[1] "Размножить выбранные модели" msgstr[2] "Размножить выбранные моделей" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ContextMenu.qml:108 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ContextMenu.qml:139 msgctxt "@label" msgid "Number of Copies" msgstr "Количество копий" @@ -3378,7 +3662,7 @@ msgid "No printer connected" msgstr "Принтер не подключен" #: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:90 -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:138 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:139 msgctxt "@label" msgid "Extruder" msgstr "Экструдер" @@ -3488,87 +3772,107 @@ msgctxt "@label" msgid "Estimated time left" msgstr "Осталось примерно" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:72 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:79 msgctxt "@action:inmenu" msgid "Toggle Fu&ll Screen" msgstr "Полный экран" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:79 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:86 msgctxt "@action:inmenu menubar:edit" msgid "&Undo" msgstr "Отмена" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:89 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:96 msgctxt "@action:inmenu menubar:edit" msgid "&Redo" msgstr "Возврат" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:99 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:106 msgctxt "@action:inmenu menubar:file" msgid "&Quit" msgstr "Выход" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:107 -msgctxt "@action:inmenu menubar:view" -msgid "&Reset camera position" -msgstr "&Сбросить положение камеры" - #: /home/ruben/Projects/Cura/resources/qml/Actions.qml:114 +msgctxt "@action:inmenu menubar:view" +msgid "&3D View" +msgstr "Трехмерный вид" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:121 +msgctxt "@action:inmenu menubar:view" +msgid "&Front View" +msgstr "Вид спереди" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:128 +msgctxt "@action:inmenu menubar:view" +msgid "&Top View" +msgstr "Вид сверху" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:135 +msgctxt "@action:inmenu menubar:view" +msgid "&Left Side View" +msgstr "Вид слева" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:142 +msgctxt "@action:inmenu menubar:view" +msgid "&Right Side View" +msgstr "Вид справа" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:149 msgctxt "@action:inmenu" msgid "Configure Cura..." msgstr "Настроить Cura…" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:121 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:156 msgctxt "@action:inmenu menubar:printer" msgid "&Add Printer..." msgstr "Добавить принтер..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:127 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:162 msgctxt "@action:inmenu menubar:printer" msgid "Manage Pr&inters..." msgstr "Управление принтерами..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:134 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:169 msgctxt "@action:inmenu" msgid "Manage Materials..." msgstr "Управление материалами…" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:142 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:177 msgctxt "@action:inmenu menubar:profile" msgid "&Update profile with current settings/overrides" msgstr "Обновить профиль, используя текущие параметры" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:150 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:185 msgctxt "@action:inmenu menubar:profile" msgid "&Discard current changes" msgstr "Сбросить текущие параметры" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:162 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:197 msgctxt "@action:inmenu menubar:profile" msgid "&Create profile from current settings/overrides..." msgstr "Создать профиль из текущих параметров…" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:168 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:203 msgctxt "@action:inmenu menubar:profile" msgid "Manage Profiles..." msgstr "Управление профилями..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:175 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:210 msgctxt "@action:inmenu menubar:help" msgid "Show Online &Documentation" msgstr "Показать онлайн документацию" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:183 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:218 msgctxt "@action:inmenu menubar:help" msgid "Report a &Bug" msgstr "Отправить отчёт об ошибке" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:191 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:226 msgctxt "@action:inmenu menubar:help" msgid "&About..." msgstr "О Cura..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:198 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:233 msgctxt "@action:inmenu menubar:edit" msgid "Delete &Selected Model" msgid_plural "Delete &Selected Models" @@ -3576,7 +3880,7 @@ msgstr[0] "Удалить выбранную модель" msgstr[1] "Удалить выбранные модели" msgstr[2] "Удалить выбранные модели" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:208 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:243 msgctxt "@action:inmenu menubar:edit" msgid "Center Selected Model" msgid_plural "Center Selected Models" @@ -3584,7 +3888,7 @@ msgstr[0] "Центрировать выбранную модель" msgstr[1] "Центрировать выбранные модели" msgstr[2] "Центрировать выбранные модели" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:217 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:252 msgctxt "@action:inmenu menubar:edit" msgid "Multiply Selected Model" msgid_plural "Multiply Selected Models" @@ -3592,153 +3896,173 @@ msgstr[0] "Размножить выбранную модель" msgstr[1] "Размножить выбранные модели" msgstr[2] "Размножить выбранные модели" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:226 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:261 msgctxt "@action:inmenu" msgid "Delete Model" msgstr "Удалить модель" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:234 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:269 msgctxt "@action:inmenu" msgid "Ce&nter Model on Platform" msgstr "Поместить модель по центру" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:240 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:275 msgctxt "@action:inmenu menubar:edit" msgid "&Group Models" msgstr "Сгруппировать модели" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:250 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:295 msgctxt "@action:inmenu menubar:edit" msgid "Ungroup Models" msgstr "Разгруппировать модели" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:260 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:305 msgctxt "@action:inmenu menubar:edit" msgid "&Merge Models" msgstr "Объединить модели" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:270 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:315 msgctxt "@action:inmenu" msgid "&Multiply Model..." msgstr "Дублировать модель..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:277 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:322 msgctxt "@action:inmenu menubar:edit" msgid "&Select All Models" msgstr "Выбрать все модели" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:287 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:332 msgctxt "@action:inmenu menubar:edit" msgid "&Clear Build Plate" msgstr "Очистить стол" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:297 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:342 msgctxt "@action:inmenu menubar:file" msgid "Re&load All Models" msgstr "Перезагрузить все модели" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:306 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:351 +msgctxt "@action:inmenu menubar:edit" +msgid "Arrange All Models To All Build Plates" +msgstr "Выровнять все модели по всем рабочим столам" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:358 msgctxt "@action:inmenu menubar:edit" msgid "Arrange All Models" msgstr "Выровнять все модели" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:314 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:366 msgctxt "@action:inmenu menubar:edit" msgid "Arrange Selection" msgstr "Выровнять выбранные" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:321 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:373 msgctxt "@action:inmenu menubar:edit" msgid "Reset All Model Positions" msgstr "Сбросить позиции всех моделей" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:328 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:380 msgctxt "@action:inmenu menubar:edit" msgid "Reset All Model &Transformations" msgstr "Сбросить преобразования всех моделей" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:335 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:387 msgctxt "@action:inmenu menubar:file" msgid "&Open File(s)..." msgstr "Открыть файл(ы)..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:343 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:395 msgctxt "@action:inmenu menubar:file" msgid "&New Project..." msgstr "Новый проект..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:350 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:402 msgctxt "@action:inmenu menubar:help" msgid "Show Engine &Log..." msgstr "Показать журнал движка..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:358 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:410 msgctxt "@action:inmenu menubar:help" msgid "Show Configuration Folder" msgstr "Показать конфигурационный каталог" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:365 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:417 msgctxt "@action:menu" msgid "Configure setting visibility..." msgstr "Видимость параметров…" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:372 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:424 msgctxt "@action:menu" msgid "Browse plugins..." msgstr "Просмотр плагинов..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:379 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:431 msgctxt "@action:menu" msgid "Installed plugins..." msgstr "Установленные плагины..." -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:28 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:438 +msgctxt "@action:inmenu menubar:view" +msgid "Expand/Collapse Sidebar" +msgstr "Развернуть/свернуть боковую панель" + +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:26 msgctxt "@label:PrintjobStatus" msgid "Please load a 3D model" msgstr "Пожалуйста, загрузите 3D модель" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:34 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:36 msgctxt "@label:PrintjobStatus" msgid "Ready to slice" msgstr "Готов к нарезке" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:36 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:38 msgctxt "@label:PrintjobStatus" msgid "Slicing..." msgstr "Нарезка на слои..." -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:38 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:40 msgctxt "@label:PrintjobStatus %1 is target operation" msgid "Ready to %1" msgstr "Готов к %1" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:40 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:42 msgctxt "@label:PrintjobStatus" msgid "Unable to Slice" msgstr "Невозможно нарезать" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:42 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:44 msgctxt "@label:PrintjobStatus" msgid "Slicing unavailable" msgstr "Нарезка недоступна" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:162 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:171 +msgctxt "@info:tooltip" +msgid "Slice current printjob" +msgstr "Разделить на слои текущее задание на печать" + +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:171 +msgctxt "@info:tooltip" +msgid "Cancel slicing process" +msgstr "Отмена разделения на слои" + +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:183 msgctxt "@label:Printjob" msgid "Prepare" msgstr "Подготовка" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:162 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:183 msgctxt "@label:Printjob" msgid "Cancel" msgstr "Отмена" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:302 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:317 msgctxt "@info:tooltip" msgid "Select the active output device" msgstr "Выберите активное целевое устройство" #: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:19 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:620 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:696 msgctxt "@title:window" msgid "Open file(s)" msgstr "Открыть файл(ы)" @@ -3758,114 +4082,114 @@ msgctxt "@title:window" msgid "Ultimaker Cura" msgstr "Ultimaker Cura" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:81 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:102 msgctxt "@title:menu menubar:toplevel" msgid "&File" msgstr "Файл" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:98 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:119 msgctxt "@action:inmenu menubar:file" msgid "&Save Selection to File" msgstr "Сохранить выделенное в файл" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:107 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:128 msgctxt "@title:menu menubar:file" msgid "Save &As..." msgstr "Сохранить как..." -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:118 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:139 msgctxt "@title:menu menubar:file" -msgid "Save project" -msgstr "Сохранить проект" +msgid "Save &Project..." +msgstr "Сохранить проект..." -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:141 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:162 msgctxt "@title:menu menubar:toplevel" msgid "&Edit" msgstr "Правка" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:158 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:179 msgctxt "@title:menu" msgid "&View" msgstr "Вид" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:163 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:184 msgctxt "@title:menu" msgid "&Settings" msgstr "Параметры" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:165 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:186 msgctxt "@title:menu menubar:toplevel" msgid "&Printer" msgstr "Принтер" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:175 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:187 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:196 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:208 msgctxt "@title:menu" msgid "&Material" msgstr "Материал" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:176 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:188 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:197 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:209 msgctxt "@title:menu" msgid "&Profile" msgstr "Профиль" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:180 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:201 msgctxt "@action:inmenu" msgid "Set as Active Extruder" msgstr "Установить как активный экструдер" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:198 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:219 msgctxt "@title:menu menubar:toplevel" msgid "E&xtensions" msgstr "Расширения" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:232 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:253 msgctxt "@title:menu menubar:toplevel" msgid "P&lugins" msgstr "Плагины" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:240 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:261 msgctxt "@title:menu menubar:toplevel" msgid "P&references" msgstr "Настройки" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:248 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:269 msgctxt "@title:menu menubar:toplevel" msgid "&Help" msgstr "Справка" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:330 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:351 msgctxt "@action:button" msgid "Open File" msgstr "Открыть файл" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:442 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:512 msgctxt "@title:tab" msgid "Settings" msgstr "Параметры" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:478 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:554 msgctxt "@title:window" msgid "New project" msgstr "Новый проект" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:479 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:555 msgctxt "@info:question" msgid "Are you sure you want to start a new project? This will clear the build plate and any unsaved settings." msgstr "Вы действительно желаете начать новый проект? Это действие очистит область печати и сбросит все несохранённые настройки." -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:721 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:797 msgctxt "@window:title" msgid "Install Plugin" msgstr "Установка плагина" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:728 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:804 msgctxt "@title:window" msgid "Open File(s)" msgstr "Открыть файл(ы)" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:731 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:807 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-кодом. Вы можете открыть только один файл за раз. Измените свой выбор, пожалуйста." @@ -3890,97 +4214,82 @@ msgctxt "@action:label" msgid "Don't show project summary on save again" msgstr "Больше не показывать сводку по проекту" -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:264 -msgctxt "@action:button" -msgid "Save" -msgstr "Сохранить" - -#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:74 -msgctxt "@title:tab" -msgid "Prepare" -msgstr "Подготовка" - -#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:100 -msgctxt "@title:tab" -msgid "Monitor" -msgstr "Монитор" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:163 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:175 msgctxt "@label" msgid "Layer Height" msgstr "Высота слоя" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:323 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:345 msgctxt "@tooltip" msgid "A custom profile is currently active. To enable the quality slider, choose a default quality profile in Custom tab" msgstr "В настоящее время активен пользовательский профиль. Чтобы включить ползунок качества, на вкладке «Пользовательские» выберите профиль качества по умолчанию" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:340 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:362 msgctxt "@label" msgid "Print Speed" msgstr "Скорость печати" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:350 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:374 msgctxt "@label" msgid "Slower" msgstr "Медленнее" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:361 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:385 msgctxt "@label" msgid "Faster" msgstr "Быстрее" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:388 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:423 msgctxt "@tooltip" msgid "You have modified some profile settings. If you want to change these go to custom mode." msgstr "В некоторые настройки профиля были внесены изменения. Если их необходимо изменить, перейдите в пользовательский режим." -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:413 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:446 msgctxt "@label" msgid "Infill" msgstr "Заполнение" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:633 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:668 msgctxt "@label" msgid "Gradual infill will gradually increase the amount of infill towards the top." msgstr "Постепенное заполнение будет постепенно увеличивать объём заполнения по направлению вверх." -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:645 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:680 msgctxt "@label" msgid "Enable gradual" msgstr "Постепенное" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:712 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:747 msgctxt "@label" msgid "Generate Support" msgstr "Генерация поддержек" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:746 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:781 msgctxt "@label" msgid "Generate structures to support parts of the model which have overhangs. Without these structures, such parts would collapse during printing." msgstr "Генерация структур для поддержки нависающих частей модели. Без этих структур такие части будут складываться во время печати." -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:764 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:799 msgctxt "@label" msgid "Support Extruder" msgstr "Экструдер поддержек" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:816 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:851 msgctxt "@label" msgid "Select which extruder to use for support. This will build up supporting structures below the model to prevent the model from sagging or printing in mid air." msgstr "Выбирает какой экструдер следует использовать для поддержек. Будут созданы поддерживающие структуры под моделью для предотвращения проседания краёв или печати в воздухе." -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:839 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:874 msgctxt "@label" msgid "Build Plate Adhesion" msgstr "Тип прилипания к столу" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:894 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:929 msgctxt "@label" msgid "Enable printing a brim or raft. This will add a flat area around or under your object which is easy to cut off afterwards." msgstr "Разрешает печать каймы или подложки. Это добавляет плоскую область вокруг или под вашим объектом, которую легко удалить после печати." -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:934 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:969 msgctxt "@label" msgid "Need help improving your prints?
      Read the Ultimaker Troubleshooting Guides" msgstr "Требуется помощь в улучшении вашей печати?
      Обратитесь к Руководству Ultimaker по решению проблем" @@ -3998,17 +4307,22 @@ msgctxt "@title:window" msgid "Open project file" msgstr "Открыть файл проекта" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:72 +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:93 msgctxt "@text:window" msgid "This is a Cura project file. Would you like to open it as a project or import the models from it?" msgstr "Это проект Cura. Следует открыть его как проект или просто импортировать из него модели?" #: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:103 +msgctxt "@text:window" +msgid "Remember my choice" +msgstr "Запомнить мой выбор" + +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:122 msgctxt "@action:button" msgid "Open as project" msgstr "Открыть как проект" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:122 +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:131 msgctxt "@action:button" msgid "Import models" msgstr "Импортировать модели" @@ -4018,21 +4332,36 @@ msgctxt "@title:window" msgid "Engine Log" msgstr "Журнал движка" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:242 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:245 msgctxt "@label" msgid "Material" msgstr "Материал" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:349 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:352 msgctxt "@label" -msgid "Check compatibility" -msgstr "Проверить совместимость" +msgid "Check compatibility" +msgstr "Проверить совместимость" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:369 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:372 msgctxt "@tooltip" msgid "Click to check the material compatibility on Ultimaker.com." msgstr "Нажмите для проверки совместимости материала на Ultimaker.com." +#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:211 +msgctxt "@option:check" +msgid "See only current build plate" +msgstr "Показывать только текущий рабочий стол" + +#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:227 +msgctxt "@action:button" +msgid "Arrange to all build plates" +msgstr "Выровнять для всех рабочих столов" + +#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:247 +msgctxt "@action:button" +msgid "Arrange current build plate" +msgstr "Выровнять текущий рабочий стол" + #: MachineSettingsAction/plugin.json msgctxt "description" msgid "Provides a way to change machine settings (such as build volume, nozzle size, etc)" @@ -4123,6 +4452,26 @@ msgctxt "name" msgid "USB printing" msgstr "Печать через USB" +#: PrepareStage/plugin.json +msgctxt "description" +msgid "Provides a prepare stage in Cura." +msgstr "Обеспечивает подготовительный этап в Cura." + +#: PrepareStage/plugin.json +msgctxt "name" +msgid "Prepare Stage" +msgstr "Подготовительный этап" + +#: CuraLiveScriptingPlugin/plugin.json +msgctxt "description" +msgid "Provides an edit window for direct script editing." +msgstr "Открывает окно редактирования для непосредственного редактирования скриптов." + +#: CuraLiveScriptingPlugin/plugin.json +msgctxt "name" +msgid "Live scripting tool" +msgstr "Интерактивный инструмент для работы со скриптами" + #: RemovableDriveOutputDevice/plugin.json msgctxt "description" msgid "Provides removable drive hotplugging and writing support." @@ -4143,6 +4492,16 @@ msgctxt "name" msgid "UM3 Network Connection" msgstr "Соединение с сетью UM3" +#: MonitorStage/plugin.json +msgctxt "description" +msgid "Provides a monitor stage in Cura." +msgstr "Обеспечивает этап мониторинга в Cura." + +#: MonitorStage/plugin.json +msgctxt "name" +msgid "Monitor Stage" +msgstr "Этап мониторинга" + #: FirmwareUpdateChecker/plugin.json msgctxt "description" msgid "Checks for firmware updates." @@ -4155,8 +4514,8 @@ msgstr "Проверка обновлений" #: CuraSolidWorksPlugin/plugin.json msgctxt "description" -msgid "Gives you the possibility to open certain files via SolidWorks itself. These are then converted and loaded into Cura" -msgstr "Предоставляет вам возможность открывать файлы через SolidWorks. Файлы будут преобразовываться и загружаться в Cura" +msgid "Gives you the possibility to open certain files using SolidWorks itself. Conversion is done by this plugin and additional optimizations." +msgstr "Позволяет открывать определенные файлы непосредственно с помощью SolidWorks. Преобразование выполняется с помощью данного плагина и дополнительных оптимизаций." #: CuraSolidWorksPlugin/plugin.json msgctxt "name" @@ -4223,6 +4582,16 @@ msgctxt "name" msgid "Legacy Cura Profile Reader" msgstr "Чтение устаревших профилей Cura" +#: CuraBlenderPlugin/plugin.json +msgctxt "description" +msgid "Helps to open Blender files directly in Cura." +msgstr "Помогает открывать файлы Blender непосредственно в Cura." + +#: CuraBlenderPlugin/plugin.json +msgctxt "name" +msgid "Blender Integration (experimental)" +msgstr "Интеграция Blender (экспериментальная опция)" + #: GCodeProfileReader/plugin.json msgctxt "description" msgid "Provides support for importing profiles from g-code files." @@ -4383,6 +4752,16 @@ 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." @@ -4423,6 +4802,156 @@ msgctxt "name" msgid "Cura Profile Reader" msgstr "Чтение профиля Cura" +#~ msgctxt "@label" +#~ msgid "Unknown" +#~ msgstr "Неизвестный" + +#~ msgctxt "@info:status" +#~ msgid "Errors appeared while opening your SolidWorks file! Please check, whether it is possible to open your file in SolidWorks itself without any problems as well!" +#~ msgstr "Возникли ошибки во время открытия файла SolidWorks! Пожалуйста, проверьте может ли SolidWorks открыть этот файл без проблем!" + +#~ msgctxt "@info:status" +#~ msgid "Error while starting %s!" +#~ msgstr "Ошибка при запуске %s!" + +#~ msgctxt "@item:inlistbox" +#~ msgid "Simulation view" +#~ msgstr "Вид моделирования" + +#~ msgctxt "@info" +#~ msgid "Cura collects anonymised slicing statistics. You can disable this in the preferences." +#~ msgstr "Cura собирает анонимную статистику о нарезке модели. Вы можете отключить это в настройках." + +#~ msgctxt "@action:button" +#~ msgid "Dismiss" +#~ msgstr "Отменить" + +#~ msgctxt "@menuitem" +#~ msgid "Global" +#~ msgstr "Общие" + +#~ msgctxt "@label crash message" +#~ msgid "" +#~ "

      A fatal exception has occurred. 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 "" +#~ "

      Произошло критическое исключение. Отправьте нам этот отчёт о сбое, чтобы мы могли устранить проблему

      \n" +#~ "

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

      \n" +#~ " " + +#~ msgctxt "@label Cura version" +#~ msgid "Cura version: {version}
      " +#~ msgstr "Версия Cura: {version}
      " + +#~ msgctxt "@label Platform" +#~ msgid "Platform: {platform}
      " +#~ msgstr "Платформа: {platform}
      " + +#~ msgctxt "@label Qt version" +#~ msgid "Qt version: {qt}
      " +#~ msgstr "Версия Qt: {qt}
      " + +#~ msgctxt "@label PyQt version" +#~ msgid "PyQt version: {pyqt}
      " +#~ msgstr "Версия PyQt: {pyqt}
      " + +#~ msgctxt "@label OpenGL" +#~ msgid "OpenGL: {opengl}
      " +#~ msgstr "OpenGL: {opengl}
      " + +#~ msgctxt "@title:groupbox" +#~ msgid "Exception traceback" +#~ msgstr "Диагностика исключения" + +#~ msgctxt "@label" +#~ msgid "Material diameter" +#~ msgstr "Диаметр материала" + +#~ msgctxt "@label" +#~ msgid "Ultimaker 3" +#~ msgstr "Ultimaker 3" + +#~ msgctxt "@label" +#~ msgid "Ultimaker 3 Extended" +#~ msgstr "Ultimaker 3 Расширенный" + +#~ msgctxt "@title:window" +#~ msgid "Cura SolidWorks Plugin Configuration" +#~ msgstr "Конфигурация плагина SolidWorks" + +#~ msgctxt "@action:label" +#~ msgid "Default quality of the exported STL:" +#~ msgstr "Качество по-умолчанию экспортируемого STL:" + +#~ msgctxt "@option:curaSolidworksStlQuality" +#~ msgid "Always ask" +#~ msgstr "Всегда спрашивать" + +#~ msgctxt "@option:curaSolidworksStlQuality" +#~ msgid "Always use Fine quality" +#~ msgstr "Всегда использовать хорошее качество" + +#~ msgctxt "@option:curaSolidworksStlQuality" +#~ msgid "Always use Coarse quality" +#~ msgstr "Всегда использовать грубое качество" + +#~ msgctxt "@title:window" +#~ msgid "Import SolidWorks File as STL..." +#~ msgstr "Импортировать SolidWorks файл как STL..." + +#~ msgctxt "@info:tooltip" +#~ msgid "Quality of the Exported STL" +#~ msgstr "Качество экспортируемого STL" + +#~ msgctxt "@action:label" +#~ msgid "Quality" +#~ msgstr "Качество" + +#~ msgctxt "@option:curaSolidworksStlQuality" +#~ msgid "Coarse" +#~ msgstr "Грубое" + +#~ msgctxt "@option:curaSolidworksStlQuality" +#~ msgid "Fine" +#~ msgstr "Хорошее" + +#~ msgctxt "@" +#~ msgid "No Profile Available" +#~ msgstr "отсутствуют доступные профили" + +#~ msgctxt "@label" +#~ msgid "This setting is always shared between all extruders. Changing it here will change the value for all extruders" +#~ msgstr "Этот параметр всегда действует на все экструдеры. Его изменение повлияет на все экструдеры" + +#~ msgctxt "@tooltip" +#~ msgid "Time specification
      " +#~ msgstr "Формат отображения времени
      " + +#~ msgctxt "@action:inmenu menubar:view" +#~ msgid "&Reset camera position" +#~ msgstr "&Сбросить положение камеры" + +#~ msgctxt "@title:menu menubar:file" +#~ msgid "Save project" +#~ msgstr "Сохранить проект" + +#~ msgctxt "@title:tab" +#~ msgid "Prepare" +#~ msgstr "Подготовка" + +#~ msgctxt "@title:tab" +#~ msgid "Monitor" +#~ msgstr "Монитор" + +#~ msgctxt "@label" +#~ msgid "Check compatibility" +#~ msgstr "Проверить совместимость" + +#~ msgctxt "description" +#~ msgid "Gives you the possibility to open certain files via SolidWorks itself. These are then converted and loaded into Cura" +#~ msgstr "Предоставляет вам возможность открывать файлы через SolidWorks. Файлы будут преобразовываться и загружаться в Cura" + #~ msgctxt "@label:status" #~ msgid "Blocked" #~ msgstr "блокированный" @@ -4443,13 +4972,9 @@ msgstr "Чтение профиля Cura" #~ msgid "To ensure that your {machine_name} is equipped with the latest features it is recommended to update the firmware regularly. This can be done on the {machine_name} (when connected to the network) or via USB." #~ msgstr "Рекомендуется регулярно обновлять прошивку принтера {machine_name}. Это может сделано когда {machine_name} подключен к сети или к USB." -msgctxt "@item:inlistbox" -msgid "Layer view" -msgstr "Просмотр слоёв" - -msgctxt "@info:title" -msgid "Layer View" -msgstr "Просмотр слоёв" +#~ msgctxt "@info:title" +#~ msgid "Layer View" +#~ msgstr "Просмотр слоёв" #~ msgctxt "@menuitem" #~ msgid "Browse plugins" @@ -4550,9 +5075,9 @@ msgstr "Просмотр слоёв" #~ msgid "Provides the Layer view." #~ msgstr "Предоставляет послойный просмотр." -msgctxt "name" -msgid "Layer View" -msgstr "Просмотр слоёв" +#~ msgctxt "name" +#~ msgid "Layer View" +#~ msgstr "Просмотр слоёв" #~ msgctxt "@item:inlistbox" #~ msgid "X-Ray" @@ -4873,9 +5398,9 @@ msgstr "Просмотр слоёв" #~ msgid "Provides support for importing profiles from g-code files." #~ msgstr "Предоставляет поддержку для импортирования профилей из GCode файлов." -msgctxt "@label" -msgid "Layer View" -msgstr "Просмотр слоёв" +#~ msgctxt "@label" +#~ msgid "Layer View" +#~ msgstr "Просмотр слоёв" #~ msgctxt "@info:whatsthis" #~ msgid "Provides the Layer view." diff --git a/resources/i18n/ru_RU/fdmextruder.def.json.po b/resources/i18n/ru_RU/fdmextruder.def.json.po index 895544cc45..3b73955f6f 100644 --- a/resources/i18n/ru_RU/fdmextruder.def.json.po +++ b/resources/i18n/ru_RU/fdmextruder.def.json.po @@ -2,12 +2,12 @@ # Copyright (C) 2017 Ultimaker # This file is distributed under the same license as the Cura package. # Ruben Dulek , 2017. -# +# msgid "" msgstr "" "Project-Id-Version: Cura 3.0\n" -"Report-Msgid-Bugs-To: http://github.com/ultimaker/uranium\n" -"POT-Creation-Date: 2017-11-21 16:58+0000\n" +"Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" +"POT-Creation-Date: 2017-08-02 16:53+0000\n" "PO-Revision-Date: 2017-11-30 13:05+0100\n" "Last-Translator: Ruslan Popov \n" "Language-Team: Ruslan Popov\n" diff --git a/resources/i18n/ru_RU/fdmprinter.def.json.po b/resources/i18n/ru_RU/fdmprinter.def.json.po index fdeefe1154..036d0d5edc 100644 --- a/resources/i18n/ru_RU/fdmprinter.def.json.po +++ b/resources/i18n/ru_RU/fdmprinter.def.json.po @@ -2,12 +2,12 @@ # Copyright (C) 2017 Ultimaker # This file is distributed under the same license as the Cura package. # Ruben Dulek , 2017. -# +# msgid "" msgstr "" "Project-Id-Version: Cura 3.0\n" -"Report-Msgid-Bugs-To: http://github.com/ultimaker/uranium\n" -"POT-Creation-Date: 2017-11-21 16:58+0000\n" +"Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" +"POT-Creation-Date: 2017-08-02 16:53+0000\n" "PO-Revision-Date: 2017-11-30 13:05+0100\n" "Last-Translator: Ruslan Popov \n" "Language-Team: Ruslan Popov\n" @@ -347,6 +347,16 @@ msgctxt "machine_gcode_flavor option Repetier" msgid "Repetier" msgstr "Repetier" +#: fdmprinter.def.json +msgctxt "machine_firmware_retract label" +msgid "Firmware Retraction" +msgstr "Откат встроенного программного обеспечения" + +#: fdmprinter.def.json +msgctxt "machine_firmware_retract description" +msgid "Whether to use firmware retract commands (G10/G11) instead of using the E property in G1 commands to retract the material." +msgstr "Определяет, использовать ли команды отката встроенного программного обеспечения (G10/G11) вместо применения свойства E в командах G1 для отката материала." + #: fdmprinter.def.json msgctxt "machine_disallowed_areas label" msgid "Disallowed areas" @@ -607,31 +617,6 @@ msgctxt "layer_height_0 description" msgid "The height of the initial layer in mm. A thicker initial layer makes adhesion to the build plate easier." msgstr "Высота первого слоя в миллиметрах. Более толстый слой упрощает прилипание пластика к столу." -#: fdmprinter.def.json -msgctxt "slicing_tolerance label" -msgid "Slicing Tolerance" -msgstr "Допуск слайсинга" - -#: fdmprinter.def.json -msgctxt "slicing_tolerance description" -msgid "How to slice layers with diagonal surfaces. The areas of a layer can be generated based on where the middle of the layer intersects the surface (Middle). Alternatively each layer can have the areas which fall inside of the volume throughout the height of the layer (Exclusive) or a layer has the areas which fall inside anywhere within the layer (Inclusive). Exclusive retains the most details, Inclusive makes for the best fit and Middle takes the least time to process." -msgstr "Способ выполнения слайсинга слоев диагональными поверхностями. Области слоя можно создать на основе места пересечения середины слоя и поверхности (Середина). Кроме того, каждый слой может иметь области, попадающие в объем по высоте слоя (Исключение), или слой имеет области, попадающие в любое место слоя (Включение). Способ «Исключение» сохраняет больше деталей. Способ «Включение» обеспечивает наилучшую подгонку. Способ «Середина» требует минимального времени для обработки." - -#: fdmprinter.def.json -msgctxt "slicing_tolerance option middle" -msgid "Middle" -msgstr "Середина" - -#: fdmprinter.def.json -msgctxt "slicing_tolerance option exclusive" -msgid "Exclusive" -msgstr "Исключение" - -#: fdmprinter.def.json -msgctxt "slicing_tolerance option inclusive" -msgid "Inclusive" -msgstr "Включение" - #: fdmprinter.def.json msgctxt "line_width label" msgid "Line Width" @@ -672,16 +657,6 @@ msgctxt "wall_line_width_x description" msgid "Width of a single wall line for all wall lines except the outermost one." msgstr "Ширина одной линии стенки для всех линий стенки, кроме самой внешней." -#: fdmprinter.def.json -msgctxt "roofing_line_width label" -msgid "Top Surface Skin Line Width" -msgstr "Ширина линии крышки" - -#: fdmprinter.def.json -msgctxt "roofing_line_width description" -msgid "Width of a single line of the areas at the top of the print." -msgstr "Ширина одной линии крышки." - #: fdmprinter.def.json msgctxt "skin_line_width label" msgid "Top/Bottom Line Width" @@ -862,41 +837,6 @@ msgctxt "roofing_layer_count description" msgid "The number of top most skin layers. Usually only one top most layer is sufficient to generate higher quality top surfaces." msgstr "Количество верхних слоёв оболочки. Обычно достаточно одного слоя для получения верхних поверхностей в хорошем качестве." -#: fdmprinter.def.json -msgctxt "roofing_pattern label" -msgid "Top Surface Skin Pattern" -msgstr "Шаблон верхней оболочки" - -#: fdmprinter.def.json -msgctxt "roofing_pattern description" -msgid "The pattern of the top most layers." -msgstr "Шаблон, используемый для верхних слоёв оболочки." - -#: fdmprinter.def.json -msgctxt "roofing_pattern option lines" -msgid "Lines" -msgstr "Линии" - -#: fdmprinter.def.json -msgctxt "roofing_pattern option concentric" -msgid "Concentric" -msgstr "Концентрические" - -#: fdmprinter.def.json -msgctxt "roofing_pattern option zigzag" -msgid "Zig Zag" -msgstr "Зигзаг" - -#: fdmprinter.def.json -msgctxt "roofing_angles label" -msgid "Top Surface Skin Line Directions" -msgstr "Направление линий верхней оболочки" - -#: fdmprinter.def.json -msgctxt "roofing_angles description" -msgid "A list of integer line directions to use when the top surface skin layers use the lines or zig zag pattern. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the traditional default angles (45 and 135 degrees)." -msgstr "Список направлений линии при печати слоёв дна/крышки линиями или зигзагом. Элементы списка используются последовательно по мере печати слоёв и когда конец списка будет достигнут, он начнётся сначала. Элементы списка отделяются запятыми и сам список заключён в квадратные скобки. По умолчанию, он пустой, что означает использование стандартных углов (45 и 135 градусов)." - #: fdmprinter.def.json msgctxt "top_bottom_extruder_nr label" msgid "Top/Bottom Extruder" @@ -1027,6 +967,16 @@ msgctxt "wall_0_inset description" msgid "Inset applied to the path of the outer wall. If the outer wall is smaller than the nozzle, and printed after the inner walls, use this offset to get the hole in the nozzle to overlap with the inner walls instead of the outside of the model." msgstr "Вставка применяется для внешних стенок. Если внешняя стенка меньше диаметра сопла и печатается после внутренних стенок, то используйте это смещение для захода соплом на внутренние стенки, вместо выхода за модель." +#: fdmprinter.def.json +msgctxt "optimize_wall_printing_order label" +msgid "Optimize Wall Printing Order" +msgstr "Оптимазация порядка печати стенок" + +#: fdmprinter.def.json +msgctxt "optimize_wall_printing_order description" +msgid "Optimize the order in which walls are printed so as to reduce the number of retractions and the distance travelled. Most parts will benefit from this being enabled but some may actually take longer so please compare the print time estimates with and without optimization." +msgstr "Оптимизирует порядок, в котором печатаются стенки для уменьшения количества откатов и перемещений. Большинство моделей будут распечатываться быстрее, но не все. Сравнивайте печать с оптимизацией и без." + #: fdmprinter.def.json msgctxt "outer_inset_first label" msgid "Outer Before Inner Walls" @@ -1097,6 +1047,16 @@ msgctxt "fill_perimeter_gaps option everywhere" msgid "Everywhere" msgstr "Везде" +#: fdmprinter.def.json +msgctxt "filter_out_tiny_gaps label" +msgid "Filter Out Tiny Gaps" +msgstr "Фильтровать только небольшие зазоры" + +#: fdmprinter.def.json +msgctxt "filter_out_tiny_gaps description" +msgid "Filter out tiny gaps to reduce blobs on outside of model." +msgstr "Фильтровать только небольшие зазоры для сокращения пузырей за пределами модели." + #: fdmprinter.def.json msgctxt "fill_outline_gaps label" msgid "Print Thin Walls" @@ -1479,8 +1439,8 @@ msgstr "Смещение заполнения по X" #: fdmprinter.def.json msgctxt "infill_offset_x description" -msgid "The infill pattern is offset this distance along the X axis." -msgstr "Расстояние смещения шаблона заполнения по оси X." +msgid "The infill pattern is moved this distance along the X axis." +msgstr "Расстояние перемещения шаблона заполнения по оси X." #: fdmprinter.def.json msgctxt "infill_offset_y label" @@ -1489,8 +1449,8 @@ msgstr "Смещение заполнения по Y" #: fdmprinter.def.json msgctxt "infill_offset_y description" -msgid "The infill pattern is offset this distance along the Y axis." -msgstr "Расстояние смещения шаблона заполнения по оси Y." +msgid "The infill pattern is moved this distance along the Y axis." +msgstr "Расстояние перемещения шаблона заполнения по оси Y." #: fdmprinter.def.json msgctxt "sub_div_rad_add label" @@ -1509,8 +1469,8 @@ msgstr "Процент перекрытие заполнения" #: fdmprinter.def.json msgctxt "infill_overlap 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 "Величина перекрытия между заполнением и стенками. Небольшое перекрытие позволяет стенкам плотно соединиться с заполнением." +msgid "The amount of overlap between the infill and the walls as a percentage of the infill line width. A slight overlap allows the walls to connect firmly to the infill." +msgstr "Величина перекрытия между заполнением и стенками в виде процентного отношения от ширины линии заполнения. Небольшое перекрытие позволяет стенкам надежно соединяться с заполнением." #: fdmprinter.def.json msgctxt "infill_overlap_mm label" @@ -1529,8 +1489,8 @@ msgstr "Процент перекрытия оболочек" #: fdmprinter.def.json msgctxt "skin_overlap description" -msgid "The amount of overlap between the skin and the walls as a percentage of the line width. A slight overlap allows the walls to connect firmly to the skin. This is a percentage of the average line widths of the skin lines and the innermost wall." -msgstr "Объём перекрытия между оболочкой и стенами в виде процента от ширины линии. Небольшое перекрытие позволяют стенам нормально соединяться с оболочкой. Это процент от средней ширины линии оболочки и внутренней стенки." +msgid "The amount of overlap between the skin and the walls as a percentage of the skin line width. A slight overlap allows the walls to connect firmly to the skin. This is a percentage of the average line widths of the skin lines and the innermost wall." +msgstr "Величина перекрытия между оболочкой и стенками в виде процентного отношения от ширины линии оболочки. Небольшое перекрытие позволяет стенкам надежно соединяться с оболочкой. Это значение является процентным отношением от средней ширины линии оболочки и внутренней стенки." #: fdmprinter.def.json msgctxt "skin_overlap_mm label" @@ -1692,16 +1652,6 @@ msgctxt "material description" msgid "Material" msgstr "Материал" -#: fdmprinter.def.json -msgctxt "material_flow_dependent_temperature label" -msgid "Auto Temperature" -msgstr "Автоматическая температура" - -#: fdmprinter.def.json -msgctxt "material_flow_dependent_temperature description" -msgid "Change the temperature for each layer automatically with the average flow speed of that layer." -msgstr "Изменять температуру каждого слоя автоматически в соответствии со средней скоростью потока на этом слое." - #: fdmprinter.def.json msgctxt "default_material_print_temperature label" msgid "Default Printing Temperature" @@ -1752,16 +1702,6 @@ msgctxt "material_final_print_temperature description" msgid "The temperature to which to already start cooling down just before the end of printing." msgstr "Температура, до которой можно начать охлаждать сопло, перед окончанием печати." -#: fdmprinter.def.json -msgctxt "material_flow_temp_graph label" -msgid "Flow Temperature Graph" -msgstr "График температуры потока" - -#: fdmprinter.def.json -msgctxt "material_flow_temp_graph description" -msgid "Data linking material flow (in mm3 per second) to temperature (degrees Celsius)." -msgstr "График, объединяющий поток (в мм3 в секунду) с температурой (в градусах Цельсия)." - #: fdmprinter.def.json msgctxt "material_extrusion_cool_down_speed label" msgid "Extrusion Cool Down Speed Modifier" @@ -1779,8 +1719,8 @@ msgstr "Температура стола" #: fdmprinter.def.json msgctxt "material_bed_temperature description" -msgid "The temperature used for the heated build plate. If this is 0, the bed will not heat up for this print." -msgstr "Температура, используемая для горячего стола. Если указан 0, то горячий стол не нагревается при печати." +msgid "The temperature used for the heated build plate. If this is 0, the bed temperature will not be adjusted." +msgstr "Температура, задаваемая для разогретого рабочего стола. Если значение равно 0, температура основания не будет регулироваться." #: fdmprinter.def.json msgctxt "material_bed_temperature_layer_0 label" @@ -3452,6 +3392,16 @@ msgctxt "support_tower_roof_angle description" msgid "The angle of a rooftop of a tower. A higher value results in pointed tower roofs, a lower value results in flattened tower roofs." msgstr "Угол верхней части башен. Большие значения приводят уменьшению площади крыши, меньшие наоборот делают крышу плоской." +#: fdmprinter.def.json +msgctxt "support_mesh_drop_down label" +msgid "Drop Down Support Mesh" +msgstr "Объект поддержки нависаний" + +#: fdmprinter.def.json +msgctxt "support_mesh_drop_down description" +msgid "Make support everywhere below the support mesh, so that there's no overhang in the support mesh." +msgstr "Будет поддерживать всё ниже объекта, никаких нависаний не будет." + #: fdmprinter.def.json msgctxt "platform_adhesion label" msgid "Build Plate Adhesion" @@ -4084,16 +4034,6 @@ msgctxt "meshfix_keep_open_polygons description" msgid "Normally Cura tries to stitch up small holes in the mesh and remove parts of a layer with big holes. Enabling this option keeps those parts which cannot be stitched. This option should be used as a last resort option when everything else fails to produce proper GCode." msgstr "Обычно Cura пытается закрыть небольшие отверстия в объекте и убрать части слоя с большими отверстиями. Включение этого параметра сохраняет те части, что не могут быть сшиты. Этот параметр должен использоваться как последний вариант, когда уже ничего не помогает получить нормальный GCode." -#: 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 "multiple_mesh_overlap label" msgid "Merged Meshes Overlap" @@ -4244,16 +4184,6 @@ msgctxt "support_mesh description" msgid "Use this mesh to specify support areas. This can be used to generate support structure." msgstr "Используйте этот объект для указания области поддержек. Может использоваться при генерации структуры поддержек." -#: fdmprinter.def.json -msgctxt "support_mesh_drop_down label" -msgid "Drop Down Support Mesh" -msgstr "Объект поддержки нависаний" - -#: fdmprinter.def.json -msgctxt "support_mesh_drop_down description" -msgid "Make support everywhere below the support mesh, so that there's no overhang in the support mesh." -msgstr "Будет поддерживать всё ниже объекта, никаких нависаний не будет." - #: fdmprinter.def.json msgctxt "anti_overhang_mesh label" msgid "Anti Overhang Mesh" @@ -4330,14 +4260,194 @@ msgid "experimental!" msgstr "экспериментальное!" #: fdmprinter.def.json -msgctxt "optimize_wall_printing_order label" -msgid "Optimize Wall Printing Order" -msgstr "Оптимазация порядка печати стенок" +msgctxt "support_tree_enable label" +msgid "Tree Support" +msgstr "Древовидная поддержка" #: fdmprinter.def.json -msgctxt "optimize_wall_printing_order description" -msgid "Optimize the order in which walls are printed so as to reduce the number of retractions and the distance travelled. Most parts will benefit from this being enabled but some may actually take longer so please compare the print time estimates with and without optimization." -msgstr "Оптимизирует порядок, в котором печатаются стенки для уменьшения количества откатов и перемещений. Большинство моделей будут распечатываться быстрее, но не все. Сравнивайте печать с оптимизацией и без." +msgctxt "support_tree_enable description" +msgid "Generate a tree-like support with branches that support your print. This may reduce material usage and print time, but greatly increases slicing time." +msgstr "Генерирование древовидной поддержки с ответвлениями, поддерживающими вашу печать. Данная опция может сэкономить материал и сократить время печати, однако при этом существенно возрастает время разделения на слои." + +#: fdmprinter.def.json +msgctxt "support_tree_angle label" +msgid "Tree Support Branch Angle" +msgstr "Угол ответвления древовидной поддержки" + +#: fdmprinter.def.json +msgctxt "support_tree_angle description" +msgid "The angle of the branches. Use a lower angle to make them more vertical and more stable. Use a higher angle to be able to have more reach." +msgstr "Угол ответвлений. При указании меньшего угла поддержка будет более вертикальной и устойчивой. Для получения большего охвата указывайте более высокий угол." + +#: fdmprinter.def.json +msgctxt "support_tree_branch_distance label" +msgid "Tree Support Branch Distance" +msgstr "Расстояние ответвления древовидной поддержки" + +#: fdmprinter.def.json +msgctxt "support_tree_branch_distance description" +msgid "How far apart the branches need to be when they touch the model. Making this distance small will cause the tree support to touch the model at more points, causing better overhang but making support harder to remove." +msgstr "Указывает, насколько далеко должны друг от друга располагаться ответвления при касании модели. Если задать небольшое расстояние, увеличится количество точек, в которых древовидная поддержка касается модели; это улучшает нависание, но при этом усложняет удаление поддержки." + +#: fdmprinter.def.json +msgctxt "support_tree_branch_diameter label" +msgid "Tree Support Branch Diameter" +msgstr "Диаметр ответвления древовидной поддержки" + +#: fdmprinter.def.json +msgctxt "support_tree_branch_diameter description" +msgid "The diameter of the thinnest branches of tree support. Thicker branches are more sturdy. Branches towards the base will be thicker than this." +msgstr "Диаметр самых тонких ответвлений древовидной поддержки. Чем толще ответвление, тем оно крепче. Ответвления возле основания будут иметь толщину, превышающую данное значение." + +#: fdmprinter.def.json +msgctxt "support_tree_branch_diameter_angle label" +msgid "Tree Support Branch Diameter Angle" +msgstr "Угол диаметра ответвления древовидной поддержки" + +#: fdmprinter.def.json +msgctxt "support_tree_branch_diameter_angle description" +msgid "The angle of the branches' diameter as they gradually become thicker towards the bottom. An angle of 0 will cause the branches to have uniform thickness over their length. A bit of an angle can increase stability of the tree support." +msgstr "Угол диаметра ответвлений по мере их постепенного утолщения к основанию. Если значение угла равно 0, ответвления будут иметь одинаковую толщину по всей своей длине. Небольшой угол может повысить устойчивость древовидной поддержки." + +#: fdmprinter.def.json +msgctxt "support_tree_collision_resolution label" +msgid "Tree Support Collision Resolution" +msgstr "Разрешение для расчета столкновений древовидной поддержки" + +#: fdmprinter.def.json +msgctxt "support_tree_collision_resolution description" +msgid "Resolution to compute collisions with to avoid hitting the model. Setting this lower will produce more accurate trees that fail less often, but increases slicing time dramatically." +msgstr "Разрешение, применяемое при расчете столкновений во избежание столкновений с моделью. Если указать меньшее значение, древовидные структуры будут получаться более точными и устойчивыми, однако при этом значительно увеличится время разделения на слои." + +#: fdmprinter.def.json +msgctxt "support_tree_wall_thickness label" +msgid "Tree Support Wall Thickness" +msgstr "Толщина стенки древовидной поддержки" + +#: fdmprinter.def.json +msgctxt "support_tree_wall_thickness description" +msgid "The thickness of the walls of the branches of tree support. Thicker walls take longer to print but don't fall over as easily." +msgstr "Толщина стенок ответвлений древовидной поддержки. Для печати утолщенных стенок требуется больше времени, однако при этом возрастает устойчивость поддержки." + +#: fdmprinter.def.json +msgctxt "support_tree_wall_count label" +msgid "Tree Support Wall Line Count" +msgstr "Количество линий стенки древовидной поддержки" + +#: fdmprinter.def.json +msgctxt "support_tree_wall_count description" +msgid "The number of walls of the branches of tree support. Thicker walls take longer to print but don't fall over as easily." +msgstr "Количество стенок ответвлений древовидной поддержки. Для печати утолщенных стенок требуется больше времени, однако при этом возрастает устойчивость поддержки." + +#: fdmprinter.def.json +msgctxt "slicing_tolerance label" +msgid "Slicing Tolerance" +msgstr "Допуск слайсинга" + +#: fdmprinter.def.json +msgctxt "slicing_tolerance description" +msgid "How to slice layers with diagonal surfaces. The areas of a layer can be generated based on where the middle of the layer intersects the surface (Middle). Alternatively each layer can have the areas which fall inside of the volume throughout the height of the layer (Exclusive) or a layer has the areas which fall inside anywhere within the layer (Inclusive). Exclusive retains the most details, Inclusive makes for the best fit and Middle takes the least time to process." +msgstr "Способ выполнения слайсинга слоев диагональными поверхностями. Области слоя можно создать на основе места пересечения середины слоя и поверхности (Середина). Кроме того, каждый слой может иметь области, попадающие в объем по высоте слоя (Исключение), или слой имеет области, попадающие в любое место слоя (Включение). Способ «Исключение» сохраняет больше деталей. Способ «Включение» обеспечивает наилучшую подгонку. Способ «Середина» требует минимального времени для обработки." + +#: fdmprinter.def.json +msgctxt "slicing_tolerance option middle" +msgid "Middle" +msgstr "Середина" + +#: fdmprinter.def.json +msgctxt "slicing_tolerance option exclusive" +msgid "Exclusive" +msgstr "Исключение" + +#: fdmprinter.def.json +msgctxt "slicing_tolerance option inclusive" +msgid "Inclusive" +msgstr "Включение" + +#: fdmprinter.def.json +msgctxt "roofing_line_width label" +msgid "Top Surface Skin Line Width" +msgstr "Ширина линии крышки" + +#: fdmprinter.def.json +msgctxt "roofing_line_width description" +msgid "Width of a single line of the areas at the top of the print." +msgstr "Ширина одной линии крышки." + +#: fdmprinter.def.json +msgctxt "roofing_pattern label" +msgid "Top Surface Skin Pattern" +msgstr "Шаблон верхней оболочки" + +#: fdmprinter.def.json +msgctxt "roofing_pattern description" +msgid "The pattern of the top most layers." +msgstr "Шаблон, используемый для верхних слоёв оболочки." + +#: fdmprinter.def.json +msgctxt "roofing_pattern option lines" +msgid "Lines" +msgstr "Линии" + +#: fdmprinter.def.json +msgctxt "roofing_pattern option concentric" +msgid "Concentric" +msgstr "Концентрические" + +#: fdmprinter.def.json +msgctxt "roofing_pattern option zigzag" +msgid "Zig Zag" +msgstr "Зигзаг" + +#: fdmprinter.def.json +msgctxt "roofing_angles label" +msgid "Top Surface Skin Line Directions" +msgstr "Направление линий верхней оболочки" + +#: fdmprinter.def.json +msgctxt "roofing_angles description" +msgid "A list of integer line directions to use when the top surface skin layers use the lines or zig zag pattern. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the traditional default angles (45 and 135 degrees)." +msgstr "Список направлений линии при печати слоёв дна/крышки линиями или зигзагом. Элементы списка используются последовательно по мере печати слоёв и когда конец списка будет достигнут, он начнётся сначала. Элементы списка отделяются запятыми и сам список заключён в квадратные скобки. По умолчанию, он пустой, что означает использование стандартных углов (45 и 135 градусов)." + +#: fdmprinter.def.json +msgctxt "infill_enable_travel_optimization label" +msgid "Infill Travel Optimization" +msgstr "Оптимизация перемещения заполнения" + +#: fdmprinter.def.json +msgctxt "infill_enable_travel_optimization description" +msgid "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." +msgstr "Если включено, заказ, в котором печатаются линии заполнения, оптимизируется для сокращения пройденного расстояния. Достигнутое сокращение времени перемещения в очень большой степени зависит от модели, разделяемой на слои, шаблона заполнения, плотности и т. п. Обратите внимание, что для некоторых моделей, имеющих множество небольших заполняемых областей, время разделения на слои может существенно возрасти." + +#: fdmprinter.def.json +msgctxt "material_flow_dependent_temperature label" +msgid "Auto Temperature" +msgstr "Автоматическая температура" + +#: fdmprinter.def.json +msgctxt "material_flow_dependent_temperature description" +msgid "Change the temperature for each layer automatically with the average flow speed of that layer." +msgstr "Изменять температуру каждого слоя автоматически в соответствии со средней скоростью потока на этом слое." + +#: fdmprinter.def.json +msgctxt "material_flow_temp_graph label" +msgid "Flow Temperature Graph" +msgstr "График температуры потока" + +#: fdmprinter.def.json +msgctxt "material_flow_temp_graph description" +msgid "Data linking material flow (in mm3 per second) to temperature (degrees Celsius)." +msgstr "График, объединяющий поток (в мм3 в секунду) с температурой (в градусах Цельсия)." + +#: 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 "support_skip_some_zags label" @@ -4936,6 +5046,46 @@ msgctxt "wireframe_nozzle_clearance description" msgid "Distance between the nozzle and horizontally downward lines. Larger clearance results in diagonally downward lines with a less steep angle, which in turn results in less upward connections with the next layer. Only applies to Wire Printing." msgstr "Зазор между соплом и горизонтально нисходящими линиями. Большее значение уменьшает угол нисхождения, что приводит уменьшению восходящих соединений на следующем слое. Применяется только при каркасной печати." +#: fdmprinter.def.json +msgctxt "adaptive_layer_height_enabled label" +msgid "Use adaptive layers" +msgstr "Использовать адаптивные слои" + +#: fdmprinter.def.json +msgctxt "adaptive_layer_height_enabled description" +msgid "Adaptive layers computes the layer heights depending on the shape of the model." +msgstr "В случае адаптивных слоев расчет высоты слоя осуществляется в зависимости от формы модели." + +#: fdmprinter.def.json +msgctxt "adaptive_layer_height_variation label" +msgid "Adaptive layers maximum variation" +msgstr "Максимальная вариация адаптивных слоев" + +#: fdmprinter.def.json +msgctxt "adaptive_layer_height_variation description" +msgid "The maximum allowed height different from the base layer height in mm." +msgstr "Максимальная разрешенная высота по сравнению с высотой базового уровня (в мм)." + +#: fdmprinter.def.json +msgctxt "adaptive_layer_height_variation_step label" +msgid "Adaptive layers variation step size" +msgstr "Размер шага вариации адаптивных слоев" + +#: fdmprinter.def.json +msgctxt "adaptive_layer_height_variation_step description" +msgid "The difference in height of the next layer height compared to the previous one." +msgstr "Разница между высотой следующего слоя и высотой предыдущего слоя." + +#: fdmprinter.def.json +msgctxt "adaptive_layer_height_threshold label" +msgid "Adaptive layers threshold" +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 "Пороговое значение, при достижении которого будет использоваться меньший слой. Это число сравнивается с тангенсом наиболее крутого наклона в слое." + #: fdmprinter.def.json msgctxt "command_line_settings label" msgid "Command Line Settings" @@ -4996,6 +5146,26 @@ msgctxt "mesh_rotation_matrix description" msgid "Transformation matrix to be applied to the model when loading it from file." msgstr "Матрица преобразования, применяемая к модели при её загрузки из файла." +#~ msgctxt "infill_offset_x description" +#~ msgid "The infill pattern is offset this distance along the X axis." +#~ msgstr "Расстояние смещения шаблона заполнения по оси X." + +#~ msgctxt "infill_offset_y description" +#~ msgid "The infill pattern is offset this distance along the Y axis." +#~ msgstr "Расстояние смещения шаблона заполнения по оси Y." + +#~ msgctxt "infill_overlap 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 "Величина перекрытия между заполнением и стенками. Небольшое перекрытие позволяет стенкам плотно соединиться с заполнением." + +#~ msgctxt "skin_overlap description" +#~ msgid "The amount of overlap between the skin and the walls as a percentage of the line width. A slight overlap allows the walls to connect firmly to the skin. This is a percentage of the average line widths of the skin lines and the innermost wall." +#~ msgstr "Объём перекрытия между оболочкой и стенами в виде процента от ширины линии. Небольшое перекрытие позволяют стенам нормально соединяться с оболочкой. Это процент от средней ширины линии оболочки и внутренней стенки." + +#~ msgctxt "material_bed_temperature description" +#~ msgid "The temperature used for the heated build plate. If this is 0, the bed will not heat up for this print." +#~ msgstr "Температура, используемая для горячего стола. Если указан 0, то горячий стол не нагревается при печати." + #~ msgctxt "wall_x_extruder_nr label" #~ msgid "Inner Walls Extruder" #~ msgstr "Печать внутренних стенок" diff --git a/resources/i18n/tr_TR/cura.po b/resources/i18n/tr_TR/cura.po index c77df51d69..55a7f78890 100644 --- a/resources/i18n/tr_TR/cura.po +++ b/resources/i18n/tr_TR/cura.po @@ -1,14 +1,14 @@ # Cura -# Copyright (C) 2017 Ultimaker +# Copyright (C) 2018 Ultimaker # This file is distributed under the same license as the Cura package. -# Ruben Dulek , 2017. -# +# Ruben Dulek , 2018. +# msgid "" msgstr "" -"Project-Id-Version: Cura 3.0\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-11-21 16:58+0100\n" -"PO-Revision-Date: 2017-11-30 13:05+0100\n" +"Project-Id-Version: Cura 3.2\n" +"Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" +"POT-Creation-Date: 2018-01-29 09:48+0000\n" +"PO-Revision-Date: 2018-02-05 13:25+0100\n" "Last-Translator: Bothof \n" "Language-Team: Turkish\n" "Language: tr_TR\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:29 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:26 msgctxt "@action" msgid "Machine Settings" msgstr "Makine Ayarları" @@ -53,12 +53,11 @@ msgstr "Doodle3D Connect’e bağlanıyor" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:87 #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:155 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:874 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:646 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:875 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:659 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:370 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrintWindow.qml:78 -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:104 -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:99 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:355 #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:188 #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:376 #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:139 @@ -98,7 +97,7 @@ msgctxt "@info:tooltip" msgid "Open the Doodle3D Connect web interface" msgstr "Doodle3D Connect web arayüzünü aç" -#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:34 +#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:33 msgctxt "@item:inmenu" msgid "Show Changelog" msgstr "Değişiklik Günlüğünü Göster" @@ -113,78 +112,83 @@ 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:26 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:27 msgctxt "@item:inmenu" msgid "USB printing" msgstr "USB yazdırma" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:27 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:28 msgctxt "@action:button Preceded by 'Ready to'." msgid "Print via USB" msgstr "USB ile yazdır" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:28 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:29 msgctxt "@info:tooltip" msgid "Print via USB" msgstr "USB ile yazdır" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:30 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:31 msgctxt "@info:status" msgid "Connected via USB" msgstr "USB ile bağlı" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:154 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:183 msgctxt "@info:status" msgid "Unable to start a new job because the printer is busy or not connected." msgstr "Yazıcı meşgul veya bağlı olmadığı için yeni bir işlem başlatılamıyor." -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:154 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:183 msgctxt "@info:title" msgid "Printer Unavailable" msgstr "Yazıcı Mevcut Değil" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:457 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:485 msgctxt "@info:status" msgid "This printer does not support USB printing because it uses UltiGCode flavor." msgstr "Yazıcı, UltiGCode türü kullandığı için USB yazdırmayı desteklemiyor." -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:457 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:485 msgctxt "@info:title" msgid "USB Printing" msgstr "USB Yazdırma" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:461 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:489 msgctxt "@info:status" msgid "Unable to start a new job because the printer does not support usb printing." msgstr "Yazıcı USB ile yazdırmayı desteklemediği için yeni bir işlem başlatılamıyor." -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:461 -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:108 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:489 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:103 #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:146 #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:158 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:945 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1349 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1417 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:946 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1418 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1496 msgctxt "@info:title" msgid "Warning" msgstr "Uyarı" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:108 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:103 msgctxt "@info" msgid "Unable to update firmware because there are no printers connected." msgstr "Bağlı yazıcı bulunmadığı için aygıt yazılımı güncellenemiyor." -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:122 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:117 #, python-format msgctxt "@info" msgid "Could not find firmware required for the printer at %s." msgstr "%s’te yazıcı için gerekli aygıt yazılım bulunamadı." -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:122 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:117 msgctxt "@info:title" msgid "Printer Firmware" msgstr "Yazıcı Bellenimi" +#: /home/ruben/Projects/Cura/plugins/PrepareStage/__init__.py:12 +msgctxt "@item:inmenu" +msgid "Prepare" +msgstr "Hazırla" + #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:23 msgctxt "@action:button Preceded by 'Ready to'." msgid "Save to Removable Drive" @@ -228,11 +232,11 @@ 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:132 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:692 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:700 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:146 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:693 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:701 #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:153 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1358 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:160 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1427 msgctxt "@info:title" msgid "Error" msgstr "Hata" @@ -282,7 +286,7 @@ msgid "Removable Drive" msgstr "Çıkarılabilir Sürücü" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:109 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:53 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:51 msgctxt "@action:button Preceded by 'Ready to'." msgid "Print over network" msgstr "Ağ üzerinden yazdır" @@ -396,110 +400,110 @@ msgctxt "@info:title" msgid "Printer Status" msgstr "Yazıcı Durumu" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:691 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:692 #, python-brace-format msgctxt "@info:status" msgid "Unable to start a new print job. No Printcore loaded in slot {0}" msgstr "Yeni yazdırma işi başlatılamıyor. {0} yuvasına PrintCore yüklenmedi." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:699 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:700 #, python-brace-format msgctxt "@info:status" msgid "Unable to start a new print job. No material loaded in slot {0}" msgstr "Yeni bir yazdırma başlatılamıyor. {0} yuvasına Malzeme yüklenmedi" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:709 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:710 #, python-brace-format msgctxt "@label" msgid "Not enough material for spool {0}." msgstr "Biriktirme {0} için yeterli malzeme yok." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:719 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:720 #, python-brace-format msgctxt "@label" msgid "Different PrintCore (Cura: {0}, Printer: {1}) selected for extruder {2}" msgstr "Ekstruder {2} için farklı bir PrintCore (Cura: {0}, Yazıcı: {1}) seçildi" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:733 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:734 #, 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/NetworkPrinterOutputDevice.py:741 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:742 #, python-brace-format msgctxt "@label" msgid "PrintCore {0} is not properly calibrated. XY calibration needs to be performed on the printer." msgstr "PrintCore {0} düzgün bir şekilde ayarlanmadı. XY ayarının yazıcıda yapılması gerekiyor." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:746 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:747 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/NetworkPrinterOutputDevice.py:747 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:748 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/NetworkPrinterOutputDevice.py:753 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:754 msgctxt "@window:title" msgid "Mismatched configuration" msgstr "Uyumsuz yapılandırma" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:864 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:262 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:865 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:258 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/NetworkPrinterOutputDevice.py:873 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:874 msgctxt "@info:status" msgid "Sending data to printer" msgstr "Veriler yazıcıya gönderiliyor" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:873 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:874 msgctxt "@info:title" msgid "Sending Data" msgstr "Veri gönderiliyor" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:944 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:945 msgctxt "@info:status" msgid "Unable to send data to printer. Is another job still active?" msgstr "Veriler yazıcıya gönderilemedi. Hala etkin olan başka bir iş var mı?" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1085 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1087 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:196 msgctxt "@label:MonitorStatus" msgid "Aborting print..." msgstr "Yazdırma durduruluyor..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1091 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1093 msgctxt "@label:MonitorStatus" msgid "Print aborted. Please check the printer" msgstr "Yazdırma durduruldu. Lütfen yazıcıyı kontrol edin" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1097 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1099 msgctxt "@label:MonitorStatus" msgid "Pausing print..." msgstr "Yazdırma duraklatılıyor..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1099 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1101 msgctxt "@label:MonitorStatus" msgid "Resuming print..." msgstr "Yazdırma devam ediyor..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1289 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1291 msgctxt "@window:title" msgid "Sync with your printer" msgstr "Yazıcınız ile eşitleyin" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1291 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1293 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/NetworkPrinterOutputDevice.py:1293 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1295 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." @@ -520,145 +524,188 @@ msgid "{printer_name} has finished printing '{job_name}'. Please collect the pri msgstr "{printer_name}, '{job_name}' yazdırmayı tamamladı. Lütfen çıktıyı alın ve yapı levhasının temizlenmesini onaylayın." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:115 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:520 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:533 #, python-brace-format msgid "{printer_name} is reserved to print '{job_name}'. Please change the printer's configuration to match the job, for it to start printing." msgstr "{printer_name}, '{job_name}' yazdırmak için ayrılmıştır. Yazıcının yazdırmayı başlatması için lütfen yazıcı yapılandırmasını işe uygun olacak şekilde değiştirin." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:278 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:277 msgctxt "@info:status" msgid "Unable to send new print job: this 3D printer is not (yet) set up to host a group of connected Ultimaker 3 printers." msgstr "Yeni yazdırma işi gönderilemiyor: bu 3D yazıcı, bağlı Ultimaker 3 yazıcı grubunu barındırmak için (henüz) ayarlı değildir." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:410 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:423 #, python-brace-format msgctxt "@info:status" msgid "Unable to send print job to group {cluster_name}." msgstr "Yazdırma işi, {cluster_name} grubuna gönderilemiyor." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:418 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:431 #, python-brace-format msgctxt "@info:status" msgid "Sent {file_name} to group {cluster_name}." msgstr "{file_name}, {cluster_name} grubuna gönderildi." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:423 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:436 msgctxt "@action:button" msgid "Show print jobs" msgstr "Yazdırma işlerini göster" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:424 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:437 msgctxt "@info:tooltip" msgid "Opens the print jobs interface in your browser." msgstr "Yazdırma işleri arayüzünü tarayıcınızda açar." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:489 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:502 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:239 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:47 -msgctxt "@label" +msgctxt "@label Printer name" msgid "Unknown" -msgstr "Bilinmiyor" +msgstr "Bilinmeyen" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:492 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:505 #, 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/NetworkClusterPrinterOutputDevice.py:494 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:497 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:507 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:510 msgctxt "@info:status" msgid "Print finished" msgstr "Baskı tamamlandı" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:522 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:525 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:535 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:538 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:282 msgctxt "@label:status" msgid "Action required" msgstr "Eylem gerekli" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:643 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:656 #, python-brace-format msgctxt "@info:progress" msgid "Sending {file_name} to group {cluster_name}" msgstr "{file_name}, {cluster_name} grubuna gönderiliyor" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.py:19 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.py:17 msgctxt "@action" msgid "Connect via Network" msgstr "Ağ ile Bağlan" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:64 +#: /home/ruben/Projects/Cura/plugins/MonitorStage/__init__.py:12 +msgctxt "@item:inmenu" +msgid "Monitor" +msgstr "Görüntüle" + +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:66 #, python-brace-format msgctxt "@info Don't translate {machine_name}, since it gets replaced by a printer name!" msgid "New features are available for your {machine_name}! It is recommended to update the firmware on your printer." msgstr "{machine_name} adlı cihazınız için yeni özellikler var! Yazıcınızın fabrika yazılımını güncellemeniz önerilir." -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:65 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:67 #, python-format msgctxt "@info:title The %s gets replaced with the printer name." msgid "New %s firmware available" msgstr "Yeni %s bellenimi mevcut" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:66 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:68 msgctxt "@action:button" msgid "How to update" msgstr "Nasıl güncellenir" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:77 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:79 msgctxt "@info" msgid "Could not access update information." msgstr "Güncelleme bilgilerine erişilemedi." -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksReader.py:199 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksReader.py:579 msgctxt "@info:status" -msgid "Errors appeared while opening your SolidWorks file! Please check, whether it is possible to open your file in SolidWorks itself without any problems as well!" -msgstr "SolidWorks dosyanızı açarken hata meydana geldi! Lütfen dosyanızın SolidWorks’te sorunsuz açılıp açılmadığını kontrol edin!" +msgid "SolidWorks reported errors, while opening your file. We recommend to solve these issues inside SolidWorks itself." +msgstr "Dosyanızı açarken SolidWorks tarafından hata rapor edildi. Bu sorunları SolidWorks’ün içinde çözmenizi öneririz." -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:31 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksReader.py:591 +msgctxt "@info:status" +msgid "" +"Found no models inside your drawing. Could you please check it's content again and make sure one part or assembly is inside?\n" +"\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!." + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksReader.py:595 +msgctxt "@info:status" +msgid "" +"Found more then one part or assembly inside your drawing. We currently only support drawings with exactly one part or assembly inside.\n" +"\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!" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:25 msgctxt "@item:inlistbox" msgid "SolidWorks part file" msgstr "SolidWorks part dosyası" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:35 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:29 msgctxt "@item:inlistbox" msgid "SolidWorks assembly file" msgstr "SolidWorks assembly dosyası" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.py:21 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:33 +msgctxt "@item:inlistbox" +msgid "SolidWorks drawing file" +msgstr "SolidWorks çizim dosyası" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:48 +msgctxt "@info:status" +msgid "" +"Dear customer,\n" +"We could not find a valid installation of SolidWorks on your system. That means that either SolidWorks is not installed or you don't own an valid license. Please make sure that running SolidWorks itself works without issues and/or contact your ICT.\n" +"\n" +"With kind regards\n" +" - Thomas Karl Pietrowski" +msgstr "Sayın müşterimiz,\nSisteminizde 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\nSaygılarımızla\n - Thomas Karl Pietrowski" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:57 +msgctxt "@info:status" +msgid "" +"Dear customer,\n" +"You are currently running this plugin on an operating system other than Windows. This plugin will only work on Windows with SolidWorks installed, including an valid license. Please install this plugin on a Windows machine with SolidWorks installed.\n" +"\n" +"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\nSaygılarımızla\n - Thomas Karl Pietrowski" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksDialogHandler.py:70 msgid "Configure" msgstr "Yapılandırma" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/CommonComReader.py:135 -#, python-format -msgctxt "@info:status" -msgid "Error while starting %s!" -msgstr "%s başlatılırken hata oluştu!" +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksDialogHandler.py:71 +msgid "Installation guide for SolidWorks macro" +msgstr "SolidWorks makro kurulum rehberi" #: /home/ruben/Projects/Cura/plugins/SimulationView/__init__.py:14 msgctxt "@item:inlistbox" -msgid "Simulation view" -msgstr "Simülasyon görünümü" +msgid "Layer view" +msgstr "Katman görünümü" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:100 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:103 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:101 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:104 msgctxt "@info:title" msgid "Simulation View" msgstr "Simülasyon Görünümü" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.py:26 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.py:25 msgid "Modify G-Code" msgstr "GCode Değiştir" #: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:43 msgctxt "@info" -msgid "Cura collects anonymised slicing statistics. You can disable this in the preferences." -msgstr "Cura anonim dilimleme istatistiklerini toplar. Bu özelliği tercihlerden devre dışı bırakabilirsiniz." +msgid "Cura collects anonymized usage statistics." +msgstr "Cura anonimleştirilmiş kullanım istatistikleri toplar." #: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:46 msgctxt "@info:title" @@ -667,14 +714,41 @@ msgstr "Veri Toplanıyor" #: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:48 msgctxt "@action:button" -msgid "Dismiss" -msgstr "Son Ver" +msgid "Allow" +msgstr "İzin Verme" + +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:49 +msgctxt "@action:tooltip" +msgid "Allow Cura to send anonymized usage statistics to help prioritize future improvements to Cura. Some of your preferences and settings are sent, the Cura version and a hash of the models you're slicing." +msgstr "Programın gelecek sürümlerinin iyileştirilmesine yardımcı olmak için Cura’ya anonimleştirilmiş kullanım istatistikleri gönderme izni verin. Tercih ve ayarlarınızın bazıları, Cura sürümü ve dilimlere ayırdığınız modellerin sağlaması gönderilir." + +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:50 +msgctxt "@action:button" +msgid "Disable" +msgstr "Devre Dışı Bırakma" + +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:51 +msgctxt "@action:tooltip" +msgid "Don't allow Cura to send anonymized usage statistics. You can enable it again in the preferences." +msgstr "Cura’nın anonimleştirilmiş kullanım istatistikleri göndermesine izin vermeyin. Tercihler sekmesinden tekrar açabilirsiniz." #: /home/ruben/Projects/Cura/plugins/LegacyProfileReader/__init__.py:14 msgctxt "@item:inlistbox" msgid "Cura 15.04 profiles" msgstr "Cura 15.04 profilleri" +#: /home/ruben/Projects/Cura/plugins/CuraBlenderPlugin/__init__.py:15 +msgctxt "@item:inlistbox" +msgid "Blender file" +msgstr "Blender dosyası" + +#: /home/ruben/Projects/Cura/plugins/CuraBlenderPlugin/CadIntegrationUtils/CommonReader.py:199 +msgctxt "@info:status" +msgid "" +"Could not export using \"{}\" quality!\n" +"Felt back to \"{}\"." +msgstr "\"{}\" quality!\nFell back to \"{}\" kullanarak dışarı aktarım yapılamadı." + #: /home/ruben/Projects/Cura/plugins/GCodeProfileReader/__init__.py:14 #: /home/ruben/Projects/Cura/plugins/GCodeReader/__init__.py:14 msgctxt "@item:inlistbox" @@ -706,49 +780,49 @@ msgctxt "@item:inlistbox" msgid "GIF Image" msgstr "GIF Resmi" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:269 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:299 msgctxt "@info:status" msgid "Unable to slice with the current material as it is incompatible with the selected machine or configuration." msgstr "Mevcut malzeme, seçilen makine veya yapılandırma ile uyumlu olmadığından mevcut malzeme ile dilimlenemedi." -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:269 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:297 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:319 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:299 #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:327 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:336 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:349 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:357 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:366 msgctxt "@info:title" msgid "Unable to slice" msgstr "Dilimlenemedi" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:296 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:326 #, python-brace-format msgctxt "@info:status" msgid "Unable to slice with the current settings. The following settings have errors: {0}" msgstr "Geçerli ayarlarla dilimlenemiyor. Şu ayarlarda hata var: {0}" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:318 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:348 #, python-brace-format msgctxt "@info:status" msgid "Unable to slice due to some per-model settings. The following settings have errors on one or more models: {error_labels}" msgstr "Modele özgü ayarlar nedeniyle dilimlenemedi. Şu ayarlar bir veya daha fazla modelde hataya yol açıyor: {error_labels}" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:326 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:356 msgctxt "@info:status" msgid "Unable to slice because the prime tower or prime position(s) are invalid." msgstr "İlk direk veya ilk konum(lar) geçersiz olduğu için dilimlenemiyor." -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:335 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:365 msgctxt "@info:status" msgid "Nothing to slice because none of the models fit the build volume. Please scale or rotate models to fit." msgstr "Modeller yapı hacmine sığmadığı için dilimlenecek bir şey yok. Lütfen sığdırmak için modelleri ölçeklendirin veya döndürün." #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:50 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:239 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:242 msgctxt "@info:status" msgid "Processing Layers" msgstr "Katmanlar İşleniyor" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:239 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:242 msgctxt "@info:title" msgid "Information" msgstr "Bilgi" @@ -785,14 +859,14 @@ msgstr "Siemens NX eklenti dosyaları kopyalanamadı. Lütfen UGII_USER_DIR ayar msgid "Failed to install Siemens NX plugin. Could not set environment variable UGII_USER_DIR for Siemens NX." msgstr "Siemens NX eklentisi yüklenemedi. Siemens NX ortam değişkeni UGII_USER_DIR ayarlanamadı." -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:167 -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:585 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:165 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:590 msgctxt "@title:tab" msgid "Recommended" msgstr "Önerilen Ayarlar" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:169 -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:590 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:167 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:595 msgctxt "@title:tab" msgid "Custom" msgstr "Özel" @@ -803,24 +877,24 @@ msgctxt "@item:inlistbox" msgid "3MF File" msgstr "3MF Dosyası" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:126 -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1142 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:159 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1185 msgctxt "@label" msgid "Nozzle" msgstr "Nozül" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:164 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:152 #, python-brace-format msgctxt "@info:status" msgid "Failed to get plugin ID from {0}" msgstr "Eklenti kimliği, {0} dosyasından alınamadı" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:165 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:153 msgctxt "@info:tile" msgid "Warning" msgstr "Uyarı" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:203 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:191 msgctxt "@window:title" msgid "Plugin browser" msgstr "Eklenti tarayıcısı" @@ -835,18 +909,18 @@ msgctxt "@item:inlistbox" msgid "G File" msgstr "G Dosyası" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:314 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:321 msgctxt "@info:status" msgid "Parsing G-code" msgstr "G-code ayrıştırma" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:316 -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:426 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:323 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:464 msgctxt "@info:title" msgid "G-code Details" msgstr "G-code Ayrıntıları" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:424 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:462 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." @@ -857,6 +931,16 @@ 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:17 +msgctxt "@item:inlistbox" +msgid "Profile Assistant" +msgstr "Profil Asistanı" + #: /home/ruben/Projects/Cura/plugins/3MFWriter/__init__.py:30 msgctxt "@item:inlistbox" msgid "3MF file" @@ -888,142 +972,116 @@ msgctxt "@action" msgid "Level build plate" msgstr "Yapı levhasını dengele" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:89 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:98 msgctxt "@tooltip" msgid "Outer Wall" msgstr "Dış Duvar" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:90 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:99 msgctxt "@tooltip" msgid "Inner Walls" msgstr "İç Duvarlar" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:91 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:100 msgctxt "@tooltip" msgid "Skin" msgstr "Yüzey Alanı" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:92 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:101 msgctxt "@tooltip" msgid "Infill" msgstr "Dolgu" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:93 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:102 msgctxt "@tooltip" msgid "Support Infill" msgstr "Destek Dolgusu" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:94 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:103 msgctxt "@tooltip" msgid "Support Interface" msgstr "Destek Arayüzü" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:95 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:104 msgctxt "@tooltip" msgid "Support" msgstr "Destek" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:96 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:105 msgctxt "@tooltip" msgid "Skirt" msgstr "Etek" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:97 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:106 msgctxt "@tooltip" msgid "Travel" msgstr "Hareket" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:98 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:107 msgctxt "@tooltip" msgid "Retractions" msgstr "Geri Çekmeler" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:99 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:108 msgctxt "@tooltip" msgid "Other" msgstr "Diğer" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:199 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:231 msgctxt "@label unknown material" msgid "Unknown" msgstr "Bilinmiyor" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:284 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:318 #, python-brace-format msgctxt "@label" msgid "Pre-sliced file {0}" msgstr "Önceden dilimlenmiş dosya {0}" -#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:469 +#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:440 msgctxt "@item:material" msgid "No material loaded" msgstr "Hiçbir malzeme yüklenmedi" -#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:476 +#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:447 msgctxt "@item:material" msgid "Unknown material" msgstr "Bilinmeyen malzeme" -#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:30 -msgctxt "@info:status" -msgid "Finding new location for objects" -msgstr "Nesneler için yeni konum bulunuyor" - -#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:34 -msgctxt "@info:title" -msgid "Finding Location" -msgstr "Konumu Buluyor" - -#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:89 -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:83 -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/ArrangeObjectsJob.py:90 -msgctxt "@info:title" -msgid "Can't Find Location" -msgstr "Konum Bulunamıyor" - -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:431 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:113 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:437 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:120 msgctxt "@title:window" msgid "File Already Exists" msgstr "Dosya Zaten Mevcut" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:432 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:114 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:438 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:121 #, 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:815 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:872 msgctxt "@label" msgid "Custom" msgstr "Özel" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:819 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:876 msgctxt "@label" msgid "Custom Material" msgstr "Özel Malzeme" -#: /home/ruben/Projects/Cura/cura/Settings/ExtrudersModel.py:182 -msgctxt "@menuitem" -msgid "Global" -msgstr "Genel" - -#: /home/ruben/Projects/Cura/cura/Settings/ExtrudersModel.py:229 +#: /home/ruben/Projects/Cura/cura/Settings/ExtrudersModel.py:205 msgctxt "@menuitem" msgid "Not overridden" msgstr "Geçersiz kılınmadı" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:117 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:124 msgctxt "@info:status" msgid "The selected material is incompatible with the selected machine or configuration." msgstr "Seçilen malzeme, seçilen makine veya yapılandırma ile uyumlu değil." -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:118 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:125 #: /home/ruben/Projects/Cura/cura/Settings/MaterialManager.py:24 msgctxt "@info:title" msgid "Incompatible Material" @@ -1044,67 +1102,89 @@ msgctxt "@action" msgid "Undo changing the material diameter." msgstr "Malzeme çapını değiştirme işlemini geri al." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:144 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:151 #, 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:151 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:158 #, 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:156 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:163 #, 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:157 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:164 msgctxt "@info:title" msgid "Export succeeded" msgstr "Dışa aktarma başarılı" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:183 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:205 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:214 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:248 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:190 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:211 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:271 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to import profile from {0}: {1}" msgstr "{0} dosyasından profil içe aktarımı başarısız oldu: {1}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:216 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:252 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:230 +#, python-brace-format +msgctxt "@info:status Don't translate the XML tags or !" +msgid "This profile {0} contains incorrect data, could not import it." +msgstr "Bu profil {0} yanlış veri içermekte, içeri aktarılamadı." + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:240 +#, python-brace-format +msgctxt "@info:status Don't translate the XML tags or !" +msgid "The machine defined in profile {0} doesn't match with your current machine, could not import it." +msgstr "Profilde {0} tanımlanan mevcut cihazınızla eşleşmemekte, içeri aktarılamadı." + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:274 #, 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:255 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:277 +#, 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:280 #, 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:274 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:298 msgctxt "@label" msgid "Custom profile" msgstr "Özel profil" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:285 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:313 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:321 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:349 #, python-brace-format msgctxt "@info:status" msgid "Could not find a quality type {0} for the current configuration." msgstr "Mevcut yapılandırma için bir kalite tipi {0} bulunamıyor." +#: /home/ruben/Projects/Cura/cura/ObjectsModel.py:46 +#, python-brace-format +msgctxt "@label" +msgid "Group #{group_nr}" +msgstr "Grup #{group_nr}" + #: /home/ruben/Projects/Cura/cura/BuildVolume.py:100 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." @@ -1115,142 +1195,167 @@ msgctxt "@info:title" msgid "Build Volume" msgstr "Yapı Disk Bölümü" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:34 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:25 msgctxt "@info:status" msgid "Multiplying and placing objects" msgstr "Nesneler çoğaltılıyor ve yerleştiriliyor" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:35 -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:83 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:26 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:78 msgctxt "@info:title" msgid "Placing Object" msgstr "Nesne Yerleştiriliyor" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:80 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:78 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:88 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:152 +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/Arranging/ArrangeObjectsJob.py:29 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:64 +msgctxt "@info:status" +msgid "Finding new location for objects" +msgstr "Nesneler için yeni konum bulunuyor" + +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:33 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:68 +msgctxt "@info:title" +msgid "Finding Location" +msgstr "Konumu Buluyor" + +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:89 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:153 +msgctxt "@info:title" +msgid "Can't Find Location" +msgstr "Konum Bulunamıyor" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:81 msgctxt "@title:window" msgid "Crash Report" msgstr "Çökme Raporu" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:93 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:94 msgctxt "@label crash message" msgid "" -"

      A fatal exception has occurred. Please send us this Crash Report to fix the problem

      \n" +"

      A fatal error has occurred. 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 "

      Ç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 " +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 " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:101 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:102 msgctxt "@title:groupbox" msgid "System information" msgstr "Sistem bilgileri" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:109 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:110 msgctxt "@label unknown version of Cura" msgid "Unknown" msgstr "Bilinmiyor" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:111 -#, python-brace-format -msgctxt "@label Cura version" -msgid "Cura version: {version}
      " -msgstr "Cura sürümü: {version}
      " - #: /home/ruben/Projects/Cura/cura/CrashHandler.py:112 -#, python-brace-format -msgctxt "@label Platform" -msgid "Platform: {platform}
      " -msgstr "Platform: {platform}
      " +msgctxt "@label Cura version number" +msgid "Cura version" +msgstr "Cura sürümü" #: /home/ruben/Projects/Cura/cura/CrashHandler.py:113 -#, python-brace-format -msgctxt "@label Qt version" -msgid "Qt version: {qt}
      " -msgstr "Qt sürümü: {qt}
      " +msgctxt "@label Type of platform" +msgid "Platform" +msgstr "Platform" #: /home/ruben/Projects/Cura/cura/CrashHandler.py:114 -#, python-brace-format -msgctxt "@label PyQt version" -msgid "PyQt version: {pyqt}
      " -msgstr "PyQt sürümü: {pyqt}
      " +msgctxt "@label" +msgid "Qt version" +msgstr "Qt Sürümü" #: /home/ruben/Projects/Cura/cura/CrashHandler.py:115 -#, python-brace-format -msgctxt "@label OpenGL" -msgid "OpenGL: {opengl}
      " -msgstr "OpenGL: {opengl}
      " +msgctxt "@label" +msgid "PyQt version" +msgstr "PyQt Sürümü" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:130 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:116 +msgctxt "@label OpenGL version" +msgid "OpenGL" +msgstr "OpenGL" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:133 +msgctxt "@label" +msgid "not yet initialised
      " +msgstr "henüz başlatılmadı
      " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:136 #, python-brace-format msgctxt "@label OpenGL version" msgid "
    • OpenGL Version: {version}
    • " msgstr "
    • OpenGL Sürümü: {version}
    • " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:131 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:137 #, python-brace-format msgctxt "@label OpenGL vendor" msgid "
    • OpenGL Vendor: {vendor}
    • " msgstr "
    • OpenGL Satıcısı: {vendor}
    • " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:132 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:138 #, python-brace-format msgctxt "@label OpenGL renderer" msgid "
    • OpenGL Renderer: {renderer}
    • " msgstr "
    • OpenGL Oluşturucusu: {renderer}
    • " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:141 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:147 msgctxt "@title:groupbox" -msgid "Exception traceback" -msgstr "İstisna geri izleme" +msgid "Error traceback" +msgstr "Hata geri izleme" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:208 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:214 msgctxt "@title:groupbox" msgid "Logs" msgstr "Günlükler" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:231 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:237 msgctxt "@title:groupbox" msgid "User description" msgstr "Kullanıcı açıklaması" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:246 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:252 msgctxt "@action:button" msgid "Send report" msgstr "Rapor gönder" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:256 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:274 msgctxt "@info:progress" msgid "Loading machines..." msgstr "Makineler yükleniyor..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:661 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:660 msgctxt "@info:progress" msgid "Setting up scene..." msgstr "Görünüm ayarlanıyor..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:703 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:702 msgctxt "@info:progress" msgid "Loading interface..." msgstr "Arayüz yükleniyor..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:874 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:899 #, 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:1348 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1417 #, 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:1357 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1426 #, 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:1416 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1495 msgctxt "@info:status" msgid "The selected model was too small to load." msgstr "Seçilen model yüklenemeyecek kadar küçüktü." @@ -1279,12 +1384,11 @@ msgstr "X (Genişlik)" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:119 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:129 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:235 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:288 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:300 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:391 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:401 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:413 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:840 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:383 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:394 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:412 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:424 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:849 msgctxt "@label" msgid "mm" msgstr "mm" @@ -1374,68 +1478,67 @@ msgctxt "@tooltip" msgid "The height difference between the tip of the nozzle and the gantry system (X and Y axes). Used to prevent collisions between previous prints and the gantry when printing \"One at a Time\"." msgstr "Nozül ucu ve portal sistemi (X ve Y aksları) arasındaki yükseklik farkı. “Birer birer” çıktı alırken önceki çıktılar ile portalın çakışmasını önlemek için kullanılır." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:255 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:254 msgctxt "@label" msgid "Number of Extruders" msgstr "Ekstrüder Sayısı" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:289 -msgctxt "@tooltip" -msgid "The nominal diameter of filament supported by the printer. The exact diameter will be overridden by the material and/or the profile." -msgstr "Yazıcı tarafından desteklenen nominal filaman çapı. Tam çap malzeme ve/veya profil tarafından etkisiz kılınacaktır." - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:291 -msgctxt "@label" -msgid "Material diameter" -msgstr "Malzeme çapı" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:299 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:390 -msgctxt "@label" -msgid "Nozzle size" -msgstr "Nozzle boyutu" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:317 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:310 msgctxt "@label" msgid "Start Gcode" msgstr "Gcode’u başlat" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:327 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:320 msgctxt "@tooltip" msgid "Gcode commands to be executed at the very start." msgstr "Başlangıçta yürütülecek Gcode komutları." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:336 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:329 msgctxt "@label" msgid "End Gcode" msgstr "Gcode’u sonlandır" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:346 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:339 msgctxt "@tooltip" msgid "Gcode commands to be executed at the very end." msgstr "Bitişte yürütülecek Gcode komutları." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:378 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:370 msgctxt "@label" msgid "Nozzle Settings" msgstr "Nozül Ayarları" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:400 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:382 +msgctxt "@label" +msgid "Nozzle size" +msgstr "Nozzle boyutu" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:393 +msgctxt "@label" +msgid "Compatible material diameter" +msgstr "Uyumlu malzeme çapı" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:395 +msgctxt "@tooltip" +msgid "The nominal diameter of filament supported by the printer. The exact diameter will be overridden by the material and/or the profile." +msgstr "Yazıcı tarafından desteklenen nominal filaman çapı. Tam çap malzeme ve/veya profil tarafından etkisiz kılınacaktır." + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:411 msgctxt "@label" msgid "Nozzle offset X" msgstr "Nozül X ofseti" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:412 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:423 msgctxt "@label" msgid "Nozzle offset Y" msgstr "Nozül Y ofseti" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:433 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:444 msgctxt "@label" msgid "Extruder Start Gcode" msgstr "Ekstrüder Gcode’u başlat" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:451 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:462 msgctxt "@label" msgid "Extruder End Gcode" msgstr "Ekstrüder Gcode’u sonlandır" @@ -1448,8 +1551,9 @@ msgstr "Değişiklik Günlüğü" #: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.qml:37 #: /home/ruben/Projects/Cura/plugins/USBPrinting/FirmwareUpdateWindow.qml:107 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:55 -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:445 -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:357 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:306 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:456 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:492 #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:80 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:123 #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:147 @@ -1530,7 +1634,7 @@ msgstr "Düzenle" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:96 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:50 #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:95 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:190 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:171 msgctxt "@action:button" msgid "Remove" msgstr "Kaldır" @@ -1552,12 +1656,12 @@ msgid "Type" msgstr "Tür" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:233 -msgctxt "@label" +msgctxt "@label Printer name" msgid "Ultimaker 3" msgstr "Ultimaker 3" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:236 -msgctxt "@label" +msgctxt "@label Printer name" msgid "Ultimaker 3 Extended" msgstr "Genişletilmiş Ultimaker 3" @@ -1603,8 +1707,6 @@ msgid "Enter the IP address or hostname of your printer on the network." msgstr "IP adresini veya yazıcınızın ağ üzerindeki ana bilgisayar adını girin." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:379 -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:92 -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:88 #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:181 msgctxt "@action:button" msgid "OK" @@ -1625,6 +1727,11 @@ msgctxt "@label: arg 1 is group name" msgid "%1 is not set up to host a group of connected Ultimaker 3 printers" msgstr "%1, bağlı Ultimaker 3 yazıcı grubunu barındırmak için ayarlı değildir" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterMonitorItem.qml:55 +msgctxt "@label link to connect manager" +msgid "Add/Remove printers" +msgstr "Yazıcı Ekle/Kaldır" + #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/OpenPanelButton.qml:14 msgctxt "@info:tooltip" msgid "Opens the print jobs page with your default web browser." @@ -1655,11 +1762,16 @@ msgid "Available" msgstr "Mevcut" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:43 -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:101 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:100 msgctxt "@label:MonitorStatus" msgid "Lost connection with the printer" msgstr "Yazıcı bağlantısı koptu" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:47 +msgctxt "@label Printer status" +msgid "Unknown" +msgstr "Bilinmeyen" + #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:257 msgctxt "@label:status" msgid "Disabled" @@ -1751,138 +1863,250 @@ msgctxt "@action:button" msgid "Activate Configuration" msgstr "Yapılandırmayı Etkinleştir" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:20 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:21 msgctxt "@title:window" -msgid "Cura SolidWorks Plugin Configuration" -msgstr "Cura SolidWorks Eklenti Yapılandırması" +msgid "SolidWorks: Export wizard" +msgstr "SolidWorks: Dışarı aktarma sihirbazı" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:44 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:45 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:140 msgctxt "@action:label" -msgid "Default quality of the exported STL:" -msgstr "Dışa aktarılan STL dosyasının varsayılan kalitesi:" +msgid "Quality:" +msgstr "Kalite:" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:79 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:78 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:179 msgctxt "@option:curaSolidworksStlQuality" -msgid "Always ask" -msgstr "Her zaman sor" +msgid "Fine (3D-printing)" +msgstr "Yüksek Kaliteli (3 boyutlu baskı)" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:80 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:79 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:180 msgctxt "@option:curaSolidworksStlQuality" -msgid "Always use Fine quality" -msgstr "Her zaman İnce kalite modunu kullan" +msgid "Coarse (3D-printing)" +msgstr "Yüzeysel (3 boyutlu baskı)" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:81 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:80 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:181 msgctxt "@option:curaSolidworksStlQuality" -msgid "Always use Coarse quality" -msgstr "Her zaman Düşük kalite modunu kullan" +msgid "Fine (SolidWorks)" +msgstr "Yüksek Kaliteli (SolidWorks)" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:20 -msgctxt "@title:window" -msgid "Import SolidWorks File as STL..." -msgstr "SolidWorks Dosyasını STL olarak içe aktar..." - -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:43 -msgctxt "@info:tooltip" -msgid "Quality of the Exported STL" -msgstr "Dışa aktarılan STL dosyasının kalitesi" - -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:48 -msgctxt "@action:label" -msgid "Quality" -msgstr "Kalite" - -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:62 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:81 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:182 msgctxt "@option:curaSolidworksStlQuality" -msgid "Coarse" -msgstr "Düşük" +msgid "Coarse (SolidWorks)" +msgstr "Yüzeysel (SolidWorks)" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:63 -msgctxt "@option:curaSolidworksStlQuality" -msgid "Fine" -msgstr "İnce" - -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:78 -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:82 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:94 msgctxt "@text:window" -msgid "Remember my choice" -msgstr "Seçimimi hatırla" +msgid "Show this dialog again" +msgstr "Bu diyaloğu tekrardan göster" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:81 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:104 +msgctxt "@action:button" +msgid "Continue" +msgstr "Devam Et" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:116 +msgctxt "@action:button" +msgid "Abort" +msgstr "Durdur" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:21 +msgctxt "@title:window" +msgid "How to install Cura SolidWorks macro" +msgstr "Cura SolidWorks makrosunun yüklenmesi" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:62 +msgctxt "@description:label" +msgid "Steps:" +msgstr "Adımlar:" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:140 +msgctxt "@action:button" +msgid "" +"Open the directory\n" +"with macro and icon" +msgstr "Makro ve simge ile\ndizini açın" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:160 +msgctxt "@description:label" +msgid "Instructions:" +msgstr "Talimatlar:" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:202 +msgctxt "@action:playpause" +msgid "Play" +msgstr "Oynat" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:206 +msgctxt "@action:playpause" +msgid "Pause" +msgstr "Duraklat" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:268 +msgctxt "@action:button" +msgid "Previous Step" +msgstr "Önceki Adım" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:283 +msgctxt "@action:button" +msgid "Done" +msgstr "Bitti" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:287 +msgctxt "@action:button" +msgid "Next Step" +msgstr "Sonraki Adım" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:21 +msgctxt "@title:window" +msgid "SolidWorks plugin: Configuration" +msgstr "SolidWorks eklentisi: Yapılandırma" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:39 +msgctxt "@title:tab" +msgid "Conversion settings" +msgstr "Dönüştürme ayarları" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:66 +msgctxt "@label" +msgid "First choice:" +msgstr "İlk seçenek:" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:86 +msgctxt "@text:menu" +msgid "Latest installed version (Recommended)" +msgstr "Yüklü en son sürüm (Önerilen)" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:95 +msgctxt "@text:menu" +msgid "Default version" +msgstr "Varsayılan sürüm" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:193 +msgctxt "@label" +msgid "Show wizard before opening SolidWorks files" +msgstr "SolidWorks dosyalarını açmadan önce sihirbazı göster" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:203 +msgctxt "@label" +msgid "Automatically rotate opened file into normed orientation" +msgstr "Açılmış dosyayı normlu yöne döndür" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:210 +msgctxt "@title:tab" +msgid "Installation(s)" +msgstr "Kurulumlar" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:284 +msgctxt "@label" +msgid "COM service found" +msgstr "COM hizmeti bulundu" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:295 +msgctxt "@label" +msgid "Executable found" +msgstr "Çalıştırılabilir dosya bulundu" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:306 +msgctxt "@label" +msgid "COM starting" +msgstr "COM başlatılıyor" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:317 +msgctxt "@label" +msgid "Revision number" +msgstr "Revizyon numarası" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:328 +msgctxt "@label" +msgid "Functions available" +msgstr "Mevcut fonksiyonlar" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:341 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:264 +msgctxt "@action:button" +msgid "Save" +msgstr "Kaydet" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:117 msgctxt "@label" msgid "Color scheme" msgstr "Renk şeması" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:96 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:132 msgctxt "@label:listbox" msgid "Material Color" msgstr "Malzeme Rengi" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:100 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:136 msgctxt "@label:listbox" msgid "Line Type" msgstr "Çizgi Tipi" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:104 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:140 msgctxt "@label:listbox" msgid "Feedrate" msgstr "Besleme hızı" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:108 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:144 msgctxt "@label:listbox" msgid "Layer thickness" msgstr "Katman kalınlığı" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:148 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:185 msgctxt "@label" msgid "Compatibility Mode" msgstr "Uyumluluk Modu" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:230 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:264 msgctxt "@label" msgid "Show Travels" msgstr "Geçişleri Göster" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:236 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:270 msgctxt "@label" msgid "Show Helpers" msgstr "Yardımcıları Göster" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:242 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:276 msgctxt "@label" msgid "Show Shell" msgstr "Kabuğu Göster" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:248 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:282 msgctxt "@label" msgid "Show Infill" msgstr "Dolguyu Göster" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:297 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:330 msgctxt "@label" msgid "Only Show Top Layers" msgstr "Yalnızca Üst Katmanları Göster" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:306 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:339 msgctxt "@label" msgid "Show 5 Detailed Layers On Top" msgstr "En Üstteki 5 Ayrıntılı Katmanı Göster" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:317 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:350 msgctxt "@label" msgid "Top / Bottom" msgstr "Üst / Alt" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:321 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:354 msgctxt "@label" msgid "Inner Wall" msgstr "İç Duvar" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:378 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:410 msgctxt "@label" msgid "min" msgstr "min" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:420 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:452 msgctxt "@label" msgid "max" msgstr "maks" @@ -1907,7 +2131,7 @@ msgctxt "@label" msgid "Settings" msgstr "Ayarlar" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:455 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:466 msgctxt "@info:tooltip" msgid "Change active post-processing scripts" msgstr "Etkin son işleme dosyalarını değiştir" @@ -1982,23 +2206,53 @@ msgctxt "@action:label" msgid "Smoothing" msgstr "Düzeltme" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:208 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:38 +msgctxt "@label" +msgid "Mesh Type" +msgstr "Ağ Tipi" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:69 +msgctxt "@label" +msgid "Normal model" +msgstr "Normal model" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:76 +msgctxt "@label" +msgid "Print as support" +msgstr "Destek olarak yazdır" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:84 +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:92 +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:100 +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:333 msgctxt "@action:button" msgid "Select settings" msgstr "Ayarları seçin" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:248 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:375 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:272 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:402 #: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:91 msgctxt "@label:textbox" msgid "Filter..." msgstr "Filtrele..." -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:296 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:426 msgctxt "@label:checkbox" msgid "Show all" msgstr "Tümünü göster" @@ -2357,66 +2611,66 @@ msgctxt "@label" msgid "Everything is in order! You're done with your CheckUp." msgstr "Her şey yolunda! Kontrol işlemini tamamladınız." -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:88 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:87 msgctxt "@label:MonitorStatus" msgid "Not connected to a printer" msgstr "Yazıcıya bağlı değil" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:90 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:89 msgctxt "@label:MonitorStatus" msgid "Printer does not accept commands" msgstr "Yazıcı komutları kabul etmiyor" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:96 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:95 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:194 msgctxt "@label:MonitorStatus" msgid "In maintenance. Please check the printer" msgstr "Bakımda. Lütfen yazıcıyı kontrol edin" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:103 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:102 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:184 msgctxt "@label:MonitorStatus" msgid "Printing..." msgstr "Yazdırılıyor..." -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:106 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:105 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:186 msgctxt "@label:MonitorStatus" msgid "Paused" msgstr "Duraklatıldı" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:109 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:108 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:188 msgctxt "@label:MonitorStatus" msgid "Preparing..." msgstr "Hazırlanıyor..." -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:111 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:110 msgctxt "@label:MonitorStatus" msgid "Please remove the print" msgstr "Lütfen yazıcıyı çıkarın " -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:237 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:241 msgctxt "@label:" msgid "Resume" msgstr "Devam et" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:241 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:245 msgctxt "@label:" msgid "Pause" msgstr "Durdur" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:270 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:274 msgctxt "@label:" msgid "Abort Print" msgstr "Yazdırmayı Durdur" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:280 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:284 msgctxt "@window:title" msgid "Abort print" msgstr "Yazdırmayı durdur" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:282 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:286 msgctxt "@label" msgid "Are you sure you want to abort the print?" msgstr "Yazdırmayı iptal etmek istediğinizden emin misiniz?" @@ -2449,19 +2703,19 @@ msgid "Customized" msgstr "Özelleştirilmiş" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:157 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:593 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:595 msgctxt "@option:discardOrKeep" msgid "Always ask me this" msgstr "Her zaman sor" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:158 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:594 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:596 msgctxt "@option:discardOrKeep" msgid "Discard and never ask again" msgstr "İptal et ve bir daha sorma" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:159 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:595 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:597 msgctxt "@option:discardOrKeep" msgid "Keep and never ask again" msgstr "Kaydet ve bir daha sorma" @@ -2496,72 +2750,72 @@ msgctxt "@label" msgid "Brand" msgstr "Marka" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:92 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:88 msgctxt "@label" msgid "Material Type" msgstr "Malzeme Türü" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:105 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:97 msgctxt "@label" msgid "Color" msgstr "Renk" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:139 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:141 msgctxt "@label" msgid "Properties" msgstr "Özellikler" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:141 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:143 msgctxt "@label" msgid "Density" msgstr "Yoğunluk" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:156 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:158 msgctxt "@label" msgid "Diameter" msgstr "Çap" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:185 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:187 msgctxt "@label" msgid "Filament Cost" msgstr "Filaman masrafı" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:201 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:203 msgctxt "@label" msgid "Filament weight" msgstr "Filaman ağırlığı" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:218 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:220 msgctxt "@label" msgid "Filament length" msgstr "Filaman uzunluğu" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:227 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:229 msgctxt "@label" msgid "Cost per Meter" msgstr "Metre başına maliyet" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:241 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:243 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/MaterialView.qml:248 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:250 msgctxt "@label" msgid "Unlink Material" msgstr "Malzemeyi Ayır" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:259 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:261 msgctxt "@label" msgid "Description" msgstr "Tanım" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:272 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:274 msgctxt "@label" msgid "Adhesion Information" msgstr "Yapışma Bilgileri" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:298 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:300 msgctxt "@label" msgid "Print settings" msgstr "Yazdırma ayarları" @@ -2602,7 +2856,7 @@ msgid "Unit" msgstr "Birim" #: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:14 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:439 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:509 msgctxt "@title:tab" msgid "General" msgstr "Genel" @@ -2617,230 +2871,255 @@ msgctxt "@label" msgid "Language:" msgstr "Dil:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:205 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:207 msgctxt "@label" msgid "Currency:" msgstr "Para Birimi:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:219 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:221 msgctxt "@label" msgid "Theme:" msgstr "Tema:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:279 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:281 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:296 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:298 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:304 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:306 msgctxt "@option:check" msgid "Slice automatically" msgstr "Otomatik olarak dilimle" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:318 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:320 msgctxt "@label" msgid "Viewport behavior" msgstr "Görünüm şekli" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:326 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:328 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:335 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:337 msgctxt "@option:check" msgid "Display overhang" msgstr "Dışarıda kalan alanı göster" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:342 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:344 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:347 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:349 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:356 +#: /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:361 +#: /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:370 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:372 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:375 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:377 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:384 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:386 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:389 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:391 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:397 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:399 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:402 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:404 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:414 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:416 msgctxt "@info:tooltip" msgid "Show caution message in gcode reader." msgstr "Gcode okuyucuda uyarı mesajı göster." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:423 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:425 msgctxt "@option:check" msgid "Caution message in gcode reader" msgstr "Gcode okuyucuda uyarı mesajı" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:430 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:432 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:435 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:437 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:451 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:453 msgctxt "@label" msgid "Opening and saving files" msgstr "Dosyaların açılması ve kaydedilmesi" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:457 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:459 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:462 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:464 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:473 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:478 msgctxt "@option:check" msgid "Scale extremely small models" msgstr "Çok küçük modelleri ölçeklendirin" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:485 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:487 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:490 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:492 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:499 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:501 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:503 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:505 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:512 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:514 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:520 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:522 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:533 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:535 msgctxt "@option:openProject" msgid "Always ask" msgstr "Her zaman sor" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:534 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:536 msgctxt "@option:openProject" msgid "Always open as a project" msgstr "Her zaman proje olarak aç" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:535 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:537 msgctxt "@option:openProject" msgid "Always import models" msgstr "Her zaman modelleri içe aktar" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:571 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:573 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:580 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:582 msgctxt "@label" msgid "Override Profile" msgstr "Profilin Üzerine Yaz" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:629 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:631 msgctxt "@label" msgid "Privacy" msgstr "Gizlilik" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:636 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:638 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:641 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:643 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:651 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:653 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:656 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:658 msgctxt "@option:check" msgid "Send (anonymous) print information" msgstr "(Anonim) yazdırma bilgisi gönder" +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:674 +msgctxt "@label" +msgid "Experimental" +msgstr "Deneysel" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:680 +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:685 +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/GeneralPage.qml:694 +msgctxt "@info:tooltip" +msgid "Should newly loaded models be arranged on the build plate? Used in conjunction with multi build plate (EXPERIMENTAL)" +msgstr "Yeni yüklenen modeller yapılı levhaya mı yerleştirilsin? Çok yapılı levha ile birlikte kullanılır (DENEYSEL)" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:699 +msgctxt "@option:check" +msgid "Do not arrange objects on load" +msgstr "Yüklemenin ardından nesneleri yerleştirme" + #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:444 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:514 msgctxt "@title:tab" msgid "Printers" msgstr "Yazıcılar" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:37 #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:51 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:137 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:138 msgctxt "@action:button" msgid "Activate" msgstr "Etkinleştir" @@ -2883,7 +3162,7 @@ msgid "Waiting for a printjob" msgstr "Yazdırma işlemi bekleniyor" #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:448 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:518 msgctxt "@title:tab" msgid "Profiles" msgstr "Profiller" @@ -2909,13 +3188,13 @@ msgid "Duplicate" msgstr "Çoğalt" #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:113 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:201 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:182 msgctxt "@action:button" msgid "Import" msgstr "İçe aktar" #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:119 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:212 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:193 msgctxt "@action:button" msgid "Export" msgstr "Dışa aktar" @@ -2981,7 +3260,7 @@ msgid "Export Profile" msgstr "Profili Dışa Aktar" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:446 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:516 msgctxt "@title:tab" msgid "Materials" msgstr "Malzemeler" @@ -2996,60 +3275,60 @@ msgctxt "@action:label %1 is printer name" msgid "Printer: %1" msgstr "Yazıcı: %1" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:149 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:150 msgctxt "@action:button" msgid "Create" msgstr "Oluştur" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:168 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:160 msgctxt "@action:button" msgid "Duplicate" msgstr "Çoğalt" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:311 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:319 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:298 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:306 msgctxt "@title:window" msgid "Import Material" msgstr "Malzemeyi İçe Aktar" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:320 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:307 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/MaterialsPage.qml:324 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:311 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/MaterialsPage.qml:343 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:358 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:329 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:344 msgctxt "@title:window" msgid "Export Material" msgstr "Malzemeyi Dışa Aktar" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:362 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:348 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/MaterialsPage.qml:368 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:354 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ı" #: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:18 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:793 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:869 msgctxt "@title:window" msgid "Add Printer" msgstr "Yazıcı Ekle" -#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:185 +#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:194 msgctxt "@label" msgid "Printer Name:" msgstr "Yazıcı Adı:" -#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:208 +#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:217 msgctxt "@action:button" msgid "Add Printer" msgstr "Yazıcı Ekle" @@ -3176,12 +3455,7 @@ msgctxt "@label" msgid "Profile:" msgstr "Profil:" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:66 -msgctxt "@" -msgid "No Profile Available" -msgstr "Hiçbir Profil Yok" - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:104 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:102 msgctxt "@tooltip" msgid "" "Some setting/override values are different from the values stored in the profile.\n" @@ -3189,37 +3463,37 @@ msgid "" "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." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:152 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:150 msgctxt "@label:textbox" msgid "Search..." msgstr "Ara..." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:483 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:482 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:498 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:497 msgctxt "@action:menu" msgid "Hide this setting" msgstr "Bu ayarı gizle" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:508 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:507 msgctxt "@action:menu" msgid "Don't show this setting" msgstr "Bu ayarı gösterme" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:512 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:511 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:531 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:530 msgctxt "@action:menu" msgid "Configure setting visiblity..." msgstr "Görünürlük ayarını yapılandır..." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingCategory.qml:123 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingCategory.qml:250 msgctxt "@label" msgid "" "Some hidden settings use values different from their normal calculated value.\n" @@ -3227,27 +3501,27 @@ msgid "" "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." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:62 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:61 msgctxt "@label Header for list of settings." msgid "Affects" msgstr "Etkileri" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:67 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:66 msgctxt "@label Header for list of settings." msgid "Affected By" msgstr ".........den etkilenir" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:157 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:156 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 ekstruderler arasında kullanılır. Bu ayarı değiştirmek tüm ekstruderler için değeri değiştirecektir." +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:160 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:159 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:186 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:190 msgctxt "@label" msgid "" "This setting has a value that is different from the profile.\n" @@ -3255,7 +3529,7 @@ msgid "" "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." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:284 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:288 msgctxt "@label" msgid "" "This setting is normally calculated, but it currently has an absolute value set.\n" @@ -3263,71 +3537,71 @@ msgid "" "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." -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:120 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:128 msgctxt "@label:listbox" msgid "Print Setup" msgstr "Yazıcı Ayarları" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:120 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:128 msgctxt "@label:listbox" msgid "" "Print Setup disabled\n" "G-code files cannot be modified" msgstr "Yazdırma Ayarı devre dışı\nG-code dosyaları üzerinde değişiklik yapılamaz" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:336 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:342 msgctxt "@label Hours and minutes" msgid "00h 00min" msgstr "00sa 00dk" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:354 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:359 msgctxt "@tooltip" -msgid "Time specification
      " -msgstr "Zaman koşulları
      " +msgid "Time specification" +msgstr "Zaman Özellikleri" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:429 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:441 msgctxt "@label" msgid "Cost specification" msgstr "Maliyet koşulları" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:434 -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:445 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:446 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:455 msgctxt "@label m for meter" msgid "%1m" msgstr "%1 m" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:435 -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:446 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:447 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:456 msgctxt "@label g for grams" msgid "%1g" msgstr "%1 g" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:444 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:454 msgctxt "@label" msgid "Total:" msgstr "Toplam:" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:498 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:504 msgctxt "@label Print estimates: m for meters, g for grams, %4 is currency and %3 is print cost" msgid "%1m / ~ %2g / ~ %4 %3" msgstr "%1 m / ~ %2 g / ~ %4 %3" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:503 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:509 msgctxt "@label Print estimates: m for meters, g for grams" msgid "%1m / ~ %2g" msgstr "%1 m / ~ %2 g" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:586 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:591 msgctxt "@tooltip" msgid "Recommended Print Setup

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

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

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

      Dilimleme işleminin her bir bölümünü detaylıca kontrol ederek yazdırın." -#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:49 +#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:50 msgctxt "@title:menuitem %1 is the automatically selected material" msgid "Automatic: %1" msgstr "Otomatik: %1" @@ -3337,6 +3611,16 @@ msgctxt "@title:menu menubar:toplevel" msgid "&View" msgstr "&Görünüm" +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:37 +msgctxt "@action:inmenu menubar:view" +msgid "&Camera position" +msgstr "&Kamera konumu" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:52 +msgctxt "@action:inmenu menubar:view" +msgid "&Build plate" +msgstr "&Yapı levhası" + #: /home/ruben/Projects/Cura/resources/qml/Menus/NozzleMenu.qml:40 msgctxt "@title:menuitem %1 is the nozzle currently loaded in the printer" msgid "Automatic: %1" @@ -3349,14 +3633,14 @@ msgid_plural "Print Selected Models With:" msgstr[0] "Seçili Modeli Şununla Yazdır:" msgstr[1] "Seçili Modelleri Şununla Yazdır:" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ContextMenu.qml:83 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ContextMenu.qml:114 msgctxt "@title:window" 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/Menus/ContextMenu.qml:108 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ContextMenu.qml:139 msgctxt "@label" msgid "Number of Copies" msgstr "Kopya Sayısı" @@ -3372,7 +3656,7 @@ msgid "No printer connected" msgstr "Yazıcı bağlı değil" #: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:90 -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:138 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:139 msgctxt "@label" msgid "Extruder" msgstr "Ekstrüder" @@ -3482,254 +3766,294 @@ msgctxt "@label" msgid "Estimated time left" msgstr "Kalan tahmini süre" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:72 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:79 msgctxt "@action:inmenu" msgid "Toggle Fu&ll Screen" msgstr "Tam Ekrana Geç" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:79 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:86 msgctxt "@action:inmenu menubar:edit" msgid "&Undo" msgstr "&Geri Al" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:89 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:96 msgctxt "@action:inmenu menubar:edit" msgid "&Redo" msgstr "&Yinele" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:99 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:106 msgctxt "@action:inmenu menubar:file" msgid "&Quit" msgstr "&Çıkış" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:107 -msgctxt "@action:inmenu menubar:view" -msgid "&Reset camera position" -msgstr "&Kamera konumunu sıfırla" - #: /home/ruben/Projects/Cura/resources/qml/Actions.qml:114 +msgctxt "@action:inmenu menubar:view" +msgid "&3D View" +msgstr "&3 Boyutlu Görünüm" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:121 +msgctxt "@action:inmenu menubar:view" +msgid "&Front View" +msgstr "&Önden Görünüm" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:128 +msgctxt "@action:inmenu menubar:view" +msgid "&Top View" +msgstr "&Yukarıdan Görünüm" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:135 +msgctxt "@action:inmenu menubar:view" +msgid "&Left Side View" +msgstr "&Sol Taraftan Görünüm" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:142 +msgctxt "@action:inmenu menubar:view" +msgid "&Right Side View" +msgstr "&Sağ Taraftan Görünüm" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:149 msgctxt "@action:inmenu" msgid "Configure Cura..." msgstr "Cura’yı yapılandır..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:121 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:156 msgctxt "@action:inmenu menubar:printer" msgid "&Add Printer..." msgstr "&Yazıcı Ekle..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:127 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:162 msgctxt "@action:inmenu menubar:printer" msgid "Manage Pr&inters..." msgstr "Yazıcıları Yönet..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:134 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:169 msgctxt "@action:inmenu" msgid "Manage Materials..." msgstr "Malzemeleri Yönet..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:142 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:177 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:150 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:185 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:162 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:197 msgctxt "@action:inmenu menubar:profile" msgid "&Create profile from current settings/overrides..." msgstr "&Geçerli ayarlardan/geçersiz kılmalardan profil oluştur..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:168 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:203 msgctxt "@action:inmenu menubar:profile" msgid "Manage Profiles..." msgstr "Profilleri Yönet..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:175 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:210 msgctxt "@action:inmenu menubar:help" msgid "Show Online &Documentation" msgstr "Çevrimiçi Belgeleri Göster" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:183 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:218 msgctxt "@action:inmenu menubar:help" msgid "Report a &Bug" msgstr "Hata Bildir" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:191 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:226 msgctxt "@action:inmenu menubar:help" msgid "&About..." msgstr "&Hakkında..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:198 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:233 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:208 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:243 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:217 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:252 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:226 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:261 msgctxt "@action:inmenu" msgid "Delete Model" msgstr "Modeli Sil" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:234 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:269 msgctxt "@action:inmenu" msgid "Ce&nter Model on Platform" msgstr "Modeli Platformda Ortala" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:240 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:275 msgctxt "@action:inmenu menubar:edit" msgid "&Group Models" msgstr "Modelleri Gruplandır" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:250 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:295 msgctxt "@action:inmenu menubar:edit" msgid "Ungroup Models" msgstr "Model Grubunu Çöz" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:260 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:305 msgctxt "@action:inmenu menubar:edit" msgid "&Merge Models" msgstr "&Modelleri Birleştir" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:270 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:315 msgctxt "@action:inmenu" msgid "&Multiply Model..." msgstr "&Modeli Çoğalt..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:277 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:322 msgctxt "@action:inmenu menubar:edit" msgid "&Select All Models" msgstr "&Tüm modelleri Seç" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:287 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:332 msgctxt "@action:inmenu menubar:edit" msgid "&Clear Build Plate" msgstr "&Yapı Levhasını Temizle" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:297 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:342 msgctxt "@action:inmenu menubar:file" msgid "Re&load All Models" msgstr "Tüm Modelleri Yeniden Yükle" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:306 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:351 +msgctxt "@action:inmenu menubar:edit" +msgid "Arrange All Models To All Build Plates" +msgstr "Tüm Modelleri Tüm Yapı Levhalarına Yerleştir" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:358 msgctxt "@action:inmenu menubar:edit" msgid "Arrange All Models" msgstr "Tüm Modelleri Düzenle" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:314 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:366 msgctxt "@action:inmenu menubar:edit" msgid "Arrange Selection" msgstr "Seçimi Düzenle" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:321 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:373 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:328 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:380 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:335 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:387 msgctxt "@action:inmenu menubar:file" msgid "&Open File(s)..." msgstr "&Dosya Aç..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:343 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:395 msgctxt "@action:inmenu menubar:file" msgid "&New Project..." msgstr "&Yeni Proje..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:350 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:402 msgctxt "@action:inmenu menubar:help" msgid "Show Engine &Log..." msgstr "Motor Günlüğünü Göster..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:358 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:410 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:365 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:417 msgctxt "@action:menu" msgid "Configure setting visibility..." msgstr "Görünürlük ayarını yapılandır..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:372 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:424 msgctxt "@action:menu" msgid "Browse plugins..." msgstr "Eklentilere göz at..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:379 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:431 msgctxt "@action:menu" msgid "Installed plugins..." msgstr "Yüklü eklentiler..." -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:28 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:438 +msgctxt "@action:inmenu menubar:view" +msgid "Expand/Collapse Sidebar" +msgstr "Kenar Çubuğunu Genişlet/Daralt" + +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:26 msgctxt "@label:PrintjobStatus" msgid "Please load a 3D model" msgstr "Lütfen bir 3D model yükleyin" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:34 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:36 msgctxt "@label:PrintjobStatus" msgid "Ready to slice" msgstr "Dilimlemeye hazır" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:36 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:38 msgctxt "@label:PrintjobStatus" msgid "Slicing..." msgstr "Dilimleniyor..." -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:38 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:40 msgctxt "@label:PrintjobStatus %1 is target operation" msgid "Ready to %1" msgstr "%1 Hazır" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:40 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:42 msgctxt "@label:PrintjobStatus" msgid "Unable to Slice" msgstr "Dilimlenemedi" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:42 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:44 msgctxt "@label:PrintjobStatus" msgid "Slicing unavailable" msgstr "Dilimleme kullanılamıyor" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:162 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:171 +msgctxt "@info:tooltip" +msgid "Slice current printjob" +msgstr "Mevcut yazdırma görevini dilimlere ayır" + +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:171 +msgctxt "@info:tooltip" +msgid "Cancel slicing process" +msgstr "Dilimleme sürecini iptal et" + +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:183 msgctxt "@label:Printjob" msgid "Prepare" msgstr "Hazırla" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:162 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:183 msgctxt "@label:Printjob" msgid "Cancel" msgstr "İptal Et" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:302 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:317 msgctxt "@info:tooltip" msgid "Select the active output device" msgstr "Etkin çıkış aygıtını seçin" #: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:19 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:620 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:696 msgctxt "@title:window" msgid "Open file(s)" msgstr "Dosya aç" @@ -3749,114 +4073,114 @@ msgctxt "@title:window" msgid "Ultimaker Cura" msgstr "Ultimaker Cura" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:81 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:102 msgctxt "@title:menu menubar:toplevel" msgid "&File" msgstr "&Dosya" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:98 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:119 msgctxt "@action:inmenu menubar:file" msgid "&Save Selection to File" msgstr "&Seçimi Dosyaya Kaydet" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:107 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:128 msgctxt "@title:menu menubar:file" msgid "Save &As..." msgstr "&Farklı Kaydet" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:118 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:139 msgctxt "@title:menu menubar:file" -msgid "Save project" -msgstr "Projeyi kaydet" +msgid "Save &Project..." +msgstr "Kaydet&Projelendir..." -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:141 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:162 msgctxt "@title:menu menubar:toplevel" msgid "&Edit" msgstr "&Düzenle" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:158 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:179 msgctxt "@title:menu" msgid "&View" msgstr "&Görünüm" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:163 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:184 msgctxt "@title:menu" msgid "&Settings" msgstr "&Ayarlar" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:165 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:186 msgctxt "@title:menu menubar:toplevel" msgid "&Printer" msgstr "&Yazıcı" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:175 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:187 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:196 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:208 msgctxt "@title:menu" msgid "&Material" msgstr "&Malzeme" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:176 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:188 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:197 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:209 msgctxt "@title:menu" msgid "&Profile" msgstr "&Profil" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:180 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:201 msgctxt "@action:inmenu" msgid "Set as Active Extruder" msgstr "Etkin Ekstruder olarak ayarla" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:198 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:219 msgctxt "@title:menu menubar:toplevel" msgid "E&xtensions" msgstr "Uzantılar" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:232 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:253 msgctxt "@title:menu menubar:toplevel" msgid "P&lugins" msgstr "&Eklentiler" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:240 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:261 msgctxt "@title:menu menubar:toplevel" msgid "P&references" msgstr "Tercihler" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:248 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:269 msgctxt "@title:menu menubar:toplevel" msgid "&Help" msgstr "&Yardım" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:330 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:351 msgctxt "@action:button" msgid "Open File" msgstr "Dosya Aç" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:442 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:512 msgctxt "@title:tab" msgid "Settings" msgstr "Ayarlar" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:478 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:554 msgctxt "@title:window" msgid "New project" msgstr "Yeni proje" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:479 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:555 msgctxt "@info:question" msgid "Are you sure you want to start a new project? This will clear the build plate and any unsaved settings." msgstr "Yeni bir proje başlatmak istediğinizden emin misiniz? Bu işlem yapı levhasını ve kaydedilmemiş tüm ayarları silecektir." -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:721 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:797 msgctxt "@window:title" msgid "Install Plugin" msgstr "Eklenti Kur" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:728 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:804 msgctxt "@title:window" msgid "Open File(s)" msgstr "Dosya Aç" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:731 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:807 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." @@ -3881,97 +4205,82 @@ msgctxt "@action:label" msgid "Don't show project summary on save again" msgstr "Kaydederken proje özetini bir daha gösterme" -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:264 -msgctxt "@action:button" -msgid "Save" -msgstr "Kaydet" - -#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:74 -msgctxt "@title:tab" -msgid "Prepare" -msgstr "Hazırla" - -#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:100 -msgctxt "@title:tab" -msgid "Monitor" -msgstr "İzle" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:163 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:175 msgctxt "@label" msgid "Layer Height" msgstr "Katman Yüksekliği" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:323 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:345 msgctxt "@tooltip" msgid "A custom profile is currently active. To enable the quality slider, choose a default quality profile in Custom tab" msgstr "Özel bir profil şu anda aktif. Kalite kaydırıcısını etkinleştirmek için Özel sekmesinde varsayılan bir kalite seçin" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:340 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:362 msgctxt "@label" msgid "Print Speed" msgstr "Yazdırma Hızı" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:350 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:374 msgctxt "@label" msgid "Slower" msgstr "Daha yavaş" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:361 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:385 msgctxt "@label" msgid "Faster" msgstr "Daha Hızlı" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:388 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:423 msgctxt "@tooltip" msgid "You have modified some profile settings. If you want to change these go to custom mode." msgstr "Bazı profil ayarlarını değiştirdiniz. Bunları değişiklikleri kaydetmek istiyorsanız, özel moda gidin." -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:413 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:446 msgctxt "@label" msgid "Infill" msgstr "Dolgu" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:633 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:668 msgctxt "@label" msgid "Gradual infill will gradually increase the amount of infill towards the top." msgstr "Kademeli dolgu, yukarıya doğru dolgu miktarını kademeli olarak yükselecektir." -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:645 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:680 msgctxt "@label" msgid "Enable gradual" msgstr "Kademeli özelliği etkinleştir" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:712 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:747 msgctxt "@label" msgid "Generate Support" msgstr "Oluşturma Desteği" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:746 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:781 msgctxt "@label" msgid "Generate structures to support parts of the model which have overhangs. Without these structures, such parts would collapse during printing." msgstr "Modellerin askıda kalan kısımlarını destekleyen yapılar oluşturun. Bu yapılar olmadan, yazdırma sırasında söz konusu kısımlar düşebilir." -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:764 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:799 msgctxt "@label" msgid "Support Extruder" msgstr "Destek Ekstrüderi" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:816 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:851 msgctxt "@label" msgid "Select which extruder to use for support. This will build up supporting structures below the model to prevent the model from sagging or printing in mid air." msgstr "Destek için kullanacağınız ekstruderi seçin. Bu, modelin havadayken düşmesini veya yazdırılmasını önlemek için modelin altındaki destekleyici yapıları güçlendirir." -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:839 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:874 msgctxt "@label" msgid "Build Plate Adhesion" msgstr "Yapı Levhası Yapıştırması" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:894 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:929 msgctxt "@label" msgid "Enable printing a brim or raft. This will add a flat area around or under your object which is easy to cut off afterwards." msgstr "Bir kenar veya radye yazdırın. Bu nesnenizin etrafına veya altına daha sonra kesilmesi kolay olan düz bir alan sağlayacak." -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:934 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:969 msgctxt "@label" msgid "Need help improving your prints?
      Read the Ultimaker Troubleshooting Guides" msgstr "Yazıcı çıktılarınızı iyileştirmek için yardıma mı ihtiyacınız var?
      Ultimaker Sorun Giderme Kılavuzlarını okuyun" @@ -3988,17 +4297,22 @@ msgctxt "@title:window" msgid "Open project file" msgstr "Proje dosyası aç" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:72 +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:93 msgctxt "@text:window" msgid "This is a Cura project file. Would you like to open it as a project or import the models from it?" msgstr "Bu bir Cura proje dosyasıdır. Bir proje olarak açmak mı yoksa içindeki modelleri içe aktarmak mı istiyorsunuz?" #: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:103 +msgctxt "@text:window" +msgid "Remember my choice" +msgstr "Seçimimi hatırla" + +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:122 msgctxt "@action:button" msgid "Open as project" msgstr "Proje olarak aç" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:122 +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:131 msgctxt "@action:button" msgid "Import models" msgstr "Modelleri içe aktar" @@ -4008,21 +4322,36 @@ msgctxt "@title:window" msgid "Engine Log" msgstr "Motor Günlüğü" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:242 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:245 msgctxt "@label" msgid "Material" msgstr "Malzeme" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:349 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:352 msgctxt "@label" -msgid "Check compatibility" -msgstr "Uyumluluğu kontrol et" +msgid "Check compatibility" +msgstr "Uyumluluğu Kontrol Et" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:369 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:372 msgctxt "@tooltip" msgid "Click to check the material compatibility on Ultimaker.com." msgstr "Malzemenin uyumluluğunu Ultimaker.com üzerinden kontrol etmek için tıklayın." +#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:211 +msgctxt "@option:check" +msgid "See only current build plate" +msgstr "Sadece mevcut yapı levhasını görüntüle" + +#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:227 +msgctxt "@action:button" +msgid "Arrange to all build plates" +msgstr "Tüm yapı levhalarına yerleştir" + +#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:247 +msgctxt "@action:button" +msgid "Arrange current build plate" +msgstr "Sadece mevcut yapı levhasına yerleştir" + #: MachineSettingsAction/plugin.json msgctxt "description" msgid "Provides a way to change machine settings (such as build volume, nozzle size, etc)" @@ -4113,6 +4442,26 @@ msgctxt "name" msgid "USB printing" msgstr "USB yazdırma" +#: PrepareStage/plugin.json +msgctxt "description" +msgid "Provides a prepare stage in Cura." +msgstr "Cura’da hazırlık aşaması sunar." + +#: PrepareStage/plugin.json +msgctxt "name" +msgid "Prepare Stage" +msgstr "Hazırlık Aşaması" + +#: CuraLiveScriptingPlugin/plugin.json +msgctxt "description" +msgid "Provides an edit window for direct script editing." +msgstr "Doğrudan komut dosyası düzenlemek için düzenleme penceresi sunar." + +#: CuraLiveScriptingPlugin/plugin.json +msgctxt "name" +msgid "Live scripting tool" +msgstr "Canlı komut dosyası aracı" + #: RemovableDriveOutputDevice/plugin.json msgctxt "description" msgid "Provides removable drive hotplugging and writing support." @@ -4133,6 +4482,16 @@ msgctxt "name" msgid "UM3 Network Connection" msgstr "UM3 Ağ Bağlantısı" +#: MonitorStage/plugin.json +msgctxt "description" +msgid "Provides a monitor stage in Cura." +msgstr "Cura’da görüntüleme aşaması sunar." + +#: MonitorStage/plugin.json +msgctxt "name" +msgid "Monitor Stage" +msgstr "Görüntüleme Aşaması" + #: FirmwareUpdateChecker/plugin.json msgctxt "description" msgid "Checks for firmware updates." @@ -4145,8 +4504,8 @@ msgstr "Bellenim Güncelleme Denetleyicisi" #: CuraSolidWorksPlugin/plugin.json msgctxt "description" -msgid "Gives you the possibility to open certain files via SolidWorks itself. These are then converted and loaded into Cura" -msgstr "Belirli dosyaları SolidWorks üzerinden açma imkanı sağlar. Bu dosyalar dönüştürülür ve Cura’ya yüklenir" +msgid "Gives you the possibility to open certain files using SolidWorks itself. Conversion is done by this plugin and additional optimizations." +msgstr "Bazı dosyaları SolidWorks kullanarak açma imkanı sağlar. Dönüştürme, bu eklenti ve ek optimizasyonlar tarafından gerçekleştirilir." #: CuraSolidWorksPlugin/plugin.json msgctxt "name" @@ -4213,6 +4572,16 @@ msgctxt "name" msgid "Legacy Cura Profile Reader" msgstr "Eski Cura Profil Okuyucu" +#: CuraBlenderPlugin/plugin.json +msgctxt "description" +msgid "Helps to open Blender files directly in Cura." +msgstr "Cura’da Blender dosyalarını doğrudan açmanıza yardımcı olur." + +#: CuraBlenderPlugin/plugin.json +msgctxt "name" +msgid "Blender Integration (experimental)" +msgstr "Blender Entegrasyonu (deneysel)" + #: GCodeProfileReader/plugin.json msgctxt "description" msgid "Provides support for importing profiles from g-code files." @@ -4373,6 +4742,16 @@ 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." @@ -4413,6 +4792,156 @@ msgctxt "name" msgid "Cura Profile Reader" msgstr "Cura Profil Okuyucu" +#~ msgctxt "@label" +#~ msgid "Unknown" +#~ msgstr "Bilinmiyor" + +#~ msgctxt "@info:status" +#~ msgid "Errors appeared while opening your SolidWorks file! Please check, whether it is possible to open your file in SolidWorks itself without any problems as well!" +#~ msgstr "SolidWorks dosyanızı açarken hata meydana geldi! Lütfen dosyanızın SolidWorks’te sorunsuz açılıp açılmadığını kontrol edin!" + +#~ msgctxt "@info:status" +#~ msgid "Error while starting %s!" +#~ msgstr "%s başlatılırken hata oluştu!" + +#~ msgctxt "@item:inlistbox" +#~ msgid "Simulation view" +#~ msgstr "Simülasyon görünümü" + +#~ msgctxt "@info" +#~ msgid "Cura collects anonymised slicing statistics. You can disable this in the preferences." +#~ msgstr "Cura anonim dilimleme istatistiklerini toplar. Bu özelliği tercihlerden devre dışı bırakabilirsiniz." + +#~ msgctxt "@action:button" +#~ msgid "Dismiss" +#~ msgstr "Son Ver" + +#~ msgctxt "@menuitem" +#~ msgid "Global" +#~ msgstr "Genel" + +#~ msgctxt "@label crash message" +#~ msgid "" +#~ "

      A fatal exception has occurred. 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 "" +#~ "

      Ç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" +#~ " " + +#~ msgctxt "@label Cura version" +#~ msgid "Cura version: {version}
      " +#~ msgstr "Cura sürümü: {version}
      " + +#~ msgctxt "@label Platform" +#~ msgid "Platform: {platform}
      " +#~ msgstr "Platform: {platform}
      " + +#~ msgctxt "@label Qt version" +#~ msgid "Qt version: {qt}
      " +#~ msgstr "Qt sürümü: {qt}
      " + +#~ msgctxt "@label PyQt version" +#~ msgid "PyQt version: {pyqt}
      " +#~ msgstr "PyQt sürümü: {pyqt}
      " + +#~ msgctxt "@label OpenGL" +#~ msgid "OpenGL: {opengl}
      " +#~ msgstr "OpenGL: {opengl}
      " + +#~ msgctxt "@title:groupbox" +#~ msgid "Exception traceback" +#~ msgstr "İstisna geri izleme" + +#~ msgctxt "@label" +#~ msgid "Material diameter" +#~ msgstr "Malzeme çapı" + +#~ msgctxt "@label" +#~ msgid "Ultimaker 3" +#~ msgstr "Ultimaker 3" + +#~ msgctxt "@label" +#~ msgid "Ultimaker 3 Extended" +#~ msgstr "Genişletilmiş Ultimaker 3" + +#~ msgctxt "@title:window" +#~ msgid "Cura SolidWorks Plugin Configuration" +#~ msgstr "Cura SolidWorks Eklenti Yapılandırması" + +#~ msgctxt "@action:label" +#~ msgid "Default quality of the exported STL:" +#~ msgstr "Dışa aktarılan STL dosyasının varsayılan kalitesi:" + +#~ msgctxt "@option:curaSolidworksStlQuality" +#~ msgid "Always ask" +#~ msgstr "Her zaman sor" + +#~ msgctxt "@option:curaSolidworksStlQuality" +#~ msgid "Always use Fine quality" +#~ msgstr "Her zaman İnce kalite modunu kullan" + +#~ msgctxt "@option:curaSolidworksStlQuality" +#~ msgid "Always use Coarse quality" +#~ msgstr "Her zaman Düşük kalite modunu kullan" + +#~ msgctxt "@title:window" +#~ msgid "Import SolidWorks File as STL..." +#~ msgstr "SolidWorks Dosyasını STL olarak içe aktar..." + +#~ msgctxt "@info:tooltip" +#~ msgid "Quality of the Exported STL" +#~ msgstr "Dışa aktarılan STL dosyasının kalitesi" + +#~ msgctxt "@action:label" +#~ msgid "Quality" +#~ msgstr "Kalite" + +#~ msgctxt "@option:curaSolidworksStlQuality" +#~ msgid "Coarse" +#~ msgstr "Düşük" + +#~ msgctxt "@option:curaSolidworksStlQuality" +#~ msgid "Fine" +#~ msgstr "İnce" + +#~ msgctxt "@" +#~ msgid "No Profile Available" +#~ msgstr "Hiçbir Profil Yok" + +#~ 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 ekstruderler arasında kullanılır. Bu ayarı değiştirmek tüm ekstruderler için değeri değiştirecektir." + +#~ msgctxt "@tooltip" +#~ msgid "Time specification
      " +#~ msgstr "Zaman koşulları
      " + +#~ msgctxt "@action:inmenu menubar:view" +#~ msgid "&Reset camera position" +#~ msgstr "&Kamera konumunu sıfırla" + +#~ msgctxt "@title:menu menubar:file" +#~ msgid "Save project" +#~ msgstr "Projeyi kaydet" + +#~ msgctxt "@title:tab" +#~ msgid "Prepare" +#~ msgstr "Hazırla" + +#~ msgctxt "@title:tab" +#~ msgid "Monitor" +#~ msgstr "İzle" + +#~ msgctxt "@label" +#~ msgid "Check compatibility" +#~ msgstr "Uyumluluğu kontrol et" + +#~ msgctxt "description" +#~ msgid "Gives you the possibility to open certain files via SolidWorks itself. These are then converted and loaded into Cura" +#~ msgstr "Belirli dosyaları SolidWorks üzerinden açma imkanı sağlar. Bu dosyalar dönüştürülür ve Cura’ya yüklenir" + #~ msgctxt "@label:status" #~ msgid "Blocked" #~ msgstr "Tıkalı" @@ -4433,13 +4962,9 @@ msgstr "Cura Profil Okuyucu" #~ msgid "To ensure that your {machine_name} is equipped with the latest features it is recommended to update the firmware regularly. This can be done on the {machine_name} (when connected to the network) or via USB." #~ msgstr "Makinenizin {machine_name} en son özellikler ile donanımlı olmasını sağlamak için bellenimi düzenli olarak güncellenmeniz önerilir. Bu, (ağa bağlı olduğunuzda) {machine_name} üzerinde veya USB ile gerçekleştirilebilir." -msgctxt "@item:inlistbox" -msgid "Layer view" -msgstr "Katman görünümü" - -msgctxt "@info:title" -msgid "Layer View" -msgstr "Katman Görünümü" +#~ msgctxt "@info:title" +#~ msgid "Layer View" +#~ msgstr "Katman Görünümü" #~ msgctxt "@menuitem" #~ msgid "Browse plugins" @@ -4541,9 +5066,9 @@ msgstr "Katman Görünümü" #~ msgid "Provides the Layer view." #~ msgstr "Katman görünümü sağlar." -msgctxt "name" -msgid "Layer View" -msgstr "Katman Görünümü" +#~ msgctxt "name" +#~ msgid "Layer View" +#~ msgstr "Katman Görünümü" #~ msgctxt "@item:inlistbox" #~ msgid "X-Ray" @@ -4864,9 +5389,9 @@ msgstr "Katman Görünümü" #~ msgid "Provides support for importing profiles from g-code files." #~ msgstr "G-code dosyalarından profilleri içe aktarmak için destek sağlar." -msgctxt "@label" -msgid "Layer View" -msgstr "Katman Görünümü" +#~ msgctxt "@label" +#~ msgid "Layer View" +#~ msgstr "Katman Görünümü" #~ msgctxt "@info:whatsthis" #~ msgid "Provides the Layer view." diff --git a/resources/i18n/tr_TR/fdmextruder.def.json.po b/resources/i18n/tr_TR/fdmextruder.def.json.po index 0bb7de91ac..c4ef7906ec 100644 --- a/resources/i18n/tr_TR/fdmextruder.def.json.po +++ b/resources/i18n/tr_TR/fdmextruder.def.json.po @@ -2,12 +2,12 @@ # Copyright (C) 2017 Ultimaker # This file is distributed under the same license as the Cura package. # Ruben Dulek , 2017. -# +# msgid "" msgstr "" "Project-Id-Version: Cura 3.0\n" -"Report-Msgid-Bugs-To: http://github.com/ultimaker/uranium\n" -"POT-Creation-Date: 2017-11-21 16:58+0000\n" +"Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" +"POT-Creation-Date: 2017-08-02 16:53+0000\n" "PO-Revision-Date: 2017-11-30 13:05+0100\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 f0c2bad612..aba2389cee 100644 --- a/resources/i18n/tr_TR/fdmprinter.def.json.po +++ b/resources/i18n/tr_TR/fdmprinter.def.json.po @@ -2,12 +2,12 @@ # Copyright (C) 2017 Ultimaker # This file is distributed under the same license as the Cura package. # Ruben Dulek , 2017. -# +# msgid "" msgstr "" "Project-Id-Version: Cura 3.0\n" -"Report-Msgid-Bugs-To: http://github.com/ultimaker/uranium\n" -"POT-Creation-Date: 2017-11-21 16:58+0000\n" +"Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" +"POT-Creation-Date: 2017-08-02 16:53+0000\n" "PO-Revision-Date: 2017-11-30 13:05+0100\n" "Last-Translator: Bothof \n" "Language-Team: Turkish\n" @@ -345,6 +345,16 @@ msgctxt "machine_gcode_flavor option Repetier" msgid "Repetier" msgstr "Repetier" +#: fdmprinter.def.json +msgctxt "machine_firmware_retract label" +msgid "Firmware Retraction" +msgstr "Üretici Yazılımı Geri Çekme" + +#: fdmprinter.def.json +msgctxt "machine_firmware_retract description" +msgid "Whether to use firmware retract commands (G10/G11) instead of using the E property in G1 commands to retract the material." +msgstr "Malzemeyi geri çekmek için G1 komutlarında E özelliği yerine aygıt yazılımı çekme komutlarının (G10/G11) kullanılıp kullanılmayacağı." + #: fdmprinter.def.json msgctxt "machine_disallowed_areas label" msgid "Disallowed areas" @@ -605,31 +615,6 @@ msgctxt "layer_height_0 description" msgid "The height of the initial layer in mm. A thicker initial layer makes adhesion to the build plate easier." msgstr "İlk katmanın milimetre cinsinden yüksekliği. Kalın ilk katmanlar yapı levhasına yapışmayı kolaylaştırır." -#: fdmprinter.def.json -msgctxt "slicing_tolerance label" -msgid "Slicing Tolerance" -msgstr "Dilimleme Toleransı" - -#: fdmprinter.def.json -msgctxt "slicing_tolerance description" -msgid "How to slice layers with diagonal surfaces. The areas of a layer can be generated based on where the middle of the layer intersects the surface (Middle). Alternatively each layer can have the areas which fall inside of the volume throughout the height of the layer (Exclusive) or a layer has the areas which fall inside anywhere within the layer (Inclusive). Exclusive retains the most details, Inclusive makes for the best fit and Middle takes the least time to process." -msgstr "Çapraz yüzeylerle katman dilimleme yolları. Bir katmanın alanları katmanın ortasının yüzeyle kesiştiği yere (Ortalayıcı) göre oluşturulabilir. Diğer bir yol da her katmanın yüksekliği boyunca hacim içinde kalan alanları (Dışlayıcı) veya katmanın içinde herhangi bir yerde kalan alanları (Kapsayıcı) almasıdır. Dışlayıcı seçenek en çok ayrıntıyı tutar; Kapsayıcı seçenek en iyi şekilde oturur; Ortalayıcı ise en kısa sürede işlenir." - -#: fdmprinter.def.json -msgctxt "slicing_tolerance option middle" -msgid "Middle" -msgstr "Ortalayıcı" - -#: fdmprinter.def.json -msgctxt "slicing_tolerance option exclusive" -msgid "Exclusive" -msgstr "Dışlayıcı" - -#: fdmprinter.def.json -msgctxt "slicing_tolerance option inclusive" -msgid "Inclusive" -msgstr "Kapsayıcı" - #: fdmprinter.def.json msgctxt "line_width label" msgid "Line Width" @@ -670,16 +655,6 @@ msgctxt "wall_line_width_x description" msgid "Width of a single wall line for all wall lines except the outermost one." msgstr "En dış duvar haricindeki tüm duvar hatları için tek bir duvar hattı genişliği." -#: fdmprinter.def.json -msgctxt "roofing_line_width label" -msgid "Top Surface Skin Line Width" -msgstr "Üst Yüzey Hat Genişliği" - -#: fdmprinter.def.json -msgctxt "roofing_line_width description" -msgid "Width of a single line of the areas at the top of the print." -msgstr "Baskının üst tarafında bulunan alanlardaki tek bir hattın genişliği." - #: fdmprinter.def.json msgctxt "skin_line_width label" msgid "Top/Bottom Line Width" @@ -860,41 +835,6 @@ msgctxt "roofing_layer_count description" msgid "The number of top most skin layers. Usually only one top most layer is sufficient to generate higher quality top surfaces." msgstr "En üstteki yüzey katmanlarının sayısı. Yüksek kalitede üst yüzeyler oluşturmak için genellikle tek bir üst yüzey katmanı yeterlidir." -#: fdmprinter.def.json -msgctxt "roofing_pattern label" -msgid "Top Surface Skin Pattern" -msgstr "Üst Yüzey Şekli" - -#: fdmprinter.def.json -msgctxt "roofing_pattern description" -msgid "The pattern of the top most layers." -msgstr "En üst yüzeyin şekli." - -#: fdmprinter.def.json -msgctxt "roofing_pattern option lines" -msgid "Lines" -msgstr "Çizgiler" - -#: fdmprinter.def.json -msgctxt "roofing_pattern option concentric" -msgid "Concentric" -msgstr "Eş merkezli" - -#: fdmprinter.def.json -msgctxt "roofing_pattern option zigzag" -msgid "Zig Zag" -msgstr "Zikzak" - -#: fdmprinter.def.json -msgctxt "roofing_angles label" -msgid "Top Surface Skin Line Directions" -msgstr "Üst Yüzey Hat Yönleri" - -#: fdmprinter.def.json -msgctxt "roofing_angles description" -msgid "A list of integer line directions to use when the top surface skin layers use the lines or zig zag pattern. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the traditional default angles (45 and 135 degrees)." -msgstr "Üst yüzey katmanları çizgi veya zikzak biçimindeyken kullanılacak tam sayı hat yönü listesi. Listedeki öğeler, katmanlar ilerledikçe sıralı olarak kullanılır. Listenin sonuna ulaşıldığında tekrar başa dönülür. Liste öğeleri virgülle ayrılır ve tüm liste köşeli parantez içine alınır. Varsayılan ayar boş listedir ve geleneksel varsayılan açılar (45 ve 135 derece) kullanılır." - #: fdmprinter.def.json msgctxt "top_bottom_extruder_nr label" msgid "Top/Bottom Extruder" @@ -1025,6 +965,16 @@ msgctxt "wall_0_inset description" msgid "Inset applied to the path of the outer wall. If the outer wall is smaller than the nozzle, and printed after the inner walls, use this offset to get the hole in the nozzle to overlap with the inner walls instead of the outside of the model." msgstr "Dış duvar yoluna uygulanan ilave. Dış duvar nozülden küçükse ve iç duvardan sonra yazdırılmışsa, nozüldeki deliği modelin dış kısmı yerine iç duvarlar ile üst üste bindirmek için bu ofseti kullanın." +#: fdmprinter.def.json +msgctxt "optimize_wall_printing_order label" +msgid "Optimize Wall Printing Order" +msgstr "Duvar Yazdırma Sırasını Optimize Et" + +#: fdmprinter.def.json +msgctxt "optimize_wall_printing_order description" +msgid "Optimize the order in which walls are printed so as to reduce the number of retractions and the distance travelled. Most parts will benefit from this being enabled but some may actually take longer so please compare the print time estimates with and without optimization." +msgstr "Geri çekmelerin sayısını ve kat edilen mesafeyi azaltmak için duvarların yazdırıldığı sırayı optimize edin. Çoğu parça, bunun etkinleştirilmesinden yararlanır, ancak bazılarının yararlanması için gerçekte daha uzun bir süre gerekebilir. Bu yüzden, yazdırma süresi tahminlerini optimizasyonlu ve optimizasyonsuz olarak karşılaştırın." + #: fdmprinter.def.json msgctxt "outer_inset_first label" msgid "Outer Before Inner Walls" @@ -1095,6 +1045,16 @@ msgctxt "fill_perimeter_gaps option everywhere" msgid "Everywhere" msgstr "Her bölüm" +#: fdmprinter.def.json +msgctxt "filter_out_tiny_gaps label" +msgid "Filter Out Tiny Gaps" +msgstr "Küçük Boşlukların Filtrelenmesi" + +#: fdmprinter.def.json +msgctxt "filter_out_tiny_gaps description" +msgid "Filter out tiny gaps to reduce blobs on outside of model." +msgstr "Modelin dışındaki damlalarını azaltmak için küçük boşlukları filtreleyin." + #: fdmprinter.def.json msgctxt "fill_outline_gaps label" msgid "Print Thin Walls" @@ -1477,7 +1437,7 @@ msgstr "Dolgu X Kayması" #: fdmprinter.def.json msgctxt "infill_offset_x description" -msgid "The infill pattern is offset this distance along the X axis." +msgid "The infill pattern is moved this distance along the X axis." msgstr "Dolgu şekli X ekseni boyunca bu mesafe kadar kaydırılır." #: fdmprinter.def.json @@ -1487,7 +1447,7 @@ msgstr "Dolgu Y Kayması" #: fdmprinter.def.json msgctxt "infill_offset_y description" -msgid "The infill pattern is offset this distance along the Y axis." +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 @@ -1507,8 +1467,8 @@ msgstr "Dolgu Çakışma Oranı" #: fdmprinter.def.json msgctxt "infill_overlap 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." +msgid "The amount of overlap between the infill and the walls as a percentage of the infill line width. A slight overlap allows the walls to connect firmly to the infill." +msgstr "Dolgu hattı genişliğinin yüzdesi olarak dolgu ve duvarların arasındaki çakışma miktarı. Ufak bir çakışma duvarların dolguya sıkıca bağlanmasını sağlar." #: fdmprinter.def.json msgctxt "infill_overlap_mm label" @@ -1527,8 +1487,8 @@ msgstr "Yüzey Çakışma Oranı" #: fdmprinter.def.json msgctxt "skin_overlap description" -msgid "The amount of overlap between the skin and the walls as a percentage of the line width. A slight overlap allows the walls to connect firmly to the skin. This is a percentage of the average line widths of the skin lines and the innermost wall." -msgstr "Hat genişliğinin bir yüzdesi olarak yüzey ve duvarlar arasındaki çakışma miktarı. Az miktar çakışma duvarların yüzeye sıkıca bağlanmasını sağlar. Bu, yüzey hatlarının ve en içteki duvarın ortalama hat genişliklerinin bir yüzdesidir." +msgid "The amount of overlap between the skin and the walls as a percentage of the skin line width. A slight overlap allows the walls to connect firmly to the skin. This is a percentage of the average line widths of the skin lines and the innermost wall." +msgstr "Yüzey hattı genişliğinin yüzdesi olarak yüzey ve duvar çakışmasının miktarı. Ufak bir çakışma duvarların yüzeye sıkıca bağlanmasını sağlar. Bu, yüzey ve en iç duvar hat eninin ortalama yüzdesidir." #: fdmprinter.def.json msgctxt "skin_overlap_mm label" @@ -1690,16 +1650,6 @@ msgctxt "material description" msgid "Material" msgstr "Malzeme" -#: fdmprinter.def.json -msgctxt "material_flow_dependent_temperature label" -msgid "Auto Temperature" -msgstr "Otomatik Sıcaklık" - -#: fdmprinter.def.json -msgctxt "material_flow_dependent_temperature description" -msgid "Change the temperature for each layer automatically with the average flow speed of that layer." -msgstr "Katmanın ortalama akış hızıyla otomatik olarak her katman için sıcaklığı değiştirir." - #: fdmprinter.def.json msgctxt "default_material_print_temperature label" msgid "Default Printing Temperature" @@ -1750,16 +1700,6 @@ msgctxt "material_final_print_temperature description" msgid "The temperature to which to already start cooling down just before the end of printing." msgstr "Yazdırma bitmeden hemen önce soğuma işleminin başladığı sıcaklık." -#: fdmprinter.def.json -msgctxt "material_flow_temp_graph label" -msgid "Flow Temperature Graph" -msgstr "Akış Sıcaklık Grafiği" - -#: fdmprinter.def.json -msgctxt "material_flow_temp_graph description" -msgid "Data linking material flow (in mm3 per second) to temperature (degrees Celsius)." -msgstr "Malzeme akışını (saniye başına mm3 bazında) sıcaklığa (santigrat derece) bağlayan veri." - #: fdmprinter.def.json msgctxt "material_extrusion_cool_down_speed label" msgid "Extrusion Cool Down Speed Modifier" @@ -1777,8 +1717,8 @@ msgstr "Yapı Levhası Sıcaklığı" #: fdmprinter.def.json msgctxt "material_bed_temperature description" -msgid "The temperature used for the heated build plate. If this is 0, the bed will not heat up for this print." -msgstr "Isınan yapı levhası için kullanılan sıcaklık. Bu ayar 0 olursa bu yazdırma için yatak ısıtılmaz." +msgid "The temperature used for the heated build plate. If this is 0, the bed temperature will not be adjusted." +msgstr "Isınan yapı levhası için kullanılan sıcaklık. Bu değer 0 ise yatak sıcaklığı değiştirilmez." #: fdmprinter.def.json msgctxt "material_bed_temperature_layer_0 label" @@ -3450,6 +3390,16 @@ msgctxt "support_tower_roof_angle description" msgid "The angle of a rooftop of a tower. A higher value results in pointed tower roofs, a lower value results in flattened tower roofs." msgstr "Direk tavanı açısı Yüksek bir değer, direk tavanını sivrileştirirken, daha düşük bir değer direk tavanlarını düzleştirir." +#: fdmprinter.def.json +msgctxt "support_mesh_drop_down label" +msgid "Drop Down Support Mesh" +msgstr "Alçalan Destek Örgüsü" + +#: fdmprinter.def.json +msgctxt "support_mesh_drop_down description" +msgid "Make support everywhere below the support mesh, so that there's no overhang in the support mesh." +msgstr "Destek örgüsünde askıda kalan herhangi bir kısım olmaması için destek örgüsünün altındaki her yere destek yapın." + #: fdmprinter.def.json msgctxt "platform_adhesion label" msgid "Build Plate Adhesion" @@ -4082,16 +4032,6 @@ msgctxt "meshfix_keep_open_polygons description" msgid "Normally Cura tries to stitch up small holes in the mesh and remove parts of a layer with big holes. Enabling this option keeps those parts which cannot be stitched. This option should be used as a last resort option when everything else fails to produce proper GCode." msgstr "Normal koşullarda, Cura ağdaki küçük boşlukları diker ve büyük boşluklu katman parçalarını ortadan kaldırır. Bu seçeneği etkinleştirmek, dikilemeyen parçaları muhafaza eder. Bu seçenek, hiçbir işlemin uygun bir GCode oluşturamaması durumunda başvurulacak son seçenek olarak kullanılmalıdı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 "multiple_mesh_overlap label" msgid "Merged Meshes Overlap" @@ -4242,16 +4182,6 @@ msgctxt "support_mesh description" msgid "Use this mesh to specify support areas. This can be used to generate support structure." msgstr "Destek alanlarını belirlemek için bu örgüyü kullanın. Bu örgü, destek yapısını oluşturmak için kullanılabilir." -#: fdmprinter.def.json -msgctxt "support_mesh_drop_down label" -msgid "Drop Down Support Mesh" -msgstr "Alçalan Destek Örgüsü" - -#: fdmprinter.def.json -msgctxt "support_mesh_drop_down description" -msgid "Make support everywhere below the support mesh, so that there's no overhang in the support mesh." -msgstr "Destek örgüsünde askıda kalan herhangi bir kısım olmaması için destek örgüsünün altındaki her yere destek yapın." - #: fdmprinter.def.json msgctxt "anti_overhang_mesh label" msgid "Anti Overhang Mesh" @@ -4328,14 +4258,194 @@ msgid "experimental!" msgstr "deneysel!" #: fdmprinter.def.json -msgctxt "optimize_wall_printing_order label" -msgid "Optimize Wall Printing Order" -msgstr "Duvar Yazdırma Sırasını Optimize Et" +msgctxt "support_tree_enable label" +msgid "Tree Support" +msgstr "Ağaç Destek" #: fdmprinter.def.json -msgctxt "optimize_wall_printing_order description" -msgid "Optimize the order in which walls are printed so as to reduce the number of retractions and the distance travelled. Most parts will benefit from this being enabled but some may actually take longer so please compare the print time estimates with and without optimization." -msgstr "Geri çekmelerin sayısını ve kat edilen mesafeyi azaltmak için duvarların yazdırıldığı sırayı optimize edin. Çoğu parça, bunun etkinleştirilmesinden yararlanır, ancak bazılarının yararlanması için gerçekte daha uzun bir süre gerekebilir. Bu yüzden, yazdırma süresi tahminlerini optimizasyonlu ve optimizasyonsuz olarak karşılaştırın." +msgctxt "support_tree_enable description" +msgid "Generate a tree-like support with branches that support your print. This may reduce material usage and print time, but greatly increases slicing time." +msgstr "Baskınızı desteklemesi adına dallarıyla birlikte ağaca benzeyen bir destek oluşturun. Malzeme kullanımı ve baskı süresi düşer ancak dilimleme zamanı da önemli ölçüde artar." + +#: fdmprinter.def.json +msgctxt "support_tree_angle label" +msgid "Tree Support Branch Angle" +msgstr "Ağaç Destek Dal Açısı" + +#: fdmprinter.def.json +msgctxt "support_tree_angle description" +msgid "The angle of the branches. Use a lower angle to make them more vertical and more stable. Use a higher angle to be able to have more reach." +msgstr "Dalların açısı. Daha dikey ve daha stabil olmaları için daha düşük bir açı kullanın. Daha fazla erişim için daha yüksek bir açı kullanın." + +#: fdmprinter.def.json +msgctxt "support_tree_branch_distance label" +msgid "Tree Support Branch Distance" +msgstr "Ağaç Destek Dal Mesafesi" + +#: fdmprinter.def.json +msgctxt "support_tree_branch_distance description" +msgid "How far apart the branches need to be when they touch the model. Making this distance small will cause the tree support to touch the model at more points, causing better overhang but making support harder to remove." +msgstr "Dalların modele temas ettiklerinde birbirlerine ne kadar uzaklıkta olacakları. Bu mesafenin kısa yapılması ağaç desteğin modele daha fazla noktada temas etmesini sağlayarak daha iyi bir sarkma sunacaktır ancak desteğin sökülmesini de daha güç hale getirecektir." + +#: fdmprinter.def.json +msgctxt "support_tree_branch_diameter label" +msgid "Tree Support Branch Diameter" +msgstr "Ağaç Destek Dalının Çapı" + +#: fdmprinter.def.json +msgctxt "support_tree_branch_diameter description" +msgid "The diameter of the thinnest branches of tree support. Thicker branches are more sturdy. Branches towards the base will be thicker than this." +msgstr "Ağaç desteğin en ince dallarının çapı. Daha kalın dallar daha dayanıklı olur. Tabana doğru uzanan dallar bundan daha kalın olacaktır." + +#: fdmprinter.def.json +msgctxt "support_tree_branch_diameter_angle label" +msgid "Tree Support Branch Diameter Angle" +msgstr "Ağaç Destek Dalının Çap Açısı" + +#: fdmprinter.def.json +msgctxt "support_tree_branch_diameter_angle description" +msgid "The angle of the branches' diameter as they gradually become thicker towards the bottom. An angle of 0 will cause the branches to have uniform thickness over their length. A bit of an angle can increase stability of the tree support." +msgstr "Alta doğru gidildikçe kademeli olarak kalınlaşan dalların açısı. 0 derecelik bir açı dalların uzunluklarını gözetmeksizin tekdüze bir kalınlığa sahip olmalarını sağlayacaktır. Birazcık açı ağaç desteğin sabitliğini artırabilir." + +#: fdmprinter.def.json +msgctxt "support_tree_collision_resolution label" +msgid "Tree Support Collision Resolution" +msgstr "Ağaç Destek Çarpışma Çözünürlüğü" + +#: fdmprinter.def.json +msgctxt "support_tree_collision_resolution description" +msgid "Resolution to compute collisions with to avoid hitting the model. Setting this lower will produce more accurate trees that fail less often, but increases slicing time dramatically." +msgstr "Modele çarpmamak adına çarpışmaları hesaplamak için çözünürlük. Buna düşük bir değerin verilmesi daha az hata çıkaran daha isabetli ağaçların üretilmesini sağlar ancak dilimleme süresini önemli ölçüde artırır." + +#: fdmprinter.def.json +msgctxt "support_tree_wall_thickness label" +msgid "Tree Support Wall Thickness" +msgstr "Ağaç Destek Duvarının Kalınlığı" + +#: fdmprinter.def.json +msgctxt "support_tree_wall_thickness description" +msgid "The thickness of the walls of the branches of tree support. Thicker walls take longer to print but don't fall over as easily." +msgstr "Ağaç desteğin dallarında yer alan duvarların kalınlığı. Kalın duvarların basılması daha uzun sürer ancak kalın duvarlar kolay devrilmezler." + +#: fdmprinter.def.json +msgctxt "support_tree_wall_count label" +msgid "Tree Support Wall Line Count" +msgstr "Ağaç Destek Duvarının Hat Sayısı" + +#: fdmprinter.def.json +msgctxt "support_tree_wall_count description" +msgid "The number of walls of the branches of tree support. Thicker walls take longer to print but don't fall over as easily." +msgstr "Ağaç desteğin dallarında yer alan duvarların sayısı. Kalın duvarların basılması daha uzun sürer ancak kalın duvarlar kolay devrilmezler." + +#: fdmprinter.def.json +msgctxt "slicing_tolerance label" +msgid "Slicing Tolerance" +msgstr "Dilimleme Toleransı" + +#: fdmprinter.def.json +msgctxt "slicing_tolerance description" +msgid "How to slice layers with diagonal surfaces. The areas of a layer can be generated based on where the middle of the layer intersects the surface (Middle). Alternatively each layer can have the areas which fall inside of the volume throughout the height of the layer (Exclusive) or a layer has the areas which fall inside anywhere within the layer (Inclusive). Exclusive retains the most details, Inclusive makes for the best fit and Middle takes the least time to process." +msgstr "Çapraz yüzeylerle katman dilimleme yolları. Bir katmanın alanları katmanın ortasının yüzeyle kesiştiği yere (Ortalayıcı) göre oluşturulabilir. Diğer bir yol da her katmanın yüksekliği boyunca hacim içinde kalan alanları (Dışlayıcı) veya katmanın içinde herhangi bir yerde kalan alanları (Kapsayıcı) almasıdır. Dışlayıcı seçenek en çok ayrıntıyı tutar; Kapsayıcı seçenek en iyi şekilde oturur; Ortalayıcı ise en kısa sürede işlenir." + +#: fdmprinter.def.json +msgctxt "slicing_tolerance option middle" +msgid "Middle" +msgstr "Ortalayıcı" + +#: fdmprinter.def.json +msgctxt "slicing_tolerance option exclusive" +msgid "Exclusive" +msgstr "Dışlayıcı" + +#: fdmprinter.def.json +msgctxt "slicing_tolerance option inclusive" +msgid "Inclusive" +msgstr "Kapsayıcı" + +#: fdmprinter.def.json +msgctxt "roofing_line_width label" +msgid "Top Surface Skin Line Width" +msgstr "Üst Yüzey Hat Genişliği" + +#: fdmprinter.def.json +msgctxt "roofing_line_width description" +msgid "Width of a single line of the areas at the top of the print." +msgstr "Baskının üst tarafında bulunan alanlardaki tek bir hattın genişliği." + +#: fdmprinter.def.json +msgctxt "roofing_pattern label" +msgid "Top Surface Skin Pattern" +msgstr "Üst Yüzey Şekli" + +#: fdmprinter.def.json +msgctxt "roofing_pattern description" +msgid "The pattern of the top most layers." +msgstr "En üst yüzeyin şekli." + +#: fdmprinter.def.json +msgctxt "roofing_pattern option lines" +msgid "Lines" +msgstr "Çizgiler" + +#: fdmprinter.def.json +msgctxt "roofing_pattern option concentric" +msgid "Concentric" +msgstr "Eş merkezli" + +#: fdmprinter.def.json +msgctxt "roofing_pattern option zigzag" +msgid "Zig Zag" +msgstr "Zikzak" + +#: fdmprinter.def.json +msgctxt "roofing_angles label" +msgid "Top Surface Skin Line Directions" +msgstr "Üst Yüzey Hat Yönleri" + +#: fdmprinter.def.json +msgctxt "roofing_angles description" +msgid "A list of integer line directions to use when the top surface skin layers use the lines or zig zag pattern. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the traditional default angles (45 and 135 degrees)." +msgstr "Üst yüzey katmanları çizgi veya zikzak biçimindeyken kullanılacak tam sayı hat yönü listesi. Listedeki öğeler, katmanlar ilerledikçe sıralı olarak kullanılır. Listenin sonuna ulaşıldığında tekrar başa dönülür. Liste öğeleri virgülle ayrılır ve tüm liste köşeli parantez içine alınır. Varsayılan ayar boş listedir ve geleneksel varsayılan açılar (45 ve 135 derece) kullanılır." + +#: fdmprinter.def.json +msgctxt "infill_enable_travel_optimization label" +msgid "Infill Travel Optimization" +msgstr "Dolgu Hareket Optimizasyonu" + +#: fdmprinter.def.json +msgctxt "infill_enable_travel_optimization description" +msgid "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." +msgstr "Aktifleştirildiğinde, dolgu hatlarının baskı düzeni, hareketi azaltmak için optimize edilir. Elde edilen hareket zamanındaki azalma dilimlenen modele, dolgu şekline ve yoğunluğuna vs. bağlıdır. Birçok ufak dolgu bölgesine sahip bazı modeller için modelin dilimlenme süresi önemli ölçüde artabilir." + +#: fdmprinter.def.json +msgctxt "material_flow_dependent_temperature label" +msgid "Auto Temperature" +msgstr "Otomatik Sıcaklık" + +#: fdmprinter.def.json +msgctxt "material_flow_dependent_temperature description" +msgid "Change the temperature for each layer automatically with the average flow speed of that layer." +msgstr "Katmanın ortalama akış hızıyla otomatik olarak her katman için sıcaklığı değiştirir." + +#: fdmprinter.def.json +msgctxt "material_flow_temp_graph label" +msgid "Flow Temperature Graph" +msgstr "Akış Sıcaklık Grafiği" + +#: fdmprinter.def.json +msgctxt "material_flow_temp_graph description" +msgid "Data linking material flow (in mm3 per second) to temperature (degrees Celsius)." +msgstr "Malzeme akışını (saniye başına mm3 bazında) sıcaklığa (santigrat derece) bağlayan veri." + +#: 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 "support_skip_some_zags label" @@ -4934,6 +5044,46 @@ msgctxt "wireframe_nozzle_clearance description" msgid "Distance between the nozzle and horizontally downward lines. Larger clearance results in diagonally downward lines with a less steep angle, which in turn results in less upward connections with the next layer. Only applies to Wire Printing." msgstr "Nozül ve aşağı yöndeki hatlar arasındaki mesafe. Daha büyük açıklık, dik açısı daha küçük çapraz şekilde aşağı yöndeki hatların oluşmasına neden olur, dolayısıyla bu durum bir sonraki katman ile yukarı yönde daha az bağlantıya yol açar. Sadece kablo yazdırmaya uygulanır." +#: fdmprinter.def.json +msgctxt "adaptive_layer_height_enabled label" +msgid "Use adaptive layers" +msgstr "Uyarlanabilir Katmanların Kullanımı" + +#: fdmprinter.def.json +msgctxt "adaptive_layer_height_enabled description" +msgid "Adaptive layers computes the layer heights depending on the shape of the model." +msgstr "Uyarlanabilir katmanlar modelin şekline bağlı olarak katman yüksekliğini hesaplar." + +#: fdmprinter.def.json +msgctxt "adaptive_layer_height_variation label" +msgid "Adaptive layers maximum variation" +msgstr "Uyarlanabilir katmanların azami değişkenliği" + +#: fdmprinter.def.json +msgctxt "adaptive_layer_height_variation description" +msgid "The maximum allowed height different from the base layer height in mm." +msgstr "Mm bazında taban katmanı yüksekliğine göre izin verilen azami yükseklik." + +#: fdmprinter.def.json +msgctxt "adaptive_layer_height_variation_step label" +msgid "Adaptive layers variation step size" +msgstr "Uyarlanabilir katmanların değişkenlik adım boyu" + +#: fdmprinter.def.json +msgctxt "adaptive_layer_height_variation_step description" +msgid "The difference in height of the next layer height compared to the previous one." +msgstr "Bir önceki ve bir sonraki katman yüksekliği arasındaki yükseklik farkı." + +#: fdmprinter.def.json +msgctxt "adaptive_layer_height_threshold label" +msgid "Adaptive layers threshold" +msgstr "Uyarlanabilir katman eşiği" + +#: 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." + #: fdmprinter.def.json msgctxt "command_line_settings label" msgid "Command Line Settings" @@ -4994,6 +5144,26 @@ 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 "infill_offset_x description" +#~ msgid "The infill pattern is offset this distance along the X axis." +#~ msgstr "Dolgu şekli X ekseni boyunca bu mesafe kadar kaydırılır." + +#~ msgctxt "infill_offset_y description" +#~ msgid "The infill pattern is offset this distance along the Y axis." +#~ msgstr "Dolgu şekli Y ekseni boyunca bu mesafe kadar kaydırılır." + +#~ msgctxt "infill_overlap 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." + +#~ msgctxt "skin_overlap description" +#~ msgid "The amount of overlap between the skin and the walls as a percentage of the line width. A slight overlap allows the walls to connect firmly to the skin. This is a percentage of the average line widths of the skin lines and the innermost wall." +#~ msgstr "Hat genişliğinin bir yüzdesi olarak yüzey ve duvarlar arasındaki çakışma miktarı. Az miktar çakışma duvarların yüzeye sıkıca bağlanmasını sağlar. Bu, yüzey hatlarının ve en içteki duvarın ortalama hat genişliklerinin bir yüzdesidir." + +#~ msgctxt "material_bed_temperature description" +#~ msgid "The temperature used for the heated build plate. If this is 0, the bed will not heat up for this print." +#~ msgstr "Isınan yapı levhası için kullanılan sıcaklık. Bu ayar 0 olursa bu yazdırma için yatak ısıtılmaz." + #~ msgctxt "wall_x_extruder_nr label" #~ msgid "Inner Walls Extruder" #~ msgstr "İç Duvar Ekstruderi" diff --git a/resources/i18n/zh_CN/cura.po b/resources/i18n/zh_CN/cura.po index f4bf6159d5..e7632b0193 100644 --- a/resources/i18n/zh_CN/cura.po +++ b/resources/i18n/zh_CN/cura.po @@ -1,14 +1,14 @@ # Cura -# Copyright (C) 2017 Ultimaker +# Copyright (C) 2018 Ultimaker # This file is distributed under the same license as the Cura package. -# Ruben Dulek , 2017. -# +# Ruben Dulek , 2018. +# msgid "" msgstr "" -"Project-Id-Version: Cura 3.0\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-11-21 16:58+0100\n" -"PO-Revision-Date: 2017-11-30 13:05+0100\n" +"Project-Id-Version: Cura 3.2\n" +"Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" +"POT-Creation-Date: 2018-01-29 09:48+0000\n" +"PO-Revision-Date: 2018-02-05 13:25+0100\n" "Last-Translator: Bothof \n" "Language-Team: PCDotFan , Bothof \n" "Language: zh_CN\n" @@ -18,7 +18,7 @@ msgstr "" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Poedit 1.7.3\n" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:29 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:26 msgctxt "@action" msgid "Machine Settings" msgstr "打印机设置" @@ -55,12 +55,11 @@ msgstr "连接至 Doodle3D Connect" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:87 #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:155 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:874 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:646 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:875 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:659 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:370 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrintWindow.qml:78 -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:104 -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:99 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:355 #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:188 #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:376 #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:139 @@ -100,7 +99,7 @@ msgctxt "@info:tooltip" msgid "Open the Doodle3D Connect web interface" msgstr "打开 Doodle3D Connect Web 界面" -#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:34 +#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:33 msgctxt "@item:inmenu" msgid "Show Changelog" msgstr "显示更新日志" @@ -115,78 +114,83 @@ msgctxt "@info:status" msgid "Profile has been flattened & activated." msgstr "配置文件已被合并并激活。" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:26 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:27 msgctxt "@item:inmenu" msgid "USB printing" -msgstr "USB 联机打印" - -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:27 -msgctxt "@action:button Preceded by 'Ready to'." -msgid "Print via USB" -msgstr "通过 USB 联机打印" +msgstr "USB 打印" #: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:28 +msgctxt "@action:button Preceded by 'Ready to'." +msgid "Print via USB" +msgstr "通过 USB 打印" + +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:29 msgctxt "@info:tooltip" msgid "Print via USB" -msgstr "通过 USB 联机打印" +msgstr "通过 USB 打印" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:30 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:31 msgctxt "@info:status" msgid "Connected via USB" msgstr "通过 USB 连接" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:154 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:183 msgctxt "@info:status" msgid "Unable to start a new job because the printer is busy or not connected." msgstr "无法启动新作业,因为打印机处于忙碌状态或未连接。" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:154 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:183 msgctxt "@info:title" msgid "Printer Unavailable" msgstr "打印机不可用" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:457 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:485 msgctxt "@info:status" msgid "This printer does not support USB printing because it uses UltiGCode flavor." msgstr "此打印机不支持通过 USB 打印,因为其使用 UltiGCode 类型的 G-code 文件。" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:457 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:485 msgctxt "@info:title" msgid "USB Printing" msgstr "USB 打印" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:461 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:489 msgctxt "@info:status" msgid "Unable to start a new job because the printer does not support usb printing." msgstr "无法启动新作业,因为该打印机不支持通过 USB 打印。" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:461 -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:108 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:489 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:103 #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:146 #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:158 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:945 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1349 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1417 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:946 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1418 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1496 msgctxt "@info:title" msgid "Warning" msgstr "警告" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:108 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:103 msgctxt "@info" msgid "Unable to update firmware because there are no printers connected." msgstr "无法更新固件,因为没有连接打印机。" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:122 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:117 #, python-format msgctxt "@info" msgid "Could not find firmware required for the printer at %s." msgstr "在 %s 无法找到打印机所需的固件。" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:122 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:117 msgctxt "@info:title" msgid "Printer Firmware" msgstr "打印机固件" +#: /home/ruben/Projects/Cura/plugins/PrepareStage/__init__.py:12 +msgctxt "@item:inmenu" +msgid "Prepare" +msgstr "准备" + #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:23 msgctxt "@action:button Preceded by 'Ready to'." msgid "Save to Removable Drive" @@ -230,11 +234,11 @@ msgid "Could not save to removable drive {0}: {1}" msgstr "无法保存到可移动磁盘 {0}:{1}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:132 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:692 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:700 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:146 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:693 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:701 #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:153 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1358 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:160 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1427 msgctxt "@info:title" msgid "Error" msgstr "错误" @@ -284,7 +288,7 @@ msgid "Removable Drive" msgstr "可移动磁盘" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:109 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:53 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:51 msgctxt "@action:button Preceded by 'Ready to'." msgid "Print over network" msgstr "通过网络打印" @@ -398,110 +402,110 @@ msgctxt "@info:title" msgid "Printer Status" msgstr "打印机状态" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:691 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:692 #, python-brace-format msgctxt "@info:status" msgid "Unable to start a new print job. No Printcore loaded in slot {0}" msgstr "无法启动新的打印作业。插槽 {0} 中未加载打印头。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:699 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:700 #, python-brace-format msgctxt "@info:status" msgid "Unable to start a new print job. No material loaded in slot {0}" msgstr "无法启动新的打印作业。插槽 {0} 中未加载材料。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:709 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:710 #, python-brace-format msgctxt "@label" msgid "Not enough material for spool {0}." msgstr "线轴 {0} 上没有足够的材料。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:719 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:720 #, python-brace-format msgctxt "@label" msgid "Different PrintCore (Cura: {0}, Printer: {1}) selected for extruder {2}" -msgstr "不同的打印头(Cura: {0},打印机: 为挤出机 {2} 选择了 {1})" +msgstr "不同的打印头(Cura: {0},打印机: 为挤出机 {2} 选择了 {1})" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:733 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:734 #, 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/NetworkPrinterOutputDevice.py:741 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:742 #, python-brace-format msgctxt "@label" msgid "PrintCore {0} is not properly calibrated. XY calibration needs to be performed on the printer." msgstr "打印头 {0} 未正确校准。 需要在打印机上执行 XY 校准。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:746 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:747 msgctxt "@label" msgid "Are you sure you wish to print with the selected configuration?" msgstr "您确定要使用所选配置进行打印吗?" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:747 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:748 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/NetworkPrinterOutputDevice.py:753 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:754 msgctxt "@window:title" msgid "Mismatched configuration" msgstr "配置不匹配" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:864 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:262 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:865 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:258 msgctxt "@info:status" msgid "Sending new jobs (temporarily) blocked, still sending the previous print job." msgstr "发送新作业(暂时)受阻,仍在发送前一份打印作业。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:873 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:874 msgctxt "@info:status" msgid "Sending data to printer" msgstr "向打印机发送数据" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:873 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:874 msgctxt "@info:title" msgid "Sending Data" msgstr "正在发送数据" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:944 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:945 msgctxt "@info:status" msgid "Unable to send data to printer. Is another job still active?" msgstr "无法向打印机发送数据。请确认是否有另一项打印任务仍在进行?" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1085 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1087 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:196 msgctxt "@label:MonitorStatus" msgid "Aborting print..." msgstr "中止打印..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1091 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1093 msgctxt "@label:MonitorStatus" msgid "Print aborted. Please check the printer" msgstr "打印已中止。请检查打印机" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1097 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1099 msgctxt "@label:MonitorStatus" msgid "Pausing print..." msgstr "暂停打印..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1099 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1101 msgctxt "@label:MonitorStatus" msgid "Resuming print..." msgstr "恢复打印..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1289 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1291 msgctxt "@window:title" msgid "Sync with your printer" msgstr "与您的打印机同步" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1291 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1293 msgctxt "@label" msgid "Would you like to use your current printer configuration in Cura?" msgstr "您想在 Cura 中使用当前的打印机配置吗?" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1293 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1295 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 "打印机上的打印头和/或材料与当前项目中的不同。 为获得最佳打印效果,请始终使用已插入打印机的打印头和材料进行切片。" @@ -522,145 +526,188 @@ msgid "{printer_name} has finished printing '{job_name}'. Please collect the pri msgstr "{printer_name} 已完成打印 '{job_name}'。 请收起打印品并确认清空打印平台。" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:115 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:520 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:533 #, python-brace-format msgid "{printer_name} is reserved to print '{job_name}'. Please change the printer's configuration to match the job, for it to start printing." msgstr "{printer_name} 已保留用于打印 '{job_name}'。 请更改打印机配置以匹配此项作业,以便开始打印。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:278 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:277 msgctxt "@info:status" msgid "Unable to send new print job: this 3D printer is not (yet) set up to host a group of connected Ultimaker 3 printers." msgstr "无法发送新打印作业:此 3D 打印机(尚)未设置为运行一组连接的 Ultimaker 3 打印机。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:410 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:423 #, python-brace-format msgctxt "@info:status" msgid "Unable to send print job to group {cluster_name}." msgstr "无法发送打印作业至组 {cluster_name}。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:418 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:431 #, python-brace-format msgctxt "@info:status" msgid "Sent {file_name} to group {cluster_name}." msgstr "已发送 {file_name} 至组 {cluster_name}。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:423 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:436 msgctxt "@action:button" msgid "Show print jobs" msgstr "显示打印作业" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:424 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:437 msgctxt "@info:tooltip" msgid "Opens the print jobs interface in your browser." msgstr "在您的浏览器中打开打印作业界面。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:489 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:502 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:239 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:47 -msgctxt "@label" +msgctxt "@label Printer name" msgid "Unknown" msgstr "未知" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:492 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:505 #, 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/NetworkClusterPrinterOutputDevice.py:494 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:497 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:507 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:510 msgctxt "@info:status" msgid "Print finished" msgstr "打印完成" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:522 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:525 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:535 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:538 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:282 msgctxt "@label:status" msgid "Action required" msgstr "需要采取行动" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:643 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:656 #, python-brace-format msgctxt "@info:progress" msgid "Sending {file_name} to group {cluster_name}" msgstr "发送 {file_name} 至组 {cluster_name}" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.py:19 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.py:17 msgctxt "@action" msgid "Connect via Network" msgstr "通过网络连接" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:64 +#: /home/ruben/Projects/Cura/plugins/MonitorStage/__init__.py:12 +msgctxt "@item:inmenu" +msgid "Monitor" +msgstr "监控" + +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:66 #, python-brace-format msgctxt "@info Don't translate {machine_name}, since it gets replaced by a printer name!" msgid "New features are available for your {machine_name}! It is recommended to update the firmware on your printer." msgstr "您的 {machine_name} 有新功能可用! 建议您更新打印机上的固件。" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:65 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:67 #, python-format msgctxt "@info:title The %s gets replaced with the printer name." msgid "New %s firmware available" msgstr "新 %s 固件可用" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:66 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:68 msgctxt "@action:button" msgid "How to update" msgstr "如何更新" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:77 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:79 msgctxt "@info" msgid "Could not access update information." msgstr "无法获取更新信息。" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksReader.py:199 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksReader.py:579 msgctxt "@info:status" -msgid "Errors appeared while opening your SolidWorks file! Please check, whether it is possible to open your file in SolidWorks itself without any problems as well!" -msgstr "打开 SolidWorks 文件时发生错误! 请检查能否在 SolidWorks 中正常打开文件而不出现任何问题!" +msgid "SolidWorks reported errors, while opening your file. We recommend to solve these issues inside SolidWorks itself." +msgstr "打开文件时,SolidWorks 报错。我们建议在 SolidWorks 内部解决这些问题。" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:31 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksReader.py:591 +msgctxt "@info:status" +msgid "" +"Found no models inside your drawing. Could you please check it's content again and make sure one part or assembly is inside?\n" +"\n" +" Thanks!." +msgstr "在您的图纸中找不到模型。请再次检查图纸内容,确保里面有一个零件或组件。\n\n谢谢!" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksReader.py:595 +msgctxt "@info:status" +msgid "" +"Found more then one part or assembly inside your drawing. We currently only support drawings with exactly one part or assembly inside.\n" +"\n" +"Sorry!" +msgstr "在您的图纸中找到一个以上的零件或组件。我们目前只支持里面正好有一个零件或组件的图纸。\n\n很抱歉!" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:25 msgctxt "@item:inlistbox" msgid "SolidWorks part file" msgstr "SolidWorks 零件文件" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:35 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:29 msgctxt "@item:inlistbox" msgid "SolidWorks assembly file" msgstr "SolidWorks 组件文件" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.py:21 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:33 +msgctxt "@item:inlistbox" +msgid "SolidWorks drawing file" +msgstr "SolidWorks 图纸文件" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:48 +msgctxt "@info:status" +msgid "" +"Dear customer,\n" +"We could not find a valid installation of SolidWorks on your system. That means that either SolidWorks is not installed or you don't own an valid license. Please make sure that running SolidWorks itself works without issues and/or contact your ICT.\n" +"\n" +"With kind regards\n" +" - Thomas Karl Pietrowski" +msgstr "尊敬的客户:\n我们无法在您的系统中找到有效的 SolidWorks 软件。这意味着您的系统中没有安装 SolidWorks,或者您没有获得有效的许可。请确保 SolidWorks 的运行没有任何问题并/或联系您的 ICT。\n\n此致\n - Thomas Karl Pietrowski" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:57 +msgctxt "@info:status" +msgid "" +"Dear customer,\n" +"You are currently running this plugin on an operating system other than Windows. This plugin will only work on Windows with SolidWorks installed, including an valid license. Please install this plugin on a Windows machine with SolidWorks installed.\n" +"\n" +"With kind regards\n" +" - Thomas Karl Pietrowski" +msgstr "尊敬的客户:\n您当前正在非 Windows 操作系统上运行此插件。此插件只能在装有 SolidWorks 且拥有有效许可的 Windows 系统上运行。请在装有 SolidWorks 的 Windows 计算机上安装此插件。\n\n此致\n - Thomas Karl Pietrowski" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksDialogHandler.py:70 msgid "Configure" msgstr "配置" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/CommonComReader.py:135 -#, python-format -msgctxt "@info:status" -msgid "Error while starting %s!" -msgstr "启动 %s 时发生错误!" +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksDialogHandler.py:71 +msgid "Installation guide for SolidWorks macro" +msgstr "SolidWorks 宏的安装指南" #: /home/ruben/Projects/Cura/plugins/SimulationView/__init__.py:14 msgctxt "@item:inlistbox" -msgid "Simulation view" -msgstr "仿真视图" +msgid "Layer view" +msgstr "分层视图" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:100 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:103 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:101 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:104 msgctxt "@info:title" msgid "Simulation View" msgstr "仿真视图" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.py:26 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.py:25 msgid "Modify G-Code" msgstr "修改 G-Code 文件" #: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:43 msgctxt "@info" -msgid "Cura collects anonymised slicing statistics. You can disable this in the preferences." -msgstr "Cura 收集匿名切片统计资料。 您可以在偏好设置中禁用此选项。" +msgid "Cura collects anonymized usage statistics." +msgstr "Cura 将收集匿名的使用统计数据。" #: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:46 msgctxt "@info:title" @@ -669,14 +716,41 @@ msgstr "正在收集数据" #: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:48 msgctxt "@action:button" -msgid "Dismiss" -msgstr "关闭此通知" +msgid "Allow" +msgstr "允许" + +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:49 +msgctxt "@action:tooltip" +msgid "Allow Cura to send anonymized usage statistics to help prioritize future improvements to Cura. Some of your preferences and settings are sent, the Cura version and a hash of the models you're slicing." +msgstr "允许 Cura 发送匿名的使用统计数据,以帮助确定将来 Cura 的改进优先顺序。已发送您的一些偏好和设置,Cura 版本和您正在切片的模型的散列值。" + +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:50 +msgctxt "@action:button" +msgid "Disable" +msgstr "禁用" + +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:51 +msgctxt "@action:tooltip" +msgid "Don't allow Cura to send anonymized usage statistics. You can enable it again in the preferences." +msgstr "不允许 Cura 发送匿名的使用统计数据。您可以在偏好中再次启用。" #: /home/ruben/Projects/Cura/plugins/LegacyProfileReader/__init__.py:14 msgctxt "@item:inlistbox" msgid "Cura 15.04 profiles" msgstr "Cura 15.04 配置文件" +#: /home/ruben/Projects/Cura/plugins/CuraBlenderPlugin/__init__.py:15 +msgctxt "@item:inlistbox" +msgid "Blender file" +msgstr "Blender 文件" + +#: /home/ruben/Projects/Cura/plugins/CuraBlenderPlugin/CadIntegrationUtils/CommonReader.py:199 +msgctxt "@info:status" +msgid "" +"Could not export using \"{}\" quality!\n" +"Felt back to \"{}\"." +msgstr "无法使用 \"{}\" 导出质量!\n返回 \"{}\"。" + #: /home/ruben/Projects/Cura/plugins/GCodeProfileReader/__init__.py:14 #: /home/ruben/Projects/Cura/plugins/GCodeReader/__init__.py:14 msgctxt "@item:inlistbox" @@ -708,49 +782,49 @@ msgctxt "@item:inlistbox" msgid "GIF Image" msgstr "GIF 图像" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:269 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:299 msgctxt "@info:status" msgid "Unable to slice with the current material as it is incompatible with the selected machine or configuration." msgstr "无法使用当前材料进行切片,因为该材料与所选机器或配置不兼容。" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:269 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:297 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:319 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:299 #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:327 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:336 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:349 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:357 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:366 msgctxt "@info:title" msgid "Unable to slice" msgstr "无法切片" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:296 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:326 #, python-brace-format msgctxt "@info:status" msgid "Unable to slice with the current settings. The following settings have errors: {0}" msgstr "无法使用当前设置进行切片。以下设置存在错误:{0}" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:318 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:348 #, python-brace-format msgctxt "@info:status" msgid "Unable to slice due to some per-model settings. The following settings have errors on one or more models: {error_labels}" msgstr "因部分特定模型设置而无法切片。 以下设置在一个或多个模型上存在错误: {error_labels}" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:326 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:356 msgctxt "@info:status" msgid "Unable to slice because the prime tower or prime position(s) are invalid." msgstr "无法切片(原因:主塔或主位置无效)。" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:335 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:365 msgctxt "@info:status" msgid "Nothing to slice because none of the models fit the build volume. Please scale or rotate models to fit." msgstr "无法执行,因为没有一个模型符合成形空间体积。请缩放或旋转模型以适应打印平台。" #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:50 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:239 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:242 msgctxt "@info:status" msgid "Processing Layers" msgstr "正在处理层" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:239 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:242 msgctxt "@info:title" msgid "Information" msgstr "信息" @@ -787,14 +861,14 @@ msgstr "复制 Siemens NX 插件文件失败。 请检查您的 UGII_USER_DIR。 msgid "Failed to install Siemens NX plugin. Could not set environment variable UGII_USER_DIR for Siemens NX." msgstr "安装 Siemens NX 插件失败。 无法为 Siemens NX 设置环境变量 UGII_USER_DIR。" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:167 -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:585 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:165 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:590 msgctxt "@title:tab" msgid "Recommended" msgstr "推荐" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:169 -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:590 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:167 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:595 msgctxt "@title:tab" msgid "Custom" msgstr "自定义" @@ -805,24 +879,24 @@ msgctxt "@item:inlistbox" msgid "3MF File" msgstr "3MF 文件" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:126 -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1142 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:159 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1185 msgctxt "@label" msgid "Nozzle" msgstr "喷嘴" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:164 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:152 #, python-brace-format msgctxt "@info:status" msgid "Failed to get plugin ID from {0}" msgstr "无法从 {0} 获取插件 ID" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:165 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:153 msgctxt "@info:tile" msgid "Warning" msgstr "警告" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:203 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:191 msgctxt "@window:title" msgid "Plugin browser" msgstr "插件浏览器" @@ -837,18 +911,18 @@ msgctxt "@item:inlistbox" msgid "G File" msgstr "G 文件" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:314 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:321 msgctxt "@info:status" msgid "Parsing G-code" msgstr "解析 G-code" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:316 -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:426 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:323 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:464 msgctxt "@info:title" msgid "G-code Details" msgstr "G-code 详细信息" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:424 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:462 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 文件可能不准确。" @@ -859,6 +933,16 @@ 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:17 +msgctxt "@item:inlistbox" +msgid "Profile Assistant" +msgstr "配置文件助手" + #: /home/ruben/Projects/Cura/plugins/3MFWriter/__init__.py:30 msgctxt "@item:inlistbox" msgid "3MF file" @@ -890,142 +974,116 @@ msgctxt "@action" msgid "Level build plate" msgstr "调平打印平台" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:89 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:98 msgctxt "@tooltip" msgid "Outer Wall" msgstr "外壁" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:90 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:99 msgctxt "@tooltip" msgid "Inner Walls" msgstr "内壁" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:91 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:100 msgctxt "@tooltip" msgid "Skin" msgstr "表层" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:92 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:101 msgctxt "@tooltip" msgid "Infill" msgstr "填充" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:93 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:102 msgctxt "@tooltip" msgid "Support Infill" msgstr "支撑填充" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:94 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:103 msgctxt "@tooltip" msgid "Support Interface" msgstr "支撑接触面" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:95 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:104 msgctxt "@tooltip" msgid "Support" msgstr "支撑" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:96 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:105 msgctxt "@tooltip" msgid "Skirt" msgstr "Skirt" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:97 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:106 msgctxt "@tooltip" msgid "Travel" -msgstr "移动" +msgstr "空驶" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:98 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:107 msgctxt "@tooltip" msgid "Retractions" msgstr "回抽" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:99 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:108 msgctxt "@tooltip" msgid "Other" msgstr "其它" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:199 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:231 msgctxt "@label unknown material" msgid "Unknown" msgstr "未知" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:284 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:318 #, python-brace-format msgctxt "@label" msgid "Pre-sliced file {0}" msgstr "预切片文件 {0}" -#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:469 +#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:440 msgctxt "@item:material" msgid "No material loaded" msgstr "未加载材料" -#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:476 +#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:447 msgctxt "@item:material" msgid "Unknown material" msgstr "未知材料" -#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:30 -msgctxt "@info:status" -msgid "Finding new location for objects" -msgstr "正在为模型寻找新位置" - -#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:34 -msgctxt "@info:title" -msgid "Finding Location" -msgstr "正在寻找位置" - -#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:89 -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:83 -msgctxt "@info:status" -msgid "Unable to find a location within the build volume for all objects" -msgstr "无法在成形空间体积内放下全部模型" - -#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:90 -msgctxt "@info:title" -msgid "Can't Find Location" -msgstr "找不到位置" - -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:431 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:113 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:437 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:120 msgctxt "@title:window" msgid "File Already Exists" msgstr "文件已存在" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:432 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:114 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:438 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:121 #, 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:815 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:872 msgctxt "@label" msgid "Custom" msgstr "自定义" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:819 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:876 msgctxt "@label" msgid "Custom Material" msgstr "自定义材料" -#: /home/ruben/Projects/Cura/cura/Settings/ExtrudersModel.py:182 -msgctxt "@menuitem" -msgid "Global" -msgstr "全局" - -#: /home/ruben/Projects/Cura/cura/Settings/ExtrudersModel.py:229 +#: /home/ruben/Projects/Cura/cura/Settings/ExtrudersModel.py:205 msgctxt "@menuitem" msgid "Not overridden" msgstr "未覆盖" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:117 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:124 msgctxt "@info:status" msgid "The selected material is incompatible with the selected machine or configuration." msgstr "所选材料与所选机器或配置不兼容。" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:118 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:125 #: /home/ruben/Projects/Cura/cura/Settings/MaterialManager.py:24 msgctxt "@info:title" msgid "Incompatible Material" @@ -1046,67 +1104,89 @@ msgctxt "@action" msgid "Undo changing the material diameter." msgstr "撤销更改材料直径。" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:144 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:151 #, 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:151 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:158 #, 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:156 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:163 #, 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:157 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:164 msgctxt "@info:title" msgid "Export succeeded" msgstr "导出成功" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:183 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:205 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:214 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:248 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:190 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:211 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:271 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to import profile from {0}: {1}" msgstr "无法从 {0} 导入配置文件: {1}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:216 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:252 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:230 +#, python-brace-format +msgctxt "@info:status Don't translate the XML tags or !" +msgid "This profile {0} contains incorrect data, could not import it." +msgstr "此配置文件 {0} 包含错误数据,无法导入。" + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:240 +#, python-brace-format +msgctxt "@info:status Don't translate the XML tags or !" +msgid "The machine defined in profile {0} doesn't match with your current machine, could not import it." +msgstr "配置文件 {0} 中定义的机器与您当前的机器不匹配,无法导入。" + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:274 #, python-brace-format msgctxt "@info:status" msgid "Successfully imported profile {0}" msgstr "已成功导入配置文件 {0}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:255 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:277 +#, 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:280 #, 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:274 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:298 msgctxt "@label" msgid "Custom profile" msgstr "自定义配置文件" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:285 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:313 msgctxt "@info:status" msgid "Profile is missing a quality type." msgstr "配置文件缺少打印质量类型定义。" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:321 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:349 #, python-brace-format msgctxt "@info:status" msgid "Could not find a quality type {0} for the current configuration." msgstr "无法为当前配置找到质量类型 {0}。" +#: /home/ruben/Projects/Cura/cura/ObjectsModel.py:46 +#, python-brace-format +msgctxt "@label" +msgid "Group #{group_nr}" +msgstr "组 #{group_nr}" + #: /home/ruben/Projects/Cura/cura/BuildVolume.py:100 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." @@ -1117,142 +1197,167 @@ msgctxt "@info:title" msgid "Build Volume" msgstr "成形空间体积" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:34 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:25 msgctxt "@info:status" msgid "Multiplying and placing objects" msgstr "复制并放置模型" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:35 -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:83 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:26 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:78 msgctxt "@info:title" msgid "Placing Object" msgstr "放置模型" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:80 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:78 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:88 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:152 +msgctxt "@info:status" +msgid "Unable to find a location within the build volume for all objects" +msgstr "无法在成形空间体积内放下全部模型" + +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:29 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:64 +msgctxt "@info:status" +msgid "Finding new location for objects" +msgstr "正在为模型寻找新位置" + +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:33 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:68 +msgctxt "@info:title" +msgid "Finding Location" +msgstr "正在寻找位置" + +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:89 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:153 +msgctxt "@info:title" +msgid "Can't Find Location" +msgstr "找不到位置" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:81 msgctxt "@title:window" msgid "Crash Report" msgstr "错误报告" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:93 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:94 msgctxt "@label crash message" msgid "" -"

      A fatal exception has occurred. Please send us this Crash Report to fix the problem

      \n" +"

      A fatal error has occurred. 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 "

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

      \n

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

      \n " +msgstr "

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

      \n

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

      \n " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:101 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:102 msgctxt "@title:groupbox" msgid "System information" msgstr "系统信息" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:109 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:110 msgctxt "@label unknown version of Cura" msgid "Unknown" msgstr "未知" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:111 -#, python-brace-format -msgctxt "@label Cura version" -msgid "Cura version: {version}
      " -msgstr "Cura 版本: {version}
      " - #: /home/ruben/Projects/Cura/cura/CrashHandler.py:112 -#, python-brace-format -msgctxt "@label Platform" -msgid "Platform: {platform}
      " -msgstr "平台: {platform}
      " +msgctxt "@label Cura version number" +msgid "Cura version" +msgstr "Cura 版本" #: /home/ruben/Projects/Cura/cura/CrashHandler.py:113 -#, python-brace-format -msgctxt "@label Qt version" -msgid "Qt version: {qt}
      " -msgstr "Qt 版本: {qt}
      " +msgctxt "@label Type of platform" +msgid "Platform" +msgstr "平台" #: /home/ruben/Projects/Cura/cura/CrashHandler.py:114 -#, python-brace-format -msgctxt "@label PyQt version" -msgid "PyQt version: {pyqt}
      " -msgstr "PyQt 版本: {pyqt}
      " +msgctxt "@label" +msgid "Qt version" +msgstr "Qt 版本" #: /home/ruben/Projects/Cura/cura/CrashHandler.py:115 -#, python-brace-format -msgctxt "@label OpenGL" -msgid "OpenGL: {opengl}
      " -msgstr "OpenGL: {opengl}
      " +msgctxt "@label" +msgid "PyQt version" +msgstr "PyQt 版本" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:130 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:116 +msgctxt "@label OpenGL version" +msgid "OpenGL" +msgstr "OpenGL" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:133 +msgctxt "@label" +msgid "not yet initialised
      " +msgstr "尚未初始化
      " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:136 #, python-brace-format msgctxt "@label OpenGL version" msgid "
    • OpenGL Version: {version}
    • " msgstr "
    • OpenGL 版本: {version}
    • " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:131 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:137 #, python-brace-format msgctxt "@label OpenGL vendor" msgid "
    • OpenGL Vendor: {vendor}
    • " msgstr "
    • OpenGL 供应商: {vendor}
    • " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:132 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:138 #, python-brace-format msgctxt "@label OpenGL renderer" msgid "
    • OpenGL Renderer: {renderer}
    • " msgstr "
    • OpenGL 渲染器: {renderer}
    • " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:141 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:147 msgctxt "@title:groupbox" -msgid "Exception traceback" -msgstr "异常追溯" +msgid "Error traceback" +msgstr "错误追溯" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:208 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:214 msgctxt "@title:groupbox" msgid "Logs" msgstr "日志" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:231 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:237 msgctxt "@title:groupbox" msgid "User description" msgstr "用户说明" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:246 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:252 msgctxt "@action:button" msgid "Send report" msgstr "发送报告" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:256 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:274 msgctxt "@info:progress" msgid "Loading machines..." msgstr "正在载入打印机..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:661 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:660 msgctxt "@info:progress" msgid "Setting up scene..." msgstr "正在设置场景..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:703 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:702 msgctxt "@info:progress" msgid "Loading interface..." msgstr "正在载入界面…" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:874 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:899 #, 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:1348 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1417 #, 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:1357 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1426 #, 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:1416 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1495 msgctxt "@info:status" msgid "The selected model was too small to load." msgstr "所选模型过小,无法加载。" @@ -1281,12 +1386,11 @@ msgstr "X (宽度)" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:119 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:129 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:235 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:288 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:300 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:391 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:401 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:413 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:840 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:383 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:394 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:412 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:424 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:849 msgctxt "@label" msgid "mm" msgstr "mm" @@ -1376,68 +1480,67 @@ msgctxt "@tooltip" msgid "The height difference between the tip of the nozzle and the gantry system (X and Y axes). Used to prevent collisions between previous prints and the gantry when printing \"One at a Time\"." msgstr "喷嘴尖端与十字轴系统(X 轴和 Y 轴)之间的高度差。 用于防止“排队”打印时之前的打印品与十字轴发生碰撞。" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:255 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:254 msgctxt "@label" msgid "Number of Extruders" msgstr "挤出机数目" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:289 -msgctxt "@tooltip" -msgid "The nominal diameter of filament supported by the printer. The exact diameter will be overridden by the material and/or the profile." -msgstr "打印机所支持耗材的公称直径。 材料和/或配置文件将覆盖精确直径。" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:291 -msgctxt "@label" -msgid "Material diameter" -msgstr "材料直径" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:299 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:390 -msgctxt "@label" -msgid "Nozzle size" -msgstr "喷嘴孔径" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:317 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:310 msgctxt "@label" msgid "Start Gcode" msgstr "GCode 开始部分" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:327 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:320 msgctxt "@tooltip" msgid "Gcode commands to be executed at the very start." msgstr "将在开始时执行的 Gcode 命令。" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:336 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:329 msgctxt "@label" msgid "End Gcode" msgstr "GCode 结束部分" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:346 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:339 msgctxt "@tooltip" msgid "Gcode commands to be executed at the very end." msgstr "将在结束时执行的 Gcode 命令。" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:378 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:370 msgctxt "@label" msgid "Nozzle Settings" msgstr "喷嘴设置" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:400 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:382 +msgctxt "@label" +msgid "Nozzle size" +msgstr "喷嘴孔径" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:393 +msgctxt "@label" +msgid "Compatible material diameter" +msgstr "兼容的材料直径" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:395 +msgctxt "@tooltip" +msgid "The nominal diameter of filament supported by the printer. The exact diameter will be overridden by the material and/or the profile." +msgstr "打印机所支持耗材的公称直径。 材料和/或配置文件将覆盖精确直径。" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:411 msgctxt "@label" msgid "Nozzle offset X" msgstr "喷嘴偏移 X" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:412 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:423 msgctxt "@label" msgid "Nozzle offset Y" msgstr "喷嘴偏移 Y" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:433 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:444 msgctxt "@label" msgid "Extruder Start Gcode" msgstr "挤出机 Gcode 开始部分" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:451 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:462 msgctxt "@label" msgid "Extruder End Gcode" msgstr "挤出机 Gcode 结束部分" @@ -1450,8 +1553,9 @@ msgstr "更新日志" #: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.qml:37 #: /home/ruben/Projects/Cura/plugins/USBPrinting/FirmwareUpdateWindow.qml:107 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:55 -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:445 -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:357 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:306 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:456 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:492 #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:80 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:123 #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:147 @@ -1532,7 +1636,7 @@ msgstr "编辑" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:96 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:50 #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:95 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:190 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:171 msgctxt "@action:button" msgid "Remove" msgstr "删除" @@ -1554,12 +1658,12 @@ msgid "Type" msgstr "类型" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:233 -msgctxt "@label" +msgctxt "@label Printer name" msgid "Ultimaker 3" msgstr "Ultimaker 3" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:236 -msgctxt "@label" +msgctxt "@label Printer name" msgid "Ultimaker 3 Extended" msgstr "Ultimaker 3 Extended" @@ -1605,8 +1709,6 @@ msgid "Enter the IP address or hostname of your printer on the network." msgstr "输入打印机在网络上的 IP 地址或主机名。" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:379 -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:92 -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:88 #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:181 msgctxt "@action:button" msgid "OK" @@ -1627,6 +1729,11 @@ msgctxt "@label: arg 1 is group name" msgid "%1 is not set up to host a group of connected Ultimaker 3 printers" msgstr "%1 未设置为运行一组连接的 Ultimaker 3 打印机" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterMonitorItem.qml:55 +msgctxt "@label link to connect manager" +msgid "Add/Remove printers" +msgstr "添加/删除打印机" + #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/OpenPanelButton.qml:14 msgctxt "@info:tooltip" msgid "Opens the print jobs page with your default web browser." @@ -1657,11 +1764,16 @@ msgid "Available" msgstr "可用" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:43 -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:101 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:100 msgctxt "@label:MonitorStatus" msgid "Lost connection with the printer" msgstr "与打印机的连接中断" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:47 +msgctxt "@label Printer status" +msgid "Unknown" +msgstr "未知" + #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:257 msgctxt "@label:status" msgid "Disabled" @@ -1753,138 +1865,250 @@ msgctxt "@action:button" msgid "Activate Configuration" msgstr "应用配置" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:20 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:21 msgctxt "@title:window" -msgid "Cura SolidWorks Plugin Configuration" -msgstr "Cura SolidWorks 插件配置" +msgid "SolidWorks: Export wizard" +msgstr "SolidWorks:导出向导" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:44 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:45 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:140 msgctxt "@action:label" -msgid "Default quality of the exported STL:" -msgstr "导出 STL 的默认质量:" +msgid "Quality:" +msgstr "质量:" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:79 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:78 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:179 msgctxt "@option:curaSolidworksStlQuality" -msgid "Always ask" -msgstr "总是询问" +msgid "Fine (3D-printing)" +msgstr "精细(3D 打印)" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:80 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:79 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:180 msgctxt "@option:curaSolidworksStlQuality" -msgid "Always use Fine quality" -msgstr "总是使用精细品质" +msgid "Coarse (3D-printing)" +msgstr "粗糙(3D 打印)" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:81 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:80 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:181 msgctxt "@option:curaSolidworksStlQuality" -msgid "Always use Coarse quality" -msgstr "总是使用粗糙品质" +msgid "Fine (SolidWorks)" +msgstr "精细 (SolidWorks)" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:20 -msgctxt "@title:window" -msgid "Import SolidWorks File as STL..." -msgstr "导入 SolidWorks 文件为 STL..." - -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:43 -msgctxt "@info:tooltip" -msgid "Quality of the Exported STL" -msgstr "导出 STL 的质量" - -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:48 -msgctxt "@action:label" -msgid "Quality" -msgstr "质量" - -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:62 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:81 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:182 msgctxt "@option:curaSolidworksStlQuality" -msgid "Coarse" -msgstr "粗糙" +msgid "Coarse (SolidWorks)" +msgstr "粗糙 (SolidWorks)" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:63 -msgctxt "@option:curaSolidworksStlQuality" -msgid "Fine" -msgstr "精细" - -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:78 -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:82 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:94 msgctxt "@text:window" -msgid "Remember my choice" -msgstr "记住我的选择" +msgid "Show this dialog again" +msgstr "再次显示此对话框" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:81 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:104 +msgctxt "@action:button" +msgid "Continue" +msgstr "继续" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:116 +msgctxt "@action:button" +msgid "Abort" +msgstr "中止" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:21 +msgctxt "@title:window" +msgid "How to install Cura SolidWorks macro" +msgstr "如何安装 Cura SolidWorks 宏" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:62 +msgctxt "@description:label" +msgid "Steps:" +msgstr "步骤:" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:140 +msgctxt "@action:button" +msgid "" +"Open the directory\n" +"with macro and icon" +msgstr "打开宏和图标\n所在的目录" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:160 +msgctxt "@description:label" +msgid "Instructions:" +msgstr "说明:" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:202 +msgctxt "@action:playpause" +msgid "Play" +msgstr "播放" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:206 +msgctxt "@action:playpause" +msgid "Pause" +msgstr "暂停" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:268 +msgctxt "@action:button" +msgid "Previous Step" +msgstr "上一步" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:283 +msgctxt "@action:button" +msgid "Done" +msgstr "完成" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:287 +msgctxt "@action:button" +msgid "Next Step" +msgstr "下一步" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:21 +msgctxt "@title:window" +msgid "SolidWorks plugin: Configuration" +msgstr "SolidWorks 插件:配置" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:39 +msgctxt "@title:tab" +msgid "Conversion settings" +msgstr "转换设置" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:66 +msgctxt "@label" +msgid "First choice:" +msgstr "首选:" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:86 +msgctxt "@text:menu" +msgid "Latest installed version (Recommended)" +msgstr "最新安装的版本(推荐)" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:95 +msgctxt "@text:menu" +msgid "Default version" +msgstr "默认版本" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:193 +msgctxt "@label" +msgid "Show wizard before opening SolidWorks files" +msgstr "在打开 SolidWorks 文件前显示向导" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:203 +msgctxt "@label" +msgid "Automatically rotate opened file into normed orientation" +msgstr "自动将打开的文件旋转到标准方向" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:210 +msgctxt "@title:tab" +msgid "Installation(s)" +msgstr "装置" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:284 +msgctxt "@label" +msgid "COM service found" +msgstr "发现 COM 服务" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:295 +msgctxt "@label" +msgid "Executable found" +msgstr "发现可执行文件" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:306 +msgctxt "@label" +msgid "COM starting" +msgstr "COM 启动" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:317 +msgctxt "@label" +msgid "Revision number" +msgstr "版本号" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:328 +msgctxt "@label" +msgid "Functions available" +msgstr "可用功能" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:341 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:264 +msgctxt "@action:button" +msgid "Save" +msgstr "保存" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:117 msgctxt "@label" msgid "Color scheme" msgstr "颜色方案" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:96 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:132 msgctxt "@label:listbox" msgid "Material Color" msgstr "材料颜色" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:100 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:136 msgctxt "@label:listbox" msgid "Line Type" msgstr "走线类型" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:104 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:140 msgctxt "@label:listbox" msgid "Feedrate" msgstr "进给速度" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:108 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:144 msgctxt "@label:listbox" msgid "Layer thickness" msgstr "层厚度" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:148 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:185 msgctxt "@label" msgid "Compatibility Mode" msgstr "兼容模式" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:230 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:264 msgctxt "@label" msgid "Show Travels" msgstr "显示移动轨迹" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:236 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:270 msgctxt "@label" msgid "Show Helpers" msgstr "显示打印辅助结构" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:242 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:276 msgctxt "@label" msgid "Show Shell" msgstr "显示外壳" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:248 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:282 msgctxt "@label" msgid "Show Infill" msgstr "显示填充" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:297 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:330 msgctxt "@label" msgid "Only Show Top Layers" msgstr "只显示顶层" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:306 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:339 msgctxt "@label" msgid "Show 5 Detailed Layers On Top" msgstr "在顶部显示 5 层打印细节" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:317 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:350 msgctxt "@label" msgid "Top / Bottom" msgstr "顶 / 底层" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:321 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:354 msgctxt "@label" msgid "Inner Wall" msgstr "内壁" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:378 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:410 msgctxt "@label" msgid "min" msgstr "最小" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:420 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:452 msgctxt "@label" msgid "max" msgstr "最大" @@ -1909,7 +2133,7 @@ msgctxt "@label" msgid "Settings" msgstr "设置" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:455 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:466 msgctxt "@info:tooltip" msgid "Change active post-processing scripts" msgstr "更改目前启用的后期处理脚本" @@ -1984,23 +2208,53 @@ msgctxt "@action:label" msgid "Smoothing" msgstr "平滑" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:208 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:38 +msgctxt "@label" +msgid "Mesh Type" +msgstr "网格类型" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:69 +msgctxt "@label" +msgid "Normal model" +msgstr "正常模式" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:76 +msgctxt "@label" +msgid "Print as support" +msgstr "打印为支撑" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:84 +msgctxt "@label" +msgid "Don't support overlap with other models" +msgstr "不支持与其他模型重叠" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:92 +msgctxt "@label" +msgid "Modify settings for overlap with other models" +msgstr "修改与其他模型重叠的设置" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:100 +msgctxt "@label" +msgid "Modify settings for infill of other models" +msgstr "修改其他模型填充物的设置" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:333 msgctxt "@action:button" msgid "Select settings" msgstr "选择设置" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:248 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:375 msgctxt "@title:window" msgid "Select Settings to Customize for this model" msgstr "选择对此模型的自定义设置" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:272 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:402 #: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:91 msgctxt "@label:textbox" msgid "Filter..." msgstr "筛选…" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:296 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:426 msgctxt "@label:checkbox" msgid "Show all" msgstr "显示全部" @@ -2357,66 +2611,66 @@ msgctxt "@label" msgid "Everything is in order! You're done with your CheckUp." msgstr "一切正常!你已经完成检查。" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:88 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:87 msgctxt "@label:MonitorStatus" msgid "Not connected to a printer" msgstr "未连接至打印机" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:90 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:89 msgctxt "@label:MonitorStatus" msgid "Printer does not accept commands" msgstr "打印机不接受命令" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:96 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:95 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:194 msgctxt "@label:MonitorStatus" msgid "In maintenance. Please check the printer" msgstr "维护中。请检查打印机" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:103 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:102 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:184 msgctxt "@label:MonitorStatus" msgid "Printing..." msgstr "打印中..." -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:106 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:105 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:186 msgctxt "@label:MonitorStatus" msgid "Paused" msgstr "已暂停" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:109 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:108 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:188 msgctxt "@label:MonitorStatus" msgid "Preparing..." msgstr "初始化中..." -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:111 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:110 msgctxt "@label:MonitorStatus" msgid "Please remove the print" msgstr "请取出打印件" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:237 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:241 msgctxt "@label:" msgid "Resume" msgstr "恢复" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:241 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:245 msgctxt "@label:" msgid "Pause" msgstr "暂停" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:270 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:274 msgctxt "@label:" msgid "Abort Print" msgstr "中止打印" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:280 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:284 msgctxt "@window:title" msgid "Abort print" msgstr "中止打印" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:282 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:286 msgctxt "@label" msgid "Are you sure you want to abort the print?" msgstr "您确定要中止打印吗?" @@ -2449,19 +2703,19 @@ msgid "Customized" msgstr "自定义" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:157 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:593 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:595 msgctxt "@option:discardOrKeep" msgid "Always ask me this" msgstr "总是询问" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:158 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:594 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:596 msgctxt "@option:discardOrKeep" msgid "Discard and never ask again" msgstr "舍弃更改,并不再询问此问题" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:159 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:595 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:597 msgctxt "@option:discardOrKeep" msgid "Keep and never ask again" msgstr "保留更改,并不再询问此问题" @@ -2496,72 +2750,72 @@ msgctxt "@label" msgid "Brand" msgstr "品牌" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:92 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:88 msgctxt "@label" msgid "Material Type" msgstr "材料类型" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:105 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:97 msgctxt "@label" msgid "Color" msgstr "颜色" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:139 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:141 msgctxt "@label" msgid "Properties" msgstr "属性" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:141 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:143 msgctxt "@label" msgid "Density" msgstr "密度" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:156 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:158 msgctxt "@label" msgid "Diameter" msgstr "直径" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:185 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:187 msgctxt "@label" msgid "Filament Cost" msgstr "耗材成本" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:201 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:203 msgctxt "@label" msgid "Filament weight" msgstr "耗材重量" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:218 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:220 msgctxt "@label" msgid "Filament length" msgstr "耗材长度" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:227 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:229 msgctxt "@label" msgid "Cost per Meter" msgstr "每米成本" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:241 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:243 msgctxt "@label" msgid "This material is linked to %1 and shares some of its properties." msgstr "此材料与 %1 相关联,并共享其某些属性。" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:248 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:250 msgctxt "@label" msgid "Unlink Material" msgstr "解绑材料" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:259 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:261 msgctxt "@label" msgid "Description" msgstr "描述" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:272 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:274 msgctxt "@label" msgid "Adhesion Information" msgstr "粘附信息" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:298 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:300 msgctxt "@label" msgid "Print settings" msgstr "打印设置" @@ -2602,7 +2856,7 @@ msgid "Unit" msgstr "单位" #: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:14 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:439 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:509 msgctxt "@title:tab" msgid "General" msgstr "基本" @@ -2617,230 +2871,255 @@ msgctxt "@label" msgid "Language:" msgstr "语言:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:205 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:207 msgctxt "@label" msgid "Currency:" msgstr "币种:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:219 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:221 msgctxt "@label" msgid "Theme:" msgstr "主题:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:279 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:281 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:296 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:298 msgctxt "@info:tooltip" msgid "Slice automatically when changing settings." msgstr "当设置被更改时自动进行切片。" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:304 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:306 msgctxt "@option:check" msgid "Slice automatically" msgstr "自动切片" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:318 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:320 msgctxt "@label" msgid "Viewport behavior" msgstr "视区行为" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:326 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:328 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:335 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:337 msgctxt "@option:check" msgid "Display overhang" msgstr "显示悬垂(Overhang)" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:342 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:344 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:347 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:349 msgctxt "@action:button" msgid "Center camera when item is selected" msgstr "当项目被选中时,自动对中视角" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:356 +#: /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:361 +#: /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:370 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:372 msgctxt "@info:tooltip" msgid "Should zooming move in the direction of the mouse?" msgstr "是否跟随鼠标方向进行缩放?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:375 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:377 msgctxt "@action:button" msgid "Zoom toward mouse direction" msgstr "跟随鼠标方向缩放" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:384 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:386 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:389 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:391 msgctxt "@option:check" msgid "Ensure models are kept apart" msgstr "确保每个模型都保持分离" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:397 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:399 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:402 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:404 msgctxt "@option:check" msgid "Automatically drop models to the build plate" msgstr "自动下降模型到打印平台" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:414 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:416 msgctxt "@info:tooltip" msgid "Show caution message in gcode reader." msgstr "在 G-code 读取器中显示警告信息。" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:423 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:425 msgctxt "@option:check" msgid "Caution message in gcode reader" msgstr "G-code 读取器中的警告信息" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:430 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:432 msgctxt "@info:tooltip" msgid "Should layer be forced into compatibility mode?" msgstr "层视图要强制进入兼容模式吗?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:435 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:437 msgctxt "@option:check" msgid "Force layer view compatibility mode (restart required)" msgstr "强制层视图兼容模式(需要重新启动)" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:451 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:453 msgctxt "@label" msgid "Opening and saving files" msgstr "打开并保存文件" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:457 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:459 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:462 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:464 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:473 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:478 msgctxt "@option:check" msgid "Scale extremely small models" msgstr "放大过小模型" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:485 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:487 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:490 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:492 msgctxt "@option:check" msgid "Add machine prefix to job name" msgstr "将机器前缀添加到作业名称中" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:499 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:501 msgctxt "@info:tooltip" msgid "Should a summary be shown when saving a project file?" msgstr "保存项目文件时是否显示摘要?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:503 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:505 msgctxt "@option:check" msgid "Show summary dialog when saving project" msgstr "保存项目时显示摘要对话框" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:512 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:514 msgctxt "@info:tooltip" msgid "Default behavior when opening a project file" msgstr "打开项目文件时的默认行为" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:520 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:522 msgctxt "@window:text" msgid "Default behavior when opening a project file: " msgstr "打开项目文件时的默认行为:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:533 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:535 msgctxt "@option:openProject" msgid "Always ask" msgstr "总是询问" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:534 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:536 msgctxt "@option:openProject" msgid "Always open as a project" msgstr "始终作为一个项目打开" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:535 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:537 msgctxt "@option:openProject" msgid "Always import models" msgstr "始终导入模型" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:571 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:573 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:580 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:582 msgctxt "@label" msgid "Override Profile" msgstr "重写配置文件" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:629 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:631 msgctxt "@label" msgid "Privacy" msgstr "隐私" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:636 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:638 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:641 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:643 msgctxt "@option:check" msgid "Check for updates on start" msgstr "启动时检查更新" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:651 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:653 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:656 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:658 msgctxt "@option:check" msgid "Send (anonymous) print information" msgstr "(匿名)发送打印信息" +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:674 +msgctxt "@label" +msgid "Experimental" +msgstr "实验性" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:680 +msgctxt "@info:tooltip" +msgid "Use multi build plate functionality" +msgstr "使用多打印平台功能" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:685 +msgctxt "@option:check" +msgid "Use multi build plate functionality (restart required)" +msgstr "使用多打印平台功能(需要重启)" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:694 +msgctxt "@info:tooltip" +msgid "Should newly loaded models be arranged on the build plate? Used in conjunction with multi build plate (EXPERIMENTAL)" +msgstr "是否在打印平台上编位新加载的模型?与多打印平台结合使用(实验性)" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:699 +msgctxt "@option:check" +msgid "Do not arrange objects on load" +msgstr "不要编位加载的对象" + #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:444 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:514 msgctxt "@title:tab" msgid "Printers" msgstr "打印机" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:37 #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:51 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:137 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:138 msgctxt "@action:button" msgid "Activate" msgstr "激活" @@ -2883,7 +3162,7 @@ msgid "Waiting for a printjob" msgstr "等待打印作业" #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:448 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:518 msgctxt "@title:tab" msgid "Profiles" msgstr "配置文件" @@ -2909,13 +3188,13 @@ msgid "Duplicate" msgstr "复制" #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:113 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:201 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:182 msgctxt "@action:button" msgid "Import" msgstr "导入" #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:119 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:212 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:193 msgctxt "@action:button" msgid "Export" msgstr "导出" @@ -2981,7 +3260,7 @@ msgid "Export Profile" msgstr "导出配置文件" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:446 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:516 msgctxt "@title:tab" msgid "Materials" msgstr "材料" @@ -2996,60 +3275,60 @@ msgctxt "@action:label %1 is printer name" msgid "Printer: %1" msgstr "打印机:%1" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:149 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:150 msgctxt "@action:button" msgid "Create" msgstr "创建" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:168 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:160 msgctxt "@action:button" msgid "Duplicate" msgstr "复制" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:311 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:319 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:298 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:306 msgctxt "@title:window" msgid "Import Material" msgstr "导入配置" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:320 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:307 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/MaterialsPage.qml:324 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:311 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully imported material %1" msgstr "成功导入材料 %1" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:343 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:358 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:329 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:344 msgctxt "@title:window" msgid "Export Material" msgstr "导出材料" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:362 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:348 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/MaterialsPage.qml:368 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:354 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully exported material to %1" msgstr "成功导出材料至: %1" #: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:18 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:793 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:869 msgctxt "@title:window" msgid "Add Printer" msgstr "新增打印机" -#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:185 +#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:194 msgctxt "@label" msgid "Printer Name:" msgstr "打印机名称:" -#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:208 +#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:217 msgctxt "@action:button" msgid "Add Printer" msgstr "新增打印机" @@ -3176,12 +3455,7 @@ msgctxt "@label" msgid "Profile:" msgstr "配置文件:" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:66 -msgctxt "@" -msgid "No Profile Available" -msgstr "没有配置文件可用" - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:104 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:102 msgctxt "@tooltip" msgid "" "Some setting/override values are different from the values stored in the profile.\n" @@ -3189,37 +3463,37 @@ msgid "" "Click to open the profile manager." msgstr "某些设置/重写值与存储在配置文件中的值不同。\n\n点击打开配置文件管理器。" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:152 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:150 msgctxt "@label:textbox" msgid "Search..." msgstr "搜索..." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:483 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:482 msgctxt "@action:menu" msgid "Copy value to all extruders" msgstr "将值复制到所有挤出机" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:498 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:497 msgctxt "@action:menu" msgid "Hide this setting" msgstr "隐藏此设置" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:508 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:507 msgctxt "@action:menu" msgid "Don't show this setting" msgstr "不再显示此设置" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:512 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:511 msgctxt "@action:menu" msgid "Keep this setting visible" msgstr "保持此设置可见" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:531 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:530 msgctxt "@action:menu" msgid "Configure setting visiblity..." msgstr "配置设置可见性..." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingCategory.qml:123 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingCategory.qml:250 msgctxt "@label" msgid "" "Some hidden settings use values different from their normal calculated value.\n" @@ -3227,27 +3501,27 @@ msgid "" "Click to make these settings visible." msgstr "一些隐藏设置正在使用有别于一般设置的计算值。\n\n单击以使这些设置可见。" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:62 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:61 msgctxt "@label Header for list of settings." msgid "Affects" msgstr "影响" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:67 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:66 msgctxt "@label Header for list of settings." msgid "Affected By" msgstr "受影响项目:" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:157 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:156 msgctxt "@label" -msgid "This setting is always shared between all extruders. Changing it here will change the value for all extruders" -msgstr "此设置始终对所有挤出机有效。在此进行更改将影响所有挤出机。" +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:160 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:159 msgctxt "@label" msgid "The value is resolved from per-extruder values " msgstr "该值将会根据每一个挤出机的设置而确定" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:186 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:190 msgctxt "@label" msgid "" "This setting has a value that is different from the profile.\n" @@ -3255,7 +3529,7 @@ msgid "" "Click to restore the value of the profile." msgstr "此设置的值与配置文件不同。\n\n单击以恢复配置文件的值。" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:284 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:288 msgctxt "@label" msgid "" "This setting is normally calculated, but it currently has an absolute value set.\n" @@ -3263,71 +3537,71 @@ msgid "" "Click to restore the calculated value." msgstr "此设置通常可被自动计算,但其当前已被绝对定义。\n\n单击以恢复自动计算的值。" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:120 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:128 msgctxt "@label:listbox" msgid "Print Setup" msgstr "打印设置" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:120 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:128 msgctxt "@label:listbox" msgid "" "Print Setup disabled\n" "G-code files cannot be modified" msgstr "打印设置已禁用\nG-code 文件无法被修改" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:336 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:342 msgctxt "@label Hours and minutes" msgid "00h 00min" msgstr "00 小时 00 分" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:354 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:359 msgctxt "@tooltip" -msgid "Time specification
      " -msgstr "时间规范
      " +msgid "Time specification" +msgstr "时间规格" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:429 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:441 msgctxt "@label" msgid "Cost specification" msgstr "成本规定" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:434 -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:445 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:446 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:455 msgctxt "@label m for meter" msgid "%1m" msgstr "%1m" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:435 -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:446 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:447 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:456 msgctxt "@label g for grams" msgid "%1g" msgstr "%1g" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:444 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:454 msgctxt "@label" msgid "Total:" msgstr "总计:" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:498 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:504 msgctxt "@label Print estimates: m for meters, g for grams, %4 is currency and %3 is print cost" msgid "%1m / ~ %2g / ~ %4 %3" msgstr "%1m / ~ %2g / ~ %4 %3" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:503 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:509 msgctxt "@label Print estimates: m for meters, g for grams" msgid "%1m / ~ %2g" msgstr "%1m / ~ %2g" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:586 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:591 msgctxt "@tooltip" msgid "Recommended Print Setup

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

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

      Print with finegrained control over every last bit of the slicing process." -msgstr "自定义打印设置
      对切片过程中的每一个细节进行精细控制。" +msgstr "自定义打印设置

      对切片过程中的每一个细节进行精细控制。" -#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:49 +#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:50 msgctxt "@title:menuitem %1 is the automatically selected material" msgid "Automatic: %1" msgstr "自动:%1" @@ -3337,10 +3611,20 @@ msgctxt "@title:menu menubar:toplevel" msgid "&View" msgstr "视图(&V)" +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:37 +msgctxt "@action:inmenu menubar:view" +msgid "&Camera position" +msgstr "摄像头位置(&C)" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:52 +msgctxt "@action:inmenu menubar:view" +msgid "&Build plate" +msgstr "打印平台(&B)" + #: /home/ruben/Projects/Cura/resources/qml/Menus/NozzleMenu.qml:40 msgctxt "@title:menuitem %1 is the nozzle currently loaded in the printer" msgid "Automatic: %1" -msgstr "自动: %1" +msgstr "自动:%1" #: /home/ruben/Projects/Cura/resources/qml/Menus/ContextMenu.qml:25 msgctxt "@label" @@ -3348,13 +3632,13 @@ msgid "Print Selected Model With:" msgid_plural "Print Selected Models With:" msgstr[0] "打印所选模型:" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ContextMenu.qml:83 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ContextMenu.qml:114 msgctxt "@title:window" msgid "Multiply Selected Model" msgid_plural "Multiply Selected Models" msgstr[0] "复制所选模型" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ContextMenu.qml:108 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ContextMenu.qml:139 msgctxt "@label" msgid "Number of Copies" msgstr "复制个数" @@ -3370,7 +3654,7 @@ msgid "No printer connected" msgstr "没有连接打印机" #: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:90 -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:138 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:139 msgctxt "@label" msgid "Extruder" msgstr "挤出机" @@ -3480,251 +3764,291 @@ msgctxt "@label" msgid "Estimated time left" msgstr "预计剩余时间" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:72 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:79 msgctxt "@action:inmenu" msgid "Toggle Fu&ll Screen" msgstr "切换完整界面(&F)" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:79 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:86 msgctxt "@action:inmenu menubar:edit" msgid "&Undo" msgstr "撤销(&U)" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:89 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:96 msgctxt "@action:inmenu menubar:edit" msgid "&Redo" msgstr "重做(&R)" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:99 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:106 msgctxt "@action:inmenu menubar:file" msgid "&Quit" msgstr "退出(&Q)" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:107 -msgctxt "@action:inmenu menubar:view" -msgid "&Reset camera position" -msgstr "重置摄像头位置(&R)" - #: /home/ruben/Projects/Cura/resources/qml/Actions.qml:114 +msgctxt "@action:inmenu menubar:view" +msgid "&3D View" +msgstr "3D 视图(&3)" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:121 +msgctxt "@action:inmenu menubar:view" +msgid "&Front View" +msgstr "正视图(&F)" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:128 +msgctxt "@action:inmenu menubar:view" +msgid "&Top View" +msgstr "顶视图(&T)" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:135 +msgctxt "@action:inmenu menubar:view" +msgid "&Left Side View" +msgstr "左视图(&L)" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:142 +msgctxt "@action:inmenu menubar:view" +msgid "&Right Side View" +msgstr "右视图(&R)" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:149 msgctxt "@action:inmenu" msgid "Configure Cura..." msgstr "配置 Cura…" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:121 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:156 msgctxt "@action:inmenu menubar:printer" msgid "&Add Printer..." msgstr "新增打印机(&A)…" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:127 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:162 msgctxt "@action:inmenu menubar:printer" msgid "Manage Pr&inters..." msgstr "管理打印机(&I)..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:134 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:169 msgctxt "@action:inmenu" msgid "Manage Materials..." msgstr "管理材料…" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:142 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:177 msgctxt "@action:inmenu menubar:profile" msgid "&Update profile with current settings/overrides" msgstr "使用当前设置 / 重写值更新配置文件(&U)" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:150 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:185 msgctxt "@action:inmenu menubar:profile" msgid "&Discard current changes" msgstr "舍弃当前更改(&D)" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:162 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:197 msgctxt "@action:inmenu menubar:profile" msgid "&Create profile from current settings/overrides..." msgstr "从当前设置 / 重写值创建配置文件(&C)…" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:168 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:203 msgctxt "@action:inmenu menubar:profile" msgid "Manage Profiles..." msgstr "管理配置文件.." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:175 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:210 msgctxt "@action:inmenu menubar:help" msgid "Show Online &Documentation" msgstr "显示在线文档(&D)" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:183 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:218 msgctxt "@action:inmenu menubar:help" msgid "Report a &Bug" msgstr "BUG 反馈(&B)" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:191 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:226 msgctxt "@action:inmenu menubar:help" msgid "&About..." msgstr "关于(&A)…" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:198 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:233 msgctxt "@action:inmenu menubar:edit" msgid "Delete &Selected Model" msgid_plural "Delete &Selected Models" msgstr[0] "删除所选模型(&S)" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:208 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:243 msgctxt "@action:inmenu menubar:edit" msgid "Center Selected Model" msgid_plural "Center Selected Models" msgstr[0] "居中所选模型" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:217 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:252 msgctxt "@action:inmenu menubar:edit" msgid "Multiply Selected Model" msgid_plural "Multiply Selected Models" msgstr[0] "复制所选模型" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:226 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:261 msgctxt "@action:inmenu" msgid "Delete Model" msgstr "删除模型" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:234 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:269 msgctxt "@action:inmenu" msgid "Ce&nter Model on Platform" msgstr "使模型居于平台中央(&N)" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:240 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:275 msgctxt "@action:inmenu menubar:edit" msgid "&Group Models" msgstr "绑定模型(&G)" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:250 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:295 msgctxt "@action:inmenu menubar:edit" msgid "Ungroup Models" msgstr "拆分模型" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:260 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:305 msgctxt "@action:inmenu menubar:edit" msgid "&Merge Models" msgstr "合并模型(&M)" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:270 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:315 msgctxt "@action:inmenu" msgid "&Multiply Model..." msgstr "复制模型…(&M)" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:277 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:322 msgctxt "@action:inmenu menubar:edit" msgid "&Select All Models" msgstr "选择所有模型(&S)" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:287 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:332 msgctxt "@action:inmenu menubar:edit" msgid "&Clear Build Plate" msgstr "清空打印平台(&C)" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:297 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:342 msgctxt "@action:inmenu menubar:file" msgid "Re&load All Models" msgstr "重新载入所有模型(&L)" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:306 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:351 +msgctxt "@action:inmenu menubar:edit" +msgid "Arrange All Models To All Build Plates" +msgstr "将所有模型编位到所有打印平台" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:358 msgctxt "@action:inmenu menubar:edit" msgid "Arrange All Models" msgstr "编位所有的模型" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:314 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:366 msgctxt "@action:inmenu menubar:edit" msgid "Arrange Selection" msgstr "为所选模型编位" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:321 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:373 msgctxt "@action:inmenu menubar:edit" msgid "Reset All Model Positions" msgstr "复位所有模型的位置" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:328 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:380 msgctxt "@action:inmenu menubar:edit" msgid "Reset All Model &Transformations" msgstr "复位所有模型的变动(&T)" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:335 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:387 msgctxt "@action:inmenu menubar:file" msgid "&Open File(s)..." msgstr "打开文件(&O)…" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:343 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:395 msgctxt "@action:inmenu menubar:file" msgid "&New Project..." msgstr "新建项目(&N)…" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:350 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:402 msgctxt "@action:inmenu menubar:help" msgid "Show Engine &Log..." msgstr "显示引擎日志(&L)..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:358 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:410 msgctxt "@action:inmenu menubar:help" msgid "Show Configuration Folder" msgstr "显示配置文件夹" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:365 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:417 msgctxt "@action:menu" msgid "Configure setting visibility..." msgstr "配置设定可见性..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:372 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:424 msgctxt "@action:menu" msgid "Browse plugins..." msgstr "浏览插件..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:379 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:431 msgctxt "@action:menu" msgid "Installed plugins..." msgstr "已安装插件..." -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:28 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:438 +msgctxt "@action:inmenu menubar:view" +msgid "Expand/Collapse Sidebar" +msgstr "展开/折叠侧边栏" + +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:26 msgctxt "@label:PrintjobStatus" msgid "Please load a 3D model" msgstr "请载入一个 3D 模型" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:34 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:36 msgctxt "@label:PrintjobStatus" msgid "Ready to slice" msgstr "切片已准备就绪" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:36 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:38 msgctxt "@label:PrintjobStatus" msgid "Slicing..." msgstr "正在切片..." -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:38 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:40 msgctxt "@label:PrintjobStatus %1 is target operation" msgid "Ready to %1" msgstr "%1 已准备就绪" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:40 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:42 msgctxt "@label:PrintjobStatus" msgid "Unable to Slice" msgstr "无法切片" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:42 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:44 msgctxt "@label:PrintjobStatus" msgid "Slicing unavailable" msgstr "切片不可用" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:162 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:171 +msgctxt "@info:tooltip" +msgid "Slice current printjob" +msgstr "分割当前打印作业" + +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:171 +msgctxt "@info:tooltip" +msgid "Cancel slicing process" +msgstr "取消切片流程" + +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:183 msgctxt "@label:Printjob" msgid "Prepare" msgstr "准备" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:162 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:183 msgctxt "@label:Printjob" msgid "Cancel" msgstr "取消" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:302 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:317 msgctxt "@info:tooltip" msgid "Select the active output device" msgstr "选择活动的输出装置" #: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:19 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:620 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:696 msgctxt "@title:window" msgid "Open file(s)" msgstr "打开文件" @@ -3744,114 +4068,114 @@ msgctxt "@title:window" msgid "Ultimaker Cura" msgstr "Ultimaker Cura" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:81 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:102 msgctxt "@title:menu menubar:toplevel" msgid "&File" msgstr "文件(&F)" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:98 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:119 msgctxt "@action:inmenu menubar:file" msgid "&Save Selection to File" msgstr "保存到文件(&S)" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:107 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:128 msgctxt "@title:menu menubar:file" msgid "Save &As..." msgstr "另存为(&A)…" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:118 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:139 msgctxt "@title:menu menubar:file" -msgid "Save project" -msgstr "保存项目" +msgid "Save &Project..." +msgstr "保存项目(&P)..." -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:141 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:162 msgctxt "@title:menu menubar:toplevel" msgid "&Edit" msgstr "编辑(&E)" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:158 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:179 msgctxt "@title:menu" msgid "&View" msgstr "视图(&V)" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:163 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:184 msgctxt "@title:menu" msgid "&Settings" msgstr "设置(&S)" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:165 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:186 msgctxt "@title:menu menubar:toplevel" msgid "&Printer" msgstr "打印机(&P)" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:175 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:187 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:196 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:208 msgctxt "@title:menu" msgid "&Material" msgstr "材料(&M)" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:176 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:188 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:197 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:209 msgctxt "@title:menu" msgid "&Profile" msgstr "配置文件(&P)" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:180 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:201 msgctxt "@action:inmenu" msgid "Set as Active Extruder" msgstr "设为主要挤出机" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:198 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:219 msgctxt "@title:menu menubar:toplevel" msgid "E&xtensions" msgstr "扩展(&X)" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:232 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:253 msgctxt "@title:menu menubar:toplevel" msgid "P&lugins" msgstr "插件" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:240 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:261 msgctxt "@title:menu menubar:toplevel" msgid "P&references" msgstr "偏好设置(&R)" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:248 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:269 msgctxt "@title:menu menubar:toplevel" msgid "&Help" msgstr "帮助(&H)" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:330 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:351 msgctxt "@action:button" msgid "Open File" msgstr "打开文件" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:442 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:512 msgctxt "@title:tab" msgid "Settings" msgstr "设置" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:478 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:554 msgctxt "@title:window" msgid "New project" msgstr "新建项目" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:479 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:555 msgctxt "@info:question" msgid "Are you sure you want to start a new project? This will clear the build plate and any unsaved settings." msgstr "你确定要开始一个新项目吗?这将清除打印平台及任何未保存的设置。" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:721 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:797 msgctxt "@window:title" msgid "Install Plugin" msgstr "安装插件" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:728 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:804 msgctxt "@title:window" msgid "Open File(s)" msgstr "打开文件" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:731 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:807 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 文件,请仅选择一个。" @@ -3876,100 +4200,85 @@ msgctxt "@action:label" msgid "Don't show project summary on save again" msgstr "保存时不再显示项目摘要" -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:264 -msgctxt "@action:button" -msgid "Save" -msgstr "保存" - -#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:74 -msgctxt "@title:tab" -msgid "Prepare" -msgstr "准备" - -#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:100 -msgctxt "@title:tab" -msgid "Monitor" -msgstr "监控" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:163 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:175 msgctxt "@label" msgid "Layer Height" msgstr "层高" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:323 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:345 msgctxt "@tooltip" msgid "A custom profile is currently active. To enable the quality slider, choose a default quality profile in Custom tab" msgstr "自定义配置文件目前处于活动状态。 如要启用质量滑块,请在“自定义”选项卡中选择一个默认质量配置文件" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:340 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:362 msgctxt "@label" msgid "Print Speed" msgstr "打印速度" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:350 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:374 msgctxt "@label" msgid "Slower" msgstr "更慢" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:361 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:385 msgctxt "@label" msgid "Faster" msgstr "更快" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:388 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:423 msgctxt "@tooltip" msgid "You have modified some profile settings. If you want to change these go to custom mode." msgstr "您已修改部分配置文件设置。 如果您想对其进行更改,请转至自定义模式。" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:413 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:446 msgctxt "@label" msgid "Infill" msgstr "填充" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:633 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:668 msgctxt "@label" msgid "Gradual infill will gradually increase the amount of infill towards the top." msgstr "渐层填充(Gradual infill)将随着打印高度的提升而逐渐加大填充密度。" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:645 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:680 msgctxt "@label" msgid "Enable gradual" msgstr "启用渐层" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:712 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:747 msgctxt "@label" msgid "Generate Support" msgstr "生成支撑" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:746 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:781 msgctxt "@label" msgid "Generate structures to support parts of the model which have overhangs. Without these structures, such parts would collapse during printing." msgstr "在模型的悬垂(Overhangs)部分生成支撑结构。若不这样做,这些部分在打印时将倒塌。" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:764 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:799 msgctxt "@label" msgid "Support Extruder" msgstr "支撑用挤出机" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:816 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:851 msgctxt "@label" msgid "Select which extruder to use for support. This will build up supporting structures below the model to prevent the model from sagging or printing in mid air." msgstr "选择用于支撑的挤出机。该挤出机将在模型之下建立支撑结构,以防止模型下垂或在空中打印。" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:839 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:874 msgctxt "@label" msgid "Build Plate Adhesion" msgstr "打印平台附着" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:894 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:929 msgctxt "@label" msgid "Enable printing a brim or raft. This will add a flat area around or under your object which is easy to cut off afterwards." msgstr "允许打印 Brim 或 Raft。这将在您的对象周围或下方添加一个容易切断的平面区域。" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:934 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:969 msgctxt "@label" msgid "Need help improving your prints?
      Read the Ultimaker Troubleshooting Guides" -msgstr "需要帮助改善您的打印?阅读 Ultimaker 故障排除指南" +msgstr "需要帮助改善您的打印?
      阅读 Ultimaker 故障排除指南" #: /home/ruben/Projects/Cura/resources/qml/ExtruderButton.qml:16 msgctxt "@label %1 is filled in with the name of an extruder" @@ -3982,17 +4291,22 @@ msgctxt "@title:window" msgid "Open project file" msgstr "打开项目文件" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:72 +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:93 msgctxt "@text:window" msgid "This is a Cura project file. Would you like to open it as a project or import the models from it?" msgstr "这是一个 Cura 项目文件。您想将其作为一个项目打开还是从中导入模型?" #: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:103 +msgctxt "@text:window" +msgid "Remember my choice" +msgstr "记住我的选择" + +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:122 msgctxt "@action:button" msgid "Open as project" msgstr "作为项目打开" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:122 +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:131 msgctxt "@action:button" msgid "Import models" msgstr "导入模型" @@ -4002,21 +4316,36 @@ msgctxt "@title:window" msgid "Engine Log" msgstr "引擎日志" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:242 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:245 msgctxt "@label" msgid "Material" msgstr "材料" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:349 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:352 msgctxt "@label" -msgid "Check compatibility" -msgstr "检查兼容性" +msgid "Check compatibility" +msgstr "检查兼容性" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:369 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:372 msgctxt "@tooltip" msgid "Click to check the material compatibility on Ultimaker.com." msgstr "点击查看 Ultimaker.com 上的材料兼容情况。" +#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:211 +msgctxt "@option:check" +msgid "See only current build plate" +msgstr "只能看到当前的打印平台" + +#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:227 +msgctxt "@action:button" +msgid "Arrange to all build plates" +msgstr "编位到所有打印平台" + +#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:247 +msgctxt "@action:button" +msgid "Arrange current build plate" +msgstr "编位当前打印平台" + #: MachineSettingsAction/plugin.json msgctxt "description" msgid "Provides a way to change machine settings (such as build volume, nozzle size, etc)" @@ -4105,7 +4434,27 @@ msgstr "接受 G-Code 并将其发送到一台打印机。 插件也可以更新 #: USBPrinting/plugin.json msgctxt "name" msgid "USB printing" -msgstr "USB 联机打印" +msgstr "USB 打印" + +#: PrepareStage/plugin.json +msgctxt "description" +msgid "Provides a prepare stage in Cura." +msgstr "在 Cura 中提供准备阶段。" + +#: PrepareStage/plugin.json +msgctxt "name" +msgid "Prepare Stage" +msgstr "准备阶段" + +#: CuraLiveScriptingPlugin/plugin.json +msgctxt "description" +msgid "Provides an edit window for direct script editing." +msgstr "提供直接脚本编辑的编辑窗口。" + +#: CuraLiveScriptingPlugin/plugin.json +msgctxt "name" +msgid "Live scripting tool" +msgstr "实时脚本工具" #: RemovableDriveOutputDevice/plugin.json msgctxt "description" @@ -4127,6 +4476,16 @@ msgctxt "name" msgid "UM3 Network Connection" msgstr "UM3 网络连接" +#: MonitorStage/plugin.json +msgctxt "description" +msgid "Provides a monitor stage in Cura." +msgstr "在 Cura 中提供监视阶段。" + +#: MonitorStage/plugin.json +msgctxt "name" +msgid "Monitor Stage" +msgstr "监视阶段" + #: FirmwareUpdateChecker/plugin.json msgctxt "description" msgid "Checks for firmware updates." @@ -4139,8 +4498,8 @@ msgstr "固件更新检查程序" #: CuraSolidWorksPlugin/plugin.json msgctxt "description" -msgid "Gives you the possibility to open certain files via SolidWorks itself. These are then converted and loaded into Cura" -msgstr "让您可以通过 SolidWorks 自身打开特定文件。 随后会将这些文件进行转换并载入 Cura" +msgid "Gives you the possibility to open certain files using SolidWorks itself. Conversion is done by this plugin and additional optimizations." +msgstr "允许您使用 SolidWorks 打开某些文件。转换通过此插件和其他优化完成。" #: CuraSolidWorksPlugin/plugin.json msgctxt "name" @@ -4207,6 +4566,16 @@ msgctxt "name" msgid "Legacy Cura Profile Reader" msgstr "旧版 Cura 配置文件读取器" +#: CuraBlenderPlugin/plugin.json +msgctxt "description" +msgid "Helps to open Blender files directly in Cura." +msgstr "帮助直接在 Cura 中打开 Blender 文件。" + +#: CuraBlenderPlugin/plugin.json +msgctxt "name" +msgid "Blender Integration (experimental)" +msgstr "Blender 集成(实验性)" + #: GCodeProfileReader/plugin.json msgctxt "description" msgid "Provides support for importing profiles from g-code files." @@ -4367,6 +4736,16 @@ 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." @@ -4407,6 +4786,156 @@ msgctxt "name" msgid "Cura Profile Reader" msgstr "Cura 配置文件读取器" +#~ msgctxt "@label" +#~ msgid "Unknown" +#~ msgstr "未知" + +#~ msgctxt "@info:status" +#~ msgid "Errors appeared while opening your SolidWorks file! Please check, whether it is possible to open your file in SolidWorks itself without any problems as well!" +#~ msgstr "打开 SolidWorks 文件时发生错误! 请检查能否在 SolidWorks 中正常打开文件而不出现任何问题!" + +#~ msgctxt "@info:status" +#~ msgid "Error while starting %s!" +#~ msgstr "启动 %s 时发生错误!" + +#~ msgctxt "@item:inlistbox" +#~ msgid "Simulation view" +#~ msgstr "仿真视图" + +#~ msgctxt "@info" +#~ msgid "Cura collects anonymised slicing statistics. You can disable this in the preferences." +#~ msgstr "Cura 收集匿名切片统计资料。 您可以在偏好设置中禁用此选项。" + +#~ msgctxt "@action:button" +#~ msgid "Dismiss" +#~ msgstr "关闭此通知" + +#~ msgctxt "@menuitem" +#~ msgid "Global" +#~ msgstr "全局" + +#~ msgctxt "@label crash message" +#~ msgid "" +#~ "

      A fatal exception has occurred. 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 "" +#~ "

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

      \n" +#~ "

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

      \n" +#~ " " + +#~ msgctxt "@label Cura version" +#~ msgid "Cura version: {version}
      " +#~ msgstr "Cura 版本: {version}
      " + +#~ msgctxt "@label Platform" +#~ msgid "Platform: {platform}
      " +#~ msgstr "平台: {platform}
      " + +#~ msgctxt "@label Qt version" +#~ msgid "Qt version: {qt}
      " +#~ msgstr "Qt 版本: {qt}
      " + +#~ msgctxt "@label PyQt version" +#~ msgid "PyQt version: {pyqt}
      " +#~ msgstr "PyQt 版本: {pyqt}
      " + +#~ msgctxt "@label OpenGL" +#~ msgid "OpenGL: {opengl}
      " +#~ msgstr "OpenGL: {opengl}
      " + +#~ msgctxt "@title:groupbox" +#~ msgid "Exception traceback" +#~ msgstr "异常追溯" + +#~ msgctxt "@label" +#~ msgid "Material diameter" +#~ msgstr "材料直径" + +#~ msgctxt "@label" +#~ msgid "Ultimaker 3" +#~ msgstr "Ultimaker 3" + +#~ msgctxt "@label" +#~ msgid "Ultimaker 3 Extended" +#~ msgstr "Ultimaker 3 Extended" + +#~ msgctxt "@title:window" +#~ msgid "Cura SolidWorks Plugin Configuration" +#~ msgstr "Cura SolidWorks 插件配置" + +#~ msgctxt "@action:label" +#~ msgid "Default quality of the exported STL:" +#~ msgstr "导出 STL 的默认质量:" + +#~ msgctxt "@option:curaSolidworksStlQuality" +#~ msgid "Always ask" +#~ msgstr "总是询问" + +#~ msgctxt "@option:curaSolidworksStlQuality" +#~ msgid "Always use Fine quality" +#~ msgstr "总是使用精细品质" + +#~ msgctxt "@option:curaSolidworksStlQuality" +#~ msgid "Always use Coarse quality" +#~ msgstr "总是使用粗糙品质" + +#~ msgctxt "@title:window" +#~ msgid "Import SolidWorks File as STL..." +#~ msgstr "导入 SolidWorks 文件为 STL..." + +#~ msgctxt "@info:tooltip" +#~ msgid "Quality of the Exported STL" +#~ msgstr "导出 STL 的质量" + +#~ msgctxt "@action:label" +#~ msgid "Quality" +#~ msgstr "质量" + +#~ msgctxt "@option:curaSolidworksStlQuality" +#~ msgid "Coarse" +#~ msgstr "粗糙" + +#~ msgctxt "@option:curaSolidworksStlQuality" +#~ msgid "Fine" +#~ msgstr "精细" + +#~ msgctxt "@" +#~ msgid "No Profile Available" +#~ msgstr "没有配置文件可用" + +#~ msgctxt "@label" +#~ msgid "This setting is always shared between all extruders. Changing it here will change the value for all extruders" +#~ msgstr "此设置始终对所有挤出机有效。在此进行更改将影响所有挤出机。" + +#~ msgctxt "@tooltip" +#~ msgid "Time specification
      " +#~ msgstr "时间规范
      " + +#~ msgctxt "@action:inmenu menubar:view" +#~ msgid "&Reset camera position" +#~ msgstr "重置摄像头位置(&R)" + +#~ msgctxt "@title:menu menubar:file" +#~ msgid "Save project" +#~ msgstr "保存项目" + +#~ msgctxt "@title:tab" +#~ msgid "Prepare" +#~ msgstr "准备" + +#~ msgctxt "@title:tab" +#~ msgid "Monitor" +#~ msgstr "监控" + +#~ msgctxt "@label" +#~ msgid "Check compatibility" +#~ msgstr "检查兼容性" + +#~ msgctxt "description" +#~ msgid "Gives you the possibility to open certain files via SolidWorks itself. These are then converted and loaded into Cura" +#~ msgstr "让您可以通过 SolidWorks 自身打开特定文件。 随后会将这些文件进行转换并载入 Cura" + #~ msgctxt "@label:status" #~ msgid "Blocked" #~ msgstr "冻结操作" @@ -4427,13 +4956,9 @@ msgstr "Cura 配置文件读取器" #~ msgid "To ensure that your {machine_name} is equipped with the latest features it is recommended to update the firmware regularly. This can be done on the {machine_name} (when connected to the network) or via USB." #~ msgstr "为确保您的 {machine_name} 具备最新功能,建议定期更新固件。 更新可在 {machine_name} 上(连接至网络时)或通过 USB 进行。" -msgctxt "@item:inlistbox" -msgid "Layer view" -msgstr "分层视图" - -msgctxt "@info:title" -msgid "Layer View" -msgstr "分层视图" +#~ msgctxt "@info:title" +#~ msgid "Layer View" +#~ msgstr "分层视图" #~ msgctxt "@menuitem" #~ msgid "Browse plugins" @@ -4534,9 +5059,9 @@ msgstr "分层视图" #~ msgid "Provides the Layer view." #~ msgstr "提供分层视图。" -msgctxt "name" -msgid "Layer View" -msgstr "分层视图" +#~ msgctxt "name" +#~ msgid "Layer View" +#~ msgstr "分层视图" #~ msgctxt "@item:inlistbox" #~ msgid "X-Ray" @@ -4857,9 +5382,9 @@ msgstr "分层视图" #~ msgid "Provides support for importing profiles from g-code files." #~ msgstr "提供了从 GCode 文件中导入配置文件的支持。" -msgctxt "@label" -msgid "Layer View" -msgstr "分层视图" +#~ msgctxt "@label" +#~ msgid "Layer View" +#~ msgstr "分层视图" #~ msgctxt "@info:whatsthis" #~ msgid "Provides the Layer view." diff --git a/resources/i18n/zh_CN/fdmextruder.def.json.po b/resources/i18n/zh_CN/fdmextruder.def.json.po index 15166711f2..a6bce6f9c5 100644 --- a/resources/i18n/zh_CN/fdmextruder.def.json.po +++ b/resources/i18n/zh_CN/fdmextruder.def.json.po @@ -2,12 +2,12 @@ # Copyright (C) 2017 Ultimaker # This file is distributed under the same license as the Cura package. # Ruben Dulek , 2017. -# +# msgid "" msgstr "" "Project-Id-Version: Cura 3.0\n" -"Report-Msgid-Bugs-To: http://github.com/ultimaker/uranium\n" -"POT-Creation-Date: 2017-11-21 16:58+0000\n" +"Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" +"POT-Creation-Date: 2017-08-02 16:53+0000\n" "PO-Revision-Date: 2017-11-30 13:05+0100\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 76bb1c09e7..3ba47cf8e4 100644 --- a/resources/i18n/zh_CN/fdmprinter.def.json.po +++ b/resources/i18n/zh_CN/fdmprinter.def.json.po @@ -2,12 +2,12 @@ # Copyright (C) 2017 Ultimaker # This file is distributed under the same license as the Cura package. # Ruben Dulek , 2017. -# +# msgid "" msgstr "" "Project-Id-Version: Cura 3.0\n" -"Report-Msgid-Bugs-To: http://github.com/ultimaker/uranium\n" -"POT-Creation-Date: 2017-11-21 16:58+0000\n" +"Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" +"POT-Creation-Date: 2017-08-02 16:53+0000\n" "PO-Revision-Date: 2017-11-30 13:05+0100\n" "Last-Translator: Bothof \n" "Language-Team: PCDotFan , Bothof \n" @@ -347,6 +347,16 @@ msgctxt "machine_gcode_flavor option Repetier" msgid "Repetier" msgstr "Repetier" +#: fdmprinter.def.json +msgctxt "machine_firmware_retract label" +msgid "Firmware Retraction" +msgstr "固件收回" + +#: fdmprinter.def.json +msgctxt "machine_firmware_retract description" +msgid "Whether to use firmware retract commands (G10/G11) instead of using the E property in G1 commands to retract the material." +msgstr "是否使用固件收回命令 (G10/G11) 而不是使用 G1 命令中的 E 属性来收回材料。" + #: fdmprinter.def.json msgctxt "machine_disallowed_areas label" msgid "Disallowed areas" @@ -607,31 +617,6 @@ msgctxt "layer_height_0 description" msgid "The height of the initial layer in mm. A thicker initial layer makes adhesion to the build plate easier." msgstr "起始层高(以毫米为单位)。起始层越厚,与打印平台的粘着越轻松。" -#: fdmprinter.def.json -msgctxt "slicing_tolerance label" -msgid "Slicing Tolerance" -msgstr "切片公差" - -#: fdmprinter.def.json -msgctxt "slicing_tolerance description" -msgid "How to slice layers with diagonal surfaces. The areas of a layer can be generated based on where the middle of the layer intersects the surface (Middle). Alternatively each layer can have the areas which fall inside of the volume throughout the height of the layer (Exclusive) or a layer has the areas which fall inside anywhere within the layer (Inclusive). Exclusive retains the most details, Inclusive makes for the best fit and Middle takes the least time to process." -msgstr "如何对带有对角线表面的层进行切片。层面积可以根据层的中心与表面(中间)相交的位置生成。或者每一层的面积可以为落在整个层高度中成形体积内的面积 (Exclusive),或者为落在层中任何位置的面积 (Inclusive)。Exclusive 保留大部分细节,Inclusive 可实现最佳匹配,而 Middle 需要的处理的时间最少。" - -#: fdmprinter.def.json -msgctxt "slicing_tolerance option middle" -msgid "Middle" -msgstr "Middle" - -#: fdmprinter.def.json -msgctxt "slicing_tolerance option exclusive" -msgid "Exclusive" -msgstr "Exclusive" - -#: fdmprinter.def.json -msgctxt "slicing_tolerance option inclusive" -msgid "Inclusive" -msgstr "Inclusive" - #: fdmprinter.def.json msgctxt "line_width label" msgid "Line Width" @@ -672,16 +657,6 @@ msgctxt "wall_line_width_x description" msgid "Width of a single wall line for all wall lines except the outermost one." msgstr "适用于所有壁线(最外壁线除外)的单一壁线宽度。" -#: fdmprinter.def.json -msgctxt "roofing_line_width label" -msgid "Top Surface Skin Line Width" -msgstr "顶部表面皮肤线宽" - -#: fdmprinter.def.json -msgctxt "roofing_line_width description" -msgid "Width of a single line of the areas at the top of the print." -msgstr "打印顶部区域单一走线宽度。" - #: fdmprinter.def.json msgctxt "skin_line_width label" msgid "Top/Bottom Line Width" @@ -862,41 +837,6 @@ msgctxt "roofing_layer_count description" msgid "The number of top most skin layers. Usually only one top most layer is sufficient to generate higher quality top surfaces." msgstr "最顶部皮肤层数。 通常只需一层最顶层就足以生成较高质量的顶部表面。" -#: fdmprinter.def.json -msgctxt "roofing_pattern label" -msgid "Top Surface Skin Pattern" -msgstr "顶部表面皮肤图案" - -#: fdmprinter.def.json -msgctxt "roofing_pattern description" -msgid "The pattern of the top most layers." -msgstr "最顶层图案。" - -#: fdmprinter.def.json -msgctxt "roofing_pattern option lines" -msgid "Lines" -msgstr "走线" - -#: fdmprinter.def.json -msgctxt "roofing_pattern option concentric" -msgid "Concentric" -msgstr "同心" - -#: fdmprinter.def.json -msgctxt "roofing_pattern option zigzag" -msgid "Zig Zag" -msgstr "锯齿形" - -#: fdmprinter.def.json -msgctxt "roofing_angles label" -msgid "Top Surface Skin Line Directions" -msgstr "顶部表面皮肤走线方向" - -#: fdmprinter.def.json -msgctxt "roofing_angles description" -msgid "A list of integer line directions to use when the top surface skin layers use the lines or zig zag pattern. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the traditional default angles (45 and 135 degrees)." -msgstr "当顶部表面皮肤层采用线条或锯齿状图案时使用的整数走线方向的列表。 列表中的元素随层的进度依次使用,当达到列表末尾时,它将从头开始。 列表项以逗号分隔,整个列表包含在方括号中。 默认是一个空列表,即意味着使用传统的默认角度(45 和 135 度)。" - #: fdmprinter.def.json msgctxt "top_bottom_extruder_nr label" msgid "Top/Bottom Extruder" @@ -975,12 +915,12 @@ msgstr "直线" #: fdmprinter.def.json msgctxt "top_bottom_pattern option concentric" msgid "Concentric" -msgstr "同心圆" +msgstr "同心" #: fdmprinter.def.json msgctxt "top_bottom_pattern option zigzag" msgid "Zig Zag" -msgstr "Zig Zag" +msgstr "锯齿形" #: fdmprinter.def.json msgctxt "top_bottom_pattern_0 label" @@ -1000,12 +940,12 @@ msgstr "直线" #: fdmprinter.def.json msgctxt "top_bottom_pattern_0 option concentric" msgid "Concentric" -msgstr "同心圆" +msgstr "同心" #: fdmprinter.def.json msgctxt "top_bottom_pattern_0 option zigzag" msgid "Zig Zag" -msgstr "Zig Zag" +msgstr "锯齿形" #: fdmprinter.def.json msgctxt "skin_angles label" @@ -1015,7 +955,7 @@ msgstr "顶层/底层走线方向" #: fdmprinter.def.json msgctxt "skin_angles description" msgid "A list of integer line directions to use when the top/bottom layers use the lines or zig zag pattern. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the traditional default angles (45 and 135 degrees)." -msgstr "当顶层/底层采用线条或锯齿状图案时使用的整数走线方向的列表。 列表中的元素随层的进度依次使用,当达到列表末尾时,它将从头开始。 列表项以逗号分隔,整个列表包含在方括号中。 默认是一个空列表,即意味着使用传统的默认角度(45 和 135 度)。" +msgstr "当顶层/底层采用线条或锯齿形图案时使用的整数走线方向的列表。 列表中的元素随层的进度依次使用,当达到列表末尾时,它将从头开始。 列表项以逗号分隔,整个列表包含在方括号中。 默认是一个空列表,即意味着使用传统的默认角度(45 和 135 度)。" #: fdmprinter.def.json msgctxt "wall_0_inset label" @@ -1027,6 +967,16 @@ msgctxt "wall_0_inset description" msgid "Inset applied to the path of the outer wall. If the outer wall is smaller than the nozzle, and printed after the inner walls, use this offset to get the hole in the nozzle to overlap with the inner walls instead of the outside of the model." msgstr "应用在外壁路径上的嵌入。 如果外壁小于喷嘴,并且在内壁之后打印,则使用该偏移量来使喷嘴中的孔与内壁而不是模型外部重叠。" +#: fdmprinter.def.json +msgctxt "optimize_wall_printing_order label" +msgid "Optimize Wall Printing Order" +msgstr "优化壁打印顺序" + +#: fdmprinter.def.json +msgctxt "optimize_wall_printing_order description" +msgid "Optimize the order in which walls are printed so as to reduce the number of retractions and the distance travelled. Most parts will benefit from this being enabled but some may actually take longer so please compare the print time estimates with and without optimization." +msgstr "优化打印各个壁的顺序,以减少回抽次数和空驶距离。 启用此设置将对大部分零件有益,但有的则会耗费更长时间,因此请将优化和不优化的打印时间估计值进行对比。" + #: fdmprinter.def.json msgctxt "outer_inset_first label" msgid "Outer Before Inner Walls" @@ -1097,6 +1047,16 @@ msgctxt "fill_perimeter_gaps option everywhere" msgid "Everywhere" msgstr "全部填充" +#: fdmprinter.def.json +msgctxt "filter_out_tiny_gaps label" +msgid "Filter Out Tiny Gaps" +msgstr "滤除微小的间隙" + +#: fdmprinter.def.json +msgctxt "filter_out_tiny_gaps description" +msgid "Filter out tiny gaps to reduce blobs on outside of model." +msgstr "滤除微小的间隙以减少模型外的光点。" + #: fdmprinter.def.json msgctxt "fill_outline_gaps label" msgid "Print Thin Walls" @@ -1430,17 +1390,17 @@ msgstr "四面体" #: fdmprinter.def.json msgctxt "infill_pattern option concentric" msgid "Concentric" -msgstr "同心圆" +msgstr "同心" #: fdmprinter.def.json msgctxt "infill_pattern option concentric_3d" msgid "Concentric 3D" -msgstr "立体同心圆" +msgstr "同心 3D" #: fdmprinter.def.json msgctxt "infill_pattern option zigzag" msgid "Zig Zag" -msgstr "锯齿状" +msgstr "锯齿形" #: fdmprinter.def.json msgctxt "infill_pattern option cross" @@ -1479,8 +1439,8 @@ msgstr "填充 X 轴偏移量" #: fdmprinter.def.json msgctxt "infill_offset_x description" -msgid "The infill pattern is offset this distance along the X axis." -msgstr "填充图案沿 X 轴偏移此距离。" +msgid "The infill pattern is moved this distance along the X axis." +msgstr "填充图案沿 X 轴移动此距离。" #: fdmprinter.def.json msgctxt "infill_offset_y label" @@ -1489,8 +1449,8 @@ msgstr "填充 Y 轴偏移量" #: fdmprinter.def.json msgctxt "infill_offset_y description" -msgid "The infill pattern is offset this distance along the Y axis." -msgstr "填充图案沿 Y 轴偏移此距离。" +msgid "The infill pattern is moved this distance along the Y axis." +msgstr "填充图案沿 Y 轴移动此距离。" #: fdmprinter.def.json msgctxt "sub_div_rad_add label" @@ -1509,8 +1469,8 @@ msgstr "填充重叠百分比" #: fdmprinter.def.json msgctxt "infill_overlap 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 "填充物和壁之间的重叠量。 稍微重叠可让各个壁与填充物牢固连接。" +msgid "The amount of overlap between the infill and the walls as a percentage of the infill line width. A slight overlap allows the walls to connect firmly to the infill." +msgstr "填充物和壁之间的重叠量占填充走线宽度的百分比。稍微重叠可让各个壁与填充物牢固连接。" #: fdmprinter.def.json msgctxt "infill_overlap_mm label" @@ -1529,8 +1489,8 @@ msgstr "皮肤重叠百分比" #: fdmprinter.def.json msgctxt "skin_overlap description" -msgid "The amount of overlap between the skin and the walls as a percentage of the line width. A slight overlap allows the walls to connect firmly to the skin. This is a percentage of the average line widths of the skin lines and the innermost wall." -msgstr "皮肤和壁之间的重叠量,以走线宽度百分比表示。 稍微重叠可让各个壁与皮肤牢固连接。 这是皮肤线平均走线宽度和最内壁的百分比。" +msgid "The amount of overlap between the skin and the walls as a percentage of the skin line width. A slight overlap allows the walls to connect firmly to the skin. This is a percentage of the average line widths of the skin lines and the innermost wall." +msgstr "皮肤和壁之间的重叠量占皮肤走线宽度的百分比。稍微重叠可让各个壁与皮肤牢固连接。这是皮肤走线和最内壁的平均走线宽度的百分比。" #: fdmprinter.def.json msgctxt "skin_overlap_mm label" @@ -1692,16 +1652,6 @@ msgctxt "material description" msgid "Material" msgstr "材料" -#: fdmprinter.def.json -msgctxt "material_flow_dependent_temperature label" -msgid "Auto Temperature" -msgstr "自动温度" - -#: fdmprinter.def.json -msgctxt "material_flow_dependent_temperature description" -msgid "Change the temperature for each layer automatically with the average flow speed of that layer." -msgstr "根据每一层的平均流速自动更改每层的温度。" - #: fdmprinter.def.json msgctxt "default_material_print_temperature label" msgid "Default Printing Temperature" @@ -1752,16 +1702,6 @@ msgctxt "material_final_print_temperature description" msgid "The temperature to which to already start cooling down just before the end of printing." msgstr "打印结束前开始冷却的温度。" -#: fdmprinter.def.json -msgctxt "material_flow_temp_graph label" -msgid "Flow Temperature Graph" -msgstr "流量温度图" - -#: fdmprinter.def.json -msgctxt "material_flow_temp_graph description" -msgid "Data linking material flow (in mm3 per second) to temperature (degrees Celsius)." -msgstr "数据连接材料流量(mm3/s)到温度(摄氏度)。" - #: fdmprinter.def.json msgctxt "material_extrusion_cool_down_speed label" msgid "Extrusion Cool Down Speed Modifier" @@ -1779,8 +1719,8 @@ msgstr "打印平台温度" #: fdmprinter.def.json msgctxt "material_bed_temperature description" -msgid "The temperature used for the heated build plate. If this is 0, the bed will not heat up for this print." -msgstr "用于加热打印平台的温度。 如果打印平台温度为 0,则热床将不会为此次打印加热。" +msgid "The temperature used for the heated build plate. If this is 0, the bed temperature will not be adjusted." +msgstr "用于加热打印平台的温度。如果该值为 0,将不会调整热床。" #: fdmprinter.def.json msgctxt "material_bed_temperature_layer_0 label" @@ -2595,7 +2535,7 @@ msgstr "打印 skirt 和 brim 时的最大瞬时速度变化。" #: fdmprinter.def.json msgctxt "travel label" msgid "Travel" -msgstr "移动" +msgstr "空驶" #: fdmprinter.def.json msgctxt "travel description" @@ -2825,7 +2765,7 @@ msgstr "最短单层冷却时间" #: fdmprinter.def.json msgctxt "cool_min_layer_time description" msgid "The minimum time spent in a layer. This forces the printer to slow down, to at least spend the time set here in one layer. This allows the printed material to cool down properly before printing the next layer. Layers may still take shorter than the minimal layer time if Lift Head is disabled and if the Minimum Speed would otherwise be violated." -msgstr "在层中花费的最少时间。 这会迫使打印机减速,以便至少在一层中消耗此处所规定的时间。 这会让已打印材料充分冷却后再打印下一层。 如果提升头被禁用,且如果不这么做会违反“最小速度“,则层所花时间可能仍会少于最小层时间。" +msgstr "在层中花费的最少时间。 这会迫使打印机减速,以便至少在一层中消耗此处所规定的时间。 这会让已打印材料充分冷却后再打印下一层。 如果提升头被禁用,且如果不这么做会违反“最小速度”,则层所花时间可能仍会少于最小层时间。" #: fdmprinter.def.json msgctxt "cool_min_speed label" @@ -3360,17 +3300,17 @@ msgstr "三角形" #: fdmprinter.def.json msgctxt "support_roof_pattern option concentric" msgid "Concentric" -msgstr "同心圆" +msgstr "同心" #: fdmprinter.def.json msgctxt "support_roof_pattern option concentric_3d" msgid "Concentric 3D" -msgstr "立体同心圆" +msgstr "同心 3D" #: fdmprinter.def.json msgctxt "support_roof_pattern option zigzag" msgid "Zig Zag" -msgstr "锯齿状" +msgstr "锯齿形" #: fdmprinter.def.json msgctxt "support_bottom_pattern label" @@ -3452,6 +3392,16 @@ msgctxt "support_tower_roof_angle description" msgid "The angle of a rooftop of a tower. A higher value results in pointed tower roofs, a lower value results in flattened tower roofs." msgstr "塔顶角度。 该值越高,塔顶越尖,值越低,塔顶越平。" +#: fdmprinter.def.json +msgctxt "support_mesh_drop_down label" +msgid "Drop Down Support Mesh" +msgstr "下拉式支撑网格" + +#: fdmprinter.def.json +msgctxt "support_mesh_drop_down description" +msgid "Make support everywhere below the support mesh, so that there's no overhang in the support mesh." +msgstr "在支撑网格下方的所有位置进行支撑,让支撑网格中没有悬垂。" + #: fdmprinter.def.json msgctxt "platform_adhesion label" msgid "Build Plate Adhesion" @@ -3552,7 +3502,7 @@ 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" @@ -4084,16 +4034,6 @@ msgctxt "meshfix_keep_open_polygons description" msgid "Normally Cura tries to stitch up small holes in the mesh and remove parts of a layer with big holes. Enabling this option keeps those parts which cannot be stitched. This option should be used as a last resort option when everything else fails to produce proper GCode." msgstr "一般情况下,Cura 会尝试缝合网格中的小孔,并移除有大孔的部分层。 启用此选项将保留那些无法缝合的部分。 当其他所有方法都无法产生正确的 GCode 时,该选项应该被用作最后手段。" -#: 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 "multiple_mesh_overlap label" msgid "Merged Meshes Overlap" @@ -4244,16 +4184,6 @@ msgctxt "support_mesh description" msgid "Use this mesh to specify support areas. This can be used to generate support structure." msgstr "使用此网格指定支撑区域。 可用于生成支撑结构。" -#: fdmprinter.def.json -msgctxt "support_mesh_drop_down label" -msgid "Drop Down Support Mesh" -msgstr "下拉式支撑网格" - -#: fdmprinter.def.json -msgctxt "support_mesh_drop_down description" -msgid "Make support everywhere below the support mesh, so that there's no overhang in the support mesh." -msgstr "在支撑网格下方的所有位置进行支撑,让支撑网格中没有悬垂。" - #: fdmprinter.def.json msgctxt "anti_overhang_mesh label" msgid "Anti Overhang Mesh" @@ -4330,14 +4260,194 @@ msgid "experimental!" msgstr "实验性!" #: fdmprinter.def.json -msgctxt "optimize_wall_printing_order label" -msgid "Optimize Wall Printing Order" -msgstr "优化壁打印顺序" +msgctxt "support_tree_enable label" +msgid "Tree Support" +msgstr "树形支撑" #: fdmprinter.def.json -msgctxt "optimize_wall_printing_order description" -msgid "Optimize the order in which walls are printed so as to reduce the number of retractions and the distance travelled. Most parts will benefit from this being enabled but some may actually take longer so please compare the print time estimates with and without optimization." -msgstr "优化打印各个壁的顺序,以减少回抽次数和空驶距离。 启用此设置将对大部分零件有益,但有的则会耗费更长时间,因此请将优化和不优化的打印时间估计值进行对比。" +msgctxt "support_tree_enable description" +msgid "Generate a tree-like support with branches that support your print. This may reduce material usage and print time, but greatly increases slicing time." +msgstr "生成树形支撑,用分支支撑打印的模型。这可以减少材料用量和缩短打印时间,但会大幅增加切片时间。" + +#: fdmprinter.def.json +msgctxt "support_tree_angle label" +msgid "Tree Support Branch Angle" +msgstr "树形支撑分支角度" + +#: fdmprinter.def.json +msgctxt "support_tree_angle description" +msgid "The angle of the branches. Use a lower angle to make them more vertical and more stable. Use a higher angle to be able to have more reach." +msgstr "分支的角度。使用较小的角度可增加垂直度和稳定性。使用较大的角度可支撑更大范围。" + +#: fdmprinter.def.json +msgctxt "support_tree_branch_distance label" +msgid "Tree Support Branch Distance" +msgstr "树形支撑分支间距" + +#: fdmprinter.def.json +msgctxt "support_tree_branch_distance description" +msgid "How far apart the branches need to be when they touch the model. Making this distance small will cause the tree support to touch the model at more points, causing better overhang but making support harder to remove." +msgstr "在支撑模型时,分支之间需要多大的间距。缩小这一间距会使树形支撑与模型之间有更多接触点,带来更好的悬垂,但会使支撑更难以拆除。" + +#: fdmprinter.def.json +msgctxt "support_tree_branch_diameter label" +msgid "Tree Support Branch Diameter" +msgstr "树形支撑分支直径" + +#: fdmprinter.def.json +msgctxt "support_tree_branch_diameter description" +msgid "The diameter of the thinnest branches of tree support. Thicker branches are more sturdy. Branches towards the base will be thicker than this." +msgstr "树形支撑最细分支的直径。较粗的分支更坚固。接近基础的分支会比这更粗。" + +#: fdmprinter.def.json +msgctxt "support_tree_branch_diameter_angle label" +msgid "Tree Support Branch Diameter Angle" +msgstr "树形支撑分支直径角度" + +#: fdmprinter.def.json +msgctxt "support_tree_branch_diameter_angle description" +msgid "The angle of the branches' diameter as they gradually become thicker towards the bottom. An angle of 0 will cause the branches to have uniform thickness over their length. A bit of an angle can increase stability of the tree support." +msgstr "随着分支朝底部逐渐变粗,分支直径的角度。角度为 0 表明分支全长具有均匀的粗细度。稍微有些角度可以增加树形支撑的稳定性。" + +#: fdmprinter.def.json +msgctxt "support_tree_collision_resolution label" +msgid "Tree Support Collision Resolution" +msgstr "树形支撑碰撞分辨率" + +#: fdmprinter.def.json +msgctxt "support_tree_collision_resolution description" +msgid "Resolution to compute collisions with to avoid hitting the model. Setting this lower will produce more accurate trees that fail less often, but increases slicing time dramatically." +msgstr "用于计算碰撞的分辨率,目的在于避免碰撞模型。将此设置得较低将产生更准确且通常较少失败的树,但是会大幅增加切片时间。" + +#: fdmprinter.def.json +msgctxt "support_tree_wall_thickness label" +msgid "Tree Support Wall Thickness" +msgstr "树形支撑壁厚度" + +#: fdmprinter.def.json +msgctxt "support_tree_wall_thickness description" +msgid "The thickness of the walls of the branches of tree support. Thicker walls take longer to print but don't fall over as easily." +msgstr "树形支撑分支的壁厚度。较厚的壁需要的打印时间更长,但不易掉落。" + +#: fdmprinter.def.json +msgctxt "support_tree_wall_count label" +msgid "Tree Support Wall Line Count" +msgstr "树形支撑壁走线次数" + +#: fdmprinter.def.json +msgctxt "support_tree_wall_count description" +msgid "The number of walls of the branches of tree support. Thicker walls take longer to print but don't fall over as easily." +msgstr "树形支撑的分支壁数量。较厚的壁需要的打印时间更长,但不易掉落。" + +#: fdmprinter.def.json +msgctxt "slicing_tolerance label" +msgid "Slicing Tolerance" +msgstr "切片公差" + +#: fdmprinter.def.json +msgctxt "slicing_tolerance description" +msgid "How to slice layers with diagonal surfaces. The areas of a layer can be generated based on where the middle of the layer intersects the surface (Middle). Alternatively each layer can have the areas which fall inside of the volume throughout the height of the layer (Exclusive) or a layer has the areas which fall inside anywhere within the layer (Inclusive). Exclusive retains the most details, Inclusive makes for the best fit and Middle takes the least time to process." +msgstr "如何对带有对角线表面的层进行切片。层面积可以根据层的中心与表面 (Middle) 相交的位置生成。或者每一层的面积可以为落在整个层高度中成形体积内的面积 (Exclusive),或者为落在层中任何位置的面积 (Inclusive)。Exclusive 保留大部分细节,Inclusive 可实现最佳匹配,而 Middle 需要的处理时间最少。" + +#: fdmprinter.def.json +msgctxt "slicing_tolerance option middle" +msgid "Middle" +msgstr "Middle" + +#: fdmprinter.def.json +msgctxt "slicing_tolerance option exclusive" +msgid "Exclusive" +msgstr "Exclusive" + +#: fdmprinter.def.json +msgctxt "slicing_tolerance option inclusive" +msgid "Inclusive" +msgstr "Inclusive" + +#: fdmprinter.def.json +msgctxt "roofing_line_width label" +msgid "Top Surface Skin Line Width" +msgstr "顶部表面皮肤线宽" + +#: fdmprinter.def.json +msgctxt "roofing_line_width description" +msgid "Width of a single line of the areas at the top of the print." +msgstr "打印顶部区域单一走线宽度。" + +#: fdmprinter.def.json +msgctxt "roofing_pattern label" +msgid "Top Surface Skin Pattern" +msgstr "顶部表面皮肤图案" + +#: fdmprinter.def.json +msgctxt "roofing_pattern description" +msgid "The pattern of the top most layers." +msgstr "最顶层图案。" + +#: fdmprinter.def.json +msgctxt "roofing_pattern option lines" +msgid "Lines" +msgstr "走线" + +#: fdmprinter.def.json +msgctxt "roofing_pattern option concentric" +msgid "Concentric" +msgstr "同心" + +#: fdmprinter.def.json +msgctxt "roofing_pattern option zigzag" +msgid "Zig Zag" +msgstr "锯齿形" + +#: fdmprinter.def.json +msgctxt "roofing_angles label" +msgid "Top Surface Skin Line Directions" +msgstr "顶部表面皮肤走线方向" + +#: fdmprinter.def.json +msgctxt "roofing_angles description" +msgid "A list of integer line directions to use when the top surface skin layers use the lines or zig zag pattern. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the traditional default angles (45 and 135 degrees)." +msgstr "当顶部表面皮肤层采用线条或锯齿状图案时使用的整数走线方向的列表。 列表中的元素随层的进度依次使用,当达到列表末尾时,它将从头开始。 列表项以逗号分隔,整个列表包含在方括号中。 默认是一个空列表,即意味着使用传统的默认角度(45 和 135 度)。" + +#: fdmprinter.def.json +msgctxt "infill_enable_travel_optimization label" +msgid "Infill Travel Optimization" +msgstr "填充物空驶优化" + +#: fdmprinter.def.json +msgctxt "infill_enable_travel_optimization description" +msgid "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." +msgstr "启用后,可优化打印填充走线的顺序,缩短空驶距离。空驶时间的缩短很大程度上取决于被切割的模型、填充图案、密度等。请注意,对于具有许多小填充区域的一些模型,分割模型的时间可能会大幅增加。" + +#: fdmprinter.def.json +msgctxt "material_flow_dependent_temperature label" +msgid "Auto Temperature" +msgstr "自动温度" + +#: fdmprinter.def.json +msgctxt "material_flow_dependent_temperature description" +msgid "Change the temperature for each layer automatically with the average flow speed of that layer." +msgstr "根据每一层的平均流速自动更改每层的温度。" + +#: fdmprinter.def.json +msgctxt "material_flow_temp_graph label" +msgid "Flow Temperature Graph" +msgstr "流量温度图" + +#: fdmprinter.def.json +msgctxt "material_flow_temp_graph description" +msgid "Data linking material flow (in mm3 per second) to temperature (degrees Celsius)." +msgstr "数据连接材料流量(mm3/s)到温度(摄氏度)。" + +#: 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 "support_skip_some_zags label" @@ -4936,6 +5046,46 @@ msgctxt "wireframe_nozzle_clearance description" msgid "Distance between the nozzle and horizontally downward lines. Larger clearance results in diagonally downward lines with a less steep angle, which in turn results in less upward connections with the next layer. Only applies to Wire Printing." msgstr "喷嘴和水平下行线之间的距离。 较大的间隙会让斜下行线角度较平缓,进而使第二层的上行连接较少。 仅应用于单线打印。" +#: fdmprinter.def.json +msgctxt "adaptive_layer_height_enabled label" +msgid "Use adaptive layers" +msgstr "使用自适应图层" + +#: fdmprinter.def.json +msgctxt "adaptive_layer_height_enabled description" +msgid "Adaptive layers computes the layer heights depending on the shape of the model." +msgstr "自适应图层根据模型形状计算图层高度。" + +#: fdmprinter.def.json +msgctxt "adaptive_layer_height_variation label" +msgid "Adaptive layers maximum variation" +msgstr "自适应图层最大变化" + +#: fdmprinter.def.json +msgctxt "adaptive_layer_height_variation description" +msgid "The maximum allowed height different from the base layer height in mm." +msgstr "相比底层高度所允许的最大高度(单位:毫米)。" + +#: fdmprinter.def.json +msgctxt "adaptive_layer_height_variation_step label" +msgid "Adaptive layers variation step size" +msgstr "自适应图层变化步长" + +#: fdmprinter.def.json +msgctxt "adaptive_layer_height_variation_step description" +msgid "The difference in height of the next layer height compared to the previous one." +msgstr "下一层与前一层的高度差。" + +#: fdmprinter.def.json +msgctxt "adaptive_layer_height_threshold label" +msgid "Adaptive layers threshold" +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 "决定是否使用较小图层的阈值。该数字相当于一层中最大坡度的切线。" + #: fdmprinter.def.json msgctxt "command_line_settings label" msgid "Command Line Settings" @@ -4996,6 +5146,26 @@ msgctxt "mesh_rotation_matrix description" msgid "Transformation matrix to be applied to the model when loading it from file." msgstr "在将模型从文件中载入时应用在模型上的转换矩阵。" +#~ msgctxt "infill_offset_x description" +#~ msgid "The infill pattern is offset this distance along the X axis." +#~ msgstr "填充图案沿 X 轴偏移此距离。" + +#~ msgctxt "infill_offset_y description" +#~ msgid "The infill pattern is offset this distance along the Y axis." +#~ msgstr "填充图案沿 Y 轴偏移此距离。" + +#~ msgctxt "infill_overlap 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 "填充物和壁之间的重叠量。 稍微重叠可让各个壁与填充物牢固连接。" + +#~ msgctxt "skin_overlap description" +#~ msgid "The amount of overlap between the skin and the walls as a percentage of the line width. A slight overlap allows the walls to connect firmly to the skin. This is a percentage of the average line widths of the skin lines and the innermost wall." +#~ msgstr "皮肤和壁之间的重叠量,以走线宽度百分比表示。 稍微重叠可让各个壁与皮肤牢固连接。 这是皮肤线平均走线宽度和最内壁的百分比。" + +#~ msgctxt "material_bed_temperature description" +#~ msgid "The temperature used for the heated build plate. If this is 0, the bed will not heat up for this print." +#~ msgstr "用于加热打印平台的温度。 如果打印平台温度为 0,则热床将不会为此次打印加热。" + #~ msgctxt "wall_x_extruder_nr label" #~ msgid "Inner Walls Extruder" #~ msgstr "内壁挤出机" diff --git a/resources/i18n/zh_TW/cura.po b/resources/i18n/zh_TW/cura.po index 2b000890f5..0a1c5e9294 100644 --- a/resources/i18n/zh_TW/cura.po +++ b/resources/i18n/zh_TW/cura.po @@ -1,24 +1,24 @@ # Cura -# Copyright (C) 2017 Ultimaker +# Copyright (C) 2018 Ultimaker # This file is distributed under the same license as the Cura package. -# Ruben Dulek , 2017. +# Ruben Dulek , 2018. # msgid "" msgstr "" -"Project-Id-Version: Cura 3.1\n" +"Project-Id-Version: Cura 3.2\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2017-08-02 16:53+0000\n" -"PO-Revision-Date: 2017-11-28 23:48+0800\n" +"POT-Creation-Date: 2018-01-29 16:53+0000\n" +"PO-Revision-Date: 2018-02-04 11:18+0800\n" "Last-Translator: Zhang Heh Ji \n" -"Language-Team: TEAM\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" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Poedit 2.0.4\n" +"X-Generator: Poedit 2.0.6\n" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:29 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:26 msgctxt "@action" msgid "Machine Settings" msgstr "印表機設定" @@ -55,12 +55,11 @@ msgstr "正在連接 Doodle3D Connect" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:87 #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:155 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:874 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:646 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:875 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:659 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:370 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrintWindow.qml:78 -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:104 -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:99 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:355 #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:188 #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:376 #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:139 @@ -100,7 +99,7 @@ msgctxt "@info:tooltip" msgid "Open the Doodle3D Connect web interface" msgstr "開啟 Doodle3D Connect 的網路介面" -#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:34 +#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:33 msgctxt "@item:inmenu" msgid "Show Changelog" msgstr "顯示更新日誌" @@ -115,81 +114,83 @@ msgctxt "@info:status" msgid "Profile has been flattened & activated." msgstr "列印參數已被合併並啟用。" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:26 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:27 msgctxt "@item:inmenu" msgid "USB printing" msgstr "USB 連線列印" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:27 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:28 msgctxt "@action:button Preceded by 'Ready to'." msgid "Print via USB" msgstr "透過 USB 連線列印" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:28 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:29 msgctxt "@info:tooltip" msgid "Print via USB" msgstr "透過 USB 連線列印" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:30 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:31 msgctxt "@info:status" msgid "Connected via USB" msgstr "透過 USB 連接" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:154 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:183 msgctxt "@info:status" msgid "Unable to start a new job because the printer is busy or not connected." msgstr "無法啟動新作業,因為印表機處於忙碌狀態或未連接。" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:154 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:183 msgctxt "@info:title" msgid "Printer Unavailable" msgstr "印表機無法使用" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:457 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:485 msgctxt "@info:status" -msgid "" -"This printer does not support USB printing because it uses UltiGCode flavor." -msgstr "" -"此印表機不支援透過 USB 連線列印,因為其使用 UltiGCode 類型的 G-code 檔案。" +msgid "This printer does not support USB printing because it uses UltiGCode flavor." +msgstr "此印表機不支援透過 USB 連線列印,因為其使用 UltiGCode 類型的 G-code 檔案。" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:457 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:485 msgctxt "@info:title" msgid "USB Printing" msgstr "USB 連線列印" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:461 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:489 msgctxt "@info:status" -msgid "" -"Unable to start a new job because the printer does not support usb printing." +msgid "Unable to start a new job because the printer does not support usb printing." msgstr "無法啟動新作業,因為該印表機不支援 USB 連線列印。" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:461 -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:108 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:489 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:103 #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:146 #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:158 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:945 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1349 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1417 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:946 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1418 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1496 msgctxt "@info:title" msgid "Warning" msgstr "警告" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:108 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:103 msgctxt "@info" msgid "Unable to update firmware because there are no printers connected." msgstr "無法更新韌體,因為沒有連接印表機。" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:122 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:117 #, python-format msgctxt "@info" msgid "Could not find firmware required for the printer at %s." msgstr "在 %s 無法找到印表機所需的韌體。" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:122 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:117 msgctxt "@info:title" msgid "Printer Firmware" msgstr "印表機韌體" +#: /home/ruben/Projects/Cura/plugins/PrepareStage/__init__.py:12 +msgctxt "@item:inmenu" +msgid "Prepare" +msgstr "準備" + #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:23 msgctxt "@action:button Preceded by 'Ready to'." msgid "Save to Removable Drive" @@ -233,11 +234,11 @@ msgid "Could not save to removable drive {0}: {1}" msgstr "無法儲存到行動裝置 {0}:{1}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:132 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:692 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:700 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:146 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:693 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:701 #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:153 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1358 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:160 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1427 msgctxt "@info:title" msgid "Error" msgstr "錯誤" @@ -287,7 +288,7 @@ msgid "Removable Drive" msgstr "行動裝置" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:109 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:53 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:51 msgctxt "@action:button Preceded by 'Ready to'." msgid "Print over network" msgstr "網路連線列印" @@ -299,8 +300,7 @@ msgstr "網路連線列印" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:159 msgctxt "@info:status" -msgid "" -"Access to the printer requested. Please approve the request on the printer" +msgid "Access to the printer requested. Please approve the request on the printer" msgstr "已發送印表機存取請求,請在印表機上批准該請求" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:159 @@ -358,8 +358,7 @@ msgstr "向印表機發送存取請求" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:385 msgctxt "@info:status" -msgid "" -"Connected over the network. Please approve the access request on the printer." +msgid "Connected over the network. Please approve the access request on the printer." msgstr "已透過網路連接。請在印表機上接受存取請求。" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:392 @@ -389,17 +388,13 @@ msgstr "網路連接中斷。" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:501 msgctxt "@info:status" -msgid "" -"The connection with the printer was lost. Check your printer to see if it is " -"connected." +msgid "The connection with the printer was lost. Check your printer to see if it is connected." msgstr "與印表機的連接中斷,請檢查印表機是否已連接。" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:666 #, python-format msgctxt "@info:status" -msgid "" -"Unable to start a new print job, printer is busy. Current printer status is " -"%s." +msgid "Unable to start a new print job, printer is busy. Current printer status is %s." msgstr "印表機無法啟動新的列印作業,目前的印表機狀態為 %s。" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:667 @@ -407,309 +402,329 @@ msgctxt "@info:title" msgid "Printer Status" msgstr "印表機狀態" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:691 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:692 #, python-brace-format msgctxt "@info:status" msgid "Unable to start a new print job. No Printcore loaded in slot {0}" msgstr "無法啟動新的列印作業。插槽 {0} 中未載入列印頭。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:699 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:700 #, python-brace-format msgctxt "@info:status" msgid "Unable to start a new print job. No material loaded in slot {0}" msgstr "無法啟動新的列印作業。插槽 {0} 中未載入耗材。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:709 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:710 #, python-brace-format msgctxt "@label" msgid "Not enough material for spool {0}." msgstr "線軸 {0} 上沒有足夠的耗材。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:719 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:720 #, python-brace-format msgctxt "@label" msgid "Different PrintCore (Cura: {0}, Printer: {1}) selected for extruder {2}" msgstr "不同的列印頭(Cura:{0},印表機: 為擠出機 {2} 選擇了 {1})" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:733 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:734 #, 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/NetworkPrinterOutputDevice.py:741 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:742 #, python-brace-format msgctxt "@label" -msgid "" -"PrintCore {0} is not properly calibrated. XY calibration needs to be " -"performed on the printer." +msgid "PrintCore {0} is not properly calibrated. XY calibration needs to be performed on the printer." msgstr "列印頭 {0} 未正確校準。需要在印表機上執行 XY 校正。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:746 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:747 msgctxt "@label" msgid "Are you sure you wish to print with the selected configuration?" msgstr "你確定要使用所選設定進行列印嗎?" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:747 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:748 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 之間不匹配。為了獲得最佳列印效果,請使用印表機的列" -"印頭和耗材設定進行切片。" +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/NetworkPrinterOutputDevice.py:753 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:754 msgctxt "@window:title" msgid "Mismatched configuration" msgstr "設定不匹配" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:864 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:262 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:865 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:258 msgctxt "@info:status" -msgid "" -"Sending new jobs (temporarily) blocked, still sending the previous print job." +msgid "Sending new jobs (temporarily) blocked, still sending the previous print job." msgstr "前一列印作業傳送中,暫停傳送新列印作業。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:873 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:874 msgctxt "@info:status" msgid "Sending data to printer" msgstr "正在向印表機發送資料" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:873 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:874 msgctxt "@info:title" msgid "Sending Data" msgstr "發送資料中" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:944 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:945 msgctxt "@info:status" msgid "Unable to send data to printer. Is another job still active?" msgstr "無法向印表機發送資料。請確認是否有另一項列印作業正在進行?" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1085 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1087 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:196 msgctxt "@label:MonitorStatus" msgid "Aborting print..." msgstr "中斷列印..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1091 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1093 msgctxt "@label:MonitorStatus" msgid "Print aborted. Please check the printer" msgstr "列印已中斷。請檢查印表機" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1097 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1099 msgctxt "@label:MonitorStatus" msgid "Pausing print..." msgstr "暫停列印..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1099 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1101 msgctxt "@label:MonitorStatus" msgid "Resuming print..." msgstr "繼續列印..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1289 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1291 msgctxt "@window:title" msgid "Sync with your printer" msgstr "與你的印表機同步" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1291 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1293 msgctxt "@label" msgid "Would you like to use your current printer configuration in Cura?" msgstr "你想在 Cura 中使用目前的印表機設定嗎?" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1293 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1295 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 "" -"印表機上的列印頭和/或耗材與目前專案中的不同。為獲得最佳列印效果,請使用目前印" -"表機的列印頭和耗材設定進行切片。" +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/NetworkClusterPrinterOutputDevice.py:112 -msgid "" -"This printer is not set up to host a group of connected Ultimaker 3 printers." +msgid "This printer is not set up to host a group of connected Ultimaker 3 printers." msgstr "這台印表機未設定成管理一組連線的 Ultimaker 3 印表機的主機。" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:113 #, python-brace-format msgctxt "Count is number of printers." -msgid "" -"This printer is the host for a group of {count} connected Ultimaker 3 " -"printers." +msgid "This printer is the host for a group of {count} connected Ultimaker 3 printers." msgstr "這台印表機是 {count} 台連線的 Ultimaker 3 印表機群組的主機。" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:114 #, python-brace-format -msgid "" -"{printer_name} has finished printing '{job_name}'. Please collect the print " -"and confirm clearing the build plate." -msgstr "" -"{printer_name} 已完成列印 '{job_name}'。請收起列印件並確認清空列印平台。" +msgid "{printer_name} has finished printing '{job_name}'. Please collect the print and confirm clearing the build plate." +msgstr "{printer_name} 已完成列印 '{job_name}'。請收起列印件並確認清空列印平台。" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:115 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:520 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:533 #, python-brace-format -msgid "" -"{printer_name} is reserved to print '{job_name}'. Please change the " -"printer's configuration to match the job, for it to start printing." -msgstr "" -"{printer_name} 已為了列印 '{job_name}' 保留。請更改印表機設定配合此列印作業," -"以便開始列印。" +msgid "{printer_name} is reserved to print '{job_name}'. Please change the printer's configuration to match the job, for it to start printing." +msgstr "{printer_name} 已為了列印 '{job_name}' 保留。請更改印表機設定配合此列印作業,以便開始列印。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:278 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:277 msgctxt "@info:status" -msgid "" -"Unable to send new print job: this 3D printer is not (yet) set up to host a " -"group of connected Ultimaker 3 printers." -msgstr "" -"無法傳送新的列印作業:這台印表機尚未設定成管理一組連線的 Ultimaker 3 印表機的" -"主機。" +msgid "Unable to send new print job: this 3D printer is not (yet) set up to host a group of connected Ultimaker 3 printers." +msgstr "無法傳送新的列印作業:這台印表機尚未設定成管理一組連線的 Ultimaker 3 印表機的主機。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:410 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:423 #, python-brace-format msgctxt "@info:status" msgid "Unable to send print job to group {cluster_name}." msgstr "無法傳送列印作業到群組 {cluster_name}。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:418 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:431 #, python-brace-format msgctxt "@info:status" msgid "Sent {file_name} to group {cluster_name}." msgstr "{file_name} 已傳送到群組 {cluster_name}。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:423 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:436 msgctxt "@action:button" msgid "Show print jobs" msgstr "顯示列印作業" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:424 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:437 msgctxt "@info:tooltip" msgid "Opens the print jobs interface in your browser." msgstr "使用瀏覽器開啟列印作業介面。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:489 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:502 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:239 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:47 -msgctxt "@label" +msgctxt "@label Printer name" msgid "Unknown" msgstr "未知" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:492 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:505 #, 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/NetworkClusterPrinterOutputDevice.py:494 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:497 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:507 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:510 msgctxt "@info:status" msgid "Print finished" msgstr "列印已完成" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:522 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:525 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:535 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:538 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:282 msgctxt "@label:status" msgid "Action required" msgstr "需要採取的動作" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:643 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:656 #, python-brace-format msgctxt "@info:progress" msgid "Sending {file_name} to group {cluster_name}" msgstr "傳送 {file_name} 到群組 {cluster_name} 中" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.py:19 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.py:17 msgctxt "@action" msgid "Connect via Network" msgstr "透過網路連接" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:64 +#: /home/ruben/Projects/Cura/plugins/MonitorStage/__init__.py:12 +msgctxt "@item:inmenu" +msgid "Monitor" +msgstr "監控" + +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:66 #, python-brace-format -msgctxt "" -"@info Don't translate {machine_name}, since it gets replaced by a printer " -"name!" -msgid "" -"New features are available for your {machine_name}! It is recommended to " -"update the firmware on your printer." +msgctxt "@info Don't translate {machine_name}, since it gets replaced by a printer name!" +msgid "New features are available for your {machine_name}! It is recommended to update the firmware on your printer." msgstr "你的 {machine_name} 有新功能可用!建議更新印表機韌體。" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:65 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:67 #, python-format msgctxt "@info:title The %s gets replaced with the printer name." msgid "New %s firmware available" msgstr "有新 %s 韌體可用" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:66 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:68 msgctxt "@action:button" msgid "How to update" msgstr "如何更新" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:77 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:79 msgctxt "@info" msgid "Could not access update information." msgstr "無法存取更新資訊。" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksReader.py:199 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksReader.py:579 +msgctxt "@info:status" +msgid "SolidWorks reported errors, while opening your file. We recommend to solve these issues inside SolidWorks itself." +msgstr "SolidWorks 在開啟檔案時回報了錯誤。建議在 SolidWorks 內部解決這些問題。" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksReader.py:591 msgctxt "@info:status" msgid "" -"Errors appeared while opening your SolidWorks file! Please " -"check, whether it is possible to open your file in SolidWorks itself without " -"any problems as well!" +"Found no models inside your drawing. Could you please check it's content again and make sure one part or assembly is inside?\n" +"\n" +" Thanks!." msgstr "" -"開啟 SolidWorks 檔案時發生錯誤! 請檢查能否在 SolidWorks 中正常開" -"啟檔案而不出現任何問題!" +"在你的繪圖找不到模型。請你再次檢查它的內容並確認裡面有一個零件或組件。\n" +"\n" +"謝謝。" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:31 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksReader.py:595 +msgctxt "@info:status" +msgid "" +"Found more then one part or assembly inside your drawing. We currently only support drawings with exactly one part or assembly inside.\n" +"\n" +"Sorry!" +msgstr "" +"在你的繪圖找到了超過一個的零件或組件。我們目前只支援一個零件或組件的繪圖。\n" +"\n" +"抱歉!" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:25 msgctxt "@item:inlistbox" msgid "SolidWorks part file" msgstr "SolidWorks 零件檔案" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:35 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:29 msgctxt "@item:inlistbox" msgid "SolidWorks assembly file" msgstr "SolidWorks 組件檔案" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.py:21 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:33 +msgctxt "@item:inlistbox" +msgid "SolidWorks drawing file" +msgstr "SolidWorks 繪圖檔案" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:48 +msgctxt "@info:status" +msgid "" +"Dear customer,\n" +"We could not find a valid installation of SolidWorks on your system. That means that either SolidWorks is not installed or you don't own an valid license. Please make sure that running SolidWorks itself works without issues and/or contact your ICT.\n" +"\n" +"With kind regards\n" +" - Thomas Karl Pietrowski" +msgstr "" +"親愛的客戶,\n" +"我們無法在您的系統上找到有效安裝的 SolidWorks。這表示未安裝 SolidWorks,或者您沒有擁有有效的授權。請確認 SolidWorks 本身是可以正常執行的,或是聯絡您的技術部門處理。\n" +"\n" +"順頌 時祺\n" +" - Thomas Karl Pietrowski" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:57 +msgctxt "@info:status" +msgid "" +"Dear customer,\n" +"You are currently running this plugin on an operating system other than Windows. This plugin will only work on Windows with SolidWorks installed, including an valid license. Please install this plugin on a Windows machine with SolidWorks installed.\n" +"\n" +"With kind regards\n" +" - Thomas Karl Pietrowski" +msgstr "" +"親愛的客戶,\n" +"您目前正在 Windows 以外的作業系統上執行此外掛。此外掛只能在有安裝有效授權 SolidWorks 的 Windows 上執行。請在有安裝 SolidWorks 的 windows 電腦上安裝此外掛。\n" +"\n" +"順頌 時祺\n" +" - Thomas Karl Pietrowski" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksDialogHandler.py:70 msgid "Configure" msgstr "設定" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/CommonComReader.py:135 -#, python-format -msgctxt "@info:status" -msgid "Error while starting %s!" -msgstr "啟動 %s 時發生錯誤!" +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksDialogHandler.py:71 +msgid "Installation guide for SolidWorks macro" +msgstr "SolidWorks 巨集的安裝指南" +# Added manually to fix a string that was changed after string freeze. #: /home/ruben/Projects/Cura/plugins/SimulationView/__init__.py:14 msgctxt "@item:inlistbox" -msgid "Simulation view" -msgstr "模擬檢視" +msgid "Layer view" +msgstr "分層檢視" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:100 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:103 msgctxt "@info:status" msgid "Cura does not accurately display layers when Wire Printing is enabled" -msgstr "" -"當鐵絲網列印(Wire Printing)功能開啟時,Cura 將無法準確地顯示列印層" -"(Layers)" +msgstr "當鐵絲網列印(Wire Printing)功能開啟時,Cura 將無法準確地顯示列印層(Layers)" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:101 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:104 msgctxt "@info:title" msgid "Simulation View" msgstr "模擬檢視" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.py:26 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.py:25 msgid "Modify G-Code" msgstr "修改 G-Code 檔案" #: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:43 msgctxt "@info" -msgid "" -"Cura collects anonymised slicing statistics. You can disable this in the " -"preferences." -msgstr "Cura 收集匿名切片統計資料。你可以在偏好設定中關閉此選項。" +msgid "Cura collects anonymized usage statistics." +msgstr "Cura 以匿名方式蒐集使用狀況統計資料。" #: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:46 msgctxt "@info:title" @@ -718,14 +733,43 @@ msgstr "收集資料中" #: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:48 msgctxt "@action:button" -msgid "Dismiss" -msgstr "關閉此通知" +msgid "Allow" +msgstr "允許" + +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:49 +msgctxt "@action:tooltip" +msgid "Allow Cura to send anonymized usage statistics to help prioritize future improvements to Cura. Some of your preferences and settings are sent, the Cura version and a hash of the models you're slicing." +msgstr "允許 Cura 以匿名方式傳送使用狀況統計資料,用來協助 Cura 的未來改善工作。你的部份偏好設定和參數,Cura 的版本及你切片模型的雜湊值會被傳送。" + +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:50 +msgctxt "@action:button" +msgid "Disable" +msgstr "關閉" + +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:51 +msgctxt "@action:tooltip" +msgid "Don't allow Cura to send anonymized usage statistics. You can enable it again in the preferences." +msgstr "不允許 Cura 傳送匿名的使用狀況統計資料。你可以在偏好設定中再次啟用此功能。" #: /home/ruben/Projects/Cura/plugins/LegacyProfileReader/__init__.py:14 msgctxt "@item:inlistbox" msgid "Cura 15.04 profiles" msgstr "Cura 15.04 列印參數" +#: /home/ruben/Projects/Cura/plugins/CuraBlenderPlugin/__init__.py:15 +msgctxt "@item:inlistbox" +msgid "Blender file" +msgstr "Blender 檔案" + +#: /home/ruben/Projects/Cura/plugins/CuraBlenderPlugin/CadIntegrationUtils/CommonReader.py:199 +msgctxt "@info:status" +msgid "" +"Could not export using \"{}\" quality!\n" +"Felt back to \"{}\"." +msgstr "" +"無法使用 \"{}\" 品質導出!\n" +"覆蓋回 \"{}\"。" + #: /home/ruben/Projects/Cura/plugins/GCodeProfileReader/__init__.py:14 #: /home/ruben/Projects/Cura/plugins/GCodeReader/__init__.py:14 msgctxt "@item:inlistbox" @@ -757,61 +801,49 @@ msgctxt "@item:inlistbox" msgid "GIF Image" msgstr "GIF 圖片" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:269 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:299 msgctxt "@info:status" -msgid "" -"Unable to slice with the current material as it is incompatible with the " -"selected machine or configuration." +msgid "Unable to slice with the current material as it is incompatible with the selected machine or configuration." msgstr "無法使用目前耗材切片,因為它與所選機器或設定不相容。" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:269 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:297 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:319 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:299 #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:327 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:336 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:349 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:357 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:366 msgctxt "@info:title" msgid "Unable to slice" msgstr "無法切片" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:296 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:326 #, python-brace-format msgctxt "@info:status" -msgid "" -"Unable to slice with the current settings. The following settings have " -"errors: {0}" +msgid "Unable to slice with the current settings. The following settings have errors: {0}" msgstr "無法使用目前設定進行切片。以下設定存在錯誤:{0}" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:318 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:348 #, python-brace-format msgctxt "@info:status" -msgid "" -"Unable to slice due to some per-model settings. The following settings have " -"errors on one or more models: {error_labels}" -msgstr "" -"因部份模型設定問題無法進行切片。部份模型的下列設定有錯誤:{error_labels}" +msgid "Unable to slice due to some per-model settings. The following settings have errors on one or more models: {error_labels}" +msgstr "因部份模型設定問題無法進行切片。部份模型的下列設定有錯誤:{error_labels}" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:326 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:356 msgctxt "@info:status" -msgid "" -"Unable to slice because the prime tower or prime position(s) are invalid." +msgid "Unable to slice because the prime tower or prime position(s) are invalid." msgstr "無法切片(原因:換料塔或主位置無效)。" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:335 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:365 msgctxt "@info:status" -msgid "" -"Nothing to slice because none of the models fit the build volume. Please " -"scale or rotate models to fit." -msgstr "" -"沒有模型可進行切片,因為模型超出了列印範圍。請縮放或旋轉模型, 讓模型可置入列" -"印範圍。" +msgid "Nothing to slice because none of the models fit the build volume. Please scale or rotate models to fit." +msgstr "沒有模型可進行切片,因為模型超出了列印範圍。請縮放或旋轉模型, 讓模型可置入列印範圍。" #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:50 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:239 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:242 msgctxt "@info:status" msgid "Processing Layers" msgstr "正在處理層" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:239 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:242 msgctxt "@info:title" msgid "Information" msgstr "資訊" @@ -831,12 +863,8 @@ msgid "Install" msgstr "安裝" #: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:43 -msgid "" -"Failed to copy Siemens NX plugins files. Please check your UGII_USER_DIR. It " -"is not set to a directory." -msgstr "" -"無法複製 Siemens NX 外掛檔案。請檢查你的 UGII_USER_DIR,它沒有設置到正確的目" -"錄。" +msgid "Failed to copy Siemens NX plugins files. Please check your UGII_USER_DIR. It is not set to a directory." +msgstr "無法複製 Siemens NX 外掛檔案。請檢查你的 UGII_USER_DIR,它沒有設置到正確的目錄。" #: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:50 #: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:59 @@ -845,25 +873,21 @@ msgid "Successfully installed Siemens NX Cura plugin." msgstr "Siemens NX Cura 外掛已成功安裝。" #: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:65 -msgid "" -"Failed to copy Siemens NX plugins files. Please check your UGII_USER_DIR." +msgid "Failed to copy Siemens NX plugins files. Please check your UGII_USER_DIR." msgstr "無法複製 Siemens NX 外掛檔案。請檢查你的 UGII_USER_DIR。" #: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:85 -msgid "" -"Failed to install Siemens NX plugin. Could not set environment variable " -"UGII_USER_DIR for Siemens NX." -msgstr "" -"無法安裝 Siemens NX 外掛。無法為 Siemens NX 設定環境變數 UGII_USER_DIR。" +msgid "Failed to install Siemens NX plugin. Could not set environment variable UGII_USER_DIR for Siemens NX." +msgstr "無法安裝 Siemens NX 外掛。無法為 Siemens NX 設定環境變數 UGII_USER_DIR。" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:167 -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:585 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:165 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:590 msgctxt "@title:tab" msgid "Recommended" msgstr "推薦" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:169 -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:590 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:167 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:595 msgctxt "@title:tab" msgid "Custom" msgstr "自訂選項" @@ -874,24 +898,24 @@ msgctxt "@item:inlistbox" msgid "3MF File" msgstr "3MF 檔案" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:126 -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1142 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:159 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1185 msgctxt "@label" msgid "Nozzle" msgstr "噴頭" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:164 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:152 #, python-brace-format msgctxt "@info:status" msgid "Failed to get plugin ID from {0}" msgstr "無法從 {0} 取得外掛 ID" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:165 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:153 msgctxt "@info:tile" msgid "Warning" msgstr "警告" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:203 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:191 msgctxt "@window:title" msgid "Plugin browser" msgstr "外掛瀏覽器" @@ -906,25 +930,21 @@ msgctxt "@item:inlistbox" msgid "G File" msgstr "G 檔案" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:314 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:321 msgctxt "@info:status" msgid "Parsing G-code" msgstr "正在解析 G-code" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:316 -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:426 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:323 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:464 msgctxt "@info:title" msgid "G-code Details" msgstr "G-code 細項設定" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:424 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:462 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 檔案可" -"能不準確。" +msgid "Make sure the g-code is suitable for your printer and printer configuration before sending the file to it. The g-code representation may not be accurate." +msgstr "發送檔案之前,請確保 G-code 適用於目前印表機和印表機設定。目前 G-code 檔案可能不準確。" #: /home/ruben/Projects/Cura/plugins/CuraProfileWriter/__init__.py:14 #: /home/ruben/Projects/Cura/plugins/CuraProfileReader/__init__.py:14 @@ -932,6 +952,16 @@ 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:17 +msgctxt "@item:inlistbox" +msgid "Profile Assistant" +msgstr "參數助手" + #: /home/ruben/Projects/Cura/plugins/3MFWriter/__init__.py:30 msgctxt "@item:inlistbox" msgid "3MF file" @@ -963,146 +993,116 @@ msgctxt "@action" msgid "Level build plate" msgstr "調平列印平台" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:89 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:98 msgctxt "@tooltip" msgid "Outer Wall" msgstr "外壁" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:90 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:99 msgctxt "@tooltip" msgid "Inner Walls" msgstr "內壁" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:91 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:100 msgctxt "@tooltip" msgid "Skin" msgstr "表層" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:92 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:101 msgctxt "@tooltip" msgid "Infill" msgstr "填充" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:93 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:102 msgctxt "@tooltip" msgid "Support Infill" msgstr "支撐填充" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:94 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:103 msgctxt "@tooltip" msgid "Support Interface" msgstr "支撐介面" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:95 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:104 msgctxt "@tooltip" msgid "Support" msgstr "支撐" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:96 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:105 msgctxt "@tooltip" msgid "Skirt" msgstr "外圍" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:97 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:106 msgctxt "@tooltip" msgid "Travel" msgstr "移動" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:98 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:107 msgctxt "@tooltip" msgid "Retractions" msgstr "回抽" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:99 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:108 msgctxt "@tooltip" msgid "Other" msgstr "其它" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:199 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:231 msgctxt "@label unknown material" msgid "Unknown" msgstr "未知" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:284 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:318 #, python-brace-format msgctxt "@label" msgid "Pre-sliced file {0}" msgstr "預切片檔案 {0}" -#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:469 +#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:440 msgctxt "@item:material" msgid "No material loaded" msgstr "未載入耗材" -#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:476 +#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:447 msgctxt "@item:material" msgid "Unknown material" msgstr "未知耗材" -#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:30 -msgctxt "@info:status" -msgid "Finding new location for objects" -msgstr "正在為物件尋找新位置" - -#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:34 -msgctxt "@info:title" -msgid "Finding Location" -msgstr "尋找位置中" - -#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:89 -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:83 -msgctxt "@info:status" -msgid "Unable to find a location within the build volume for all objects" -msgstr "無法在列印範圍內放下全部物件" - -#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:90 -msgctxt "@info:title" -msgid "Can't Find Location" -msgstr "無法找到位置" - -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:431 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:113 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:437 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:120 msgctxt "@title:window" msgid "File Already Exists" msgstr "檔案已經存在" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:432 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:114 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:438 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:121 #, 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?" +msgid "The file {0} already exists. Are you sure you want to overwrite it?" msgstr "檔案 {0} 已存在。你確定要覆蓋掉它嗎?" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:815 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:872 msgctxt "@label" msgid "Custom" msgstr "自訂" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:819 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:876 msgctxt "@label" msgid "Custom Material" msgstr "自訂耗材" -#: /home/ruben/Projects/Cura/cura/Settings/ExtrudersModel.py:182 -msgctxt "@menuitem" -msgid "Global" -msgstr "整體" - -#: /home/ruben/Projects/Cura/cura/Settings/ExtrudersModel.py:229 +#: /home/ruben/Projects/Cura/cura/Settings/ExtrudersModel.py:205 msgctxt "@menuitem" msgid "Not overridden" msgstr "不覆寫" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:117 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:124 msgctxt "@info:status" -msgid "" -"The selected material is incompatible with the selected machine or " -"configuration." +msgid "The selected material is incompatible with the selected machine or configuration." msgstr "所選耗材與所選機器或設定不相容。" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:118 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:125 #: /home/ruben/Projects/Cura/cura/Settings/MaterialManager.py:24 msgctxt "@info:title" msgid "Incompatible Material" @@ -1110,9 +1110,7 @@ msgstr "不相容的耗材" #: /home/ruben/Projects/Cura/cura/Settings/MaterialManager.py:24 msgctxt "@info:status Has a cancel button next to it." -msgid "" -"The selected material diameter causes the material to become incompatible " -"with the current printer." +msgid "The selected material diameter causes the material to become incompatible with the current printer." msgstr "所選耗材直徑導致耗材與目前印表機不相容。" #: /home/ruben/Projects/Cura/cura/Settings/MaterialManager.py:25 @@ -1125,229 +1123,263 @@ msgctxt "@action" msgid "Undo changing the material diameter." msgstr "復原更改耗材直徑。" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:144 -#, 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:151 #, 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:158 +#, python-brace-format msgctxt "@info:status Don't translate the XML tag !" -msgid "" -"Failed to export profile to {0}: Writer plugin reported " -"failure." +msgid "Failed to export profile to {0}: Writer plugin reported failure." msgstr "無法將列印參數匯出至 {0}:寫入器外掛報告故障。" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:156 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:163 #, 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:157 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:164 msgctxt "@info:title" msgid "Export succeeded" msgstr "匯出成功" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:183 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:205 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:214 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:248 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:190 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:211 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:271 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" -msgid "" -"Failed to import profile from {0}: {1}" +msgid "Failed to import profile from {0}: {1}" msgstr "無法從 {0} 匯入列印參數:{1}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:216 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:252 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:230 +#, python-brace-format +msgctxt "@info:status Don't translate the XML tags or !" +msgid "This profile {0} contains incorrect data, could not import it." +msgstr "此列印參數 {0} 含有錯誤的資料,無法導入。" + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:240 +#, python-brace-format +msgctxt "@info:status Don't translate the XML tags or !" +msgid "The machine defined in profile {0} doesn't match with your current machine, could not import it." +msgstr "列印參數 {0} 中的機器設定與你目前的機器不相符,無法導入。" + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:274 #, python-brace-format msgctxt "@info:status" msgid "Successfully imported profile {0}" msgstr "已成功匯入列印參數 {0}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:255 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:277 +#, 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:280 #, 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:274 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:298 msgctxt "@label" msgid "Custom profile" msgstr "自訂列印參數" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:285 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:313 msgctxt "@info:status" msgid "Profile is missing a quality type." msgstr "列印參數缺少列印品質類型定義。" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:321 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:349 #, python-brace-format msgctxt "@info:status" msgid "Could not find a quality type {0} for the current configuration." msgstr "無法為目前設定找到品質類型 {0}。" +#: /home/ruben/Projects/Cura/cura/ObjectsModel.py:46 +#, python-brace-format +msgctxt "@label" +msgid "Group #{group_nr}" +msgstr "群組 #{group_nr}" + #: /home/ruben/Projects/Cura/cura/BuildVolume.py:100 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 "" -"由於「列印序列」設定的值,成形列印範圍高度已被減少,以防止龍門與列印模型相衝" -"突。" +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:102 msgctxt "@info:title" msgid "Build Volume" msgstr "列印範圍" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:34 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:25 msgctxt "@info:status" msgid "Multiplying and placing objects" msgstr "正在複製並放置模型" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:35 -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:83 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:26 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:78 msgctxt "@info:title" msgid "Placing Object" msgstr "擺放物件中" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:80 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:78 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:88 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:152 +msgctxt "@info:status" +msgid "Unable to find a location within the build volume for all objects" +msgstr "無法在列印範圍內放下全部物件" + +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:29 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:64 +msgctxt "@info:status" +msgid "Finding new location for objects" +msgstr "正在為物件尋找新位置" + +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:33 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:68 +msgctxt "@info:title" +msgid "Finding Location" +msgstr "尋找位置中" + +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:89 +#: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:153 +msgctxt "@info:title" +msgid "Can't Find Location" +msgstr "無法找到位置" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:81 msgctxt "@title:window" msgid "Crash Report" msgstr "錯誤報告" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:93 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:94 msgctxt "@label crash message" msgid "" -"

      A fatal exception has occurred. 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" +"

      A fatal error has occurred. 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 "" -"

      程式發生了致命異常。請將錯誤報告傳送給我們以解決這個問題

      \n" -"

      請使用「送出報告」按鈕將錯誤報告自動發送到我們的伺服器

      \n" +"

      發生致命錯誤。請將錯誤報告傳送給我們以便修正此問題。

      \n" +"

      請使用\"送出報告\"按鈕自動發送一份問題報告給我們的伺服器

      \n" " " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:101 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:102 msgctxt "@title:groupbox" msgid "System information" msgstr "系統資訊" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:109 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:110 msgctxt "@label unknown version of Cura" msgid "Unknown" msgstr "未知" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:111 -#, python-brace-format -msgctxt "@label Cura version" -msgid "Cura version: {version}
      " -msgstr "Cura 版本: {version}
      " - #: /home/ruben/Projects/Cura/cura/CrashHandler.py:112 -#, python-brace-format -msgctxt "@label Platform" -msgid "Platform: {platform}
      " -msgstr "平台: {platform}
      " +msgctxt "@label Cura version number" +msgid "Cura version" +msgstr "Cura 版本" #: /home/ruben/Projects/Cura/cura/CrashHandler.py:113 -#, python-brace-format -msgctxt "@label Qt version" -msgid "Qt version: {qt}
      " -msgstr "Qt 版本: {qt}
      " +msgctxt "@label Type of platform" +msgid "Platform" +msgstr "平台" #: /home/ruben/Projects/Cura/cura/CrashHandler.py:114 -#, python-brace-format -msgctxt "@label PyQt version" -msgid "PyQt version: {pyqt}
      " -msgstr "PyQt 版本: {pyqt}
      " +msgctxt "@label" +msgid "Qt version" +msgstr "Qt 版本" #: /home/ruben/Projects/Cura/cura/CrashHandler.py:115 -#, python-brace-format -msgctxt "@label OpenGL" -msgid "OpenGL: {opengl}
      " -msgstr "OpenGL: {opengl}
      " +msgctxt "@label" +msgid "PyQt version" +msgstr "PyQt 版本" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:130 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:116 +msgctxt "@label OpenGL version" +msgid "OpenGL" +msgstr "OpenGL" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:133 +msgctxt "@label" +msgid "not yet initialised
      " +msgstr "尚未初始化
      " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:136 #, python-brace-format msgctxt "@label OpenGL version" msgid "
    • OpenGL Version: {version}
    • " msgstr "
    • OpenGL 版本:{version}
    • " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:131 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:137 #, python-brace-format msgctxt "@label OpenGL vendor" msgid "
    • OpenGL Vendor: {vendor}
    • " msgstr "
    • OpenGL 供應商:{vendor}
    • " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:132 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:138 #, python-brace-format msgctxt "@label OpenGL renderer" msgid "
    • OpenGL Renderer: {renderer}
    • " msgstr "
    • OpenGL 渲染器:{renderer}
    • " -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:141 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:147 msgctxt "@title:groupbox" -msgid "Exception traceback" -msgstr "異常追溯" +msgid "Error traceback" +msgstr "錯誤追溯" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:208 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:214 msgctxt "@title:groupbox" msgid "Logs" msgstr "日誌" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:231 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:237 msgctxt "@title:groupbox" msgid "User description" msgstr "使用者描述" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:246 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:252 msgctxt "@action:button" msgid "Send report" msgstr "送出報告" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:256 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:274 msgctxt "@info:progress" msgid "Loading machines..." msgstr "正在載入印表機..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:661 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:660 msgctxt "@info:progress" msgid "Setting up scene..." msgstr "正在設定場景..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:703 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:702 msgctxt "@info:progress" msgid "Loading interface..." msgstr "正在載入介面…" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:874 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:899 #, python-format -msgctxt "" -"@info 'width', 'depth' and 'height' are variable names that must NOT be " -"translated; just translate the format of ##x##x## mm." +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:1348 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1417 #, 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:1357 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1426 #, 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:1416 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1495 msgctxt "@info:status" msgid "The selected model was too small to load." msgstr "選擇的模型太小無法載入。" @@ -1376,12 +1408,11 @@ msgstr "X (寬度)" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:119 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:129 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:235 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:288 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:300 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:391 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:401 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:413 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:840 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:383 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:394 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:412 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:424 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:849 msgctxt "@label" msgid "mm" msgstr "mm" @@ -1428,13 +1459,8 @@ msgstr "X 最小值" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:192 msgctxt "@tooltip" -msgid "" -"Distance from the left of the printhead to the center of the nozzle. Used to " -"prevent colissions between previous prints and the printhead when printing " -"\"One at a Time\"." -msgstr "" -"列印頭左側至噴頭中心的距離。用於防止「排隊列印」時之前的列印品與列印頭發生碰" -"撞。" +msgid "Distance from the left of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." +msgstr "列印頭左側至噴頭中心的距離。用於防止「排隊列印」時之前的列印品與列印頭發生碰撞。" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:201 msgctxt "@label" @@ -1443,13 +1469,8 @@ msgstr "Y 最小值" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:202 msgctxt "@tooltip" -msgid "" -"Distance from the front of the printhead to the center of the nozzle. Used " -"to prevent colissions between previous prints and the printhead when " -"printing \"One at a Time\"." -msgstr "" -"列印頭前端至噴頭中心的距離。用於防止「排隊列印」時之前的列印品與列印頭發生碰" -"撞。" +msgid "Distance from the front of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." +msgstr "列印頭前端至噴頭中心的距離。用於防止「排隊列印」時之前的列印品與列印頭發生碰撞。" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:211 msgctxt "@label" @@ -1458,13 +1479,8 @@ msgstr "X 最大值" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:212 msgctxt "@tooltip" -msgid "" -"Distance from the right of the printhead to the center of the nozzle. Used " -"to prevent colissions between previous prints and the printhead when " -"printing \"One at a Time\"." -msgstr "" -"列印頭右側至噴頭中心的距離。用於防止「排隊列印」時之前的列印品與列印頭發生碰" -"撞。" +msgid "Distance from the right of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." +msgstr "列印頭右側至噴頭中心的距離。用於防止「排隊列印」時之前的列印品與列印頭發生碰撞。" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:221 msgctxt "@label" @@ -1473,13 +1489,8 @@ msgstr "Y 最大值" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:222 msgctxt "@tooltip" -msgid "" -"Distance from the rear of the printhead to the center of the nozzle. Used to " -"prevent colissions between previous prints and the printhead when printing " -"\"One at a Time\"." -msgstr "" -"列印頭後部至噴頭中心的距離。用於防止「排隊列印」時之前的列印品與列印頭發生碰" -"撞。" +msgid "Distance from the rear of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." +msgstr "列印頭後部至噴頭中心的距離。用於防止「排隊列印」時之前的列印品與列印頭發生碰撞。" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:234 msgctxt "@label" @@ -1488,78 +1499,70 @@ msgstr "龍門高度" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:236 msgctxt "@tooltip" -msgid "" -"The height difference between the tip of the nozzle and the gantry system (X " -"and Y axes). Used to prevent collisions between previous prints and the " -"gantry when printing \"One at a Time\"." -msgstr "" -"噴頭尖端與龍門系統(X 軸和 Y 軸)之間的高度差。用於防止「排隊列印」時之前的列" -"印品與龍門發生碰撞。" +msgid "The height difference between the tip of the nozzle and the gantry system (X and Y axes). Used to prevent collisions between previous prints and the gantry when printing \"One at a Time\"." +msgstr "噴頭尖端與龍門系統(X 軸和 Y 軸)之間的高度差。用於防止「排隊列印」時之前的列印品與龍門發生碰撞。" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:255 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:254 msgctxt "@label" msgid "Number of Extruders" msgstr "擠出機數目" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:289 -msgctxt "@tooltip" -msgid "" -"The nominal diameter of filament supported by the printer. The exact " -"diameter will be overridden by the material and/or the profile." -msgstr "印表機所支援的耗材直徑。實際列印的耗材直徑由耗材和/或列印參數提供。" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:291 -msgctxt "@label" -msgid "Material diameter" -msgstr "耗材直徑" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:299 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:390 -msgctxt "@label" -msgid "Nozzle size" -msgstr "噴頭孔徑" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:317 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:310 msgctxt "@label" msgid "Start Gcode" msgstr "起始 Gcode" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:327 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:320 msgctxt "@tooltip" msgid "Gcode commands to be executed at the very start." msgstr "將在開始時執行的 Gcode 命令。" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:336 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:329 msgctxt "@label" msgid "End Gcode" msgstr "結束 Gcode" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:346 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:339 msgctxt "@tooltip" msgid "Gcode commands to be executed at the very end." msgstr "將在結束時執行的 Gcode 命令。" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:378 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:370 msgctxt "@label" msgid "Nozzle Settings" msgstr "噴頭設定" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:400 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:382 +msgctxt "@label" +msgid "Nozzle size" +msgstr "噴頭孔徑" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:393 +msgctxt "@label" +msgid "Compatible material diameter" +msgstr "相容的耗材直徑" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:395 +msgctxt "@tooltip" +msgid "The nominal diameter of filament supported by the printer. The exact diameter will be overridden by the material and/or the profile." +msgstr "印表機所支援的耗材直徑。實際列印的耗材直徑由耗材和/或列印參數提供。" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:411 msgctxt "@label" msgid "Nozzle offset X" msgstr "噴頭偏移 X" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:412 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:423 msgctxt "@label" msgid "Nozzle offset Y" msgstr "噴頭偏移 Y" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:433 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:444 msgctxt "@label" msgid "Extruder Start Gcode" msgstr "擠出機起始 Gcode" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:451 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:462 msgctxt "@label" msgid "Extruder End Gcode" msgstr "擠出機結束 Gcode" @@ -1572,8 +1575,9 @@ msgstr "更新日誌" #: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.qml:37 #: /home/ruben/Projects/Cura/plugins/USBPrinting/FirmwareUpdateWindow.qml:107 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:55 -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:445 -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:357 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:306 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:456 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:492 #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:80 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:123 #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:147 @@ -1635,16 +1639,11 @@ msgstr "連接到網路印表機" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:65 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" +"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" +"要透過網路列印,請確認你的印表機已透過網路線或 WIFI 連接到網路。若你無法讓 Cura 與印表機連線,你仍然可以使用 USB 裝置將 G-code 檔案傳輸到印表機。\n" "\n" "從以下列表中選擇你的印表機:" @@ -1662,7 +1661,7 @@ msgstr "編輯" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:96 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:50 #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:95 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:190 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:171 msgctxt "@action:button" msgid "Remove" msgstr "移除" @@ -1675,9 +1674,7 @@ msgstr "刷新" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:194 msgctxt "@label" -msgid "" -"If your printer is not listed, read the network printing " -"troubleshooting guide" +msgid "If your printer is not listed, read the network printing troubleshooting guide" msgstr "如果你的印表機未被列出,請閱讀網路列印故障排除指南" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:221 @@ -1686,12 +1683,12 @@ msgid "Type" msgstr "類型" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:233 -msgctxt "@label" +msgctxt "@label Printer name" msgid "Ultimaker 3" msgstr "Ultimaker 3" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:236 -msgctxt "@label" +msgctxt "@label Printer name" msgid "Ultimaker 3 Extended" msgstr "Ultimaker 3 Extended" @@ -1737,8 +1734,6 @@ msgid "Enter the IP address or hostname of your printer on the network." msgstr "輸入印表機在網路上的 IP 位址或主機名。" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:379 -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:92 -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:88 #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:181 msgctxt "@action:button" msgid "OK" @@ -1759,6 +1754,11 @@ msgctxt "@label: arg 1 is group name" msgid "%1 is not set up to host a group of connected Ultimaker 3 printers" msgstr "%1 未設定成管理一組連線的 Ultimaker 3 印表機的主機" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterMonitorItem.qml:55 +msgctxt "@label link to connect manager" +msgid "Add/Remove printers" +msgstr "新增/移除印表機" + #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/OpenPanelButton.qml:14 msgctxt "@info:tooltip" msgid "Opens the print jobs page with your default web browser." @@ -1789,11 +1789,16 @@ msgid "Available" msgstr "可用" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:43 -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:101 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:100 msgctxt "@label:MonitorStatus" msgid "Lost connection with the printer" msgstr "與印表機的連接中斷" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:47 +msgctxt "@label Printer status" +msgid "Unknown" +msgstr "未知" + #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:257 msgctxt "@label:status" msgid "Disabled" @@ -1885,138 +1890,252 @@ msgctxt "@action:button" msgid "Activate Configuration" msgstr "啟用設定" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:20 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:21 msgctxt "@title:window" -msgid "Cura SolidWorks Plugin Configuration" -msgstr "Cura SolidWorks 外掛設定" +msgid "SolidWorks: Export wizard" +msgstr "SolidWorks: 導出精靈" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:44 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:45 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:140 msgctxt "@action:label" -msgid "Default quality of the exported STL:" -msgstr "預設的匯出 STL 品質:" +msgid "Quality:" +msgstr "品質:" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:79 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:78 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:179 msgctxt "@option:curaSolidworksStlQuality" -msgid "Always ask" -msgstr "總是詢問" +msgid "Fine (3D-printing)" +msgstr "精細 (3D-printing)" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:80 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:79 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:180 msgctxt "@option:curaSolidworksStlQuality" -msgid "Always use Fine quality" -msgstr "總是使用精細品質" +msgid "Coarse (3D-printing)" +msgstr "粗糙 (3D-printing)" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:81 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:80 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:181 msgctxt "@option:curaSolidworksStlQuality" -msgid "Always use Coarse quality" -msgstr "總是使用粗糙品質" +msgid "Fine (SolidWorks)" +msgstr "精細 (SolidWorks)" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:20 -msgctxt "@title:window" -msgid "Import SolidWorks File as STL..." -msgstr "匯入 SolidWorks 檔案為 STL..." - -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:43 -msgctxt "@info:tooltip" -msgid "Quality of the Exported STL" -msgstr "匯出 STL 的品質" - -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:48 -msgctxt "@action:label" -msgid "Quality" -msgstr "品質" - -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:62 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:81 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:182 msgctxt "@option:curaSolidworksStlQuality" -msgid "Coarse" -msgstr "粗糙" +msgid "Coarse (SolidWorks)" +msgstr "粗糙 (SolidWorks)" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:63 -msgctxt "@option:curaSolidworksStlQuality" -msgid "Fine" -msgstr "精細" - -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:78 -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:82 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:94 msgctxt "@text:window" -msgid "Remember my choice" -msgstr "記住我的選擇" +msgid "Show this dialog again" +msgstr "再次顯示這個對話框" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:81 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:104 +msgctxt "@action:button" +msgid "Continue" +msgstr "繼續" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksWizard.qml:116 +msgctxt "@action:button" +msgid "Abort" +msgstr "取消" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:21 +msgctxt "@title:window" +msgid "How to install Cura SolidWorks macro" +msgstr "如何安裝 Cura SolidWorks 巨集" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:62 +msgctxt "@description:label" +msgid "Steps:" +msgstr "步驟:" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:140 +msgctxt "@action:button" +msgid "" +"Open the directory\n" +"with macro and icon" +msgstr "" +"使用巨集和圖示\n" +"開啟目錄" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:160 +msgctxt "@description:label" +msgid "Instructions:" +msgstr "操作說明:" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:202 +msgctxt "@action:playpause" +msgid "Play" +msgstr "播放" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:206 +msgctxt "@action:playpause" +msgid "Pause" +msgstr "暫停" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:268 +msgctxt "@action:button" +msgid "Previous Step" +msgstr "前一步" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:283 +msgctxt "@action:button" +msgid "Done" +msgstr "完成" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksMacroTutorial.qml:287 +msgctxt "@action:button" +msgid "Next Step" +msgstr "下一步" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:21 +msgctxt "@title:window" +msgid "SolidWorks plugin: Configuration" +msgstr "SolidWorks 外掛:設定" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:39 +msgctxt "@title:tab" +msgid "Conversion settings" +msgstr "轉換設定" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:66 +msgctxt "@label" +msgid "First choice:" +msgstr "第一選擇:" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:86 +msgctxt "@text:menu" +msgid "Latest installed version (Recommended)" +msgstr "最新安裝的版本(建議)" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:95 +msgctxt "@text:menu" +msgid "Default version" +msgstr "預設的版本" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:193 +msgctxt "@label" +msgid "Show wizard before opening SolidWorks files" +msgstr "開啟 SolidWorks 檔案時顯示精靈" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:203 +msgctxt "@label" +msgid "Automatically rotate opened file into normed orientation" +msgstr "自動將開啟的檔案旋轉到正常方向" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:210 +msgctxt "@title:tab" +msgid "Installation(s)" +msgstr "安裝" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:284 +msgctxt "@label" +msgid "COM service found" +msgstr "找到 COM 服務" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:295 +msgctxt "@label" +msgid "Executable found" +msgstr "找到可執行檔案" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:306 +msgctxt "@label" +msgid "COM starting" +msgstr "COM 啟動中" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:317 +msgctxt "@label" +msgid "Revision number" +msgstr "版本號碼" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:328 +msgctxt "@label" +msgid "Functions available" +msgstr "可用功能" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksConfiguration.qml:341 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:264 +msgctxt "@action:button" +msgid "Save" +msgstr "儲存" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:117 msgctxt "@label" msgid "Color scheme" msgstr "顏色方案" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:96 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:132 msgctxt "@label:listbox" msgid "Material Color" msgstr "耗材顏色" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:100 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:136 msgctxt "@label:listbox" msgid "Line Type" msgstr "線條類型" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:104 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:140 msgctxt "@label:listbox" msgid "Feedrate" msgstr "進給率" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:108 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:144 msgctxt "@label:listbox" msgid "Layer thickness" msgstr "層厚" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:148 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:185 msgctxt "@label" msgid "Compatibility Mode" msgstr "相容模式" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:230 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:264 msgctxt "@label" msgid "Show Travels" msgstr "顯示移動軌跡" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:236 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:270 msgctxt "@label" msgid "Show Helpers" msgstr "顯示輔助結構" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:242 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:276 msgctxt "@label" msgid "Show Shell" msgstr "顯示外殼" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:248 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:282 msgctxt "@label" msgid "Show Infill" msgstr "顯示填充" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:297 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:330 msgctxt "@label" msgid "Only Show Top Layers" msgstr "只顯示頂層" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:306 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:339 msgctxt "@label" msgid "Show 5 Detailed Layers On Top" msgstr "顯示頂端 5 層列印細節" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:317 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:350 msgctxt "@label" msgid "Top / Bottom" msgstr "頂 / 底層" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:321 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:354 msgctxt "@label" msgid "Inner Wall" msgstr "內壁" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:378 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:410 msgctxt "@label" msgid "min" msgstr "最小值" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:420 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:452 msgctxt "@label" msgid "max" msgstr "最大值" @@ -2041,7 +2160,7 @@ msgctxt "@label" msgid "Settings" msgstr "設定" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:455 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:466 msgctxt "@info:tooltip" msgid "Change active post-processing scripts" msgstr "更改目前啟用的後處理腳本" @@ -2093,14 +2212,8 @@ msgstr "深度 (mm)" #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:126 msgctxt "@info:tooltip" -msgid "" -"By default, white pixels represent high points on the mesh and black pixels " -"represent low points on the mesh. Change this option to reverse the behavior " -"such that black pixels represent high points on the mesh and white pixels " -"represent low points on the mesh." -msgstr "" -"預設情況下,白色像素表示網格上的高點,黑色像素表示網格上的低點。更改此選項將" -"以相反方式呈現,黑色像素表示網格上的高點,白色像素表示網格上的低點。" +msgid "By default, white pixels represent high points on the mesh and black pixels represent low points on the mesh. Change this option to reverse the behavior such that black pixels represent high points on the mesh and white pixels represent low points on the mesh." +msgstr "預設情況下,白色像素表示網格上的高點,黑色像素表示網格上的低點。更改此選項將以相反方式呈現,黑色像素表示網格上的高點,白色像素表示網格上的低點。" #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:139 msgctxt "@item:inlistbox" @@ -2122,23 +2235,53 @@ msgctxt "@action:label" msgid "Smoothing" msgstr "平滑" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:208 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:38 +msgctxt "@label" +msgid "Mesh Type" +msgstr "網格類型" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:69 +msgctxt "@label" +msgid "Normal model" +msgstr "普通模型" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:76 +msgctxt "@label" +msgid "Print as support" +msgstr "做為支撐" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:84 +msgctxt "@label" +msgid "Don't support overlap with other models" +msgstr "不支援與其他模型重疊" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:92 +msgctxt "@label" +msgid "Modify settings for overlap with other models" +msgstr "修改其他模型的重疊設定" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:100 +msgctxt "@label" +msgid "Modify settings for infill of other models" +msgstr "修改其他模型的填充設定" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:333 msgctxt "@action:button" msgid "Select settings" msgstr "選擇設定" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:248 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:375 msgctxt "@title:window" msgid "Select Settings to Customize for this model" msgstr "選擇對此模型的自訂設定" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:272 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:402 #: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:91 msgctxt "@label:textbox" msgid "Filter..." msgstr "篩選…" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:296 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:426 msgctxt "@label:checkbox" msgid "Show all" msgstr "顯示全部" @@ -2347,23 +2490,13 @@ msgstr "列印平台調平" #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:38 msgctxt "@label" -msgid "" -"To make sure your prints will come out great, you can now adjust your " -"buildplate. When you click 'Move to Next Position' the nozzle will move to " -"the different positions that can be adjusted." -msgstr "" -"為了確保列印品質出色,你現在可以開始調整你的列印平台。當你點擊「移動到下一個" -"位置」時,噴頭將移動到不同的可調節位置。" +msgid "To make sure your prints will come out great, you can now adjust your buildplate. When you click 'Move to Next Position' the nozzle will move to the different positions that can be adjusted." +msgstr "為了確保列印品質出色,你現在可以開始調整你的列印平台。當你點擊「移動到下一個位置」時,噴頭將移動到不同的可調節位置。" #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:47 msgctxt "@label" -msgid "" -"For every position; insert a piece of paper under the nozzle and adjust the " -"print build plate height. The print build plate height is right when the " -"paper is slightly gripped by the tip of the nozzle." -msgstr "" -"在噴頭停止的每一個位置下方插入一張紙,並調整平台高度。當紙張恰好被噴頭的尖端" -"輕微壓住時,表示列印平台已被校準在正確的高度。" +msgid "For every position; insert a piece of paper under the nozzle and adjust the print build plate height. The print build plate height is right when the paper is slightly gripped by the tip of the nozzle." +msgstr "在噴頭停止的每一個位置下方插入一張紙,並調整平台高度。當紙張恰好被噴頭的尖端輕微壓住時,表示列印平台已被校準在正確的高度。" #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:62 msgctxt "@action:button" @@ -2382,21 +2515,13 @@ msgstr "升級韌體" #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UpgradeFirmwareMachineAction.qml:38 msgctxt "@label" -msgid "" -"Firmware is the piece of software running directly on your 3D printer. This " -"firmware controls the step motors, regulates the temperature and ultimately " -"makes your printer work." -msgstr "" -"韌體是直接在 3D 印表機上運行的一個軟體。此韌體控制步進馬達,調節溫度讓印表機" -"正常運作。" +msgid "Firmware is the piece of software running directly on your 3D printer. This firmware controls the step motors, regulates the temperature and ultimately makes your printer work." +msgstr "韌體是直接在 3D 印表機上運行的一個軟體。此韌體控制步進馬達,調節溫度讓印表機正常運作。" #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UpgradeFirmwareMachineAction.qml:48 msgctxt "@label" -msgid "" -"The firmware shipping with new printers works, but new versions tend to have " -"more features and improvements." -msgstr "" -"新印表機出廠配備的韌體完全可以正常使用,但新版本往往具有更多的新功能和改進。" +msgid "The firmware shipping with new printers works, but new versions tend to have more features and improvements." +msgstr "新印表機出廠配備的韌體完全可以正常使用,但新版本往往具有更多的新功能和改進。" #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UpgradeFirmwareMachineAction.qml:62 msgctxt "@action:button" @@ -2430,12 +2555,8 @@ msgstr "檢查印表機" #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:39 msgctxt "@label" -msgid "" -"It's a good idea to do a few sanity checks on your Ultimaker. You can skip " -"this step if you know your machine is functional" -msgstr "" -"對 Ultimaker 進行幾項正確性檢查是很好的做法。如果你知道你的機器功能正常,則可" -"跳過此步驟" +msgid "It's a good idea to do a few sanity checks on your Ultimaker. You can skip this step if you know your machine is functional" +msgstr "對 Ultimaker 進行幾項正確性檢查是很好的做法。如果你知道你的機器功能正常,則可跳過此步驟" #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:53 msgctxt "@action:button" @@ -2520,66 +2641,66 @@ msgctxt "@label" msgid "Everything is in order! You're done with your CheckUp." msgstr "一切正常!你已經完成檢查。" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:88 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:87 msgctxt "@label:MonitorStatus" msgid "Not connected to a printer" msgstr "未連接至印表機" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:90 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:89 msgctxt "@label:MonitorStatus" msgid "Printer does not accept commands" msgstr "印表機不接受命令" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:96 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:95 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:194 msgctxt "@label:MonitorStatus" msgid "In maintenance. Please check the printer" msgstr "維護中。請檢查印表機" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:103 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:102 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:184 msgctxt "@label:MonitorStatus" msgid "Printing..." msgstr "列印中..." -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:106 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:105 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:186 msgctxt "@label:MonitorStatus" msgid "Paused" msgstr "已暫停" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:109 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:108 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:188 msgctxt "@label:MonitorStatus" msgid "Preparing..." msgstr "準備中..." -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:111 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:110 msgctxt "@label:MonitorStatus" msgid "Please remove the print" msgstr "請取出列印件" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:237 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:241 msgctxt "@label:" msgid "Resume" msgstr "繼續" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:241 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:245 msgctxt "@label:" msgid "Pause" msgstr "暫停" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:270 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:274 msgctxt "@label:" msgid "Abort Print" msgstr "中斷列印" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:280 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:284 msgctxt "@window:title" msgid "Abort print" msgstr "中斷列印" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:282 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:286 msgctxt "@label" msgid "Are you sure you want to abort the print?" msgstr "你確定要中斷列印嗎?" @@ -2614,19 +2735,19 @@ msgid "Customized" msgstr "自訂" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:157 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:593 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:595 msgctxt "@option:discardOrKeep" msgid "Always ask me this" msgstr "總是詢問" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:158 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:594 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:596 msgctxt "@option:discardOrKeep" msgid "Discard and never ask again" msgstr "捨棄更改,並不再詢問此問題" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:159 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:595 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:597 msgctxt "@option:discardOrKeep" msgid "Keep and never ask again" msgstr "保留更改,並不再詢問此問題" @@ -2644,7 +2765,7 @@ msgstr "保留" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:222 msgctxt "@action:button" msgid "Create New Profile" -msgstr "創建新的列印參數" +msgstr "建立新的列印參數" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:44 msgctxt "@title" @@ -2661,72 +2782,72 @@ msgctxt "@label" msgid "Brand" msgstr "品牌" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:92 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:88 msgctxt "@label" msgid "Material Type" msgstr "耗材類型" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:105 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:97 msgctxt "@label" msgid "Color" msgstr "顏色" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:139 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:141 msgctxt "@label" msgid "Properties" msgstr "屬性" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:141 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:143 msgctxt "@label" msgid "Density" msgstr "密度" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:156 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:158 msgctxt "@label" msgid "Diameter" msgstr "直徑" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:185 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:187 msgctxt "@label" msgid "Filament Cost" msgstr "耗材成本" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:201 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:203 msgctxt "@label" msgid "Filament weight" msgstr "耗材重量" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:218 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:220 msgctxt "@label" msgid "Filament length" msgstr "耗材長度" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:227 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:229 msgctxt "@label" msgid "Cost per Meter" msgstr "每公尺成本" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:241 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:243 msgctxt "@label" msgid "This material is linked to %1 and shares some of its properties." msgstr "此耗材與 %1 相關聯,並共享其部份屬性。" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:248 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:250 msgctxt "@label" msgid "Unlink Material" msgstr "解除聯結耗材" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:259 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:261 msgctxt "@label" msgid "Description" msgstr "描述" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:272 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:274 msgctxt "@label" msgid "Adhesion Information" msgstr "附著資訊" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:298 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:300 msgctxt "@label" msgid "Print settings" msgstr "列印設定" @@ -2767,7 +2888,7 @@ msgid "Unit" msgstr "單位" #: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:14 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:439 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:509 msgctxt "@title:tab" msgid "General" msgstr "基本" @@ -2782,251 +2903,255 @@ msgctxt "@label" msgid "Language:" msgstr "語言:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:205 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:207 msgctxt "@label" msgid "Currency:" msgstr "貨幣:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:219 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:221 msgctxt "@label" msgid "Theme:" msgstr "主題:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:279 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:281 msgctxt "@label" -msgid "" -"You will need to restart the application for these changes to have effect." +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:296 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:298 msgctxt "@info:tooltip" msgid "Slice automatically when changing settings." msgstr "當設定變更時自動進行切片。" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:304 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:306 msgctxt "@option:check" msgid "Slice automatically" msgstr "自動切片" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:318 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:320 msgctxt "@label" msgid "Viewport behavior" msgstr "顯示區設定" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:326 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:328 msgctxt "@info:tooltip" -msgid "" -"Highlight unsupported areas of the model in red. Without support these areas " -"will not print properly." +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:335 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:337 msgctxt "@option:check" msgid "Display overhang" msgstr "顯示懸垂(Overhang)" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:342 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:344 msgctxt "@info:tooltip" -msgid "" -"Moves the camera so the model is in the center of the view when a model is " -"selected" +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:347 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:349 msgctxt "@action:button" msgid "Center camera when item is selected" msgstr "當專案被選中時,自動置中視角" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:356 +#: /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:361 +#: /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:370 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:372 msgctxt "@info:tooltip" msgid "Should zooming move in the direction of the mouse?" msgstr "是否跟隨滑鼠方向進行縮放?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:375 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:377 msgctxt "@action:button" msgid "Zoom toward mouse direction" msgstr "跟隨滑鼠方向縮放" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:384 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:386 msgctxt "@info:tooltip" -msgid "" -"Should models on the platform be moved so that they no longer intersect?" +msgid "Should models on the platform be moved so that they no longer intersect?" msgstr "需要移動平台上的模型,使它們不再交錯嗎?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:389 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:391 msgctxt "@option:check" msgid "Ensure models are kept apart" msgstr "確保每個模型都保持分離" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:397 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:399 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:402 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:404 msgctxt "@option:check" msgid "Automatically drop models to the build plate" msgstr "自動下降模型到列印平台" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:414 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:416 msgctxt "@info:tooltip" msgid "Show caution message in gcode reader." msgstr "在 G-code 讀取器中顯示警告資訊。" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:423 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:425 msgctxt "@option:check" msgid "Caution message in gcode reader" msgstr "G-code 讀取器中的警告資訊" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:430 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:432 msgctxt "@info:tooltip" msgid "Should layer be forced into compatibility mode?" msgstr "分層檢視要強制進入相容模式嗎?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:435 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:437 msgctxt "@option:check" msgid "Force layer view compatibility mode (restart required)" msgstr "強制分層檢視相容模式(需要重新啟動)" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:451 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:453 msgctxt "@label" msgid "Opening and saving files" msgstr "開啟並儲存檔案" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:457 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:459 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:462 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:464 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:473 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 "" -"部份模型採用較大的單位(例如:公尺),導致模型變得非常小,要將這些模型放大嗎?" +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:478 msgctxt "@option:check" msgid "Scale extremely small models" msgstr "放大過小模型" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:485 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:487 msgctxt "@info:tooltip" -msgid "" -"Should a prefix based on the printer name be added to the print job name " -"automatically?" +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:490 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:492 msgctxt "@option:check" msgid "Add machine prefix to job name" msgstr "將印表機名稱前綴添加到列印作業名稱中" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:499 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:501 msgctxt "@info:tooltip" msgid "Should a summary be shown when saving a project file?" msgstr "儲存專案檔案時是否顯示摘要?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:503 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:505 msgctxt "@option:check" msgid "Show summary dialog when saving project" msgstr "儲存專案時顯示摘要對話框" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:512 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:514 msgctxt "@info:tooltip" msgid "Default behavior when opening a project file" msgstr "開啟專案檔案時的預設行為" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:520 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:522 msgctxt "@window:text" msgid "Default behavior when opening a project file: " msgstr "開啟專案檔案時的預設行為:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:533 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:535 msgctxt "@option:openProject" msgid "Always ask" msgstr "總是詢問" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:534 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:536 msgctxt "@option:openProject" msgid "Always open as a project" msgstr "總是作為一個專案開啟" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:535 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:537 msgctxt "@option:openProject" msgid "Always import models" msgstr "總是匯入模型" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:571 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:573 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 "" -"當你對列印參數進行更改然後切換到其他列印參數時,將顯示一個對話框詢問你是否要" -"保留修改。你也可以選擇預設不顯示該對話框。" +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:580 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:582 msgctxt "@label" msgid "Override Profile" msgstr "覆寫列印參數" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:629 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:631 msgctxt "@label" msgid "Privacy" msgstr "隱私權" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:636 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:638 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:641 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:643 msgctxt "@option:check" msgid "Check for updates on start" msgstr "啟動時檢查更新" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:651 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:653 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 地址或其他私人資料。" +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:656 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:658 msgctxt "@option:check" msgid "Send (anonymous) print information" msgstr "(匿名)發送列印資訊" +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:674 +msgctxt "@label" +msgid "Experimental" +msgstr "實驗功能" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:680 +msgctxt "@info:tooltip" +msgid "Use multi build plate functionality" +msgstr "使用多列印平台功能" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:685 +msgctxt "@option:check" +msgid "Use multi build plate functionality (restart required)" +msgstr "使用多列印平台功能(需重啟軟體)" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:694 +msgctxt "@info:tooltip" +msgid "Should newly loaded models be arranged on the build plate? Used in conjunction with multi build plate (EXPERIMENTAL)" +msgstr "新載入的模型要擺放在列印平台上嗎?必需與多列印平台功能一起使用(實驗功能)" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:699 +msgctxt "@option:check" +msgid "Do not arrange objects on load" +msgstr "載入時不要擺放物件" + #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:444 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:514 msgctxt "@title:tab" msgid "Printers" msgstr "印表機" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:37 #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:51 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:137 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:138 msgctxt "@action:button" msgid "Activate" msgstr "啟用" @@ -3069,7 +3194,7 @@ msgid "Waiting for a printjob" msgstr "等待列印作業" #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:448 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:518 msgctxt "@title:tab" msgid "Profiles" msgstr "列印參數" @@ -3087,7 +3212,7 @@ msgstr "自訂列印參數" #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:64 msgctxt "@label" msgid "Create" -msgstr "創建" +msgstr "建立" #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:80 msgctxt "@label" @@ -3095,13 +3220,13 @@ msgid "Duplicate" msgstr "複製" #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:113 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:201 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:182 msgctxt "@action:button" msgid "Import" msgstr "匯入" #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:119 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:212 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:193 msgctxt "@action:button" msgid "Export" msgstr "匯出" @@ -3123,9 +3248,7 @@ msgstr "捨棄目前更改" #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:190 msgctxt "@action:label" -msgid "" -"This profile uses the defaults specified by the printer, so it has no " -"settings/overrides in the list below." +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:197 @@ -3146,7 +3269,7 @@ msgstr "重命名列印參數" #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:271 msgctxt "@title:window" msgid "Create Profile" -msgstr "創建列印參數" +msgstr "建立列印參數" #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:285 msgctxt "@title:window" @@ -3169,15 +3292,13 @@ msgid "Export Profile" msgstr "匯出列印參數" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:446 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:516 msgctxt "@title:tab" msgid "Materials" msgstr "耗材" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:116 -msgctxt "" -"@action:label %1 is printer name, %2 is how this printer names variants, %3 " -"is variant name" +msgctxt "@action:label %1 is printer name, %2 is how this printer names variants, %3 is variant name" msgid "Printer: %1, %2: %3" msgstr "印表機:%1, %2: %3" @@ -3186,62 +3307,60 @@ msgctxt "@action:label %1 is printer name" msgid "Printer: %1" msgstr "印表機:%1" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:149 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:150 msgctxt "@action:button" msgid "Create" -msgstr "創建" +msgstr "建立" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:168 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:160 msgctxt "@action:button" msgid "Duplicate" msgstr "複製" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:311 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:319 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:298 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:306 msgctxt "@title:window" msgid "Import Material" msgstr "匯入耗材設定" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:320 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:307 msgctxt "@info:status Don't translate the XML tags or !" -msgid "" -"Could not import material %1: %2" +msgid "Could not import material %1: %2" msgstr "無法匯入耗材 %1%2" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:324 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:311 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully imported material %1" msgstr "成功匯入耗材 %1" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:343 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:358 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:329 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:344 msgctxt "@title:window" msgid "Export Material" msgstr "匯出耗材設定" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:362 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:348 msgctxt "@info:status Don't translate the XML tags and !" -msgid "" -"Failed to export material to %1: %2" +msgid "Failed to export material to %1: %2" msgstr "無法匯出耗材至 %1%2" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:368 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:354 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully exported material to %1" msgstr "成功匯出耗材至:%1" #: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:18 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:793 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:869 msgctxt "@title:window" msgid "Add Printer" msgstr "新增印表機" -#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:185 +#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:194 msgctxt "@label" msgid "Printer Name:" msgstr "印表機名稱:" -#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:208 +#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:217 msgctxt "@action:button" msgid "Add Printer" msgstr "新增印表機" @@ -3370,16 +3489,10 @@ msgctxt "@label" msgid "Profile:" msgstr "列印參數:" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:66 -msgctxt "@" -msgid "No Profile Available" -msgstr "無可用的列印參數" - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:104 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:102 msgctxt "@tooltip" msgid "" -"Some setting/override values are different from the values stored in the " -"profile.\n" +"Some setting/override values are different from the values stored in the profile.\n" "\n" "Click to open the profile manager." msgstr "" @@ -3387,41 +3500,40 @@ msgstr "" "\n" "點擊開啟列印參數管理器。" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:152 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:150 msgctxt "@label:textbox" msgid "Search..." msgstr "搜尋..." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:483 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:482 msgctxt "@action:menu" msgid "Copy value to all extruders" msgstr "將設定值複製到所有擠出機" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:498 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:497 msgctxt "@action:menu" msgid "Hide this setting" msgstr "隱藏此設定" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:508 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:507 msgctxt "@action:menu" msgid "Don't show this setting" msgstr "不再顯示此設定" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:512 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:511 msgctxt "@action:menu" msgid "Keep this setting visible" msgstr "保持此設定可見" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:531 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:530 msgctxt "@action:menu" msgid "Configure setting visiblity..." msgstr "設定設定可見性..." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingCategory.qml:123 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingCategory.qml:250 msgctxt "@label" msgid "" -"Some hidden settings use values different from their normal calculated " -"value.\n" +"Some hidden settings use values different from their normal calculated value.\n" "\n" "Click to make these settings visible." msgstr "" @@ -3429,29 +3541,27 @@ msgstr "" "\n" "點擊以顯這些設定。" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:62 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:61 msgctxt "@label Header for list of settings." msgid "Affects" msgstr "影響" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:67 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:66 msgctxt "@label Header for list of settings." msgid "Affected By" msgstr "影響因素" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:157 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:156 msgctxt "@label" -msgid "" -"This setting is always shared between all extruders. Changing it here will " -"change the value for all extruders" -msgstr "這個設定由全部的擠出機共享,變更這個設定將改變全部擠出機的設定值" +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:160 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:159 msgctxt "@label" msgid "The value is resolved from per-extruder values " msgstr "這個數值是由每個擠出機的設定值解析出來的" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:186 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:190 msgctxt "@label" msgid "" "This setting has a value that is different from the profile.\n" @@ -3462,11 +3572,10 @@ msgstr "" "\n" "單擊以復原列印參數的值。" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:284 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:288 msgctxt "@label" msgid "" -"This setting is normally calculated, but it currently has an absolute value " -"set.\n" +"This setting is normally calculated, but it currently has an absolute value set.\n" "\n" "Click to restore the calculated value." msgstr "" @@ -3474,12 +3583,12 @@ msgstr "" "\n" "點擊以恢復計算得出的數值。" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:120 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:128 msgctxt "@label:listbox" msgid "Print Setup" msgstr "列印設定" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:120 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:128 msgctxt "@label:listbox" msgid "" "Print Setup disabled\n" @@ -3488,67 +3597,59 @@ msgstr "" "列印設定已關閉\n" "G-code 檔案無法被修改" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:336 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:342 msgctxt "@label Hours and minutes" msgid "00h 00min" msgstr "00 小時 00 分" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:354 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:359 msgctxt "@tooltip" -msgid "Time specification
      " -msgstr "時間資訊
      " +msgid "Time specification" +msgstr "時間規格" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:429 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:441 msgctxt "@label" msgid "Cost specification" msgstr "成本明細" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:434 -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:445 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:446 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:455 msgctxt "@label m for meter" msgid "%1m" msgstr "%1m" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:435 -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:446 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:447 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:456 msgctxt "@label g for grams" msgid "%1g" msgstr "%1g" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:444 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:454 msgctxt "@label" msgid "Total:" msgstr "總共:" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:498 -msgctxt "" -"@label Print estimates: m for meters, g for grams, %4 is currency and %3 is " -"print cost" +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:504 +msgctxt "@label Print estimates: m for meters, g for grams, %4 is currency and %3 is print cost" msgid "%1m / ~ %2g / ~ %4 %3" msgstr "%1m / ~ %2g / ~ %4 %3" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:503 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:509 msgctxt "@label Print estimates: m for meters, g for grams" msgid "%1m / ~ %2g" msgstr "%1m / ~ %2g" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:586 -msgctxt "@tooltip" -msgid "" -"Recommended Print Setup

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

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

      Print with finegrained control over every " -"last bit of the slicing process." +msgid "Recommended Print Setup

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

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

      Print with finegrained control over every last bit of the slicing process." msgstr "自訂列印設定
      對切片過程中的每一個細節進行精細控制。" -#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:49 +#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:50 msgctxt "@title:menuitem %1 is the automatically selected material" msgid "Automatic: %1" msgstr "自動:%1" @@ -3558,6 +3659,16 @@ msgctxt "@title:menu menubar:toplevel" msgid "&View" msgstr "檢視(&V)" +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:37 +msgctxt "@action:inmenu menubar:view" +msgid "&Camera position" +msgstr "視角位置(&C)" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:52 +msgctxt "@action:inmenu menubar:view" +msgid "&Build plate" +msgstr "列印平台(&B)" + #: /home/ruben/Projects/Cura/resources/qml/Menus/NozzleMenu.qml:40 msgctxt "@title:menuitem %1 is the nozzle currently loaded in the printer" msgid "Automatic: %1" @@ -3569,13 +3680,13 @@ msgid "Print Selected Model With:" msgid_plural "Print Selected Models With:" msgstr[0] "列印所選模型:" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ContextMenu.qml:83 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ContextMenu.qml:114 msgctxt "@title:window" msgid "Multiply Selected Model" msgid_plural "Multiply Selected Models" msgstr[0] "複製所選模型" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ContextMenu.qml:108 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ContextMenu.qml:139 msgctxt "@label" msgid "Number of Copies" msgstr "複製個數" @@ -3591,19 +3702,15 @@ msgid "No printer connected" msgstr "沒有連接印表機" #: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:90 -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:138 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:139 msgctxt "@label" msgid "Extruder" msgstr "擠出機" #: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:120 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,則關閉加熱端的加" -"熱。" +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/PrintMonitor.qml:152 msgctxt "@tooltip" @@ -3632,9 +3739,7 @@ msgstr "列印平台" #: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:312 msgctxt "@tooltip" -msgid "" -"The target temperature of the heated bed. The bed will heat up or cool down " -"towards this temperature. If this is 0, the bed heating is turned off." +msgid "The target temperature of the heated bed. The bed will heat up or cool down towards this temperature. If this is 0, the bed heating is turned off." msgstr "熱床的目標溫度。熱床將加熱或冷卻至此溫度。若設定為 0,則不使用熱床。" #: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:344 @@ -3659,13 +3764,8 @@ msgstr "預熱" #: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:650 msgctxt "@tooltip of pre-heat" -msgid "" -"Heat the bed in advance before printing. You can continue adjusting your " -"print while it is heating, and you won't have to wait for the bed to heat up " -"when you're ready to print." -msgstr "" -"列印前請預熱熱床。你可以在熱床加熱時繼續調整相關物件,讓你在準備列印時不必等" -"待熱床加熱完畢。" +msgid "Heat the bed in advance before printing. You can continue adjusting your print while it is heating, and you won't have to wait for the bed to heat up when you're ready to print." +msgstr "列印前請預熱熱床。你可以在熱床加熱時繼續調整相關物件,讓你在準備列印時不必等待熱床加熱完畢。" #: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:703 msgctxt "@label" @@ -3712,264 +3812,299 @@ msgctxt "@label" msgid "Estimated time left" msgstr "預計剩餘時間" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:72 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:79 msgctxt "@action:inmenu" msgid "Toggle Fu&ll Screen" msgstr "切換全螢幕(&F)" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:79 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:86 msgctxt "@action:inmenu menubar:edit" msgid "&Undo" msgstr "復原(&U)" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:89 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:96 msgctxt "@action:inmenu menubar:edit" msgid "&Redo" msgstr "取消復原(&R)" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:99 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:106 msgctxt "@action:inmenu menubar:file" msgid "&Quit" msgstr "退出(&Q)" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:107 -msgctxt "@action:inmenu menubar:view" -msgid "&Reset camera position" -msgstr "重置視角位置" - #: /home/ruben/Projects/Cura/resources/qml/Actions.qml:114 +msgctxt "@action:inmenu menubar:view" +msgid "&3D View" +msgstr "立體圖(&3)" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:121 +msgctxt "@action:inmenu menubar:view" +msgid "&Front View" +msgstr "前視圖(&F)" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:128 +msgctxt "@action:inmenu menubar:view" +msgid "&Top View" +msgstr "上視圖(&T)" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:135 +msgctxt "@action:inmenu menubar:view" +msgid "&Left Side View" +msgstr "左視圖(&L)" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:142 +msgctxt "@action:inmenu menubar:view" +msgid "&Right Side View" +msgstr "右視圖(&R)" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:149 msgctxt "@action:inmenu" msgid "Configure Cura..." msgstr "設定 Cura…" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:121 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:156 msgctxt "@action:inmenu menubar:printer" msgid "&Add Printer..." msgstr "新增印表機(&A)…" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:127 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:162 msgctxt "@action:inmenu menubar:printer" msgid "Manage Pr&inters..." msgstr "管理印表機(&I)..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:134 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:169 msgctxt "@action:inmenu" msgid "Manage Materials..." msgstr "管理耗材…" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:142 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:177 msgctxt "@action:inmenu menubar:profile" msgid "&Update profile with current settings/overrides" msgstr "使用目前設定 / 覆寫更新列印參數(&U)" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:150 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:185 msgctxt "@action:inmenu menubar:profile" msgid "&Discard current changes" msgstr "捨棄目前更改(&D)" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:162 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:197 msgctxt "@action:inmenu menubar:profile" msgid "&Create profile from current settings/overrides..." -msgstr "從目前設定 / 覆寫值創建列印參數(&C)…" +msgstr "從目前設定 / 覆寫值建立列印參數(&C)…" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:168 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:203 msgctxt "@action:inmenu menubar:profile" msgid "Manage Profiles..." msgstr "管理列印參數.." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:175 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:210 msgctxt "@action:inmenu menubar:help" msgid "Show Online &Documentation" msgstr "顯示線上說明文件(&D)" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:183 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:218 msgctxt "@action:inmenu menubar:help" msgid "Report a &Bug" msgstr "BUG 回報(&B)" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:191 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:226 msgctxt "@action:inmenu menubar:help" msgid "&About..." msgstr "關於(&A)…" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:198 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:233 msgctxt "@action:inmenu menubar:edit" msgid "Delete &Selected Model" msgid_plural "Delete &Selected Models" msgstr[0] "刪除所選模型(&S)" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:208 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:243 msgctxt "@action:inmenu menubar:edit" msgid "Center Selected Model" msgid_plural "Center Selected Models" msgstr[0] "置中所選模型" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:217 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:252 msgctxt "@action:inmenu menubar:edit" msgid "Multiply Selected Model" msgid_plural "Multiply Selected Models" msgstr[0] "複製所選模型" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:226 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:261 msgctxt "@action:inmenu" msgid "Delete Model" msgstr "刪除模型" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:234 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:269 msgctxt "@action:inmenu" msgid "Ce&nter Model on Platform" msgstr "將模型置中(&N)" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:240 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:275 msgctxt "@action:inmenu menubar:edit" msgid "&Group Models" msgstr "群組模型(&G)" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:250 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:295 msgctxt "@action:inmenu menubar:edit" msgid "Ungroup Models" msgstr "取消模型群組" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:260 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:305 msgctxt "@action:inmenu menubar:edit" msgid "&Merge Models" msgstr "結合模型(&M)" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:270 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:315 msgctxt "@action:inmenu" msgid "&Multiply Model..." msgstr "複製模型…(&M)" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:277 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:322 msgctxt "@action:inmenu menubar:edit" msgid "&Select All Models" msgstr "選擇所有模型(&S)" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:287 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:332 msgctxt "@action:inmenu menubar:edit" msgid "&Clear Build Plate" msgstr "清空列印平台(&C)" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:297 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:342 msgctxt "@action:inmenu menubar:file" msgid "Re&load All Models" msgstr "重新載入所有模型(&L)" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:306 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:351 +msgctxt "@action:inmenu menubar:edit" +msgid "Arrange All Models To All Build Plates" +msgstr "將所有模型排列到所有列印平台上" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:358 msgctxt "@action:inmenu menubar:edit" msgid "Arrange All Models" -msgstr "編位所有的模型" +msgstr "排列所有模型" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:314 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:366 msgctxt "@action:inmenu menubar:edit" msgid "Arrange Selection" -msgstr "為所選模型編位" +msgstr "排列所選模型" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:321 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:373 msgctxt "@action:inmenu menubar:edit" msgid "Reset All Model Positions" msgstr "重置所有模型位置" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:328 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:380 msgctxt "@action:inmenu menubar:edit" msgid "Reset All Model &Transformations" msgstr "重置所有模型旋轉(&T)" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:335 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:387 msgctxt "@action:inmenu menubar:file" msgid "&Open File(s)..." msgstr "開啟檔案(&O)…" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:343 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:395 msgctxt "@action:inmenu menubar:file" msgid "&New Project..." msgstr "新建專案(&N)…" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:350 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:402 msgctxt "@action:inmenu menubar:help" msgid "Show Engine &Log..." msgstr "顯示切片引擎日誌(&L)..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:358 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:410 msgctxt "@action:inmenu menubar:help" msgid "Show Configuration Folder" msgstr "顯示設定資料夾" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:365 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:417 msgctxt "@action:menu" msgid "Configure setting visibility..." msgstr "參數顯示設定..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:372 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:424 msgctxt "@action:menu" msgid "Browse plugins..." msgstr "瀏覽外掛..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:379 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:431 msgctxt "@action:menu" msgid "Installed plugins..." msgstr "安裝外掛..." -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:28 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:438 +msgctxt "@action:inmenu menubar:view" +msgid "Expand/Collapse Sidebar" +msgstr "展開/收合側邊欄" + +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:26 msgctxt "@label:PrintjobStatus" msgid "Please load a 3D model" msgstr "請載入一個 3D 模型" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:34 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:36 msgctxt "@label:PrintjobStatus" msgid "Ready to slice" msgstr "切片已準備就緒" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:36 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:38 msgctxt "@label:PrintjobStatus" msgid "Slicing..." msgstr "正在切片..." -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:38 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:40 msgctxt "@label:PrintjobStatus %1 is target operation" msgid "Ready to %1" msgstr "%1 已準備就緒" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:40 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:42 msgctxt "@label:PrintjobStatus" msgid "Unable to Slice" msgstr "無法切片" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:42 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:44 msgctxt "@label:PrintjobStatus" msgid "Slicing unavailable" msgstr "切片無法使用" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:162 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:171 +msgctxt "@info:tooltip" +msgid "Slice current printjob" +msgstr "對目前列印工作進行切片" + +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:171 +msgctxt "@info:tooltip" +msgid "Cancel slicing process" +msgstr "取消進行中的切片程序" + +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:183 msgctxt "@label:Printjob" msgid "Prepare" msgstr "準備" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:162 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:183 msgctxt "@label:Printjob" msgid "Cancel" msgstr "取消" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:302 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:317 msgctxt "@info:tooltip" msgid "Select the active output device" msgstr "選擇作用中的輸出裝置" #: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:19 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:620 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:696 msgctxt "@title:window" msgid "Open file(s)" msgstr "開啟檔案" #: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:64 msgctxt "@text:window" -msgid "" -"We have found one or more project file(s) within the files you have " -"selected. You can open only one project file at a time. We suggest to only " -"import models from those files. Would you like to proceed?" -msgstr "" -"我們已經在你所選擇的檔案中找到一個或多個專案檔案,但一次只能開啟一個專案檔" -"案。我們建議只從那些檔案中匯入模型而不開啟專案。你要繼續操作嗎?" +msgid "We have found one or more project file(s) within the files you have selected. You can open only one project file at a time. We suggest to only import models from those files. Would you like to proceed?" +msgstr "我們已經在你所選擇的檔案中找到一個或多個專案檔案,但一次只能開啟一個專案檔案。我們建議只從那些檔案中匯入模型而不開啟專案。你要繼續操作嗎?" #: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:99 msgctxt "@action:button" @@ -3981,124 +4116,117 @@ msgctxt "@title:window" msgid "Ultimaker Cura" msgstr "Ultimaker Cura" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:81 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:102 msgctxt "@title:menu menubar:toplevel" msgid "&File" msgstr "檔案(&F)" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:98 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:119 msgctxt "@action:inmenu menubar:file" msgid "&Save Selection to File" msgstr "儲存到檔案(&S)" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:107 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:128 msgctxt "@title:menu menubar:file" msgid "Save &As..." msgstr "另存為(&A)…" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:118 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:139 msgctxt "@title:menu menubar:file" -msgid "Save project" -msgstr "儲存專案" +msgid "Save &Project..." +msgstr "儲存專案...(&P)" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:141 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:162 msgctxt "@title:menu menubar:toplevel" msgid "&Edit" msgstr "編輯(&E)" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:158 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:179 msgctxt "@title:menu" msgid "&View" msgstr "檢視(&V)" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:163 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:184 msgctxt "@title:menu" msgid "&Settings" msgstr "設定(&S)" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:165 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:186 msgctxt "@title:menu menubar:toplevel" msgid "&Printer" msgstr "印表機(&P)" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:175 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:187 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:196 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:208 msgctxt "@title:menu" msgid "&Material" msgstr "耗材(&M)" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:176 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:188 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:197 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:209 msgctxt "@title:menu" msgid "&Profile" msgstr "列印參數(&P)" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:180 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:201 msgctxt "@action:inmenu" msgid "Set as Active Extruder" msgstr "設為主要擠出機" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:198 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:219 msgctxt "@title:menu menubar:toplevel" msgid "E&xtensions" msgstr "擴充功能(&X)" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:232 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:253 msgctxt "@title:menu menubar:toplevel" msgid "P&lugins" msgstr "外掛(&l)" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:240 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:261 msgctxt "@title:menu menubar:toplevel" msgid "P&references" msgstr "偏好設定(&R)" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:248 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:269 msgctxt "@title:menu menubar:toplevel" msgid "&Help" msgstr "幫助(&H)" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:330 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:351 msgctxt "@action:button" msgid "Open File" msgstr "開啟檔案" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:442 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:512 msgctxt "@title:tab" msgid "Settings" msgstr "設定" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:478 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:554 msgctxt "@title:window" msgid "New project" msgstr "新建專案" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:479 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:555 msgctxt "@info:question" -msgid "" -"Are you sure you want to start a new project? This will clear the build " -"plate and any unsaved settings." +msgid "Are you sure you want to start a new project? This will clear the build plate and any unsaved settings." msgstr "你確定要開始一個新專案嗎?這將清除列印平台及任何未儲存的設定。" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:721 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:797 msgctxt "@window:title" msgid "Install Plugin" msgstr "安裝外掛" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:728 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:804 msgctxt "@title:window" msgid "Open File(s)" msgstr "開啟檔案" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:731 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:807 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 檔案,請僅選擇一個。" +msgid "We have found one or more G-Code files within the files you have selected. You can only open one G-Code file at a time. If you want to open a G-Code file, please just select only one." +msgstr "我們已經在你選擇的檔案中找到一個或多個 G-Code 檔案。你一次只能開啟一個 G-Code 檔案。若需開啟 G-Code 檔案,請僅選擇一個。" #: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:14 msgctxt "@title:window" @@ -4120,119 +4248,84 @@ msgctxt "@action:label" msgid "Don't show project summary on save again" msgstr "儲存時不再顯示專案摘要" -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:264 -msgctxt "@action:button" -msgid "Save" -msgstr "儲存" - -#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:74 -msgctxt "@title:tab" -msgid "Prepare" -msgstr "準備" - -#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:100 -msgctxt "@title:tab" -msgid "Monitor" -msgstr "監控" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:163 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:175 msgctxt "@label" msgid "Layer Height" msgstr "層高" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:323 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:345 msgctxt "@tooltip" -msgid "" -"A custom profile is currently active. To enable the quality slider, choose a " -"default quality profile in Custom tab" -msgstr "" -"目前正使用自訂列印參數。若要使用品質滑動條,在自訂分頁中選擇預設的列印參數" +msgid "A custom profile is currently active. To enable the quality slider, choose a default quality profile in Custom tab" +msgstr "目前正使用自訂列印參數。若要使用品質滑動條,在自訂分頁中選擇預設的列印參數" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:340 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:362 msgctxt "@label" msgid "Print Speed" msgstr "列印速度" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:350 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:374 msgctxt "@label" msgid "Slower" msgstr "更慢" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:361 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:385 msgctxt "@label" msgid "Faster" msgstr "更快" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:388 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:423 msgctxt "@tooltip" -msgid "" -"You have modified some profile settings. If you want to change these go to " -"custom mode." +msgid "You have modified some profile settings. If you want to change these go to custom mode." msgstr "你修改過部份列印參數設定。如果你想改變這些設定,請切換到自訂模式。" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:413 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:446 msgctxt "@label" msgid "Infill" msgstr "填充" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:633 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:668 msgctxt "@label" -msgid "" -"Gradual infill will gradually increase the amount of infill towards the top." +msgid "Gradual infill will gradually increase the amount of infill towards the top." msgstr "漸層填充(Gradual infill)將隨著列印高度的提升而逐漸加大填充密度。" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:645 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:680 msgctxt "@label" msgid "Enable gradual" msgstr "啟用漸層" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:712 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:747 msgctxt "@label" msgid "Generate Support" msgstr "產生支撐" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:746 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:781 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)部分產生支撐結構。若不這樣做,這些部分在列印時將倒" -"塌。" +msgid "Generate structures to support parts of the model which have overhangs. Without these structures, such parts would collapse during printing." +msgstr "在模型的懸垂(Overhangs)部分產生支撐結構。若不這樣做,這些部分在列印時將倒塌。" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:764 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:799 msgctxt "@label" msgid "Support Extruder" msgstr "支撐用擠出機" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:816 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:851 msgctxt "@label" -msgid "" -"Select which extruder to use for support. This will build up supporting " -"structures below the model to prevent the model from sagging or printing in " -"mid air." -msgstr "" -"選擇用於支撐的擠出機。該擠出機將在模型之下建立支撐結構,以防止模型下垂或在空" -"中列印。" +msgid "Select which extruder to use for support. This will build up supporting structures below the model to prevent the model from sagging or printing in mid air." +msgstr "選擇用於支撐的擠出機。該擠出機將在模型之下建立支撐結構,以防止模型下垂或在空中列印。" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:839 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:874 msgctxt "@label" msgid "Build Plate Adhesion" msgstr "列印平台附著" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:894 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:929 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 "" -"允許列印邊緣或木筏。這將在你的物件周圍或下方添加一個容易切斷的平面區域。" +msgid "Enable printing a brim or raft. This will add a flat area around or under your object which is easy to cut off afterwards." +msgstr "允許列印邊緣或木筏。這將在你的物件周圍或下方添加一個容易切斷的平面區域。" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:934 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:969 msgctxt "@label" -msgid "" -"Need help improving your prints?
      Read the Ultimaker " -"Troubleshooting Guides" +msgid "Need help improving your prints?
      Read the Ultimaker Troubleshooting Guides" msgstr "需要幫助改善你的列印?閱讀 Ultimaker 故障排除指南" #: /home/ruben/Projects/Cura/resources/qml/ExtruderButton.qml:16 @@ -4246,19 +4339,22 @@ msgctxt "@title:window" msgid "Open project file" msgstr "開啟專案檔案" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:72 +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:93 msgctxt "@text:window" -msgid "" -"This is a Cura project file. Would you like to open it as a project or " -"import the models from it?" +msgid "This is a Cura project file. Would you like to open it as a project or import the models from it?" msgstr "這是一個 Cura 專案檔案。你想將其作為一個專案開啟還是從中匯入模型?" #: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:103 +msgctxt "@text:window" +msgid "Remember my choice" +msgstr "記住我的選擇" + +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:122 msgctxt "@action:button" msgid "Open as project" msgstr "作為專案開啟" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:122 +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:131 msgctxt "@action:button" msgid "Import models" msgstr "匯入模型" @@ -4268,26 +4364,39 @@ msgctxt "@title:window" msgid "Engine Log" msgstr "引擎日誌" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:242 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:245 msgctxt "@label" msgid "Material" msgstr "耗材" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:349 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:352 msgctxt "@label" -msgid "Check compatibility" -msgstr "檢查耗材相容性" +msgid "Check compatibility" +msgstr "檢查相容性" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:369 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:372 msgctxt "@tooltip" msgid "Click to check the material compatibility on Ultimaker.com." msgstr "點擊查看 Ultimaker.com 上的耗材相容性。" +#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:211 +msgctxt "@option:check" +msgid "See only current build plate" +msgstr "只顯示目前的列印平台" + +#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:227 +msgctxt "@action:button" +msgid "Arrange to all build plates" +msgstr "擺放到所有的列印平台" + +#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:247 +msgctxt "@action:button" +msgid "Arrange current build plate" +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 @@ -4358,7 +4467,7 @@ msgstr "更新日誌" #: ProfileFlattener/plugin.json msgctxt "description" msgid "Create a flattend quality changes profile." -msgstr "創建一份合併品質變化列印參數。" +msgstr "建立一份合併品質變化列印參數。" #: ProfileFlattener/plugin.json msgctxt "name" @@ -4367,8 +4476,7 @@ 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 "接受 G-Code 並且傳送到印表機。此外掛也可以更新韌體。" #: USBPrinting/plugin.json @@ -4376,6 +4484,26 @@ msgctxt "name" msgid "USB printing" msgstr "USB 連線列印" +#: PrepareStage/plugin.json +msgctxt "description" +msgid "Provides a prepare stage in Cura." +msgstr "在 cura 提供一個準備介面。" + +#: PrepareStage/plugin.json +msgctxt "name" +msgid "Prepare Stage" +msgstr "準備介面" + +#: CuraLiveScriptingPlugin/plugin.json +msgctxt "description" +msgid "Provides an edit window for direct script editing." +msgstr "提供一個直接編輯描述檔的編輯視窗。" + +#: CuraLiveScriptingPlugin/plugin.json +msgctxt "name" +msgid "Live scripting tool" +msgstr "即時描述檔工具" + #: RemovableDriveOutputDevice/plugin.json msgctxt "description" msgid "Provides removable drive hotplugging and writing support." @@ -4396,6 +4524,16 @@ msgctxt "name" msgid "UM3 Network Connection" msgstr "UM3 網路連接" +#: MonitorStage/plugin.json +msgctxt "description" +msgid "Provides a monitor stage in Cura." +msgstr "在 cura 提供一個監控介面。" + +#: MonitorStage/plugin.json +msgctxt "name" +msgid "Monitor Stage" +msgstr "監控介面" + #: FirmwareUpdateChecker/plugin.json msgctxt "description" msgid "Checks for firmware updates." @@ -4408,11 +4546,8 @@ msgstr "韌體更新檢查" #: CuraSolidWorksPlugin/plugin.json msgctxt "description" -msgid "" -"Gives you the possibility to open certain files via SolidWorks itself. These " -"are then converted and loaded into Cura" -msgstr "" -"讓你可以透過 SolidWorks 自身開啟特定檔案。隨後會將這些檔案進行轉換並載入 Cura" +msgid "Gives you the possibility to open certain files using SolidWorks itself. Conversion is done by this plugin and additional optimizations." +msgstr "讓你可以使用 SolidWorks 開啟某些檔案。此外掛會完成轉換和最佳化的工作。" #: CuraSolidWorksPlugin/plugin.json msgctxt "name" @@ -4479,6 +4614,16 @@ msgctxt "name" msgid "Legacy Cura Profile Reader" msgstr "舊版 Cura 列印參數讀取器" +#: CuraBlenderPlugin/plugin.json +msgctxt "description" +msgid "Helps to open Blender files directly in Cura." +msgstr "協助你直接在 Cura 中打開 Blender 檔案。" + +#: CuraBlenderPlugin/plugin.json +msgctxt "name" +msgid "Blender Integration (experimental)" +msgstr "Blender 整合(實驗功能)" + #: GCodeProfileReader/plugin.json msgctxt "description" msgid "Provides support for importing profiles from g-code files." @@ -4639,6 +4784,16 @@ 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." @@ -4661,9 +4816,7 @@ 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 "提供 Ultimaker 印表機專屬功能(如平台調平精靈、選擇升級等)" #: UltimakerMachineActions/plugin.json @@ -4681,6 +4834,156 @@ msgctxt "name" msgid "Cura Profile Reader" msgstr "Cura 列印參數讀取器" +#~ msgctxt "@label" +#~ msgid "Unknown" +#~ msgstr "未知" + +#~ msgctxt "@info:status" +#~ msgid "Errors appeared while opening your SolidWorks file! Please check, whether it is possible to open your file in SolidWorks itself without any problems as well!" +#~ msgstr "開啟 SolidWorks 檔案時發生錯誤! 請檢查能否在 SolidWorks 中正常開啟檔案而不出現任何問題!" + +#~ msgctxt "@info:status" +#~ msgid "Error while starting %s!" +#~ msgstr "啟動 %s 時發生錯誤!" + +#~ msgctxt "@item:inlistbox" +#~ msgid "Simulation view" +#~ msgstr "模擬檢視" + +#~ msgctxt "@info" +#~ msgid "Cura collects anonymised slicing statistics. You can disable this in the preferences." +#~ msgstr "Cura 收集匿名切片統計資料。你可以在偏好設定中關閉此選項。" + +#~ msgctxt "@action:button" +#~ msgid "Dismiss" +#~ msgstr "關閉此通知" + +#~ msgctxt "@menuitem" +#~ msgid "Global" +#~ msgstr "整體" + +#~ msgctxt "@label crash message" +#~ msgid "" +#~ "

      A fatal exception has occurred. 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 "" +#~ "

      程式發生了致命異常。請將錯誤報告傳送給我們以解決這個問題

      \n" +#~ "

      請使用「送出報告」按鈕將錯誤報告自動發送到我們的伺服器

      \n" +#~ " " + +#~ msgctxt "@label Cura version" +#~ msgid "Cura version: {version}
      " +#~ msgstr "Cura 版本: {version}
      " + +#~ msgctxt "@label Platform" +#~ msgid "Platform: {platform}
      " +#~ msgstr "平台: {platform}
      " + +#~ msgctxt "@label Qt version" +#~ msgid "Qt version: {qt}
      " +#~ msgstr "Qt 版本: {qt}
      " + +#~ msgctxt "@label PyQt version" +#~ msgid "PyQt version: {pyqt}
      " +#~ msgstr "PyQt 版本: {pyqt}
      " + +#~ msgctxt "@label OpenGL" +#~ msgid "OpenGL: {opengl}
      " +#~ msgstr "OpenGL: {opengl}
      " + +#~ msgctxt "@title:groupbox" +#~ msgid "Exception traceback" +#~ msgstr "異常追溯" + +#~ msgctxt "@label" +#~ msgid "Material diameter" +#~ msgstr "耗材直徑" + +#~ msgctxt "@label" +#~ msgid "Ultimaker 3" +#~ msgstr "Ultimaker 3" + +#~ msgctxt "@label" +#~ msgid "Ultimaker 3 Extended" +#~ msgstr "Ultimaker 3 Extended" + +#~ msgctxt "@title:window" +#~ msgid "Cura SolidWorks Plugin Configuration" +#~ msgstr "Cura SolidWorks 外掛設定" + +#~ msgctxt "@action:label" +#~ msgid "Default quality of the exported STL:" +#~ msgstr "預設的匯出 STL 品質:" + +#~ msgctxt "@option:curaSolidworksStlQuality" +#~ msgid "Always ask" +#~ msgstr "總是詢問" + +#~ msgctxt "@option:curaSolidworksStlQuality" +#~ msgid "Always use Fine quality" +#~ msgstr "總是使用精細品質" + +#~ msgctxt "@option:curaSolidworksStlQuality" +#~ msgid "Always use Coarse quality" +#~ msgstr "總是使用粗糙品質" + +#~ msgctxt "@title:window" +#~ msgid "Import SolidWorks File as STL..." +#~ msgstr "匯入 SolidWorks 檔案為 STL..." + +#~ msgctxt "@info:tooltip" +#~ msgid "Quality of the Exported STL" +#~ msgstr "匯出 STL 的品質" + +#~ msgctxt "@action:label" +#~ msgid "Quality" +#~ msgstr "品質" + +#~ msgctxt "@option:curaSolidworksStlQuality" +#~ msgid "Coarse" +#~ msgstr "粗糙" + +#~ msgctxt "@option:curaSolidworksStlQuality" +#~ msgid "Fine" +#~ msgstr "精細" + +#~ msgctxt "@" +#~ msgid "No Profile Available" +#~ msgstr "無可用的列印參數" + +#~ msgctxt "@label" +#~ msgid "This setting is always shared between all extruders. Changing it here will change the value for all extruders" +#~ msgstr "這個設定由全部的擠出機共享,變更這個設定將改變全部擠出機的設定值" + +#~ msgctxt "@tooltip" +#~ msgid "Time specification
      " +#~ msgstr "時間資訊
      " + +#~ msgctxt "@action:inmenu menubar:view" +#~ msgid "&Reset camera position" +#~ msgstr "重置視角位置" + +#~ msgctxt "@title:menu menubar:file" +#~ msgid "Save project" +#~ msgstr "儲存專案" + +#~ msgctxt "@title:tab" +#~ msgid "Prepare" +#~ msgstr "準備" + +#~ msgctxt "@title:tab" +#~ msgid "Monitor" +#~ msgstr "監控" + +#~ msgctxt "@label" +#~ msgid "Check compatibility" +#~ msgstr "檢查耗材相容性" + +#~ msgctxt "description" +#~ msgid "Gives you the possibility to open certain files via SolidWorks itself. These are then converted and loaded into Cura" +#~ msgstr "讓你可以透過 SolidWorks 自身開啟特定檔案。隨後會將這些檔案進行轉換並載入 Cura" + #~ msgctxt "@label:status" #~ msgid "Blocked" #~ msgstr "暫停" @@ -4693,20 +4996,13 @@ msgstr "Cura 列印參數讀取器" #~ msgid "Print Details" #~ msgstr "列印細項設定" -#~ msgctxt "" -#~ "@info Don't translate {machine_name}, since it gets replaced by a printer " -#~ "name!" -#~ msgid "" -#~ "To ensure that your {machine_name} is equipped with the latest features " -#~ "it is recommended to update the firmware regularly. This can be done on " -#~ "the {machine_name} (when connected to the network) or via USB." -#~ msgstr "" -#~ "為了確保您的 {machine_name} 配備了最新功能,建議定期更新韌體。 這可以在 " -#~ "{machine_name} 上完成(有連接到網絡時)或透過 USB 完成。" +#~ msgctxt "@info Don't translate {machine_name}, since it gets replaced by a printer name!" +#~ msgid "To ensure that your {machine_name} is equipped with the latest features it is recommended to update the firmware regularly. This can be done on the {machine_name} (when connected to the network) or via USB." +#~ msgstr "為了確保您的 {machine_name} 配備了最新功能,建議定期更新韌體。 這可以在 {machine_name} 上完成(有連接到網絡時)或透過 USB 完成。" -msgctxt "@info:title" -msgid "Layer View" -msgstr "分層檢視" +#~ msgctxt "@info:title" +#~ msgid "Layer View" +#~ msgstr "分層檢視" #~ msgctxt "@menuitem" #~ msgid "Browse plugins" @@ -4719,14 +5015,11 @@ msgstr "分層檢視" #~ msgctxt "@label" #~ msgid "" #~ "

      A fatal exception has occurred that we could not recover from!

      \n" -#~ "

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

      \n" +#~ "

      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

      \n" +#~ "

      請利用下方資訊回報錯誤到 http://github.com/Ultimaker/Cura/issues

      \n" #~ " " #~ msgctxt "@action:button" @@ -4738,14 +5031,11 @@ msgstr "分層檢視" #~ msgstr "確定" #~ msgctxt "@label" -#~ msgid "" -#~ "This printer is not set up to host a group of connected Ultimaker 3 " -#~ "printers" +#~ msgid "This printer is not set up to host a group of connected Ultimaker 3 printers" #~ msgstr "這台印表機未設定成管理一組連線的 Ultimaker 3 印表機的主機" #~ msgctxt "@label" -#~ msgid "" -#~ "This printer is the host for a group of %1 connected Ultimaker 3 printers" +#~ msgid "This printer is the host for a group of %1 connected Ultimaker 3 printers" #~ msgstr "這台印表機是 %1 台 Ultimaker 3 印表機群組的主機" #~ msgctxt "@label:status" @@ -4776,9 +5066,9 @@ msgstr "分層檢視" #~ msgid "Provides the Layer view." #~ msgstr "提供分層檢視。" -msgctxt "name" -msgid "Layer View" -msgstr "分層檢視" +#~ msgctxt "name" +#~ msgid "Layer View" +#~ msgstr "分層檢視" #~ msgctxt "@item:inlistbox" #~ msgid "X-Ray" @@ -4805,11 +5095,8 @@ msgstr "分層檢視" #~ msgstr "X3G 檔案" #~ msgctxt "@info:status" -#~ msgid "" -#~ "Please keep in mind, that you have to reopen your SolidWorks file " -#~ "manually! Reloading the model won't work!" -#~ msgstr "" -#~ "請注意,重新載入模型功能無法運作!你必須手動重新開啟 SolidWorks 檔案!" +#~ msgid "Please keep in mind, that you have to reopen your SolidWorks file manually! Reloading the model won't work!" +#~ msgstr "請注意,重新載入模型功能無法運作!你必須手動重新開啟 SolidWorks 檔案!" #~ msgctxt "@item:inlistbox" #~ msgid "Layers" @@ -4894,8 +5181,3 @@ msgstr "分層檢視" #~ msgctxt "name" #~ msgid "X3G Writer" #~ msgstr "X3G 寫入器" - -#Added manually to fix a string that was changed after string freeze. -msgctxt "@item:inlistbox" -msgid "Layer view" -msgstr "分層檢視" \ No newline at end of file diff --git a/resources/i18n/zh_TW/fdmextruder.def.json.po b/resources/i18n/zh_TW/fdmextruder.def.json.po index 1b5f351cf9..70fd79a8ee 100644 --- a/resources/i18n/zh_TW/fdmextruder.def.json.po +++ b/resources/i18n/zh_TW/fdmextruder.def.json.po @@ -54,9 +54,7 @@ msgstr "噴頭直徑" #: fdmextruder.def.json msgctxt "machine_nozzle_size description" -msgid "" -"The inner diameter of the nozzle. Change this setting when using a non-" -"standard nozzle size." +msgid "The inner diameter of the nozzle. Change this setting when using a non-standard nozzle size." msgstr "噴頭內徑,在使用非標準噴頭尺寸時需更改此設定。" #: fdmextruder.def.json @@ -96,9 +94,7 @@ msgstr "擠出機起點絕對位置" #: fdmextruder.def.json msgctxt "machine_extruder_start_pos_abs description" -msgid "" -"Make the extruder starting position absolute rather than relative to the " -"last-known location of the head." +msgid "Make the extruder starting position absolute rather than relative to the last-known location of the head." msgstr "讓擠出機以絕對位置做為起點,而不是與前一次位置的相對位置。" #: fdmextruder.def.json @@ -138,9 +134,7 @@ msgstr "擠出機終點絕對位置" #: fdmextruder.def.json msgctxt "machine_extruder_end_pos_abs description" -msgid "" -"Make the extruder ending position absolute rather than relative to the last-" -"known location of the head." +msgid "Make the extruder ending position absolute rather than relative to the last-known location of the head." msgstr "讓擠出機以絕對位置為終點,而不是與前一次位置的相對位置。" #: fdmextruder.def.json @@ -170,9 +164,7 @@ msgstr "擠出機初始 Z 軸位置" #: fdmextruder.def.json msgctxt "extruder_prime_pos_z description" -msgid "" -"The Z coordinate of the position where the nozzle primes at the start of " -"printing." +msgid "The Z coordinate of the position where the nozzle primes at the start of printing." msgstr "列印開始時,噴頭在 Z 軸座標上的起始位置." #: fdmextruder.def.json @@ -192,9 +184,7 @@ msgstr "擠出機 X 軸座標" #: fdmextruder.def.json msgctxt "extruder_prime_pos_x description" -msgid "" -"The X coordinate of the position where the nozzle primes at the start of " -"printing." +msgid "The X coordinate of the position where the nozzle primes at the start of printing." msgstr "列印開始時,噴頭在 X 軸上初始位置。" #: fdmextruder.def.json @@ -204,7 +194,5 @@ msgstr "擠出機 Y 軸起始位置" #: fdmextruder.def.json msgctxt "extruder_prime_pos_y description" -msgid "" -"The Y coordinate of the position where the nozzle primes at the start of " -"printing." +msgid "The Y coordinate of the position where the nozzle primes at the start of printing." msgstr "列印開始時,噴頭在 Y 軸座標上初始位置。" diff --git a/resources/i18n/zh_TW/fdmprinter.def.json.po b/resources/i18n/zh_TW/fdmprinter.def.json.po index 2be6fbeefe..a20c882f5d 100644 --- a/resources/i18n/zh_TW/fdmprinter.def.json.po +++ b/resources/i18n/zh_TW/fdmprinter.def.json.po @@ -1,21 +1,21 @@ # Cura JSON setting files -# Copyright (C) 2017 Ultimaker +# Copyright (C) 2018 Ultimaker # This file is distributed under the same license as the Cura package. -# Ruben Dulek , 2017. +# Ruben Dulek , 2018. # msgid "" msgstr "" -"Project-Id-Version: Cura 3.1\n" +"Project-Id-Version: Cura 3.2\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2017-08-02 16:53+0000\n" -"PO-Revision-Date: 2017-11-25 00:31+0800\n" +"POT-Creation-Date: 2018-01-29 16:53+0000\n" +"PO-Revision-Date: 2018-02-01 20:58+0800\n" "Last-Translator: Zhang Heh Ji \n" -"Language-Team: TEAM\n" +"Language-Team: Zhang Heh Ji \n" "Language: zh_TW\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 2.0.4\n" +"X-Generator: Poedit 2.0.6\n" #: fdmprinter.def.json msgctxt "machine_settings label" @@ -44,9 +44,7 @@ msgstr "顯示印表機型號" #: fdmprinter.def.json msgctxt "machine_show_variants description" -msgid "" -"Whether to show the different variants of this machine, which are described " -"in separate json files." +msgid "Whether to show the different variants of this machine, which are described in separate json files." msgstr "是否顯示這台印表機在不同的 JSON 檔案中所描述的型號。" #: fdmprinter.def.json @@ -94,9 +92,7 @@ msgstr "等待列印平台加熱" #: fdmprinter.def.json msgctxt "material_bed_temp_wait description" -msgid "" -"Whether to insert a command to wait until the build plate temperature is " -"reached at the start." +msgid "Whether to insert a command to wait until the build plate temperature is reached at the start." msgstr "是否插入一條命令,在開始時等待列印平台達到設定溫度。" #: fdmprinter.def.json @@ -116,13 +112,8 @@ msgstr "插入耗材溫度" #: fdmprinter.def.json msgctxt "material_print_temp_prepend description" -msgid "" -"Whether to include nozzle temperature commands at the start of the gcode. " -"When the start_gcode already contains nozzle temperature commands Cura " -"frontend will automatically disable this setting." -msgstr "" -"是否在 G-code 開始部分插入噴頭溫度命令。當起始 G-code 已包含噴頭溫度命令時," -"Cura 前端將自動關閉此設定。" +msgid "Whether to include nozzle temperature commands at the start of the gcode. When the start_gcode already contains nozzle temperature commands Cura frontend will automatically disable this setting." +msgstr "是否在 G-code 開始部分插入噴頭溫度命令。當起始 G-code 已包含噴頭溫度命令時,Cura 前端將自動關閉此設定。" #: fdmprinter.def.json msgctxt "material_bed_temp_prepend label" @@ -131,13 +122,8 @@ msgstr "插入熱床溫度" #: fdmprinter.def.json msgctxt "material_bed_temp_prepend description" -msgid "" -"Whether to include build plate temperature commands at the start of the " -"gcode. When the start_gcode already contains build plate temperature " -"commands Cura frontend will automatically disable this setting." -msgstr "" -"是否需要在 G-code 開始部分插入熱床溫度的命令。當起始 G-code 包含熱床溫度命令" -"時,Cura 前端將自動關閉此設定。" +msgid "Whether to include build plate temperature commands at the start of the gcode. When the start_gcode already contains build plate temperature commands Cura frontend will automatically disable this setting." +msgstr "是否需要在 G-code 開始部分插入熱床溫度的命令。當起始 G-code 包含熱床溫度命令時,Cura 前端將自動關閉此設定。" #: fdmprinter.def.json msgctxt "machine_width label" @@ -166,8 +152,7 @@ msgstr "列印平台形狀" #: fdmprinter.def.json msgctxt "machine_shape description" -msgid "" -"The shape of the build plate without taking unprintable areas into account." +msgid "The shape of the build plate without taking unprintable areas into account." msgstr "列印平台形狀(不計算不可列印區域)。" #: fdmprinter.def.json @@ -207,9 +192,7 @@ msgstr "原點是否位於中心" #: fdmprinter.def.json msgctxt "machine_center_is_zero description" -msgid "" -"Whether the X/Y coordinates of the zero position of the printer is at the " -"center of the printable area." +msgid "Whether the X/Y coordinates of the zero position of the printer is at the center of the printable area." msgstr "印表機的 X/Y 座標原點是否位於可列印區域的中心。" #: fdmprinter.def.json @@ -219,9 +202,7 @@ msgstr "擠出機數目" #: fdmprinter.def.json msgctxt "machine_extruder_count description" -msgid "" -"Number of extruder trains. An extruder train is the combination of a feeder, " -"bowden tube, and nozzle." +msgid "Number of extruder trains. An extruder train is the combination of a feeder, bowden tube, and nozzle." msgstr "擠出機組數目。擠出機組是指進料裝置、喉管和噴頭的組合。" #: fdmprinter.def.json @@ -241,9 +222,7 @@ msgstr "噴頭長度" #: fdmprinter.def.json msgctxt "machine_nozzle_head_distance description" -msgid "" -"The height difference between the tip of the nozzle and the lowest part of " -"the print head." +msgid "The height difference between the tip of the nozzle and the lowest part of the print head." msgstr "噴頭尖端與列印頭最低部分之間的高度差。" #: fdmprinter.def.json @@ -253,9 +232,7 @@ msgstr "噴頭角度" #: fdmprinter.def.json msgctxt "machine_nozzle_expansion_angle description" -msgid "" -"The angle between the horizontal plane and the conical part right above the " -"tip of the nozzle." +msgid "The angle between the horizontal plane and the conical part right above the tip of the nozzle." msgstr "水平面與噴頭尖端上部圓錐形之間的角度。" #: fdmprinter.def.json @@ -265,9 +242,7 @@ msgstr "加熱區長度" #: fdmprinter.def.json msgctxt "machine_heat_zone_length description" -msgid "" -"The distance from the tip of the nozzle in which heat from the nozzle is " -"transferred to the filament." +msgid "The distance from the tip of the nozzle in which heat from the nozzle is transferred to the filament." msgstr "與噴頭尖端的距離,噴頭產生的熱量在這段距離內傳遞到耗材中。" #: fdmprinter.def.json @@ -277,9 +252,7 @@ msgstr "耗材停放距離" #: fdmprinter.def.json msgctxt "machine_filament_park_distance description" -msgid "" -"The distance from the tip of the nozzle where to park the filament when an " -"extruder is no longer used." +msgid "The distance from the tip of the nozzle where to park the filament when an extruder is no longer used." msgstr "與噴頭尖端的距離,當不再使用擠出機時會將耗材停放在此區域。" #: fdmprinter.def.json @@ -289,9 +262,7 @@ msgstr "啟用噴頭溫度控制" #: fdmprinter.def.json msgctxt "machine_nozzle_temp_enabled description" -msgid "" -"Whether to control temperature from Cura. Turn this off to control nozzle " -"temperature from outside of Cura." +msgid "Whether to control temperature from Cura. Turn this off to control nozzle temperature from outside of Cura." msgstr "是否從 Cura 控制溫度。若要從 Cura 外部控制噴頭溫度,關閉此選項。" #: fdmprinter.def.json @@ -301,9 +272,7 @@ msgstr "加熱速度" #: fdmprinter.def.json msgctxt "machine_nozzle_heat_up_speed description" -msgid "" -"The speed (°C/s) by which the nozzle heats up averaged over the window of " -"normal printing temperatures and the standby temperature." +msgid "The speed (°C/s) by which the nozzle heats up averaged over the window of normal printing temperatures and the standby temperature." msgstr "噴頭從待機溫度加熱到列印溫度的平均速度(℃/ s)。" #: fdmprinter.def.json @@ -313,9 +282,7 @@ msgstr "冷卻速度" #: fdmprinter.def.json msgctxt "machine_nozzle_cool_down_speed description" -msgid "" -"The speed (°C/s) by which the nozzle cools down averaged over the window of " -"normal printing temperatures and the standby temperature." +msgid "The speed (°C/s) by which the nozzle cools down averaged over the window of normal printing temperatures and the standby temperature." msgstr "噴頭從列印溫度冷卻到待機溫度的平均速度(℃/ s)。" #: fdmprinter.def.json @@ -325,13 +292,8 @@ msgstr "待機溫度最短時間" #: fdmprinter.def.json msgctxt "machine_min_cool_heat_time_window description" -msgid "" -"The minimal time an extruder has to be inactive before the nozzle is cooled. " -"Only when an extruder is not used for longer than this time will it be " -"allowed to cool down to the standby temperature." -msgstr "" -"擠出機必須保持不活動以便噴頭冷卻的最短時間。擠出機必須停用超過此時間,才可以" -"冷卻到待機溫度。" +msgid "The minimal time an extruder has to be inactive before the nozzle is cooled. Only when an extruder is not used for longer than this time will it be allowed to cool down to the standby temperature." +msgstr "擠出機必須保持不活動以便噴頭冷卻的最短時間。擠出機必須停用超過此時間,才可以冷卻到待機溫度。" #: fdmprinter.def.json msgctxt "machine_gcode_flavor label" @@ -388,6 +350,16 @@ msgctxt "machine_gcode_flavor option Repetier" msgid "Repetier" msgstr "Repetier" +#: fdmprinter.def.json +msgctxt "machine_firmware_retract label" +msgid "Firmware Retraction" +msgstr "韌體回抽" + +#: fdmprinter.def.json +msgctxt "machine_firmware_retract description" +msgid "Whether to use firmware retract commands (G10/G11) instead of using the E property in G1 commands to retract the material." +msgstr "是否使用韌體回抽命令(G10/G11)取代 G1 命令的 E 參數來回抽線材。" + #: fdmprinter.def.json msgctxt "machine_disallowed_areas label" msgid "Disallowed areas" @@ -435,9 +407,7 @@ msgstr "吊車高度" #: fdmprinter.def.json msgctxt "gantry_height description" -msgid "" -"The height difference between the tip of the nozzle and the gantry system (X " -"and Y axes)." +msgid "The height difference between the tip of the nozzle and the gantry system (X and Y axes)." msgstr "噴頭尖端與吊車之間的高度差。" #: fdmprinter.def.json @@ -457,9 +427,7 @@ msgstr "噴頭直徑" #: fdmprinter.def.json msgctxt "machine_nozzle_size description" -msgid "" -"The inner diameter of the nozzle. Change this setting when using a non-" -"standard nozzle size." +msgid "The inner diameter of the nozzle. Change this setting when using a non-standard nozzle size." msgstr "噴頭內徑,在使用非標準噴頭尺寸時需更改此設定。" #: fdmprinter.def.json @@ -479,9 +447,7 @@ msgstr "擠出機初始 Z 軸位置" #: fdmprinter.def.json msgctxt "extruder_prime_pos_z description" -msgid "" -"The Z coordinate of the position where the nozzle primes at the start of " -"printing." +msgid "The Z coordinate of the position where the nozzle primes at the start of printing." msgstr "列印開始時,噴頭在 Z 軸座標上的起始位置." #: fdmprinter.def.json @@ -491,9 +457,7 @@ msgstr "擠出機使用絕對位置" #: fdmprinter.def.json msgctxt "extruder_prime_pos_abs description" -msgid "" -"Make the extruder prime position absolute rather than relative to the last-" -"known location of the head." +msgid "Make the extruder prime position absolute rather than relative to the last-known location of the head." msgstr "擠出機的控制參數使用絕對位置,而不是與前次位置的相對位移。" #: fdmprinter.def.json @@ -633,9 +597,7 @@ msgstr "品質" #: fdmprinter.def.json msgctxt "resolution description" -msgid "" -"All settings that influence the resolution of the print. These settings have " -"a large impact on the quality (and print time)" +msgid "All settings that influence the resolution of the print. These settings have a large impact on the quality (and print time)" msgstr "影響列印解析度的所有設定。這些設定會對品質(和列印時間)產生顯著影響" #: fdmprinter.def.json @@ -645,12 +607,8 @@ msgstr "層高" #: fdmprinter.def.json msgctxt "layer_height description" -msgid "" -"The height of each layer in mm. Higher values produce faster prints in lower " -"resolution, lower values produce slower prints in higher resolution." -msgstr "" -"每層的高度(以毫米為單位)。值越高,則列印速度越快,解析度越低;值越低,則列" -"印速度越慢,解析度越高。" +msgid "The height of each layer in mm. Higher values produce faster prints in lower resolution, lower values produce slower prints in higher resolution." +msgstr "每層的高度(以毫米為單位)。值越高,則列印速度越快,解析度越低;值越低,則列印速度越慢,解析度越高。" #: fdmprinter.def.json msgctxt "layer_height_0 label" @@ -659,47 +617,9 @@ msgstr "起始層高" #: fdmprinter.def.json msgctxt "layer_height_0 description" -msgid "" -"The height of the initial layer in mm. A thicker initial layer makes " -"adhesion to the build plate easier." +msgid "The height of the initial layer in mm. A thicker initial layer makes adhesion to the build plate easier." msgstr "起始層高(以毫米為單位)。起始層越厚,與列印平台的附著越輕鬆。" -#: fdmprinter.def.json -msgctxt "slicing_tolerance label" -msgid "Slicing Tolerance" -msgstr "切片公差" - -#: fdmprinter.def.json -msgctxt "slicing_tolerance description" -msgid "" -"How to slice layers with diagonal surfaces. The areas of a layer can be " -"generated based on where the middle of the layer intersects the surface " -"(Middle). Alternatively each layer can have the areas which fall inside of " -"the volume throughout the height of the layer (Exclusive) or a layer has the " -"areas which fall inside anywhere within the layer (Inclusive). Exclusive " -"retains the most details, Inclusive makes for the best fit and Middle takes " -"the least time to process." -msgstr "" -"如何使用傾斜的外表切片。可以使用層高的中間與外表相交產生的截面(中間)。也可" -"以使用該層高完全不超出模型體積的區域(排除),或是該層高的模型投影區域(包" -"含)。「排除」保留最多的細節,「包含」有最符合的外形,而「中間」花最少的運算" -"時間。" - -#: fdmprinter.def.json -msgctxt "slicing_tolerance option middle" -msgid "Middle" -msgstr "中間" - -#: fdmprinter.def.json -msgctxt "slicing_tolerance option exclusive" -msgid "Exclusive" -msgstr "排除" - -#: fdmprinter.def.json -msgctxt "slicing_tolerance option inclusive" -msgid "Inclusive" -msgstr "包含" - #: fdmprinter.def.json msgctxt "line_width label" msgid "Line Width" @@ -707,13 +627,8 @@ msgstr "線寬" #: fdmprinter.def.json msgctxt "line_width description" -msgid "" -"Width of a single line. Generally, the width of each line should correspond " -"to the width of the nozzle. However, slightly reducing this value could " -"produce better prints." -msgstr "" -"單一線寬。一般而言,每條線條的寬度應與噴頭的寬度對應。但是,稍微降低此值可以" -"產生更好的列印成果。" +msgid "Width of a single line. Generally, the width of each line should correspond to the width of the nozzle. However, slightly reducing this value could produce better prints." +msgstr "單一線寬。一般而言,每條線條的寬度應與噴頭的寬度對應。但是,稍微降低此值可以產生更好的列印成果。" #: fdmprinter.def.json msgctxt "wall_line_width label" @@ -732,9 +647,7 @@ msgstr "線寬(外壁)" #: fdmprinter.def.json msgctxt "wall_line_width_0 description" -msgid "" -"Width of the outermost wall line. By lowering this value, higher levels of " -"detail can be printed." +msgid "Width of the outermost wall line. By lowering this value, higher levels of detail can be printed." msgstr "最外側牆壁的線寬。降低此值,可列印出更高水準的細節。" #: fdmprinter.def.json @@ -744,20 +657,9 @@ msgstr "內壁線寬" #: fdmprinter.def.json msgctxt "wall_line_width_x description" -msgid "" -"Width of a single wall line for all wall lines except the outermost one." +msgid "Width of a single wall line for all wall lines except the outermost one." msgstr "除了外壁以外牆壁的線寬。" -#: fdmprinter.def.json -msgctxt "roofing_line_width label" -msgid "Top Surface Skin Line Width" -msgstr "頂部表層線寬" - -#: fdmprinter.def.json -msgctxt "roofing_line_width description" -msgid "Width of a single line of the areas at the top of the print." -msgstr "列印頂部區域單一線寬。" - #: fdmprinter.def.json msgctxt "skin_line_width label" msgid "Top/Bottom Line Width" @@ -845,9 +747,7 @@ msgstr "起始層線寬" #: fdmprinter.def.json msgctxt "initial_layer_line_width_factor description" -msgid "" -"Multiplier of the line width on the first layer. Increasing this could " -"improve bed adhesion." +msgid "Multiplier of the line width on the first layer. Increasing this could improve bed adhesion." msgstr "第一層線寬倍數。增大此倍數可改善熱床附著。" #: fdmprinter.def.json @@ -867,9 +767,7 @@ msgstr "牆壁擠出機" #: fdmprinter.def.json msgctxt "wall_extruder_nr description" -msgid "" -"The extruder train used for printing the walls. This is used in multi-" -"extrusion." +msgid "The extruder train used for printing the walls. This is used in multi-extrusion." msgstr "用於列印牆壁的擠出機組。在多擠出機情況下適用。" #: fdmprinter.def.json @@ -879,9 +777,7 @@ msgstr "外壁擠出機" #: fdmprinter.def.json msgctxt "wall_0_extruder_nr description" -msgid "" -"The extruder train used for printing the outer wall. This is used in multi-" -"extrusion." +msgid "The extruder train used for printing the outer wall. This is used in multi-extrusion." msgstr "用於列印外壁的擠出機組。在多擠出機情況下適用。" #: fdmprinter.def.json @@ -891,9 +787,7 @@ msgstr "內壁擠出機" #: fdmprinter.def.json msgctxt "wall_x_extruder_nr description" -msgid "" -"The extruder train used for printing the inner walls. This is used in multi-" -"extrusion." +msgid "The extruder train used for printing the inner walls. This is used in multi-extrusion." msgstr "用於列印內壁的擠出機組。在多擠出機情況下適用。" #: fdmprinter.def.json @@ -903,9 +797,7 @@ msgstr "壁厚" #: fdmprinter.def.json msgctxt "wall_thickness description" -msgid "" -"The thickness of the walls in the horizontal direction. This value divided " -"by the wall line width defines the number of walls." +msgid "The thickness of the walls in the horizontal direction. This value divided by the wall line width defines the number of walls." msgstr "水平方向的牆壁厚度。此值除以壁線寬度決定牆壁數量。" #: fdmprinter.def.json @@ -915,9 +807,7 @@ msgstr "牆壁線條圈數" #: fdmprinter.def.json msgctxt "wall_line_count description" -msgid "" -"The number of walls. When calculated by the wall thickness, this value is " -"rounded to a whole number." +msgid "The number of walls. When calculated by the wall thickness, this value is rounded to a whole number." msgstr "牆壁的線條圈數,如果由壁厚計算,會四捨五入為一個整數值。" #: fdmprinter.def.json @@ -927,9 +817,7 @@ msgstr "外壁擦拭噴頭長度" #: fdmprinter.def.json msgctxt "wall_0_wipe_dist description" -msgid "" -"Distance of a travel move inserted after the outer wall, to hide the Z seam " -"better." +msgid "Distance of a travel move inserted after the outer wall, to hide the Z seam better." msgstr "在列印外壁後插入的空跑距離,以便消除隱藏 Z 縫的銜接痕跡。" #: fdmprinter.def.json @@ -939,9 +827,7 @@ msgstr "頂部表層擠出機" #: fdmprinter.def.json msgctxt "roofing_extruder_nr description" -msgid "" -"The extruder train used for printing the top most skin. This is used in " -"multi-extrusion." +msgid "The extruder train used for printing the top most skin. This is used in multi-extrusion." msgstr "用於列印最頂部表層的擠出機組。在多擠出機情況下適用。" #: fdmprinter.def.json @@ -951,55 +837,9 @@ msgstr "頂部表層" #: fdmprinter.def.json msgctxt "roofing_layer_count description" -msgid "" -"The number of top most skin layers. Usually only one top most layer is " -"sufficient to generate higher quality top surfaces." +msgid "The number of top most skin layers. Usually only one top most layer is sufficient to generate higher quality top surfaces." msgstr "最頂部表層層數。通常只需一層最頂部就足以產生較高品質的頂部表面。" -#: fdmprinter.def.json -msgctxt "roofing_pattern label" -msgid "Top Surface Skin Pattern" -msgstr "頂部表層列印樣式" - -#: fdmprinter.def.json -msgctxt "roofing_pattern description" -msgid "The pattern of the top most layers." -msgstr "最頂部列印樣式。" - -#: fdmprinter.def.json -msgctxt "roofing_pattern option lines" -msgid "Lines" -msgstr "線條" - -#: fdmprinter.def.json -msgctxt "roofing_pattern option concentric" -msgid "Concentric" -msgstr "同心" - -#: fdmprinter.def.json -msgctxt "roofing_pattern option zigzag" -msgid "Zig Zag" -msgstr "鋸齒狀" - -#: fdmprinter.def.json -msgctxt "roofing_angles label" -msgid "Top Surface Skin Line Directions" -msgstr "頂部表層線條方向" - -#: fdmprinter.def.json -msgctxt "roofing_angles description" -msgid "" -"A list of integer line directions to use when the top surface skin layers " -"use the lines or zig zag pattern. Elements from the list are used " -"sequentially as the layers progress and when the end of the list is reached, " -"it starts at the beginning again. The list items are separated by commas and " -"the whole list is contained in square brackets. Default is an empty list " -"which means use the traditional default angles (45 and 135 degrees)." -msgstr "" -"當頂部表層採用線條或鋸齒狀的列印樣式時使用的整數線條方向的列表。列表中的元素" -"隨層的進度依次使用,當達到列表末尾時,它將從頭開始。列表項以逗號分隔,整個列" -"表包含在方括號中。預設使用傳統的預設角度(45 和 135 度)。" - #: fdmprinter.def.json msgctxt "top_bottom_extruder_nr label" msgid "Top/Bottom Extruder" @@ -1007,9 +847,7 @@ msgstr "頂部/底部擠出機" #: fdmprinter.def.json msgctxt "top_bottom_extruder_nr description" -msgid "" -"The extruder train used for printing the top and bottom skin. This is used " -"in multi-extrusion." +msgid "The extruder train used for printing the top and bottom skin. This is used in multi-extrusion." msgstr "用於列印頂部和底部表層的擠出機組。在多擠出機情況下適用。" #: fdmprinter.def.json @@ -1019,9 +857,7 @@ msgstr "頂部 / 底部厚度" #: fdmprinter.def.json msgctxt "top_bottom_thickness description" -msgid "" -"The thickness of the top/bottom layers in the print. This value divided by " -"the layer height defines the number of top/bottom layers." +msgid "The thickness of the top/bottom layers in the print. This value divided by the layer height defines the number of top/bottom layers." msgstr "列印模型中頂部/底部的厚度。該值除以層高決定頂部/底部的層數。" #: fdmprinter.def.json @@ -1031,9 +867,7 @@ msgstr "頂部厚度" #: fdmprinter.def.json msgctxt "top_thickness description" -msgid "" -"The thickness of the top layers in the print. This value divided by the " -"layer height defines the number of top layers." +msgid "The thickness of the top layers in the print. This value divided by the layer height defines the number of top layers." msgstr "列印模型中頂部的厚度。該值除以層高決定頂部的層數。" #: fdmprinter.def.json @@ -1043,9 +877,7 @@ msgstr "頂部層數" #: fdmprinter.def.json msgctxt "top_layers description" -msgid "" -"The number of top layers. When calculated by the top thickness, this value " -"is rounded to a whole number." +msgid "The number of top layers. When calculated by the top thickness, this value is rounded to a whole number." msgstr "頂部列印層數,當由頂部厚度來計算時層數時,會四捨五入為一個整數值。" #: fdmprinter.def.json @@ -1055,9 +887,7 @@ msgstr "底部厚度" #: fdmprinter.def.json msgctxt "bottom_thickness description" -msgid "" -"The thickness of the bottom layers in the print. This value divided by the " -"layer height defines the number of bottom layers." +msgid "The thickness of the bottom layers in the print. This value divided by the layer height defines the number of bottom layers." msgstr "列印模型中底部的厚度。此值除以層高決定底部的層數。" #: fdmprinter.def.json @@ -1067,9 +897,7 @@ msgstr "底部層數" #: fdmprinter.def.json msgctxt "bottom_layers description" -msgid "" -"The number of bottom layers. When calculated by the bottom thickness, this " -"value is rounded to a whole number." +msgid "The number of bottom layers. When calculated by the bottom thickness, this value is rounded to a whole number." msgstr "底部列印層數,當由底部厚度來計算時層數時,會四捨五入為一個整數值。" #: fdmprinter.def.json @@ -1129,17 +957,8 @@ msgstr "頂部/底部線條方向" #: fdmprinter.def.json msgctxt "skin_angles description" -msgid "" -"A list of integer line directions to use when the top/bottom layers use the " -"lines or zig zag pattern. Elements from the list are used sequentially as " -"the layers progress and when the end of the list is reached, it starts at " -"the beginning again. The list items are separated by commas and the whole " -"list is contained in square brackets. Default is an empty list which means " -"use the traditional default angles (45 and 135 degrees)." -msgstr "" -"當頂部/底部採用線條或鋸齒狀的列印樣式時使用的整數線條方向的列表。列表中的元素" -"隨層的進度依次使用,當達到列表末尾時,它將從頭開始。列表元素以逗號分隔,整個" -"列表包含在方括號中。空的列表代表使用傳統的預設角度(45 和 135 度)。" +msgid "A list of integer line directions to use when the top/bottom layers use the lines or zig zag pattern. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the traditional default angles (45 and 135 degrees)." +msgstr "當頂部/底部採用線條或鋸齒狀的列印樣式時使用的整數線條方向的列表。列表中的元素隨層的進度依次使用,當達到列表末尾時,它將從頭開始。列表元素以逗號分隔,整個列表包含在方括號中。空的列表代表使用傳統的預設角度(45 和 135 度)。" #: fdmprinter.def.json msgctxt "wall_0_inset label" @@ -1148,14 +967,18 @@ msgstr "外壁內嵌" #: fdmprinter.def.json msgctxt "wall_0_inset description" -msgid "" -"Inset applied to the path of the outer wall. If the outer wall is smaller " -"than the nozzle, and printed after the inner walls, use this offset to get " -"the hole in the nozzle to overlap with the inner walls instead of the " -"outside of the model." -msgstr "" -"內嵌是套用在外壁路徑上的功能。如果外壁小於噴頭,並且在內壁之後列印,則此偏移" -"量將使噴頭孔內移與內壁重疊而不是行走在模型外部。" +msgid "Inset applied to the path of the outer wall. If the outer wall is smaller than the nozzle, and printed after the inner walls, use this offset to get the hole in the nozzle to overlap with the inner walls instead of the outside of the model." +msgstr "內嵌是套用在外壁路徑上的功能。如果外壁小於噴頭,並且在內壁之後列印,則此偏移量將使噴頭孔內移與內壁重疊而不是行走在模型外部。" + +#: fdmprinter.def.json +msgctxt "optimize_wall_printing_order label" +msgid "Optimize Wall Printing Order" +msgstr "最佳化牆壁列印順序" + +#: fdmprinter.def.json +msgctxt "optimize_wall_printing_order description" +msgid "Optimize the order in which walls are printed so as to reduce the number of retractions and the distance travelled. Most parts will benefit from this being enabled but some may actually take longer so please compare the print time estimates with and without optimization." +msgstr "最佳化牆壁列印順序以減少回抽的次數和空跑的距離。啟用此功能對大多數是有益的,但有的可能會花更多的時間。所以請比較有無最佳化的估算時間進行確認。" #: fdmprinter.def.json msgctxt "outer_inset_first label" @@ -1164,14 +987,8 @@ msgstr "先印外壁後印內壁" #: fdmprinter.def.json msgctxt "outer_inset_first description" -msgid "" -"Prints walls in order of outside to inside when enabled. This can help " -"improve dimensional accuracy in X and Y when using a high viscosity plastic " -"like ABS; however it can decrease outer surface print quality, especially on " -"overhangs." -msgstr "" -"啟用時以從外向內的順序列印壁。當使用高黏度塑料如 ABS 時,這有助於提高 X 和 Y " -"的尺寸精度;但是,它可能會降低外表面列印品質,特别是在懸垂部分。" +msgid "Prints walls in order of outside to inside when enabled. This can help improve dimensional accuracy in X and Y when using a high viscosity plastic like ABS; however it can decrease outer surface print quality, especially on overhangs." +msgstr "啟用時以從外向內的順序列印壁。當使用高黏度塑料如 ABS 時,這有助於提高 X 和 Y 的尺寸精度;但是,它可能會降低外表面列印品質,特别是在懸垂部分。" #: fdmprinter.def.json msgctxt "alternate_extra_perimeter label" @@ -1180,12 +997,8 @@ msgstr "交錯額外牆壁" #: fdmprinter.def.json msgctxt "alternate_extra_perimeter description" -msgid "" -"Prints an extra wall at every other layer. This way infill gets caught " -"between these extra walls, resulting in stronger prints." -msgstr "" -"每兩層建立一個額外牆壁,這些額外的牆壁能更緊密地抓填充部分,產生較強壯的模" -"型。" +msgid "Prints an extra wall at every other layer. This way infill gets caught between these extra walls, resulting in stronger prints." +msgstr "每兩層建立一個額外牆壁,這些額外的牆壁能更緊密地抓填充部分,產生較強壯的模型。" #: fdmprinter.def.json msgctxt "travel_compensate_overlapping_walls_enabled label" @@ -1194,9 +1007,7 @@ msgstr "補償牆壁重疊" #: fdmprinter.def.json msgctxt "travel_compensate_overlapping_walls_enabled description" -msgid "" -"Compensate the flow for parts of a wall being printed where there is already " -"a wall in place." +msgid "Compensate the flow for parts of a wall being printed where there is already a wall in place." msgstr "彌補牆壁重疊部分的流量。" #: fdmprinter.def.json @@ -1206,9 +1017,7 @@ msgstr "補償外壁重疊" #: fdmprinter.def.json msgctxt "travel_compensate_overlapping_walls_0_enabled description" -msgid "" -"Compensate the flow for parts of an outer wall being printed where there is " -"already a wall in place." +msgid "Compensate the flow for parts of an outer wall being printed where there is already a wall in place." msgstr "列印外壁時如果該位置已經有牆壁存在,所進行的的流量補償。" #: fdmprinter.def.json @@ -1218,9 +1027,7 @@ msgstr "補償內壁重疊" #: fdmprinter.def.json msgctxt "travel_compensate_overlapping_walls_x_enabled description" -msgid "" -"Compensate the flow for parts of an inner wall being printed where there is " -"already a wall in place." +msgid "Compensate the flow for parts of an inner wall being printed where there is already a wall in place." msgstr "列印內壁時如果該位置已經有牆壁存在,所進行的的流量補償。" #: fdmprinter.def.json @@ -1243,6 +1050,16 @@ msgctxt "fill_perimeter_gaps option everywhere" msgid "Everywhere" msgstr "全部填充" +#: fdmprinter.def.json +msgctxt "filter_out_tiny_gaps label" +msgid "Filter Out Tiny Gaps" +msgstr "濾除微小間隙" + +#: fdmprinter.def.json +msgctxt "filter_out_tiny_gaps description" +msgid "Filter out tiny gaps to reduce blobs on outside of model." +msgstr "濾除微小間隙以減少模型外側的斑點 。" + #: fdmprinter.def.json msgctxt "fill_outline_gaps label" msgid "Print Thin Walls" @@ -1250,9 +1067,7 @@ msgstr "列印薄壁" #: fdmprinter.def.json msgctxt "fill_outline_gaps description" -msgid "" -"Print pieces of the model which are horizontally thinner than the nozzle " -"size." +msgid "Print pieces of the model which are horizontally thinner than the nozzle size." msgstr "列印在水平面上比噴頭尺寸更薄的模型部件。" #: fdmprinter.def.json @@ -1262,13 +1077,8 @@ msgstr "水平擴展" #: fdmprinter.def.json msgctxt "xy_offset description" -msgid "" -"Amount of offset applied to all polygons in each layer. Positive values can " -"compensate for too big holes; negative values can compensate for too small " -"holes." -msgstr "" -"如果模型有挖孔,以便用來組合、鑲嵌時,這個偏移量可以用來微調孔的大小,當設為" -"正值時,模型外擴,孔會變小;若設為負值,模型內縮,孔會變大。" +msgid "Amount of offset applied to all polygons in each layer. Positive values can compensate for too big holes; negative values can compensate for too small holes." +msgstr "如果模型有挖孔,以便用來組合、鑲嵌時,這個偏移量可以用來微調孔的大小,當設為正值時,模型外擴,孔會變小;若設為負值,模型內縮,孔會變大。" #: fdmprinter.def.json msgctxt "xy_offset_layer_0 label" @@ -1277,13 +1087,8 @@ msgstr "起始層水平擴展" #: fdmprinter.def.json msgctxt "xy_offset_layer_0 description" -msgid "" -"Amount of offset applied to all polygons in the first layer. A negative " -"value can compensate for squishing of the first layer known as \"elephant's " -"foot\"." -msgstr "" -"套用到第一層所有多邊形的偏移量。負數值可以補償第一層的壓扁量(被稱為“象" -"脚”)。" +msgid "Amount of offset applied to all polygons in the first layer. A negative value can compensate for squishing of the first layer known as \"elephant's foot\"." +msgstr "套用到第一層所有多邊形的偏移量。負數值可以補償第一層的壓扁量(被稱為“象脚”)。" #: fdmprinter.def.json msgctxt "z_seam_type label" @@ -1292,16 +1097,8 @@ msgstr "Z 接縫對齊" #: fdmprinter.def.json msgctxt "z_seam_type description" -msgid "" -"Starting point of each path in a layer. When paths in consecutive layers " -"start at the same point a vertical seam may show on the print. When aligning " -"these near a user specified location, the seam is easiest to remove. When " -"placed randomly the inaccuracies at the paths' start will be less " -"noticeable. When taking the shortest path the print will be quicker." -msgstr "" -"一層中每條路徑的起點。當連續多層的路徑從相同點開始時,則列印物上會顯示一條垂" -"直縫隙。如果將這些路徑靠近一個使用者指定的位置對齊,則縫隙最容易移除。如果隨" -"機放置,則路徑起點的不精準度將較不明顯。採用最短的路徑時,列印將更為快速。" +msgid "Starting point of each path in a layer. When paths in consecutive layers start at the same point a vertical seam may show on the print. When aligning these near a user specified location, the seam is easiest to remove. When placed randomly the inaccuracies at the paths' start will be less noticeable. When taking the shortest path the print will be quicker." +msgstr "一層中每條路徑的起點。當連續多層的路徑從相同點開始時,則列印物上會顯示一條垂直縫隙。如果將這些路徑靠近一個使用者指定的位置對齊,則縫隙最容易移除。如果隨機放置,則路徑起點的不精準度將較不明顯。採用最短的路徑時,列印將更為快速。" #: fdmprinter.def.json msgctxt "z_seam_type option back" @@ -1330,9 +1127,7 @@ msgstr "Z 接縫 X 座標" #: fdmprinter.def.json msgctxt "z_seam_x description" -msgid "" -"The X coordinate of the position near where to start printing each part in a " -"layer." +msgid "The X coordinate of the position near where to start printing each part in a layer." msgstr "位置的 X 軸座標,在該位置附近開始列印層中各個部分。" #: fdmprinter.def.json @@ -1342,9 +1137,7 @@ msgstr "Z 接縫 Y 座標" #: fdmprinter.def.json msgctxt "z_seam_y description" -msgid "" -"The Y coordinate of the position near where to start printing each part in a " -"layer." +msgid "The Y coordinate of the position near where to start printing each part in a layer." msgstr "位置的 Y 軸座標,在該位置附近開始列印層中各個部分。" #: fdmprinter.def.json @@ -1354,16 +1147,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." +msgstr "控制接縫是否受模型輪廓上的角影響。'無'表示轉角不影響接縫位置。'隱藏接縫'表示使用盡可能使用凹角做為接縫位置。'暴露接縫'表示盡可能使用凸角做為接縫位置。'隱藏或暴露接縫'則同時使用凹角和凸角做為接縫位置。" #: fdmprinter.def.json msgctxt "z_seam_corner option z_seam_corner_none" @@ -1392,13 +1177,8 @@ msgstr "Z 接縫相對" #: fdmprinter.def.json 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 "" -"啟用時,Z 接縫座標為相對於各個部分中心的值。關閉時,座標固定在列印平台上的一" -"個絕對位置。" +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 "啟用時,Z 接縫座標為相對於各個部分中心的值。關閉時,座標固定在列印平台上的一個絕對位置。" #: fdmprinter.def.json msgctxt "skin_no_small_gaps_heuristic label" @@ -1407,14 +1187,8 @@ 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, 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%的額外的計算時間。勾選這個項目可以節省時間,但是間隙會消失,若要保留這些間隙,不要勾選這個項目。" #: fdmprinter.def.json msgctxt "skin_outline_count label" @@ -1423,13 +1197,8 @@ msgstr "額外表層牆壁計數" #: fdmprinter.def.json msgctxt "skin_outline_count description" -msgid "" -"Replaces the outermost part of the top/bottom pattern with a number of " -"concentric lines. Using one or two lines improves roofs that start on infill " -"material." -msgstr "" -"用多個同心線代替頂部/底部列印樣式的最外面部分。使用一條或兩條線可以改善列印在" -"填充上的頂板。" +msgid "Replaces the outermost part of the top/bottom pattern with a number of concentric lines. Using one or two lines improves roofs that start on infill material." +msgstr "用多個同心線代替頂部/底部列印樣式的最外面部分。使用一條或兩條線可以改善列印在填充上的頂板。" #: fdmprinter.def.json msgctxt "ironing_enabled label" @@ -1438,13 +1207,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 without extruding material. This is meant to melt the plastic on top further, creating a smoother surface." +msgstr "再一次經過頂部表面,但不擠出耗材。這是為了進一步融化頂部的塑料,打造更平滑的表面。" #: fdmprinter.def.json msgctxt "ironing_only_highest_layer label" @@ -1453,12 +1217,8 @@ msgstr "只燙平最高層" #: fdmprinter.def.json msgctxt "ironing_only_highest_layer description" -msgid "" -"Only perform ironing on the very last layer of the mesh. This saves time if " -"the lower layers don't need a smooth surface finish." -msgstr "" -"只在網格的最後一層進行燙平處理。 如果下層不需要光滑的表面,可啟用此選項以節省" -"時間。" +msgid "Only perform ironing on the very last layer of the mesh. This saves time if the lower layers don't need a smooth surface finish." +msgstr "只在網格的最後一層進行燙平處理。 如果下層不需要光滑的表面,可啟用此選項以節省時間。" #: fdmprinter.def.json msgctxt "ironing_pattern label" @@ -1497,14 +1257,8 @@ msgstr "燙平流量" #: fdmprinter.def.json msgctxt "ironing_flow description" -msgid "" -"The amount of material, relative to a normal skin line, to extrude during " -"ironing. Keeping the nozzle filled helps filling some of the crevices of the " -"top surface, but too much results in overextrusion and blips on the side of " -"the surface." -msgstr "" -"燙平期間相對於正常表層線條的擠出耗材量。保持噴頭填充狀态有助於填充頂部表面的" -"一些縫隙,但如填充過多則會導致表面上過度擠出和光點。" +msgid "The amount of material, relative to a normal skin line, to extrude during ironing. Keeping the nozzle filled helps filling some of the crevices of the top surface, but too much results in overextrusion and blips on the side of the surface." +msgstr "燙平期間相對於正常表層線條的擠出耗材量。保持噴頭填充狀态有助於填充頂部表面的一些縫隙,但如填充過多則會導致表面上過度擠出和光點。" #: fdmprinter.def.json msgctxt "ironing_inset label" @@ -1513,11 +1267,8 @@ msgstr "燙平內嵌" #: fdmprinter.def.json msgctxt "ironing_inset description" -msgid "" -"A distance to keep from the edges of the model. Ironing all the way to the " -"edge of the mesh may result in a jagged edge on your print." -msgstr "" -"與模型邊緣保持的距離。一直燙平至網格的邊緣可能導致列印品出現鋸齒狀邊緣。" +msgid "A distance to keep from the edges of the model. Ironing all the way to the edge of the mesh may result in a jagged edge on your print." +msgstr "與模型邊緣保持的距離。一直燙平至網格的邊緣可能導致列印品出現鋸齒狀邊緣。" #: fdmprinter.def.json msgctxt "speed_ironing label" @@ -1566,8 +1317,7 @@ msgstr "填充擠出機" #: fdmprinter.def.json msgctxt "infill_extruder_nr description" -msgid "" -"The extruder train used for printing infill. This is used in multi-extrusion." +msgid "The extruder train used for printing infill. This is used in multi-extrusion." msgstr "用於列印填充的擠出機組。在多擠出機情況下適用。" #: fdmprinter.def.json @@ -1587,9 +1337,7 @@ msgstr "填充線條距離" #: fdmprinter.def.json msgctxt "infill_line_distance description" -msgid "" -"Distance between the printed infill lines. This setting is calculated by the " -"infill density and the infill line width." +msgid "Distance between the printed infill lines. This setting is calculated by the infill density and the infill line width." msgstr "列印填充線條之間的距離。該設定是通過填充密度和填充線寬度計算。" #: fdmprinter.def.json @@ -1599,18 +1347,8 @@ msgstr "填充列印樣式" #: fdmprinter.def.json msgctxt "infill_pattern description" -msgid "" -"The pattern of the infill material of the print. The line and zig zag infill " -"swap direction on alternate layers, reducing material cost. The grid, " -"triangle, tri-hexagon, cubic, octet, quarter cubic, cross and concentric " -"patterns are fully printed every layer. Cubic, quarter cubic and octet " -"infill change with every layer to provide a more equal distribution of " -"strength over each direction." -msgstr "" -"填充耗材的樣式。線條和鋸齒狀填充輪流在每一層交換方向,以降低耗材成本。網格、" -"三角形、三-六邊形、立方體、八面體、四分立方體、十字形和同心的列印樣式在每層完" -"整列印。立方體、四分立方體和八面體填充隨每層變化,以在各個方向提供更均衡的强" -"度分布。" +msgid "The pattern of the infill material of the print. The line and zig zag infill swap direction on alternate layers, reducing material cost. The grid, triangle, tri-hexagon, cubic, octet, quarter cubic, cross and concentric patterns are fully printed every layer. Cubic, quarter cubic and octet infill change with every layer to provide a more equal distribution of strength over each direction." +msgstr "填充耗材的樣式。線條和鋸齒狀填充輪流在每一層交換方向,以降低耗材成本。網格、三角形、三-六邊形、立方體、八面體、四分立方體、十字形和同心的列印樣式在每層完整列印。立方體、四分立方體和八面體填充隨每層變化,以在各個方向提供更均衡的强度分布。" #: fdmprinter.def.json msgctxt "infill_pattern option grid" @@ -1684,16 +1422,8 @@ msgstr "連接填充線條" #: fdmprinter.def.json msgctxt "zig_zaggify_infill description" -msgid "" -"Connect the ends where the infill pattern meets the inner wall using a line " -"which follows the shape of the inner wall. Enabling this setting can make " -"the infill adhere to the walls better and reduce the effects of infill on " -"the quality of vertical surfaces. Disabling this setting reduces the amount " -"of material used." -msgstr "" -"使用一條線沿著內牆的形狀,連接填充線條與內牆交會的末端。啟用此設定可以使填充" -"更好地附著在內牆上,並減少對垂直表面品質的影響。關閉此設定可降低材料的使用" -"量。" +msgid "Connect the ends where the infill pattern meets the inner wall using a line which follows the shape of the inner wall. Enabling this setting can make the infill adhere to the walls better and reduce the effects of infill on the quality of vertical surfaces. Disabling this setting reduces the amount of material used." +msgstr "使用一條線沿著內牆的形狀,連接填充線條與內牆交會的末端。啟用此設定可以使填充更好地附著在內牆上,並減少對垂直表面品質的影響。關閉此設定可降低材料的使用量。" #: fdmprinter.def.json msgctxt "infill_angles label" @@ -1702,18 +1432,8 @@ msgstr "填充線條方向" #: fdmprinter.def.json msgctxt "infill_angles description" -msgid "" -"A list of integer line directions to use. Elements from the list are used " -"sequentially as the layers progress and when the end of the list is reached, " -"it starts at the beginning again. The list items are separated by commas and " -"the whole list is contained in square brackets. Default is an empty list " -"which means use the traditional default angles (45 and 135 degrees for the " -"lines and zig zag patterns and 45 degrees for all other patterns)." -msgstr "" -"要使用的整數線條方向列表。列表中的元素隨層的進度依次使用,當達到列表末尾時," -"它將從頭開始。列表元素以逗號分隔,整個列表包含在方括號中。空的列表代表使用傳" -"統的預設角度(線條和鋸齒狀的列印樣式為 45 和 135 度,其他所有的列印樣式為 45 " -"度)。" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the traditional default angles (45 and 135 degrees for the lines and zig zag patterns and 45 degrees for all other patterns)." +msgstr "要使用的整數線條方向列表。列表中的元素隨層的進度依次使用,當達到列表末尾時,它將從頭開始。列表元素以逗號分隔,整個列表包含在方括號中。空的列表代表使用傳統的預設角度(線條和鋸齒狀的列印樣式為 45 和 135 度,其他所有的列印樣式為 45 度)。" #: fdmprinter.def.json msgctxt "infill_offset_x label" @@ -1722,8 +1442,8 @@ msgstr "填充 X 軸偏移" #: fdmprinter.def.json msgctxt "infill_offset_x description" -msgid "The infill pattern is offset this distance along the X axis." -msgstr "填充樣式在 X 軸方向偏移此距離。" +msgid "The infill pattern is moved this distance along the X axis." +msgstr "填充樣式在 X 軸方向平移此距離。" #: fdmprinter.def.json msgctxt "infill_offset_y label" @@ -1732,8 +1452,8 @@ msgstr "填充 Y 軸偏移" #: fdmprinter.def.json msgctxt "infill_offset_y description" -msgid "The infill pattern is offset this distance along the Y axis." -msgstr "填充樣式在 Y 軸方向偏移此距離。" +msgid "The infill pattern is moved this distance along the Y axis." +msgstr "填充樣式在 Y 軸方向平移此距離。" #: fdmprinter.def.json msgctxt "sub_div_rad_add label" @@ -1742,14 +1462,8 @@ msgstr "立方體細分外殼" #: fdmprinter.def.json msgctxt "sub_div_rad_add description" -msgid "" -"An addition to the radius from the center of each cube to check for the " -"boundary of the model, as to decide whether this cube should be subdivided. " -"Larger values lead to a thicker shell of small cubes near the boundary of " -"the model." -msgstr "" -"每個立方體半徑的增加量,用來檢查模型的邊界,決定是否應該細分該立方體。值越" -"大,靠近模型邊界附近的小立方體的殼越厚。" +msgid "An addition to the radius from the center of each cube to check for the boundary of the model, as to decide whether this cube should be subdivided. Larger values lead to a thicker shell of small cubes near the boundary of the model." +msgstr "每個立方體半徑的增加量,用來檢查模型的邊界,決定是否應該細分該立方體。值越大,靠近模型邊界附近的小立方體的殼越厚。" #: fdmprinter.def.json msgctxt "infill_overlap label" @@ -1758,10 +1472,8 @@ msgstr "填充重疊百分比" #: fdmprinter.def.json msgctxt "infill_overlap 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 "填充和牆壁之間的重疊量。稍微重疊可讓各個牆壁與填充牢固連接。" +msgid "The amount of overlap between the infill and the walls as a percentage of the infill line width. A slight overlap allows the walls to connect firmly to the infill." +msgstr "填充與牆壁的重疊量佔填充線寬的百分比。輕微的重疊能讓填充與牆壁牢固地連接。" #: fdmprinter.def.json msgctxt "infill_overlap_mm label" @@ -1770,9 +1482,7 @@ msgstr "填充重疊" #: fdmprinter.def.json msgctxt "infill_overlap_mm description" -msgid "" -"The amount of overlap between the infill and the walls. A slight overlap " -"allows the walls to connect firmly to the infill." +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 @@ -1782,14 +1492,8 @@ msgstr "表層重疊百分比" #: fdmprinter.def.json msgctxt "skin_overlap description" -msgid "" -"The amount of overlap between the skin and the walls as a percentage of the " -"line width. A slight overlap allows the walls to connect firmly to the skin. " -"This is a percentage of the average line widths of the skin lines and the " -"innermost wall." -msgstr "" -"表層和牆壁之間的重疊量,以線寬百分比表示。稍微重疊可讓各個牆壁與表層牢固連" -"接。這是表層平均線寬和最內壁的百分比。" +msgid "The amount of overlap between the skin and the walls as a percentage of the skin line width. A slight overlap allows the walls to connect firmly to the skin. This is a percentage of the average line widths of the skin lines and the innermost wall." +msgstr "表層與牆壁的重疊量佔表層線寬的百分比。輕微的重疊能讓填充與表層牢固地連接。這是表層線寬和最內層牆壁線寬平均的百分比。" #: fdmprinter.def.json msgctxt "skin_overlap_mm label" @@ -1798,9 +1502,7 @@ msgstr "表層重疊" #: fdmprinter.def.json msgctxt "skin_overlap_mm description" -msgid "" -"The amount of overlap between the skin and the walls. A slight overlap " -"allows the walls to connect firmly to the skin." +msgid "The amount of overlap between the skin and the walls. A slight overlap allows the walls to connect firmly to the skin." msgstr "表層和牆壁之間的重疊量。稍微重疊可讓各個牆壁與表層牢固連接。" #: fdmprinter.def.json @@ -1810,13 +1512,8 @@ msgstr "填充擦拭距離" #: fdmprinter.def.json msgctxt "infill_wipe_dist description" -msgid "" -"Distance of a travel move inserted after every infill line, to make the " -"infill stick to the walls better. This option is similar to infill overlap, " -"but without extrusion and only on one end of the infill line." -msgstr "" -"每條填充線條後插入的空跑距離,讓填充更好地附著到壁上。此選項與填充重疊類似," -"但没有擠出,且僅位於填充線條的一端。" +msgid "Distance of a travel move inserted after every infill line, to make the infill stick to the walls better. This option is similar to infill overlap, but without extrusion and only on one end of the infill line." +msgstr "每條填充線條後插入的空跑距離,讓填充更好地附著到壁上。此選項與填充重疊類似,但没有擠出,且僅位於填充線條的一端。" #: fdmprinter.def.json msgctxt "infill_sparse_thickness label" @@ -1825,9 +1522,7 @@ msgstr "填充層厚度" #: fdmprinter.def.json msgctxt "infill_sparse_thickness description" -msgid "" -"The thickness per layer of infill material. This value should always be a " -"multiple of the layer height and is otherwise rounded." +msgid "The thickness per layer of infill material. This value should always be a multiple of the layer height and is otherwise rounded." msgstr "每層填充的厚度。此值應該是層高度的倍數,並且否則會四捨五入。" #: fdmprinter.def.json @@ -1837,13 +1532,8 @@ msgstr "漸進填充步階數" #: fdmprinter.def.json msgctxt "gradual_infill_steps description" -msgid "" -"Number of times to reduce the infill density by half when getting further " -"below top surfaces. Areas which are closer to top surfaces get a higher " -"density, up to the Infill Density." -msgstr "" -"由模型頂部往下,填充密度減半的次數。愈接近頂部的填充密度愈高,直到所設定的填" -"充密度。" +msgid "Number of times to reduce the infill density by half when getting further below top surfaces. Areas which are closer to top surfaces get a higher density, up to the Infill Density." +msgstr "由模型頂部往下,填充密度減半的次數。愈接近頂部的填充密度愈高,直到所設定的填充密度。" #: fdmprinter.def.json msgctxt "gradual_infill_step_height label" @@ -1852,8 +1542,7 @@ msgstr "漸進填充步階高度" #: fdmprinter.def.json msgctxt "gradual_infill_step_height description" -msgid "" -"The height of infill of a given density before switching to half the density." +msgid "The height of infill of a given density before switching to half the density." msgstr "減半填充密度的高度。" #: fdmprinter.def.json @@ -1863,14 +1552,8 @@ msgstr "先印填充再印牆壁" #: fdmprinter.def.json msgctxt "infill_before_walls description" -msgid "" -"Print the infill before printing the walls. Printing the walls first may " -"lead to more accurate walls, but overhangs print worse. Printing the infill " -"first leads to sturdier walls, but the infill pattern might sometimes show " -"through the surface." -msgstr "" -"列印牆壁前先列印填充。先列印牆壁可以產生更精確的牆壁,但懸垂列印品質會較差。" -"先列印填充會產生更牢固的牆壁,但有時候填充的列印樣式會透過表面顯現出來。" +msgid "Print the infill before printing the walls. Printing the walls first may lead to more accurate walls, but overhangs print worse. Printing the infill first leads to sturdier walls, but the infill pattern might sometimes show through the surface." +msgstr "列印牆壁前先列印填充。先列印牆壁可以產生更精確的牆壁,但懸垂列印品質會較差。先列印填充會產生更牢固的牆壁,但有時候填充的列印樣式會透過表面顯現出來。" #: fdmprinter.def.json msgctxt "min_infill_area label" @@ -1889,14 +1572,8 @@ msgstr "表層移除寬度" #: fdmprinter.def.json msgctxt "skin_preshrink description" -msgid "" -"The largest width of skin areas which are to be removed. Every skin area " -"smaller than this value will disappear. This can help in limiting the amount " -"of time and material spent on printing top/bottom skin at slanted surfaces " -"in the model." -msgstr "" -"要移除表層區域的最大寬度。寬度小於此值的表層區域將會消失。這有助於減少在列印" -"模型傾斜的頂部表層和底部表層所花費的時間和耗材。" +msgid "The largest width of skin areas which are to be removed. Every skin area smaller than this value will disappear. This can help in limiting the amount of time and material spent on printing top/bottom skin at slanted surfaces in the model." +msgstr "要移除表層區域的最大寬度。寬度小於此值的表層區域將會消失。這有助於減少在列印模型傾斜的頂部表層和底部表層所花費的時間和耗材。" #: fdmprinter.def.json msgctxt "top_skin_preshrink label" @@ -1905,14 +1582,8 @@ msgstr "頂部表層移除寬度" #: fdmprinter.def.json msgctxt "top_skin_preshrink description" -msgid "" -"The largest width of top skin areas which are to be removed. Every skin area " -"smaller than this value will disappear. This can help in limiting the amount " -"of time and material spent on printing top skin at slanted surfaces in the " -"model." -msgstr "" -"要移除頂部表層區域的最大寬度。寬度小於此值的頂部表層區域將會消失。這有助於減" -"少在列印模型傾斜的頂部表層所花費的時間和耗材。" +msgid "The largest width of top skin areas which are to be removed. Every skin area smaller than this value will disappear. This can help in limiting the amount of time and material spent on printing top skin at slanted surfaces in the model." +msgstr "要移除頂部表層區域的最大寬度。寬度小於此值的頂部表層區域將會消失。這有助於減少在列印模型傾斜的頂部表層所花費的時間和耗材。" #: fdmprinter.def.json msgctxt "bottom_skin_preshrink label" @@ -1921,14 +1592,8 @@ msgstr "底部表層移除寬度" #: fdmprinter.def.json msgctxt "bottom_skin_preshrink description" -msgid "" -"The largest width of bottom skin areas which are to be removed. Every skin " -"area smaller than this value will disappear. This can help in limiting the " -"amount of time and material spent on printing bottom skin at slanted " -"surfaces in the model." -msgstr "" -"要移除底部表層區域的最大寬度。寬度小於此值的底部表層區域將會消失。這有助於減" -"少在列印模型傾斜的底部表層所花費的時間和耗材。" +msgid "The largest width of bottom skin areas which are to be removed. Every skin area smaller than this value will disappear. This can help in limiting the amount of time and material spent on printing bottom skin at slanted surfaces in the model." +msgstr "要移除底部表層區域的最大寬度。寬度小於此值的底部表層區域將會消失。這有助於減少在列印模型傾斜的底部表層所花費的時間和耗材。" #: fdmprinter.def.json msgctxt "expand_skins_expand_distance label" @@ -1937,13 +1602,8 @@ msgstr "表層延伸距離" #: fdmprinter.def.json msgctxt "expand_skins_expand_distance description" -msgid "" -"The distance the skins are expanded into the infill. Higher values makes the " -"skin attach better to the infill pattern and makes the walls on neighboring " -"layers adhere better to the skin. Lower values save amount of material used." -msgstr "" -"表層延伸進入填充的距離。值愈高表層與填充之間的附著愈好,並使相鄰層的牆壁與表" -"層黏得更緊。而較低的值可以節省耗材的使用。" +msgid "The distance the skins are expanded into the infill. Higher values makes the skin attach better to the infill pattern and makes the walls on neighboring layers adhere better to the skin. Lower values save amount of material used." +msgstr "表層延伸進入填充的距離。值愈高表層與填充之間的附著愈好,並使相鄰層的牆壁與表層黏得更緊。而較低的值可以節省耗材的使用。" #: fdmprinter.def.json msgctxt "top_skin_expand_distance label" @@ -1952,14 +1612,8 @@ msgstr "頂部表層延伸距離" #: fdmprinter.def.json msgctxt "top_skin_expand_distance description" -msgid "" -"The distance the top skins are expanded into the infill. Higher values makes " -"the skin attach better to the infill pattern and makes the walls on the " -"layer above adhere better to the skin. Lower values save amount of material " -"used." -msgstr "" -"頂部表層延伸進入填充的距離。值愈高表層與填充之間的附著愈好,並使上方的牆壁與" -"表層黏得更緊。而較低的值可以節省耗材的使用。" +msgid "The distance the top skins are expanded into the infill. Higher values makes the skin attach better to the infill pattern and makes the walls on the layer above adhere better to the skin. Lower values save amount of material used." +msgstr "頂部表層延伸進入填充的距離。值愈高表層與填充之間的附著愈好,並使上方的牆壁與表層黏得更緊。而較低的值可以節省耗材的使用。" #: fdmprinter.def.json msgctxt "bottom_skin_expand_distance label" @@ -1968,14 +1622,8 @@ msgstr "底部表層延伸距離" #: fdmprinter.def.json msgctxt "bottom_skin_expand_distance description" -msgid "" -"The distance the bottom skins are expanded into the infill. Higher values " -"makes the skin attach better to the infill pattern and makes the skin adhere " -"better to the walls on the layer below. Lower values save amount of material " -"used." -msgstr "" -"底部表層延伸進入填充的距離。值愈高表層與填充之間的附著愈好,並使下方的牆壁與" -"表層黏得更緊。而較低的值可以節省耗材的使用。" +msgid "The distance the bottom skins are expanded into the infill. Higher values makes the skin attach better to the infill pattern and makes the skin adhere better to the walls on the layer below. Lower values save amount of material used." +msgstr "底部表層延伸進入填充的距離。值愈高表層與填充之間的附著愈好,並使下方的牆壁與表層黏得更緊。而較低的值可以節省耗材的使用。" #: fdmprinter.def.json msgctxt "max_skin_angle_for_expansion label" @@ -1984,16 +1632,8 @@ msgstr "最大延伸表層角度" #: fdmprinter.def.json msgctxt "max_skin_angle_for_expansion description" -msgid "" -"Top and/or bottom surfaces of your object with an angle larger than this " -"setting, won't have their top/bottom skin expanded. This avoids expanding " -"the narrow skin areas that are created when the model surface has a near " -"vertical slope. An angle of 0° is horizontal, while an angle of 90° is " -"vertical." -msgstr "" -"如果模型的頂部和/或底部表面的角度大於此設定,則不要延伸其頂部/底部表層。這會" -"避免延伸作用在模型表面有接近垂直的斜面時所形成的狹窄表層區域。0° 的角為水平," -"90° 的角為垂直。" +msgid "Top and/or bottom surfaces of your object with an angle larger than this setting, won't have their top/bottom skin expanded. This avoids expanding the narrow skin areas that are created when the model surface has a near vertical slope. An angle of 0° is horizontal, while an angle of 90° is vertical." +msgstr "如果模型的頂部和/或底部表面的角度大於此設定,則不要延伸其頂部/底部表層。這會避免延伸作用在模型表面有接近垂直的斜面時所形成的狹窄表層區域。0° 的角為水平,90° 的角為垂直。" #: fdmprinter.def.json msgctxt "min_skin_width_for_expansion label" @@ -2002,13 +1642,8 @@ msgstr "最小延伸表層寬度" #: fdmprinter.def.json msgctxt "min_skin_width_for_expansion description" -msgid "" -"Skin areas narrower than this are not expanded. This avoids expanding the " -"narrow skin areas that are created when the model surface has a slope close " -"to the vertical." -msgstr "" -"如果表層區域寬度小於此值,則不會延伸。這會避免延伸在模型表面的斜度接近垂直時" -"所形成的狹窄表層區域。" +msgid "Skin areas narrower than this are not expanded. This avoids expanding the narrow skin areas that are created when the model surface has a slope close to the vertical." +msgstr "如果表層區域寬度小於此值,則不會延伸。這會避免延伸在模型表面的斜度接近垂直時所形成的狹窄表層區域。" #: fdmprinter.def.json msgctxt "material label" @@ -2020,18 +1655,6 @@ msgctxt "material description" msgid "Material" msgstr "耗材" -#: fdmprinter.def.json -msgctxt "material_flow_dependent_temperature label" -msgid "Auto Temperature" -msgstr "自動溫度" - -#: fdmprinter.def.json -msgctxt "material_flow_dependent_temperature description" -msgid "" -"Change the temperature for each layer automatically with the average flow " -"speed of that layer." -msgstr "根據每一層的平均流速自動更改每層的溫度。" - #: fdmprinter.def.json msgctxt "default_material_print_temperature label" msgid "Default Printing Temperature" @@ -2039,13 +1662,8 @@ msgstr "預設列印溫度" #: fdmprinter.def.json msgctxt "default_material_print_temperature description" -msgid "" -"The default temperature used for printing. This should be the \"base\" " -"temperature of a material. All other print temperatures should use offsets " -"based on this value" -msgstr "" -"用於列印的預設溫度。應為耗材的\"基本\"溫度。所有其他列印溫度均應使用基於此值" -"的偏移量" +msgid "The default temperature used for printing. This should be the \"base\" temperature of a material. All other print temperatures should use offsets based on this value" +msgstr "用於列印的預設溫度。應為耗材的\"基本\"溫度。所有其他列印溫度均應使用基於此值的偏移量" #: fdmprinter.def.json msgctxt "material_print_temperature label" @@ -2064,9 +1682,7 @@ msgstr "列印溫度起始層" #: fdmprinter.def.json msgctxt "material_print_temperature_layer_0 description" -msgid "" -"The temperature used for printing the first layer. Set at 0 to disable " -"special handling of the initial layer." +msgid "The temperature used for printing the first layer. Set at 0 to disable special handling of the initial layer." msgstr "用於列印第一層的溫度。設為 0 即關閉對起始層的特别處理。" #: fdmprinter.def.json @@ -2076,9 +1692,7 @@ msgstr "起始列印溫度" #: fdmprinter.def.json msgctxt "material_initial_print_temperature description" -msgid "" -"The minimal temperature while heating up to the Printing Temperature at " -"which printing can already start." +msgid "The minimal temperature while heating up to the Printing Temperature at which printing can already start." msgstr "加熱到可以開始列印的列印溫度時的最低溫度。" #: fdmprinter.def.json @@ -2088,23 +1702,9 @@ msgstr "最終列印溫度" #: fdmprinter.def.json msgctxt "material_final_print_temperature description" -msgid "" -"The temperature to which to already start cooling down just before the end " -"of printing." +msgid "The temperature to which to already start cooling down just before the end of printing." msgstr "列印結束前開始冷卻的溫度。" -#: fdmprinter.def.json -msgctxt "material_flow_temp_graph label" -msgid "Flow Temperature Graph" -msgstr "流量溫度圖" - -#: fdmprinter.def.json -msgctxt "material_flow_temp_graph description" -msgid "" -"Data linking material flow (in mm3 per second) to temperature (degrees " -"Celsius)." -msgstr "數據連接耗材流量(mm3/s)到溫度(攝氏)。" - #: fdmprinter.def.json msgctxt "material_extrusion_cool_down_speed label" msgid "Extrusion Cool Down Speed Modifier" @@ -2112,12 +1712,8 @@ msgstr "擠出降溫速度修正" #: fdmprinter.def.json msgctxt "material_extrusion_cool_down_speed description" -msgid "" -"The extra speed by which the nozzle cools while extruding. The same value is " -"used to signify the heat up speed lost when heating up while extruding." -msgstr "" -"解決在擠料的同時因為噴頭冷卻所造成的影響的額外速度修正。相同的值被用於表示在" -"擠壓時所失去的升溫速度。" +msgid "The extra speed by which the nozzle cools while extruding. The same value is used to signify the heat up speed lost when heating up while extruding." +msgstr "解決在擠料的同時因為噴頭冷卻所造成的影響的額外速度修正。相同的值被用於表示在擠壓時所失去的升溫速度。" #: fdmprinter.def.json msgctxt "material_bed_temperature label" @@ -2126,11 +1722,8 @@ msgstr "列印平台溫度" #: fdmprinter.def.json msgctxt "material_bed_temperature description" -msgid "" -"The temperature used for the heated build plate. If this is 0, the bed will " -"not heat up for this print." -msgstr "" -"用於加熱列印平台的溫度。如果列印平台溫度為 0,則熱床將不會為此次列印加熱。" +msgid "The temperature used for the heated build plate. If this is 0, the bed temperature will not be adjusted." +msgstr "設定列印平台的溫度。如果設定為 0,就不會加熱列印平台。" #: fdmprinter.def.json msgctxt "material_bed_temperature_layer_0 label" @@ -2149,9 +1742,7 @@ msgstr "直徑" #: fdmprinter.def.json msgctxt "material_diameter description" -msgid "" -"Adjusts the diameter of the filament used. Match this value with the " -"diameter of the used filament." +msgid "Adjusts the diameter of the filament used. Match this value with the diameter of the used filament." msgstr "調整所使用耗材的直徑。這個數值要等同於所使用耗材的直徑。" #: fdmprinter.def.json @@ -2181,9 +1772,7 @@ msgstr "流量" #: fdmprinter.def.json msgctxt "material_flow description" -msgid "" -"Flow compensation: the amount of material extruded is multiplied by this " -"value." +msgid "Flow compensation: the amount of material extruded is multiplied by this value." msgstr "流量補償:擠出的耗材量乘以此值。" #: fdmprinter.def.json @@ -2193,8 +1782,7 @@ msgstr "啟用回抽" #: fdmprinter.def.json msgctxt "retraction_enable description" -msgid "" -"Retract the filament when the nozzle is moving over a non-printed area. " +msgid "Retract the filament when the nozzle is moving over a non-printed area. " msgstr "當噴頭移動到非列印區域上方時回抽耗材。" #: fdmprinter.def.json @@ -2224,9 +1812,7 @@ msgstr "回抽速度" #: fdmprinter.def.json msgctxt "retraction_speed description" -msgid "" -"The speed at which the filament is retracted and primed during a retraction " -"move." +msgid "The speed at which the filament is retracted and primed during a retraction move." msgstr "回抽移動期間耗材回抽和裝填的速度。" #: fdmprinter.def.json @@ -2256,9 +1842,7 @@ msgstr "回抽額外裝填量" #: fdmprinter.def.json msgctxt "retraction_extra_prime_amount description" -msgid "" -"Some material can ooze away during a travel move, which can be compensated " -"for here." +msgid "Some material can ooze away during a travel move, which can be compensated for here." msgstr "有些耗材可能會在空跑過程中滲出,可以在這裡對其進行補償。" #: fdmprinter.def.json @@ -2268,9 +1852,7 @@ msgstr "回抽最小空跑距離" #: fdmprinter.def.json msgctxt "retraction_min_travel description" -msgid "" -"The minimum distance of travel needed for a retraction to happen at all. " -"This helps to get fewer retractions in a small area." +msgid "The minimum distance of travel needed for a retraction to happen at all. This helps to get fewer retractions in a small area." msgstr "觸發回抽所需的最小空跑距離。這有助於減少小區域內的回抽次數。" #: fdmprinter.def.json @@ -2280,14 +1862,8 @@ msgstr "最大回抽次數" #: fdmprinter.def.json msgctxt "retraction_count_max description" -msgid "" -"This setting limits the number of retractions occurring within the minimum " -"extrusion distance window. Further retractions within this window will be " -"ignored. This avoids retracting repeatedly on the same piece of filament, as " -"that can flatten the filament and cause grinding issues." -msgstr "" -"此設定限制在最小擠出距離範圍內發生的回抽數。此範圍內的額外回抽將會忽略。這避" -"免了在同一件耗材上重複回抽,從而導致耗材變扁並引起磨損問題。" +msgid "This setting limits the number of retractions occurring within the minimum extrusion distance window. Further retractions within this window will be ignored. This avoids retracting repeatedly on the same piece of filament, as that can flatten the filament and cause grinding issues." +msgstr "此設定限制在最小擠出距離範圍內發生的回抽數。此範圍內的額外回抽將會忽略。這避免了在同一件耗材上重複回抽,從而導致耗材變扁並引起磨損問題。" #: fdmprinter.def.json msgctxt "retraction_extrusion_window label" @@ -2296,14 +1872,8 @@ msgstr "最小擠出距離範圍" #: fdmprinter.def.json msgctxt "retraction_extrusion_window description" -msgid "" -"The window in which the maximum retraction count is enforced. This value " -"should be approximately the same as the retraction distance, so that " -"effectively the number of times a retraction passes the same patch of " -"material is limited." -msgstr "" -"最大回抽次數範圍。此值應大致與回抽距離相等,從而有效地限制在同一段耗材上的回" -"抽次數。" +msgid "The window in which the maximum retraction count is enforced. This value should be approximately the same as the retraction distance, so that effectively the number of times a retraction passes the same patch of material is limited." +msgstr "最大回抽次數範圍。此值應大致與回抽距離相等,從而有效地限制在同一段耗材上的回抽次數。" #: fdmprinter.def.json msgctxt "material_standby_temperature label" @@ -2312,9 +1882,7 @@ msgstr "待機溫度" #: fdmprinter.def.json msgctxt "material_standby_temperature description" -msgid "" -"The temperature of the nozzle when another nozzle is currently used for " -"printing." +msgid "The temperature of the nozzle when another nozzle is currently used for printing." msgstr "當另一個噴頭進行列印時,這個噴頭要保持的溫度。" #: fdmprinter.def.json @@ -2324,9 +1892,7 @@ msgstr "噴頭切換回抽距離" #: fdmprinter.def.json msgctxt "switch_extruder_retraction_amount description" -msgid "" -"The amount of retraction: Set at 0 for no retraction at all. This should " -"generally be the same as the length of the heat zone." +msgid "The amount of retraction: Set at 0 for no retraction at all. This should generally be the same as the length of the heat zone." msgstr "回抽量:設為 0,不進行任何回抽。該值通常應與加熱區的長度相同。" #: fdmprinter.def.json @@ -2336,11 +1902,8 @@ msgstr "噴頭切換回抽速度" #: fdmprinter.def.json msgctxt "switch_extruder_retraction_speeds description" -msgid "" -"The speed at which the filament is retracted. A higher retraction speed " -"works better, but a very high retraction speed can lead to filament grinding." -msgstr "" -"回抽耗材的速度。較高的回抽速度效果較好,但回抽速度過高可能導致耗材磨損。" +msgid "The speed at which the filament is retracted. A higher retraction speed works better, but a very high retraction speed can lead to filament grinding." +msgstr "回抽耗材的速度。較高的回抽速度效果較好,但回抽速度過高可能導致耗材磨損。" #: fdmprinter.def.json msgctxt "switch_extruder_retraction_speed label" @@ -2349,8 +1912,7 @@ msgstr "噴頭切換回抽速度" #: fdmprinter.def.json msgctxt "switch_extruder_retraction_speed description" -msgid "" -"The speed at which the filament is retracted during a nozzle switch retract." +msgid "The speed at which the filament is retracted during a nozzle switch retract." msgstr "噴頭切換回抽期間耗材回抽的速度。" #: fdmprinter.def.json @@ -2360,9 +1922,7 @@ msgstr "噴頭切換裝填速度" #: fdmprinter.def.json msgctxt "switch_extruder_prime_speed description" -msgid "" -"The speed at which the filament is pushed back after a nozzle switch " -"retraction." +msgid "The speed at which the filament is pushed back after a nozzle switch retraction." msgstr "噴頭切換回抽後耗材被推回的速度。" #: fdmprinter.def.json @@ -2412,14 +1972,8 @@ msgstr "外壁速度" #: fdmprinter.def.json msgctxt "speed_wall_0 description" -msgid "" -"The speed at which the outermost walls are printed. Printing the outer wall " -"at a lower speed improves the final skin quality. However, having a large " -"difference between the inner wall speed and the outer wall speed will affect " -"quality in a negative way." -msgstr "" -"列印最外壁的速度。以較低速度列印外壁可改善最終表層品質。但是,如果內壁速度和" -"外壁速度差距過大,則將對品質產生負面影響。" +msgid "The speed at which the outermost walls are printed. Printing the outer wall at a lower speed improves the final skin quality. However, having a large difference between the inner wall speed and the outer wall speed will affect quality in a negative way." +msgstr "列印最外壁的速度。以較低速度列印外壁可改善最終表層品質。但是,如果內壁速度和外壁速度差距過大,則將對品質產生負面影響。" #: fdmprinter.def.json msgctxt "speed_wall_x label" @@ -2428,13 +1982,8 @@ msgstr "內壁速度" #: fdmprinter.def.json msgctxt "speed_wall_x description" -msgid "" -"The speed at which all inner walls are printed. Printing the inner wall " -"faster than the outer wall will reduce printing time. It works well to set " -"this in between the outer wall speed and the infill speed." -msgstr "" -"列印所有內壁的速度。以比外壁更快的速度列印內壁將減少列印時間。將該值設為外壁" -"速度和填充速度之間也可行。" +msgid "The speed at which all inner walls are printed. Printing the inner wall faster than the outer wall will reduce printing time. It works well to set this in between the outer wall speed and the infill speed." +msgstr "列印所有內壁的速度。以比外壁更快的速度列印內壁將減少列印時間。將該值設為外壁速度和填充速度之間也可行。" #: fdmprinter.def.json msgctxt "speed_roofing label" @@ -2463,13 +2012,8 @@ msgstr "支撐速度" #: fdmprinter.def.json msgctxt "speed_support description" -msgid "" -"The speed at which the support structure is printed. Printing support at " -"higher speeds can greatly reduce printing time. The surface quality of the " -"support structure is not important since it is removed after printing." -msgstr "" -"在列印支撐結構時的速度。以更高的速度列印支撐可以大大減少列印時間。因為支撐在" -"列印後會被清除,所以表面品質並不重要。" +msgid "The speed at which the support structure is printed. Printing support at higher speeds can greatly reduce printing time. The surface quality of the support structure is not important since it is removed after printing." +msgstr "在列印支撐結構時的速度。以更高的速度列印支撐可以大大減少列印時間。因為支撐在列印後會被清除,所以表面品質並不重要。" #: fdmprinter.def.json msgctxt "speed_support_infill label" @@ -2478,9 +2022,7 @@ msgstr "支撐填充速度" #: fdmprinter.def.json msgctxt "speed_support_infill description" -msgid "" -"The speed at which the infill of support is printed. Printing the infill at " -"lower speeds improves stability." +msgid "The speed at which the infill of support is printed. Printing the infill at lower speeds improves stability." msgstr "列印支撐填充的速度。以較低的速度列印填充可改善穩定性。" #: fdmprinter.def.json @@ -2490,9 +2032,7 @@ msgstr "支撐介面速度" #: fdmprinter.def.json msgctxt "speed_support_interface description" -msgid "" -"The speed at which the roofs and floors of support are printed. Printing " -"them at lower speeds can improve overhang quality." +msgid "The speed at which the roofs and floors of support are printed. Printing them at lower speeds can improve overhang quality." msgstr "列印支撐頂板和底板的速度。以較低的速度列印可以改善懸垂品質。" #: fdmprinter.def.json @@ -2502,9 +2042,7 @@ msgstr "支撐頂板速度" #: fdmprinter.def.json msgctxt "speed_support_roof description" -msgid "" -"The speed at which the roofs of support are printed. Printing them at lower " -"speeds can improve overhang quality." +msgid "The speed at which the roofs of support are printed. Printing them at lower speeds can improve overhang quality." msgstr "列印支撐頂板的速度。以較低的速度列印可以改善懸垂品質。" #: fdmprinter.def.json @@ -2514,9 +2052,7 @@ msgstr "支撐底板速度" #: fdmprinter.def.json msgctxt "speed_support_bottom description" -msgid "" -"The speed at which the floor of support is printed. Printing it at lower " -"speed can improve adhesion of support on top of your model." +msgid "The speed at which the floor of support is printed. Printing it at lower speed can improve adhesion of support on top of your model." msgstr "列印支撐底板的速度。以較低的速度列印可以改善支撐在模型頂部的附著。" #: fdmprinter.def.json @@ -2526,13 +2062,8 @@ msgstr "換料塔速度" #: fdmprinter.def.json msgctxt "speed_prime_tower description" -msgid "" -"The speed at which the prime tower is printed. Printing the prime tower " -"slower can make it more stable when the adhesion between the different " -"filaments is suboptimal." -msgstr "" -"列印換料塔的速度。當不同耗材之間的黏合力不佳時,較慢地列印速度可以讓它更穩" -"定。" +msgid "The speed at which the prime tower is printed. Printing the prime tower slower can make it more stable when the adhesion between the different filaments is suboptimal." +msgstr "列印換料塔的速度。當不同耗材之間的黏合力不佳時,較慢地列印速度可以讓它更穩定。" #: fdmprinter.def.json msgctxt "speed_travel label" @@ -2551,9 +2082,7 @@ msgstr "起始層速度" #: fdmprinter.def.json msgctxt "speed_layer_0 description" -msgid "" -"The speed for the initial layer. A lower value is advised to improve " -"adhesion to the build plate." +msgid "The speed for the initial layer. A lower value is advised to improve adhesion to the build plate." msgstr "起始層的速度。建議採用較低的值以便改善與列印平台的附著。" #: fdmprinter.def.json @@ -2563,9 +2092,7 @@ msgstr "起始層列印速度" #: fdmprinter.def.json msgctxt "speed_print_layer_0 description" -msgid "" -"The speed of printing for the initial layer. A lower value is advised to " -"improve adhesion to the build plate." +msgid "The speed of printing for the initial layer. A lower value is advised to improve adhesion to the build plate." msgstr "列印起始層的速度。建議採用較低的值以便改善與列印平台的附著。" #: fdmprinter.def.json @@ -2575,14 +2102,8 @@ msgstr "起始層空跑速度" #: fdmprinter.def.json msgctxt "speed_travel_layer_0 description" -msgid "" -"The speed of travel moves in the initial layer. A lower value is advised to " -"prevent pulling previously printed parts away from the build plate. The " -"value of this setting can automatically be calculated from the ratio between " -"the Travel Speed and the Print Speed." -msgstr "" -"起始層中的空跑速度。建議採用較低的值,以防止將之前列印的部分從列印平台上拉" -"離。該設定的值可以根據空跑速度和列印速度的比率自動計算得出。" +msgid "The speed of travel moves in the initial layer. A lower value is advised to prevent pulling previously printed parts away from the build plate. The value of this setting can automatically be calculated from the ratio between the Travel Speed and the Print Speed." +msgstr "起始層中的空跑速度。建議採用較低的值,以防止將之前列印的部分從列印平台上拉離。該設定的值可以根據空跑速度和列印速度的比率自動計算得出。" #: fdmprinter.def.json msgctxt "skirt_brim_speed label" @@ -2591,13 +2112,8 @@ msgstr "外圍/邊緣速度" #: fdmprinter.def.json msgctxt "skirt_brim_speed description" -msgid "" -"The speed at which the skirt and brim are printed. Normally this is done at " -"the initial layer speed, but sometimes you might want to print the skirt or " -"brim at a different speed." -msgstr "" -"列印外圍和邊緣的速度。一般情况是以起始層速度列印這些部分,但有時候你可能想要" -"以不同速度來列印外圍或邊緣。" +msgid "The speed at which the skirt and brim are printed. Normally this is done at the initial layer speed, but sometimes you might want to print the skirt or brim at a different speed." +msgstr "列印外圍和邊緣的速度。一般情况是以起始層速度列印這些部分,但有時候你可能想要以不同速度來列印外圍或邊緣。" #: fdmprinter.def.json msgctxt "max_feedrate_z_override label" @@ -2606,11 +2122,8 @@ 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 速度採用韌體預設值。" +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 速度採用韌體預設值。" #: fdmprinter.def.json msgctxt "speed_slowdown_layers label" @@ -2619,13 +2132,8 @@ msgstr "慢速列印層數" #: fdmprinter.def.json msgctxt "speed_slowdown_layers description" -msgid "" -"The first few layers are printed slower than the rest of the model, to get " -"better adhesion to the build plate and improve the overall success rate of " -"prints. The speed is gradually increased over these layers." -msgstr "" -"前幾層的列印速度比模型的其他層慢,以便實現與列印平台的更好附著,並改善整體的" -"列印成功率。該速度在這些層中會逐漸增加。" +msgid "The first few layers are printed slower than the rest of the model, to get better adhesion to the build plate and improve the overall success rate of prints. The speed is gradually increased over these layers." +msgstr "前幾層的列印速度比模型的其他層慢,以便實現與列印平台的更好附著,並改善整體的列印成功率。該速度在這些層中會逐漸增加。" #: fdmprinter.def.json msgctxt "speed_equalize_flow_enabled label" @@ -2634,15 +2142,8 @@ msgstr "均衡耗材流量" #: fdmprinter.def.json msgctxt "speed_equalize_flow_enabled description" -msgid "" -"Print thinner than normal lines faster so that the amount of material " -"extruded per second remains the same. Thin pieces in your model might " -"require lines printed with smaller line width than provided in the settings. " -"This setting controls the speed changes for such lines." -msgstr "" -"以較快的速度列印比正常線條更細的線條,使每秒擠出的耗材量保持相同。模型中較薄" -"的部分可能需要以低於設定中所提供寬度的線寬來列印線條。該設定控制這些線條的速" -"度變化。" +msgid "Print thinner than normal lines faster so that the amount of material extruded per second remains the same. Thin pieces in your model might require lines printed with smaller line width than provided in the settings. This setting controls the speed changes for such lines." +msgstr "以較快的速度列印比正常線條更細的線條,使每秒擠出的耗材量保持相同。模型中較薄的部分可能需要以低於設定中所提供寬度的線寬來列印線條。該設定控制這些線條的速度變化。" #: fdmprinter.def.json msgctxt "speed_equalize_flow_max label" @@ -2651,8 +2152,7 @@ msgstr "流量均衡的最大速度" #: fdmprinter.def.json msgctxt "speed_equalize_flow_max description" -msgid "" -"Maximum print speed when adjusting the print speed in order to equalize flow." +msgid "Maximum print speed when adjusting the print speed in order to equalize flow." msgstr "調整列印速度以便均衡流量時的最大列印速度。" #: fdmprinter.def.json @@ -2662,9 +2162,7 @@ msgstr "啟用加速度控制" #: fdmprinter.def.json msgctxt "acceleration_enabled description" -msgid "" -"Enables adjusting the print head acceleration. Increasing the accelerations " -"can reduce printing time at the cost of print quality." +msgid "Enables adjusting the print head acceleration. Increasing the accelerations can reduce printing time at the cost of print quality." msgstr "啟用調整噴頭的加速度。增加加速度可以減少列印時間卻會犧牲列印品質。" #: fdmprinter.def.json @@ -2764,9 +2262,7 @@ msgstr "支撐介面加速度" #: fdmprinter.def.json msgctxt "acceleration_support_interface description" -msgid "" -"The acceleration with which the roofs and floors of support are printed. " -"Printing them at lower acceleration can improve overhang quality." +msgid "The acceleration with which the roofs and floors of support are printed. Printing them at lower acceleration can improve overhang quality." msgstr "列印支撐頂板和底板的加速度。以較低的加速度列印可以改善懸垂品質。" #: fdmprinter.def.json @@ -2776,9 +2272,7 @@ msgstr "支撐頂板加速度" #: fdmprinter.def.json msgctxt "acceleration_support_roof description" -msgid "" -"The acceleration with which the roofs of support are printed. Printing them " -"at lower acceleration can improve overhang quality." +msgid "The acceleration with which the roofs of support are printed. Printing them at lower acceleration can improve overhang quality." msgstr "列印支撐頂板的加速度。以較低的加速度列印可以改善懸垂品質。" #: fdmprinter.def.json @@ -2788,9 +2282,7 @@ msgstr "支撐底板加速度" #: fdmprinter.def.json msgctxt "acceleration_support_bottom description" -msgid "" -"The acceleration with which the floors of support are printed. Printing them " -"at lower acceleration can improve adhesion of support on top of your model." +msgid "The acceleration with which the floors of support are printed. Printing them at lower acceleration can improve adhesion of support on top of your model." msgstr "列印支撐底板的加速度。以較低的加速度列印可以改善支撐在模型頂部的附著。" #: fdmprinter.def.json @@ -2850,13 +2342,8 @@ msgstr "外圍/邊緣加速度" #: fdmprinter.def.json msgctxt "acceleration_skirt_brim description" -msgid "" -"The acceleration with which the skirt and brim are printed. Normally this is " -"done with the initial layer acceleration, but sometimes you might want to " -"print the skirt or brim at a different acceleration." -msgstr "" -"列印外圍和邊緣的加速度。一般情况是以起始層加速度列印這些部分,但有時候你可能" -"想要以不同加速度來列印外圍或邊緣。" +msgid "The acceleration with which the skirt and brim are printed. Normally this is done with the initial layer acceleration, but sometimes you might want to print the skirt or brim at a different acceleration." +msgstr "列印外圍和邊緣的加速度。一般情况是以起始層加速度列印這些部分,但有時候你可能想要以不同加速度來列印外圍或邊緣。" #: fdmprinter.def.json msgctxt "jerk_enabled label" @@ -2865,13 +2352,8 @@ msgstr "啟用加加速度控制" #: fdmprinter.def.json msgctxt "jerk_enabled description" -msgid "" -"Enables adjusting the jerk of print head when the velocity in the X or Y " -"axis changes. Increasing the jerk can reduce printing time at the cost of " -"print quality." -msgstr "" -"啟用當 X 或 Y 軸的速度變化時調整列印頭的加加速度。提高加加速度可以通過以列印" -"品質為代價來縮短列印時間。" +msgid "Enables adjusting the jerk of print head when the velocity in the X or Y axis changes. Increasing the jerk can reduce printing time at the cost of print quality." +msgstr "啟用當 X 或 Y 軸的速度變化時調整列印頭的加加速度。提高加加速度可以通過以列印品質為代價來縮短列印時間。" #: fdmprinter.def.json msgctxt "jerk_print label" @@ -2900,8 +2382,7 @@ msgstr "牆壁加加速度" #: fdmprinter.def.json msgctxt "jerk_wall description" -msgid "" -"The maximum instantaneous velocity change with which the walls are printed." +msgid "The maximum instantaneous velocity change with which the walls are printed." msgstr "列印牆壁時的最大瞬時速度變化。" #: fdmprinter.def.json @@ -2911,9 +2392,7 @@ msgstr "外壁加加速度" #: fdmprinter.def.json msgctxt "jerk_wall_0 description" -msgid "" -"The maximum instantaneous velocity change with which the outermost walls are " -"printed." +msgid "The maximum instantaneous velocity change with which the outermost walls are printed." msgstr "列印最外壁時的最大瞬時速度變化。" #: fdmprinter.def.json @@ -2923,9 +2402,7 @@ msgstr "內壁加加速度" #: fdmprinter.def.json msgctxt "jerk_wall_x description" -msgid "" -"The maximum instantaneous velocity change with which all inner walls are " -"printed." +msgid "The maximum instantaneous velocity change with which all inner walls are printed." msgstr "列印所有內壁時的最大瞬時速度變化。" #: fdmprinter.def.json @@ -2935,9 +2412,7 @@ msgstr "頂部表層加加速度" #: fdmprinter.def.json msgctxt "jerk_roofing description" -msgid "" -"The maximum instantaneous velocity change with which top surface skin layers " -"are printed." +msgid "The maximum instantaneous velocity change with which top surface skin layers are printed." msgstr "列印頂部表層時的最大瞬時速度變化。" #: fdmprinter.def.json @@ -2947,9 +2422,7 @@ msgstr "頂部/底部加加速度" #: fdmprinter.def.json msgctxt "jerk_topbottom description" -msgid "" -"The maximum instantaneous velocity change with which top/bottom layers are " -"printed." +msgid "The maximum instantaneous velocity change with which top/bottom layers are printed." msgstr "列印頂部/底部層時的最大瞬時速度變化。" #: fdmprinter.def.json @@ -2959,9 +2432,7 @@ msgstr "支撐加加速度" #: fdmprinter.def.json msgctxt "jerk_support description" -msgid "" -"The maximum instantaneous velocity change with which the support structure " -"is printed." +msgid "The maximum instantaneous velocity change with which the support structure is printed." msgstr "列印支撐結構時的最大瞬時速度變化。" #: fdmprinter.def.json @@ -2971,9 +2442,7 @@ msgstr "支撐填充加加速度" #: fdmprinter.def.json msgctxt "jerk_support_infill description" -msgid "" -"The maximum instantaneous velocity change with which the infill of support " -"is printed." +msgid "The maximum instantaneous velocity change with which the infill of support is printed." msgstr "列印支撐填充時的最大瞬時速度變化。" #: fdmprinter.def.json @@ -2983,9 +2452,7 @@ msgstr "支撐介面加加速度" #: fdmprinter.def.json msgctxt "jerk_support_interface description" -msgid "" -"The maximum instantaneous velocity change with which the roofs and floors of " -"support are printed." +msgid "The maximum instantaneous velocity change with which the roofs and floors of support are printed." msgstr "列印支撐頂板和底板的最大瞬時速度變化。" #: fdmprinter.def.json @@ -2995,9 +2462,7 @@ msgstr "支撐頂板加加速度" #: fdmprinter.def.json msgctxt "jerk_support_roof description" -msgid "" -"The maximum instantaneous velocity change with which the roofs of support " -"are printed." +msgid "The maximum instantaneous velocity change with which the roofs of support are printed." msgstr "列印支撐頂板的最大瞬時速度變化。" #: fdmprinter.def.json @@ -3007,9 +2472,7 @@ msgstr "支撐底板加加速度" #: fdmprinter.def.json msgctxt "jerk_support_bottom description" -msgid "" -"The maximum instantaneous velocity change with which the floors of support " -"are printed." +msgid "The maximum instantaneous velocity change with which the floors of support are printed." msgstr "列印支撐底板時的最大瞬時速度變化。" #: fdmprinter.def.json @@ -3019,9 +2482,7 @@ msgstr "換料塔加加速度" #: fdmprinter.def.json msgctxt "jerk_prime_tower description" -msgid "" -"The maximum instantaneous velocity change with which the prime tower is " -"printed." +msgid "The maximum instantaneous velocity change with which the prime tower is printed." msgstr "列印換料塔時的最大瞬時速度變化。" #: fdmprinter.def.json @@ -3031,8 +2492,7 @@ msgstr "空跑加加速度" #: fdmprinter.def.json msgctxt "jerk_travel description" -msgid "" -"The maximum instantaneous velocity change with which travel moves are made." +msgid "The maximum instantaneous velocity change with which travel moves are made." msgstr "進行空跑時的最大瞬時速度變化。" #: fdmprinter.def.json @@ -3052,9 +2512,7 @@ msgstr "起始層列印加加速度" #: fdmprinter.def.json msgctxt "jerk_print_layer_0 description" -msgid "" -"The maximum instantaneous velocity change during the printing of the initial " -"layer." +msgid "The maximum instantaneous velocity change during the printing of the initial layer." msgstr "列印起始層時的最大瞬時速度變化。" #: fdmprinter.def.json @@ -3074,9 +2532,7 @@ msgstr "外圍/邊緣加加速度" #: fdmprinter.def.json msgctxt "jerk_skirt_brim description" -msgid "" -"The maximum instantaneous velocity change with which the skirt and brim are " -"printed." +msgid "The maximum instantaneous velocity change with which the skirt and brim are printed." msgstr "列印外圍和邊緣時的最大瞬時速度變化。" #: fdmprinter.def.json @@ -3096,16 +2552,8 @@ msgstr "梳理模式" #: fdmprinter.def.json msgctxt "retraction_combing description" -msgid "" -"Combing keeps the nozzle within already printed areas when traveling. This " -"results in slightly longer travel moves but reduces the need for " -"retractions. If combing is off, the material will retract and the nozzle " -"moves in a straight line to the next point. It is also possible to avoid " -"combing over top/bottom skin areas by combing within the infill only." -msgstr "" -"梳理可在空跑時讓噴頭保持在已列印區域內。這會使空跑距離稍微延長,但可減少回抽" -"需求。如果關閉梳理,則耗材將回抽,且噴頭沿著直線移動到下一個點。也可以通過僅" -"在填充內進行梳理避免梳理頂部/底部表層區域。" +msgid "Combing keeps the nozzle within already printed areas when traveling. This results in slightly longer travel moves but reduces the need for retractions. If combing is off, the material will retract and the nozzle moves in a straight line to the next point. It is also possible to avoid combing over top/bottom skin areas by combing within the infill only." +msgstr "梳理可在空跑時讓噴頭保持在已列印區域內。這會使空跑距離稍微延長,但可減少回抽需求。如果關閉梳理,則耗材將回抽,且噴頭沿著直線移動到下一個點。也可以通過僅在填充內進行梳理避免梳理頂部/底部表層區域。" #: fdmprinter.def.json msgctxt "retraction_combing option off" @@ -3139,9 +2587,7 @@ msgstr "空跑時避開已列印部分" #: fdmprinter.def.json msgctxt "travel_avoid_other_parts description" -msgid "" -"The nozzle avoids already printed parts when traveling. This option is only " -"available when combing is enabled." +msgid "The nozzle avoids already printed parts when traveling. This option is only available when combing is enabled." msgstr "噴頭會在空跑時避開已列印的部分。此選項僅在啟用梳理功能時可用。" #: fdmprinter.def.json @@ -3151,9 +2597,7 @@ msgstr "空跑避開距離" #: fdmprinter.def.json msgctxt "travel_avoid_distance description" -msgid "" -"The distance between the nozzle and already printed parts when avoiding " -"during travel moves." +msgid "The distance between the nozzle and already printed parts when avoiding during travel moves." msgstr "噴頭和已列印部分之間在空跑時避開的距離。" #: fdmprinter.def.json @@ -3163,14 +2607,8 @@ 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 "" -"每一層都在相同點附近開始列印,這樣在列印新的一層時,就不需要列印前一層結束時" -"的那一小段區域。在懸垂部分和小零件有良好的效果,但會增加列印時間。" +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" @@ -3179,9 +2617,7 @@ msgstr "每層列印起始點的 X 座標" #: fdmprinter.def.json msgctxt "layer_start_x description" -msgid "" -"The X coordinate of the position near where to find the part to start " -"printing each layer." +msgid "The X coordinate of the position near where to find the part to start printing each layer." msgstr "每一層列印起始點附近位置的 X 坐標。" #: fdmprinter.def.json @@ -3191,9 +2627,7 @@ msgstr "每層列印起始點的 Y 座標" #: fdmprinter.def.json msgctxt "layer_start_y description" -msgid "" -"The Y coordinate of the position near where to find the part to start " -"printing each layer." +msgid "The Y coordinate of the position near where to find the part to start printing each layer." msgstr "每一層列印起始點附近位置的 Y 坐標。" #: fdmprinter.def.json @@ -3203,14 +2637,8 @@ msgstr "回抽時 Z 抬升" #: fdmprinter.def.json msgctxt "retraction_hop_enabled description" -msgid "" -"Whenever a retraction is done, the build plate is lowered to create " -"clearance between the nozzle and the print. It prevents the nozzle from " -"hitting the print during travel moves, reducing the chance to knock the " -"print from the build plate." -msgstr "" -"每當回抽完成時,列印平台會降低以便在噴頭和列印品之間形成空隙。它可以防止噴頭" -"在空跑過程中撞到列印品,降低將列印品從列印平台撞掉的幾率。" +msgid "Whenever a retraction is done, the build plate is lowered to create clearance between the nozzle and the print. It prevents the nozzle from hitting the print during travel moves, reducing the chance to knock the print from the build plate." +msgstr "每當回抽完成時,列印平台會降低以便在噴頭和列印品之間形成空隙。它可以防止噴頭在空跑過程中撞到列印品,降低將列印品從列印平台撞掉的幾率。" #: fdmprinter.def.json msgctxt "retraction_hop_only_when_collides label" @@ -3219,12 +2647,8 @@ msgstr "僅在已列印部分上 Z 抬升" #: fdmprinter.def.json msgctxt "retraction_hop_only_when_collides description" -msgid "" -"Only perform a Z Hop when moving over printed parts which cannot be avoided " -"by horizontal motion by Avoid Printed Parts when Traveling." -msgstr "" -"僅在移動到無法通過“空跑時避開已列印部分”選項的水平操作避開的已列印部分上方時" -"執行 Z 抬升。" +msgid "Only perform a Z Hop when moving over printed parts which cannot be avoided by horizontal motion by Avoid Printed Parts when Traveling." +msgstr "僅在移動到無法通過“空跑時避開已列印部分”選項的水平操作避開的已列印部分上方時執行 Z 抬升。" #: fdmprinter.def.json msgctxt "retraction_hop label" @@ -3243,13 +2667,8 @@ msgstr "擠出機切換後的 Z 抬升" #: fdmprinter.def.json msgctxt "retraction_hop_after_extruder_switch description" -msgid "" -"After the machine switched from one extruder to the other, the build plate " -"is lowered to create clearance between the nozzle and the print. This " -"prevents the nozzle from leaving oozed material on the outside of a print." -msgstr "" -"當機器從一個擠出機切換到另一個時,列印平台會降低以便在噴頭和列印品之間形成空" -"隙。這將防止噴頭在列印品外部留下滲出物。" +msgid "After the machine switched from one extruder to the other, the build plate is lowered to create clearance between the nozzle and the print. This prevents the nozzle from leaving oozed material on the outside of a print." +msgstr "當機器從一個擠出機切換到另一個時,列印平台會降低以便在噴頭和列印品之間形成空隙。這將防止噴頭在列印品外部留下滲出物。" #: fdmprinter.def.json msgctxt "cooling label" @@ -3268,12 +2687,8 @@ msgstr "開啟列印冷卻" #: fdmprinter.def.json msgctxt "cool_fan_enabled description" -msgid "" -"Enables the print cooling fans while printing. The fans improve print " -"quality on layers with short layer times and bridging / overhangs." -msgstr "" -"列印時啟用列印冷卻風扇。風扇可以在列印時間較短的層和橋接/懸垂結構提高列印品" -"質。" +msgid "Enables the print cooling fans while printing. The fans improve print quality on layers with short layer times and bridging / overhangs." +msgstr "列印時啟用列印冷卻風扇。風扇可以在列印時間較短的層和橋接/懸垂結構提高列印品質。" #: fdmprinter.def.json msgctxt "cool_fan_speed label" @@ -3292,14 +2707,8 @@ msgstr "標準風扇轉速" #: fdmprinter.def.json 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 "" -"在單層列印時間大於門檻值時,風扇運轉的速度。當單層列印時間小於門檻值時,系統" -"會根據單層列印時間決定使用的風扇轉速。列印時間愈短,所使用的風扇轉速愈快,但" -"不會超過最大風扇轉速。" +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 "在單層列印時間大於門檻值時,風扇運轉的速度。當單層列印時間小於門檻值時,系統會根據單層列印時間決定使用的風扇轉速。列印時間愈短,所使用的風扇轉速愈快,但不會超過最大風扇轉速。" #: fdmprinter.def.json msgctxt "cool_fan_speed_max label" @@ -3308,14 +2717,8 @@ msgstr "最大風扇轉速" #: fdmprinter.def.json msgctxt "cool_fan_speed_max description" -msgid "" -"The speed at which the fans spin on the minimum layer time. The fan speed " -"gradually increases between the regular fan speed and maximum fan speed when " -"the threshold is hit." -msgstr "" -"在“最短單層列印時間”時,風扇運轉的速度。當單層列印時間小於門檻值時,系統會根" -"據單層列印時間決定使用的風扇轉速。列印時間愈短,所使用的風扇轉速愈快,但不會" -"超過最大風扇轉速。" +msgid "The speed at which the fans spin on the minimum layer time. The fan speed gradually increases between the regular fan speed and maximum fan speed when the threshold is hit." +msgstr "在“最短單層列印時間”時,風扇運轉的速度。當單層列印時間小於門檻值時,系統會根據單層列印時間決定使用的風扇轉速。列印時間愈短,所使用的風扇轉速愈快,但不會超過最大風扇轉速。" #: fdmprinter.def.json msgctxt "cool_min_layer_time_fan_speed_max label" @@ -3324,15 +2727,8 @@ msgstr "標準風扇轉速門檻值" #: fdmprinter.def.json msgctxt "cool_min_layer_time_fan_speed_max description" -msgid "" -"The layer time which sets the threshold between regular fan speed and " -"maximum fan speed. Layers that print slower than this time use regular fan " -"speed. For faster layers the fan speed gradually increases towards the " -"maximum fan speed." -msgstr "" -"使用標準風扇轉速的單層列印時間門檻值。如果單層列印時間大於這個門檻值,就使用" -"標準風扇轉速。如果單層列印時間比這個門檻值短,系統會根據單層列印時間決定使用" -"的風扇轉速。列印時間愈短,所使用的風扇轉速愈快,但不會超過最大風扇轉速。" +msgid "The layer time which sets the threshold between regular fan speed and maximum fan speed. Layers that print slower than this time use regular fan speed. For faster layers the fan speed gradually increases towards the maximum fan speed." +msgstr "使用標準風扇轉速的單層列印時間門檻值。如果單層列印時間大於這個門檻值,就使用標準風扇轉速。如果單層列印時間比這個門檻值短,系統會根據單層列印時間決定使用的風扇轉速。列印時間愈短,所使用的風扇轉速愈快,但不會超過最大風扇轉速。" #: fdmprinter.def.json msgctxt "cool_fan_speed_0 label" @@ -3341,13 +2737,8 @@ msgstr "起始層風扇轉速" #: fdmprinter.def.json 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 "" -"列印起始層時的風扇轉速。在隨後的層中,風扇轉速會逐漸增加到對應層所設定的速" -"度。" +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 "列印起始層時的風扇轉速。在隨後的層中,風扇轉速會逐漸增加到對應層所設定的速度。" #: fdmprinter.def.json msgctxt "cool_fan_full_at_height label" @@ -3356,13 +2747,8 @@ msgstr "標準風扇轉速(高度)" #: fdmprinter.def.json msgctxt "cool_fan_full_at_height description" -msgid "" -"The height at which the fans spin on regular fan speed. At the layers below " -"the fan speed gradually increases from Initial Fan Speed to Regular Fan " -"Speed." -msgstr "" -"使用標準風扇轉速的高度。風扇轉速會從起始轉速逐漸增加,在此高度達到標準風扇轉" -"速。" +msgid "The height at which the fans spin on regular fan speed. At the layers below the fan speed gradually increases from Initial Fan Speed to Regular Fan Speed." +msgstr "使用標準風扇轉速的高度。風扇轉速會從起始轉速逐漸增加,在此高度達到標準風扇轉速。" #: fdmprinter.def.json msgctxt "cool_fan_full_layer label" @@ -3371,12 +2757,8 @@ msgstr "標準風扇轉速(層)" #: fdmprinter.def.json msgctxt "cool_fan_full_layer description" -msgid "" -"The layer at which the fans spin on regular fan speed. If regular fan speed " -"at height is set, this value is calculated and rounded to a whole number." -msgstr "" -"要使用標準風扇轉速的層。如果標準風扇轉速高度已被設定,這個值將使用計算出來後" -"取四捨五入的整數值。" +msgid "The layer at which the fans spin on regular fan speed. If regular fan speed at height is set, this value is calculated and rounded to a whole number." +msgstr "要使用標準風扇轉速的層。如果標準風扇轉速高度已被設定,這個值將使用計算出來後取四捨五入的整數值。" #: fdmprinter.def.json msgctxt "cool_min_layer_time label" @@ -3385,16 +2767,8 @@ msgstr "最短單層列印時間" #: fdmprinter.def.json msgctxt "cool_min_layer_time description" -msgid "" -"The minimum time spent in a layer. This forces the printer to slow down, to " -"at least spend the time set here in one layer. This allows the printed " -"material to cool down properly before printing the next layer. Layers may " -"still take shorter than the minimal layer time if Lift Head is disabled and " -"if the Minimum Speed would otherwise be violated." -msgstr "" -"單層列印時間的下限。這會迫使印表機減速,以便在單層列印中消耗此處所規定的時" -"間。這會讓模型充分冷卻後再列印下一層。如果“噴頭抬升”功能被關閉,為了不違反“最" -"低列印速度”,單層列印時間仍有可能低於此設定值。" +msgid "The minimum time spent in a layer. This forces the printer to slow down, to at least spend the time set here in one layer. This allows the printed material to cool down properly before printing the next layer. Layers may still take shorter than the minimal layer time if Lift Head is disabled and if the Minimum Speed would otherwise be violated." +msgstr "單層列印時間的下限。這會迫使印表機減速,以便在單層列印中消耗此處所規定的時間。這會讓模型充分冷卻後再列印下一層。如果“噴頭抬升”功能被關閉,為了不違反“最低列印速度”,單層列印時間仍有可能低於此設定值。" #: fdmprinter.def.json msgctxt "cool_min_speed label" @@ -3403,13 +2777,8 @@ msgstr "最低列印速度" #: fdmprinter.def.json msgctxt "cool_min_speed description" -msgid "" -"The minimum print speed, despite slowing down due to the minimum layer time. " -"When the printer would slow down too much, the pressure in the nozzle would " -"be too low and result in bad print quality." -msgstr "" -"列印速度的下限,限制因“最短單層列印時間”的減速。當印表機減速過多時,噴頭中的" -"壓力將過低並導致較差的列印品質。" +msgid "The minimum print speed, despite slowing down due to the minimum layer time. When the printer would slow down too much, the pressure in the nozzle would be too low and result in bad print quality." +msgstr "列印速度的下限,限制因“最短單層列印時間”的減速。當印表機減速過多時,噴頭中的壓力將過低並導致較差的列印品質。" #: fdmprinter.def.json msgctxt "cool_lift_head label" @@ -3418,13 +2787,8 @@ msgstr "噴頭抬升" #: fdmprinter.def.json msgctxt "cool_lift_head description" -msgid "" -"When the minimum speed is hit because of minimum layer time, lift the head " -"away from the print and wait the extra time until the minimum layer time is " -"reached." -msgstr "" -"當“最短單層列印時間”受到“最低列印速度”限制時,將噴頭從模型上抬高,並等候達到" -"最短單層列印時間。" +msgid "When the minimum speed is hit because of minimum layer time, lift the head away from the print and wait the extra time until the minimum layer time is reached." +msgstr "當“最短單層列印時間”受到“最低列印速度”限制時,將噴頭從模型上抬高,並等候達到最短單層列印時間。" #: fdmprinter.def.json msgctxt "support label" @@ -3443,12 +2807,8 @@ msgstr "產生支撐" #: fdmprinter.def.json msgctxt "support_enable description" -msgid "" -"Generate structures to support parts of the model which have overhangs. " -"Without these structures, such parts would collapse during printing." -msgstr "" -"在模型的懸垂(Overhangs)部分產生支撐結構。若不這樣做,這些部分在列印時將倒" -"塌。" +msgid "Generate structures to support parts of the model which have overhangs. Without these structures, such parts would collapse during printing." +msgstr "在模型的懸垂(Overhangs)部分產生支撐結構。若不這樣做,這些部分在列印時將倒塌。" #: fdmprinter.def.json msgctxt "support_extruder_nr label" @@ -3457,9 +2817,7 @@ msgstr "支撐用擠出機" #: fdmprinter.def.json msgctxt "support_extruder_nr description" -msgid "" -"The extruder train to use for printing the support. This is used in multi-" -"extrusion." +msgid "The extruder train to use for printing the support. This is used in multi-extrusion." msgstr "用於列印支撐的擠出機組。在多擠出機情況下適用。" #: fdmprinter.def.json @@ -3469,9 +2827,7 @@ msgstr "支撐填充擠出機" #: fdmprinter.def.json msgctxt "support_infill_extruder_nr description" -msgid "" -"The extruder train to use for printing the infill of the support. This is " -"used in multi-extrusion." +msgid "The extruder train to use for printing the infill of the support. This is used in multi-extrusion." msgstr "用於列印支撐填充的擠出機組。在多擠出機情況下適用。" #: fdmprinter.def.json @@ -3481,9 +2837,7 @@ msgstr "第一層支撐擠出機" #: fdmprinter.def.json msgctxt "support_extruder_nr_layer_0 description" -msgid "" -"The extruder train to use for printing the first layer of support infill. " -"This is used in multi-extrusion." +msgid "The extruder train to use for printing the first layer of support infill. This is used in multi-extrusion." msgstr "用於列印支撐填充第一層的擠出機組。在多擠出機情況下適用。" #: fdmprinter.def.json @@ -3493,9 +2847,7 @@ msgstr "支撐介面擠出機" #: fdmprinter.def.json msgctxt "support_interface_extruder_nr description" -msgid "" -"The extruder train to use for printing the roofs and floors of the support. " -"This is used in multi-extrusion." +msgid "The extruder train to use for printing the roofs and floors of the support. This is used in multi-extrusion." msgstr "用於列印支撐頂板和底板的擠出機組。在多擠出機情況下適用。" #: fdmprinter.def.json @@ -3505,9 +2857,7 @@ msgstr "支撐頂板擠出機" #: fdmprinter.def.json msgctxt "support_roof_extruder_nr description" -msgid "" -"The extruder train to use for printing the roofs of the support. This is " -"used in multi-extrusion." +msgid "The extruder train to use for printing the roofs of the support. This is used in multi-extrusion." msgstr "用於列印支撐頂板的擠出機組。在多擠出機情況下適用。" #: fdmprinter.def.json @@ -3517,9 +2867,7 @@ msgstr "支撐底板擠出機" #: fdmprinter.def.json msgctxt "support_bottom_extruder_nr description" -msgid "" -"The extruder train to use for printing the floors of the support. This is " -"used in multi-extrusion." +msgid "The extruder train to use for printing the floors of the support. This is used in multi-extrusion." msgstr "用於列印支撐底板的擠出機組。在多擠出機情況下適用。" #: fdmprinter.def.json @@ -3529,13 +2877,8 @@ msgstr "支撐位置" #: fdmprinter.def.json msgctxt "support_type description" -msgid "" -"Adjusts the placement of the support structures. The placement can be set to " -"touching build plate or everywhere. When set to everywhere the support " -"structures will also be printed on the model." -msgstr "" -"調整支撐結構的位置。位置可以設定為“接觸列印平台”或“每個地方”。當設定為“每個地" -"方”時,在模型上也會列印支撐結構。" +msgid "Adjusts the placement of the support structures. The placement can be set to touching build plate or everywhere. When set to everywhere the support structures will also be printed on the model." +msgstr "調整支撐結構的位置。位置可以設定為“接觸列印平台”或“每個地方”。當設定為“每個地方”時,在模型上也會列印支撐結構。" #: fdmprinter.def.json msgctxt "support_type option buildplate" @@ -3554,12 +2897,8 @@ msgstr "支撐懸垂角度" #: fdmprinter.def.json msgctxt "support_angle description" -msgid "" -"The minimum angle of overhangs for which support is added. At a value of 0° " -"all overhangs are supported, 90° will not provide any support." -msgstr "" -"添加支撐的最小懸垂角度。當角度為 0° 時,將支撐所有懸垂,當角度為 90° 時,不提" -"供任何支撐。" +msgid "The minimum angle of overhangs for which support is added. At a value of 0° all overhangs are supported, 90° will not provide any support." +msgstr "添加支撐的最小懸垂角度。當角度為 0° 時,將支撐所有懸垂,當角度為 90° 時,不提供任何支撐。" #: fdmprinter.def.json msgctxt "support_pattern label" @@ -3568,9 +2907,7 @@ msgstr "支撐列印樣式" #: fdmprinter.def.json msgctxt "support_pattern description" -msgid "" -"The pattern of the support structures of the print. The different options " -"available result in sturdy or easy to remove support." +msgid "The pattern of the support structures of the print. The different options available result in sturdy or easy to remove support." msgstr "支撐結構的列印樣式。有不同的選項可產生堅固的或容易清除的支撐。" #: fdmprinter.def.json @@ -3615,9 +2952,7 @@ msgstr "連接支撐鋸齒狀" #: fdmprinter.def.json msgctxt "support_connect_zigzags description" -msgid "" -"Connect the ZigZags. This will increase the strength of the zig zag support " -"structure." +msgid "Connect the ZigZags. This will increase the strength of the zig zag support structure." msgstr "連接鋸齒狀。這將增加鋸齒狀支撐結構的强度。" #: fdmprinter.def.json @@ -3627,9 +2962,7 @@ msgstr "支撐密度" #: fdmprinter.def.json msgctxt "support_infill_rate description" -msgid "" -"Adjusts the density of the support structure. A higher value results in " -"better overhangs, but the supports are harder to remove." +msgid "Adjusts the density of the support structure. A higher value results in better overhangs, but the supports are harder to remove." msgstr "調整支撐結構的密度。較高的值會實現更好的懸垂,但支撐將更加難以移除。" #: fdmprinter.def.json @@ -3639,9 +2972,7 @@ msgstr "支撐線條間距" #: fdmprinter.def.json msgctxt "support_line_distance description" -msgid "" -"Distance between the printed support structure lines. This setting is " -"calculated by the support density." +msgid "Distance between the printed support structure lines. This setting is calculated by the support density." msgstr "已列印支撐結構線條之間的距離。該設定通過支撐密度計算。" #: fdmprinter.def.json @@ -3651,13 +2982,8 @@ msgstr "支撐 Z 間距" #: fdmprinter.def.json msgctxt "support_z_distance description" -msgid "" -"Distance from the top/bottom of the support structure to the print. This gap " -"provides clearance to remove the supports after the model is printed. This " -"value is rounded up to a multiple of the layer height." -msgstr "" -"支撐結構距離模型頂部/底部的距離。這一個小的差距使得它更容易被去除,這個數值會" -"被無條件進位到層高的倍數。" +msgid "Distance from the top/bottom of the support structure to the print. This gap provides clearance to remove the supports after the model is printed. This value is rounded up to a multiple of the layer height." +msgstr "支撐結構距離模型頂部/底部的距離。這一個小的差距使得它更容易被去除,這個數值會被無條件進位到層高的倍數。" #: fdmprinter.def.json msgctxt "support_top_distance label" @@ -3696,15 +3022,8 @@ msgstr "支撐間距優先權" #: fdmprinter.def.json msgctxt "support_xy_overrides_z description" -msgid "" -"Whether the Support X/Y Distance overrides the Support Z Distance or vice " -"versa. When X/Y overrides Z the X/Y distance can push away the support from " -"the model, influencing the actual Z distance to the overhang. We can disable " -"this by not applying the X/Y distance around overhangs." -msgstr "" -"支撐 X/Y 間距是否優先於支撐 Z 間距的設定。當 X/Y 間距優先於 Z 時,X/Y 間距可" -"將支撐從模型上推離,同時影響與懸垂之間的實際 Z 間距。我們可以通過不在懸垂周圍" -"套用 X/Y 間距來關閉此選項。" +msgid "Whether the Support X/Y Distance overrides the Support Z Distance or vice versa. When X/Y overrides Z the X/Y distance can push away the support from the model, influencing the actual Z distance to the overhang. We can disable this by not applying the X/Y distance around overhangs." +msgstr "支撐 X/Y 間距是否優先於支撐 Z 間距的設定。當 X/Y 間距優先於 Z 時,X/Y 間距可將支撐從模型上推離,同時影響與懸垂之間的實際 Z 間距。我們可以通過不在懸垂周圍套用 X/Y 間距來關閉此選項。" #: fdmprinter.def.json msgctxt "support_xy_overrides_z option xy_overrides_z" @@ -3723,8 +3042,7 @@ msgstr "最小支撐 X/Y 間距" #: fdmprinter.def.json msgctxt "support_xy_distance_overhang description" -msgid "" -"Distance of the support structure from the overhang in the X/Y directions. " +msgid "Distance of the support structure from the overhang in the X/Y directions. " msgstr "支撐結構在 X/Y 方向與懸垂的間距。" #: fdmprinter.def.json @@ -3734,14 +3052,8 @@ msgstr "支撐階梯高度" #: fdmprinter.def.json msgctxt "support_bottom_stair_step_height description" -msgid "" -"The height of the steps of the stair-like bottom of support resting on the " -"model. A low value makes the support harder to remove, but too high values " -"can lead to unstable support structures. Set to zero to turn off the stair-" -"like behaviour." -msgstr "" -"模型上的支撐階梯狀底部的階梯高度。較低的值會使支撐更難於移除,但過高的值可能" -"導致不穩定的支撐結構。設為零可以關閉階梯狀行為。" +msgid "The height of the steps of the stair-like bottom of support resting on the model. A low value makes the support harder to remove, but too high values can lead to unstable support structures. Set to zero to turn off the stair-like behaviour." +msgstr "模型上的支撐階梯狀底部的階梯高度。較低的值會使支撐更難於移除,但過高的值可能導致不穩定的支撐結構。設為零可以關閉階梯狀行為。" #: fdmprinter.def.json msgctxt "support_bottom_stair_step_width label" @@ -3750,13 +3062,8 @@ msgstr "支撐階梯最大寬度" #: fdmprinter.def.json msgctxt "support_bottom_stair_step_width description" -msgid "" -"The maximum width of the steps of the stair-like bottom of support resting " -"on the model. A low value makes the support harder to remove, but too high " -"values can lead to unstable support structures." -msgstr "" -"停留在模型上的支撐階梯狀底部的最大階梯寬度。較低的值會使支撐更難於移除,但過" -"高的值可能導致不穩定的支撐結構。" +msgid "The maximum width of the steps of the stair-like bottom of support resting on the model. A low value makes the support harder to remove, but too high values can lead to unstable support structures." +msgstr "停留在模型上的支撐階梯狀底部的最大階梯寬度。較低的值會使支撐更難於移除,但過高的值可能導致不穩定的支撐結構。" #: fdmprinter.def.json msgctxt "support_join_distance label" @@ -3765,13 +3072,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 seperate structures are closer together than this value, the structures merge into one." +msgstr "支撐結構間在 X/Y 方向的最大距離。當分離結構之間的距離小於此值時,這些結構將合併為一個。" #: fdmprinter.def.json msgctxt "support_offset label" @@ -3780,12 +3082,8 @@ msgstr "支撐水平擴展" #: fdmprinter.def.json msgctxt "support_offset description" -msgid "" -"Amount of offset applied to all support polygons in each layer. Positive " -"values can smooth out the support areas and result in more sturdy support." -msgstr "" -"套用到每一層所有支撐多邊形的偏移量。正值可以讓支撐區域更平滑,並產生更為牢固" -"的支撐。" +msgid "Amount of offset applied to all support polygons in each layer. Positive values can smooth out the support areas and result in more sturdy support." +msgstr "套用到每一層所有支撐多邊形的偏移量。正值可以讓支撐區域更平滑,並產生更為牢固的支撐。" #: fdmprinter.def.json msgctxt "support_infill_sparse_thickness label" @@ -3794,12 +3092,8 @@ msgstr "支撐填充層厚度" #: fdmprinter.def.json msgctxt "support_infill_sparse_thickness description" -msgid "" -"The thickness per layer of support infill material. This value should always " -"be a multiple of the layer height and is otherwise rounded." -msgstr "" -"支撐填充耗材每層的厚度。該值應為層高的倍數,否則數值會被四捨五入到層高的倍" -"數。" +msgid "The thickness per layer of support infill material. This value should always be a multiple of the layer height and is otherwise rounded." +msgstr "支撐填充耗材每層的厚度。該值應為層高的倍數,否則數值會被四捨五入到層高的倍數。" #: fdmprinter.def.json msgctxt "gradual_support_infill_steps label" @@ -3808,13 +3102,8 @@ msgstr "漸進支撐填充步階" #: fdmprinter.def.json msgctxt "gradual_support_infill_steps description" -msgid "" -"Number of times to reduce the support infill density by half when getting " -"further below top surfaces. Areas which are closer to top surfaces get a " -"higher density, up to the Support Infill Density." -msgstr "" -"從支撐頂層往下,填充密度減半的次數。越靠近頂層的填充密度越高,最高密度為支撐" -"填充密度。" +msgid "Number of times to reduce the support infill density by half when getting further below top surfaces. Areas which are closer to top surfaces get a higher density, up to the Support Infill Density." +msgstr "從支撐頂層往下,填充密度減半的次數。越靠近頂層的填充密度越高,最高密度為支撐填充密度。" #: fdmprinter.def.json msgctxt "gradual_support_infill_step_height label" @@ -3823,9 +3112,7 @@ msgstr "漸進支撐填充步階高度" #: fdmprinter.def.json msgctxt "gradual_support_infill_step_height description" -msgid "" -"The height of support infill of a given density before switching to half the " -"density." +msgid "The height of support infill of a given density before switching to half the density." msgstr "支撐層密度減半的厚度。" #: fdmprinter.def.json @@ -3835,13 +3122,8 @@ msgstr "啟用支撐介面" #: fdmprinter.def.json msgctxt "support_interface_enable description" -msgid "" -"Generate a dense interface between the model and the support. This will " -"create a skin at the top of the support on which the model is printed and at " -"the bottom of the support, where it rests on the model." -msgstr "" -"在模型和支撐之間產生一個密度較高的介面。這會在承載模型的支撐頂部和座落在模型" -"上的支撐底部創造出一個介面層。" +msgid "Generate a dense interface between the model and the support. This will create a skin at the top of the support on which the model is printed and at the bottom of the support, where it rests on the model." +msgstr "在模型和支撐之間產生一個密度較高的介面。這會在承載模型的支撐頂部和座落在模型上的支撐底部創造出一個介面層。" #: fdmprinter.def.json msgctxt "support_roof_enable label" @@ -3850,11 +3132,8 @@ msgstr "啟用支撐頂板" #: fdmprinter.def.json msgctxt "support_roof_enable description" -msgid "" -"Generate a dense slab of material between the top of support and the model. " -"This will create a skin between the model and support." -msgstr "" -"在支撐頂部和模型之間產生一個密集的平板。這會在模型和支撐之間形成一個介面層。" +msgid "Generate a dense slab of material between the top of support and the model. This will create a skin between the model and support." +msgstr "在支撐頂部和模型之間產生一個密集的平板。這會在模型和支撐之間形成一個介面層。" #: fdmprinter.def.json msgctxt "support_bottom_enable label" @@ -3863,11 +3142,8 @@ msgstr "啟用支撐底板" #: fdmprinter.def.json msgctxt "support_bottom_enable description" -msgid "" -"Generate a dense slab of material between the bottom of the support and the " -"model. This will create a skin between the model and support." -msgstr "" -"在支撐底部和模型之間產生一個密集的平板。這會在模型和支撐之間形成一個介面層。" +msgid "Generate a dense slab of material between the bottom of the support and the model. This will create a skin between the model and support." +msgstr "在支撐底部和模型之間產生一個密集的平板。這會在模型和支撐之間形成一個介面層。" #: fdmprinter.def.json msgctxt "support_interface_height label" @@ -3876,9 +3152,7 @@ msgstr "支撐介面厚度" #: fdmprinter.def.json msgctxt "support_interface_height description" -msgid "" -"The thickness of the interface of the support where it touches with the " -"model on the bottom or the top." +msgid "The thickness of the interface of the support where it touches with the model on the bottom or the top." msgstr "支撐與模型在底部或頂部接觸的介面厚度。" #: fdmprinter.def.json @@ -3888,9 +3162,7 @@ msgstr "支撐頂板厚度" #: fdmprinter.def.json msgctxt "support_roof_height description" -msgid "" -"The thickness of the support roofs. This controls the amount of dense layers " -"at the top of the support on which the model rests." +msgid "The thickness of the support roofs. This controls the amount of dense layers at the top of the support on which the model rests." msgstr "支撐頂板的厚度。這會控制承載模型的支撐頂部密集層的數量。" #: fdmprinter.def.json @@ -3900,9 +3172,7 @@ msgstr "支撐底板厚度" #: fdmprinter.def.json msgctxt "support_bottom_height description" -msgid "" -"The thickness of the support floors. This controls the number of dense " -"layers that are printed on top of places of a model on which support rests." +msgid "The thickness of the support floors. This controls the number of dense layers that are printed on top of places of a model on which support rests." msgstr "支撐底板的厚度。這會控制座落在模型上的支撐底部密集層的數量。" #: fdmprinter.def.json @@ -3912,14 +3182,8 @@ msgstr "支撐介面解析度" #: fdmprinter.def.json msgctxt "support_interface_skip_height description" -msgid "" -"When checking where there's model above and below the support, take steps of " -"the given height. Lower values will slice slower, while higher values may " -"cause normal support to be printed in some places where there should have " -"been support interface." -msgstr "" -"在檢查支撐上方或下方是否有模型時,所採用步階的高度。值越低切片速度越慢,而較" -"高的值會導致在部分應有支撐介面的位置列印一般的支撐。" +msgid "When checking where there's model above and below the support, take steps of the given height. Lower values will slice slower, while higher values may cause normal support to be printed in some places where there should have been support interface." +msgstr "在檢查支撐上方或下方是否有模型時,所採用步階的高度。值越低切片速度越慢,而較高的值會導致在部分應有支撐介面的位置列印一般的支撐。" #: fdmprinter.def.json msgctxt "support_interface_density label" @@ -3928,13 +3192,8 @@ msgstr "支撐介面密度" #: fdmprinter.def.json msgctxt "support_interface_density description" -msgid "" -"Adjusts the density of the roofs and floors of the support structure. A " -"higher value results in better overhangs, but the supports are harder to " -"remove." -msgstr "" -"調整支撐結構頂板和底板的密度。較高的值會實現更好的懸垂,但支撐將更加難以移" -"除。" +msgid "Adjusts the density of the roofs and floors of the support structure. A higher value results in better overhangs, but the supports are harder to remove." +msgstr "調整支撐結構頂板和底板的密度。較高的值會實現更好的懸垂,但支撐將更加難以移除。" #: fdmprinter.def.json msgctxt "support_roof_density label" @@ -3943,9 +3202,7 @@ msgstr "支撐頂板密度" #: fdmprinter.def.json msgctxt "support_roof_density description" -msgid "" -"The density of the roofs of the support structure. A higher value results in " -"better overhangs, but the supports are harder to remove." +msgid "The density of the roofs of the support structure. A higher value results in better overhangs, but the supports are harder to remove." msgstr "支撐結構頂板的密度。較高的值會讓懸垂印得更好,但支撐將更加難以移除。" #: fdmprinter.def.json @@ -3955,9 +3212,7 @@ msgstr "支撐頂板線條距離" #: fdmprinter.def.json msgctxt "support_roof_line_distance description" -msgid "" -"Distance between the printed support roof lines. This setting is calculated " -"by the Support Roof Density, but can be adjusted separately." +msgid "Distance between the printed support roof lines. This setting is calculated by the Support Roof Density, but can be adjusted separately." msgstr "支撐頂板線條之間的距離。該設定是通過支撐頂板密度計算,但可以單獨調整。" #: fdmprinter.def.json @@ -3967,9 +3222,7 @@ msgstr "支撐底板密度" #: fdmprinter.def.json msgctxt "support_bottom_density description" -msgid "" -"The density of the floors of the support structure. A higher value results " -"in better adhesion of the support on top of the model." +msgid "The density of the floors of the support structure. A higher value results in better adhesion of the support on top of the model." msgstr "支撐結構底板的密度。較高的值會讓支撐更容易附著在模型上。" #: fdmprinter.def.json @@ -3979,9 +3232,7 @@ msgstr "支撐底板線條距離" #: fdmprinter.def.json msgctxt "support_bottom_line_distance description" -msgid "" -"Distance between the printed support floor lines. This setting is calculated " -"by the Support Floor Density, but can be adjusted separately." +msgid "Distance between the printed support floor lines. This setting is calculated by the Support Floor Density, but can be adjusted separately." msgstr "支撐底板線條之間的距離。該設定是通過支撐底板密度計算,但可以單獨調整。" #: fdmprinter.def.json @@ -3991,9 +3242,7 @@ msgstr "支撐介面列印樣式" #: fdmprinter.def.json msgctxt "support_interface_pattern description" -msgid "" -"The pattern with which the interface of the support with the model is " -"printed." +msgid "The pattern with which the interface of the support with the model is printed." msgstr "支撐與模型之間介面的列印樣式。" #: fdmprinter.def.json @@ -4113,13 +3362,8 @@ msgstr "使用塔型支撐" #: fdmprinter.def.json msgctxt "support_use_towers description" -msgid "" -"Use specialized towers to support tiny overhang areas. These towers have a " -"larger diameter than the region they support. Near the overhang the towers' " -"diameter decreases, forming a roof." -msgstr "" -"使用專門的塔來支撐較小的懸垂區域。這些塔的直徑比它們所支撐的區域要大。在靠近" -"懸垂物時,塔的直徑減小,形成頂板。" +msgid "Use specialized towers to support tiny overhang areas. These towers have a larger diameter than the region they support. Near the overhang the towers' diameter decreases, forming a roof." +msgstr "使用專門的塔來支撐較小的懸垂區域。這些塔的直徑比它們所支撐的區域要大。在靠近懸垂物時,塔的直徑減小,形成頂板。" #: fdmprinter.def.json msgctxt "support_tower_diameter label" @@ -4138,9 +3382,7 @@ 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." +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 軸方向最小直徑。" #: fdmprinter.def.json @@ -4150,11 +3392,19 @@ msgstr "塔頂板角度" #: fdmprinter.def.json msgctxt "support_tower_roof_angle description" -msgid "" -"The angle of a rooftop of a tower. A higher value results in pointed tower " -"roofs, a lower value results in flattened tower roofs." +msgid "The angle of a rooftop of a tower. A higher value results in pointed tower roofs, a lower value results in flattened tower roofs." msgstr "塔頂角度。該值越高,塔頂越尖,值越低,塔頂越平。" +#: fdmprinter.def.json +msgctxt "support_mesh_drop_down label" +msgid "Drop Down Support Mesh" +msgstr "下拉式支撐網格" + +#: fdmprinter.def.json +msgctxt "support_mesh_drop_down description" +msgid "Make support everywhere below the support mesh, so that there's no overhang in the support mesh." +msgstr "在支撐網格下方的所有位置進行支撐,讓支撐網格中没有懸垂。" + #: fdmprinter.def.json msgctxt "platform_adhesion label" msgid "Build Plate Adhesion" @@ -4172,14 +3422,8 @@ msgstr "啟用少量裝填" #: fdmprinter.def.json msgctxt "prime_blob_enable description" -msgid "" -"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." -msgstr "" -"列印前是否裝填少量的耗材。開啟此設定將確保列印前擠出機的噴頭處已準備好耗材。" -"列印邊緣或外圍也可作為裝填用途,這種情况下關閉此設定可以節省時間。" +msgid "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." +msgstr "列印前是否裝填少量的耗材。開啟此設定將確保列印前擠出機的噴頭處已準備好耗材。列印邊緣或外圍也可作為裝填用途,這種情况下關閉此設定可以節省時間。" #: fdmprinter.def.json msgctxt "extruder_prime_pos_x label" @@ -4188,9 +3432,7 @@ msgstr "擠出機 X 軸起始位置" #: fdmprinter.def.json msgctxt "extruder_prime_pos_x description" -msgid "" -"The X coordinate of the position where the nozzle primes at the start of " -"printing." +msgid "The X coordinate of the position where the nozzle primes at the start of printing." msgstr "列印開始時,噴頭在 X 軸上初始位置。" #: fdmprinter.def.json @@ -4200,9 +3442,7 @@ msgstr "擠出機 Y 軸起始位置" #: fdmprinter.def.json msgctxt "extruder_prime_pos_y description" -msgid "" -"The Y coordinate of the position where the nozzle primes at the start of " -"printing." +msgid "The Y coordinate of the position where the nozzle primes at the start of printing." msgstr "列印開始時,噴頭在 Y 軸座標上初始位置。" #: fdmprinter.def.json @@ -4212,16 +3452,8 @@ msgstr "列印平台附著類型" #: 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 "" -"幫助改善擠出裝填以及與列印平台附著的不同選項。邊緣會在模型基座周圍添加單層平" -"面區域,以防止翹曲。木筏會在模型底下添加一個有頂板的厚網格。外圍是在模型四周" -"列印的一條線,但並不與模型連接。" +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 "幫助改善擠出裝填以及與列印平台附著的不同選項。邊緣會在模型基座周圍添加單層平面區域,以防止翹曲。木筏會在模型底下添加一個有頂板的厚網格。外圍是在模型四周列印的一條線,但並不與模型連接。" #: fdmprinter.def.json msgctxt "adhesion_type option skirt" @@ -4250,9 +3482,7 @@ msgstr "列印平台附著擠出機" #: fdmprinter.def.json msgctxt "adhesion_extruder_nr description" -msgid "" -"The extruder train to use for printing the skirt/brim/raft. This is used in " -"multi-extrusion." +msgid "The extruder train to use for printing the skirt/brim/raft. This is used in multi-extrusion." msgstr "用於列印外圍/邊緣/木筏的擠出機組。在多擠出機情況下適用。" #: fdmprinter.def.json @@ -4262,12 +3492,8 @@ msgstr "外圍線條數量" #: fdmprinter.def.json msgctxt "skirt_line_count description" -msgid "" -"Multiple skirt lines help to prime your extrusion better for small models. " -"Setting this to 0 will disable the skirt." -msgstr "" -"多條外圍線條有助你在列印小型模型時,更好地裝填的擠出機組。將其設為 0 將關閉外" -"圍。" +msgid "Multiple skirt lines help to prime your extrusion better for small models. Setting this to 0 will disable the skirt." +msgstr "多條外圍線條有助你在列印小型模型時,更好地裝填的擠出機組。將其設為 0 將關閉外圍。" #: fdmprinter.def.json msgctxt "skirt_gap label" @@ -4278,8 +3504,7 @@ msgstr "外圍間距" 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." +"This is the minimum distance. Multiple skirt lines will extend outwards from this distance." msgstr "" "外圍和列印第一層之間的水平距離。\n" "這是最小距離,多個外圍線條將從此距離向外延伸。" @@ -4291,14 +3516,8 @@ msgstr "外圍/邊緣最小長度" #: fdmprinter.def.json msgctxt "skirt_brim_minimal_length description" -msgid "" -"The minimum length of the skirt or brim. If this length is not reached by " -"all skirt or brim lines together, more skirt or brim lines will be added " -"until the minimum length is reached. Note: If the line count is set to 0 " -"this is ignored." -msgstr "" -"外圍或邊緣的最小長度。如果所有外圍或邊緣線條之和都没有達到此長度,則將添加更" -"多外圍或邊緣線條直至達到最小長度。注意:如果線條計數設為 0,則將忽略此選項。" +msgid "The minimum length of the skirt or brim. If this length is not reached by all skirt or brim lines together, more skirt or brim lines will be added until the minimum length is reached. Note: If the line count is set to 0 this is ignored." +msgstr "外圍或邊緣的最小長度。如果所有外圍或邊緣線條之和都没有達到此長度,則將添加更多外圍或邊緣線條直至達到最小長度。注意:如果線條計數設為 0,則將忽略此選項。" #: fdmprinter.def.json msgctxt "brim_width label" @@ -4307,13 +3526,8 @@ msgstr "邊緣寬度" #: fdmprinter.def.json msgctxt "brim_width description" -msgid "" -"The distance from the model to the outermost brim line. A larger brim " -"enhances adhesion to the build plate, but also reduces the effective print " -"area." -msgstr "" -"模型到最外側邊緣線的距離。較大的邊緣可增强與列印平台的附著,但也會減少有效列" -"印區域。" +msgid "The distance from the model to the outermost brim line. A larger brim enhances adhesion to the build plate, but also reduces the effective print area." +msgstr "模型到最外側邊緣線的距離。較大的邊緣可增强與列印平台的附著,但也會減少有效列印區域。" #: fdmprinter.def.json msgctxt "brim_line_count label" @@ -4322,12 +3536,8 @@ msgstr "邊緣線條數量" #: fdmprinter.def.json msgctxt "brim_line_count description" -msgid "" -"The number of lines used for a brim. More brim lines enhance adhesion to the " -"build plate, but also reduces the effective print area." -msgstr "" -"邊緣所用線條數量。更多邊緣線條可增强與列印平台的附著,但也會減少有效列印區" -"域。" +msgid "The number of lines used for a brim. More brim lines enhance adhesion to the build plate, but also reduces the effective print area." +msgstr "邊緣所用線條數量。更多邊緣線條可增强與列印平台的附著,但也會減少有效列印區域。" #: fdmprinter.def.json msgctxt "brim_outside_only label" @@ -4336,13 +3546,8 @@ msgstr "僅在外部列印邊緣" #: fdmprinter.def.json msgctxt "brim_outside_only description" -msgid "" -"Only print the brim on the outside of the model. This reduces the amount of " -"brim you need to remove afterwards, while it doesn't reduce the bed adhesion " -"that much." -msgstr "" -"僅在模型外部列印邊緣。這會減少你之後需要移除的邊緣量,而不會過度影響列印平台" -"附著。" +msgid "Only print the brim on the outside of the model. This reduces the amount of brim you need to remove afterwards, while it doesn't reduce the bed adhesion that much." +msgstr "僅在模型外部列印邊緣。這會減少你之後需要移除的邊緣量,而不會過度影響列印平台附著。" #: fdmprinter.def.json msgctxt "raft_margin label" @@ -4351,13 +3556,8 @@ msgstr "木筏額外邊緣" #: fdmprinter.def.json msgctxt "raft_margin description" -msgid "" -"If the raft is enabled, this is the extra raft area around the model which " -"is also given a raft. Increasing this margin will create a stronger raft " -"while using more material and leaving less area for your print." -msgstr "" -"如果啟用了木筏,在模型周圍也會增加額外邊緣。增大這個邊緣將產生更強的木筏,不" -"過也會使用更多的耗材,並減少印表機的可列印面積。" +msgid "If the raft is enabled, this is the extra raft area around the model which is also given a raft. Increasing this margin will create a stronger raft while using more material and leaving less area for your print." +msgstr "如果啟用了木筏,在模型周圍也會增加額外邊緣。增大這個邊緣將產生更強的木筏,不過也會使用更多的耗材,並減少印表機的可列印面積。" #: fdmprinter.def.json msgctxt "raft_smoothing label" @@ -4366,14 +3566,8 @@ msgstr "木筏平滑處理" #: fdmprinter.def.json msgctxt "raft_smoothing description" -msgid "" -"This setting controls how much inner corners in the raft outline are " -"rounded. Inward corners are rounded to a semi circle with a radius equal to " -"the value given here. This setting also removes holes in the raft outline " -"which are smaller than such a circle." -msgstr "" -"此設定控制木筏輪廓凹角導圓角的量。向內的轉角會被導為圓弧,其半徑等於此設定" -"值。此設定同時可以移除木筏輪廓中半徑小於此設定值的圓孔。" +msgid "This setting controls how much inner corners in the raft outline are rounded. Inward corners are rounded to a semi circle with a radius equal to the value given here. This setting also removes holes in the raft outline which are smaller than such a circle." +msgstr "此設定控制木筏輪廓凹角導圓角的量。向內的轉角會被導為圓弧,其半徑等於此設定值。此設定同時可以移除木筏輪廓中半徑小於此設定值的圓孔。" #: fdmprinter.def.json msgctxt "raft_airgap label" @@ -4382,13 +3576,8 @@ msgstr "木筏間隙" #: fdmprinter.def.json msgctxt "raft_airgap description" -msgid "" -"The gap between the final raft layer and the first layer of the model. Only " -"the first layer is raised by this amount to lower the bonding between the " -"raft layer and the model. Makes it easier to peel off the raft." -msgstr "" -"木筏最後一層與模型第一層之間的間隙。只有第一層被提高了這個距離,以便降低木筏" -"和模型之間的附著。讓木筏更容易剝離。" +msgid "The gap between the final raft layer and the first layer of the model. Only the first layer is raised by this amount to lower the bonding between the raft layer and the model. Makes it easier to peel off the raft." +msgstr "木筏最後一層與模型第一層之間的間隙。只有第一層被提高了這個距離,以便降低木筏和模型之間的附著。讓木筏更容易剝離。" #: fdmprinter.def.json msgctxt "layer_0_z_overlap label" @@ -4397,13 +3586,8 @@ msgstr "起始層 Z 重疊" #: fdmprinter.def.json msgctxt "layer_0_z_overlap description" -msgid "" -"Make the first and second layer of the model overlap in the Z direction to " -"compensate for the filament lost in the airgap. All models above the first " -"model layer will be shifted down by this amount." -msgstr "" -"使模型的第一層和第二層在 Z 方向上重疊以補償在空隙中損失的耗材。第一個模型層上" -"方的所有模型將向下移動此重疊量。" +msgid "Make the first and second layer of the model overlap in the Z direction to compensate for the filament lost in the airgap. All models above the first model layer will be shifted down by this amount." +msgstr "使模型的第一層和第二層在 Z 方向上重疊以補償在空隙中損失的耗材。第一個模型層上方的所有模型將向下移動此重疊量。" #: fdmprinter.def.json msgctxt "raft_surface_layers label" @@ -4412,13 +3596,8 @@ msgstr "木筏頂部層數" #: fdmprinter.def.json msgctxt "raft_surface_layers description" -msgid "" -"The number of top layers on top of the 2nd raft layer. These are fully " -"filled layers that the model sits on. 2 layers result in a smoother top " -"surface than 1." -msgstr "" -"位於木筏中層上方的頂部層數。這是承載模型的完全填充層。兩層會產生比一層更平滑" -"的頂部表面。" +msgid "The number of top layers on top of the 2nd raft layer. These are fully filled layers that the model sits on. 2 layers result in a smoother top surface than 1." +msgstr "位於木筏中層上方的頂部層數。這是承載模型的完全填充層。兩層會產生比一層更平滑的頂部表面。" #: fdmprinter.def.json msgctxt "raft_surface_thickness label" @@ -4437,9 +3616,7 @@ msgstr "木筏頂部線寬" #: fdmprinter.def.json msgctxt "raft_surface_line_width description" -msgid "" -"Width of the lines in the top surface of the raft. These can be thin lines " -"so that the top of the raft becomes smooth." +msgid "Width of the lines in the top surface of the raft. These can be thin lines so that the top of the raft becomes smooth." msgstr "木筏頂部表面的線寬。這些線條可以是細線,以便讓木筏頂部變得平滑。" #: fdmprinter.def.json @@ -4449,9 +3626,7 @@ msgstr "木筏頂部間距" #: fdmprinter.def.json msgctxt "raft_surface_line_spacing description" -msgid "" -"The distance between the raft lines for the top raft layers. The spacing " -"should be equal to the line width, so that the surface is solid." +msgid "The distance between the raft lines for the top raft layers. The spacing should be equal to the line width, so that the surface is solid." msgstr "木筏頂部線條之間的距離。間距應等於線寬,以便打造堅固表面。" #: fdmprinter.def.json @@ -4471,9 +3646,7 @@ msgstr "木筏中層線寬" #: fdmprinter.def.json msgctxt "raft_interface_line_width description" -msgid "" -"Width of the lines in the middle raft layer. Making the second layer extrude " -"more causes the lines to stick to the build plate." +msgid "Width of the lines in the middle raft layer. Making the second layer extrude more causes the lines to stick to the build plate." msgstr "木筏中層的線寬。第二層擠出多一些會讓線條附著在列印平台上。" #: fdmprinter.def.json @@ -4483,13 +3656,8 @@ msgstr "木筏中層間距" #: fdmprinter.def.json msgctxt "raft_interface_line_spacing description" -msgid "" -"The distance between the raft lines for the middle raft layer. The spacing " -"of the middle should be quite wide, while being dense enough to support the " -"top raft layers." -msgstr "" -"木筏中層線條之間的距離。中層的間距應足夠寬,同時也要足夠密集,以便支撐木筏頂" -"部。" +msgid "The distance between the raft lines for the middle raft layer. The spacing of the middle should be quite wide, while being dense enough to support the top raft layers." +msgstr "木筏中層線條之間的距離。中層的間距應足夠寬,同時也要足夠密集,以便支撐木筏頂部。" #: fdmprinter.def.json msgctxt "raft_base_thickness label" @@ -4498,9 +3666,7 @@ msgstr "木筏底部厚度" #: fdmprinter.def.json msgctxt "raft_base_thickness description" -msgid "" -"Layer thickness of the base raft layer. This should be a thick layer which " -"sticks firmly to the printer build plate." +msgid "Layer thickness of the base raft layer. This should be a thick layer which sticks firmly to the printer build plate." msgstr "木筏底部的層厚。本層應為與印表機列印平台穩固附著厚實的一層。" #: fdmprinter.def.json @@ -4510,9 +3676,7 @@ msgstr "木筏底部線寬" #: fdmprinter.def.json msgctxt "raft_base_line_width description" -msgid "" -"Width of the lines in the base raft layer. These should be thick lines to " -"assist in build plate adhesion." +msgid "Width of the lines in the base raft layer. These should be thick lines to assist in build plate adhesion." msgstr "木筏底部的線寬。這些線條應該是粗線,以便協助列印平台附著。" #: fdmprinter.def.json @@ -4522,9 +3686,7 @@ msgstr "木筏底部間距" #: fdmprinter.def.json msgctxt "raft_base_line_spacing description" -msgid "" -"The distance between the raft lines for the base raft layer. Wide spacing " -"makes for easy removal of the raft from the build plate." +msgid "The distance between the raft lines for the base raft layer. Wide spacing makes for easy removal of the raft from the build plate." msgstr "木筏底部線條之間的距離。寬間距方便讓木筏從列印平台移除。" #: fdmprinter.def.json @@ -4544,13 +3706,8 @@ msgstr "木筏頂部列印速度" #: fdmprinter.def.json msgctxt "raft_surface_speed description" -msgid "" -"The speed at which the top raft layers are printed. These should be printed " -"a bit slower, so that the nozzle can slowly smooth out adjacent surface " -"lines." -msgstr "" -"列印木筏頂部的速度。這些層應以稍慢的速度列印,以便噴頭緩慢地整平臨近的表面線" -"條。" +msgid "The speed at which the top raft layers are printed. These should be printed a bit slower, so that the nozzle can slowly smooth out adjacent surface lines." +msgstr "列印木筏頂部的速度。這些層應以稍慢的速度列印,以便噴頭緩慢地整平臨近的表面線條。" #: fdmprinter.def.json msgctxt "raft_interface_speed label" @@ -4559,12 +3716,8 @@ msgstr "木筏中層列印速度" #: fdmprinter.def.json msgctxt "raft_interface_speed description" -msgid "" -"The speed at which the middle raft layer is printed. This should be printed " -"quite slowly, as the volume of material coming out of the nozzle is quite " -"high." -msgstr "" -"列印木筏中層的速度。這些層應以很慢的速度列印,因為噴頭所出的耗材量非常高。" +msgid "The speed at which the middle raft layer is printed. This should be printed quite slowly, as the volume of material coming out of the nozzle is quite high." +msgstr "列印木筏中層的速度。這些層應以很慢的速度列印,因為噴頭所出的耗材量非常高。" #: fdmprinter.def.json msgctxt "raft_base_speed label" @@ -4573,12 +3726,8 @@ msgstr "木筏底部列印速度" #: fdmprinter.def.json msgctxt "raft_base_speed description" -msgid "" -"The speed at which the base raft layer is printed. This should be printed " -"quite slowly, as the volume of material coming out of the nozzle is quite " -"high." -msgstr "" -"列印木筏底部的速度。這些層應以很慢的速度列印,因為噴頭所出的耗材量非常高。" +msgid "The speed at which the base raft layer is printed. This should be printed quite slowly, as the volume of material coming out of the nozzle is quite high." +msgstr "列印木筏底部的速度。這些層應以很慢的速度列印,因為噴頭所出的耗材量非常高。" #: fdmprinter.def.json msgctxt "raft_acceleration label" @@ -4717,9 +3866,7 @@ msgstr "啟用換料塔" #: fdmprinter.def.json msgctxt "prime_tower_enable description" -msgid "" -"Print a tower next to the print which serves to prime the material after " -"each nozzle switch." +msgid "Print a tower next to the print which serves to prime the material after each nozzle switch." msgstr "在列印件旁邊印一個塔,用在每次切換噴頭後填充耗材。" #: fdmprinter.def.json @@ -4739,9 +3886,7 @@ msgstr "換料塔最小體積" #: fdmprinter.def.json msgctxt "prime_tower_min_volume description" -msgid "" -"The minimum volume for each layer of the prime tower in order to purge " -"enough material." +msgid "The minimum volume for each layer of the prime tower in order to purge enough material." msgstr "為了清除足夠的耗材,換料塔每層的最小體積。" #: fdmprinter.def.json @@ -4751,12 +3896,8 @@ msgstr "換料塔厚度" #: fdmprinter.def.json msgctxt "prime_tower_wall_thickness description" -msgid "" -"The thickness of the hollow prime tower. A thickness larger than half the " -"Prime Tower Minimum Volume will result in a dense prime tower." -msgstr "" -"空心換料塔的厚度。如果厚度大於換料塔最小體積的一半,則將形成一個密集的換料" -"塔。" +msgid "The thickness of the hollow prime tower. A thickness larger than half the Prime Tower Minimum Volume will result in a dense prime tower." +msgstr "空心換料塔的厚度。如果厚度大於換料塔最小體積的一半,則將形成一個密集的換料塔。" #: fdmprinter.def.json msgctxt "prime_tower_position_x label" @@ -4785,9 +3926,7 @@ msgstr "換料塔流量" #: fdmprinter.def.json msgctxt "prime_tower_flow description" -msgid "" -"Flow compensation: the amount of material extruded is multiplied by this " -"value." +msgid "Flow compensation: the amount of material extruded is multiplied by this value." msgstr "流量補償:擠出的耗材量乘以此值。" #: fdmprinter.def.json @@ -4797,9 +3936,7 @@ msgstr "在換料塔上擦拭非作用中的噴頭" #: fdmprinter.def.json msgctxt "prime_tower_wipe_enabled description" -msgid "" -"After printing the prime tower with one nozzle, wipe the oozed material from " -"the other nozzle off on the prime tower." +msgid "After printing the prime tower with one nozzle, wipe the oozed material from the other nozzle off on the prime tower." msgstr "在一個噴頭列印換料塔後,在換料塔上擦拭另一個噴頭滲出的耗材。" #: fdmprinter.def.json @@ -4809,13 +3946,8 @@ msgstr "切換後擦拭噴頭" #: fdmprinter.def.json msgctxt "dual_pre_wipe description" -msgid "" -"After switching extruder, wipe the oozed material off of the nozzle on the " -"first thing printed. This performs a safe slow wipe move at a place where " -"the oozed material causes least harm to the surface quality of your print." -msgstr "" -"切換擠出機後,在列印的第一個物件上擦拭噴頭上的滲出耗材。這會在滲出耗材對列印" -"品表面品質造成最小損害的位置進行緩慢安全的擦拭動作。" +msgid "After switching extruder, wipe the oozed material off of the nozzle on the first thing printed. This performs a safe slow wipe move at a place where the oozed material causes least harm to the surface quality of your print." +msgstr "切換擠出機後,在列印的第一個物件上擦拭噴頭上的滲出耗材。這會在滲出耗材對列印品表面品質造成最小損害的位置進行緩慢安全的擦拭動作。" #: fdmprinter.def.json msgctxt "prime_tower_purge_volume label" @@ -4824,13 +3956,8 @@ msgstr "換料塔清洗量" #: fdmprinter.def.json msgctxt "prime_tower_purge_volume description" -msgid "" -"Amount of filament to be purged when wiping on the prime tower. Purging is " -"useful for compensating the filament lost by oozing during inactivity of the " -"nozzle." -msgstr "" -"在換料塔上進行擦拭時要清洗的耗材量。清洗可用於補償在噴頭不活動期間由於滲出而" -"損失的耗材。" +msgid "Amount of filament to be purged when wiping on the prime tower. Purging is useful for compensating the filament lost by oozing during inactivity of the nozzle." +msgstr "在換料塔上進行擦拭時要清洗的耗材量。清洗可用於補償在噴頭不活動期間由於滲出而損失的耗材。" #: fdmprinter.def.json msgctxt "ooze_shield_enabled label" @@ -4839,13 +3966,8 @@ msgstr "啟用擦拭牆" #: fdmprinter.def.json msgctxt "ooze_shield_enabled description" -msgid "" -"Enable exterior ooze shield. This will create a shell around the model which " -"is likely to wipe a second nozzle if it's at the same height as the first " -"nozzle." -msgstr "" -"啟用外部擦拭牆。這將在模型周圍創建一個外殼,如果與第一個噴頭處於相同的高度," -"則可能會擦拭第二個噴頭。" +msgid "Enable exterior ooze shield. This will create a shell around the model which is likely to wipe a second nozzle if it's at the same height as the first nozzle." +msgstr "啟用外部擦拭牆。這將在模型周圍創建一個外殼,如果與第一個噴頭處於相同的高度,則可能會擦拭第二個噴頭。" #: fdmprinter.def.json msgctxt "ooze_shield_angle label" @@ -4854,13 +3976,8 @@ msgstr "擦拭牆角度" #: fdmprinter.def.json msgctxt "ooze_shield_angle description" -msgid "" -"The maximum angle a part in the ooze shield will have. With 0 degrees being " -"vertical, and 90 degrees being horizontal. A smaller angle leads to less " -"failed ooze shields, but more material." -msgstr "" -"擦拭牆中的一部分的最大角度。0度為垂直,90度為水平。較小的角度擦拭效果較好,但" -"是要用更多的耗材。" +msgid "The maximum angle a part in the ooze shield will have. With 0 degrees being vertical, and 90 degrees being horizontal. A smaller angle leads to less failed ooze shields, but more material." +msgstr "擦拭牆中的一部分的最大角度。0度為垂直,90度為水平。較小的角度擦拭效果較好,但是要用更多的耗材。" #: fdmprinter.def.json msgctxt "ooze_shield_dist label" @@ -4889,13 +4006,8 @@ msgstr "合併重疊體積" #: fdmprinter.def.json msgctxt "meshfix_union_all description" -msgid "" -"Ignore the internal geometry arising from overlapping volumes within a mesh " -"and print the volumes as one. This may cause unintended internal cavities to " -"disappear." -msgstr "" -"忽略由網格內的重疊體積產生的內部幾何,並將多個部分作為一個列印。這可能會導致" -"意外的內部孔洞消失。" +msgid "Ignore the internal geometry arising from overlapping volumes within a mesh and print the volumes as one. This may cause unintended internal cavities to disappear." +msgstr "忽略由網格內的重疊體積產生的內部幾何,並將多個部分作為一個列印。這可能會導致意外的內部孔洞消失。" #: fdmprinter.def.json msgctxt "meshfix_union_all_remove_holes label" @@ -4904,13 +4016,8 @@ msgstr "移除所有孔洞" #: fdmprinter.def.json msgctxt "meshfix_union_all_remove_holes description" -msgid "" -"Remove the holes in each layer and keep only the outside shape. This will " -"ignore any invisible internal geometry. However, it also ignores layer holes " -"which can be viewed from above or below." -msgstr "" -"移除每層的孔洞,僅保留外部形狀。這會忽略任何不可見的內部幾何。但是,也會忽略" -"可從上方或下方看到的層孔洞。" +msgid "Remove the holes in each layer and keep only the outside shape. This will ignore any invisible internal geometry. However, it also ignores layer holes which can be viewed from above or below." +msgstr "移除每層的孔洞,僅保留外部形狀。這會忽略任何不可見的內部幾何。但是,也會忽略可從上方或下方看到的層孔洞。" #: fdmprinter.def.json msgctxt "meshfix_extensive_stitching label" @@ -4919,13 +4026,8 @@ msgstr "廣泛縫合" #: fdmprinter.def.json msgctxt "meshfix_extensive_stitching description" -msgid "" -"Extensive stitching tries to stitch up open holes in the mesh by closing the " -"hole with touching polygons. This option can introduce a lot of processing " -"time." -msgstr "" -"廣泛縫合嘗試通過接觸多邊形來閉合孔洞,以此縫合網格中的開孔。此選項可能會產生" -"大量的處理時間。" +msgid "Extensive stitching tries to stitch up open holes in the mesh by closing the hole with touching polygons. This option can introduce a lot of processing time." +msgstr "廣泛縫合嘗試通過接觸多邊形來閉合孔洞,以此縫合網格中的開孔。此選項可能會產生大量的處理時間。" #: fdmprinter.def.json msgctxt "meshfix_keep_open_polygons label" @@ -4934,31 +4036,8 @@ msgstr "保持斷開表面" #: fdmprinter.def.json msgctxt "meshfix_keep_open_polygons description" -msgid "" -"Normally Cura tries to stitch up small holes in the mesh and remove parts of " -"a layer with big holes. Enabling this option keeps those parts which cannot " -"be stitched. This option should be used as a last resort option when " -"everything else fails to produce proper GCode." -msgstr "" -"一般情况下,Cura 會嘗試縫合網格中的小孔,並移除有大孔的部分層。啟用此選項將保" -"留那些無法縫合的部分。當其他所有方法都無法產生正確的 GCode 時,該選項應該被用" -"作最後手段。" - -#: 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 的速度,並通過移除無法處理的網格細節來增加切片速度。" +msgid "Normally Cura tries to stitch up small holes in the mesh and remove parts of a layer with big holes. Enabling this option keeps those parts which cannot be stitched. This option should be used as a last resort option when everything else fails to produce proper GCode." +msgstr "一般情况下,Cura 會嘗試縫合網格中的小孔,並移除有大孔的部分層。啟用此選項將保留那些無法縫合的部分。當其他所有方法都無法產生正確的 GCode 時,該選項應該被用作最後手段。" #: fdmprinter.def.json msgctxt "multiple_mesh_overlap label" @@ -4967,9 +4046,7 @@ msgstr "合併網格重疊" #: fdmprinter.def.json msgctxt "multiple_mesh_overlap description" -msgid "" -"Make meshes which are touching each other overlap a bit. This makes them " -"bond together better." +msgid "Make meshes which are touching each other overlap a bit. This makes them bond together better." msgstr "使彼此接觸的網格稍微重疊。使他們能更緊密地結合在一起。" #: fdmprinter.def.json @@ -4979,12 +4056,8 @@ msgstr "刪除網格交集部分" #: fdmprinter.def.json msgctxt "carve_multiple_volumes description" -msgid "" -"Remove areas where multiple meshes are overlapping with each other. This may " -"be used if merged dual material objects overlap with each other." -msgstr "" -"刪除多個網格彼此重疊的區域。如果合併的雙重耗材對象彼此重疊,則可以使用此選" -"項。" +msgid "Remove areas where multiple meshes are overlapping with each other. This may be used if merged dual material objects overlap with each other." +msgstr "刪除多個網格彼此重疊的區域。如果合併的雙重耗材對象彼此重疊,則可以使用此選項。" #: fdmprinter.def.json msgctxt "alternate_carve_order label" @@ -4993,15 +4066,8 @@ msgstr "交互移除網格重疊部分" #: fdmprinter.def.json msgctxt "alternate_carve_order description" -msgid "" -"Switch to which mesh intersecting volumes will belong with every layer, so " -"that the overlapping meshes become interwoven. Turning this setting off will " -"cause one of the meshes to obtain all of the volume in the overlap, while it " -"is removed from the other meshes." -msgstr "" -"將網格重疊的部分,交互的在每一層中歸屬到不同的網格,以便重疊的網格交織在一" -"起。關閉此設定將使其中一個網格物體獲得重疊中的所有體積,而從其他網格物體中移" -"除。" +msgid "Switch to which mesh intersecting volumes will belong with every layer, so that the overlapping meshes become interwoven. Turning this setting off will cause one of the meshes to obtain all of the volume in the overlap, while it is removed from the other meshes." +msgstr "將網格重疊的部分,交互的在每一層中歸屬到不同的網格,以便重疊的網格交織在一起。關閉此設定將使其中一個網格物體獲得重疊中的所有體積,而從其他網格物體中移除。" #: fdmprinter.def.json msgctxt "remove_empty_first_layers label" @@ -5010,13 +4076,8 @@ msgstr "移除空的第一層" #: fdmprinter.def.json 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 "" -"如果可列印的第一層下方有空的層,將其移除。假如「切片公差」設定為「排除」或" -"「中間」,關閉此設定可能會導致空的第一層。" +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 "blackmagic label" @@ -5035,16 +4096,8 @@ msgstr "列印順序" #: fdmprinter.def.json msgctxt "print_sequence description" -msgid "" -"Whether to print all models one layer at a time or to wait for one model to " -"finish, before moving on to the next. One at a time mode is only possible if " -"all models are separated in such a way that the whole print head can move in " -"between and all models are lower than the distance between the nozzle and " -"the X/Y axes." -msgstr "" -"選擇一次列印一層中的所有模型或等待一個模型完成後再轉到下一個模型。排隊模式只" -"有在所有模型以一種整個列印頭可以在各個模型之間移動的方式分隔開,且所有模型都" -"低於噴頭和 X / Y 軸之間距離的情况下可用。" +msgid "Whether to print all models one layer at a time or to wait for one model to finish, before moving on to the next. One at a time mode is only possible if all models are separated in such a way that the whole print head can move in between and all models are lower than the distance between the nozzle and the X/Y axes." +msgstr "選擇一次列印一層中的所有模型或等待一個模型完成後再轉到下一個模型。排隊模式只有在所有模型以一種整個列印頭可以在各個模型之間移動的方式分隔開,且所有模型都低於噴頭和 X / Y 軸之間距離的情况下可用。" #: fdmprinter.def.json msgctxt "print_sequence option all_at_once" @@ -5063,13 +4116,8 @@ msgstr "填充網格" #: fdmprinter.def.json msgctxt "infill_mesh description" -msgid "" -"Use this mesh to modify the infill of other meshes with which it overlaps. " -"Replaces infill regions of other meshes with regions for this mesh. It's " -"suggested to only print one Wall and no Top/Bottom Skin for this mesh." -msgstr "" -"使用此網格修改與其重疊的其他網格的填充。利用此網格的區域替換其他網格的填充區" -"域。建議僅為此網格列印一個壁,而不列印頂部/底部表層。" +msgid "Use this mesh to modify the infill of other meshes with which it overlaps. Replaces infill regions of other meshes with regions for this mesh. It's suggested to only print one Wall and no Top/Bottom Skin for this mesh." +msgstr "使用此網格修改與其重疊的其他網格的填充。利用此網格的區域替換其他網格的填充區域。建議僅為此網格列印一個壁,而不列印頂部/底部表層。" #: fdmprinter.def.json msgctxt "infill_mesh_order label" @@ -5078,13 +4126,8 @@ msgstr "填充網格順序" #: fdmprinter.def.json msgctxt "infill_mesh_order description" -msgid "" -"Determines which infill mesh is inside the infill of another infill mesh. An " -"infill mesh with a higher order will modify the infill of infill meshes with " -"lower order and normal meshes." -msgstr "" -"確定哪個填充網格在另一個填充網格的填充內。順序較高的填充網格將修改順序較低的" -"填充網格以及普通網格的填充。" +msgid "Determines which infill mesh is inside the infill of another infill mesh. An infill mesh with a higher order will modify the infill of infill meshes with lower order and normal meshes." +msgstr "確定哪個填充網格在另一個填充網格的填充內。順序較高的填充網格將修改順序較低的填充網格以及普通網格的填充。" #: fdmprinter.def.json msgctxt "cutting_mesh label" @@ -5093,13 +4136,8 @@ msgstr "切割網格" #: fdmprinter.def.json msgctxt "cutting_mesh description" -msgid "" -"Limit the volume of this mesh to within other meshes. You can use this to " -"make certain areas of one mesh print with different settings and with a " -"whole different extruder." -msgstr "" -"將此網格的體積限制在其他網格內。你可以使用它來制作採用不同的設定以及完全不同" -"的擠出機的網格列印的特定區域。" +msgid "Limit the volume of this mesh to within other meshes. You can use this to make certain areas of one mesh print with different settings and with a whole different extruder." +msgstr "將此網格的體積限制在其他網格內。你可以使用它來制作採用不同的設定以及完全不同的擠出機的網格列印的特定區域。" #: fdmprinter.def.json msgctxt "mold_enabled label" @@ -5108,9 +4146,7 @@ msgstr "模具" #: fdmprinter.def.json msgctxt "mold_enabled description" -msgid "" -"Print models as a mold, which can be cast in order to get a model which " -"resembles the models on the build plate." +msgid "Print models as a mold, which can be cast in order to get a model which resembles the models on the build plate." msgstr "將模型作為模具列印,可進行鑄造,以便獲取與列印平台上的模型類似的模型。" #: fdmprinter.def.json @@ -5120,9 +4156,7 @@ msgstr "最小模具寬度" #: fdmprinter.def.json msgctxt "mold_width description" -msgid "" -"The minimal distance between the ouside of the mold and the outside of the " -"model." +msgid "The minimal distance between the ouside of the mold and the outside of the model." msgstr "模具外側和模型外側之間的最小距離。" #: fdmprinter.def.json @@ -5142,13 +4176,8 @@ msgstr "模具角度" #: fdmprinter.def.json msgctxt "mold_angle description" -msgid "" -"The angle of overhang of the outer walls created for the mold. 0° will make " -"the outer shell of the mold vertical, while 90° will make the outside of the " -"model follow the contour of the model." -msgstr "" -"為模具創建的外壁的懸垂角度。0° 將使模具的外殼垂直,而 90° 將使模型的外部遵循" -"模型的輪廓。" +msgid "The angle of overhang of the outer walls created for the mold. 0° will make the outer shell of the mold vertical, while 90° will make the outside of the model follow the contour of the model." +msgstr "為模具創建的外壁的懸垂角度。0° 將使模具的外殼垂直,而 90° 將使模型的外部遵循模型的輪廓。" #: fdmprinter.def.json msgctxt "support_mesh label" @@ -5157,23 +4186,9 @@ msgstr "支撐網格" #: fdmprinter.def.json msgctxt "support_mesh description" -msgid "" -"Use this mesh to specify support areas. This can be used to generate support " -"structure." +msgid "Use this mesh to specify support areas. This can be used to generate support structure." msgstr "使用此網格指定支撐區域。可用於產生支撐結構。" -#: fdmprinter.def.json -msgctxt "support_mesh_drop_down label" -msgid "Drop Down Support Mesh" -msgstr "下拉式支撐網格" - -#: fdmprinter.def.json -msgctxt "support_mesh_drop_down description" -msgid "" -"Make support everywhere below the support mesh, so that there's no overhang " -"in the support mesh." -msgstr "在支撐網格下方的所有位置進行支撐,讓支撐網格中没有懸垂。" - #: fdmprinter.def.json msgctxt "anti_overhang_mesh label" msgid "Anti Overhang Mesh" @@ -5181,12 +4196,8 @@ msgstr "防懸網格" #: fdmprinter.def.json msgctxt "anti_overhang_mesh description" -msgid "" -"Use this mesh to specify where no part of the model should be detected as " -"overhang. This can be used to remove unwanted support structure." -msgstr "" -"使用此網格指定模型的任何部分不應被檢測為懸垂的區域。可用於移除不需要的支撐結" -"構。" +msgid "Use this mesh to specify where no part of the model should be detected as overhang. This can be used to remove unwanted support structure." +msgstr "使用此網格指定模型的任何部分不應被檢測為懸垂的區域。可用於移除不需要的支撐結構。" #: fdmprinter.def.json msgctxt "magic_mesh_surface_mode label" @@ -5195,16 +4206,8 @@ msgstr "表面模式" #: fdmprinter.def.json msgctxt "magic_mesh_surface_mode description" -msgid "" -"Treat the model as a surface only, a volume, or volumes with loose surfaces. " -"The normal print mode only prints enclosed volumes. \"Surface\" prints a " -"single wall tracing the mesh surface with no infill and no top/bottom skin. " -"\"Both\" prints enclosed volumes like normal and any remaining polygons as " -"surfaces." -msgstr "" -"將模型作為僅表面、一個空間或多個具有鬆散表面的空間處理。“正常”僅列印封閉的空" -"間。“表面”列印模型表面的單壁,没有填充,也没有頂部/底部表層。“兩者”將封閉空間" -"正常列印,並將任何剩餘多邊形作為表面列印。" +msgid "Treat the model as a surface only, a volume, or volumes with loose surfaces. The normal print mode only prints enclosed volumes. \"Surface\" prints a single wall tracing the mesh surface with no infill and no top/bottom skin. \"Both\" prints enclosed volumes like normal and any remaining polygons as surfaces." +msgstr "將模型作為僅表面、一個空間或多個具有鬆散表面的空間處理。“正常”僅列印封閉的空間。“表面”列印模型表面的單壁,没有填充,也没有頂部/底部表層。“兩者”將封閉空間正常列印,並將任何剩餘多邊形作為表面列印。" #: fdmprinter.def.json msgctxt "magic_mesh_surface_mode option normal" @@ -5228,15 +4231,8 @@ msgstr "螺旋列印外輪廓" #: fdmprinter.def.json msgctxt "magic_spiralize description" -msgid "" -"Spiralize smooths out the Z move of the outer edge. This will create a " -"steady Z increase over the whole print. This feature turns a solid model " -"into a single walled print with a solid bottom. This feature should only be " -"enabled when each layer only contains a single part." -msgstr "" -"螺旋列印實現外部邊緣的平滑 Z 移動。這會在整個列印上改成 Z 軸穩定增動。該功能" -"會將一個實心模型轉變為具有實體底部的單壁列印。只有在當每一層只包含一個封閉面" -"時才應啟用此功能。" +msgid "Spiralize smooths out the Z move of the outer edge. This will create a steady Z increase over the whole print. This feature turns a solid model into a single walled print with a solid bottom. This feature should only be enabled when each layer only contains a single part." +msgstr "螺旋列印實現外部邊緣的平滑 Z 移動。這會在整個列印上改成 Z 軸穩定增動。該功能會將一個實心模型轉變為具有實體底部的單壁列印。只有在當每一層只包含一個封閉面時才應啟用此功能。" #: fdmprinter.def.json msgctxt "smooth_spiralized_contours label" @@ -5245,13 +4241,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" @@ -5260,18 +4251,8 @@ msgstr "相對模式擠出" #: fdmprinter.def.json msgctxt "relative_extrusion description" -msgid "" -"Use relative extrusion rather than absolute extrusion. Using relative E-" -"steps makes for easier post-processing of the Gcode. However, it's not " -"supported by all printers and it may produce very slight deviations in the " -"amount of deposited material compared to absolute E-steps. Irrespective of " -"this setting, the extrusion mode will always be set to absolute before any " -"Gcode script is output." -msgstr "" -"擠出控制使用相對模式而非絕對模式。使用相對的 E 步數使 G-code 在後處理上更為簡" -"便。然而並非所有印表機都支援此模式,而且和絕對的 E 步數相比,它可能在沉積耗材" -"的使用量上產生輕微的偏差。無論此設定為何,在輸出任何 G-code 腳本之前,擠出模" -"式將始終設定為絕對模式。" +msgid "Use relative extrusion rather than absolute extrusion. Using relative E-steps makes for easier post-processing of the Gcode. However, it's not supported by all printers and it may produce very slight deviations in the amount of deposited material compared to absolute E-steps. Irrespective of this setting, the extrusion mode will always be set to absolute before any Gcode script is output." +msgstr "擠出控制使用相對模式而非絕對模式。使用相對的 E 步數使 G-code 在後處理上更為簡便。然而並非所有印表機都支援此模式,而且和絕對的 E 步數相比,它可能在沉積耗材的使用量上產生輕微的偏差。無論此設定為何,在輸出任何 G-code 腳本之前,擠出模式將始終設定為絕對模式。" #: fdmprinter.def.json msgctxt "experimental label" @@ -5284,20 +4265,194 @@ msgid "experimental!" msgstr "實驗性!" #: fdmprinter.def.json -msgctxt "optimize_wall_printing_order label" -msgid "Optimize Wall Printing Order" -msgstr "最佳化牆壁列印順序" +msgctxt "support_tree_enable label" +msgid "Tree Support" +msgstr "樹狀支撐" #: fdmprinter.def.json -msgctxt "optimize_wall_printing_order description" -msgid "" -"Optimize the order in which walls are printed so as to reduce the number of " -"retractions and the distance travelled. Most parts will benefit from this " -"being enabled but some may actually take longer so please compare the print " -"time estimates with and without optimization." -msgstr "" -"最佳化牆壁列印順序以減少回抽的次數和空跑的距離。啟用此功能對大多數是有益的," -"但有的可能會花更多的時間。所以請比較有無最佳化的估算時間進行確認。" +msgctxt "support_tree_enable description" +msgid "Generate a tree-like support with branches that support your print. This may reduce material usage and print time, but greatly increases slicing time." +msgstr "產生帶有樹枝樹狀支撐結構支撐你的模型。這可能可以減少耗材的使用和列印的時間,但會大大的增加切片時間。" + +#: fdmprinter.def.json +msgctxt "support_tree_angle label" +msgid "Tree Support Branch Angle" +msgstr "樹狀支撐樹枝角度" + +#: fdmprinter.def.json +msgctxt "support_tree_angle description" +msgid "The angle of the branches. Use a lower angle to make them more vertical and more stable. Use a higher angle to be able to have more reach." +msgstr "樹枝的角度。使用較小的角度讓樹枝較垂直且較平穩。使用較大的角度則可以支撐較大的範圍。" + +#: fdmprinter.def.json +msgctxt "support_tree_branch_distance label" +msgid "Tree Support Branch Distance" +msgstr "樹狀支撐樹枝距離" + +#: fdmprinter.def.json +msgctxt "support_tree_branch_distance description" +msgid "How far apart the branches need to be when they touch the model. Making this distance small will cause the tree support to touch the model at more points, causing better overhang but making support harder to remove." +msgstr "樹支與模型接觸的點與點之間的間隔距離。較小的距離會讓支撐和模型有較多的接觸點,會有較佳的懸垂但支撐也較難移除。" + +#: fdmprinter.def.json +msgctxt "support_tree_branch_diameter label" +msgid "Tree Support Branch Diameter" +msgstr "樹狀支撐樹枝直徑" + +#: fdmprinter.def.json +msgctxt "support_tree_branch_diameter description" +msgid "The diameter of the thinnest branches of tree support. Thicker branches are more sturdy. Branches towards the base will be thicker than this." +msgstr "樹狀支撐中最細樹枝的直徑。越粗的樹枝越堅固。底部的樹枝會比這更粗。" + +#: fdmprinter.def.json +msgctxt "support_tree_branch_diameter_angle label" +msgid "Tree Support Branch Diameter Angle" +msgstr "樹狀支撐樹枝外徑角度" + +#: fdmprinter.def.json +msgctxt "support_tree_branch_diameter_angle description" +msgid "The angle of the branches' diameter as they gradually become thicker towards the bottom. An angle of 0 will cause the branches to have uniform thickness over their length. A bit of an angle can increase stability of the tree support." +msgstr "樹枝向底部逐漸變粗時,外徑變化的角度。設為 0 可讓整條樹枝的粗細一致, 而有點角度可增加樹狀支撐的穩定性。" + +#: fdmprinter.def.json +msgctxt "support_tree_collision_resolution label" +msgid "Tree Support Collision Resolution" +msgstr "樹狀支撐碰撞計算精度" + +#: fdmprinter.def.json +msgctxt "support_tree_collision_resolution description" +msgid "Resolution to compute collisions with to avoid hitting the model. Setting this lower will produce more accurate trees that fail less often, but increases slicing time dramatically." +msgstr "計算避免碰撞模型的計算精度。設定較低的值可產生較精確的樹狀支撐,這樣的支撐問題較少但會嚴重的增加切片所需的時間。" + +#: fdmprinter.def.json +msgctxt "support_tree_wall_thickness label" +msgid "Tree Support Wall Thickness" +msgstr "樹狀支撐牆厚" + +#: fdmprinter.def.json +msgctxt "support_tree_wall_thickness description" +msgid "The thickness of the walls of the branches of tree support. Thicker walls take longer to print but don't fall over as easily." +msgstr "樹狀支撐樹枝的牆壁厚度。較厚的牆壁需要花較長的時間列印,但較不易倒下。" + +#: fdmprinter.def.json +msgctxt "support_tree_wall_count label" +msgid "Tree Support Wall Line Count" +msgstr "樹狀支撐牆壁線條數量" + +#: fdmprinter.def.json +msgctxt "support_tree_wall_count description" +msgid "The number of walls of the branches of tree support. Thicker walls take longer to print but don't fall over as easily." +msgstr "樹狀支撐樹枝牆壁的圈數。較厚的牆壁需要花較長的時間列印,但較不易倒下。" + +#: fdmprinter.def.json +msgctxt "slicing_tolerance label" +msgid "Slicing Tolerance" +msgstr "切片公差" + +#: fdmprinter.def.json +msgctxt "slicing_tolerance description" +msgid "How to slice layers with diagonal surfaces. The areas of a layer can be generated based on where the middle of the layer intersects the surface (Middle). Alternatively each layer can have the areas which fall inside of the volume throughout the height of the layer (Exclusive) or a layer has the areas which fall inside anywhere within the layer (Inclusive). Exclusive retains the most details, Inclusive makes for the best fit and Middle takes the least time to process." +msgstr "如何使用傾斜的外表切片。可以使用層高的中間與外表相交產生的截面(中間)。也可以使用該層高完全不超出模型體積的區域(排除),或是該層高的模型投影區域(包含)。「排除」保留最多的細節,「包含」有最符合的外形,而「中間」花最少的運算時間。" + +#: fdmprinter.def.json +msgctxt "slicing_tolerance option middle" +msgid "Middle" +msgstr "中間" + +#: fdmprinter.def.json +msgctxt "slicing_tolerance option exclusive" +msgid "Exclusive" +msgstr "排除" + +#: fdmprinter.def.json +msgctxt "slicing_tolerance option inclusive" +msgid "Inclusive" +msgstr "包含" + +#: fdmprinter.def.json +msgctxt "roofing_line_width label" +msgid "Top Surface Skin Line Width" +msgstr "頂部表層線寬" + +#: fdmprinter.def.json +msgctxt "roofing_line_width description" +msgid "Width of a single line of the areas at the top of the print." +msgstr "列印頂部區域單一線寬。" + +#: fdmprinter.def.json +msgctxt "roofing_pattern label" +msgid "Top Surface Skin Pattern" +msgstr "頂部表層列印樣式" + +#: fdmprinter.def.json +msgctxt "roofing_pattern description" +msgid "The pattern of the top most layers." +msgstr "最頂部列印樣式。" + +#: fdmprinter.def.json +msgctxt "roofing_pattern option lines" +msgid "Lines" +msgstr "線條" + +#: fdmprinter.def.json +msgctxt "roofing_pattern option concentric" +msgid "Concentric" +msgstr "同心" + +#: fdmprinter.def.json +msgctxt "roofing_pattern option zigzag" +msgid "Zig Zag" +msgstr "鋸齒狀" + +#: fdmprinter.def.json +msgctxt "roofing_angles label" +msgid "Top Surface Skin Line Directions" +msgstr "頂部表層線條方向" + +#: fdmprinter.def.json +msgctxt "roofing_angles description" +msgid "A list of integer line directions to use when the top surface skin layers use the lines or zig zag pattern. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the traditional default angles (45 and 135 degrees)." +msgstr "當頂部表層採用線條或鋸齒狀的列印樣式時使用的整數線條方向的列表。列表中的元素隨層的進度依次使用,當達到列表末尾時,它將從頭開始。列表項以逗號分隔,整個列表包含在方括號中。預設使用傳統的預設角度(45 和 135 度)。" + +#: fdmprinter.def.json +msgctxt "infill_enable_travel_optimization label" +msgid "Infill Travel Optimization" +msgstr "填充空跑最佳化" + +#: fdmprinter.def.json +msgctxt "infill_enable_travel_optimization description" +msgid "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." +msgstr "當功能啟用時,填充線條的列印順序會對降低空跑距離做最佳化。所能減少的空跑時間取決於模型、填充樣式、填充密度等。請注意,對於有很多小型填充區域的模型,切片時間可能會大量增加。" + +#: fdmprinter.def.json +msgctxt "material_flow_dependent_temperature label" +msgid "Auto Temperature" +msgstr "自動溫度" + +#: fdmprinter.def.json +msgctxt "material_flow_dependent_temperature description" +msgid "Change the temperature for each layer automatically with the average flow speed of that layer." +msgstr "根據每一層的平均流速自動更改每層的溫度。" + +#: fdmprinter.def.json +msgctxt "material_flow_temp_graph label" +msgid "Flow Temperature Graph" +msgstr "流量溫度圖" + +#: fdmprinter.def.json +msgctxt "material_flow_temp_graph description" +msgid "Data linking material flow (in mm3 per second) to temperature (degrees Celsius)." +msgstr "數據連接耗材流量(mm3/s)到溫度(攝氏)。" + +#: 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 "support_skip_some_zags label" @@ -5306,11 +4461,8 @@ msgstr "將支撐拆成塊狀" #: fdmprinter.def.json msgctxt "support_skip_some_zags description" -msgid "" -"Skip some support line connections to make the support structure easier to " -"break away. This setting is applicable to the Zig Zag support infill pattern." -msgstr "" -"省略支撐的部分連接線,讓支撐結構更容易拆除。此設定適用於鋸齒狀的支撐樣式。" +msgid "Skip some support line connections to make the support structure easier to break away. This setting is applicable to the Zig Zag support infill pattern." +msgstr "省略支撐的部分連接線,讓支撐結構更容易拆除。此設定適用於鋸齒狀的支撐樣式。" #: fdmprinter.def.json msgctxt "support_skip_zag_per_mm label" @@ -5319,9 +4471,7 @@ msgstr "支撐塊大小" #: fdmprinter.def.json msgctxt "support_skip_zag_per_mm description" -msgid "" -"Leave out a connection between support lines once every N millimeter to make " -"the support structure easier to break away." +msgid "Leave out a connection between support lines once every N millimeter to make the support structure easier to break away." msgstr "每隔 N 毫米省略一次連接線,讓支撐結構更容易拆除。" #: fdmprinter.def.json @@ -5331,9 +4481,7 @@ msgstr "支撐塊線條數" #: fdmprinter.def.json msgctxt "support_zag_skip_count description" -msgid "" -"Skip one in every N connection lines to make the support structure easier to " -"break away." +msgid "Skip one in every N connection lines to make the support structure easier to break away." msgstr "每隔 N 個連接線省略一次,讓支撐結構更容易拆除。" #: fdmprinter.def.json @@ -5343,12 +4491,8 @@ msgstr "啟用防風罩" #: fdmprinter.def.json msgctxt "draft_shield_enabled description" -msgid "" -"This will create a wall around the model, which traps (hot) air and shields " -"against exterior airflow. Especially useful for materials which warp easily." -msgstr "" -"這將在模型周圍建立一個牆壁留住(熱)空氣並遮住外部氣流。對於容易翹曲的耗材非" -"常有用。" +msgid "This will create a wall around the model, which traps (hot) air and shields against exterior airflow. Especially useful for materials which warp easily." +msgstr "這將在模型周圍建立一個牆壁留住(熱)空氣並遮住外部氣流。對於容易翹曲的耗材非常有用。" #: fdmprinter.def.json msgctxt "draft_shield_dist label" @@ -5367,9 +4511,7 @@ msgstr "防風罩限高" #: fdmprinter.def.json msgctxt "draft_shield_height_limitation description" -msgid "" -"Set the height of the draft shield. Choose to print the draft shield at the " -"full height of the model or at a limited height." +msgid "Set the height of the draft shield. Choose to print the draft shield at the full height of the model or at a limited height." msgstr "設定防風罩的高度。選擇防風罩與模型同高或只列印到限制的高度。" #: fdmprinter.def.json @@ -5389,9 +4531,7 @@ msgstr "防風罩高度" #: fdmprinter.def.json msgctxt "draft_shield_height description" -msgid "" -"Height limitation of the draft shield. Above this height no draft shield " -"will be printed." +msgid "Height limitation of the draft shield. Above this height no draft shield will be printed." msgstr "防風罩的高度限制。超過這個高度就不再列印防風罩。" #: fdmprinter.def.json @@ -5401,13 +4541,8 @@ msgstr "使懸垂可列印" #: fdmprinter.def.json msgctxt "conical_overhang_enabled description" -msgid "" -"Change the geometry of the printed model such that minimal support is " -"required. Steep overhangs will become shallow overhangs. Overhanging areas " -"will drop down to become more vertical." -msgstr "" -"更改列印模型的幾何形狀,以最大程度減少需要的支撐。陡峭的懸垂物將變淺。懸垂區" -"域將下降變得更垂直。" +msgid "Change the geometry of the printed model such that minimal support is required. Steep overhangs will become shallow overhangs. Overhanging areas will drop down to become more vertical." +msgstr "更改列印模型的幾何形狀,以最大程度減少需要的支撐。陡峭的懸垂物將變淺。懸垂區域將下降變得更垂直。" #: fdmprinter.def.json msgctxt "conical_overhang_angle label" @@ -5416,13 +4551,8 @@ msgstr "最大模型角度" #: fdmprinter.def.json msgctxt "conical_overhang_angle description" -msgid "" -"The maximum angle of overhangs after the they have been made printable. At a " -"value of 0° all overhangs are replaced by a piece of model connected to the " -"build plate, 90° will not change the model in any way." -msgstr "" -"在懸垂變得可列印後懸垂的最大角度。當該值為 0° 時,所有懸垂將被與列印平台連接" -"的模型的一個部分替代,如果為 90° 時,不會以任何方式更改模型。" +msgid "The maximum angle of overhangs after the they have been made printable. At a value of 0° all overhangs are replaced by a piece of model connected to the build plate, 90° will not change the model in any way." +msgstr "在懸垂變得可列印後懸垂的最大角度。當該值為 0° 時,所有懸垂將被與列印平台連接的模型的一個部分替代,如果為 90° 時,不會以任何方式更改模型。" #: fdmprinter.def.json msgctxt "coasting_enable label" @@ -5431,13 +4561,8 @@ msgstr "啟用滑行" #: fdmprinter.def.json msgctxt "coasting_enable description" -msgid "" -"Coasting replaces the last part of an extrusion path with a travel path. The " -"oozed material is used to print the last piece of the extrusion path in " -"order to reduce stringing." -msgstr "" -"滑行會用一個空跑路徑替代擠出路徑的最後部分。滲出耗材用於列印擠出路徑的最後部" -"分,以便減少牽絲。" +msgid "Coasting replaces the last part of an extrusion path with a travel path. The oozed material is used to print the last piece of the extrusion path in order to reduce stringing." +msgstr "滑行會用一個空跑路徑替代擠出路徑的最後部分。滲出耗材用於列印擠出路徑的最後部分,以便減少牽絲。" #: fdmprinter.def.json msgctxt "coasting_volume label" @@ -5446,9 +4571,7 @@ msgstr "滑行體積" #: fdmprinter.def.json msgctxt "coasting_volume description" -msgid "" -"The volume otherwise oozed. This value should generally be close to the " -"nozzle diameter cubed." +msgid "The volume otherwise oozed. This value should generally be close to the nozzle diameter cubed." msgstr "不進行滑行時,會滲出的體積。該值一般應接近噴頭直徑的立方。" #: fdmprinter.def.json @@ -5458,14 +4581,8 @@ msgstr "滑行前最小體積" #: fdmprinter.def.json msgctxt "coasting_min_volume description" -msgid "" -"The smallest volume an extrusion path should have before allowing coasting. " -"For smaller extrusion paths, less pressure has been built up in the bowden " -"tube and so the coasted volume is scaled linearly. This value should always " -"be larger than the Coasting Volume." -msgstr "" -"可以進行滑行前,擠出路徑應有的最小體積。對於較小的擠出路徑,喉管內累積的壓力" -"較少,因此滑行體積採用線性比率縮小。該值應大於滑行體積。" +msgid "The smallest volume an extrusion path should have before allowing coasting. For smaller extrusion paths, less pressure has been built up in the bowden tube and so the coasted volume is scaled linearly. This value should always be larger than the Coasting Volume." +msgstr "可以進行滑行前,擠出路徑應有的最小體積。對於較小的擠出路徑,喉管內累積的壓力較少,因此滑行體積採用線性比率縮小。該值應大於滑行體積。" #: fdmprinter.def.json msgctxt "coasting_speed label" @@ -5474,13 +4591,8 @@ msgstr "滑行速度" #: fdmprinter.def.json 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% 的值,因為在滑行移動期" -"間喉管中的壓力會下降。" +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" @@ -5489,13 +4601,8 @@ 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 方" -"向。" +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" @@ -5504,9 +4611,7 @@ msgstr "立體十字形氣囊大小" #: fdmprinter.def.json msgctxt "cross_infill_pocket_size description" -msgid "" -"The size of pockets at four-way crossings in the cross 3D pattern at heights " -"where the pattern is touching itself." +msgid "The size of pockets at four-way crossings in the cross 3D pattern at heights where the pattern is touching itself." msgstr "立體十字形在樣式閉合的高度處,中央十字交叉的氣囊大小。" #: fdmprinter.def.json @@ -5516,13 +4621,8 @@ msgstr "交錯立體十字形氣囊" #: fdmprinter.def.json msgctxt "cross_infill_apply_pockets_alternatingly description" -msgid "" -"Only apply pockets at half of the four-way crossings in the cross 3D pattern " -"and alternate the location of the pockets between heights where the pattern " -"is touching itself." -msgstr "" -"在立體十字形樣式中,只在半數樣式閉合的中央十字交叉處使用氣囊,並在高度上交錯" -"排列。" +msgid "Only apply pockets at half of the four-way crossings in the cross 3D pattern and alternate the location of the pockets between heights where the pattern is touching itself." +msgstr "在立體十字形樣式中,只在半數樣式閉合的中央十字交叉處使用氣囊,並在高度上交錯排列。" #: fdmprinter.def.json msgctxt "spaghetti_infill_enabled label" @@ -5531,13 +4631,8 @@ msgstr "義大利麵式填充" #: fdmprinter.def.json msgctxt "spaghetti_infill_enabled description" -msgid "" -"Print the infill every so often, so that the filament will curl up " -"chaotically inside the object. This reduces print time, but the behaviour is " -"rather unpredictable." -msgstr "" -"經常列印填充,使得耗材在模型內部混亂地捲曲。這會縮短列印時間,但行為會難以預" -"測。" +msgid "Print the infill every so often, so that the filament will curl up chaotically inside the object. This reduces print time, but the behaviour is rather unpredictable." +msgstr "經常列印填充,使得耗材在模型內部混亂地捲曲。這會縮短列印時間,但行為會難以預測。" #: fdmprinter.def.json msgctxt "spaghetti_infill_stepped label" @@ -5546,9 +4641,7 @@ msgstr "義大利麵式逐步填充" #: fdmprinter.def.json msgctxt "spaghetti_infill_stepped description" -msgid "" -"Whether to print spaghetti infill in steps or extrude all the infill " -"filament at the end of the print." +msgid "Whether to print spaghetti infill in steps or extrude all the infill filament at the end of the print." msgstr "是否逐步列印義大利麵式填充或在列印結束時一次擠出所有填充耗材。" #: fdmprinter.def.json @@ -5558,13 +4651,8 @@ msgstr "義大利麵式填充 - 最大填充角度" #: fdmprinter.def.json msgctxt "spaghetti_max_infill_angle description" -msgid "" -"The maximum angle w.r.t. the Z axis of the inside of the print for areas " -"which are to be filled with spaghetti infill afterwards. Lowering this value " -"causes more angled parts in your model to be filled on each layer." -msgstr "" -"允許延後填充義大利麵式填充的最大角度,取列印物內側與 Z 軸的夾角。降低此值會導" -"致模型中的更多有角度部位在各層填充。" +msgid "The maximum angle w.r.t. the Z axis of the inside of the print for areas which are to be filled with spaghetti infill afterwards. Lowering this value causes more angled parts in your model to be filled on each layer." +msgstr "允許延後填充義大利麵式填充的最大角度,取列印物內側與 Z 軸的夾角。降低此值會導致模型中的更多有角度部位在各層填充。" #: fdmprinter.def.json msgctxt "spaghetti_max_height label" @@ -5573,9 +4661,7 @@ msgstr "義大利麵式填充 - 最大填充高度" #: fdmprinter.def.json msgctxt "spaghetti_max_height description" -msgid "" -"The maximum height of inside space which can be combined and filled from the " -"top." +msgid "The maximum height of inside space which can be combined and filled from the top." msgstr "可以從頂部組合和填充的內部空間的最大高度。" #: fdmprinter.def.json @@ -5585,8 +4671,7 @@ msgstr "義大利麵式填充內嵌" #: fdmprinter.def.json msgctxt "spaghetti_inset description" -msgid "" -"The offset from the walls from where the spaghetti infill will be printed." +msgid "The offset from the walls from where the spaghetti infill will be printed." msgstr "列印義大利麵式填充開始位置與牆壁的偏移量。" #: fdmprinter.def.json @@ -5596,13 +4681,8 @@ msgstr "義大利麵式填充流量" #: fdmprinter.def.json msgctxt "spaghetti_flow description" -msgid "" -"Adjusts the density of the spaghetti infill. Note that the Infill Density " -"only controls the line spacing of the filling pattern, not the amount of " -"extrusion for spaghetti infill." -msgstr "" -"調整義大利麵式填充的密度。注意,填充密度僅控制填充列印樣式的線條間距,而不是" -"義大利麵式填充的擠出量。" +msgid "Adjusts the density of the spaghetti infill. Note that the Infill Density only controls the line spacing of the filling pattern, not the amount of extrusion for spaghetti infill." +msgstr "調整義大利麵式填充的密度。注意,填充密度僅控制填充列印樣式的線條間距,而不是義大利麵式填充的擠出量。" #: fdmprinter.def.json msgctxt "spaghetti_infill_extra_volume label" @@ -5611,9 +4691,7 @@ msgstr "義大利麵式填充額外體積" #: fdmprinter.def.json msgctxt "spaghetti_infill_extra_volume description" -msgid "" -"A correction term to adjust the total volume being extruded each time when " -"filling spaghetti." +msgid "A correction term to adjust the total volume being extruded each time when filling spaghetti." msgstr "一個用於調整每次進行義大利麵式填充時擠出總量的修正項。" #: fdmprinter.def.json @@ -5623,9 +4701,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 "Experimental feature: Make support areas smaller at the bottom than at the overhang." msgstr "實驗性功能: 讓底部的支撐區域小於懸垂處的支撐區域。" #: fdmprinter.def.json @@ -5635,14 +4711,8 @@ msgstr "錐形支撐角度" #: fdmprinter.def.json msgctxt "support_conical_angle description" -msgid "" -"The angle of the tilt of conical support. With 0 degrees being vertical, and " -"90 degrees being horizontal. Smaller angles cause the support to be more " -"sturdy, but consist of more material. Negative angles cause the base of the " -"support to be wider than the top." -msgstr "" -"錐形支撐的傾斜角度。角度 0 度時為垂直,角度 90 度時為水平。較小的角度會讓支撐" -"更為牢固,但需要更多耗材。負值會讓支撐底座比頂部寬。" +msgid "The angle of the tilt of conical support. With 0 degrees being vertical, and 90 degrees being horizontal. Smaller angles cause the support to be more sturdy, but consist of more material. Negative angles cause the base of the support to be wider than the top." +msgstr "錐形支撐的傾斜角度。角度 0 度時為垂直,角度 90 度時為水平。較小的角度會讓支撐更為牢固,但需要更多耗材。負值會讓支撐底座比頂部寬。" #: fdmprinter.def.json msgctxt "support_conical_min_width label" @@ -5651,9 +4721,7 @@ msgstr "錐形支撐最小寬度" #: fdmprinter.def.json msgctxt "support_conical_min_width description" -msgid "" -"Minimum width to which the base of the conical support area is reduced. " -"Small widths can lead to unstable support structures." +msgid "Minimum width to which the base of the conical support area is reduced. Small widths can lead to unstable support structures." msgstr "錐形支撐區域底部的最小寬度。寬度較小可能導致不穩定的支撐結構。" #: fdmprinter.def.json @@ -5663,8 +4731,7 @@ msgstr "挖空模型" #: fdmprinter.def.json msgctxt "infill_hollow description" -msgid "" -"Remove all infill and make the inside of the object eligible for support." +msgid "Remove all infill and make the inside of the object eligible for support." msgstr "移除所有填充並讓模型內部可以進行支撐。" #: fdmprinter.def.json @@ -5674,9 +4741,7 @@ msgstr "絨毛皮膚" #: fdmprinter.def.json msgctxt "magic_fuzzy_skin_enabled description" -msgid "" -"Randomly jitter while printing the outer wall, so that the surface has a " -"rough and fuzzy look." +msgid "Randomly jitter while printing the outer wall, so that the surface has a rough and fuzzy look." msgstr "在列印外牆時隨機抖動,使表面具有粗糙和模糊的外觀。" #: fdmprinter.def.json @@ -5686,9 +4751,7 @@ msgstr "絨毛皮膚厚度" #: fdmprinter.def.json msgctxt "magic_fuzzy_skin_thickness description" -msgid "" -"The width within which to jitter. It's advised to keep this below the outer " -"wall width, since the inner walls are unaltered." +msgid "The width within which to jitter. It's advised to keep this below the outer wall width, since the inner walls are unaltered." msgstr "進行抖動的寬度。建議讓此值低於外壁寬度,因為內壁不會更改。" #: fdmprinter.def.json @@ -5698,13 +4761,8 @@ msgstr "絨毛皮膚密度" #: fdmprinter.def.json msgctxt "magic_fuzzy_skin_point_density description" -msgid "" -"The average density of points introduced on each polygon in a layer. Note " -"that the original points of the polygon are discarded, so a low density " -"results in a reduction of the resolution." -msgstr "" -"在每一層中,每個多邊形上改變的點的平均密度。注意,多邊形的原始點會被捨棄,因" -"此低密度導致解析度降低。" +msgid "The average density of points introduced on each polygon in a layer. Note that the original points of the polygon are discarded, so a low density results in a reduction of the resolution." +msgstr "在每一層中,每個多邊形上改變的點的平均密度。注意,多邊形的原始點會被捨棄,因此低密度導致解析度降低。" #: fdmprinter.def.json msgctxt "magic_fuzzy_skin_point_dist label" @@ -5713,14 +4771,8 @@ msgstr "絨毛皮膚距離" #: fdmprinter.def.json msgctxt "magic_fuzzy_skin_point_dist description" -msgid "" -"The average distance between the random points introduced on each line " -"segment. Note that the original points of the polygon are discarded, so a " -"high smoothness results in a reduction of the resolution. This value must be " -"higher than half the Fuzzy Skin Thickness." -msgstr "" -"在每個線條部分改變的隨機點之間的平均距離。注意,多邊形的原始點會被捨棄,因此" -"高平滑度導致解析度降低。該值必須大於絨毛皮膚厚度的一半。" +msgid "The average distance between the random points introduced on each line segment. Note that the original points of the polygon are discarded, so a high smoothness results in a reduction of the resolution. This value must be higher than half the Fuzzy Skin Thickness." +msgstr "在每個線條部分改變的隨機點之間的平均距離。注意,多邊形的原始點會被捨棄,因此高平滑度導致解析度降低。該值必須大於絨毛皮膚厚度的一半。" #: fdmprinter.def.json msgctxt "flow_rate_max_extrusion_offset label" @@ -5749,14 +4801,8 @@ msgstr "鐵絲網列印(以下簡稱 WP)" #: fdmprinter.def.json msgctxt "wireframe_enabled description" -msgid "" -"Print only the outside surface with a sparse webbed structure, printing 'in " -"thin air'. This is realized by horizontally printing the contours of the " -"model at given Z intervals which are connected via upward and diagonally " -"downward lines." -msgstr "" -"只列印一個具有稀疏網狀結構的外表面,在“稀疏的空中”列印。這是在给定的 Z 軸間隔" -"內,通過上行線和下行斜線連接,橫向列印模型的輪廓來實現的。" +msgid "Print only the outside surface with a sparse webbed structure, printing 'in thin air'. This is realized by horizontally printing the contours of the model at given Z intervals which are connected via upward and diagonally downward lines." +msgstr "只列印一個具有稀疏網狀結構的外表面,在“稀疏的空中”列印。這是在给定的 Z 軸間隔內,通過上行線和下行斜線連接,橫向列印模型的輪廓來實現的。" #: fdmprinter.def.json msgctxt "wireframe_height label" @@ -5765,13 +4811,8 @@ msgstr "WP 連接高度" #: fdmprinter.def.json msgctxt "wireframe_height description" -msgid "" -"The height of the upward and diagonally downward lines between two " -"horizontal parts. This determines the overall density of the net structure. " -"Only applies to Wire Printing." -msgstr "" -"兩個水平部分之間上行線和下行斜線的高度。這决定網狀結構的整體密度。僅套用於鐵" -"絲網列印。" +msgid "The height of the upward and diagonally downward lines between two horizontal parts. This determines the overall density of the net structure. Only applies to Wire Printing." +msgstr "兩個水平部分之間上行線和下行斜線的高度。這决定網狀結構的整體密度。僅套用於鐵絲網列印。" #: fdmprinter.def.json msgctxt "wireframe_roof_inset label" @@ -5780,9 +4821,7 @@ msgstr "WP 頂板嵌入距離" #: fdmprinter.def.json msgctxt "wireframe_roof_inset description" -msgid "" -"The distance covered when making a connection from a roof outline inward. " -"Only applies to Wire Printing." +msgid "The distance covered when making a connection from a roof outline inward. Only applies to Wire Printing." msgstr "在從頂板輪廓向內進行連接時所覆蓋的距離。僅套用於鐵絲網列印。" #: fdmprinter.def.json @@ -5792,9 +4831,7 @@ msgstr "WP 速度" #: fdmprinter.def.json msgctxt "wireframe_printspeed description" -msgid "" -"Speed at which the nozzle moves when extruding material. Only applies to " -"Wire Printing." +msgid "Speed at which the nozzle moves when extruding material. Only applies to Wire Printing." msgstr "擠出耗材時噴頭移動的速度。僅套用於鐵絲網列印。" #: fdmprinter.def.json @@ -5804,9 +4841,7 @@ msgstr "WP 底部列印速度" #: fdmprinter.def.json msgctxt "wireframe_printspeed_bottom description" -msgid "" -"Speed of printing the first layer, which is the only layer touching the " -"build platform. Only applies to Wire Printing." +msgid "Speed of printing the first layer, which is the only layer touching the build platform. Only applies to Wire Printing." msgstr "列印第一層的速度,該層是唯一接觸列印平台的層。僅套用於鐵絲網列印。" #: fdmprinter.def.json @@ -5816,8 +4851,7 @@ msgstr "WP 上升列印速度" #: fdmprinter.def.json msgctxt "wireframe_printspeed_up description" -msgid "" -"Speed of printing a line upward 'in thin air'. Only applies to Wire Printing." +msgid "Speed of printing a line upward 'in thin air'. Only applies to Wire Printing." msgstr "在“稀疏的空中”向上列印線條的速度。僅套用於鐵絲網列印。" #: fdmprinter.def.json @@ -5827,8 +4861,7 @@ msgstr "WP 下降列印速度" #: fdmprinter.def.json msgctxt "wireframe_printspeed_down description" -msgid "" -"Speed of printing a line diagonally downward. Only applies to Wire Printing." +msgid "Speed of printing a line diagonally downward. Only applies to Wire Printing." msgstr "列印下行斜線的速度。僅套用於鐵絲網列印。" #: fdmprinter.def.json @@ -5838,9 +4871,7 @@ msgstr "WP 水平列印速度" #: fdmprinter.def.json msgctxt "wireframe_printspeed_flat description" -msgid "" -"Speed of printing the horizontal contours of the model. Only applies to Wire " -"Printing." +msgid "Speed of printing the horizontal contours of the model. Only applies to Wire Printing." msgstr "列印模型水平輪廓的速度。僅套用於鐵絲網列印。" #: fdmprinter.def.json @@ -5850,9 +4881,7 @@ msgstr "WP 列印流量" #: fdmprinter.def.json msgctxt "wireframe_flow description" -msgid "" -"Flow compensation: the amount of material extruded is multiplied by this " -"value. Only applies to Wire Printing." +msgid "Flow compensation: the amount of material extruded is multiplied by this value. Only applies to Wire Printing." msgstr "流量補償:擠出的耗材量乘以此值。僅套用於鐵絲網列印。" #: fdmprinter.def.json @@ -5872,8 +4901,7 @@ msgstr "WP 平面流量" #: fdmprinter.def.json msgctxt "wireframe_flow_flat description" -msgid "" -"Flow compensation when printing flat lines. Only applies to Wire Printing." +msgid "Flow compensation when printing flat lines. Only applies to Wire Printing." msgstr "列印平面線條時的流量補償。僅套用於鐵絲網列印。" #: fdmprinter.def.json @@ -5883,9 +4911,7 @@ msgstr "WP 頂部延遲" #: fdmprinter.def.json msgctxt "wireframe_top_delay description" -msgid "" -"Delay time after an upward move, so that the upward line can harden. Only " -"applies to Wire Printing." +msgid "Delay time after an upward move, so that the upward line can harden. Only applies to Wire Printing." msgstr "向上移動後的延遲時間,以便上行線條硬化。僅套用於鐵絲網列印。" #: fdmprinter.def.json @@ -5905,13 +4931,8 @@ msgstr "WP 平面延遲" #: fdmprinter.def.json msgctxt "wireframe_flat_delay description" -msgid "" -"Delay time between two horizontal segments. Introducing such a delay can " -"cause better adhesion to previous layers at the connection points, while too " -"long delays cause sagging. Only applies to Wire Printing." -msgstr "" -"兩個水平部分之間的延遲時間。引入這樣的延遲可以在連接點處與先前的層產生更好的" -"附著,而太長的延遲會引起下垂。僅套用於鐵絲網列印。" +msgid "Delay time between two horizontal segments. Introducing such a delay can cause better adhesion to previous layers at the connection points, while too long delays cause sagging. Only applies to Wire Printing." +msgstr "兩個水平部分之間的延遲時間。引入這樣的延遲可以在連接點處與先前的層產生更好的附著,而太長的延遲會引起下垂。僅套用於鐵絲網列印。" #: fdmprinter.def.json msgctxt "wireframe_up_half_speed label" @@ -5922,12 +4943,10 @@ msgstr "WP 輕鬆上行" 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." +"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" -"這會與之前的層產生更好的附著,而不會將這些層中的耗材過度加熱。僅套用於鐵絲網" -"列印。" +"這會與之前的層產生更好的附著,而不會將這些層中的耗材過度加熱。僅套用於鐵絲網列印。" #: fdmprinter.def.json msgctxt "wireframe_top_jump label" @@ -5936,13 +4955,8 @@ msgstr "WP 紐結大小" #: fdmprinter.def.json msgctxt "wireframe_top_jump description" -msgid "" -"Creates a small knot at the top of an upward line, so that the consecutive " -"horizontal layer has a better chance to connect to it. Only applies to Wire " -"Printing." -msgstr "" -"在上行線條的頂部創建一個小紐結,使連續的水平層有更好的機會與其連接。僅套用於" -"鐵絲網列印。" +msgid "Creates a small knot at the top of an upward line, so that the consecutive horizontal layer has a better chance to connect to it. Only applies to Wire Printing." +msgstr "在上行線條的頂部創建一個小紐結,使連續的水平層有更好的機會與其連接。僅套用於鐵絲網列印。" #: fdmprinter.def.json msgctxt "wireframe_fall_down label" @@ -5951,9 +4965,7 @@ msgstr "WP 倒塌" #: fdmprinter.def.json msgctxt "wireframe_fall_down description" -msgid "" -"Distance with which the material falls down after an upward extrusion. This " -"distance is compensated for. Only applies to Wire Printing." +msgid "Distance with which the material falls down after an upward extrusion. This distance is compensated for. Only applies to Wire Printing." msgstr "耗材在向上擠出後倒塌的距離。將對此距離進行補償。僅套用於鐵絲網列印。" #: fdmprinter.def.json @@ -5963,13 +4975,8 @@ msgstr "WP 拖行" #: fdmprinter.def.json msgctxt "wireframe_drag_along description" -msgid "" -"Distance with which the material of an upward extrusion is dragged along " -"with the diagonally downward extrusion. This distance is compensated for. " -"Only applies to Wire Printing." -msgstr "" -"向上擠出耗材與斜向下擠出一起拖動的距離。將對此距離進行補償。僅套用於鐵絲網列" -"印。" +msgid "Distance with which the material of an upward extrusion is dragged along with the diagonally downward extrusion. This distance is compensated for. Only applies to Wire Printing." +msgstr "向上擠出耗材與斜向下擠出一起拖動的距離。將對此距離進行補償。僅套用於鐵絲網列印。" #: fdmprinter.def.json msgctxt "wireframe_strategy label" @@ -5978,19 +4985,8 @@ msgstr "WP 使用策略" #: fdmprinter.def.json msgctxt "wireframe_strategy description" -msgid "" -"Strategy for making sure two consecutive layers connect at each connection " -"point. Retraction lets the upward lines harden in the right position, but " -"may cause filament grinding. A knot can be made at the end of an upward line " -"to heighten the chance of connecting to it and to let the line cool; " -"however, it may require slow printing speeds. Another strategy is to " -"compensate for the sagging of the top of an upward line; however, the lines " -"won't always fall down as predicted." -msgstr "" -"用於確定兩個連續層在每個連接點連接的策略。回抽可讓上行線條在正確的位置硬化," -"但可能導致耗材磨損。紐結可以在上行線條的尾端進行打結以便提高與其連接的幾率," -"並讓線條冷卻;但這會需要較慢的列印速度。另一種策略是補償上行線條頂部的下垂;" -"然而,線條不會總是如預期的那樣下降。" +msgid "Strategy for making sure two consecutive layers connect at each connection point. Retraction lets the upward lines harden in the right position, but may cause filament grinding. A knot can be made at the end of an upward line to heighten the chance of connecting to it and to let the line cool; however, it may require slow printing speeds. Another strategy is to compensate for the sagging of the top of an upward line; however, the lines won't always fall down as predicted." +msgstr "用於確定兩個連續層在每個連接點連接的策略。回抽可讓上行線條在正確的位置硬化,但可能導致耗材磨損。紐結可以在上行線條的尾端進行打結以便提高與其連接的幾率,並讓線條冷卻;但這會需要較慢的列印速度。另一種策略是補償上行線條頂部的下垂;然而,線條不會總是如預期的那樣下降。" #: fdmprinter.def.json msgctxt "wireframe_strategy option compensate" @@ -6014,13 +5010,8 @@ msgstr "WP 拉直下行線條" #: fdmprinter.def.json msgctxt "wireframe_straight_before_down description" -msgid "" -"Percentage of a diagonally downward line which is covered by a horizontal " -"line piece. This can prevent sagging of the top most point of upward lines. " -"Only applies to Wire Printing." -msgstr "" -"水平線條部分所覆蓋的斜下行線條的百分比。這可以防止上行線最頂端點下垂。僅套用" -"於鐵絲網列印。" +msgid "Percentage of a diagonally downward line which is covered by a horizontal line piece. This can prevent sagging of the top most point of upward lines. Only applies to Wire Printing." +msgstr "水平線條部分所覆蓋的斜下行線條的百分比。這可以防止上行線最頂端點下垂。僅套用於鐵絲網列印。" #: fdmprinter.def.json msgctxt "wireframe_roof_fall_down label" @@ -6029,13 +5020,8 @@ msgstr "WP 頂板倒塌" #: fdmprinter.def.json msgctxt "wireframe_roof_fall_down description" -msgid "" -"The distance which horizontal roof lines printed 'in thin air' fall down " -"when being printed. This distance is compensated for. Only applies to Wire " -"Printing." -msgstr "" -"列印時,在“稀疏的空中”列印的水平頂板線條倒塌的距離。將對此距離進行補償。僅套" -"用於鐵絲網列印。" +msgid "The distance which horizontal roof lines printed 'in thin air' fall down when being printed. This distance is compensated for. Only applies to Wire Printing." +msgstr "列印時,在“稀疏的空中”列印的水平頂板線條倒塌的距離。將對此距離進行補償。僅套用於鐵絲網列印。" #: fdmprinter.def.json msgctxt "wireframe_roof_drag_along label" @@ -6044,13 +5030,8 @@ msgstr "WP 頂板拖行" #: fdmprinter.def.json msgctxt "wireframe_roof_drag_along description" -msgid "" -"The distance of the end piece of an inward line which gets dragged along " -"when going back to the outer outline of the roof. This distance is " -"compensated for. Only applies to Wire Printing." -msgstr "" -"向內線的末端在返回至頂板外部輪廓時被拖行的距離。將對此距離進行補償。僅套用於" -"鐵絲網列印。" +msgid "The distance of the end piece of an inward line which gets dragged along when going back to the outer outline of the roof. This distance is compensated for. Only applies to Wire Printing." +msgstr "向內線的末端在返回至頂板外部輪廓時被拖行的距離。將對此距離進行補償。僅套用於鐵絲網列印。" #: fdmprinter.def.json msgctxt "wireframe_roof_outer_delay label" @@ -6059,12 +5040,8 @@ msgstr "WP 頂板外部延遲" #: fdmprinter.def.json msgctxt "wireframe_roof_outer_delay description" -msgid "" -"Time spent at the outer perimeters of hole which is to become a roof. Longer " -"times can ensure a better connection. Only applies to Wire Printing." -msgstr "" -"在成為頂板的孔的外圍花費的時間。較長的時間可確保更好的連接。僅套用於鐵絲網列" -"印。" +msgid "Time spent at the outer perimeters of hole which is to become a roof. Longer times can ensure a better connection. Only applies to Wire Printing." +msgstr "在成為頂板的孔的外圍花費的時間。較長的時間可確保更好的連接。僅套用於鐵絲網列印。" #: fdmprinter.def.json msgctxt "wireframe_nozzle_clearance label" @@ -6073,14 +5050,48 @@ msgstr "WP 噴頭間隙" #: fdmprinter.def.json msgctxt "wireframe_nozzle_clearance description" -msgid "" -"Distance between the nozzle and horizontally downward lines. Larger " -"clearance results in diagonally downward lines with a less steep angle, " -"which in turn results in less upward connections with the next layer. Only " -"applies to Wire Printing." -msgstr "" -"噴頭和水平下行線之間的距離。較大的間隙會讓斜下行線角度較平緩,進而使第二層的" -"上行連接較少。僅套用於鐵絲網列印。" +msgid "Distance between the nozzle and horizontally downward lines. Larger clearance results in diagonally downward lines with a less steep angle, which in turn results in less upward connections with the next layer. Only applies to Wire Printing." +msgstr "噴頭和水平下行線之間的距離。較大的間隙會讓斜下行線角度較平緩,進而使第二層的上行連接較少。僅套用於鐵絲網列印。" + +#: fdmprinter.def.json +msgctxt "adaptive_layer_height_enabled label" +msgid "Use adaptive layers" +msgstr "使用適應層高" + +#: fdmprinter.def.json +msgctxt "adaptive_layer_height_enabled description" +msgid "Adaptive layers computes the layer heights depending on the shape of the model." +msgstr "適應層高會依據模型的形狀計算列印的層高。" + +#: fdmprinter.def.json +msgctxt "adaptive_layer_height_variation label" +msgid "Adaptive layers maximum variation" +msgstr "適應層高最大變化量" + +#: fdmprinter.def.json +msgctxt "adaptive_layer_height_variation description" +msgid "The maximum allowed height different from the base layer height in mm." +msgstr "允許與層高基礎值相差的最大值(以毫米為單位)。" + +#: fdmprinter.def.json +msgctxt "adaptive_layer_height_variation_step label" +msgid "Adaptive layers variation step size" +msgstr "適應層高變化幅度" + +#: fdmprinter.def.json +msgctxt "adaptive_layer_height_variation_step description" +msgid "The difference in height of the next layer height compared to the previous one." +msgstr "下一列印層與前一列印層的層高差。" + +#: fdmprinter.def.json +msgctxt "adaptive_layer_height_threshold label" +msgid "Adaptive layers threshold" +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 值做比較。" #: fdmprinter.def.json msgctxt "command_line_settings label" @@ -6089,9 +5100,7 @@ msgstr "命令行設定" #: fdmprinter.def.json msgctxt "command_line_settings description" -msgid "" -"Settings which are only used if CuraEngine isn't called from the Cura " -"frontend." +msgid "Settings which are only used if CuraEngine isn't called from the Cura frontend." msgstr "未從 Cura 前端調用 CuraEngine 時使用的設定。" #: fdmprinter.def.json @@ -6101,9 +5110,7 @@ msgstr "模型置中" #: fdmprinter.def.json msgctxt "center_object description" -msgid "" -"Whether to center the object on the middle of the build platform (0,0), " -"instead of using the coordinate system in which the object was saved." +msgid "Whether to center the object on the middle of the build platform (0,0), instead of using the coordinate system in which the object was saved." msgstr "是否將模型放置在列印平台中心 (0,0),而不是使用模型內儲存的座標系統。" #: fdmprinter.def.json @@ -6133,12 +5140,8 @@ msgstr "網格位置 z" #: fdmprinter.def.json msgctxt "mesh_position_z description" -msgid "" -"Offset applied to the object in the z direction. With this you can perform " -"what was used to be called 'Object Sink'." -msgstr "" -"套用在模型 z 方向上的偏移量。利用此選項,你可以執行過去被稱為“模型沉降”的操" -"作。" +msgid "Offset applied to the object in the z direction. With this you can perform what was used to be called 'Object Sink'." +msgstr "套用在模型 z 方向上的偏移量。利用此選項,你可以執行過去被稱為“模型沉降”的操作。" #: fdmprinter.def.json msgctxt "mesh_rotation_matrix label" @@ -6147,31 +5150,40 @@ msgstr "網格旋轉矩陣" #: fdmprinter.def.json msgctxt "mesh_rotation_matrix description" -msgid "" -"Transformation matrix to be applied to the model when loading it from file." +msgid "Transformation matrix to be applied to the model when loading it from file." msgstr "在將模型從檔案中載入時套用在模型上的轉換矩陣。" +#~ msgctxt "infill_offset_x description" +#~ msgid "The infill pattern is offset this distance along the X axis." +#~ msgstr "填充樣式在 X 軸方向偏移此距離。" + +#~ msgctxt "infill_offset_y description" +#~ msgid "The infill pattern is offset this distance along the Y axis." +#~ msgstr "填充樣式在 Y 軸方向偏移此距離。" + +#~ msgctxt "infill_overlap 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 "填充和牆壁之間的重疊量。稍微重疊可讓各個牆壁與填充牢固連接。" + +#~ msgctxt "skin_overlap description" +#~ msgid "The amount of overlap between the skin and the walls as a percentage of the line width. A slight overlap allows the walls to connect firmly to the skin. This is a percentage of the average line widths of the skin lines and the innermost wall." +#~ msgstr "表層和牆壁之間的重疊量,以線寬百分比表示。稍微重疊可讓各個牆壁與表層牢固連接。這是表層平均線寬和最內壁的百分比。" + +#~ msgctxt "material_bed_temperature description" +#~ msgid "The temperature used for the heated build plate. If this is 0, the bed will not heat up for this print." +#~ msgstr "用於加熱列印平台的溫度。如果列印平台溫度為 0,則熱床將不會為此次列印加熱。" + #~ msgctxt "z_offset_layer_0 description" -#~ msgid "" -#~ "The extruder is offset from the normal height of the first layer by this " -#~ "amount. It can be positive (raised) or negative (lowered). Some filament " -#~ "types adhere to the build plate better if the extruder is raised slightly." -#~ msgstr "" -#~ "擠出機在第一層從正常高度偏移了此設定量。它可以是正值(上升)或負值(下" -#~ "降)。某些耗材類型在擠出機稍微上升情況下,會更好地附著在列印平台上。" +#~ msgid "The extruder is offset from the normal height of the first layer by this amount. It can be positive (raised) or negative (lowered). Some filament types adhere to the build plate better if the extruder is raised slightly." +#~ msgstr "擠出機在第一層從正常高度偏移了此設定量。它可以是正值(上升)或負值(下降)。某些耗材類型在擠出機稍微上升情況下,會更好地附著在列印平台上。" #~ msgctxt "z_offset_taper_layers label" #~ msgid "Z Offset Taper Layers" #~ msgstr "Z 軸偏移漸減層數" #~ msgctxt "z_offset_taper_layers description" -#~ msgid "" -#~ "When non-zero, the Z offset is reduced to 0 over that many layers. A " -#~ "value of 0 means that the Z offset remains constant for all the layers in " -#~ "the print." -#~ msgstr "" -#~ "當此值不為 0 時,Z 軸偏移量在經過此層數時逐漸降為 0。此值設為 0 表示所有列" -#~ "印層的 Z 軸偏移量保持為固定值。" +#~ msgid "When non-zero, the Z offset is reduced to 0 over that many layers. A value of 0 means that the Z offset remains constant for all the layers in the print." +#~ msgstr "當此值不為 0 時,Z 軸偏移量在經過此層數時逐漸降為 0。此值設為 0 表示所有列印層的 Z 軸偏移量保持為固定值。" #~ msgctxt "infill_pattern option tetrahedral" #~ msgid "Tetrahedral" @@ -6182,25 +5194,15 @@ msgstr "在將模型從檔案中載入時套用在模型上的轉換矩陣。" #~ msgstr "將表層延伸到填充中" #~ msgctxt "expand_skins_into_infill description" -#~ msgid "" -#~ "Expand skin areas of top and/or bottom skin of flat surfaces. By default, " -#~ "skins stop under the wall lines that surround infill but this can lead to " -#~ "holes appearing when the infill density is low. This setting extends the " -#~ "skins beyond the wall lines so that the infill on the next layer rests on " -#~ "skin." -#~ msgstr "" -#~ "延伸平面頂部和/或底部表層的區域。預設情况下,表層會在環繞填充的壁線下方停" -#~ "止,但如果填充密度較低,則可能導致出現孔洞。該設定將表層延展到壁線以外,因" -#~ "此下一層的填充會座落在表層上。" +#~ msgid "Expand skin areas of top and/or bottom skin of flat surfaces. By default, skins stop under the wall lines that surround infill but this can lead to holes appearing when the infill density is low. This setting extends the skins beyond the wall lines so that the infill on the next layer rests on skin." +#~ msgstr "延伸平面頂部和/或底部表層的區域。預設情况下,表層會在環繞填充的壁線下方停止,但如果填充密度較低,則可能導致出現孔洞。該設定將表層延展到壁線以外,因此下一層的填充會座落在表層上。" #~ msgctxt "expand_upper_skins label" #~ msgid "Expand Top Skins Into Infill" #~ msgstr "將頂部表層延伸到填充中" #~ msgctxt "expand_upper_skins description" -#~ msgid "" -#~ "Expand the top skin areas (areas with air above) so that they support " -#~ "infill above." +#~ msgid "Expand the top skin areas (areas with air above) so that they support infill above." #~ msgstr "延伸頂部表層區域(上方有空氣的區域),讓它們支撐上方的填充。" #~ msgctxt "expand_lower_skins label" @@ -6208,9 +5210,7 @@ msgstr "在將模型從檔案中載入時套用在模型上的轉換矩陣。" #~ msgstr "將底部表層延伸到填充中" #~ msgctxt "expand_lower_skins description" -#~ msgid "" -#~ "Expand the bottom skin areas (areas with air below) so that they are " -#~ "anchored by the infill layers above and below." +#~ msgid "Expand the bottom skin areas (areas with air below) so that they are anchored by the infill layers above and below." #~ msgstr "延伸底部表層區域(下方有空氣的區域),讓它們由上下的填充層錨定。" #~ msgctxt "support_skip_some_zags label" diff --git a/resources/meshes/artemis_platform.stl b/resources/meshes/artemis_platform.stl new file mode 100644 index 0000000000..bf7c8ecb0d Binary files /dev/null and b/resources/meshes/artemis_platform.stl differ diff --git a/resources/meshes/gmax_1-5_xt-plus_s3d_full model_150707.stl b/resources/meshes/gmax_1-5_xt-plus_s3d_full model_150707.stl new file mode 100644 index 0000000000..d122b8ee18 Binary files /dev/null and b/resources/meshes/gmax_1-5_xt-plus_s3d_full model_150707.stl differ diff --git a/resources/meshes/neva.stl b/resources/meshes/neva.stl new file mode 100644 index 0000000000..72ec185bd9 Binary files /dev/null and b/resources/meshes/neva.stl differ diff --git a/resources/meshes/rostock_platform.stl b/resources/meshes/rostock_platform.stl new file mode 100644 index 0000000000..7db5520d1c Binary files /dev/null and b/resources/meshes/rostock_platform.stl differ diff --git a/resources/qml/AboutDialog.qml b/resources/qml/AboutDialog.qml index 36cebe594a..5d3b1d1544 100644 --- a/resources/qml/AboutDialog.qml +++ b/resources/qml/AboutDialog.qml @@ -117,7 +117,7 @@ UM.Dialog { projectsModel.append({ name:"Cura", description: catalog.i18nc("@label", "Graphical user interface"), license: "LGPLv3", url: "https://github.com/Ultimaker/Cura" }); projectsModel.append({ name:"Uranium", description: catalog.i18nc("@label", "Application framework"), license: "LGPLv3", url: "https://github.com/Ultimaker/Uranium" }); - projectsModel.append({ name:"CuraEngine", description: catalog.i18nc("@label", "GCode generator"), license: "AGPLv3", url: "https://github.com/Ultimaker/CuraEngine" }); + projectsModel.append({ name:"CuraEngine", description: catalog.i18nc("@label", "G-code generator"), license: "AGPLv3", url: "https://github.com/Ultimaker/CuraEngine" }); projectsModel.append({ name:"libArcus", description: catalog.i18nc("@label", "Interprocess communication library"), license: "LGPLv3", url: "https://github.com/Ultimaker/libArcus" }); projectsModel.append({ name:"Python", description: catalog.i18nc("@label", "Programming language"), license: "Python", url: "http://python.org/" }); @@ -134,8 +134,9 @@ UM.Dialog projectsModel.append({ name:"Clipper", description: catalog.i18nc("@label", "Polygon clipping library"), license: "Boost", url: "http://www.angusj.com/delphi/clipper.php" }); projectsModel.append({ name:"Requests", description: catalog.i18nc("@Label", "Python HTTP library"), license: "GPL", url: "http://docs.python-requests.org" }); - projectsModel.append({ name:"Open Sans", description: catalog.i18nc("@label", "Font"), license: "Apache 2.0", url: "https://fonts.google.com/specimen/Open+Sans" }); + projectsModel.append({ name:"Noto Sans", description: catalog.i18nc("@label", "Font"), license: "Apache 2.0", url: "https://www.google.com/get/noto/" }); projectsModel.append({ name:"Font-Awesome-SVG-PNG", description: catalog.i18nc("@label", "SVG icons"), license: "SIL OFL 1.1", url: "https://github.com/encharm/Font-Awesome-SVG-PNG" }); + projectsModel.append({ name:"AppImageKit", description: catalog.i18nc("@label", "Linux cross-distribution application deployment"), license: "MIT", url: "https://github.com/AppImage/AppImageKit" }); } } } @@ -149,4 +150,3 @@ UM.Dialog onClicked: base.visible = false; } } - diff --git a/resources/qml/Actions.qml b/resources/qml/Actions.qml index 05ff5050e9..7002711614 100644 --- a/resources/qml/Actions.qml +++ b/resources/qml/Actions.qml @@ -69,7 +69,6 @@ Item property alias configureSettingVisibility: configureSettingVisibilityAction property alias browsePlugins: browsePluginsAction - property alias configurePlugins: configurePluginsAction UM.I18nCatalog{id: catalog; name:"cura"} @@ -173,7 +172,7 @@ Item Action { id: updateProfileAction; - enabled: !Cura.MachineManager.stacksHaveErrors && Cura.MachineManager.hasUserSettings && !Cura.MachineManager.isReadOnly(Cura.MachineManager.activeQualityId) + enabled: !Cura.MachineManager.stacksHaveErrors && Cura.MachineManager.hasUserSettings && Cura.MachineManager.activeQualityChangesGroup != null text: catalog.i18nc("@action:inmenu menubar:profile","&Update profile with current settings/overrides"); onTriggered: Cura.ContainerManager.updateQualityChanges(); } @@ -237,6 +236,16 @@ Item onTriggered: CuraActions.deleteSelection(); } + Action //Also add backspace as the same function as delete because on Macintosh keyboards the button called "delete" is actually a backspace, and the user expects it to function as a delete. + { + id: backspaceSelectionAction + 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.Backspace + onTriggered: CuraActions.deleteSelection() + } + Action { id: centerSelectionAction; @@ -425,13 +434,6 @@ Item iconName: "plugins_browse" } - Action - { - id: configurePluginsAction - text: catalog.i18nc("@action:menu", "Installed plugins..."); - iconName: "plugins_configure" - } - Action { id: expandSidebarAction; diff --git a/resources/qml/AskOpenAsProjectOrModelsDialog.qml b/resources/qml/AskOpenAsProjectOrModelsDialog.qml index a53c711f9d..bd37d1acdb 100644 --- a/resources/qml/AskOpenAsProjectOrModelsDialog.qml +++ b/resources/qml/AskOpenAsProjectOrModelsDialog.qml @@ -26,33 +26,54 @@ UM.Dialog minimumHeight: maximumHeight minimumWidth: maximumWidth - modality: UM.Application.platform == "linux" ? Qt.NonModal : Qt.WindowModal; + modality: UM.Application.platform == "linux" ? Qt.NonModal : Qt.WindowModal property var fileUrl - function loadProjectFile(projectFile) - { - UM.WorkspaceFileHandler.readLocalFile(projectFile); + // load the entire project + function loadProjectFile() { - var meshName = backgroundItem.getMeshName(projectFile.toString()); - backgroundItem.hasMesh(decodeURIComponent(meshName)); - } - - function loadModelFiles(fileUrls) - { - for (var i in fileUrls) - { - CuraApplication.readLocalFile(fileUrls[i]); + // update preference + if (rememberChoiceCheckBox.checked) { + UM.Preferences.setValue("cura/choice_on_open_project", "open_as_project") } - var meshName = backgroundItem.getMeshName(fileUrls[0].toString()); - backgroundItem.hasMesh(decodeURIComponent(meshName)); + UM.WorkspaceFileHandler.readLocalFile(base.fileUrl) + var meshName = backgroundItem.getMeshName(base.fileUrl.toString()) + backgroundItem.hasMesh(decodeURIComponent(meshName)) + + base.hide() } - onVisibleChanged: - { - if (visible) - { + // load the project file as separated models + function loadModelFiles() { + + // update preference + if (rememberChoiceCheckBox.checked) { + UM.Preferences.setValue("cura/choice_on_open_project", "open_as_model") + } + + CuraApplication.readLocalFile(base.fileUrl) + var meshName = backgroundItem.getMeshName(base.fileUrl.toString()) + backgroundItem.hasMesh(decodeURIComponent(meshName)) + + base.hide() + } + + // override UM.Dialog accept + function accept () { + var openAsPreference = UM.Preferences.getValue("cura/choice_on_open_project") + + // when hitting 'enter', we always open as project unless open_as_model was explicitly stored as preference + if (openAsPreference == "open_as_model") { + loadModelFiles() + } else { + loadProjectFile() + } + } + + onVisibleChanged: { + if (visible) { var rememberMyChoice = UM.Preferences.getValue("cura/choice_on_open_project") != "always_ask"; rememberChoiceCheckBox.checked = rememberMyChoice; } @@ -90,47 +111,26 @@ UM.Dialog } // Buttons - Item - { + Item { id: buttonBar anchors.right: parent.right anchors.left: parent.left height: childrenRect.height - Button - { + Button { id: openAsProjectButton - text: catalog.i18nc("@action:button", "Open as project"); + text: catalog.i18nc("@action:button", "Open as project") anchors.right: importModelsButton.left anchors.rightMargin: UM.Theme.getSize("default_margin").width isDefault: true - onClicked: - { - // update preference - if (rememberChoiceCheckBox.checked) - UM.Preferences.setValue("cura/choice_on_open_project", "open_as_project"); - - // load this file as project - base.hide(); - loadProjectFile(base.fileUrl); - } + onClicked: loadProjectFile() } - Button - { + Button { id: importModelsButton - text: catalog.i18nc("@action:button", "Import models"); + text: catalog.i18nc("@action:button", "Import models") anchors.right: parent.right - onClicked: - { - // update preference - if (rememberChoiceCheckBox.checked) - UM.Preferences.setValue("cura/choice_on_open_project", "open_as_model"); - - // load models from this project file - base.hide(); - loadModelFiles([base.fileUrl]); - } + onClicked: loadModelFiles() } } } diff --git a/resources/qml/Cura.qml b/resources/qml/Cura.qml index 6f649a7273..cff4399073 100644 --- a/resources/qml/Cura.qml +++ b/resources/qml/Cura.qml @@ -190,24 +190,42 @@ UM.MainWindow model: Cura.ExtrudersModel { simpleNames: true } Menu { title: model.name - visible: machineExtruderCount.properties.value > 1 NozzleMenu { title: Cura.MachineManager.activeDefinitionVariantsName; visible: Cura.MachineManager.hasVariants; extruderIndex: index } MaterialMenu { title: catalog.i18nc("@title:menu", "&Material"); visible: Cura.MachineManager.hasMaterials; extruderIndex: index } - ProfileMenu { title: catalog.i18nc("@title:menu", "&Profile"); } - MenuSeparator { } + MenuSeparator + { + visible: Cura.MachineManager.hasVariants || Cura.MachineManager.hasMaterials + } + + MenuItem + { + text: catalog.i18nc("@action:inmenu", "Set as Active Extruder") + onTriggered: Cura.MachineManager.setExtruderIndex(model.index) + } + + MenuItem + { + text: catalog.i18nc("@action:inmenu", "Enable Extruder") + onTriggered: Cura.MachineManager.setExtruderEnabled(model.index, true) + visible: !Cura.MachineManager.getExtruder(model.index).isEnabled + } + + MenuItem + { + text: catalog.i18nc("@action:inmenu", "Disable Extruder") + onTriggered: Cura.MachineManager.setExtruderEnabled(model.index, false) + visible: Cura.MachineManager.getExtruder(model.index).isEnabled + } - MenuItem { text: catalog.i18nc("@action:inmenu", "Set as Active Extruder"); onTriggered: Cura.ExtruderManager.setActiveExtruderIndex(model.index) } } onObjectAdded: settingsMenu.insertItem(index, object) onObjectRemoved: settingsMenu.removeItem(object) } BuildplateMenu { title: catalog.i18nc("@title:menu", "&Build plate"); visible: Cura.MachineManager.hasVariantBuildplates } - NozzleMenu { title: Cura.MachineManager.activeDefinitionVariantsName; visible: machineExtruderCount.properties.value <= 1 && Cura.MachineManager.hasVariants } - MaterialMenu { title: catalog.i18nc("@title:menu", "&Material"); visible: machineExtruderCount.properties.value <= 1 && Cura.MachineManager.hasMaterials } - ProfileMenu { title: catalog.i18nc("@title:menu", "&Profile"); visible: machineExtruderCount.properties.value <= 1 } + ProfileMenu { title: catalog.i18nc("@title:menu", "&Profile"); } MenuSeparator { } @@ -254,7 +272,6 @@ UM.MainWindow title: catalog.i18nc("@title:menu menubar:toplevel", "P&lugins") MenuItem { action: Cura.Actions.browsePlugins } - MenuItem { action: Cura.Actions.configurePlugins } } Menu @@ -477,6 +494,14 @@ UM.MainWindow collapseSidebarAnimation.start(); } } + + MouseArea + { + visible: UM.Controller.activeStage.sidebarComponent != "" + anchors.fill: parent + acceptedButtons: Qt.AllButtons + onWheel: wheel.accepted = true + } } UM.MessageStack @@ -484,7 +509,7 @@ UM.MainWindow anchors { horizontalCenter: parent.horizontalCenter - horizontalCenterOffset: -(UM.Theme.getSize("sidebar").width/ 2) + horizontalCenterOffset: -(Math.round(UM.Theme.getSize("sidebar").width / 2)) top: parent.verticalCenter; bottom: parent.bottom; } @@ -518,6 +543,9 @@ UM.MainWindow insertPage(4, catalog.i18nc("@title:tab", "Profiles"), Qt.resolvedUrl("Preferences/ProfilesPage.qml")); + // Remove plug-ins page because we will use the shiny new plugin browser: + removePage(5); + //Force refresh setPage(0); } @@ -625,18 +653,10 @@ UM.MainWindow { preferences.visible = true; preferences.setPage(1); - preferences.getCurrentItem().scrollToSection(source.key); - } - } - - // show the installed plugins page in the preferences dialog - Connections - { - target: Cura.Actions.configurePlugins - onTriggered: - { - preferences.visible = true - preferences.setPage(5) + if(source && source.key) + { + preferences.getCurrentItem().scrollToSection(source.key); + } } } diff --git a/resources/qml/DiscardOrKeepProfileChangesDialog.qml b/resources/qml/DiscardOrKeepProfileChangesDialog.qml index 915a11fde2..afa9fda0bd 100644 --- a/resources/qml/DiscardOrKeepProfileChangesDialog.qml +++ b/resources/qml/DiscardOrKeepProfileChangesDialog.qml @@ -7,7 +7,7 @@ import QtQuick.Dialogs 1.2 import QtQuick.Window 2.1 import UM 1.2 as UM -import Cura 1.1 as Cura +import Cura 1.0 as Cura UM.Dialog { diff --git a/resources/qml/ExtruderButton.qml b/resources/qml/ExtruderButton.qml index 9212c705f7..2c1b80047e 100644 --- a/resources/qml/ExtruderButton.qml +++ b/resources/qml/ExtruderButton.qml @@ -19,7 +19,7 @@ Button iconSource: UM.Theme.getIcon("extruder_button") checked: Cura.ExtruderManager.selectedObjectExtruders.indexOf(extruder.id) != -1 - enabled: UM.Selection.hasSelection + enabled: UM.Selection.hasSelection && extruder.stack.isEnabled property color customColor: base.hovered ? UM.Theme.getColor("button_hover") : UM.Theme.getColor("button"); @@ -65,7 +65,7 @@ Button width: UM.Theme.getSize("extruder_button_material").width height: UM.Theme.getSize("extruder_button_material").height - radius: width / 2 + radius: Math.round(width / 2) border.width: UM.Theme.getSize("default_lining").width border.color: UM.Theme.getColor("extruder_button_material_border") diff --git a/resources/qml/JobSpecs.qml b/resources/qml/JobSpecs.qml index c701e5ebf4..04e8ec397f 100644 --- a/resources/qml/JobSpecs.qml +++ b/resources/qml/JobSpecs.qml @@ -94,7 +94,7 @@ Item { { id: printJobTextfield anchors.right: printJobPencilIcon.left - anchors.rightMargin: Math.floor(UM.Theme.getSize("default_margin").width/2) + anchors.rightMargin: Math.round(UM.Theme.getSize("default_margin").width / 2) height: UM.Theme.getSize("jobspecs_line").height width: Math.max(__contentWidth + UM.Theme.getSize("default_margin").width, 50) maximumLength: 120 diff --git a/resources/qml/MachineSelection.qml b/resources/qml/MachineSelection.qml index e40731f3ca..357e7870a7 100644 --- a/resources/qml/MachineSelection.qml +++ b/resources/qml/MachineSelection.qml @@ -12,7 +12,11 @@ import "Menus" ToolButton { - text: Cura.MachineManager.activeMachineName + id: base + property bool isNetworkPrinter: Cura.MachineManager.activeMachineNetworkKey != "" + property bool printerConnected: Cura.MachineManager.printerOutputDevices.length != 0 + property var printerStatus: Cura.MachineManager.printerOutputDevices.length != 0 ? "connected" : "disconnected" + text: isNetworkPrinter ? Cura.MachineManager.activeMachineNetworkGroupName : Cura.MachineManager.activeMachineName tooltip: Cura.MachineManager.activeMachineName @@ -22,16 +26,13 @@ ToolButton { color: { - if(control.pressed) - { + if (control.pressed) { return UM.Theme.getColor("sidebar_header_active"); } - else if(control.hovered) - { + else if (control.hovered) { return UM.Theme.getColor("sidebar_header_hover"); } - else - { + else { return UM.Theme.getColor("sidebar_header_bar"); } } @@ -50,18 +51,32 @@ ToolButton color: UM.Theme.getColor("text_emphasis") source: UM.Theme.getIcon("arrow_bottom") } + + PrinterStatusIcon + { + id: printerStatusIcon + visible: printerConnected + status: printerStatus + anchors + { + verticalCenter: parent.verticalCenter + left: parent.left + leftMargin: UM.Theme.getSize("sidebar_margin").width + } + } + Label { id: sidebarComboBoxLabel color: UM.Theme.getColor("sidebar_header_text_active") text: control.text; elide: Text.ElideRight; - anchors.left: parent.left; - anchors.leftMargin: UM.Theme.getSize("default_margin").width * 2 + anchors.left: isNetworkPrinter ? printerStatusIcon.right : parent.left; + anchors.leftMargin: isNetworkPrinter ? UM.Theme.getSize("sidebar_lining").width : UM.Theme.getSize("sidebar_margin").width anchors.right: downArrow.left; anchors.rightMargin: control.rightMargin; anchors.verticalCenter: parent.verticalCenter; - font: UM.Theme.getFont("large") + font: UM.Theme.getFont("medium_bold") } } label: Label {} diff --git a/resources/qml/Menus/BuildplateMenu.qml b/resources/qml/Menus/BuildplateMenu.qml index 908cccf1c8..b924aa0879 100644 --- a/resources/qml/Menus/BuildplateMenu.qml +++ b/resources/qml/Menus/BuildplateMenu.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.2 -import QtQuick.Controls 1.1 +import QtQuick 2.7 +import QtQuick.Controls 1.4 import UM 1.2 as UM import Cura 1.0 as Cura @@ -12,73 +12,22 @@ Menu id: menu title: "Build plate" - property bool printerConnected: Cura.MachineManager.printerOutputDevices.length != 0 - property bool isClusterPrinter: - { - if(Cura.MachineManager.printerOutputDevices.length == 0) - { - return false; - } - var clusterSize = Cura.MachineManager.printerOutputDevices[0].clusterSize; - // This is not a cluster printer or the cluster it is just one printer - if(clusterSize == undefined || clusterSize == 1) - { - return false; - } - return true; - } - - MenuItem - { - id: automaticBuildplate - text: - { - if(printerConnected && Cura.MachineManager.printerOutputDevices[0].buildplateId != "" && !isClusterPrinter) - { - var buildplateName = Cura.MachineManager.printerOutputDevices[0].buildplateId - return catalog.i18nc("@title:menuitem %1 is the buildplate currently loaded in the printer", "Automatic: %1").arg(buildplateName) - } - return "" - } - visible: printerConnected && Cura.MachineManager.printerOutputDevices[0].buildplateId != "" && !isClusterPrinter - onTriggered: - { - var buildplateId = Cura.MachineManager.printerOutputDevices[0].buildplateId - var itemIndex = buildplateInstantiator.model.find("name", buildplateId) - if(itemIndex > -1) - { - Cura.MachineManager.setActiveVariantBuildplate(buildplateInstantiator.model.getItem(itemIndex).id) - } - } - } - - MenuSeparator - { - visible: automaticBuildplate.visible - } + property var buildPlateModel: CuraApplication.getBuildPlateModel() Instantiator { - id: buildplateInstantiator - model: UM.InstanceContainersModel - { - filter: - { - "type": "variant", - "hardware_type": "buildplate", - "definition": Cura.MachineManager.activeDefinitionId //Only show variants of this machine - } - } + model: menu.buildPlateModel + MenuItem { text: model.name checkable: true - checked: model.id == Cura.MachineManager.globalVariantId + checked: model.name == Cura.MachineManager.globalVariantName exclusiveGroup: group - onTriggered: - { - Cura.MachineManager.setActiveVariantBuildplate(model.id); + onTriggered: { + Cura.MachineManager.setGlobalVariant(model.container_node); } } + onObjectAdded: menu.insertItem(index, object) onObjectRemoved: menu.removeItem(object) } diff --git a/resources/qml/Menus/ConfigurationMenu/ConfigurationItem.qml b/resources/qml/Menus/ConfigurationMenu/ConfigurationItem.qml new file mode 100644 index 0000000000..be8c8bcb45 --- /dev/null +++ b/resources/qml/Menus/ConfigurationMenu/ConfigurationItem.qml @@ -0,0 +1,124 @@ +// 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 UM 1.2 as UM +import Cura 1.0 as Cura + +Rectangle +{ + id: configurationItem + + property var configuration: null + property var selected: false + signal activateConfiguration() + + height: childrenRect.height + border.width: UM.Theme.getSize("default_lining").width + border.color: updateBorderColor() + color: selected ? UM.Theme.getColor("configuration_item_active") : UM.Theme.getColor("configuration_item") + property var textColor: selected ? UM.Theme.getColor("configuration_item_text_active") : UM.Theme.getColor("configuration_item_text") + + function updateBorderColor() + { + border.color = selected ? UM.Theme.getColor("configuration_item_border_active") : UM.Theme.getColor("configuration_item_border") + } + + Column + { + id: contentColumn + width: parent.width + padding: UM.Theme.getSize("default_margin").width + spacing: Math.round(UM.Theme.getSize("default_margin").height / 2) + + Row + { + id: extruderRow + + width: parent.width - 2 * parent.padding + height: childrenRect.height + + spacing: UM.Theme.getSize("default_margin").width + + Repeater + { + id: repeater + height: childrenRect.height + model: configuration.extruderConfigurations + delegate: PrintCoreConfiguration + { + width: Math.round(parent.width / 2) + printCoreConfiguration: modelData + mainColor: textColor + } + } + } + + //Buildplate row separator + Rectangle + { + id: separator + + visible: buildplateInformation.visible + width: parent.width - 2 * parent.padding + height: visible ? Math.round(UM.Theme.getSize("sidebar_lining_thin").height / 2) : 0 + color: textColor + } + + Item + { + id: buildplateInformation + width: parent.width - 2 * parent.padding + height: childrenRect.height + visible: configuration.buildplateConfiguration != "" + + UM.RecolorImage { + id: buildplateIcon + anchors.left: parent.left + width: UM.Theme.getSize("topbar_button_icon").width + height: UM.Theme.getSize("topbar_button_icon").height + sourceSize.width: width + sourceSize.height: height + source: UM.Theme.getIcon("buildplate") + color: textColor + } + + Label + { + id: buildplateLabel + anchors.left: buildplateIcon.right + anchors.verticalCenter: buildplateIcon.verticalCenter + anchors.leftMargin: Math.round(UM.Theme.getSize("default_margin").height / 2) + text: configuration.buildplateConfiguration + color: textColor + } + } + } + + MouseArea + { + id: mouse + anchors.fill: parent + onClicked: activateConfiguration() + hoverEnabled: true + onEntered: parent.border.color = UM.Theme.getColor("configuration_item_border_hover") + onExited: updateBorderColor() + } + + Connections + { + target: Cura.MachineManager + onCurrentConfigurationChanged: { + configurationItem.selected = Cura.MachineManager.matchesConfiguration(configuration) + updateBorderColor() + } + } + + Component.onCompleted: + { + configurationItem.selected = Cura.MachineManager.matchesConfiguration(configuration) + updateBorderColor() + } +} \ No newline at end of file diff --git a/resources/qml/Menus/ConfigurationMenu/ConfigurationListView.qml b/resources/qml/Menus/ConfigurationMenu/ConfigurationListView.qml new file mode 100644 index 0000000000..999fecd7fd --- /dev/null +++ b/resources/qml/Menus/ConfigurationMenu/ConfigurationListView.qml @@ -0,0 +1,86 @@ +// 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 QtQuick.Controls.Styles 1.4 + +import UM 1.2 as UM +import Cura 1.0 as Cura + +Column +{ + id: base + property var outputDevice: null + property var computedHeight: container.height + configurationListHeading.height + 3 * padding + height: childrenRect.height + 2 * padding + padding: UM.Theme.getSize("default_margin").width + spacing: Math.round(UM.Theme.getSize("default_margin").height / 2) + + Label + { + id: configurationListHeading + text: catalog.i18nc("@label:header configurations", "Available configurations") + font: UM.Theme.getFont("large") + width: parent.width - 2 * parent.padding + } + + Component + { + id: sectionHeading + Rectangle + { + height: childrenRect.height + UM.Theme.getSize("default_margin").height + Label + { + text: section + font: UM.Theme.getFont("default_bold") + } + } + } + + ScrollView + { + id: container + width: parent.width - parent.padding + height: Math.min(configurationList.contentHeight, 350 * screenScaleFactor) + + style: UM.Theme.styles.scrollview + __wheelAreaScrollSpeed: 75 // Scroll three lines in one scroll event + + ListView + { + id: configurationList + spacing: Math.round(UM.Theme.getSize("default_margin").height / 2) + width: container.width + contentHeight: childrenRect.height + + section.property: "modelData.printerType" + section.criteria: ViewSection.FullString + section.delegate: sectionHeading + + model: (outputDevice != null) ? outputDevice.uniqueConfigurations : [] + delegate: ConfigurationItem + { + width: parent.width - UM.Theme.getSize("default_margin").width + configuration: modelData + onActivateConfiguration: + { + switchPopupState() + Cura.MachineManager.applyRemoteConfiguration(configuration) + } + } + } + } + + Connections + { + target: outputDevice + onUniqueConfigurationsChanged: + { + // FIXME For now the model should be removed and then created again, otherwise changes in the printer don't automatically update the UI + configurationList.model = [] + configurationList.model = outputDevice.uniqueConfigurations + } + } +} \ No newline at end of file diff --git a/resources/qml/Menus/ConfigurationMenu/ConfigurationSelection.qml b/resources/qml/Menus/ConfigurationMenu/ConfigurationSelection.qml new file mode 100644 index 0000000000..d7ee2c68ee --- /dev/null +++ b/resources/qml/Menus/ConfigurationMenu/ConfigurationSelection.qml @@ -0,0 +1,65 @@ +// 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.Controls.Styles 1.4 + +import UM 1.2 as UM +import Cura 1.0 as Cura + +Item +{ + id: configurationSelector + property var connectedDevice: Cura.MachineManager.printerOutputDevices.length >= 1 ? Cura.MachineManager.printerOutputDevices[0] : null + property var panelWidth: control.width + + function switchPopupState() + { + popup.visible ? popup.close() : popup.open() + } + + SyncButton + { + id: syncButton + onClicked: switchPopupState() + outputDevice: connectedDevice + } + + Popup + { + // TODO Change once updating to Qt5.10 - The 'opened' property is in 5.10 but the behavior is now implemented with the visible property + id: popup + clip: true + closePolicy: Popup.CloseOnPressOutsideParent + y: configurationSelector.height - UM.Theme.getSize("default_lining").height + x: configurationSelector.width - width + width: panelWidth + visible: false + padding: UM.Theme.getSize("default_lining").width + transformOrigin: Popup.Top + contentItem: ConfigurationListView + { + id: configList + width: panelWidth - 2 * popup.padding + outputDevice: connectedDevice + } + background: Rectangle + { + color: UM.Theme.getColor("setting_control") + border.color: UM.Theme.getColor("setting_control_border") + } + exit: Transition + { + // This applies a default NumberAnimation to any changes a state change makes to x or y properties + NumberAnimation { property: "visible"; duration: 75; } + } + enter: Transition + { + // This applies a default NumberAnimation to any changes a state change makes to x or y properties + NumberAnimation { property: "visible"; duration: 75; } + } + onClosed: visible = false + onOpened: visible = true + } +} \ No newline at end of file diff --git a/resources/qml/Menus/ConfigurationMenu/PrintCoreConfiguration.qml b/resources/qml/Menus/ConfigurationMenu/PrintCoreConfiguration.qml new file mode 100644 index 0000000000..ca1b666e69 --- /dev/null +++ b/resources/qml/Menus/ConfigurationMenu/PrintCoreConfiguration.qml @@ -0,0 +1,87 @@ +// 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 UM 1.2 as UM + + +Column +{ + id: extruderInfo + property var printCoreConfiguration + property var mainColor: "black" + spacing: Math.round(UM.Theme.getSize("default_margin").height / 2) + + height: childrenRect.height + + Item + { + id: extruder + width: parent.width + height: childrenRect.height + + Label + { + id: extruderLabel + text: catalog.i18nc("@label:extruder label", "Extruder") + elide: Text.ElideRight + anchors.left: parent.left + font: UM.Theme.getFont("default") + color: mainColor + } + + // Rounded item to show the extruder number + Item + { + id: extruderIconItem + anchors.verticalCenter: extruderLabel.verticalCenter + anchors.left: extruderLabel.right + anchors.leftMargin: Math.round(UM.Theme.getSize("default_margin").width / 2) + + width: UM.Theme.getSize("section_icon").width + height: UM.Theme.getSize("section_icon").height + + UM.RecolorImage { + id: mainCircle + anchors.fill: parent + + anchors.centerIn: parent + sourceSize.width: parent.width + sourceSize.height: parent.height + source: UM.Theme.getIcon("extruder_button") + color: mainColor + } + + Label + { + id: extruderNumberText + anchors.centerIn: parent + text: printCoreConfiguration.position + 1 + font: UM.Theme.getFont("default") + color: mainColor + } + } + } + + Label + { + id: materialLabel + text: printCoreConfiguration.material.name + elide: Text.ElideRight + width: parent.width + font: UM.Theme.getFont("default_bold") + color: mainColor + } + + Label + { + id: printCoreTypeLabel + text: printCoreConfiguration.hotendID + elide: Text.ElideRight + width: parent.width + font: UM.Theme.getFont("default") + color: mainColor + } +} diff --git a/resources/qml/Menus/ConfigurationMenu/SyncButton.qml b/resources/qml/Menus/ConfigurationMenu/SyncButton.qml new file mode 100644 index 0000000000..c292a792db --- /dev/null +++ b/resources/qml/Menus/ConfigurationMenu/SyncButton.qml @@ -0,0 +1,102 @@ +// 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 QtQuick.Controls.Styles 1.4 + +import UM 1.2 as UM +import Cura 1.0 as Cura + +Button +{ + id: base + property var outputDevice: null + property var matched: updateOnSync() + text: matched == true ? "Yes" : "No" + width: parent.width + height: parent.height + + function updateOnSync() + { + if (outputDevice != undefined) + { + for (var index in outputDevice.uniqueConfigurations) + { + var configuration = outputDevice.uniqueConfigurations[index] + if (Cura.MachineManager.matchesConfiguration(configuration)) + { + base.matched = true; + return; + } + } + } + base.matched = false; + } + + style: ButtonStyle + { + background: Rectangle + { + color: + { + if(control.pressed) + { + return UM.Theme.getColor("sidebar_header_active"); + } + else if(control.hovered) + { + return UM.Theme.getColor("sidebar_header_hover"); + } + else + { + return UM.Theme.getColor("sidebar_header_bar"); + } + } + Behavior on color { ColorAnimation { duration: 50; } } + + UM.RecolorImage + { + id: downArrow + anchors.verticalCenter: parent.verticalCenter + anchors.right: parent.right + anchors.rightMargin: UM.Theme.getSize("default_margin").width + width: UM.Theme.getSize("standard_arrow").width + height: UM.Theme.getSize("standard_arrow").height + sourceSize.width: width + sourceSize.height: height + color: UM.Theme.getColor("text_emphasis") + source: UM.Theme.getIcon("arrow_bottom") + } + UM.RecolorImage { + id: sidebarComboBoxLabel + anchors.left: parent.left + anchors.leftMargin: UM.Theme.getSize("default_margin").width + anchors.verticalCenter: parent.verticalCenter; + + width: UM.Theme.getSize("printer_sync_icon").width + height: UM.Theme.getSize("printer_sync_icon").height + + color: control.matched ? UM.Theme.getColor("printer_config_matched") : UM.Theme.getColor("printer_config_mismatch") + source: UM.Theme.getIcon("tab_status_connected") + sourceSize.width: width + sourceSize.height: height + } + } + label: Label {} + } + + Connections { + target: outputDevice + onUniqueConfigurationsChanged: { + updateOnSync() + } + } + + Connections { + target: Cura.MachineManager + onCurrentConfigurationChanged: { + updateOnSync() + } + } +} \ No newline at end of file diff --git a/resources/qml/Menus/ContextMenu.qml b/resources/qml/Menus/ContextMenu.qml index b5f51f4d63..83302f9463 100644 --- a/resources/qml/Menus/ContextMenu.qml +++ b/resources/qml/Menus/ContextMenu.qml @@ -7,7 +7,7 @@ import QtQuick.Dialogs 1.2 import QtQuick.Window 2.1 import UM 1.2 as UM -import Cura 1.2 as Cura +import Cura 1.0 as Cura Menu { @@ -15,6 +15,8 @@ Menu property bool shouldShowExtruders: machineExtruderCount.properties.value > 1; + property var multiBuildPlateModel: CuraApplication.getMultiBuildPlateModel() + // Selection-related actions. MenuItem { action: Cura.Actions.centerSelection; } MenuItem { action: Cura.Actions.deleteSelection; } @@ -45,13 +47,13 @@ Menu Instantiator { - model: Cura.BuildPlateModel + model: base.multiBuildPlateModel MenuItem { enabled: UM.Selection.hasSelection - text: Cura.BuildPlateModel.getItem(index).name; - onTriggered: CuraActions.setBuildPlateForSelection(Cura.BuildPlateModel.getItem(index).buildPlateNumber); + text: base.multiBuildPlateModel.getItem(index).name; + onTriggered: CuraActions.setBuildPlateForSelection(base.multiBuildPlateModel.getItem(index).buildPlateNumber); checkable: true - checked: Cura.BuildPlateModel.selectionBuildPlates.indexOf(Cura.BuildPlateModel.getItem(index).buildPlateNumber) != -1; + checked: base.multiBuildPlateModel.selectionBuildPlates.indexOf(base.multiBuildPlateModel.getItem(index).buildPlateNumber) != -1; visible: UM.Preferences.getValue("cura/use_multi_build_plate") } onObjectAdded: base.insertItem(index, object); @@ -62,7 +64,7 @@ Menu enabled: UM.Selection.hasSelection text: "New build plate"; onTriggered: { - CuraActions.setBuildPlateForSelection(Cura.BuildPlateModel.maxBuildPlate + 1); + CuraActions.setBuildPlateForSelection(base.multiBuildPlateModel.maxBuildPlate + 1); checked = false; } checkable: true diff --git a/resources/qml/Menus/LocalPrinterMenu.qml b/resources/qml/Menus/LocalPrinterMenu.qml new file mode 100644 index 0000000000..0bdd4f33b9 --- /dev/null +++ b/resources/qml/Menus/LocalPrinterMenu.qml @@ -0,0 +1,23 @@ +// 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.4 + +import UM 1.2 as UM +import Cura 1.0 as Cura + +Instantiator { + model: UM.ContainerStacksModel { + filter: {"type": "machine", "um_network_key": null} + } + MenuItem { + text: model.name; + checkable: true; + checked: Cura.MachineManager.activeMachineId == model.id + exclusiveGroup: group; + onTriggered: Cura.MachineManager.setActiveMachine(model.id); + } + onObjectAdded: menu.insertItem(index, object) + onObjectRemoved: menu.removeItem(object) +} diff --git a/resources/qml/Menus/MaterialMenu.qml b/resources/qml/Menus/MaterialMenu.qml index 3d04649f11..d81e0c86c3 100644 --- a/resources/qml/Menus/MaterialMenu.qml +++ b/resources/qml/Menus/MaterialMenu.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.2 -import QtQuick.Controls 1.1 +import QtQuick 2.7 +import QtQuick.Controls 1.4 import UM 1.2 as UM import Cura 1.0 as Cura @@ -13,64 +13,6 @@ Menu title: "Material" property int extruderIndex: 0 - property bool printerConnected: Cura.MachineManager.printerOutputDevices.length != 0 - property bool isClusterPrinter: - { - if(Cura.MachineManager.printerOutputDevices.length == 0) - { - return false; - } - var clusterSize = Cura.MachineManager.printerOutputDevices[0].clusterSize; - // This is not a cluster printer or the cluster it is just one printer - if(clusterSize == undefined || clusterSize == 1) - { - return false; - } - return true; - } - - UM.SettingPropertyProvider - { - id: materialDiameterProvider - - containerStackId: Cura.ExtruderManager.activeExtruderStackId - key: "material_diameter" - watchedProperties: [ "value" ] - storeIndex: 5 - } - - MenuItem - { - id: automaticMaterial - text: - { - if(visible) - { - var materialName = Cura.MachineManager.printerOutputDevices[0].materialNames[extruderIndex]; - return catalog.i18nc("@title:menuitem %1 is the automatically selected material", "Automatic: %1").arg(materialName); - } - return ""; - } - visible: printerConnected && Cura.MachineManager.printerOutputDevices[0].materialNames != undefined && Cura.MachineManager.printerOutputDevices[0].materialNames.length > extruderIndex && !isClusterPrinter - onTriggered: - { - var materialId = Cura.MachineManager.printerOutputDevices[0].materialIds[extruderIndex]; - var items = materialsModel.items; - for(var i in items) - { - if (items[i]["metadata"]["GUID"] == materialId) - { - Cura.MachineManager.setActiveMaterial(items[i].id); - break; - } - } - } - } - - MenuSeparator - { - visible: automaticMaterial.visible - } Instantiator { @@ -79,16 +21,11 @@ Menu { text: model.name checkable: true - checked: model.id == Cura.MachineManager.allActiveMaterialIds[Cura.ExtruderManager.extruderIds[extruderIndex]] + checked: model.root_material_id == Cura.MachineManager.currentRootMaterialId[extruderIndex] exclusiveGroup: group onTriggered: { - // This workaround is done because of the application menus for materials and variants for multiextrusion printers. - // The extruder menu would always act on the correspoding extruder only, instead of acting on the extruder selected in the UI. - var activeExtruderIndex = Cura.ExtruderManager.activeExtruderIndex; - Cura.ExtruderManager.setActiveExtruderIndex(extruderIndex); - Cura.MachineManager.setActiveMaterial(model.id); - Cura.ExtruderManager.setActiveExtruderIndex(activeExtruderIndex); + Cura.MachineManager.setMaterial(extruderIndex, model.container_node); } } onObjectAdded: menu.insertItem(index, object) @@ -126,12 +63,8 @@ Menu exclusiveGroup: group onTriggered: { - // This workaround is done because of the application menus for materials and variants for multiextrusion printers. - // The extruder menu would always act on the correspoding extruder only, instead of acting on the extruder selected in the UI. var activeExtruderIndex = Cura.ExtruderManager.activeExtruderIndex; - Cura.ExtruderManager.setActiveExtruderIndex(extruderIndex); - Cura.MachineManager.setActiveMaterial(model.id); - Cura.ExtruderManager.setActiveExtruderIndex(activeExtruderIndex); + Cura.MachineManager.setMaterial(activeExtruderIndex, model.container_node); } } onObjectAdded: brandMaterialsMenu.insertItem(index, object) @@ -146,24 +79,16 @@ Menu onObjectRemoved: menu.removeItem(object) } - ListModel + Cura.GenericMaterialsModel { id: genericMaterialsModel - Component.onCompleted: populateMenuModels() + extruderPosition: menu.extruderIndex } - ListModel + Cura.BrandMaterialsModel { id: brandModel - } - - //: Model used to populate the brandModel - Cura.MaterialsModel - { - id: materialsModel - filter: materialFilter() - onModelReset: populateMenuModels() - onDataChanged: populateMenuModels() + extruderPosition: menu.extruderIndex } ExclusiveGroup { id: group } @@ -171,80 +96,4 @@ Menu MenuSeparator { } MenuItem { action: Cura.Actions.manageMaterials } - - function materialFilter() - { - var result = { "type": "material", "approximate_diameter": Math.round(materialDiameterProvider.properties.value).toString() }; - if(Cura.MachineManager.filterMaterialsByMachine) - { - result.definition = Cura.MachineManager.activeQualityDefinitionId; - if(Cura.MachineManager.hasVariants) - { - result.variant = Cura.MachineManager.activeQualityVariantId; - } - } - else - { - result.definition = "fdmprinter"; - result.compatible = true; //NB: Only checks for compatibility in global version of material, but we don't have machine-specific materials anyway. - } - return result; - } - - function populateMenuModels() - { - // Create a structure of unique brands and their material-types - genericMaterialsModel.clear() - brandModel.clear(); - - var items = materialsModel.items; - var materialsByBrand = {}; - for (var i in items) { - var brandName = items[i]["metadata"]["brand"]; - var materialName = items[i]["metadata"]["material"]; - - if (brandName == "Generic") - { - // Add to top section - var materialId = items[i].id; - genericMaterialsModel.append({ - id: materialId, - name: items[i].name - }); - } - else - { - // Add to per-brand, per-material menu - if (!materialsByBrand.hasOwnProperty(brandName)) - { - materialsByBrand[brandName] = {}; - } - if (!materialsByBrand[brandName].hasOwnProperty(materialName)) - { - materialsByBrand[brandName][materialName] = []; - } - materialsByBrand[brandName][materialName].push({ - id: items[i].id, - name: items[i].name - }); - } - } - - for (var brand in materialsByBrand) - { - var materialsByBrandModel = []; - var materials = materialsByBrand[brand]; - for (var material in materials) - { - materialsByBrandModel.push({ - name: material, - colors: materials[material] - }) - } - brandModel.append({ - name: brand, - materials: materialsByBrandModel - }); - } - } } diff --git a/resources/qml/Menus/NetworkPrinterMenu.qml b/resources/qml/Menus/NetworkPrinterMenu.qml new file mode 100644 index 0000000000..07a22202e4 --- /dev/null +++ b/resources/qml/Menus/NetworkPrinterMenu.qml @@ -0,0 +1,25 @@ +// 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.4 + +import UM 1.2 as UM +import Cura 1.0 as Cura + +Instantiator { + model: UM.ContainerStacksModel { + filter: {"type": "machine", "um_network_key": "*", "hidden": "False"} + } + MenuItem { + // TODO: Use printer_group icon when it's a cluster. Not use it for now since it doesn't look as expected +// iconSource: UM.Theme.getIcon("printer_single") + text: model.metadata["connect_group_name"] + checkable: true; + checked: Cura.MachineManager.activeMachineNetworkGroupName == model.metadata["connect_group_name"] + exclusiveGroup: group; + onTriggered: Cura.MachineManager.setActiveMachine(model.id); + } + onObjectAdded: menu.insertItem(index, object) + onObjectRemoved: menu.removeItem(object) +} diff --git a/resources/qml/Menus/NozzleMenu.qml b/resources/qml/Menus/NozzleMenu.qml index 81db20a79d..43f3b79dd4 100644 --- a/resources/qml/Menus/NozzleMenu.qml +++ b/resources/qml/Menus/NozzleMenu.qml @@ -1,8 +1,8 @@ // Copyright (c) 2017 Ultimaker B.V. // Cura is released under the terms of the LGPLv3 or higher. -import QtQuick 2.2 -import QtQuick.Controls 1.1 +import QtQuick 2.7 +import QtQuick.Controls 1.4 import UM 1.2 as UM import Cura 1.0 as Cura @@ -13,89 +13,31 @@ Menu title: "Nozzle" property int extruderIndex: 0 - property bool printerConnected: Cura.MachineManager.printerOutputDevices.length != 0 - property bool isClusterPrinter: - { - if(Cura.MachineManager.printerOutputDevices.length == 0) - { - return false; - } - var clusterSize = Cura.MachineManager.printerOutputDevices[0].clusterSize; - // This is not a cluster printer or the cluster it is just one printer - if(clusterSize == undefined || clusterSize == 1) - { - return false; - } - return true; - } - MenuItem + Cura.NozzleModel { - id: automaticNozzle - text: - { - if(visible) - { - var nozzleName = Cura.MachineManager.printerOutputDevices[0].hotendIds[extruderIndex]; - return catalog.i18nc("@title:menuitem %1 is the nozzle currently loaded in the printer", "Automatic: %1").arg(nozzleName); - } - return ""; - } - visible: printerConnected && Cura.MachineManager.printerOutputDevices[0].hotendIds != undefined && Cura.MachineManager.printerOutputDevices[0].hotendIds.length > extruderIndex && !isClusterPrinter - onTriggered: - { - var activeExtruderIndex = Cura.ExtruderManager.activeExtruderIndex; - Cura.ExtruderManager.setActiveExtruderIndex(extruderIndex); - var hotendId = Cura.MachineManager.printerOutputDevices[0].hotendIds[extruderIndex]; - var itemIndex = nozzleInstantiator.model.find("name", hotendId); - if(itemIndex > -1) - { - Cura.MachineManager.setActiveVariant(nozzleInstantiator.model.getItem(itemIndex).id); - } - Cura.ExtruderManager.setActiveExtruderIndex(activeExtruderIndex); - } - } - - MenuSeparator - { - visible: automaticNozzle.visible + id: nozzleModel } Instantiator { - id: nozzleInstantiator - model: UM.InstanceContainersModel - { - filter: - { - var filter_dict = - { - "type": "variant", - "definition": Cura.MachineManager.activeQualityDefinitionId //Only show variants of this machine - } - if (Cura.MachineManager.hasVariantBuildplates) - { - filter_dict["hardware_type"] = "nozzle" - } + model: nozzleModel - return filter_dict - } - } - MenuItem { - text: model.name + MenuItem + { + text: model.hotend_name checkable: true - checked: model.id == Cura.MachineManager.allActiveVariantIds[Cura.ExtruderManager.extruderIds[extruderIndex]] + checked: { + return Cura.MachineManager.activeVariantNames[extruderIndex] == model.hotend_name + } exclusiveGroup: group - onTriggered: - { - var activeExtruderIndex = Cura.ExtruderManager.activeExtruderIndex; - Cura.ExtruderManager.setActiveExtruderIndex(extruderIndex); - Cura.MachineManager.setActiveVariant(model.id); - Cura.ExtruderManager.setActiveExtruderIndex(activeExtruderIndex); + onTriggered: { + Cura.MachineManager.setVariantGroup(menu.extruderIndex, model.container_node); } } - onObjectAdded: menu.insertItem(index, object) - onObjectRemoved: menu.removeItem(object) + + onObjectAdded: menu.insertItem(index, object); + onObjectRemoved: menu.removeItem(object); } ExclusiveGroup { id: group } diff --git a/resources/qml/Menus/PrinterMenu.qml b/resources/qml/Menus/PrinterMenu.qml index 073723a60d..741d927c13 100644 --- a/resources/qml/Menus/PrinterMenu.qml +++ b/resources/qml/Menus/PrinterMenu.qml @@ -1,37 +1,60 @@ -// Copyright (c) 2016 Ultimaker B.V. +// Copyright (c) 2018 Ultimaker B.V. // Cura is released under the terms of the LGPLv3 or higher. import QtQuick 2.2 -import QtQuick.Controls 1.1 +import QtQuick.Controls 1.4 +import QtQuick.Controls.Styles 1.4 import UM 1.2 as UM import Cura 1.0 as Cura Menu { - id: menu; + id: menu +// TODO Enable custom style to the menu +// style: MenuStyle +// { +// frame: Rectangle +// { +// color: "white" +// } +// } - Instantiator + MenuItem { - model: UM.ContainerStacksModel - { - filter: {"type": "machine"} - } - MenuItem - { - text: model.name; - checkable: true; - checked: Cura.MachineManager.activeMachineId == model.id - exclusiveGroup: group; - onTriggered: Cura.MachineManager.setActiveMachine(model.id); - } - onObjectAdded: menu.insertItem(index, object) - onObjectRemoved: menu.removeItem(object) + text: catalog.i18nc("@label:category menu label", "Network enabled printers") + enabled: false + visible: networkPrinterMenu.count > 0 + } + + NetworkPrinterMenu + { + id: networkPrinterMenu + } + + MenuSeparator + { + visible: networkPrinterMenu.count > 0 + } + + MenuItem + { + text: catalog.i18nc("@label:category menu label", "Local printers") + enabled: false + visible: localPrinterMenu.count > 0 + } + + LocalPrinterMenu + { + id: localPrinterMenu } ExclusiveGroup { id: group; } - MenuSeparator { } + MenuSeparator + { + visible: localPrinterMenu.count > 0 + } MenuItem { action: Cura.Actions.addMachine; } MenuItem { action: Cura.Actions.configureMachines; } diff --git a/resources/qml/Menus/PrinterStatusIcon.qml b/resources/qml/Menus/PrinterStatusIcon.qml new file mode 100644 index 0000000000..6ff6b07af8 --- /dev/null +++ b/resources/qml/Menus/PrinterStatusIcon.qml @@ -0,0 +1,27 @@ +// Copyright (c) 2017 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.2 + +import UM 1.2 as UM +import Cura 1.0 as Cura + +Item +{ + property var status: "disconnected" + width: childrenRect.width + height: childrenRect.height + UM.RecolorImage + { + id: statusIcon + width: UM.Theme.getSize("printer_status_icon").width + height: UM.Theme.getSize("printer_status_icon").height + sourceSize.width: width + sourceSize.height: width + color: UM.Theme.getColor("tab_status_" + parent.status) + source: UM.Theme.getIcon(parent.status) + } +} + + + diff --git a/resources/qml/Menus/PrinterTypeMenu.qml b/resources/qml/Menus/PrinterTypeMenu.qml new file mode 100644 index 0000000000..28bdca54d9 --- /dev/null +++ b/resources/qml/Menus/PrinterTypeMenu.qml @@ -0,0 +1,37 @@ +// 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.3 as UM +import Cura 1.0 as Cura + +Menu +{ + id: menu + title: "Printer type" + property var outputDevice: Cura.MachineManager.printerOutputDevices[0] + + Instantiator + { + id: printerTypeInstantiator + model: outputDevice != null ? outputDevice.connectedPrintersTypeCount : [] + + MenuItem + { + text: modelData.machine_type + checkable: true + checked: Cura.MachineManager.activeMachineDefinitionName == modelData.machine_type + exclusiveGroup: group + onTriggered: + { + Cura.MachineManager.switchPrinterType(modelData.machine_type) + } + } + onObjectAdded: menu.insertItem(index, object) + onObjectRemoved: menu.removeItem(object) + } + + ExclusiveGroup { id: group } +} diff --git a/resources/qml/Menus/ProfileMenu.qml b/resources/qml/Menus/ProfileMenu.qml index edce2641af..5b9a5a3b73 100644 --- a/resources/qml/Menus/ProfileMenu.qml +++ b/resources/qml/Menus/ProfileMenu.qml @@ -1,8 +1,8 @@ -// Copyright (c) 2016 Ultimaker B.V. +// 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 2.7 +import QtQuick.Controls 1.4 import UM 1.2 as UM import Cura 1.0 as Cura @@ -13,15 +13,17 @@ Menu Instantiator { - model: Cura.ProfilesModel + model: Cura.QualityProfilesDropDownMenuModel MenuItem { - text: (model.layer_height != "") ? model.name + " - " + model.layer_height : model.name + text: (model.layer_height != "") ? model.name + " - " + model.layer_height + model.layer_height_unit : model.name checkable: true - checked: Cura.MachineManager.activeQualityId == model.id + checked: Cura.MachineManager.activeQualityOrQualityChangesName == model.name exclusiveGroup: group - onTriggered: Cura.MachineManager.setActiveQuality(model.id) + onTriggered: { + Cura.MachineManager.setQualityGroup(model.quality_group) + } visible: model.available } @@ -29,23 +31,31 @@ Menu onObjectRemoved: menu.removeItem(object); } - MenuSeparator { id: customSeparator } + MenuSeparator + { + id: customSeparator + visible: Cura.CustomQualityProfilesDropDownMenuModel.rowCount > 0 + } Instantiator { id: customProfileInstantiator - model: Cura.UserProfilesModel + model: Cura.CustomQualityProfilesDropDownMenuModel + + Connections { - onModelReset: customSeparator.visible = rowCount() > 0 + target: Cura.CustomQualityProfilesDropDownMenuModel + onModelReset: customSeparator.visible = Cura.CustomQualityProfilesDropDownMenuModel.rowCount() > 0 } MenuItem { text: model.name - checkable: true - checked: Cura.MachineManager.activeQualityChangesId == model.id + checkable: model.available + enabled: model.available + checked: Cura.MachineManager.activeQualityOrQualityChangesName == model.name exclusiveGroup: group - onTriggered: Cura.MachineManager.setActiveQuality(model.id) + onTriggered: Cura.MachineManager.setQualityChangesGroup(model.quality_changes_group) } onObjectAdded: @@ -69,23 +79,4 @@ Menu MenuItem { action: Cura.Actions.resetProfile } MenuSeparator { } MenuItem { action: Cura.Actions.manageProfiles } - - function getFilter(initial_conditions) - { - var result = initial_conditions; - - if(Cura.MachineManager.filterQualityByMachine) - { - result.definition = Cura.MachineManager.activeQualityDefinitionId; - if(Cura.MachineManager.hasMaterials) - { - result.material = Cura.MachineManager.activeQualityMaterialId; - } - } - else - { - result.definition = "fdmprinter" - } - return result - } } diff --git a/resources/qml/Menus/SettingVisibilityPresetsMenu.qml b/resources/qml/Menus/SettingVisibilityPresetsMenu.qml new file mode 100644 index 0000000000..19c36e6118 --- /dev/null +++ b/resources/qml/Menus/SettingVisibilityPresetsMenu.qml @@ -0,0 +1,82 @@ +// 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 UM 1.2 as UM +import Cura 1.0 as Cura + +Menu +{ + id: menu + title: catalog.i18nc("@action:inmenu", "Visible Settings") + + property bool showingSearchResults + property bool showingAllSettings + + signal showAllSettings() + signal showSettingVisibilityProfile() + + MenuItem + { + text: catalog.i18nc("@action:inmenu", "Custom selection") + checkable: true + checked: !showingSearchResults && !showingAllSettings && Cura.SettingVisibilityPresetsModel.activePreset == "custom" + exclusiveGroup: group + onTriggered: + { + Cura.SettingVisibilityPresetsModel.setActivePreset("custom"); + // Restore custom set from preference + UM.Preferences.setValue("general/visible_settings", UM.Preferences.getValue("cura/custom_visible_settings")); + showSettingVisibilityProfile(); + } + } + MenuSeparator { } + + Instantiator + { + model: Cura.SettingVisibilityPresetsModel + + MenuItem + { + text: model.name + checkable: true + checked: model.id == Cura.SettingVisibilityPresetsModel.activePreset + exclusiveGroup: group + onTriggered: + { + Cura.SettingVisibilityPresetsModel.setActivePreset(model.id); + + UM.Preferences.setValue("general/visible_settings", model.settings.join(";")); + + showSettingVisibilityProfile(); + } + } + + onObjectAdded: menu.insertItem(index, object) + onObjectRemoved: menu.removeItem(object) + } + + MenuSeparator {} + MenuItem + { + text: catalog.i18nc("@action:inmenu", "All Settings") + checkable: true + checked: showingAllSettings + exclusiveGroup: group + onTriggered: + { + showAllSettings(); + } + } + MenuSeparator {} + MenuItem + { + text: catalog.i18nc("@action:inmenu", "Manage Setting Visibility...") + iconName: "configure" + onTriggered: Cura.Actions.configureSettingVisibility.trigger() + } + + ExclusiveGroup { id: group } +} diff --git a/resources/qml/Menus/ViewMenu.qml b/resources/qml/Menus/ViewMenu.qml index afc80dd314..6bbb0b1e2e 100644 --- a/resources/qml/Menus/ViewMenu.qml +++ b/resources/qml/Menus/ViewMenu.qml @@ -5,7 +5,7 @@ import QtQuick 2.2 import QtQuick.Controls 1.1 import UM 1.2 as UM -import Cura 1.2 as Cura +import Cura 1.0 as Cura Menu { @@ -13,6 +13,8 @@ Menu id: base enabled: !PrintInformation.preSliced + property var multiBuildPlateModel: CuraApplication.getMultiBuildPlateModel() + // main views Instantiator { @@ -53,12 +55,12 @@ Menu visible: UM.Preferences.getValue("cura/use_multi_build_plate") Instantiator { - model: Cura.BuildPlateModel + model: base.multiBuildPlateModel MenuItem { - text: Cura.BuildPlateModel.getItem(index).name; - onTriggered: Cura.SceneController.setActiveBuildPlate(Cura.BuildPlateModel.getItem(index).buildPlateNumber); + text: base.multiBuildPlateModel.getItem(index).name; + onTriggered: Cura.SceneController.setActiveBuildPlate(base.multiBuildPlateModel.getItem(index).buildPlateNumber); checkable: true; - checked: Cura.BuildPlateModel.getItem(index).buildPlateNumber == Cura.BuildPlateModel.activeBuildPlate; + checked: base.multiBuildPlateModel.getItem(index).buildPlateNumber == base.multiBuildPlateModel.activeBuildPlate; exclusiveGroup: buildPlateGroup; visible: UM.Preferences.getValue("cura/use_multi_build_plate") } diff --git a/resources/qml/MonitorButton.qml b/resources/qml/MonitorButton.qml index 0e9728da3d..c3ae200464 100644 --- a/resources/qml/MonitorButton.qml +++ b/resources/qml/MonitorButton.qml @@ -225,7 +225,7 @@ Item width: parent.width - 2 * UM.Theme.getSize("sidebar_margin").width; height: UM.Theme.getSize("progressbar").height; anchors.top: statusLabel.bottom; - anchors.topMargin: UM.Theme.getSize("sidebar_margin").height / 4; + anchors.topMargin: Math.round(UM.Theme.getSize("sidebar_margin").height / 4); anchors.left: parent.left; anchors.leftMargin: UM.Theme.getSize("sidebar_margin").width; } diff --git a/resources/qml/ObjectsList.qml b/resources/qml/ObjectsList.qml index 9fd2ab1ca7..8c8eaa16ae 100644 --- a/resources/qml/ObjectsList.qml +++ b/resources/qml/ObjectsList.qml @@ -8,7 +8,7 @@ import QtQuick.Layouts 1.1 import QtQuick.Dialogs 1.1 import UM 1.3 as UM -import Cura 1.2 as Cura +import Cura 1.0 as Cura import "Menus" @@ -31,14 +31,16 @@ Rectangle border.width: UM.Theme.getSize("default_lining").width border.color: UM.Theme.getColor("lining") - property bool collapsed: true; + property bool collapsed: true + + property var multiBuildPlateModel: CuraApplication.getMultiBuildPlateModel() SystemPalette { id: palette } Button { id: collapseButton anchors.top: parent.top - anchors.topMargin: Math.floor(UM.Theme.getSize("default_margin").height + (UM.Theme.getSize("layerview_row").height - UM.Theme.getSize("default_margin").height) / 2) + anchors.topMargin: Math.round(UM.Theme.getSize("default_margin").height + (UM.Theme.getSize("layerview_row").height - UM.Theme.getSize("default_margin").height) / 2) anchors.right: parent.right anchors.rightMargin: UM.Theme.getSize("default_margin").width @@ -67,7 +69,7 @@ Rectangle Rectangle { height: childrenRect.height - color: Cura.BuildPlateModel.getItem(index).buildPlateNumber == Cura.BuildPlateModel.activeBuildPlate ? palette.highlight : index % 2 ? palette.base : palette.alternateBase + color: multiBuildPlateModel.getItem(index).buildPlateNumber == multiBuildPlateModel.activeBuildPlate ? palette.highlight : index % 2 ? palette.base : palette.alternateBase width: parent.width Label { @@ -75,8 +77,8 @@ Rectangle anchors.left: parent.left anchors.leftMargin: UM.Theme.getSize("default_margin").width width: parent.width - 2 * UM.Theme.getSize("default_margin").width - 30 - text: Cura.BuildPlateModel.getItem(index) ? Cura.BuildPlateModel.getItem(index).name : ""; - color: Cura.BuildPlateModel.activeBuildPlate == index ? palette.highlightedText : palette.text + text: multiBuildPlateModel.getItem(index) ? multiBuildPlateModel.getItem(index).name : ""; + color: multiBuildPlateModel.activeBuildPlate == index ? palette.highlightedText : palette.text elide: Text.ElideRight } @@ -118,13 +120,12 @@ Rectangle ListView { id: buildPlateListView - model: Cura.BuildPlateModel + model: multiBuildPlateModel width: parent.width delegate: buildPlateDelegate } } - Component { id: objectDelegate Rectangle @@ -200,7 +201,6 @@ Rectangle } } - CheckBox { id: filterBuildPlateCheckbox @@ -260,6 +260,4 @@ Rectangle } action: Cura.Actions.arrangeAll; } - - } diff --git a/resources/qml/Preferences/GeneralPage.qml b/resources/qml/Preferences/GeneralPage.qml index ac5cacdbf6..1c7b2bcf7c 100644 --- a/resources/qml/Preferences/GeneralPage.qml +++ b/resources/qml/Preferences/GeneralPage.qml @@ -413,7 +413,7 @@ UM.PreferencesPage width: childrenRect.width; height: childrenRect.height; - text: catalog.i18nc("@info:tooltip","Show caution message in gcode reader.") + text: catalog.i18nc("@info:tooltip","Show caution message in g-code reader.") CheckBox { @@ -422,7 +422,7 @@ UM.PreferencesPage checked: boolCheck(UM.Preferences.getValue("gcodereader/show_caution")) onClicked: UM.Preferences.setValue("gcodereader/show_caution", checked) - text: catalog.i18nc("@option:check","Caution message in gcode reader"); + text: catalog.i18nc("@option:check","Caution message in g-code reader"); } } diff --git a/resources/qml/Preferences/MachinesPage.qml b/resources/qml/Preferences/MachinesPage.qml index 889dfa8d5b..665586d29f 100644 --- a/resources/qml/Preferences/MachinesPage.qml +++ b/resources/qml/Preferences/MachinesPage.qml @@ -1,22 +1,20 @@ // 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 2.7 +import QtQuick.Controls 1.4 import QtQuick.Window 2.1 import UM 1.2 as UM import Cura 1.0 as Cura + UM.ManagementPage { id: base; title: catalog.i18nc("@title:tab", "Printers"); - model: UM.ContainerStacksModel - { - filter: {"type": "machine"} - } + model: Cura.MachineManagementModel { } activeId: Cura.MachineManager.activeMachineId activeIndex: activeMachineIndex() @@ -56,7 +54,7 @@ UM.ManagementPage { text: catalog.i18nc("@action:button", "Rename"); iconName: "edit-rename"; - enabled: base.currentItem != null + enabled: base.currentItem != null && base.currentItem.metadata.connect_group_name == null onClicked: renameDialog.open(); } ] diff --git a/resources/qml/Preferences/MaterialView.qml b/resources/qml/Preferences/MaterialView.qml index b2307fe4f6..d2f653e650 100644 --- a/resources/qml/Preferences/MaterialView.qml +++ b/resources/qml/Preferences/MaterialView.qml @@ -1,8 +1,8 @@ // Copyright (c) 2017 Ultimaker B.V. // Cura is released under the terms of the LGPLv3 or higher. -import QtQuick 2.1 -import QtQuick.Controls 1.3 +import QtQuick 2.7 +import QtQuick.Controls 1.4 import QtQuick.Dialogs 1.2 import UM 1.2 as UM @@ -12,7 +12,10 @@ TabView { id: base - property QtObject properties; + property QtObject materialManager: CuraApplication.getMaterialManager() + + property QtObject properties + property var currentMaterialNode: null property bool editingEnabled: false; property string currency: UM.Preferences.getValue("cura/currency") ? UM.Preferences.getValue("cura/currency") : "€" @@ -27,18 +30,36 @@ TabView property bool reevaluateLinkedMaterials: false property string linkedMaterialNames: { - if (reevaluateLinkedMaterials) - { + if (reevaluateLinkedMaterials) { reevaluateLinkedMaterials = false; } - if(!base.containerId || !base.editingEnabled) - { + if (!base.containerId || !base.editingEnabled) { + return "" + } + var linkedMaterials = Cura.ContainerManager.getLinkedMaterials(base.currentMaterialNode); + if (linkedMaterials.length <= 1) { return "" } - var linkedMaterials = Cura.ContainerManager.getLinkedMaterials(base.containerId); return linkedMaterials.join(", "); } + function getApproximateDiameter(diameter) { + return Math.round(diameter); + } + + // This trick makes sure to make all fields lose focus so their onEditingFinished will be triggered + // and modified values will be saved. This can happen when a user changes a value and then closes the + // dialog directly. + // + // Please note that somehow this callback is ONLY triggered when visible is false. + onVisibleChanged: + { + if (!visible) + { + base.focus = false; + } + } + Tab { title: catalog.i18nc("@title", "Information") @@ -65,6 +86,34 @@ TabView width: base.width property real rowHeight: textField.height + UM.Theme.getSize("default_lining").height + MessageDialog + { + id: confirmDiameterChangeDialog + + icon: StandardIcon.Question; + title: catalog.i18nc("@title:window", "Confirm Diameter Change") + text: catalog.i18nc("@label (%1 is object name)", "The new material diameter is set to %1 mm, which is not compatible to the current machine. Do you wish to continue?".arg(new_diameter_value)) + standardButtons: StandardButton.Yes | StandardButton.No + modality: Qt.ApplicationModal + + property var new_diameter_value: null; + property var old_diameter_value: null; + property var old_approximate_diameter_value: null; + + onYes: + { + Cura.ContainerManager.setContainerProperty(base.containerId, "material_diameter", "value", new_diameter_value); + base.setMetaDataEntry("approximate_diameter", old_approximate_diameter_value, getApproximateDiameter(new_diameter_value).toString()); + base.setMetaDataEntry("properties/diameter", properties.diameter, new_diameter_value); + } + + onNo: + { + properties.diameter = old_diameter_value; + diameterSpinBox.value = properties.diameter; + } + } + Label { width: scrollView.columnWidth; height: parent.rowHeight; verticalAlignment: Qt.AlignVCenter; text: catalog.i18nc("@label", "Display Name") } ReadOnlyTextField { @@ -80,33 +129,33 @@ TabView { id: textField; width: scrollView.columnWidth; - text: properties.supplier; + text: properties.brand; readOnly: !base.editingEnabled; - onEditingFinished: base.updateMaterialSupplier(properties.supplier, text) + onEditingFinished: base.updateMaterialBrand(properties.brand, text) } Label { width: scrollView.columnWidth; height: parent.rowHeight; verticalAlignment: Qt.AlignVCenter; text: catalog.i18nc("@label", "Material Type") } ReadOnlyTextField { width: scrollView.columnWidth; - text: properties.material_type; + text: properties.material; readOnly: !base.editingEnabled; - onEditingFinished: base.updateMaterialType(properties.material_type, text) + onEditingFinished: base.updateMaterialType(properties.material, text) } Label { width: scrollView.columnWidth; height: parent.rowHeight; verticalAlignment: Qt.AlignVCenter; text: catalog.i18nc("@label", "Color") } Row { width: scrollView.columnWidth height: parent.rowHeight - spacing: Math.floor(UM.Theme.getSize("default_margin").width/2) + spacing: Math.round(UM.Theme.getSize("default_margin").width / 2) // color indicator square Rectangle { id: colorSelector color: properties.color_code - width: Math.floor(colorLabel.height * 0.75) - height: Math.floor(colorLabel.height * 0.75) + width: Math.round(colorLabel.height * 0.75) + height: Math.round(colorLabel.height * 0.75) border.width: UM.Theme.getSize("default_lining").height anchors.verticalCenter: parent.verticalCenter @@ -172,14 +221,20 @@ TabView // which derive from the same base_file var old_diameter = Cura.ContainerManager.getContainerProperty(base.containerId, "material_diameter", "value").toString(); var old_approximate_diameter = Cura.ContainerManager.getContainerMetaDataEntry(base.containerId, "approximate_diameter"); - base.setMetaDataEntry("approximate_diameter", old_approximate_diameter, Math.round(value).toString()); - base.setMetaDataEntry("properties/diameter", properties.diameter, value); - var new_approximate_diameter = Cura.ContainerManager.getContainerMetaDataEntry(base.containerId, "approximate_diameter"); - if (Cura.MachineManager.filterMaterialsByMachine && new_approximate_diameter != Cura.MachineManager.activeMachine.approximateMaterialDiameter) + var new_approximate_diameter = getApproximateDiameter(value); + if (Cura.MachineManager.filterMaterialsByMachine && new_approximate_diameter != Cura.ExtruderManager.getActiveExtruderStack().approximateMaterialDiameter) { - Cura.MaterialManager.showMaterialWarningMessage(base.containerId, old_diameter); + confirmDiameterChangeDialog.old_diameter_value = old_diameter; + confirmDiameterChangeDialog.new_diameter_value = value; + confirmDiameterChangeDialog.old_approximate_diameter_value = old_approximate_diameter; + + confirmDiameterChangeDialog.open() + } + else { + Cura.ContainerManager.setContainerProperty(base.containerId, "material_diameter", "value", value); + base.setMetaDataEntry("approximate_diameter", old_approximate_diameter, getApproximateDiameter(value).toString()); + base.setMetaDataEntry("properties/diameter", properties.diameter, value); } - Cura.ContainerManager.setContainerProperty(base.containerId, "material_diameter", "value", value); } onValueChanged: updateCostPerMeter() } @@ -251,7 +306,7 @@ TabView visible: base.linkedMaterialNames != "" onClicked: { - Cura.ContainerManager.unlinkMaterial(base.containerId) + Cura.ContainerManager.unlinkMaterial(base.currentMaterialNode) base.reevaluateLinkedMaterials = true } } @@ -357,8 +412,20 @@ TabView onEditingFinished: materialPropertyProvider.setPropertyValue("value", value) } - UM.ContainerPropertyProvider { id: materialPropertyProvider; containerId: base.containerId; watchedProperties: [ "value" ]; key: model.key } - UM.ContainerPropertyProvider { id: machinePropertyProvider; containerId: Cura.MachineManager.activeDefinitionId; watchedProperties: [ "value" ]; key: model.key } + UM.ContainerPropertyProvider + { + id: materialPropertyProvider + containerId: base.containerId + watchedProperties: [ "value" ] + key: model.key + } + UM.ContainerPropertyProvider + { + id: machinePropertyProvider + containerId: Cura.MachineManager.activeDefinitionId + watchedProperties: [ "value" ] + key: model.key + } } } } @@ -405,9 +472,12 @@ TabView // Tiny convenience function to check if a value really changed before trying to set it. function setMetaDataEntry(entry_name, old_value, new_value) { if (old_value != new_value) { - Cura.ContainerManager.setContainerMetaDataEntry(base.containerId, entry_name, new_value) + Cura.ContainerManager.setContainerMetaDataEntry(base.currentMaterialNode, entry_name, new_value) // make sure the UI properties are updated as well since we don't re-fetch the entire model here - properties[entry_name] = new_value + // When the entry_name is something like properties/diameter, we take the last part of the entry_name + var list = entry_name.split("/") + var key = list[list.length - 1] + properties[key] = new_value } } @@ -439,26 +509,25 @@ TabView // update the display name of the material function updateMaterialDisplayName (old_name, new_name) { - // don't change when new name is the same if (old_name == new_name) { return } // update the values - Cura.ContainerManager.setContainerName(base.containerId, new_name) + base.materialManager.setMaterialName(base.currentMaterialNode, new_name) materialProperties.name = new_name } // update the type of the material function updateMaterialType (old_type, new_type) { base.setMetaDataEntry("material", old_type, new_type) - materialProperties.material_type = new_type + materialProperties.material= new_type } - // update the supplier of the material - function updateMaterialSupplier (old_supplier, new_supplier) { - base.setMetaDataEntry("brand", old_supplier, new_supplier) - materialProperties.supplier = new_supplier + // update the brand of the material + function updateMaterialBrand (old_brand, new_brand) { + base.setMetaDataEntry("brand", old_brand, new_brand) + materialProperties.brand = new_brand } } diff --git a/resources/qml/Preferences/MaterialsPage.qml b/resources/qml/Preferences/MaterialsPage.qml index 228f9c8ea2..7f06ffecde 100644 --- a/resources/qml/Preferences/MaterialsPage.qml +++ b/resources/qml/Preferences/MaterialsPage.qml @@ -1,414 +1,567 @@ -//Copyright (c) 2017 Ultimaker B.V. -//Cura is released under the terms of the LGPLv3 or higher. +// Copyright (c) 2018 Ultimaker B.V. +// Uranium is released under the terms of the LGPLv3 or higher. -import QtQuick 2.1 -import QtQuick.Controls 1.1 +import QtQuick 2.7 +import QtQuick.Controls 1.4 +import QtQuick.Layouts 1.3 import QtQuick.Dialogs 1.2 import UM 1.2 as UM import Cura 1.0 as Cura -UM.ManagementPage -{ - id: base; - title: catalog.i18nc("@title:tab", "Materials"); +Item +{ + id: base + + property QtObject materialManager: CuraApplication.getMaterialManager() + property var resetEnabled: false // Keep PreferencesDialog happy + + UM.I18nCatalog { id: catalog; name: "cura"; } + + Cura.MaterialManagementModel + { + id: materialsModel + } + + Label + { + id: titleLabel + + anchors + { + top: parent.top + left: parent.left + right: parent.right + margins: 5 * screenScaleFactor + } + + font.pointSize: 18 + text: catalog.i18nc("@title:tab", "Materials") + } + + property var hasCurrentItem: materialListView.currentItem != null + + property var currentItem: + { // is soon to be overwritten + var current_index = materialListView.currentIndex; + return materialsModel.getItem(current_index); + } + + property var isCurrentItemActivated: + { + const extruder_position = Cura.ExtruderManager.activeExtruderIndex; + const root_material_id = Cura.MachineManager.currentRootMaterialId[extruder_position]; + return base.currentItem.root_material_id == root_material_id; + } Component.onCompleted: { - // Workaround to make sure all of the items are visible - objectList.positionViewAtBeginning(); - } - - model: Cura.MaterialsModel - { - filter: + // Select the activated material when this page shows up + const extruder_position = Cura.ExtruderManager.activeExtruderIndex; + const active_root_material_id = Cura.MachineManager.currentRootMaterialId[extruder_position]; + var itemIndex = -1; + for (var i = 0; i < materialsModel.rowCount(); ++i) { - var result = { "type": "material", "approximate_diameter": Math.round(materialDiameterProvider.properties.value).toString() } - if(Cura.MachineManager.filterMaterialsByMachine) + var item = materialsModel.getItem(i); + if (item.root_material_id == active_root_material_id) { - result.definition = Cura.MachineManager.activeQualityDefinitionId; - if(Cura.MachineManager.hasVariants) - { - result.variant = Cura.MachineManager.activeQualityVariantId; - } + itemIndex = i; + break; } - else - { - result.definition = "fdmprinter"; - result.compatible = true; //NB: Only checks for compatibility in global version of material, but we don't have machine-specific materials anyway. - } - return result } - - sectionProperty: "brand" + materialListView.currentIndex = itemIndex; } - delegate: Rectangle + Row // Button Row { - width: objectList.width; - height: childrenRect.height; - color: isCurrentItem ? palette.highlight : index % 2 ? palette.base : palette.alternateBase - property bool isCurrentItem: ListView.isCurrentItem - - Row + id: buttonRow + anchors { - spacing: (UM.Theme.getSize("default_margin").width / 2) | 0 - anchors.left: parent.left - anchors.leftMargin: UM.Theme.getSize("default_margin").width - anchors.right: parent.right - Rectangle + left: parent.left + right: parent.right + top: titleLabel.bottom + } + height: childrenRect.height + + // Activate button + Button + { + text: catalog.i18nc("@action:button", "Activate") + iconName: "list-activate" + enabled: !isCurrentItemActivated + onClicked: { - width: (parent.height * 0.8) | 0 - height: (parent.height * 0.8) | 0 - color: model.metadata.color_code - border.color: isCurrentItem ? palette.highlightedText : palette.text; - anchors.verticalCenter: parent.verticalCenter - } - Label - { - width: Math.floor((parent.width * 0.3)) - text: model.metadata.material - elide: Text.ElideRight - font.italic: model.id == activeId - color: isCurrentItem ? palette.highlightedText : palette.text; - } - Label - { - text: (model.name != model.metadata.material) ? model.name : "" - elide: Text.ElideRight - font.italic: model.id == activeId - color: isCurrentItem ? palette.highlightedText : palette.text; + forceActiveFocus() + + const extruder_position = Cura.ExtruderManager.activeExtruderIndex; + Cura.MachineManager.setMaterial(extruder_position, base.currentItem.container_node); } } - MouseArea + // Create button + Button { - anchors.fill: parent; + text: catalog.i18nc("@action:button", "Create") + iconName: "list-add" onClicked: { forceActiveFocus(); - if(!parent.ListView.isCurrentItem) - { - parent.ListView.view.currentIndex = index; - base.itemActivated(); - } + base.newRootMaterialIdToSwitchTo = base.materialManager.createMaterial(); + base.toActivateNewMaterial = true; } } - } - - activeId: Cura.MachineManager.activeMaterialId - activeIndex: getIndexById(activeId) - function getIndexById(material_id) - { - for(var i = 0; i < model.rowCount(); i++) { - if (model.getItem(i).id == material_id) { - return i; - } - } - return -1; - } - - scrollviewCaption: - { - if (Cura.MachineManager.hasVariants) - { - catalog.i18nc("@action:label %1 is printer name, %2 is how this printer names variants, %3 is variant name", "Printer: %1, %2: %3").arg(Cura.MachineManager.activeMachineName).arg(Cura.MachineManager.activeDefinitionVariantsName).arg(Cura.MachineManager.activeVariantName) - } - else - { - catalog.i18nc("@action:label %1 is printer name","Printer: %1").arg(Cura.MachineManager.activeMachineName) - } - } - detailsVisible: true - - section.property: "section" - section.delegate: Label - { - text: section - font.bold: true - anchors.left: parent.left; - anchors.leftMargin: UM.Theme.getSize("default_lining").width; - } - - buttons: [ - - // Activate button - Button { - text: catalog.i18nc("@action:button", "Activate") - iconName: "list-activate"; - enabled: base.currentItem != null && base.currentItem.id != Cura.MachineManager.activeMaterialId && Cura.MachineManager.hasMaterials - onClicked: { - forceActiveFocus() - Cura.MachineManager.setActiveMaterial(base.currentItem.id) - currentItem = base.model.getItem(base.objectList.currentIndex) // Refresh the current item. - } - }, - - // Create button - Button { - text: catalog.i18nc("@action:button", "Create") - iconName: "list-add" - onClicked: { - forceActiveFocus() - Cura.ContainerManager.createMaterial() - } - }, // Duplicate button - Button { + Button + { text: catalog.i18nc("@action:button", "Duplicate"); - iconName: "list-add"; - enabled: base.currentItem != null - onClicked: { - forceActiveFocus() - Cura.ContainerManager.duplicateOriginalMaterial(base.currentItem.id) + iconName: "list-add" + enabled: base.hasCurrentItem + onClicked: + { + forceActiveFocus(); + base.newRootMaterialIdToSwitchTo = base.materialManager.duplicateMaterial(base.currentItem.container_node); + base.toActivateNewMaterial = true; } - }, + } // Remove button - Button { + Button + { text: catalog.i18nc("@action:button", "Remove") iconName: "list-remove" - enabled: base.currentItem != null && !base.currentItem.readOnly && !Cura.ContainerManager.isContainerUsed(base.currentItem.id) - onClicked: { - forceActiveFocus() - confirmDialog.open() + enabled: base.hasCurrentItem && !base.currentItem.is_read_only && !base.isCurrentItemActivated + onClicked: + { + forceActiveFocus(); + confirmRemoveMaterialDialog.open(); } - }, + } // Import button - Button { + Button + { text: catalog.i18nc("@action:button", "Import") iconName: "document-import" - onClicked: { - forceActiveFocus() - importDialog.open() + onClicked: + { + forceActiveFocus(); + importMaterialDialog.open(); } visible: true - }, + } // Export button - Button { + Button + { text: catalog.i18nc("@action:button", "Export") iconName: "document-export" - onClicked: { - forceActiveFocus() - exportDialog.open() + onClicked: + { + forceActiveFocus(); + exportMaterialDialog.open(); } enabled: currentItem != null } - - ] - - Item { - visible: base.currentItem != null - anchors.fill: parent - - Item - { - id: profileName - - width: parent.width; - height: childrenRect.height - - Label { text: materialProperties.name; font: UM.Theme.getFont("large"); } - } - - MaterialView - { - anchors - { - left: parent.left - right: parent.right - top: profileName.bottom - topMargin: UM.Theme.getSize("default_margin").height - bottom: parent.bottom - } - - editingEnabled: base.currentItem != null && !base.currentItem.readOnly - - properties: materialProperties - containerId: base.currentItem != null ? base.currentItem.id : "" - - property alias pane: base - } - - QtObject - { - id: materialProperties - - property string guid: "00000000-0000-0000-0000-000000000000" - property string name: "Unknown"; - property string profile_type: "Unknown"; - property string supplier: "Unknown"; - property string material_type: "Unknown"; - - property string color_name: "Yellow"; - property color color_code: "yellow"; - - property real density: 0.0; - property real diameter: 0.0; - property string approximate_diameter: "0"; - - property real spool_cost: 0.0; - property real spool_weight: 0.0; - property real spool_length: 0.0; - property real cost_per_meter: 0.0; - - property string description: ""; - property string adhesion_info: ""; - } - - UM.ConfirmRemoveDialog - { - id: confirmDialog - object: base.currentItem != null ? base.currentItem.name : "" - onYes: - { - // A material container can actually be multiple items, so we need to find (and remove) all of them. - var base_file = Cura.ContainerManager.getContainerMetaDataEntry(base.currentItem.id, "base_file") - if(base_file == "") - { - base_file = base.currentItem.id - } - var guid = Cura.ContainerManager.getContainerMetaDataEntry(base.currentItem.id, "GUID") - // remove base container first, it otherwise triggers loading the base file while removing other containers - var base_containers = Cura.ContainerManager.findInstanceContainers({"GUID": guid, "id": base_file, "base_file": base_file, "type": "material"}) - for(var i in base_containers) - { - Cura.ContainerManager.removeContainer(base_containers[i]); - } - var containers = Cura.ContainerManager.findInstanceContainers({"GUID": guid, "base_file": base_file, "type": "material"}) - for(var i in containers) - { - Cura.ContainerManager.removeContainer(containers[i]); - } - if(base.objectList.currentIndex > 0) - { - base.objectList.currentIndex--; - } - currentItem = base.model.getItem(base.objectList.currentIndex) // Refresh the current item. - } - } - - FileDialog - { - id: importDialog; - title: catalog.i18nc("@title:window", "Import Material"); - selectExisting: true; - nameFilters: Cura.ContainerManager.getContainerNameFilters("material") - folder: CuraApplication.getDefaultPath("dialog_material_path") - onAccepted: - { - var result = Cura.ContainerManager.importContainer(fileUrl) - - messageDialog.title = catalog.i18nc("@title:window", "Import Material") - messageDialog.text = catalog.i18nc("@info:status Don't translate the XML tags or !", "Could not import material %1: %2").arg(fileUrl).arg(result.message) - if(result.status == "success") - { - messageDialog.icon = StandardIcon.Information - messageDialog.text = catalog.i18nc("@info:status Don't translate the XML tag !", "Successfully imported material %1").arg(fileUrl) - } - else if(result.status == "duplicate") - { - messageDialog.icon = StandardIcon.Warning - } - else - { - messageDialog.icon = StandardIcon.Critical - } - messageDialog.open() - CuraApplication.setDefaultPath("dialog_material_path", folder) - } - } - - FileDialog - { - id: exportDialog; - title: catalog.i18nc("@title:window", "Export Material"); - selectExisting: false; - nameFilters: Cura.ContainerManager.getContainerNameFilters("material") - folder: CuraApplication.getDefaultPath("dialog_material_path") - onAccepted: - { - if(base.currentItem.metadata.base_file) - { - var result = Cura.ContainerManager.exportContainer(base.currentItem.metadata.base_file, selectedNameFilter, fileUrl) - } - else - { - var result = Cura.ContainerManager.exportContainer(base.currentItem.id, selectedNameFilter, fileUrl) - } - - messageDialog.title = catalog.i18nc("@title:window", "Export Material") - if(result.status == "error") - { - messageDialog.icon = StandardIcon.Critical - messageDialog.text = catalog.i18nc("@info:status Don't translate the XML tags and !", "Failed to export material to %1: %2").arg(fileUrl).arg(result.message) - messageDialog.open() - } - else if(result.status == "success") - { - messageDialog.icon = StandardIcon.Information - messageDialog.text = catalog.i18nc("@info:status Don't translate the XML tag !", "Successfully exported material to %1").arg(result.path) - messageDialog.open() - } - CuraApplication.setDefaultPath("dialog_material_path", folder) - } - } - - MessageDialog - { - id: messageDialog - } - - UM.SettingPropertyProvider - { - id: materialDiameterProvider - - containerStackId: Cura.ExtruderManager.activeExtruderStackId - key: "material_diameter" - watchedProperties: [ "value" ] - storeIndex: 5 - } - - UM.I18nCatalog { id: catalog; name: "cura"; } - SystemPalette { id: palette } } - onCurrentItemChanged: + property string newRootMaterialIdToSwitchTo: "" + property bool toActivateNewMaterial: false + + // This connection makes sure that we will switch to the new + Connections { - if(currentItem == null) + target: materialsModel + onItemsChanged: { - return - } - materialProperties.name = currentItem.name; - materialProperties.guid = Cura.ContainerManager.getContainerMetaDataEntry(base.currentItem.id, "GUID"); + var currentItemId = base.currentItem == null ? "" : base.currentItem.root_material_id; + var position = Cura.ExtruderManager.activeExtruderIndex; - if(currentItem.metadata != undefined && currentItem.metadata != null) - { - materialProperties.supplier = currentItem.metadata.brand ? currentItem.metadata.brand : "Unknown"; - materialProperties.material_type = currentItem.metadata.material ? currentItem.metadata.material : "Unknown"; - materialProperties.color_name = currentItem.metadata.color_name ? currentItem.metadata.color_name : "Yellow"; - materialProperties.color_code = currentItem.metadata.color_code ? currentItem.metadata.color_code : "yellow"; - - materialProperties.description = currentItem.metadata.description ? currentItem.metadata.description : ""; - materialProperties.adhesion_info = currentItem.metadata.adhesion_info ? currentItem.metadata.adhesion_info : ""; - - if(currentItem.metadata.properties != undefined && currentItem.metadata.properties != null) + // try to pick the currently selected item; it may have been moved + if (base.newRootMaterialIdToSwitchTo == "") { - materialProperties.density = currentItem.metadata.properties.density ? currentItem.metadata.properties.density : 0.0; - materialProperties.diameter = currentItem.metadata.properties.diameter ? currentItem.metadata.properties.diameter : 0.0; - materialProperties.approximate_diameter = currentItem.metadata.approximate_diameter ? currentItem.metadata.approximate_diameter : "0"; + base.newRootMaterialIdToSwitchTo = currentItemId; + } + + for (var idx = 0; idx < materialsModel.rowCount(); ++idx) + { + var item = materialsModel.getItem(idx); + if (item.root_material_id == base.newRootMaterialIdToSwitchTo) + { + // Switch to the newly created profile if needed + materialListView.currentIndex = idx; + materialListView.activateDetailsWithIndex(materialListView.currentIndex); + if (base.toActivateNewMaterial) + { + Cura.MachineManager.setMaterial(position, item.container_node); + } + base.newRootMaterialIdToSwitchTo = ""; + base.toActivateNewMaterial = false; + return + } + } + + materialListView.currentIndex = 0; + materialListView.activateDetailsWithIndex(materialListView.currentIndex); + if (base.toActivateNewMaterial) + { + Cura.MachineManager.setMaterial(position, materialsModel.getItem(0).container_node); + } + base.newRootMaterialIdToSwitchTo = ""; + base.toActivateNewMaterial = false; + } + } + + MessageDialog + { + id: confirmRemoveMaterialDialog + + icon: StandardIcon.Question; + title: catalog.i18nc("@title:window", "Confirm Remove") + text: catalog.i18nc("@label (%1 is object name)", "Are you sure you wish to remove %1? This cannot be undone!").arg(base.currentItem.name) + standardButtons: StandardButton.Yes | StandardButton.No + modality: Qt.ApplicationModal + + onYes: + { + base.materialManager.removeMaterial(base.currentItem.container_node); + } + } + + FileDialog + { + id: importMaterialDialog + title: catalog.i18nc("@title:window", "Import Material") + selectExisting: true + nameFilters: Cura.ContainerManager.getContainerNameFilters("material") + folder: CuraApplication.getDefaultPath("dialog_material_path") + onAccepted: + { + var result = Cura.ContainerManager.importMaterialContainer(fileUrl); + + messageDialog.title = catalog.i18nc("@title:window", "Import Material"); + messageDialog.text = catalog.i18nc("@info:status Don't translate the XML tags or !", "Could not import material %1: %2").arg(fileUrl).arg(result.message); + if (result.status == "success") + { + messageDialog.icon = StandardIcon.Information; + messageDialog.text = catalog.i18nc("@info:status Don't translate the XML tag !", "Successfully imported material %1").arg(fileUrl); + } + else if (result.status == "duplicate") + { + messageDialog.icon = StandardIcon.Warning; } else { - materialProperties.density = 0.0; - materialProperties.diameter = 0.0; - materialProperties.approximate_diameter = "0"; + messageDialog.icon = StandardIcon.Critical; + } + messageDialog.open(); + CuraApplication.setDefaultPath("dialog_material_path", folder); + } + } + + FileDialog + { + id: exportMaterialDialog + title: catalog.i18nc("@title:window", "Export Material") + selectExisting: false + nameFilters: Cura.ContainerManager.getContainerNameFilters("material") + folder: CuraApplication.getDefaultPath("dialog_material_path") + onAccepted: + { + var result = Cura.ContainerManager.exportContainer(base.currentItem.root_material_id, selectedNameFilter, fileUrl); + + messageDialog.title = catalog.i18nc("@title:window", "Export Material"); + if (result.status == "error") + { + messageDialog.icon = StandardIcon.Critical; + messageDialog.text = catalog.i18nc("@info:status Don't translate the XML tags and !", "Failed to export material to %1: %2").arg(fileUrl).arg(result.message); + messageDialog.open(); + } + else if (result.status == "success") + { + messageDialog.icon = StandardIcon.Information; + messageDialog.text = catalog.i18nc("@info:status Don't translate the XML tag !", "Successfully exported material to %1").arg(result.path); + messageDialog.open(); + } + CuraApplication.setDefaultPath("dialog_material_path", folder); + } + } + + MessageDialog + { + id: messageDialog + } + + + Item { + id: contentsItem + + anchors + { + top: titleLabel.bottom + left: parent.left + right: parent.right + bottom: parent.bottom + margins: 5 * screenScaleFactor + bottomMargin: 0 + } + + clip: true + } + + Item + { + anchors + { + top: buttonRow.bottom + topMargin: UM.Theme.getSize("default_margin").height + left: parent.left + right: parent.right + bottom: parent.bottom + } + + SystemPalette { id: palette } + + Label + { + id: captionLabel + anchors + { + top: parent.top + left: parent.left + } + visible: text != "" + text: + { + var caption = catalog.i18nc("@action:label", "Printer") + ": " + Cura.MachineManager.activeMachineName; + if (Cura.MachineManager.hasVariants) + { + caption += ", " + Cura.MachineManager.activeDefinitionVariantsName + ": " + Cura.MachineManager.activeVariantName; + } + return caption; + } + width: materialScrollView.width + elide: Text.ElideRight + } + + ScrollView + { + id: materialScrollView + 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 + { + parent: viewport + anchors.fill: parent + color: palette.light + } + + width: true ? (parent.width * 0.4) | 0 : parent.width + + ListView + { + id: materialListView + + model: materialsModel + + section.property: "brand" + section.criteria: ViewSection.FullString + section.delegate: Rectangle + { + width: materialScrollView.width + height: childrenRect.height + color: palette.light + + Label + { + anchors.left: parent.left + anchors.leftMargin: UM.Theme.getSize("default_lining").width + text: section + font.bold: true + color: palette.text + } + } + + delegate: Rectangle + { + width: materialScrollView.width + height: childrenRect.height + color: ListView.isCurrentItem ? palette.highlight : (model.index % 2) ? palette.base : palette.alternateBase + + Row + { + id: materialRow + spacing: (UM.Theme.getSize("default_margin").width / 2) | 0 + anchors.left: parent.left + anchors.leftMargin: UM.Theme.getSize("default_margin").width + anchors.right: parent.right + + property bool isItemActivated: + { + const extruder_position = Cura.ExtruderManager.activeExtruderIndex; + const root_material_id = Cura.MachineManager.currentRootMaterialId[extruder_position]; + return model.root_material_id == root_material_id; + } + + Rectangle + { + width: Math.floor(parent.height * 0.8) + height: Math.floor(parent.height * 0.8) + color: model.color_code + border.color: parent.ListView.isCurrentItem ? palette.highlightedText : palette.text; + anchors.verticalCenter: parent.verticalCenter + } + Label + { + width: Math.floor((parent.width * 0.3)) + text: model.material + elide: Text.ElideRight + font.italic: materialRow.isItemActivated + color: parent.ListView.isCurrentItem ? palette.highlightedText : palette.text; + } + Label + { + text: (model.name != model.material) ? model.name : "" + elide: Text.ElideRight + font.italic: materialRow.isItemActivated + color: parent.ListView.isCurrentItem ? palette.highlightedText : palette.text; + } + } + + MouseArea + { + anchors.fill: parent + onClicked: + { + parent.ListView.view.currentIndex = model.index; + } + } + } + + function activateDetailsWithIndex(index) + { + var model = materialsModel.getItem(index); + base.currentItem = model; + materialDetailsView.containerId = model.container_id; + materialDetailsView.currentMaterialNode = model.container_node; + + detailsPanel.updateMaterialPropertiesObject(); + } + + onCurrentIndexChanged: + { + forceActiveFocus(); // causes the changed fields to be saved + activateDetailsWithIndex(currentIndex); + } + } + } + + + Item + { + id: detailsPanel + + anchors + { + left: materialScrollView.right + leftMargin: UM.Theme.getSize("default_margin").width + top: parent.top + bottom: parent.bottom + right: parent.right + } + + function updateMaterialPropertiesObject() + { + var currentItem = materialsModel.getItem(materialListView.currentIndex); + + materialProperties.name = currentItem.name; + materialProperties.guid = currentItem.guid; + + materialProperties.brand = currentItem.brand ? currentItem.brand : "Unknown"; + materialProperties.material = currentItem.material ? currentItem.material : "Unknown"; + materialProperties.color_name = currentItem.color_name ? currentItem.color_name : "Yellow"; + materialProperties.color_code = currentItem.color_code ? currentItem.color_code : "yellow"; + + materialProperties.description = currentItem.description ? currentItem.description : ""; + materialProperties.adhesion_info = currentItem.adhesion_info ? currentItem.adhesion_info : ""; + + materialProperties.density = currentItem.density ? currentItem.density : 0.0; + materialProperties.diameter = currentItem.diameter ? currentItem.diameter : 0.0; + materialProperties.approximate_diameter = currentItem.approximate_diameter ? currentItem.approximate_diameter : "0"; + } + + Item + { + anchors.fill: parent + + Item // Material title Label + { + id: profileName + + width: parent.width + height: childrenRect.height + + Label { + text: materialProperties.name + font: UM.Theme.getFont("large") + } + } + + MaterialView // Material detailed information view below the title Label + { + id: materialDetailsView + anchors + { + left: parent.left + right: parent.right + top: profileName.bottom + topMargin: UM.Theme.getSize("default_margin").height + bottom: parent.bottom + } + + editingEnabled: base.currentItem != null && !base.currentItem.is_read_only + + properties: materialProperties + containerId: base.currentItem != null ? base.currentItem.container_id : "" + currentMaterialNode: base.currentItem.container_node + + property alias pane: base + } + + QtObject + { + id: materialProperties + + property string guid: "00000000-0000-0000-0000-000000000000" + property string name: "Unknown"; + property string profile_type: "Unknown"; + property string brand: "Unknown"; + property string material: "Unknown"; // This needs to be named as "material" to be consistent with + // the material container's metadata entry + + property string color_name: "Yellow"; + property color color_code: "yellow"; + + property real density: 0.0; + property real diameter: 0.0; + property string approximate_diameter: "0"; + + property real spool_cost: 0.0; + property real spool_weight: 0.0; + property real spool_length: 0.0; + property real cost_per_meter: 0.0; + + property string description: ""; + property string adhesion_info: ""; + } + } } } } diff --git a/resources/qml/Preferences/ProfileTab.qml b/resources/qml/Preferences/ProfileTab.qml index acebea3500..0ae0899051 100644 --- a/resources/qml/Preferences/ProfileTab.qml +++ b/resources/qml/Preferences/ProfileTab.qml @@ -1,8 +1,8 @@ -// Copyright (c) 2016 Ultimaker B.V. +// 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 2.7 +import QtQuick.Controls 1.4 import UM 1.2 as UM import Cura 1.0 as Cura @@ -11,10 +11,17 @@ Tab { id: base - property string extruderId: ""; - property string extruderDefinition: ""; - property string quality: ""; - property string material: ""; + property int extruderPosition: -1 //Denotes the global stack. + property var qualityItem: null + + property bool isQualityItemCurrentlyActivated: + { + if (qualityItem == null) + { + return false; + } + return qualityItem.name == Cura.MachineManager.activeQualityOrQualityChangesName; + } TableView { @@ -38,8 +45,8 @@ Tab 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 - font.strikeout: styleData.column == 1 && quality == Cura.MachineManager.globalQualityId && setting.user_value != "" - font.italic: setting.profile_value_source == "quality_changes" || (quality == Cura.MachineManager.globalQualityId && setting.user_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 color: styleData.textColor elide: Text.ElideRight @@ -65,7 +72,7 @@ Tab { role: "user_value" title: catalog.i18nc("@title:column", "Current"); - visible: quality == Cura.MachineManager.globalQualityId + visible: base.isQualityItemCurrentlyActivated width: (parent.width * 0.18) | 0 delegate: itemDelegate } @@ -87,10 +94,8 @@ Tab model: Cura.QualitySettingsModel { id: qualitySettings - extruderId: base.extruderId - extruderDefinition: base.extruderDefinition - quality: base.quality != null ? base.quality : "" - material: base.material != null ? base.material : "" + selectedPosition: base.extruderPosition + selectedQualityItem: base.qualityItem == null ? {} : base.qualityItem } SystemPalette { id: palette } diff --git a/resources/qml/Preferences/ProfilesPage.qml b/resources/qml/Preferences/ProfilesPage.qml index 5e040cdba2..ff35e27eeb 100644 --- a/resources/qml/Preferences/ProfilesPage.qml +++ b/resources/qml/Preferences/ProfilesPage.qml @@ -1,355 +1,535 @@ -// Copyright (c) 2016 Ultimaker B.V. -// Cura is released under the terms of the LGPLv3 or higher. +// Copyright (c) 2018 Ultimaker B.V. +// Uranium is released under the terms of the LGPLv3 or higher. -import QtQuick 2.1 -import QtQuick.Controls 1.1 +import QtQuick 2.7 +import QtQuick.Controls 1.4 +import QtQuick.Layouts 1.3 import QtQuick.Dialogs 1.2 import UM 1.2 as UM import Cura 1.0 as Cura -UM.ManagementPage + +Item { - id: base; + id: base - title: catalog.i18nc("@title:tab", "Profiles"); - property var extrudersModel: Cura.ExtrudersModel{} + property QtObject qualityManager: CuraApplication.getQualityManager() + property var resetEnabled: false // Keep PreferencesDialog happy + property var extrudersModel: Cura.ExtrudersModel {} - model: Cura.QualityAndUserProfilesModel { } + UM.I18nCatalog { id: catalog; name: "cura"; } - section.property: "readOnly" - section.delegate: Rectangle + Cura.QualityManagementModel { + id: qualitiesModel + } + + Label { + id: titleLabel + anchors { + top: parent.top + left: parent.left + right: parent.right + margins: 5 * screenScaleFactor + } + font.pointSize: 18 + text: catalog.i18nc("@title:tab", "Profiles") + } + + property var hasCurrentItem: base.currentItem != null + + property var currentItem: { + var current_index = qualityListView.currentIndex; + return (current_index == -1) ? null : qualitiesModel.getItem(current_index); + } + + property var currentItemName: hasCurrentItem ? base.currentItem.name : "" + + property var isCurrentItemActivated: { + if (!base.currentItem) { + return false; + } + return base.currentItem.name == Cura.MachineManager.activeQualityOrQualityChangesName; + } + + property var canCreateProfile: { + return isCurrentItemActivated && Cura.MachineManager.hasUserSettings; + } + + Row // Button Row { - height: childrenRect.height; - - Label - { - anchors.left: parent.left; - anchors.leftMargin: UM.Theme.getSize("default_lining").width; - text: section == "true" ? catalog.i18nc("@label", "Protected profiles") : catalog.i18nc("@label", "Custom profiles") - font.bold: true + id: buttonRow + anchors { + left: parent.left + right: parent.right + top: titleLabel.bottom } - } + height: childrenRect.height - activeId: Cura.MachineManager.activeQualityId - activeIndex: { - for(var i = 0; i < model.rowCount(); i++) { - if (model.getItem(i).id == Cura.MachineManager.activeQualityId) { - return i; - } - } - return -1; - } - - function canCreateProfile() { - return base.currentItem && (base.currentItem.id == Cura.MachineManager.activeQualityId) && Cura.MachineManager.hasUserSettings; - } - - buttons: [ + // Activate button Button { - text: catalog.i18nc("@action:button", "Activate"); - iconName: "list-activate"; - enabled: base.currentItem != null ? base.currentItem.id != Cura.MachineManager.activeQualityId : false; - onClicked: - { - Cura.MachineManager.setActiveQuality(base.currentItem.id) - currentItem = base.model.getItem(base.objectList.currentIndex) // Refresh the current 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 { + Cura.MachineManager.setQualityChangesGroup(base.currentItem.quality_changes_group); + } } - }, + } // Create button Button { text: catalog.i18nc("@label", "Create") - enabled: base.canCreateProfile() && !Cura.MachineManager.stacksHaveErrors - visible: base.canCreateProfile() - iconName: "list-add"; + iconName: "list-add" + enabled: base.canCreateProfile && !Cura.MachineManager.stacksHaveErrors + visible: base.canCreateProfile - onClicked: - { - newNameDialog.object = base.currentItem != null ? Cura.ContainerManager.makeUniqueName(base.currentItem.name) : ""; - newNameDialog.open(); - newNameDialog.selectText(); + onClicked: { + createQualityDialog.object = Cura.ContainerManager.makeUniqueName(base.currentItem.name); + createQualityDialog.open(); + createQualityDialog.selectText(); } - }, + } // Duplicate button Button { text: catalog.i18nc("@label", "Duplicate") - enabled: ! base.canCreateProfile() - visible: ! base.canCreateProfile() - iconName: "list-add"; + iconName: "list-add" + enabled: !base.canCreateProfile + visible: !base.canCreateProfile - onClicked: - { - newDuplicateNameDialog.object = Cura.ContainerManager.makeUniqueName(base.currentItem.name); - newDuplicateNameDialog.open(); - newDuplicateNameDialog.selectText(); + onClicked: { + duplicateQualityDialog.object = Cura.ContainerManager.makeUniqueName(base.currentItem.name); + duplicateQualityDialog.open(); + duplicateQualityDialog.selectText(); } - }, + } + // Remove button Button { - text: catalog.i18nc("@action:button", "Remove"); - iconName: "list-remove"; - enabled: base.currentItem != null ? !base.currentItem.readOnly && !Cura.ContainerManager.isContainerUsed(base.currentItem.id) : false; - onClicked: confirmDialog.open(); - }, - Button - { - text: catalog.i18nc("@action:button", "Rename"); - iconName: "edit-rename"; - enabled: base.currentItem != null ? !base.currentItem.readOnly : false; - onClicked: - { - renameDialog.open(); - renameDialog.selectText(); + text: catalog.i18nc("@action:button", "Remove") + iconName: "list-remove" + enabled: base.hasCurrentItem && !base.currentItem.is_read_only && !base.isCurrentItemActivated + onClicked: { + forceActiveFocus(); + confirmRemoveQualityDialog.open(); } - }, + } + + // Rename button Button { - text: catalog.i18nc("@action:button", "Import"); - iconName: "document-import"; - onClicked: importDialog.open(); - }, + text: catalog.i18nc("@action:button", "Rename") + iconName: "edit-rename" + enabled: base.hasCurrentItem && !base.currentItem.is_read_only + onClicked: { + renameQualityDialog.object = base.currentItem.name; + renameQualityDialog.open(); + renameQualityDialog.selectText(); + } + } + + // Import button + Button + { + text: catalog.i18nc("@action:button", "Import") + iconName: "document-import" + onClicked: { + importDialog.open(); + } + } + + // Export button Button { text: catalog.i18nc("@action:button", "Export") iconName: "document-export" - onClicked: exportDialog.open() - enabled: currentItem != null && !base.currentItem.readOnly + enabled: base.hasCurrentItem && !base.currentItem.is_read_only + onClicked: { + exportDialog.open(); + } } - ] - - scrollviewCaption: catalog.i18nc("@label %1 is printer name","Printer: %1").arg(Cura.MachineManager.activeMachineName) + } + // Click create profile from ... in Profile context menu signal createProfile() onCreateProfile: { - newNameDialog.object = base.currentItem != null ? Cura.ContainerManager.makeUniqueName(base.currentItem.name) : ""; - newNameDialog.open(); - newNameDialog.selectText(); + createQualityDialog.object = Cura.ContainerManager.makeUniqueName(Cura.MachineManager.activeQualityOrQualityChangesName); + createQualityDialog.open(); + createQualityDialog.selectText(); } - signal selectContainer(string name) - onSelectContainer: + // Dialog to request a name when creating a new profile + UM.RenameDialog { - objectList.currentIndex = objectList.model.find("name", name); + id: createQualityDialog + title: catalog.i18nc("@title:window", "Create Profile") + object: "" + onAccepted: + { + base.newQualityNameToSelect = newName; // We want to switch to the new profile once it's created + base.toActivateNewQuality = true; + base.qualityManager.createQualityChanges(newName); + } + } + + property string newQualityNameToSelect: "" + property bool toActivateNewQuality: false + + // This connection makes sure that we will switch to the correct quality after the model gets updated + Connections + { + target: qualitiesModel + onItemsChanged: { + var toSelectItemName = base.currentItem == null ? "" : base.currentItem.name; + if (newQualityNameToSelect != "") { + toSelectItemName = newQualityNameToSelect; + } + + var newIdx = -1; // Default to nothing if nothing can be found + if (toSelectItemName != "") { + // Select the required quality name if given + for (var idx = 0; idx < qualitiesModel.rowCount(); ++idx) { + var item = qualitiesModel.getItem(idx); + if (item.name == toSelectItemName) { + // Switch to the newly created profile if needed + newIdx = idx; + if (base.toActivateNewQuality) { + // Activate this custom quality if required + Cura.MachineManager.setQualityChangesGroup(item.quality_changes_group); + } + break; + } + } + } + qualityListView.currentIndex = newIdx; + + // Reset states + base.newQualityNameToSelect = ""; + base.toActivateNewQuality = false; + } + } + + // Dialog to request a name when duplicating a new profile + UM.RenameDialog + { + id: duplicateQualityDialog + title: catalog.i18nc("@title:window", "Duplicate Profile") + object: "" + onAccepted: + { + base.qualityManager.duplicateQualityChanges(newName, base.currentItem); + } + } + + // Confirmation dialog for removing a profile + MessageDialog + { + id: confirmRemoveQualityDialog + + icon: StandardIcon.Question; + title: catalog.i18nc("@title:window", "Confirm Remove") + text: catalog.i18nc("@label (%1 is object name)", "Are you sure you wish to remove %1? This cannot be undone!").arg(base.currentItemName) + standardButtons: StandardButton.Yes | StandardButton.No + modality: Qt.ApplicationModal + + onYes: + { + base.qualityManager.removeQualityChangesGroup(base.currentItem.quality_changes_group); + // reset current item to the first if available + qualityListView.currentIndex = -1; // Reset selection. + } + } + + // Dialog to rename a quality profile + UM.RenameDialog + { + id: renameQualityDialog + title: catalog.i18nc("@title:window", "Rename Profile") + object: "" + onAccepted: + { + var actualNewName = base.qualityManager.renameQualityChangesGroup(base.currentItem.quality_changes_group, newName); + base.newQualityNameToSelect = actualNewName; // Select the new name after the model gets updated + } + } + + // Dialog for importing a quality profile + FileDialog + { + id: importDialog + title: catalog.i18nc("@title:window", "Import Profile") + selectExisting: true + nameFilters: qualitiesModel.getFileNameFilters("profile_reader") + folder: CuraApplication.getDefaultPath("dialog_profile_path") + onAccepted: + { + var result = Cura.ContainerManager.importProfile(fileUrl); + messageDialog.text = result.message; + if (result.status == "ok") { + messageDialog.icon = StandardIcon.Information; + } + else if (result.status == "duplicate") { + messageDialog.icon = StandardIcon.Warning; + } + else { + messageDialog.icon = StandardIcon.Critical; + } + messageDialog.open(); + CuraApplication.setDefaultPath("dialog_profile_path", folder); + } + } + + // Dialog for exporting a quality profile + FileDialog + { + id: exportDialog + title: catalog.i18nc("@title:window", "Export Profile") + selectExisting: false + nameFilters: qualitiesModel.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") { + messageDialog.icon = StandardIcon.Critical; + messageDialog.text = result.message; + messageDialog.open(); + } + + // else pop-up Message thing from python code + CuraApplication.setDefaultPath("dialog_profile_path", folder); + } } Item { - visible: base.currentItem != null - anchors.fill: parent + id: contentsItem - Label { - id: profileName - text: base.currentItem ? base.currentItem.name: "" - font: UM.Theme.getFont("large") - width: parent.width - elide: Text.ElideRight + anchors { + top: titleLabel.bottom + left: parent.left + right: parent.right + bottom: parent.bottom + margins: 5 * screenScaleFactor + bottomMargin: 0 } - Flow { - id: currentSettingsActions - visible: currentItem && currentItem.id == Cura.MachineManager.activeQualityId - anchors.left: parent.left - anchors.right: parent.right - anchors.top: profileName.bottom - anchors.topMargin: UM.Theme.getSize("default_margin").height - - Button - { - text: { - return catalog.i18nc("@action:button", "Update profile with current settings/overrides"); - } - enabled: Cura.MachineManager.hasUserSettings && !Cura.MachineManager.isReadOnly(Cura.MachineManager.activeQualityId) - onClicked: Cura.ContainerManager.updateQualityChanges() - } - - Button - { - text: catalog.i18nc("@action:button", "Discard current changes"); - enabled: Cura.MachineManager.hasUserSettings - onClicked: Cura.ContainerManager.clearUserContainers(); - } - } - - Column { - id: profileNotices - anchors.top: currentSettingsActions.visible ? currentSettingsActions.bottom : currentSettingsActions.anchors.top - anchors.topMargin: UM.Theme.getSize("default_margin").height - anchors.left: parent.left - anchors.right: parent.right - spacing: UM.Theme.getSize("default_margin").height - - 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 { - id: noCurrentSettingsMessage - visible: currentItem && currentItem.id == Cura.MachineManager.activeQualityId && !Cura.MachineManager.hasUserSettings - text: catalog.i18nc("@action:label", "Your current settings match the selected profile.") - wrapMode: Text.WordWrap - width: parent.width - } - } - - TabView - { - anchors.left: parent.left - anchors.top: profileNotices.visible ? profileNotices.bottom : profileNotices.anchors.top - anchors.topMargin: UM.Theme.getSize("default_margin").height - anchors.right: parent.right - anchors.bottom: parent.bottom - - currentIndex: Cura.ExtruderManager.extruderCount > 0 ? Cura.ExtruderManager.activeExtruderIndex + 1 : 0 - - ProfileTab - { - title: catalog.i18nc("@title:tab", "Global Settings"); - quality: Cura.MachineManager.activeMachine.qualityChanges.id - material: Cura.MachineManager.activeMachine.material.id - } - - Repeater - { - model: base.extrudersModel - - ProfileTab - { - title: model.name; - extruderId: model.id; - extruderDefinition: model.definition; - quality: base.currentItem != null ? base.currentItem.id : ""; - material: Cura.MachineManager.allActiveMaterialIds[model.id] - } - } - } + clip: true } Item { - UM.I18nCatalog { id: catalog; name: "cura"; } + anchors { + top: buttonRow.bottom + topMargin: UM.Theme.getSize("default_margin").height + left: parent.left + right: parent.right + bottom: parent.bottom + } - UM.ConfirmRemoveDialog + SystemPalette { id: palette } + + Label { - id: confirmDialog - object: base.currentItem != null ? base.currentItem.name : "" - onYes: + id: captionLabel + anchors { + top: parent.top + left: parent.left + } + visible: text != "" + text: catalog.i18nc("@label %1 is printer name", "Printer: %1").arg(Cura.MachineManager.activeMachineName) + width: profileScrollView.width + elide: Text.ElideRight + } + + ScrollView + { + id: profileScrollView + 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 { + parent: viewport + anchors.fill: parent + color: palette.light + } + + width: true ? (parent.width * 0.4) | 0 : parent.width + + ListView { - var name = base.currentItem.name; - Cura.ContainerManager.removeQualityChanges(name) - if(Cura.MachineManager.activeQualityName == name) + id: qualityListView + + model: qualitiesModel + + section.property: "is_read_only" + section.delegate: Rectangle { - Cura.MachineManager.setActiveQuality(base.model.getItem(0).name) + height: childrenRect.height + + Label + { + anchors.left: parent.left + anchors.leftMargin: UM.Theme.getSize("default_lining").width + text: section == "true" ? catalog.i18nc("@label", "Protected profiles") : catalog.i18nc("@label", "Custom profiles") + font.bold: true + } + } + + delegate: Rectangle + { + width: profileScrollView.width + height: childrenRect.height + color: ListView.isCurrentItem ? palette.highlight : (model.index % 2) ? palette.base : palette.alternateBase + + Row + { + spacing: (UM.Theme.getSize("default_margin").width / 2) | 0 + anchors.left: parent.left + anchors.leftMargin: UM.Theme.getSize("default_margin").width + anchors.right: parent.right + Label + { + width: Math.floor((parent.width * 0.8)) + text: model.name + elide: Text.ElideRight + font.italic: model.name == Cura.MachineManager.activeQualityOrQualityChangesName + color: parent.ListView.isCurrentItem ? palette.highlightedText : palette.text + } + } + + MouseArea + { + anchors.fill: parent + onClicked: { + parent.ListView.view.currentIndex = model.index; + } + } } - objectList.currentIndex = -1 //Reset selection. } } - UM.RenameDialog + // details panel on the right + Item { - title: catalog.i18nc("@title:window", "Rename Profile") - id: renameDialog; - object: base.currentItem != null ? base.currentItem.name : "" - onAccepted: - { - Cura.ContainerManager.renameQualityChanges(base.currentItem.name, newName) - objectList.currentIndex = -1 //Reset selection. + id: detailsPanel + + anchors { + left: profileScrollView.right + leftMargin: UM.Theme.getSize("default_margin").width + top: parent.top + bottom: parent.bottom + right: parent.right } - } - // Dialog to request a name when creating a new profile - UM.RenameDialog - { - title: catalog.i18nc("@title:window", "Create Profile") - id: newNameDialog; - object: ""; - onAccepted: + Item { - var selectedContainer = Cura.ContainerManager.createQualityChanges(newName); - base.selectContainer(selectedContainer); - objectList.currentIndex = -1 //Reset selection. - } - } + anchors.fill: parent + visible: base.currentItem != null - // Dialog to request a name when duplicating a new profile - UM.RenameDialog - { - title: catalog.i18nc("@title:window", "Duplicate Profile") - id: newDuplicateNameDialog; - object: ""; - onAccepted: - { - var selectedContainer = Cura.ContainerManager.duplicateQualityOrQualityChanges(base.currentItem.name, newName); - base.selectContainer(selectedContainer); - objectList.currentIndex = -1 //Reset selection. - } - } - - MessageDialog - { - id: messageDialog - title: catalog.i18nc("@window:title", "Import Profile"); - standardButtons: StandardButton.Ok - modality: Qt.ApplicationModal - } - - FileDialog - { - id: importDialog; - title: catalog.i18nc("@title:window", "Import Profile"); - selectExisting: true; - nameFilters: base.model.getFileNameFilters("profile_reader") - folder: CuraApplication.getDefaultPath("dialog_profile_path") - onAccepted: - { - var result = Cura.ContainerManager.importProfile(fileUrl); - messageDialog.text = result.message - if(result.status == "ok") + Item // Profile title Label { - messageDialog.icon = StandardIcon.Information - } - else if(result.status == "duplicate") - { - messageDialog.icon = StandardIcon.Warning - } - else - { - messageDialog.icon = StandardIcon.Critical - } - messageDialog.open() - CuraApplication.setDefaultPath("dialog_profile_path", folder) - } - } + id: profileName - FileDialog - { - id: exportDialog; - title: catalog.i18nc("@title:window", "Export Profile"); - selectExisting: false; - nameFilters: base.model.getFileNameFilters("profile_writer") - folder: CuraApplication.getDefaultPath("dialog_profile_path") - onAccepted: - { - var containers = Cura.ContainerManager.findInstanceContainers({"type": "quality_changes", "name": base.currentItem.name}) - var result = Cura.ContainerManager.exportProfile(containers, fileUrl, selectedNameFilter) + width: parent.width + height: childrenRect.height - if(result && result.status == "error") - { - messageDialog.icon = StandardIcon.Critical - messageDialog.text = result.message - messageDialog.open() + Label { + text: base.currentItemName + font: UM.Theme.getFont("large") + } } - // else pop-up Message thing from python code - CuraApplication.setDefaultPath("dialog_profile_path", folder) + Flow { + id: currentSettingsActions + visible: base.hasCurrentItem && base.currentItem.name == Cura.MachineManager.activeQualityOrQualityChangesName + anchors.left: parent.left + anchors.right: parent.right + anchors.top: profileName.bottom + anchors.topMargin: UM.Theme.getSize("default_margin").height + + Button + { + text: catalog.i18nc("@action:button", "Update profile with current settings/overrides") + enabled: Cura.MachineManager.hasUserSettings && !base.currentItem.is_read_only + onClicked: Cura.ContainerManager.updateQualityChanges() + } + + Button + { + text: catalog.i18nc("@action:button", "Discard current changes"); + enabled: Cura.MachineManager.hasUserSettings + onClicked: Cura.ContainerManager.clearUserContainers(); + } + } + + Column { + id: profileNotices + anchors.top: currentSettingsActions.visible ? currentSettingsActions.bottom : currentSettingsActions.anchors.top + anchors.topMargin: UM.Theme.getSize("default_margin").height + anchors.left: parent.left + anchors.right: parent.right + spacing: UM.Theme.getSize("default_margin").height + + 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 { + id: noCurrentSettingsMessage + visible: base.isCurrentItemActivated && !Cura.MachineManager.hasUserSettings + text: catalog.i18nc("@action:label", "Your current settings match the selected profile.") + wrapMode: Text.WordWrap + width: parent.width + } + } + + + TabView + { + anchors.left: parent.left + anchors.top: profileNotices.visible ? profileNotices.bottom : profileNotices.anchors.top + anchors.topMargin: UM.Theme.getSize("default_margin").height + anchors.right: parent.right + anchors.bottom: parent.bottom + + currentIndex: 0 + + ProfileTab + { + title: catalog.i18nc("@title:tab", "Global Settings") + qualityItem: base.currentItem + } + + Repeater + { + model: base.extrudersModel + + ProfileTab + { + title: model.name + extruderPosition: model.index + qualityItem: base.currentItem + } + } + } } } } diff --git a/resources/qml/Preferences/SettingVisibilityPage.qml b/resources/qml/Preferences/SettingVisibilityPage.qml index 5198ab1030..f0c24e2cbe 100644 --- a/resources/qml/Preferences/SettingVisibilityPage.qml +++ b/resources/qml/Preferences/SettingVisibilityPage.qml @@ -24,6 +24,11 @@ UM.PreferencesPage function reset() { UM.Preferences.resetPreference("general/visible_settings") + + // After calling this function update Setting visibility preset combobox. + // Reset should set default setting preset ("Basic") + visibilityPreset.setDefaultPreset() + } resetEnabled: true; @@ -32,6 +37,8 @@ UM.PreferencesPage id: base; anchors.fill: parent; + property bool inhibitSwitchToCustom: false + CheckBox { id: toggleVisibleSettings @@ -72,6 +79,15 @@ UM.PreferencesPage { definitionsModel.setAllVisible(false) } + + // After change set "Custom" option + + // If already "Custom" then don't do nothing + if (visibilityPreset.currentIndex != visibilityPreset.model.count - 1) + { + visibilityPreset.currentIndex = visibilityPreset.model.count - 1 + UM.Preferences.setValue("cura/active_setting_visibility_preset", visibilityPreset.model.getItem(visibilityPreset.currentIndex).id) + } } } } @@ -85,7 +101,8 @@ UM.PreferencesPage top: parent.top left: toggleVisibleSettings.right leftMargin: UM.Theme.getSize("default_margin").width - right: parent.right + right: visibilityPreset.left + rightMargin: UM.Theme.getSize("default_margin").width } placeholderText: catalog.i18nc("@label:textbox", "Filter...") @@ -93,6 +110,69 @@ UM.PreferencesPage onTextChanged: definitionsModel.filter = {"i18n_label": "*" + text} } + ComboBox + { + function setDefaultPreset() + { + visibilityPreset.currentIndex = 0 + } + + id: visibilityPreset + width: 150 * screenScaleFactor + anchors + { + top: parent.top + right: parent.right + } + + model: ListModel + { + id: visibilityPresetsModel + Component.onCompleted: + { + visibilityPresetsModel.append({text: catalog.i18nc("@action:inmenu", "Custom selection"), id: "custom"}); + + var presets = Cura.SettingVisibilityPresetsModel; + for(var i = 0; i < presets.rowCount(); i++) + { + visibilityPresetsModel.append({text: presets.getItem(i)["name"], id: presets.getItem(i)["id"]}); + } + } + } + + currentIndex: + { + // Load previously selected preset. + var index = Cura.SettingVisibilityPresetsModel.find("id", Cura.SettingVisibilityPresetsModel.activePreset); + if(index == -1) + { + return 0; + } + + return index + 1; // "Custom selection" entry is added in front, so index is off by 1 + } + + onActivated: + { + base.inhibitSwitchToCustom = true; + var preset_id = visibilityPresetsModel.get(index).id; + Cura.SettingVisibilityPresetsModel.setActivePreset(preset_id); + + UM.Preferences.setValue("cura/active_setting_visibility_preset", preset_id); + if (preset_id != "custom") + { + UM.Preferences.setValue("general/visible_settings", Cura.SettingVisibilityPresetsModel.getItem(index - 1).settings.join(";")); + // "Custom selection" entry is added in front, so index is off by 1 + } + else + { + // Restore custom set from preference + UM.Preferences.setValue("general/visible_settings", UM.Preferences.getValue("cura/custom_visible_settings")); + } + base.inhibitSwitchToCustom = false; + } + } + ScrollView { id: scrollView @@ -119,7 +199,16 @@ UM.PreferencesPage exclude: ["machine_settings", "command_line_settings"] showAncestors: true expanded: ["*"] - visibilityHandler: UM.SettingPreferenceVisibilityHandler { } + visibilityHandler: UM.SettingPreferenceVisibilityHandler + { + onVisibilityChanged: + { + if(Cura.SettingVisibilityPresetsModel.activePreset != "" && !base.inhibitSwitchToCustom) + { + Cura.SettingVisibilityPresetsModel.setActivePreset("custom"); + } + } + } } delegate: Loader @@ -165,4 +254,4 @@ UM.PreferencesPage UM.SettingVisibilityItem { } } } -} +} \ No newline at end of file diff --git a/resources/qml/PrintMonitor.qml b/resources/qml/PrintMonitor.qml index 471729192e..ae74170004 100644 --- a/resources/qml/PrintMonitor.qml +++ b/resources/qml/PrintMonitor.qml @@ -1,7 +1,7 @@ -// Copyright (c) 2017 Ultimaker B.V. +// Copyright (c) 2018 Ultimaker B.V. // Cura is released under the terms of the LGPLv3 or higher. -import QtQuick 2.2 +import QtQuick 2.7 import QtQuick.Controls 1.1 import QtQuick.Controls.Styles 1.1 import QtQuick.Layouts 1.1 @@ -50,7 +50,7 @@ Column ExtruderBox { color: UM.Theme.getColor("sidebar") - width: index == machineExtruderCount.properties.value - 1 && index % 2 == 0 ? extrudersGrid.width : Math.floor(extrudersGrid.width / 2 - UM.Theme.getSize("sidebar_lining_thin").width / 2) + width: index == machineExtruderCount.properties.value - 1 && index % 2 == 0 ? extrudersGrid.width : Math.round(extrudersGrid.width / 2 - UM.Theme.getSize("sidebar_lining_thin").width / 2) extruderModel: modelData } } @@ -122,7 +122,7 @@ Column { label: catalog.i18nc("@label", "Printing Time") value: activePrintJob != null ? getPrettyTime(activePrintJob.timeTotal) : "" - width:base.width + width: base.width visible: activePrinter != null } diff --git a/resources/qml/SaveButton.qml b/resources/qml/SaveButton.qml index bf44a29cf5..0369f492b4 100644 --- a/resources/qml/SaveButton.qml +++ b/resources/qml/SaveButton.qml @@ -1,7 +1,7 @@ -// Copyright (c) 2017 Ultimaker B.V. +// Copyright (c) 2018 Ultimaker B.V. // Cura is released under the terms of the LGPLv3 or higher. -import QtQuick 2.2 +import QtQuick 2.7 import QtQuick.Controls 1.1 import QtQuick.Controls.Styles 1.1 import QtQuick.Layouts 1.1 @@ -76,7 +76,7 @@ Item { width: parent.width - 2 * UM.Theme.getSize("sidebar_margin").width height: UM.Theme.getSize("progressbar").height anchors.top: statusLabel.bottom - anchors.topMargin: UM.Theme.getSize("sidebar_margin").height/4 + anchors.topMargin: Math.round(UM.Theme.getSize("sidebar_margin").height / 4) anchors.left: parent.left anchors.leftMargin: UM.Theme.getSize("sidebar_margin").width radius: UM.Theme.getSize("progressbar_radius").width @@ -131,7 +131,7 @@ Item { Row { id: additionalComponentsRow anchors.top: parent.top - anchors.right: saveToButton.visible ? saveToButton.left : parent.right + anchors.right: saveToButton.visible ? saveToButton.left : (prepareButton.visible ? prepareButton.left : parent.right) anchors.rightMargin: UM.Theme.getSize("default_margin").width spacing: UM.Theme.getSize("default_margin").width @@ -354,7 +354,7 @@ Item { } Behavior on color { ColorAnimation { duration: 50; } } anchors.left: parent.left - anchors.leftMargin: UM.Theme.getSize("save_button_text_margin").width / 2; + anchors.leftMargin: Math.round(UM.Theme.getSize("save_button_text_margin").width / 2); width: parent.height height: parent.height diff --git a/resources/qml/Settings/SettingCategory.qml b/resources/qml/Settings/SettingCategory.qml index 13576eb483..3612c4cf29 100644 --- a/resources/qml/Settings/SettingCategory.qml +++ b/resources/qml/Settings/SettingCategory.qml @@ -78,6 +78,7 @@ Button verticalCenter: parent.verticalCenter; } text: definition.label + renderType: Text.NativeRendering font: UM.Theme.getFont("setting_category") color: { @@ -187,13 +188,13 @@ Button id: settingsButton visible: base.hovered || settingsButton.hovered - height: base.height * 0.6 - width: base.height * 0.6 + height: Math.round(base.height * 0.6) + width: Math.round(base.height * 0.6) anchors { right: inheritButton.visible ? inheritButton.left : parent.right // use 1.9 as the factor because there is a 0.1 difference between the settings and inheritance warning icons - rightMargin: inheritButton.visible ? UM.Theme.getSize("default_margin").width / 2 : category_arrow.width + UM.Theme.getSize("default_margin").width * 1.9 + rightMargin: inheritButton.visible ? Math.round(UM.Theme.getSize("default_margin").width / 2) : category_arrow.width + Math.round(UM.Theme.getSize("default_margin").width * 1.9) verticalCenter: parent.verticalCenter } @@ -231,7 +232,7 @@ Button return false } - height: parent.height / 2 + height: Math.round(parent.height / 2) width: height onClicked: diff --git a/resources/qml/Settings/SettingCheckBox.qml b/resources/qml/Settings/SettingCheckBox.qml index c4d6a5c764..d37754d27c 100644 --- a/resources/qml/Settings/SettingCheckBox.qml +++ b/resources/qml/Settings/SettingCheckBox.qml @@ -1,8 +1,8 @@ -// Copyright (c) 2015 Ultimaker B.V. +// Copyright (c) 2018 Ultimaker B.V. // Uranium is released under the terms of the LGPLv3 or higher. import QtQuick 2.7 -import QtQuick.Layouts 1.1 +import QtQuick.Layouts 1.2 import QtQuick.Controls 2.0 import UM 1.2 as UM @@ -118,8 +118,8 @@ SettingItem UM.RecolorImage { anchors.verticalCenter: parent.verticalCenter anchors.horizontalCenter: parent.horizontalCenter - width: parent.width / 2.5 - height: parent.height / 2.5 + width: Math.round(parent.width / 2.5) + height: Math.round(parent.height / 2.5) sourceSize.width: width sourceSize.height: width color: !enabled ? UM.Theme.getColor("setting_control_disabled_text") : UM.Theme.getColor("setting_control_text"); diff --git a/resources/qml/Settings/SettingComboBox.qml b/resources/qml/Settings/SettingComboBox.qml index f8a60bc749..ed4a7b41c2 100644 --- a/resources/qml/Settings/SettingComboBox.qml +++ b/resources/qml/Settings/SettingComboBox.qml @@ -61,7 +61,7 @@ SettingItem { id: downArrow x: control.width - width - control.rightPadding - y: control.topPadding + (control.availableHeight - height) / 2 + y: control.topPadding + Math.round((control.availableHeight - height) / 2) source: UM.Theme.getIcon("arrow_bottom") width: UM.Theme.getSize("standard_arrow").width @@ -80,26 +80,55 @@ SettingItem anchors.right: downArrow.left text: control.currentText + renderType: Text.NativeRendering font: UM.Theme.getFont("default") color: !enabled ? UM.Theme.getColor("setting_control_disabled_text") : UM.Theme.getColor("setting_control_text") elide: Text.ElideRight verticalAlignment: Text.AlignVCenter } + popup: Popup { + y: control.height - UM.Theme.getSize("default_lining").height + width: control.width + implicitHeight: contentItem.implicitHeight + padding: UM.Theme.getSize("default_lining").width + + contentItem: ListView { + clip: true + implicitHeight: contentHeight + model: control.popup.visible ? control.delegateModel : null + currentIndex: control.highlightedIndex + + ScrollIndicator.vertical: ScrollIndicator { } + } + + background: Rectangle { + color: UM.Theme.getColor("setting_control") + border.color: UM.Theme.getColor("setting_control_border") + } + } + delegate: ItemDelegate { - width: control.width + width: control.width - 2 * UM.Theme.getSize("default_lining").width height: control.height highlighted: control.highlightedIndex == index - contentItem: Text + contentItem: Label { text: modelData.value + renderType: Text.NativeRendering color: control.contentItem.color font: UM.Theme.getFont("default") elide: Text.ElideRight verticalAlignment: Text.AlignVCenter } + + background: Rectangle + { + color: parent.highlighted ? UM.Theme.getColor("setting_control_highlight") : "transparent" + border.color: parent.highlighted ? UM.Theme.getColor("setting_control_border_highlight") : "transparent" + } } onActivated: diff --git a/resources/qml/Settings/SettingExtruder.qml b/resources/qml/Settings/SettingExtruder.qml index eba6351e4d..2ddbb135c7 100644 --- a/resources/qml/Settings/SettingExtruder.qml +++ b/resources/qml/Settings/SettingExtruder.qml @@ -17,14 +17,39 @@ SettingItem id: control anchors.fill: parent - model: Cura.ExtrudersModel { onModelChanged: control.color = getItem(control.currentIndex).color } + model: Cura.ExtrudersModel + { + onModelChanged: { + control.color = getItem(control.currentIndex).color; + } + } textRole: "name" + // knowing the extruder position, try to find the item index in the model + function getIndexByPosition(position) + { + for (var item_index in model.items) + { + var item = model.getItem(item_index) + if (item.index == position) + { + return item_index + } + } + return -1 + } + onActivated: { - forceActiveFocus(); - propertyProvider.setPropertyValue("value", model.getItem(index).index); + if (model.getItem(index).enabled) + { + forceActiveFocus(); + propertyProvider.setPropertyValue("value", model.getItem(index).index); + } else + { + currentIndex = propertyProvider.properties.value; // keep the old value + } } onActiveFocusChanged: @@ -64,11 +89,28 @@ SettingItem value: control.currentText != "" ? control.model.getItem(control.currentIndex).color : "" } + Binding + { + target: control + property: "currentIndex" + value: + { + if(propertyProvider.properties.value == -1) + { + return control.getIndexByPosition(Cura.MachineManager.defaultExtruderPosition); + } + return propertyProvider.properties.value + } + // Sometimes when the value is already changed, the model is still being built. + // The when clause ensures that the current index is not updated when this happens. + when: control.model.items.length > 0 + } + indicator: UM.RecolorImage { id: downArrow x: control.width - width - control.rightPadding - y: control.topPadding + (control.availableHeight - height) / 2 + y: control.topPadding + Math.round((control.availableHeight - height) / 2) source: UM.Theme.getIcon("arrow_bottom") width: UM.Theme.getSize("standard_arrow").width @@ -108,57 +150,105 @@ SettingItem } } - contentItem: Item + contentItem: Label { - Label - { - id: extruderText + anchors.verticalCenter: parent.verticalCenter + anchors.left: parent.left + anchors.leftMargin: UM.Theme.getSize("setting_unit_margin").width + anchors.right: downArrow.left + rightPadding: swatch.width + UM.Theme.getSize("setting_unit_margin").width - anchors.verticalCenter: parent.verticalCenter - anchors.left: parent.left - anchors.leftMargin: UM.Theme.getSize("setting_unit_margin").width - anchors.right: swatch.left + text: control.currentText + renderType: Text.NativeRendering + font: UM.Theme.getFont("default") + color: enabled ? UM.Theme.getColor("setting_control_text") : UM.Theme.getColor("setting_control_disabled_text") - text: control.currentText - font: UM.Theme.getFont("default") - color: enabled ? UM.Theme.getColor("setting_control_text") : UM.Theme.getColor("setting_control_disabled_text") + elide: Text.ElideLeft + verticalAlignment: Text.AlignVCenter - elide: Text.ElideLeft - verticalAlignment: Text.AlignVCenter - } - - Rectangle + background: Rectangle { id: swatch - height: UM.Theme.getSize("setting_control").height / 2 + height: Math.round(UM.Theme.getSize("setting_control").height / 2) width: height anchors.right: parent.right - anchors.rightMargin: downArrow.width + UM.Theme.getSize("setting_unit_margin").width anchors.verticalCenter: parent.verticalCenter - anchors.margins: UM.Theme.getSize("default_margin").width / 4 + anchors.margins: Math.round(UM.Theme.getSize("default_margin").width / 4) border.width: UM.Theme.getSize("default_lining").width border.color: enabled ? UM.Theme.getColor("setting_control_border") : UM.Theme.getColor("setting_control_disabled_border") - radius: width / 2 + radius: Math.round(width / 2) color: control.color } } + popup: Popup { + y: control.height - UM.Theme.getSize("default_lining").height + width: control.width + implicitHeight: contentItem.implicitHeight + padding: UM.Theme.getSize("default_lining").width + + contentItem: ListView { + clip: true + implicitHeight: contentHeight + model: control.popup.visible ? control.delegateModel : null + currentIndex: control.highlightedIndex + + ScrollIndicator.vertical: ScrollIndicator { } + } + + background: Rectangle { + color: UM.Theme.getColor("setting_control") + border.color: UM.Theme.getColor("setting_control_border") + } + } + delegate: ItemDelegate { - width: control.width + width: control.width - 2 * UM.Theme.getSize("default_lining").width height: control.height highlighted: control.highlightedIndex == index - contentItem: Text + contentItem: Label { text: model.name - color: UM.Theme.getColor("setting_control_text") + renderType: Text.NativeRendering + color: { + if (model.enabled) { + UM.Theme.getColor("setting_control_text") + } else { + UM.Theme.getColor("action_button_disabled_text"); + } + } font: UM.Theme.getFont("default") elide: Text.ElideRight verticalAlignment: Text.AlignVCenter + rightPadding: swatch.width + UM.Theme.getSize("setting_unit_margin").width + + background: Rectangle + { + id: swatch + height: Math.round(UM.Theme.getSize("setting_control").height / 2) + width: height + + anchors.right: parent.right + anchors.verticalCenter: parent.verticalCenter + anchors.margins: Math.round(UM.Theme.getSize("default_margin").width / 4) + + border.width: UM.Theme.getSize("default_lining").width + border.color: enabled ? UM.Theme.getColor("setting_control_border") : UM.Theme.getColor("setting_control_disabled_border") + radius: Math.round(width / 2) + + color: control.model.getItem(index).color + } + } + + background: Rectangle + { + color: parent.highlighted ? UM.Theme.getColor("setting_control_highlight") : "transparent" + border.color: parent.highlighted ? UM.Theme.getColor("setting_control_border_highlight") : "transparent" } } } diff --git a/resources/qml/Settings/SettingItem.qml b/resources/qml/Settings/SettingItem.qml index 414f05d80e..013371e528 100644 --- a/resources/qml/Settings/SettingItem.qml +++ b/resources/qml/Settings/SettingItem.qml @@ -1,8 +1,8 @@ -// Copyright (c) 2017 Ultimaker B.V. +// Copyright (c) 2018 Ultimaker B.V. // Cura is released under the terms of the LGPLv3 or higher. import QtQuick 2.7 -import QtQuick.Layouts 1.1 +import QtQuick.Layouts 1.2 import QtQuick.Controls 2.0 import UM 1.1 as UM @@ -108,15 +108,13 @@ Item { id: label; anchors.left: parent.left; - anchors.leftMargin: doDepthIndentation ? (UM.Theme.getSize("section_icon_column").width + 5) + ((definition.depth - 1) * UM.Theme.getSize("setting_control_depth_margin").width) : 0 + anchors.leftMargin: doDepthIndentation ? Math.round((UM.Theme.getSize("section_icon_column").width + 5) + ((definition.depth - 1) * UM.Theme.getSize("setting_control_depth_margin").width)) : 0 anchors.right: settingControls.left; anchors.verticalCenter: parent.verticalCenter - height: UM.Theme.getSize("section").height; - verticalAlignment: Text.AlignVCenter; - text: definition.label elide: Text.ElideMiddle; + renderType: Text.NativeRendering color: UM.Theme.getColor("setting_control_text"); opacity: (definition.visible) ? 1 : 0.5 @@ -128,12 +126,12 @@ Item { { id: settingControls - height: parent.height / 2 - spacing: UM.Theme.getSize("sidebar_margin").height / 2 + height: Math.round(parent.height / 2) + spacing: Math.round(UM.Theme.getSize("sidebar_margin").height / 2) anchors { right: controlContainer.left - rightMargin: UM.Theme.getSize("sidebar_margin").width / 2 + rightMargin: Math.round(UM.Theme.getSize("sidebar_margin").width / 2) verticalCenter: parent.verticalCenter } diff --git a/resources/qml/Settings/SettingOptionalExtruder.qml b/resources/qml/Settings/SettingOptionalExtruder.qml index 19f7c7f370..f49b7035d7 100644 --- a/resources/qml/Settings/SettingOptionalExtruder.qml +++ b/resources/qml/Settings/SettingOptionalExtruder.qml @@ -87,7 +87,7 @@ SettingItem { id: downArrow x: control.width - width - control.rightPadding - y: control.topPadding + (control.availableHeight - height) / 2 + y: control.topPadding + Math.round((control.availableHeight - height) / 2) source: UM.Theme.getIcon("arrow_bottom") width: UM.Theme.getSize("standard_arrow").width @@ -127,57 +127,99 @@ SettingItem } } - contentItem: Item + contentItem: Label { - Label - { - id: extruderText + anchors.verticalCenter: parent.verticalCenter + anchors.left: parent.left + anchors.leftMargin: UM.Theme.getSize("setting_unit_margin").width + anchors.right: downArrow.left + rightPadding: swatch.width + UM.Theme.getSize("setting_unit_margin").width - anchors.verticalCenter: parent.verticalCenter - anchors.left: parent.left - anchors.leftMargin: UM.Theme.getSize("setting_unit_margin").width - anchors.right: swatch.left + text: control.currentText + renderType: Text.NativeRendering + font: UM.Theme.getFont("default") + color: enabled ? UM.Theme.getColor("setting_control_text") : UM.Theme.getColor("setting_control_disabled_text") - text: control.currentText - font: UM.Theme.getFont("default") - color: enabled ? UM.Theme.getColor("setting_control_text") : UM.Theme.getColor("setting_control_disabled_text") + elide: Text.ElideRight + verticalAlignment: Text.AlignVCenter - elide: Text.ElideRight - verticalAlignment: Text.AlignVCenter - } - - Rectangle + background: Rectangle { id: swatch - height: UM.Theme.getSize("setting_control").height / 2 + height: Math.round(UM.Theme.getSize("setting_control").height / 2) width: height anchors.right: parent.right - anchors.rightMargin: downArrow.width + UM.Theme.getSize("setting_unit_margin").width anchors.verticalCenter: parent.verticalCenter - anchors.margins: UM.Theme.getSize("default_margin").width / 4 + anchors.margins: Math.round(UM.Theme.getSize("default_margin").width / 4) border.width: UM.Theme.getSize("default_lining").width border.color: enabled ? UM.Theme.getColor("setting_control_border") : UM.Theme.getColor("setting_control_disabled_border") - radius: width / 2 + radius: Math.round(width / 2) color: control.color } } + popup: Popup { + y: control.height - UM.Theme.getSize("default_lining").height + width: control.width + implicitHeight: contentItem.implicitHeight + padding: UM.Theme.getSize("default_lining").width + + contentItem: ListView { + clip: true + implicitHeight: contentHeight + model: control.popup.visible ? control.delegateModel : null + currentIndex: control.highlightedIndex + + ScrollIndicator.vertical: ScrollIndicator { } + } + + background: Rectangle { + color: UM.Theme.getColor("setting_control") + border.color: UM.Theme.getColor("setting_control_border") + } + } + delegate: ItemDelegate { - width: control.width + width: control.width - 2 * UM.Theme.getSize("default_lining").width height: control.height highlighted: control.highlightedIndex == index - contentItem: Text + contentItem: Label { text: model.name + renderType: Text.NativeRendering color: UM.Theme.getColor("setting_control_text") font: UM.Theme.getFont("default") elide: Text.ElideRight verticalAlignment: Text.AlignVCenter + rightPadding: swatch.width + UM.Theme.getSize("setting_unit_margin").width + + background: Rectangle + { + id: swatch + height: Math.round(UM.Theme.getSize("setting_control").height / 2) + width: height + + anchors.right: parent.right + anchors.verticalCenter: parent.verticalCenter + anchors.margins: Math.round(UM.Theme.getSize("default_margin").width / 4) + + border.width: UM.Theme.getSize("default_lining").width + border.color: enabled ? UM.Theme.getColor("setting_control_border") : UM.Theme.getColor("setting_control_disabled_border") + radius: Math.round(width / 2) + + color: control.model.getItem(index).color + } + } + + background: Rectangle + { + color: parent.highlighted ? UM.Theme.getColor("setting_control_highlight") : "transparent" + border.color: parent.highlighted ? UM.Theme.getColor("setting_control_border_highlight") : "transparent" } } } diff --git a/resources/qml/Settings/SettingTextField.qml b/resources/qml/Settings/SettingTextField.qml index 489f23c6d1..4693bec50d 100644 --- a/resources/qml/Settings/SettingTextField.qml +++ b/resources/qml/Settings/SettingTextField.qml @@ -26,7 +26,7 @@ SettingItem anchors.fill: parent - border.width: UM.Theme.getSize("default_lining").width + border.width: Math.round(UM.Theme.getSize("default_lining").width) border.color: { if(!enabled) @@ -76,18 +76,19 @@ SettingItem Rectangle { anchors.fill: parent; - anchors.margins: UM.Theme.getSize("default_lining").width; + anchors.margins: Math.round(UM.Theme.getSize("default_lining").width); color: UM.Theme.getColor("setting_control_highlight") opacity: !control.hovered ? 0 : propertyProvider.properties.validationState == "ValidatorState.Valid" ? 1.0 : 0.35; } Label { - anchors.right: parent.right; - anchors.rightMargin: UM.Theme.getSize("setting_unit_margin").width - anchors.verticalCenter: parent.verticalCenter; + anchors.right: parent.right + anchors.rightMargin: Math.round(UM.Theme.getSize("setting_unit_margin").width) + anchors.verticalCenter: parent.verticalCenter - text: definition.unit; + text: definition.unit + renderType: Text.NativeRendering color: UM.Theme.getColor("setting_unit") font: UM.Theme.getFont("default") } @@ -107,9 +108,9 @@ SettingItem anchors { left: parent.left - leftMargin: UM.Theme.getSize("setting_unit_margin").width + leftMargin: Math.round(UM.Theme.getSize("setting_unit_margin").width) right: parent.right - rightMargin: UM.Theme.getSize("setting_unit_margin").width + rightMargin: Math.round(UM.Theme.getSize("setting_unit_margin").width) verticalCenter: parent.verticalCenter } renderType: Text.NativeRendering diff --git a/resources/qml/Settings/SettingView.qml b/resources/qml/Settings/SettingView.qml index 21e79ee967..235dfac91a 100644 --- a/resources/qml/Settings/SettingView.qml +++ b/resources/qml/Settings/SettingView.qml @@ -4,7 +4,7 @@ import QtQuick 2.7 import QtQuick.Controls 1.1 import QtQuick.Controls.Styles 1.1 -import QtQuick.Layouts 1.1 +import QtQuick.Layouts 1.2 import UM 1.2 as UM import Cura 1.0 as Cura @@ -15,10 +15,11 @@ Item { id: base; - property Action configureSettings; - property bool findingSettings; - signal showTooltip(Item item, point location, string text); - signal hideTooltip(); + property Action configureSettings + property bool findingSettings + property bool showingAllSettings + signal showTooltip(Item item, point location, string text) + signal hideTooltip() Item { @@ -30,16 +31,16 @@ Item { top: parent.top left: parent.left - leftMargin: UM.Theme.getSize("sidebar_margin").width + leftMargin: Math.round(UM.Theme.getSize("sidebar_margin").width) right: parent.right - rightMargin: UM.Theme.getSize("sidebar_margin").width + rightMargin: Math.round(UM.Theme.getSize("sidebar_margin").width) } Label { id: globalProfileLabel text: catalog.i18nc("@label","Profile:"); - width: Math.floor(parent.width * 0.45 - UM.Theme.getSize("sidebar_margin").width - 2) + width: Math.round(parent.width * 0.45 - UM.Theme.getSize("sidebar_margin").width - 2) font: UM.Theme.getFont("default"); color: UM.Theme.getColor("text"); verticalAlignment: Text.AlignVCenter @@ -53,17 +54,17 @@ Item text: generateActiveQualityText() enabled: !header.currentExtruderVisible || header.currentExtruderIndex > -1 - width: Math.floor(parent.width * 0.55) + width: Math.round(parent.width * 0.55) height: UM.Theme.getSize("setting_control").height anchors.left: globalProfileLabel.right anchors.right: parent.right - tooltip: Cura.MachineManager.activeQualityName + tooltip: Cura.MachineManager.activeQualityOrQualityChangesName style: UM.Theme.styles.sidebar_header_button activeFocusOnPress: true menu: ProfileMenu { } function generateActiveQualityText () { - var result = Cura.MachineManager.activeQualityName; + var result = Cura.MachineManager.activeQualityOrQualityChangesName; if (Cura.MachineManager.isActiveQualitySupported) { if (Cura.MachineManager.activeQualityLayerHeight > 0) { @@ -82,12 +83,12 @@ Item id: customisedSettings visible: Cura.MachineManager.hasUserSettings - height: Math.floor(parent.height * 0.6) - width: Math.floor(parent.height * 0.6) + height: Math.round(parent.height * 0.6) + width: Math.round(parent.height * 0.6) anchors.verticalCenter: parent.verticalCenter anchors.right: parent.right - anchors.rightMargin: UM.Theme.getSize("setting_preferences_button_margin").width - UM.Theme.getSize("sidebar_margin").width + anchors.rightMargin: Math.round(UM.Theme.getSize("setting_preferences_button_margin").width - UM.Theme.getSize("sidebar_margin").width) color: hovered ? UM.Theme.getColor("setting_control_button_hover") : UM.Theme.getColor("setting_control_button"); iconSource: UM.Theme.getIcon("star"); @@ -107,12 +108,63 @@ Item } } + ToolButton + { + id: settingVisibilityMenu + + width: height + height: UM.Theme.getSize("setting_control").height + anchors + { + top: globalProfileRow.bottom + topMargin: UM.Theme.getSize("sidebar_margin").height + right: parent.right + rightMargin: UM.Theme.getSize("sidebar_margin").width + } + style: ButtonStyle + { + background: Item { + UM.RecolorImage { + anchors.verticalCenter: parent.verticalCenter + anchors.horizontalCenter: parent.horizontalCenter + width: UM.Theme.getSize("standard_arrow").width + height: UM.Theme.getSize("standard_arrow").height + sourceSize.width: width + sourceSize.height: width + color: control.enabled ? UM.Theme.getColor("setting_category_text") : UM.Theme.getColor("setting_category_disabled_text") + source: UM.Theme.getIcon("menu") + } + } + label: Label{} + } + menu: SettingVisibilityPresetsMenu + { + showingSearchResults: findingSettings + showingAllSettings: showingAllSettings + + onShowAllSettings: + { + base.showingAllSettings = true; + base.findingSettings = false; + filter.text = ""; + filter.updateDefinitionModel(); + } + onShowSettingVisibilityProfile: + { + base.showingAllSettings = false; + base.findingSettings = false; + filter.text = ""; + filter.updateDefinitionModel(); + } + } + } + Rectangle { id: filterContainer visible: true - border.width: UM.Theme.getSize("default_lining").width + border.width: Math.round(UM.Theme.getSize("default_lining").width) border.color: { if(hoverMouseArea.containsMouse || clearFilterButton.containsMouse) @@ -133,8 +185,8 @@ Item topMargin: UM.Theme.getSize("sidebar_margin").height left: parent.left leftMargin: UM.Theme.getSize("sidebar_margin").width - right: parent.right - rightMargin: UM.Theme.getSize("sidebar_margin").width + right: settingVisibilityMenu.left + rightMargin: Math.floor(UM.Theme.getSize("default_margin").width / 2) } height: visible ? UM.Theme.getSize("setting_control").height : 0 Behavior on height { NumberAnimation { duration: 100 } } @@ -142,10 +194,10 @@ Item TextField { id: filter; - + height: parent.height anchors.left: parent.left anchors.right: clearFilterButton.left - anchors.rightMargin: UM.Theme.getSize("sidebar_margin").width + anchors.rightMargin: Math.round(UM.Theme.getSize("sidebar_margin").width) placeholderText: catalog.i18nc("@label:textbox", "Search...") @@ -168,17 +220,9 @@ Item { if(findingSettings) { - expandedCategories = definitionsModel.expanded.slice(); - definitionsModel.expanded = ["*"]; - definitionsModel.showAncestors = true; - definitionsModel.showAll = true; - } - else - { - definitionsModel.expanded = expandedCategories; - definitionsModel.showAncestors = false; - definitionsModel.showAll = false; + showingAllSettings = false; } + updateDefinitionModel(); lastFindingSettings = findingSettings; } } @@ -187,6 +231,27 @@ Item { filter.text = ""; } + + function updateDefinitionModel() + { + if(findingSettings || showingAllSettings) + { + expandedCategories = definitionsModel.expanded.slice(); + definitionsModel.expanded = [""]; // keep categories closed while to prevent render while making settings visible one by one + definitionsModel.showAncestors = true; + definitionsModel.showAll = true; + definitionsModel.expanded = ["*"]; + } + else + { + if(expandedCategories) + { + definitionsModel.expanded = expandedCategories; + } + definitionsModel.showAncestors = false; + definitionsModel.showAll = false; + } + } } MouseArea @@ -204,12 +269,12 @@ Item iconSource: UM.Theme.getIcon("cross1") visible: findingSettings - height: parent.height * 0.4 + height: Math.round(parent.height * 0.4) width: visible ? height : 0 anchors.verticalCenter: parent.verticalCenter anchors.right: parent.right - anchors.rightMargin: UM.Theme.getSize("sidebar_margin").width + anchors.rightMargin: UM.Theme.getSize("default_margin").width color: UM.Theme.getColor("setting_control_button") hoverColor: UM.Theme.getColor("setting_control_button_hover") @@ -238,7 +303,7 @@ Item ListView { id: contents - spacing: UM.Theme.getSize("default_lining").height; + spacing: Math.round(UM.Theme.getSize("default_lining").height); cacheBuffer: 1000000; // Set a large cache to effectively just cache every list item. model: UM.SettingDefinitionsModel @@ -266,7 +331,7 @@ Item { id: delegate - width: UM.Theme.getSize("sidebar").width; + width: Math.round(UM.Theme.getSize("sidebar").width); 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 @@ -374,8 +439,6 @@ Item key: model.key ? model.key : "" watchedProperties: [ "value", "enabled", "state", "validationState", "settable_per_extruder", "resolve" ] storeIndex: 0 - // Due to the way setPropertyValue works, removeUnusedValue gives the correct output in case of resolve - removeUnusedValue: model.resolve == undefined } Connections @@ -388,7 +451,7 @@ Item contextMenu.provider = provider contextMenu.popup(); } - onShowTooltip: base.showTooltip(delegate, { x: -UM.Theme.getSize("default_arrow").width, y: delegate.height / 2 }, text) + onShowTooltip: base.showTooltip(delegate, { x: -UM.Theme.getSize("default_arrow").width, y: Math.round(delegate.height / 2) }, text) onHideTooltip: base.hideTooltip() onShowAllHiddenInheritedSettings: { @@ -493,9 +556,17 @@ Item MenuItem { //: Settings context menu action - visible: !findingSettings; + visible: !(findingSettings || showingAllSettings); text: catalog.i18nc("@action:menu", "Hide this setting"); - onTriggered: definitionsModel.hide(contextMenu.key); + onTriggered: + { + definitionsModel.hide(contextMenu.key); + // visible settings have changed, so we're no longer showing a preset + if (Cura.SettingVisibilityPresetsModel.activePreset != "" && !showingAllSettings) + { + Cura.SettingVisibilityPresetsModel.setActivePreset("custom"); + } + } } MenuItem { @@ -511,7 +582,7 @@ Item return catalog.i18nc("@action:menu", "Keep this setting visible"); } } - visible: findingSettings; + visible: (findingSettings || showingAllSettings); onTriggered: { if (contextMenu.settingVisible) @@ -522,6 +593,11 @@ Item { definitionsModel.show(contextMenu.key); } + // visible settings have changed, so we're no longer showing a preset + if (Cura.SettingVisibilityPresetsModel.activePreset != "" && !showingAllSettings) + { + Cura.SettingVisibilityPresetsModel.setActivePreset("custom"); + } } } MenuItem @@ -544,4 +620,4 @@ Item } } } -} \ No newline at end of file +} diff --git a/resources/qml/Sidebar.qml b/resources/qml/Sidebar.qml index 236256266c..4744bbfda0 100644 --- a/resources/qml/Sidebar.qml +++ b/resources/qml/Sidebar.qml @@ -8,6 +8,7 @@ import QtQuick.Layouts 1.3 import UM 1.2 as UM import Cura 1.0 as Cura import "Menus" +import "Menus/ConfigurationMenu" Rectangle { @@ -18,6 +19,7 @@ Rectangle property bool hideView: Cura.MachineManager.activeMachineName == "" // Is there an output device for this printer? + property bool isNetworkPrinter: Cura.MachineManager.activeMachineNetworkKey != "" property bool printerConnected: Cura.MachineManager.printerOutputDevices.length != 0 property bool printerAcceptsCommands: printerConnected && Cura.MachineManager.printerOutputDevices[0].acceptsCommands property var connectedPrinter: Cura.MachineManager.printerOutputDevices.length >= 1 ? Cura.MachineManager.printerOutputDevices[0] : null @@ -85,12 +87,34 @@ Rectangle } } - MachineSelection { + MachineSelection + { id: machineSelection - width: base.width + width: base.width - configSelection.width - separator.width + height: UM.Theme.getSize("sidebar_header").height + anchors.top: base.top + anchors.left: parent.left + } + + Rectangle + { + id: separator + visible: configSelection.visible + width: visible ? Math.round(UM.Theme.getSize("sidebar_lining_thin").height / 2) : 0 + height: UM.Theme.getSize("sidebar_header").height + color: UM.Theme.getColor("sidebar_lining_thin") + anchors.left: machineSelection.right + } + + ConfigurationSelection + { + id: configSelection + visible: isNetworkPrinter + width: visible ? Math.round(base.width * 0.15) : 0 height: UM.Theme.getSize("sidebar_header").height anchors.top: base.top anchors.right: parent.right + panelWidth: base.width } SidebarHeader { @@ -126,11 +150,12 @@ Rectangle { id: settingsModeLabel text: !hideSettings ? catalog.i18nc("@label:listbox", "Print Setup") : catalog.i18nc("@label:listbox", "Print Setup disabled\nG-code files cannot be modified") + renderType: Text.NativeRendering anchors.left: parent.left anchors.leftMargin: UM.Theme.getSize("sidebar_margin").width anchors.top: hideSettings ? machineSelection.bottom : headerSeparator.bottom anchors.topMargin: UM.Theme.getSize("sidebar_margin").height - width: Math.floor(parent.width * 0.45) + width: Math.round(parent.width * 0.45) font: UM.Theme.getFont("large") color: UM.Theme.getColor("text") visible: !monitoringPrint && !hideView @@ -142,7 +167,7 @@ Rectangle id: settingsModeSelection color: "transparent" - width: Math.floor(parent.width * 0.55) + width: Math.round(parent.width * 0.55) height: UM.Theme.getSize("sidebar_header_mode_toggle").height anchors.right: parent.right @@ -171,10 +196,10 @@ Rectangle id: control height: settingsModeSelection.height - width: Math.floor(0.5 * parent.width) + width: Math.round(parent.width / 2) anchors.left: parent.left - anchors.leftMargin: model.index * Math.floor(settingsModeSelection.width / 2) + anchors.leftMargin: model.index * Math.round(settingsModeSelection.width / 2) anchors.verticalCenter: parent.verticalCenter ButtonGroup.group: modeMenuGroup @@ -207,13 +232,26 @@ Rectangle color: (control.checked || control.pressed) ? UM.Theme.getColor("action_button_active") : control.hovered ? UM.Theme.getColor("action_button_hovered") : UM.Theme.getColor("action_button") } - contentItem: Text + contentItem: Label { text: model.text font: UM.Theme.getFont("default") horizontalAlignment: Text.AlignHCenter verticalAlignment: Text.AlignVCenter + renderType: Text.NativeRendering elide: Text.ElideRight + color: + { + if(control.pressed) + { + return UM.Theme.getColor("action_button_active_text"); + } + else if(control.hovered) + { + return UM.Theme.getColor("action_button_hovered_text"); + } + return UM.Theme.getColor("action_button_text"); + } } } } @@ -317,7 +355,7 @@ Rectangle height: UM.Theme.getSize("sidebar_lining").height color: UM.Theme.getColor("sidebar_lining") anchors.bottom: printSpecs.top - anchors.bottomMargin: Math.floor(UM.Theme.getSize("sidebar_margin").height * 2 + UM.Theme.getSize("progressbar").height + UM.Theme.getFont("default_bold").pixelSize) + anchors.bottomMargin: Math.round(UM.Theme.getSize("sidebar_margin").height * 2 + UM.Theme.getSize("progressbar").height + UM.Theme.getFont("default_bold").pixelSize) } Item @@ -340,6 +378,7 @@ Rectangle font: UM.Theme.getFont("large") color: UM.Theme.getColor("text_subtext") text: (!base.printDuration || !base.printDuration.valid) ? catalog.i18nc("@label Hours and minutes", "00h 00min") : base.printDuration.getDisplayString(UM.DurationFormat.Short) + renderType: Text.NativeRendering MouseArea { @@ -417,7 +456,7 @@ Rectangle { names.push(base.printMaterialNames[index]); lengths.push(base.printMaterialLengths[index].toFixed(2)); - weights.push(String(Math.floor(base.printMaterialWeights[index]))); + weights.push(String(Math.round(base.printMaterialWeights[index]))); var cost = base.printMaterialCosts[index] == undefined ? 0 : base.printMaterialCosts[index].toFixed(2); costs.push(cost); if(cost > 0) @@ -467,6 +506,7 @@ Rectangle anchors.left: parent.left anchors.bottom: parent.bottom font: UM.Theme.getFont("very_small") + renderType: Text.NativeRendering color: UM.Theme.getColor("text_subtext") elide: Text.ElideMiddle width: parent.width @@ -483,7 +523,7 @@ Rectangle if(base.printMaterialLengths[index] > 0) { lengths.push(base.printMaterialLengths[index].toFixed(2)); - weights.push(String(Math.floor(base.printMaterialWeights[index]))); + weights.push(String(Math.round(base.printMaterialWeights[index]))); var cost = base.printMaterialCosts[index] == undefined ? 0 : base.printMaterialCosts[index].toFixed(2); costs.push(cost); if(cost > 0) @@ -499,15 +539,12 @@ Rectangle weights = ["0"]; costs = ["0.00"]; } + var result = lengths.join(" + ") + "m / ~ " + weights.join(" + ") + "g"; if(someCostsKnown) { - return catalog.i18nc("@label Print estimates: m for meters, g for grams, %4 is currency and %3 is print cost", "%1m / ~ %2g / ~ %4 %3").arg(lengths.join(" + ")) - .arg(weights.join(" + ")).arg(costs.join(" + ")).arg(UM.Preferences.getValue("cura/currency")); - } - else - { - return catalog.i18nc("@label Print estimates: m for meters, g for grams", "%1m / ~ %2g").arg(lengths.join(" + ")).arg(weights.join(" + ")); + result += " / ~ " + costs.join(" + ") + " " + UM.Preferences.getValue("cura/currency"); } + return result; } MouseArea { @@ -598,7 +635,7 @@ Rectangle }) sidebarContents.replace(modesListModel.get(base.currentModeIndex).item, { "immediate": true }) - var index = Math.floor(UM.Preferences.getValue("cura/active_mode")) + var index = Math.round(UM.Preferences.getValue("cura/active_mode")) if(index) { currentModeIndex = index; diff --git a/resources/qml/SidebarContents.qml b/resources/qml/SidebarContents.qml index eae718023b..0b19bfe3c1 100644 --- a/resources/qml/SidebarContents.qml +++ b/resources/qml/SidebarContents.qml @@ -1,7 +1,7 @@ // Copyright (c) 2016 Ultimaker B.V. // Cura is released under the terms of the LGPLv3 or higher. -import QtQuick 2.2 +import QtQuick 2.7 import QtQuick.Controls 1.1 import QtQuick.Controls.Styles 1.1 import QtQuick.Layouts 1.1 diff --git a/resources/qml/SidebarHeader.qml b/resources/qml/SidebarHeader.qml index bc45d9ddac..5cd0446b36 100644 --- a/resources/qml/SidebarHeader.qml +++ b/resources/qml/SidebarHeader.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.2 +import QtQuick 2.7 import QtQuick.Controls 1.1 import QtQuick.Controls.Styles 1.1 @@ -16,38 +16,90 @@ Column property int currentExtruderIndex: Cura.ExtruderManager.activeExtruderIndex; property bool currentExtruderVisible: extrudersList.visible; + property bool printerConnected: Cura.MachineManager.printerOutputDevices.length != 0 + property bool hasManyPrinterTypes: printerConnected ? Cura.MachineManager.printerOutputDevices[0].connectedPrintersTypeCount.length > 1 : false - spacing: Math.floor(UM.Theme.getSize("sidebar_margin").width * 0.9) + spacing: Math.round(UM.Theme.getSize("sidebar_margin").width * 0.9) signal showTooltip(Item item, point location, string text) signal hideTooltip() Item { + id: initialSeparator anchors { left: parent.left right: parent.right } - visible: extruderSelectionRow.visible + visible: printerTypeSelectionRow.visible || buildplateRow.visible || extruderSelectionRow.visible height: UM.Theme.getSize("default_lining").height width: height } + // Printer Type Row + Item + { + id: printerTypeSelectionRow + height: UM.Theme.getSize("sidebar_setup").height + visible: printerConnected && hasManyPrinterTypes && !sidebar.monitoringPrint && !sidebar.hideSettings + + anchors + { + left: parent.left + leftMargin: UM.Theme.getSize("sidebar_margin").width + right: parent.right + rightMargin: UM.Theme.getSize("sidebar_margin").width + } + + Label + { + id: configurationLabel + text: catalog.i18nc("@label", "Printer type"); + width: Math.round(parent.width * 0.4 - UM.Theme.getSize("default_margin").width) + height: parent.height + verticalAlignment: Text.AlignVCenter + font: UM.Theme.getFont("default"); + color: UM.Theme.getColor("text"); + } + + ToolButton + { + id: printerTypeSelection + text: Cura.MachineManager.activeMachineDefinitionName + tooltip: Cura.MachineManager.activeMachineDefinitionName + height: UM.Theme.getSize("setting_control").height + width: Math.round(parent.width * 0.7) + UM.Theme.getSize("sidebar_margin").width + anchors.right: parent.right + style: UM.Theme.styles.sidebar_header_button + activeFocusOnPress: true; + + menu: PrinterTypeMenu { } + } + } + + Rectangle { + id: headerSeparator + width: parent.width + visible: printerTypeSelectionRow.visible + height: visible ? UM.Theme.getSize("sidebar_lining").height : 0 + color: UM.Theme.getColor("sidebar_lining") + } + // Extruder Row Item { id: extruderSelectionRow width: parent.width - height: Math.floor(UM.Theme.getSize("sidebar_tabs").height * 2 / 3) + height: Math.round(UM.Theme.getSize("sidebar_tabs").height * 2 / 3) visible: machineExtruderCount.properties.value > 1 && !sidebar.monitoringPrint anchors { left: parent.left - leftMargin: Math.floor(UM.Theme.getSize("sidebar_margin").width * 0.7) + leftMargin: Math.round(UM.Theme.getSize("sidebar_margin").width * 0.7) right: parent.right - rightMargin: Math.floor(UM.Theme.getSize("sidebar_margin").width * 0.7) + rightMargin: Math.round(UM.Theme.getSize("sidebar_margin").width * 0.7) topMargin: UM.Theme.getSize("sidebar_margin").height } @@ -57,15 +109,15 @@ Column property var index: 0 height: UM.Theme.getSize("sidebar_header_mode_tabs").height - width: Math.floor(parent.width) + width: Math.round(parent.width) boundsBehavior: Flickable.StopAtBounds anchors { left: parent.left - leftMargin: Math.floor(UM.Theme.getSize("default_margin").width / 2) + leftMargin: Math.round(UM.Theme.getSize("default_margin").width / 2) right: parent.right - rightMargin: Math.floor(UM.Theme.getSize("default_margin").width / 2) + rightMargin: Math.round(UM.Theme.getSize("default_margin").width / 2) verticalCenter: parent.verticalCenter } @@ -84,17 +136,49 @@ Column delegate: Button { height: ListView.view.height - width: ListView.view.width / extrudersModel.rowCount() + width: Math.round(ListView.view.width / extrudersModel.rowCount()) text: model.name tooltip: model.name exclusiveGroup: extruderMenuGroup checked: base.currentExtruderIndex == index - onClicked: + property bool extruder_enabled: true + + MouseArea { - forceActiveFocus() // Changing focus applies the currently-being-typed values so it can change the displayed setting values. - Cura.ExtruderManager.setActiveExtruderIndex(index); + anchors.fill: parent + acceptedButtons: Qt.LeftButton | Qt.RightButton + onClicked: { + switch (mouse.button) { + case Qt.LeftButton: + forceActiveFocus(); // Changing focus applies the currently-being-typed values so it can change the displayed setting values. + Cura.ExtruderManager.setActiveExtruderIndex(index); + break; + case Qt.RightButton: + extruder_enabled = Cura.MachineManager.getExtruder(model.index).isEnabled + extruderMenu.popup(); + break; + } + + } + } + + Menu + { + id: extruderMenu + + MenuItem { + text: catalog.i18nc("@action:inmenu", "Enable Extruder") + onTriggered: Cura.MachineManager.setExtruderEnabled(model.index, true) + visible: !extruder_enabled // using an intermediate variable prevents an empty popup that occured now and then + } + + MenuItem { + text: catalog.i18nc("@action:inmenu", "Disable Extruder") + onTriggered: Cura.MachineManager.setExtruderEnabled(model.index, false) + visible: extruder_enabled + } } style: ButtonStyle @@ -114,6 +198,18 @@ Column Behavior on color { ColorAnimation { duration: 50; } } } + function buttonColor(index) { + var extruder = Cura.MachineManager.getExtruder(index); + if (extruder.isEnabled) { + return ( + control.checked || control.pressed) ? UM.Theme.getColor("action_button_active_text") : + control.hovered ? UM.Theme.getColor("action_button_hovered_text") : + UM.Theme.getColor("action_button_text"); + } else { + return UM.Theme.getColor("action_button_disabled_text"); + } + } + Item { id: extruderButtonFace @@ -121,7 +217,7 @@ Column width: { var extruderTextWidth = extruderStaticText.visible ? extruderStaticText.width : 0; var iconWidth = extruderIconItem.width; - return Math.floor(extruderTextWidth + iconWidth + UM.Theme.getSize("default_margin").width / 2); + return Math.round(extruderTextWidth + iconWidth + UM.Theme.getSize("default_margin").width / 2); } // Static text "Extruder" @@ -131,9 +227,7 @@ Column anchors.verticalCenter: parent.verticalCenter anchors.left: parent.left - color: (control.checked || control.pressed) ? UM.Theme.getColor("action_button_active_text") : - control.hovered ? UM.Theme.getColor("action_button_hovered_text") : - UM.Theme.getColor("action_button_text") + color: buttonColor(index) font: UM.Theme.getFont("large_nonbold") text: catalog.i18nc("@label", "Extruder") @@ -153,7 +247,7 @@ Column var minimumWidth = control.width < UM.Theme.getSize("button").width ? control.width : UM.Theme.getSize("button").width; var minimumHeight = control.height < UM.Theme.getSize("button").height ? control.height : UM.Theme.getSize("button").height; var minimumSize = minimumWidth < minimumHeight ? minimumWidth : minimumHeight; - minimumSize -= Math.floor(UM.Theme.getSize("default_margin").width / 2); + minimumSize -= Math.round(UM.Theme.getSize("default_margin").width / 2); return minimumSize; } @@ -176,9 +270,7 @@ Column id: extruderNumberText anchors.centerIn: parent text: index + 1; - color: (control.checked || control.pressed) ? UM.Theme.getColor("action_button_active_text") : - control.hovered ? UM.Theme.getColor("action_button_hovered_text") : - UM.Theme.getColor("action_button_text") + color: buttonColor(index) font: UM.Theme.getFont("default_bold") } @@ -192,15 +284,15 @@ Column { right: parent.right top: parent.top - rightMargin: parent.sizeToUse * 0.01 - topMargin: parent.sizeToUse * 0.05 + rightMargin: Math.round(parent.sizeToUse * 0.01) + topMargin: Math.round(parent.sizeToUse * 0.05) } color: model.color - width: parent.width * 0.35 - height: parent.height * 0.35 - radius: width / 2 + width: Math.round(parent.width * 0.35) + height: Math.round(parent.height * 0.35) + radius: Math.round(width / 2) border.width: 1 border.color: UM.Theme.getColor("extruder_button_material_border") @@ -219,9 +311,9 @@ Column Item { id: variantRowSpacer - height: UM.Theme.getSize("sidebar_margin").height / 4 + height: Math.round(UM.Theme.getSize("sidebar_margin").height / 4) width: height - visible: !extruderSelectionRow.visible + visible: !extruderSelectionRow.visible && !initialSeparator.visible } // Material Row @@ -243,7 +335,9 @@ Column { id: materialLabel text: catalog.i18nc("@label", "Material"); - width: Math.floor(parent.width * 0.45 - UM.Theme.getSize("default_margin").width) + width: Math.round(parent.width * 0.45 - UM.Theme.getSize("default_margin").width) + height: parent.height + verticalAlignment: Text.AlignVCenter font: UM.Theme.getFont("default"); color: UM.Theme.getColor("text"); } @@ -252,12 +346,16 @@ Column { id: materialSelection - text: Cura.MachineManager.activeMaterialName - tooltip: Cura.MachineManager.activeMaterialName + property var activeExtruder: Cura.MachineManager.activeStack + property var hasActiveExtruder: activeExtruder != null + property var currentRootMaterialName: hasActiveExtruder ? activeExtruder.material.name : "" + + text: currentRootMaterialName + tooltip: currentRootMaterialName visible: Cura.MachineManager.hasMaterials - enabled: !extrudersList.visible || base.currentExtruderIndex > -1 + enabled: !extrudersList.visible || base.currentExtruderIndex > -1 height: UM.Theme.getSize("setting_control").height - width: parent.width * 0.7 + UM.Theme.getSize("sidebar_margin").width + width: Math.round(parent.width * 0.7) + UM.Theme.getSize("sidebar_margin").width anchors.right: parent.right style: UM.Theme.styles.sidebar_header_button activeFocusOnPress: true; @@ -269,7 +367,11 @@ Column property var valueWarning: ! Cura.MachineManager.isActiveQualitySupported function isMaterialSupported () { - return Cura.ContainerManager.getContainerMetaDataEntry(Cura.MachineManager.activeMaterialId, "compatible") == "True" + if (!hasActiveExtruder) + { + return false; + } + return Cura.ContainerManager.getContainerMetaDataEntry(activeExtruder.material.id, "compatible") == "True" } } } @@ -293,7 +395,9 @@ Column { id: variantLabel text: Cura.MachineManager.activeDefinitionVariantsName; - width: Math.floor(parent.width * 0.45 - UM.Theme.getSize("default_margin").width) + width: Math.round(parent.width * 0.45 - UM.Theme.getSize("default_margin").width) + height: parent.height + verticalAlignment: Text.AlignVCenter font: UM.Theme.getFont("default"); color: UM.Theme.getColor("text"); } @@ -305,7 +409,7 @@ Column visible: Cura.MachineManager.hasVariants height: UM.Theme.getSize("setting_control").height - width: Math.floor(parent.width * 0.7 + UM.Theme.getSize("sidebar_margin").width) + width: Math.round(parent.width * 0.7 + UM.Theme.getSize("sidebar_margin").width) anchors.right: parent.right style: UM.Theme.styles.sidebar_header_button activeFocusOnPress: true; @@ -314,17 +418,14 @@ Column } } - //Buildplate row separator Rectangle { - id: separator - + id: buildplateSeparator + anchors.left: parent.left anchors.leftMargin: UM.Theme.getSize("sidebar_margin").width - anchors.rightMargin: UM.Theme.getSize("sidebar_margin").width - anchors.horizontalCenter: parent.horizontalCenter + width: parent.width - 2 * UM.Theme.getSize("sidebar_margin").width visible: buildplateRow.visible - width: parent.width - UM.Theme.getSize("sidebar_margin").width * 2 - height: visible ? UM.Theme.getSize("sidebar_lining_thin").height / 2 : 0 - color: UM.Theme.getColor("sidebar_lining_thin") + height: visible ? UM.Theme.getSize("sidebar_lining_thin").height : 0 + color: UM.Theme.getColor("sidebar_lining") } //Buildplate row @@ -347,6 +448,8 @@ Column id: bulidplateLabel text: catalog.i18nc("@label", "Build plate"); width: Math.floor(parent.width * 0.45 - UM.Theme.getSize("default_margin").width) + height: parent.height + verticalAlignment: Text.AlignVCenter font: UM.Theme.getFont("default"); color: UM.Theme.getColor("text"); } @@ -374,7 +477,7 @@ Column Item { id: materialInfoRow - height: Math.floor(UM.Theme.getSize("sidebar_setup").height / 2) + height: Math.round(UM.Theme.getSize("sidebar_setup").height / 2) visible: (Cura.MachineManager.hasVariants || Cura.MachineManager.hasMaterials) && !sidebar.monitoringPrint && !sidebar.hideSettings anchors @@ -388,7 +491,7 @@ Column Item { height: UM.Theme.getSize("sidebar_setup").height anchors.right: parent.right - width: Math.floor(parent.width * 0.7 + UM.Theme.getSize("sidebar_margin").width) + width: Math.round(parent.width * 0.7 + UM.Theme.getSize("sidebar_margin").width) UM.RecolorImage { id: warningImage @@ -405,7 +508,7 @@ Column Label { id: materialInfoLabel wrapMode: Text.WordWrap - text: catalog.i18nc("@label", "Check compatibility") + text: "" + catalog.i18nc("@label", "Check compatibility") + "" font: UM.Theme.getFont("default") color: UM.Theme.getColor("text") linkColor: UM.Theme.getColor("text_link") @@ -421,7 +524,7 @@ Column // open the material URL with web browser var version = UM.Application.version; var machineName = Cura.MachineManager.activeMachine.definition.id; - var url = "https://ultimaker.com/materialcompatibility/" + version + "/" + machineName; + var url = "https://ultimaker.com/materialcompatibility/" + version + "/" + machineName + "?utm_source=cura&utm_medium=software&utm_campaign=resources"; Qt.openUrlExternally(url); } onEntered: { diff --git a/resources/qml/SidebarSimple.qml b/resources/qml/SidebarSimple.qml index b96c40d9ea..41ecb529eb 100644 --- a/resources/qml/SidebarSimple.qml +++ b/resources/qml/SidebarSimple.qml @@ -1,4 +1,4 @@ -// Copyright (c) 2017 Ultimaker B.V. +// Copyright (c) 2018 Ultimaker B.V. // Cura is released under the terms of the LGPLv3 or higher. import QtQuick 2.7 @@ -7,7 +7,7 @@ import QtQuick.Controls.Styles 1.4 import QtQuick.Layouts 1.3 import UM 1.2 as UM -import Cura 1.2 as Cura +import Cura 1.0 as Cura Item { @@ -19,7 +19,7 @@ Item property Action configureSettings; property variant minimumPrintTime: PrintInformation.minimumPrintTime; property variant maximumPrintTime: PrintInformation.maximumPrintTime; - property bool settingsEnabled: Cura.ExtruderManager.activeExtruderStackId || machineExtruderCount.properties.value == 1 + property bool settingsEnabled: Cura.ExtruderManager.activeExtruderStackId || extrudersEnabledCount.properties.value == 1 Component.onCompleted: PrintInformation.enabled = true Component.onDestruction: PrintInformation.enabled = false @@ -57,17 +57,18 @@ Item interval: 50 running: false repeat: false - onTriggered: Cura.MachineManager.setActiveQuality(Cura.ProfilesModel.getItem(qualitySlider.value).id) + onTriggered: { + var item = Cura.QualityProfilesDropDownMenuModel.getItem(qualitySlider.value); + Cura.MachineManager.activeQualityGroup = item.quality_group; + } } Component.onCompleted: qualityModel.update() Connections { - target: Cura.MachineManager - onActiveQualityChanged: qualityModel.update() - onActiveMaterialChanged: qualityModel.update() - onActiveVariantChanged: qualityModel.update() + target: Cura.QualityProfilesDropDownMenuModel + onItemsChanged: qualityModel.update() } Connections { @@ -102,14 +103,14 @@ Item var availableMin = -1 var availableMax = -1 - for (var i = 0; i < Cura.ProfilesModel.rowCount(); i++) { - var qualityItem = Cura.ProfilesModel.getItem(i) + 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.metadata.quality_type) { + if (Cura.MachineManager.activeQualityType == qualityItem.quality_type) { // set to -1 when switching to user created profile so all ticks are clickable if (Cura.SimpleModeSettingsManager.isProfileUserCreated) { @@ -134,7 +135,7 @@ Item // Set total available ticks for active slider part if (availableMin != -1) { - qualityModel.availableTotalTicks = availableMax - availableMin + qualityModel.availableTotalTicks = availableMax - availableMin + 1 } // Calculate slider values @@ -146,26 +147,26 @@ Item } function calculateSliderStepWidth (totalTicks) { - qualityModel.qualitySliderStepWidth = totalTicks != 0 ? (base.width * 0.55) / (totalTicks) : 0 + qualityModel.qualitySliderStepWidth = totalTicks != 0 ? Math.round((base.width * 0.55) / (totalTicks)) : 0 } function calculateSliderMargins (availableMin, availableMax, totalTicks) { if (availableMin == -1 || (availableMin == 0 && availableMax == 0)) { - qualityModel.qualitySliderMarginRight = base.width * 0.55 + qualityModel.qualitySliderMarginRight = Math.round(base.width * 0.55) } else if (availableMin == availableMax) { - qualityModel.qualitySliderMarginRight = (totalTicks - availableMin) * qualitySliderStepWidth + qualityModel.qualitySliderMarginRight = Math.round((totalTicks - availableMin) * qualitySliderStepWidth) } else { - qualityModel.qualitySliderMarginRight = (totalTicks - availableMax) * qualitySliderStepWidth + qualityModel.qualitySliderMarginRight = Math.round((totalTicks - availableMax) * qualitySliderStepWidth) } } function reset () { qualityModel.clear() - qualityModel.availableTotalTicks = -1 + qualityModel.availableTotalTicks = 0 qualityModel.existingQualityProfile = 0 // check, the ticks count cannot be less than zero - qualityModel.totalTicks = Math.max(0, Cura.ProfilesModel.rowCount() - 1) + qualityModel.totalTicks = Math.max(0, Cura.QualityProfilesDropDownMenuModel.rowCount() - 1) } } @@ -190,14 +191,14 @@ Item { anchors.verticalCenter: parent.verticalCenter anchors.top: parent.top - anchors.topMargin: parseInt(UM.Theme.getSize("sidebar_margin").height / 2) - color: (Cura.MachineManager.activeMachine != null && Cura.ProfilesModel.getItem(index).available) ? UM.Theme.getColor("quality_slider_available") : UM.Theme.getColor("quality_slider_unavailable") + anchors.topMargin: Math.round(UM.Theme.getSize("sidebar_margin").height / 2) + 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.ProfilesModel.getItem(index).layer_height_without_unit + result = Cura.QualityProfilesDropDownMenuModel.getItem(index).layer_height if(result == undefined) { @@ -219,13 +220,13 @@ Item // Make sure the text aligns correctly with each tick if (qualityModel.totalTicks == 0) { // If there is only one tick, align it centrally - return parseInt(((base.width * 0.55) - width) / 2) + return Math.round(((base.width * 0.55) - width) / 2) } else if (index == 0) { - return (base.width * 0.55 / qualityModel.totalTicks) * index + return Math.round(base.width * 0.55 / qualityModel.totalTicks) * index } else if (index == qualityModel.totalTicks) { - return (base.width * 0.55 / qualityModel.totalTicks) * index - width + return Math.round(base.width * 0.55 / qualityModel.totalTicks) * index - width } else { - return parseInt((base.width * 0.55 / qualityModel.totalTicks) * index - (width / 2)) + return Math.round((base.width * 0.55 / qualityModel.totalTicks) * index - (width / 2)) } } } @@ -236,17 +237,92 @@ Item Item { id: speedSlider - width: base.width * 0.55 + width: Math.round(base.width * 0.55) height: UM.Theme.getSize("sidebar_margin").height anchors.right: parent.right anchors.top: parent.top anchors.topMargin: UM.Theme.getSize("sidebar_margin").height + // This Item is used only for tooltip, for slider area which is unavailable + Item + { + function showTooltip (showTooltip) + { + if (showTooltip) { + var content = catalog.i18nc("@tooltip", "This quality profile is not available for you current material and nozzle configuration. Please change these to enable this quality profile") + base.showTooltip(qualityRow, Qt.point(-UM.Theme.getSize("sidebar_margin").width, customisedSettings.height), content) + } + else { + base.hideTooltip() + } + } + + id: unavailableLineToolTip + height: 20 // hovered area height + z: parent.z + 1 // should be higher, otherwise the area can be hovered + x: 0 + anchors.verticalCenter: qualitySlider.verticalCenter + + Rectangle + { + id: leftArea + width: + { + if (qualityModel.availableTotalTicks == 0) { + return qualityModel.qualitySliderStepWidth * qualityModel.totalTicks + } + return qualityModel.qualitySliderStepWidth * qualityModel.qualitySliderAvailableMin - 10 + } + height: parent.height + color: "transparent" + + MouseArea + { + anchors.fill: parent + hoverEnabled: true + enabled: Cura.SimpleModeSettingsManager.isProfileUserCreated == false + onEntered: unavailableLineToolTip.showTooltip(true) + onExited: unavailableLineToolTip.showTooltip(false) + } + } + + Rectangle + { + id: rightArea + width: { + if(qualityModel.availableTotalTicks == 0) + return 0 + + return qualityModel.qualitySliderMarginRight - 10 + } + height: parent.height + color: "transparent" + x: { + if (qualityModel.availableTotalTicks == 0) { + return 0 + } + + var leftUnavailableArea = qualityModel.qualitySliderStepWidth * qualityModel.qualitySliderAvailableMin + var totalGap = qualityModel.qualitySliderStepWidth * (qualityModel.availableTotalTicks -1) + leftUnavailableArea + 10 + + return totalGap + } + + MouseArea { + anchors.fill: parent + hoverEnabled: true + enabled: Cura.SimpleModeSettingsManager.isProfileUserCreated == false + onEntered: unavailableLineToolTip.showTooltip(true) + onExited: unavailableLineToolTip.showTooltip(false) + } + } + } + // Draw Unavailable line Rectangle { id: groovechildrect - width: base.width * 0.55 + width: Math.round(base.width * 0.55) height: 2 * screenScaleFactor color: UM.Theme.getColor("quality_slider_unavailable") anchors.verticalCenter: qualitySlider.verticalCenter @@ -262,40 +338,32 @@ Item Rectangle { anchors.verticalCenter: parent.verticalCenter - color: Cura.ProfilesModel.getItem(index).available ? UM.Theme.getColor("quality_slider_available") : UM.Theme.getColor("quality_slider_unavailable") + color: Cura.QualityProfilesDropDownMenuModel.getItem(index).available ? UM.Theme.getColor("quality_slider_available") : UM.Theme.getColor("quality_slider_unavailable") width: 1 * screenScaleFactor height: 6 * screenScaleFactor y: 0 - x: qualityModel.qualitySliderStepWidth * index + x: Math.round(qualityModel.qualitySliderStepWidth * index) } } - Rectangle { - id: disabledHandleButton - visible: !qualitySlider.visible - anchors.centerIn: parent - color: UM.Theme.getColor("quality_slider_unavailable") - implicitWidth: 10 * screenScaleFactor - implicitHeight: implicitWidth - radius: width / 2 - } - Slider { id: qualitySlider height: UM.Theme.getSize("sidebar_margin").height anchors.bottom: speedSlider.bottom - enabled: qualityModel.availableTotalTicks > 0 && !Cura.SimpleModeSettingsManager.isProfileCustomized - visible: qualityModel.totalTicks > 0 + enabled: qualityModel.totalTicks > 0 && !Cura.SimpleModeSettingsManager.isProfileCustomized + visible: qualityModel.availableTotalTicks > 0 updateValueWhileDragging : false minimumValue: qualityModel.qualitySliderAvailableMin >= 0 ? qualityModel.qualitySliderAvailableMin : 0 - maximumValue: qualityModel.qualitySliderAvailableMax >= 0 ? qualityModel.qualitySliderAvailableMax : 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 - width: qualityModel.qualitySliderStepWidth * qualityModel.availableTotalTicks + width: qualityModel.qualitySliderStepWidth * (qualityModel.availableTotalTicks - 1) anchors.right: parent.right anchors.rightMargin: qualityModel.qualitySliderMarginRight @@ -306,7 +374,7 @@ Item groove: Rectangle { implicitHeight: 2 * screenScaleFactor color: UM.Theme.getColor("quality_slider_available") - radius: height / 2 + radius: Math.round(height / 2) } handle: Item { Rectangle { @@ -315,7 +383,7 @@ Item color: UM.Theme.getColor("quality_slider_available") implicitWidth: 10 * screenScaleFactor implicitHeight: implicitWidth - radius: implicitWidth / 2 + radius: Math.round(implicitWidth / 2) visible: !Cura.SimpleModeSettingsManager.isProfileCustomized && !Cura.SimpleModeSettingsManager.isProfileUserCreated && qualityModel.existingQualityProfile } } @@ -362,7 +430,7 @@ Item text: catalog.i18nc("@label", "Print Speed") font: UM.Theme.getFont("default") color: UM.Theme.getColor("text") - width: parseInt(UM.Theme.getSize("sidebar").width * 0.35) + width: Math.round(UM.Theme.getSize("sidebar").width * 0.35) elide: Text.ElideRight } @@ -373,7 +441,7 @@ Item text: catalog.i18nc("@label", "Slower") font: UM.Theme.getFont("default") - color: (qualityModel.availableTotalTicks > 0) ? UM.Theme.getColor("quality_slider_available") : UM.Theme.getColor("quality_slider_unavailable") + color: (qualityModel.availableTotalTicks > 1) ? UM.Theme.getColor("quality_slider_available") : UM.Theme.getColor("quality_slider_unavailable") horizontalAlignment: Text.AlignLeft } @@ -384,7 +452,7 @@ Item text: catalog.i18nc("@label", "Faster") font: UM.Theme.getFont("default") - color: (qualityModel.availableTotalTicks > 0) ? UM.Theme.getColor("quality_slider_available") : UM.Theme.getColor("quality_slider_unavailable") + color: (qualityModel.availableTotalTicks > 1) ? UM.Theme.getColor("quality_slider_available") : UM.Theme.getColor("quality_slider_unavailable") horizontalAlignment: Text.AlignRight } @@ -393,12 +461,12 @@ Item id: customisedSettings visible: Cura.SimpleModeSettingsManager.isProfileCustomized || Cura.SimpleModeSettingsManager.isProfileUserCreated - height: speedSlider.height * 0.8 - width: speedSlider.height * 0.8 + height: Math.round(speedSlider.height * 0.8) + width: Math.round(speedSlider.height * 0.8) anchors.verticalCenter: speedSlider.verticalCenter anchors.right: speedSlider.left - anchors.rightMargin: UM.Theme.getSize("sidebar_margin").width / 2 + anchors.rightMargin: Math.round(UM.Theme.getSize("sidebar_margin").width / 2) color: hovered ? UM.Theme.getColor("setting_control_button_hover") : UM.Theme.getColor("setting_control_button"); iconSource: UM.Theme.getIcon("reset"); @@ -408,9 +476,10 @@ Item // if the current profile is user-created, switch to a built-in quality if (Cura.SimpleModeSettingsManager.isProfileUserCreated) { - if (Cura.ProfilesModel.rowCount() > 0) + if (Cura.QualityProfilesDropDownMenuModel.rowCount() > 0) { - Cura.MachineManager.setActiveQuality(Cura.ProfilesModel.getItem(0).id) + var item = Cura.QualityProfilesDropDownMenuModel.getItem(0); + Cura.MachineManager.activeQualityGroup = item.quality_group; } } if (Cura.SimpleModeSettingsManager.isProfileCustomized) @@ -438,7 +507,7 @@ Item anchors.topMargin: UM.Theme.getSize("sidebar_margin").height * 2 anchors.left: parent.left - width: parseInt(UM.Theme.getSize("sidebar").width * .45 - UM.Theme.getSize("sidebar_margin").width) + width: Math.round(UM.Theme.getSize("sidebar").width * .45) - UM.Theme.getSize("sidebar_margin").width Label { @@ -448,7 +517,7 @@ Item color: UM.Theme.getColor("text") anchors.top: parent.top - anchors.topMargin: parseInt(UM.Theme.getSize("sidebar_margin").height * 1.7) + anchors.topMargin: Math.round(UM.Theme.getSize("sidebar_margin").height * 1.7) anchors.left: parent.left anchors.leftMargin: UM.Theme.getSize("sidebar_margin").width } @@ -459,7 +528,7 @@ Item id: infillCellRight height: infillSlider.height + UM.Theme.getSize("sidebar_margin").height + enableGradualInfillCheckBox.visible * (enableGradualInfillCheckBox.height + UM.Theme.getSize("sidebar_margin").height) - width: parseInt(UM.Theme.getSize("sidebar").width * .55) + width: Math.round(UM.Theme.getSize("sidebar").width * .55) anchors.left: infillCellLeft.right anchors.top: infillCellLeft.top @@ -470,7 +539,7 @@ Item //anchors.top: parent.top anchors.left: infillSlider.left - anchors.leftMargin: parseInt((infillSlider.value / infillSlider.stepSize) * (infillSlider.width / (infillSlider.maximumValue / infillSlider.stepSize)) - 10 * screenScaleFactor) + anchors.leftMargin: Math.round((infillSlider.value / infillSlider.stepSize) * (infillSlider.width / (infillSlider.maximumValue / infillSlider.stepSize)) - 10 * screenScaleFactor) anchors.right: parent.right text: parseInt(infillDensity.properties.value) + "%" @@ -522,8 +591,12 @@ Item // Update the slider value to represent the rounded value infillSlider.value = roundedSliderValue - // Explicitly cast to string to make sure the value passed to Python is an integer. - infillDensity.setPropertyValue("value", String(roundedSliderValue)) + // Update value only if the Recomended mode is Active, + // Otherwise if I change the value in the Custom mode the Recomended view will try to repeat + // same operation + if (UM.Preferences.getValue("cura/active_mode") == 0) { + Cura.MachineManager.setSettingForAllExtruders("infill_sparse_density", "value", roundedSliderValue) + } } style: SliderStyle @@ -565,7 +638,7 @@ Item width: 1 * screenScaleFactor height: 6 * screenScaleFactor y: 0 - x: styleData.handleWidth / 2 + index * ((repeater.width - styleData.handleWidth) / (repeater.count-1)) + x: Math.round(styleData.handleWidth / 2 + index * ((repeater.width - styleData.handleWidth) / (repeater.count-1))) visible: shouldShowTick(index) } } @@ -576,12 +649,12 @@ Item { id: infillIcon - width: (parent.width / 5) - (UM.Theme.getSize("sidebar_margin").width) + width: Math.round((parent.width / 5) - (UM.Theme.getSize("sidebar_margin").width)) height: width anchors.right: parent.right anchors.top: parent.top - anchors.topMargin: parseInt(UM.Theme.getSize("sidebar_margin").height / 2) + anchors.topMargin: Math.round(UM.Theme.getSize("sidebar_margin").height / 2) // we loop over all density icons and only show the one that has the current density and steps Repeater @@ -592,8 +665,8 @@ Item function activeIndex () { for (var i = 0; i < infillModel.count; i++) { - var density = parseInt(infillDensity.properties.value) - var steps = parseInt(infillSteps.properties.value) + var density = Math.round(infillDensity.properties.value) + var steps = Math.round(infillSteps.properties.value) var infillModelItem = infillModel.get(i) if (infillModelItem != "undefined" @@ -634,7 +707,7 @@ Item property alias _hovered: enableGradualInfillMouseArea.containsMouse anchors.top: infillSlider.bottom - anchors.topMargin: parseInt(UM.Theme.getSize("sidebar_margin").height / 2) // closer to slider since it belongs to the same category + anchors.topMargin: Math.round(UM.Theme.getSize("sidebar_margin").height / 2) // closer to slider since it belongs to the same category anchors.left: infillCellRight.left style: UM.Theme.styles.checkbox @@ -653,14 +726,20 @@ Item onClicked: { // Set to 90% only when enabling gradual infill + var newInfillDensity; if (parseInt(infillSteps.properties.value) == 0) { previousInfillDensity = parseInt(infillDensity.properties.value) - infillDensity.setPropertyValue("value", String(90)) + newInfillDensity = 90; } else { - infillDensity.setPropertyValue("value", String(previousInfillDensity)) + newInfillDensity = previousInfillDensity; } + Cura.MachineManager.setSettingForAllExtruders("infill_sparse_density", "value", String(newInfillDensity)) - infillSteps.setPropertyValue("value", (parseInt(infillSteps.properties.value) == 0) ? 5 : 0) + var infill_steps_value = 0; + if (parseInt(infillSteps.properties.value) == 0) + infill_steps_value = 5; + + Cura.MachineManager.setSettingForAllExtruders("gradual_infill_steps", "value", infill_steps_value) } onEntered: { @@ -676,7 +755,7 @@ Item Label { id: gradualInfillLabel anchors.left: enableGradualInfillCheckBox.right - anchors.leftMargin: parseInt(UM.Theme.getSize("sidebar_margin").width / 2) + anchors.leftMargin: Math.round(UM.Theme.getSize("sidebar_margin").width / 2) text: catalog.i18nc("@label", "Enable gradual") font: UM.Theme.getFont("default") color: UM.Theme.getColor("text") @@ -737,7 +816,7 @@ Item visible: enableSupportCheckBox.visible anchors.top: infillCellRight.bottom - anchors.topMargin: parseInt(UM.Theme.getSize("sidebar_margin").height * 1.5) + anchors.topMargin: Math.round(UM.Theme.getSize("sidebar_margin").height * 1.5) anchors.left: parent.left anchors.leftMargin: UM.Theme.getSize("sidebar_margin").width anchors.right: infillCellLeft.right @@ -787,25 +866,10 @@ Item } } - Label - { - id: supportExtruderLabel - visible: supportExtruderCombobox.visible - anchors.left: parent.left - anchors.leftMargin: UM.Theme.getSize("sidebar_margin").width - anchors.right: infillCellLeft.right - anchors.rightMargin: UM.Theme.getSize("sidebar_margin").width - anchors.verticalCenter: supportExtruderCombobox.verticalCenter - text: catalog.i18nc("@label", "Support Extruder"); - font: UM.Theme.getFont("default"); - color: UM.Theme.getColor("text"); - elide: Text.ElideRight - } - ComboBox { id: supportExtruderCombobox - visible: enableSupportCheckBox.visible && (supportEnabled.properties.value == "True") && (machineExtruderCount.properties.value > 1) + visible: enableSupportCheckBox.visible && (supportEnabled.properties.value == "True") && (extrudersEnabledCount.properties.value > 1) model: extruderModel property string color_override: "" // for manually setting values @@ -819,11 +883,12 @@ Item textRole: "text" // this solves that the combobox isn't populated in the first time Cura is started - anchors.top: enableSupportCheckBox.bottom - anchors.topMargin: ((supportEnabled.properties.value === "True") && (machineExtruderCount.properties.value > 1)) ? UM.Theme.getSize("sidebar_margin").height : 0 - anchors.left: infillCellRight.left + anchors.top: enableSupportCheckBox.top + //anchors.topMargin: ((supportEnabled.properties.value === "True") && (machineExtruderCount.properties.value > 1)) ? UM.Theme.getSize("sidebar_margin").height : 0 + anchors.left: enableSupportCheckBox.right + anchors.leftMargin: Math.round(UM.Theme.getSize("sidebar_margin").width / 2) - width: UM.Theme.getSize("sidebar").width * .55 + width: Math.round(UM.Theme.getSize("sidebar").width * .55) - Math.round(UM.Theme.getSize("sidebar_margin").width / 2) - enableSupportCheckBox.width height: ((supportEnabled.properties.value == "True") && (machineExtruderCount.properties.value > 1)) ? UM.Theme.getSize("setting_control").height : 0 Behavior on height { NumberAnimation { duration: 100 } } @@ -890,7 +955,7 @@ Item id: adhesionCheckBox property alias _hovered: adhesionMouseArea.containsMouse - anchors.top: enableSupportCheckBox.visible ? supportExtruderCombobox.bottom : infillCellRight.bottom + anchors.top: enableSupportCheckBox.bottom anchors.topMargin: UM.Theme.getSize("sidebar_margin").height anchors.left: infillCellRight.left @@ -952,7 +1017,7 @@ Item { id: tipsCell anchors.top: adhesionCheckBox.visible ? adhesionCheckBox.bottom : (enableSupportCheckBox.visible ? supportExtruderCombobox.bottom : infillCellRight.bottom) - anchors.topMargin: parseInt(UM.Theme.getSize("sidebar_margin").height * 2) + anchors.topMargin: Math.round(UM.Theme.getSize("sidebar_margin").height * 2) anchors.left: parent.left width: parent.width height: tipsText.contentHeight * tipsText.lineCount @@ -1021,9 +1086,9 @@ Item UM.SettingPropertyProvider { - id: machineExtruderCount + id: extrudersEnabledCount containerStackId: Cura.MachineManager.activeMachineId - key: "machine_extruder_count" + key: "extruders_enabled_count" watchedProperties: [ "value" ] storeIndex: 0 } diff --git a/resources/qml/SidebarTooltip.qml b/resources/qml/SidebarTooltip.qml index 07b95777b5..29199481f6 100644 --- a/resources/qml/SidebarTooltip.qml +++ b/resources/qml/SidebarTooltip.qml @@ -1,7 +1,7 @@ // Copyright (c) 2015 Ultimaker B.V. // Cura is released under the terms of the LGPLv3 or higher. -import QtQuick 2.2 +import QtQuick 2.7 import QtQuick.Controls 1.1 import QtQuick.Controls.Styles 1.1 import QtQuick.Layouts 1.1 @@ -36,7 +36,7 @@ UM.PointingRectangle { } } base.opacity = 1; - target = Qt.point(40 , position.y + UM.Theme.getSize("tooltip_arrow_margins").height / 2) + target = Qt.point(40 , position.y + Math.round(UM.Theme.getSize("tooltip_arrow_margins").height / 2)) } function hide() { diff --git a/resources/qml/Toolbar.qml b/resources/qml/Toolbar.qml index 77ffc7f2a9..613a462db9 100644 --- a/resources/qml/Toolbar.qml +++ b/resources/qml/Toolbar.qml @@ -91,7 +91,7 @@ Item anchors.topMargin: base.activeY z: buttons.z -1 - target: Qt.point(parent.right, base.activeY + UM.Theme.getSize("button").height/2) + target: Qt.point(parent.right, base.activeY + Math.round(UM.Theme.getSize("button").height/2)) arrowSize: UM.Theme.getSize("default_arrow").width width: diff --git a/resources/qml/Topbar.qml b/resources/qml/Topbar.qml index dc041ab5b7..69d27d483a 100644 --- a/resources/qml/Topbar.qml +++ b/resources/qml/Topbar.qml @@ -150,7 +150,7 @@ Rectangle visible: base.width - allItemsWidth - 1 * this.width > 0 } - // #5 Left view + // #5 Right view Button { iconSource: UM.Theme.getIcon("view_right") @@ -220,7 +220,7 @@ Rectangle anchors.topMargin: UM.Theme.getSize("default_margin").height anchors.right: viewModeButton.right - property var buttonTarget: Qt.point(viewModeButton.x + viewModeButton.width / 2, viewModeButton.y + viewModeButton.height / 2) + property var buttonTarget: Qt.point(viewModeButton.x + Math.round(viewModeButton.width / 2), viewModeButton.y + Math.round(viewModeButton.height / 2)) height: childrenRect.height width: childrenRect.width diff --git a/resources/qml/WorkspaceSummaryDialog.qml b/resources/qml/WorkspaceSummaryDialog.qml index d5cc416f39..cf19e45fdd 100644 --- a/resources/qml/WorkspaceSummaryDialog.qml +++ b/resources/qml/WorkspaceSummaryDialog.qml @@ -101,7 +101,7 @@ UM.Dialog } Label { - text: Cura.MachineManager.activeDefinitionName + text: (Cura.MachineManager.activeMachine == null) ? "" : Cura.MachineManager.activeMachine.definition.name width: (parent.width / 3) | 0 } } @@ -120,10 +120,35 @@ UM.Dialog width: (parent.width / 3) | 0 } } + Column + { + width: parent.width + visible: Cura.MachineManager.hasVariantBuildplates + Item // Spacer + { + height: spacerHeight + width: height + } + Row + { + width: parent.width + height: childrenRect.height + Label + { + text: catalog.i18nc("@action:label", "Build plate") + width: (parent.width / 3) | 0 + } + Label + { + text: Cura.MachineManager.activeVariantBuildplateName + width: (parent.width / 3) | 0 + } + } + } Repeater { - model: Cura.MachineManager.activeMaterialNames + model: Cura.MachineManager.currentExtruderPositions delegate: Column { Item // Spacer @@ -133,7 +158,7 @@ UM.Dialog } Label { - text: catalog.i18nc("@action:label", "Extruder %1").arg(index+1) + text: catalog.i18nc("@action:label", "Extruder %1").arg(modelData) } height: childrenRect.height width: parent.width @@ -148,7 +173,7 @@ UM.Dialog } Label { - text: Cura.MachineManager.activeVariantNames[index] + ", " + modelData + text: Cura.MachineManager.activeVariantNames[modelData] + ", " + Cura.MachineManager.getExtruder(modelData).material.name width: (parent.width / 3) | 0 } } @@ -192,7 +217,7 @@ UM.Dialog } Label { - text: Cura.MachineManager.activeQualityName + text: Cura.MachineManager.activeQualityOrQualityChangesName width: (parent.width / 3) | 0 } @@ -269,4 +294,4 @@ UM.Dialog } } } -} \ No newline at end of file +} diff --git a/resources/quality/abax_pri3/apri3_pla_fast.inst.cfg b/resources/quality/abax_pri3/apri3_pla_fast.inst.cfg index 32550d86a5..50ff90670f 100644 --- a/resources/quality/abax_pri3/apri3_pla_fast.inst.cfg +++ b/resources/quality/abax_pri3/apri3_pla_fast.inst.cfg @@ -1,14 +1,14 @@ [general] -version = 2 +version = 3 name = Fine definition = abax_pri3 [metadata] -type = quality -material = generic_pla -weight = -1 -quality_type = normal setting_version = 4 +type = quality +quality_type = normal +weight = -1 +material = generic_pla [values] layer_height = 0.2 @@ -19,4 +19,4 @@ speed_print = 80 speed_layer_0 = =round(speed_print * 30 / 50) speed_topbottom = 20 cool_min_layer_time = 5 -cool_min_speed = 10 \ No newline at end of file +cool_min_speed = 10 diff --git a/resources/quality/abax_pri3/apri3_pla_high.inst.cfg b/resources/quality/abax_pri3/apri3_pla_high.inst.cfg index 2007785719..0bcd5ef77d 100644 --- a/resources/quality/abax_pri3/apri3_pla_high.inst.cfg +++ b/resources/quality/abax_pri3/apri3_pla_high.inst.cfg @@ -1,14 +1,14 @@ [general] -version = 2 +version = 3 name = Extra Fine definition = abax_pri3 [metadata] -type = quality -material = generic_pla -weight = 1 -quality_type = high setting_version = 4 +type = quality +quality_type = high +weight = 1 +material = generic_pla [values] layer_height = 0.1 @@ -19,4 +19,4 @@ speed_print = 50 speed_layer_0 = =round(speed_print * 30 / 50) speed_topbottom = 20 cool_min_layer_time = 5 -cool_min_speed = 10 \ No newline at end of file +cool_min_speed = 10 diff --git a/resources/quality/abax_pri3/apri3_pla_normal.inst.cfg b/resources/quality/abax_pri3/apri3_pla_normal.inst.cfg index dba0a0460f..5ef275652d 100644 --- a/resources/quality/abax_pri3/apri3_pla_normal.inst.cfg +++ b/resources/quality/abax_pri3/apri3_pla_normal.inst.cfg @@ -1,14 +1,14 @@ [general] -version = 2 +version = 3 name = Fine definition = abax_pri3 [metadata] -type = quality -material = generic_pla -weight = 0 -quality_type = normal setting_version = 4 +type = quality +quality_type = normal +weight = 0 +material = generic_pla [values] layer_height = 0.2 @@ -19,4 +19,4 @@ speed_print = 50 speed_layer_0 = =round(speed_print * 30 / 50) speed_topbottom = 20 cool_min_layer_time = 5 -cool_min_speed = 10 \ No newline at end of file +cool_min_speed = 10 diff --git a/resources/quality/abax_pri5/apri5_pla_fast.inst.cfg b/resources/quality/abax_pri5/apri5_pla_fast.inst.cfg index 11892a6223..922da8e88e 100644 --- a/resources/quality/abax_pri5/apri5_pla_fast.inst.cfg +++ b/resources/quality/abax_pri5/apri5_pla_fast.inst.cfg @@ -1,14 +1,14 @@ [general] -version = 2 +version = 3 name = Fine definition = abax_pri5 [metadata] -type = quality -material = generic_pla -weight = -1 -quality_type = normal setting_version = 4 +type = quality +quality_type = normal +weight = -1 +material = generic_pla [values] layer_height = 0.2 @@ -19,4 +19,4 @@ speed_print = 80 speed_layer_0 = =round(speed_print * 30 / 50) speed_topbottom = 20 cool_min_layer_time = 5 -cool_min_speed = 10 \ No newline at end of file +cool_min_speed = 10 diff --git a/resources/quality/abax_pri5/apri5_pla_high.inst.cfg b/resources/quality/abax_pri5/apri5_pla_high.inst.cfg index 852efe699e..2b1c6b017b 100644 --- a/resources/quality/abax_pri5/apri5_pla_high.inst.cfg +++ b/resources/quality/abax_pri5/apri5_pla_high.inst.cfg @@ -1,14 +1,14 @@ [general] -version = 2 +version = 3 name = Extra Fine definition = abax_pri5 [metadata] -type = quality -material = generic_pla -weight = 1 -quality_type = high setting_version = 4 +type = quality +quality_type = high +weight = 1 +material = generic_pla [values] layer_height = 0.1 @@ -19,4 +19,4 @@ speed_print = 50 speed_layer_0 = =round(speed_print * 30 / 50) speed_topbottom = 20 cool_min_layer_time = 5 -cool_min_speed = 10 \ No newline at end of file +cool_min_speed = 10 diff --git a/resources/quality/abax_pri5/apri5_pla_normal.inst.cfg b/resources/quality/abax_pri5/apri5_pla_normal.inst.cfg index 244d544c80..23b21f597b 100644 --- a/resources/quality/abax_pri5/apri5_pla_normal.inst.cfg +++ b/resources/quality/abax_pri5/apri5_pla_normal.inst.cfg @@ -1,14 +1,14 @@ [general] -version = 2 +version = 3 name = Fine definition = abax_pri5 [metadata] -type = quality -material = generic_pla -weight = 0 -quality_type = normal setting_version = 4 +type = quality +quality_type = normal +weight = 0 +material = generic_pla [values] layer_height = 0.2 @@ -19,4 +19,4 @@ speed_print = 50 speed_layer_0 = =round(speed_print * 30 / 50) speed_topbottom = 20 cool_min_layer_time = 5 -cool_min_speed = 10 \ No newline at end of file +cool_min_speed = 10 diff --git a/resources/quality/abax_titan/atitan_pla_fast.inst.cfg b/resources/quality/abax_titan/atitan_pla_fast.inst.cfg index a2d802a3ba..5d935a915a 100644 --- a/resources/quality/abax_titan/atitan_pla_fast.inst.cfg +++ b/resources/quality/abax_titan/atitan_pla_fast.inst.cfg @@ -1,14 +1,14 @@ [general] -version = 2 +version = 3 name = Fine definition = abax_titan [metadata] -type = quality -material = generic_pla -weight = -1 -quality_type = normal setting_version = 4 +type = quality +quality_type = normal +weight = -1 +material = generic_pla [values] layer_height = 0.2 @@ -19,4 +19,4 @@ speed_print = 80 speed_layer_0 = =round(speed_print * 30 / 50) speed_topbottom = 20 cool_min_layer_time = 5 -cool_min_speed = 10 \ No newline at end of file +cool_min_speed = 10 diff --git a/resources/quality/abax_titan/atitan_pla_high.inst.cfg b/resources/quality/abax_titan/atitan_pla_high.inst.cfg index 7ee8c35133..8bd45034e3 100644 --- a/resources/quality/abax_titan/atitan_pla_high.inst.cfg +++ b/resources/quality/abax_titan/atitan_pla_high.inst.cfg @@ -1,13 +1,14 @@ [general] -version = 2 +version = 3 name = Extra Fine definition = abax_titan + [metadata] -type = quality -material = generic_pla -weight = 1 -quality_type = high setting_version = 4 +type = quality +quality_type = high +weight = 1 +material = generic_pla [values] layer_height = 0.1 @@ -18,4 +19,4 @@ speed_print = 50 speed_layer_0 = =round(speed_print * 30 / 50) speed_topbottom = 20 cool_min_layer_time = 5 -cool_min_speed = 10 \ No newline at end of file +cool_min_speed = 10 diff --git a/resources/quality/abax_titan/atitan_pla_normal.inst.cfg b/resources/quality/abax_titan/atitan_pla_normal.inst.cfg index 6c40914566..081e5ad977 100644 --- a/resources/quality/abax_titan/atitan_pla_normal.inst.cfg +++ b/resources/quality/abax_titan/atitan_pla_normal.inst.cfg @@ -1,14 +1,14 @@ [general] -version = 2 +version = 3 name = Fine definition = abax_titan [metadata] -type = quality -material = generic_pla -weight = 0 -quality_type = normal setting_version = 4 +type = quality +quality_type = normal +weight = 0 +material = generic_pla [values] layer_height = 0.2 @@ -19,4 +19,4 @@ speed_print = 50 speed_layer_0 = =round(speed_print * 30 / 50) speed_topbottom = 20 cool_min_layer_time = 5 -cool_min_speed = 10 \ No newline at end of file +cool_min_speed = 10 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 ee77117a6b..821205ca69 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 @@ -1,18 +1,18 @@ [general] -version = 2 +version = 3 name = Draft definition = anycubic_i3_mega [metadata] +setting_version = 4 type = quality quality_type = draft weight = 0 -setting_version = 4 [values] acceleration_enabled = True -acceleration_print = 2000 -acceleration_travel = 3500 +acceleration_print = 1800 +acceleration_travel = 3000 adhesion_type = skirt brim_width = 4.0 cool_fan_full_at_height = 0.5 @@ -23,16 +23,16 @@ infill_pattern = zigzag infill_sparse_density = 25 initial_layer_line_width_factor = 140 jerk_enabled = True -jerk_print = 13 -jerk_travel = 13 -layer_height = 0.4 -layer_height_0 = 0.4 +jerk_print = 8 +jerk_travel = 10 +layer_height = 0.3 +layer_height_0 = 0.3 material_bed_temperature = 60 material_diameter = 1.75 material_print_temperature = 200 material_print_temperature_layer_0 = 0 retract_at_layer_change = False -retraction_amount = 7 +retraction_amount = 6 retraction_hop = 0.075 retraction_hop_enabled = True retraction_hop_only_when_collides = True @@ -57,4 +57,4 @@ support_type = everywhere support_use_towers = False support_xy_distance = 0.7 top_bottom_thickness = 1.2 -wall_thickness = 1.2 \ No newline at end of file +wall_thickness = 1.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 884ed5b3f9..e686ce50ac 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 @@ -1,18 +1,18 @@ [general] -version = 2 +version = 3 name = High definition = anycubic_i3_mega [metadata] +setting_version = 4 type = quality quality_type = high weight = 2 -setting_version = 4 [values] acceleration_enabled = True -acceleration_print = 2000 -acceleration_travel = 3500 +acceleration_print = 1800 +acceleration_travel = 3000 adhesion_type = skirt brim_width = 4.0 cool_fan_full_at_height = 0.5 @@ -23,8 +23,8 @@ infill_pattern = zigzag infill_sparse_density = 25 initial_layer_line_width_factor = 140 jerk_enabled = True -jerk_print = 13 -jerk_travel = 13 +jerk_print = 8 +jerk_travel = 10 layer_height = 0.1 layer_height_0 = 0.1 material_bed_temperature = 60 @@ -32,7 +32,7 @@ material_diameter = 1.75 material_print_temperature = 200 material_print_temperature_layer_0 = 0 retract_at_layer_change = False -retraction_amount = 7 +retraction_amount = 6 retraction_hop = 0.075 retraction_hop_enabled = True retraction_hop_only_when_collides = True @@ -57,4 +57,4 @@ support_type = everywhere support_use_towers = False support_xy_distance = 0.7 top_bottom_thickness = 1.2 -wall_thickness = 1.2 \ No newline at end of file +wall_thickness = 1.2 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 1ecfe49c71..3e855c1bbc 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 @@ -1,18 +1,18 @@ [general] -version = 2 +version = 3 name = Normal definition = anycubic_i3_mega [metadata] +setting_version = 4 type = quality quality_type = normal weight = 1 -setting_version = 4 [values] acceleration_enabled = True -acceleration_print = 2000 -acceleration_travel = 3500 +acceleration_print = 1800 +acceleration_travel = 3000 adhesion_type = skirt brim_width = 4.0 cool_fan_full_at_height = 0.5 @@ -23,8 +23,8 @@ infill_pattern = zigzag infill_sparse_density = 25 initial_layer_line_width_factor = 140 jerk_enabled = True -jerk_print = 13 -jerk_travel = 13 +jerk_print = 8 +jerk_travel = 10 layer_height = 0.2 layer_height_0 = 0.2 material_bed_temperature = 60 @@ -32,7 +32,7 @@ material_diameter = 1.75 material_print_temperature = 200 material_print_temperature_layer_0 = 0 retract_at_layer_change = False -retraction_amount = 7 +retraction_amount = 6 retraction_hop = 0.075 retraction_hop_enabled = True retraction_hop_only_when_collides = True @@ -57,4 +57,4 @@ support_type = everywhere support_use_towers = False support_xy_distance = 0.7 top_bottom_thickness = 1.2 -wall_thickness = 1.2 \ No newline at end of file +wall_thickness = 1.2 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 92f899bdeb..c5a92e3c93 100644 --- a/resources/quality/builder_premium/bp_BVOH_Coarse_Quality.inst.cfg +++ b/resources/quality/builder_premium/bp_BVOH_Coarse_Quality.inst.cfg @@ -1,14 +1,14 @@ [general] -version = 2 +version = 3 name = Coarse definition = builder_premium_small [metadata] +setting_version = 4 type = quality quality_type = coarse -material = verbatim_bvoh_175 -setting_version = 4 weight = -1 +material = verbatim_bvoh_175 [values] material_print_temperature = =default_material_print_temperature + 5 @@ -21,4 +21,3 @@ layer_height = 0.3 top_thickness = =layer_height * 5 bottom_thickness = =layer_height * 3 speed_print = 40 - 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 cd8947aa80..72ce4f3555 100644 --- a/resources/quality/builder_premium/bp_BVOH_High_Quality.inst.cfg +++ b/resources/quality/builder_premium/bp_BVOH_High_Quality.inst.cfg @@ -1,14 +1,14 @@ [general] -version = 2 +version = 3 name = High Quality definition = builder_premium_small [metadata] +setting_version = 4 type = quality quality_type = high -material = verbatim_bvoh_175 -setting_version = 4 weight = 1 +material = verbatim_bvoh_175 [values] acceleration_print = 2000 @@ -22,4 +22,4 @@ layer_height = 0.1 top_thickness = =layer_height * 7 bottom_thickness = =layer_height * 5 speed_print = 40 -layer_height_0 = 0.2 \ No newline at end of file +layer_height_0 = 0.2 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 d59f768470..daa1d8bc78 100644 --- a/resources/quality/builder_premium/bp_BVOH_Normal_Quality.inst.cfg +++ b/resources/quality/builder_premium/bp_BVOH_Normal_Quality.inst.cfg @@ -1,14 +1,14 @@ [general] -version = 2 +version = 3 name = Normal definition = builder_premium_small [metadata] +setting_version = 4 type = quality quality_type = normal -material = verbatim_bvoh_175 -setting_version = 4 weight = 0 +material = verbatim_bvoh_175 [values] material_print_temperature = =default_material_print_temperature + 5 @@ -20,4 +20,4 @@ material_bed_temperature_layer_0= =material_bed_temperature layer_height = 0.2 top_thickness = =layer_height * 5 bottom_thickness = =layer_height * 3 -speed_print = 40 \ No newline at end of file +speed_print = 40 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 41d882ee1d..827c726071 100644 --- a/resources/quality/builder_premium/bp_Innoflex60_Coarse_Quality.inst.cfg +++ b/resources/quality/builder_premium/bp_Innoflex60_Coarse_Quality.inst.cfg @@ -1,14 +1,14 @@ [general] -version = 2 +version = 3 name = Coarse definition = builder_premium_small [metadata] +setting_version = 4 type = quality quality_type = coarse -material = innofill_innoflex60_175 -setting_version = 4 weight = -1 +material = innofill_innoflex60_175 [values] material_print_temperature = =default_material_print_temperature @@ -21,4 +21,3 @@ layer_height = 0.3 top_thickness = =layer_height * 5 bottom_thickness = =layer_height * 3 speed_print = 30 - 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 147e1f4db8..4c84d0ddfe 100644 --- a/resources/quality/builder_premium/bp_Innoflex60_High_Quality.inst.cfg +++ b/resources/quality/builder_premium/bp_Innoflex60_High_Quality.inst.cfg @@ -1,14 +1,14 @@ [general] -version = 2 +version = 3 name = High Quality definition = builder_premium_small [metadata] +setting_version = 4 type = quality quality_type = high -material = innofill_innoflex60_175 -setting_version = 4 weight = 1 +material = innofill_innoflex60_175 [values] acceleration_print = 2000 @@ -22,4 +22,4 @@ layer_height = 0.1 top_thickness = =layer_height * 7 bottom_thickness = =layer_height * 5 speed_print = 30 -layer_height_0 = 0.2 \ No newline at end of file +layer_height_0 = 0.2 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 fb43c8de19..23813f85b9 100644 --- a/resources/quality/builder_premium/bp_Innoflex60_Normal_Quality.inst.cfg +++ b/resources/quality/builder_premium/bp_Innoflex60_Normal_Quality.inst.cfg @@ -1,14 +1,14 @@ [general] -version = 2 +version = 3 name = Normal definition = builder_premium_small [metadata] +setting_version = 4 type = quality quality_type = normal -material = innofill_innoflex60_175 -setting_version = 4 weight = 0 +material = innofill_innoflex60_175 [values] material_print_temperature = =default_material_print_temperature @@ -20,4 +20,4 @@ material_bed_temperature_layer_0= =material_bed_temperature layer_height = 0.2 top_thickness = =layer_height * 5 bottom_thickness = =layer_height * 3 -speed_print = 30 \ No newline at end of file +speed_print = 30 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 f887600585..da0d40393c 100644 --- a/resources/quality/builder_premium/bp_PET_Coarse_Quality.inst.cfg +++ b/resources/quality/builder_premium/bp_PET_Coarse_Quality.inst.cfg @@ -1,14 +1,14 @@ [general] -version = 2 +version = 3 name = Coarse definition = builder_premium_small [metadata] +setting_version = 4 type = quality quality_type = coarse -material = generic_petg_175 -setting_version = 4 weight = -1 +material = generic_petg [values] material_print_temperature = =default_material_print_temperature - 5 @@ -21,4 +21,3 @@ layer_height = 0.3 top_thickness = =layer_height * 5 bottom_thickness = =layer_height * 3 speed_print = 60 - 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 4258f2f708..b78a5a29d7 100644 --- a/resources/quality/builder_premium/bp_PET_High_Quality.inst.cfg +++ b/resources/quality/builder_premium/bp_PET_High_Quality.inst.cfg @@ -1,14 +1,14 @@ [general] -version = 2 +version = 3 name = High Quality definition = builder_premium_small [metadata] +setting_version = 4 type = quality quality_type = high -material = generic_petg_175 -setting_version = 4 weight = 1 +material = generic_petg [values] acceleration_print = 2000 @@ -22,4 +22,4 @@ layer_height = 0.1 top_thickness = =layer_height * 7 bottom_thickness = =layer_height * 5 speed_print = 40 -layer_height_0 = 0.2 \ No newline at end of file +layer_height_0 = 0.2 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 b732073795..600fbed476 100644 --- a/resources/quality/builder_premium/bp_PET_Normal_Quality.inst.cfg +++ b/resources/quality/builder_premium/bp_PET_Normal_Quality.inst.cfg @@ -1,14 +1,14 @@ [general] -version = 2 +version = 3 name = Normal definition = builder_premium_small [metadata] +setting_version = 4 type = quality quality_type = normal -material = generic_petg_175 -setting_version = 4 weight = 0 +material = generic_petg [values] material_print_temperature = =default_material_print_temperature - 5 @@ -20,4 +20,4 @@ material_bed_temperature_layer_0= =material_bed_temperature layer_height = 0.2 top_thickness = =layer_height * 5 bottom_thickness = =layer_height * 3 -speed_print = 50 \ No newline at end of file +speed_print = 50 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 4f0c26dd7d..d1c1d4d563 100644 --- a/resources/quality/builder_premium/bp_PLA_Coarse_Quality.inst.cfg +++ b/resources/quality/builder_premium/bp_PLA_Coarse_Quality.inst.cfg @@ -1,14 +1,14 @@ [general] -version = 2 +version = 3 name = Coarse definition = builder_premium_small [metadata] +setting_version = 4 type = quality quality_type = coarse -material = generic_pla_175 -setting_version = 4 weight = -1 +material = generic_pla [values] material_print_temperature = =default_material_print_temperature + 15 @@ -21,4 +21,3 @@ layer_height = 0.3 top_thickness = =layer_height * 5 bottom_thickness = =layer_height * 3 speed_print = 60 - 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 4a9bcb90bf..1063342b89 100644 --- a/resources/quality/builder_premium/bp_PLA_High_Quality.inst.cfg +++ b/resources/quality/builder_premium/bp_PLA_High_Quality.inst.cfg @@ -1,14 +1,14 @@ [general] -version = 2 +version = 3 name = High Quality definition = builder_premium_small [metadata] +setting_version = 4 type = quality quality_type = high -material = generic_pla_175 -setting_version = 4 weight = 1 +material = generic_pla [values] acceleration_print = 2000 @@ -22,4 +22,4 @@ layer_height = 0.1 top_thickness = =layer_height * 7 bottom_thickness = =layer_height * 5 speed_print = 40 -layer_height_0 = 0.2 \ No newline at end of file +layer_height_0 = 0.2 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 6af5601fd6..6612c704f3 100644 --- a/resources/quality/builder_premium/bp_PLA_Normal_Quality.inst.cfg +++ b/resources/quality/builder_premium/bp_PLA_Normal_Quality.inst.cfg @@ -1,14 +1,14 @@ [general] -version = 2 +version = 3 name = Normal definition = builder_premium_small [metadata] +setting_version = 4 type = quality quality_type = normal -material = generic_pla_175 -setting_version = 4 weight = 0 +material = generic_pla [values] material_print_temperature = =default_material_print_temperature + 15 @@ -20,4 +20,4 @@ material_bed_temperature_layer_0= =material_bed_temperature layer_height = 0.2 top_thickness = =layer_height * 5 bottom_thickness = =layer_height * 3 -speed_print = 50 \ No newline at end of file +speed_print = 50 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 12a4c9d883..2717ffe998 100644 --- a/resources/quality/builder_premium/bp_PVA_Coarse_Quality.inst.cfg +++ b/resources/quality/builder_premium/bp_PVA_Coarse_Quality.inst.cfg @@ -1,14 +1,14 @@ [general] -version = 2 +version = 3 name = Coarse definition = builder_premium_small [metadata] +setting_version = 4 type = quality quality_type = coarse -material = generic_pva_175 -setting_version = 4 weight = -1 +material = generic_pva [values] material_print_temperature = =default_material_print_temperature + 10 @@ -21,4 +21,3 @@ layer_height = 0.3 top_thickness = =layer_height * 5 bottom_thickness = =layer_height * 3 speed_print = 40 - 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 d32017c5f2..3ab782af5c 100644 --- a/resources/quality/builder_premium/bp_PVA_High_Quality.inst.cfg +++ b/resources/quality/builder_premium/bp_PVA_High_Quality.inst.cfg @@ -1,14 +1,14 @@ [general] -version = 2 +version = 3 name = High Quality definition = builder_premium_small [metadata] +setting_version = 4 type = quality quality_type = high -material = generic_pva_175 -setting_version = 4 weight = 1 +material = generic_pva [values] acceleration_print = 2000 @@ -22,4 +22,4 @@ layer_height = 0.1 top_thickness = =layer_height * 7 bottom_thickness = =layer_height * 5 speed_print = 40 -layer_height_0 = 0.2 \ No newline at end of file +layer_height_0 = 0.2 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 2acc354822..fe24e976c7 100644 --- a/resources/quality/builder_premium/bp_PVA_Normal_Quality.inst.cfg +++ b/resources/quality/builder_premium/bp_PVA_Normal_Quality.inst.cfg @@ -1,14 +1,14 @@ [general] -version = 2 +version = 3 name = Normal definition = builder_premium_small [metadata] +setting_version = 4 type = quality quality_type = normal -material = generic_pva_175 -setting_version = 4 weight = 0 +material = generic_pva [values] material_print_temperature = =default_material_print_temperature + 10 @@ -20,4 +20,4 @@ material_bed_temperature_layer_0= =material_bed_temperature layer_height = 0.2 top_thickness = =layer_height * 5 bottom_thickness = =layer_height * 3 -speed_print = 40 \ No newline at end of file +speed_print = 40 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 4b66293d04..708a135847 100644 --- a/resources/quality/builder_premium/bp_global_Coarse_Quality.inst.cfg +++ b/resources/quality/builder_premium/bp_global_Coarse_Quality.inst.cfg @@ -1,14 +1,14 @@ [general] -version = 2 +version = 3 name = Coarse definition = builder_premium_small [metadata] +setting_version = 4 type = quality quality_type = coarse -setting_version = 4 weight = -1 global_quality = True [values] -layer_height = 0.3 \ No newline at end of file +layer_height = 0.3 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 4a97dda084..0c96206a7d 100644 --- a/resources/quality/builder_premium/bp_global_High_Quality.inst.cfg +++ b/resources/quality/builder_premium/bp_global_High_Quality.inst.cfg @@ -1,14 +1,14 @@ [general] -version = 2 +version = 3 name = High Quality definition = builder_premium_small [metadata] +setting_version = 4 type = quality quality_type = high -setting_version = 4 weight = 1 global_quality = True [values] -layer_height = 0.1 \ No newline at end of file +layer_height = 0.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 15ea66879f..833e7e8905 100644 --- a/resources/quality/builder_premium/bp_global_Normal_Quality.inst.cfg +++ b/resources/quality/builder_premium/bp_global_Normal_Quality.inst.cfg @@ -1,14 +1,14 @@ [general] -version = 2 +version = 3 name = Normal definition = builder_premium_small [metadata] +setting_version = 4 type = quality quality_type = normal -setting_version = 4 weight = 0 global_quality = True [values] -layer_height = 0.2 \ No newline at end of file +layer_height = 0.2 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 418855a9ba..5e713275c6 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = High definition = cartesio [metadata] +setting_version = 4 type = quality quality_type = high -material = generic_abs_175_cartesio_0.25_mm weight = 1 -setting_version = 4 +material = generic_abs +variant = 0.25 mm [values] infill_line_width = 0.3 @@ -23,7 +24,7 @@ infill_sparse_density = 40 infill_pattern = grid material_print_temperature_layer_0 = =material_print_temperature + 5 -material_initial_print_temperature = =material_print_temperature +material_initial_print_temperature = =material_print_temperature_layer_0 + 5 material_final_print_temperature = =material_print_temperature retraction_min_travel = =round(line_width * 10) retraction_prime_speed = 10 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 e95ef08e22..d35dcf1c18 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Normal definition = cartesio [metadata] +setting_version = 4 type = quality quality_type = normal -material = generic_abs_175_cartesio_0.25_mm weight = 2 -setting_version = 4 +material = generic_abs +variant = 0.25 mm [values] infill_line_width = 0.3 @@ -23,7 +24,7 @@ infill_sparse_density = 40 infill_pattern = grid material_print_temperature_layer_0 = =material_print_temperature + 5 -material_initial_print_temperature = =material_print_temperature +material_initial_print_temperature = =material_print_temperature_layer_0 + 5 material_final_print_temperature = =material_print_temperature retraction_min_travel = =round(line_width * 10) retraction_prime_speed = 10 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 524f5ba12a..06ef74108b 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = High definition = cartesio [metadata] +setting_version = 4 type = quality quality_type = high -material = generic_abs_175_cartesio_0.4_mm weight = 1 -setting_version = 4 +material = generic_abs +variant = 0.4 mm [values] infill_line_width = 0.5 @@ -23,7 +24,7 @@ infill_sparse_density = 40 infill_pattern = grid material_print_temperature_layer_0 = =material_print_temperature + 5 -material_initial_print_temperature = =material_print_temperature +material_initial_print_temperature = =material_print_temperature_layer_0 + 5 material_final_print_temperature = =material_print_temperature retraction_min_travel = =round(line_width * 10) retraction_prime_speed = 10 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 24ffb19d6f..8e5b6aadc0 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Normal definition = cartesio [metadata] +setting_version = 4 type = quality quality_type = normal -material = generic_abs_175_cartesio_0.4_mm weight = 2 -setting_version = 4 +material = generic_abs +variant = 0.4 mm [values] infill_line_width = 0.5 @@ -23,7 +24,7 @@ infill_sparse_density = 40 infill_pattern = grid material_print_temperature_layer_0 = =material_print_temperature + 5 -material_initial_print_temperature = =material_print_temperature +material_initial_print_temperature = =material_print_temperature_layer_0 + 5 material_final_print_temperature = =material_print_temperature retraction_min_travel = =round(line_width * 10) retraction_prime_speed = 10 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 1281a3afdd..5da823a2d8 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Coarse definition = cartesio [metadata] +setting_version = 4 type = quality quality_type = coarse -material = generic_abs_175_cartesio_0.8_mm weight = 3 -setting_version = 4 +material = generic_abs +variant = 0.8 mm [values] infill_line_width = 0.9 @@ -23,7 +24,7 @@ infill_sparse_density = 40 infill_pattern = grid material_print_temperature_layer_0 = =material_print_temperature + 5 -material_initial_print_temperature = =material_print_temperature +material_initial_print_temperature = =material_print_temperature_layer_0 + 5 material_final_print_temperature = =material_print_temperature retraction_min_travel = =round(line_width * 10) retraction_prime_speed = 10 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 a8d19deef7..267857cff1 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Extra Coarse definition = cartesio [metadata] +setting_version = 4 type = quality quality_type = extra coarse -material = generic_abs_175_cartesio_0.8_mm weight = 4 -setting_version = 4 +material = generic_abs +variant = 0.8 mm [values] infill_line_width = 0.9 @@ -23,7 +24,7 @@ infill_sparse_density = 40 infill_pattern = grid material_print_temperature_layer_0 = =material_print_temperature + 5 -material_initial_print_temperature = =material_print_temperature +material_initial_print_temperature = =material_print_temperature_layer_0 + 5 material_final_print_temperature = =material_print_temperature retraction_min_travel = =round(line_width * 10) retraction_prime_speed = 10 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 87cc855f44..e3219d145c 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = High definition = cartesio [metadata] +setting_version = 4 type = quality quality_type = high -material = generic_abs_175_cartesio_0.8_mm weight = 1 -setting_version = 4 +material = generic_abs +variant = 0.8 mm [values] infill_line_width = 0.9 @@ -23,7 +24,7 @@ infill_sparse_density = 40 infill_pattern = grid material_print_temperature_layer_0 = =material_print_temperature + 5 -material_initial_print_temperature = =material_print_temperature +material_initial_print_temperature = =material_print_temperature_layer_0 + 5 material_final_print_temperature = =material_print_temperature retraction_min_travel = =round(line_width * 10) retraction_prime_speed = 10 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 4ca2598051..111bef11dc 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Normal definition = cartesio [metadata] +setting_version = 4 type = quality quality_type = normal -material = generic_abs_175_cartesio_0.8_mm weight = 2 -setting_version = 4 +material = generic_abs +variant = 0.8 mm [values] infill_line_width = 0.9 @@ -23,7 +24,7 @@ infill_sparse_density = 40 infill_pattern = grid material_print_temperature_layer_0 = =material_print_temperature + 5 -material_initial_print_temperature = =material_print_temperature +material_initial_print_temperature = =material_print_temperature_layer_0 + 5 material_final_print_temperature = =material_print_temperature retraction_min_travel = =round(line_width * 10) retraction_prime_speed = 10 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 42eb705f11..35dddeca91 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = High definition = cartesio [metadata] +setting_version = 4 type = quality quality_type = high -material = dsm_arnitel2045_175_cartesio_0.4_mm weight = 1 -setting_version = 4 +material = dsm_arnitel2045_175 +variant = 0.4 mm [values] infill_line_width = 0.5 @@ -23,7 +24,7 @@ infill_sparse_density = 40 infill_pattern = grid material_print_temperature_layer_0 = =material_print_temperature + 5 -material_initial_print_temperature = =material_print_temperature +material_initial_print_temperature = =material_print_temperature_layer_0 + 5 material_final_print_temperature = =material_print_temperature retraction_min_travel = =round(line_width * 10) retraction_prime_speed = 2 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 538fe91b76..3234881c72 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Normal definition = cartesio [metadata] +setting_version = 4 type = quality quality_type = normal -material = dsm_arnitel2045_175_cartesio_0.4_mm weight = 2 -setting_version = 4 +material = dsm_arnitel2045_175 +variant = 0.4 mm [values] infill_line_width = 0.5 @@ -23,7 +24,7 @@ infill_sparse_density = 40 infill_pattern = grid material_print_temperature_layer_0 = =material_print_temperature + 5 -material_initial_print_temperature = =material_print_temperature +material_initial_print_temperature = =material_print_temperature_layer_0 + 5 material_final_print_temperature = =material_print_temperature retraction_min_travel = =round(line_width * 10) retraction_prime_speed = 2 diff --git a/resources/quality/cartesio/cartesio_global_Coarse_Quality.inst.cfg b/resources/quality/cartesio/cartesio_global_Coarse_Quality.inst.cfg index 11760b139f..017483f79a 100644 --- a/resources/quality/cartesio/cartesio_global_Coarse_Quality.inst.cfg +++ b/resources/quality/cartesio/cartesio_global_Coarse_Quality.inst.cfg @@ -1,14 +1,14 @@ [general] -version = 2 +version = 3 name = Coarse definition = cartesio [metadata] +setting_version = 4 type = quality quality_type = coarse -global_quality = True weight = -3 -setting_version = 4 +global_quality = True [values] layer_height = 0.4 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 c654dba598..aadb582309 100644 --- a/resources/quality/cartesio/cartesio_global_Extra_Coarse_Quality.inst.cfg +++ b/resources/quality/cartesio/cartesio_global_Extra_Coarse_Quality.inst.cfg @@ -1,14 +1,14 @@ [general] -version = 2 +version = 3 name = Extra Coarse definition = cartesio [metadata] +setting_version = 4 type = quality quality_type = extra coarse -global_quality = True weight = -4 -setting_version = 4 +global_quality = True [values] layer_height = 0.6 diff --git a/resources/quality/cartesio/cartesio_global_High_Quality.inst.cfg b/resources/quality/cartesio/cartesio_global_High_Quality.inst.cfg index 393a5f3b39..e4131dc3a2 100644 --- a/resources/quality/cartesio/cartesio_global_High_Quality.inst.cfg +++ b/resources/quality/cartesio/cartesio_global_High_Quality.inst.cfg @@ -1,14 +1,14 @@ [general] -version = 2 +version = 3 name = High definition = cartesio [metadata] +setting_version = 4 type = quality quality_type = high -global_quality = True weight = 1 -setting_version = 4 +global_quality = True [values] layer_height = 0.1 diff --git a/resources/quality/cartesio/cartesio_global_Normal_Quality.inst.cfg b/resources/quality/cartesio/cartesio_global_Normal_Quality.inst.cfg index c09493ba10..e29a98c980 100644 --- a/resources/quality/cartesio/cartesio_global_Normal_Quality.inst.cfg +++ b/resources/quality/cartesio/cartesio_global_Normal_Quality.inst.cfg @@ -1,14 +1,14 @@ [general] -version = 2 +version = 3 name = Normal definition = cartesio [metadata] +setting_version = 4 type = quality quality_type = normal -global_quality = True weight = 0 -setting_version = 4 +global_quality = True [values] layer_height = 0.2 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 eae4e82cd3..b2dc76479f 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = High definition = cartesio [metadata] +setting_version = 4 type = quality quality_type = high -material = generic_hips_175_cartesio_0.25_mm weight = 1 -setting_version = 4 +material = generic_hips +variant = 0.25 mm [values] infill_line_width = 0.3 @@ -23,7 +24,7 @@ infill_sparse_density = 40 infill_pattern = grid material_print_temperature_layer_0 = =material_print_temperature + 5 -material_initial_print_temperature = =material_print_temperature +material_initial_print_temperature = =material_print_temperature_layer_0 + 5 material_final_print_temperature = =material_print_temperature retraction_min_travel = =round(line_width * 10) retraction_prime_speed = 10 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 0c47b18196..c18167b97a 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Normal definition = cartesio [metadata] +setting_version = 4 type = quality quality_type = normal -material = generic_hips_175_cartesio_0.25_mm weight = 2 -setting_version = 4 +material = generic_hips +variant = 0.25 mm [values] infill_line_width = 0.3 @@ -23,7 +24,7 @@ infill_sparse_density = 40 infill_pattern = grid material_print_temperature_layer_0 = =material_print_temperature + 5 -material_initial_print_temperature = =material_print_temperature +material_initial_print_temperature = =material_print_temperature_layer_0 + 5 material_final_print_temperature = =material_print_temperature retraction_min_travel = =round(line_width * 10) retraction_prime_speed = 10 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 14f1ea4662..506ff1807b 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = High definition = cartesio [metadata] +setting_version = 4 type = quality quality_type = high -material = generic_hips_175_cartesio_0.4_mm weight = 1 -setting_version = 4 +material = generic_hips +variant = 0.4 mm [values] infill_line_width = 0.5 @@ -23,7 +24,7 @@ infill_sparse_density = 40 infill_pattern = grid material_print_temperature_layer_0 = =material_print_temperature + 5 -material_initial_print_temperature = =material_print_temperature +material_initial_print_temperature = =material_print_temperature_layer_0 + 5 material_final_print_temperature = =material_print_temperature retraction_min_travel = =round(line_width * 10) retraction_prime_speed = 10 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 bd13b358ff..1f2ee24064 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Normal definition = cartesio [metadata] +setting_version = 4 type = quality quality_type = normal -material = generic_hips_175_cartesio_0.4_mm weight = 2 -setting_version = 4 +material = generic_hips +variant = 0.4 mm [values] infill_line_width = 0.5 @@ -23,7 +24,7 @@ infill_sparse_density = 40 infill_pattern = grid material_print_temperature_layer_0 = =material_print_temperature + 5 -material_initial_print_temperature = =material_print_temperature +material_initial_print_temperature = =material_print_temperature_layer_0 + 5 material_final_print_temperature = =material_print_temperature retraction_min_travel = =round(line_width * 10) retraction_prime_speed = 10 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 ca864692c3..d117df88a6 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Coarse definition = cartesio [metadata] +setting_version = 4 type = quality quality_type = coarse -material = generic_hips_175_cartesio_0.8_mm weight = 3 -setting_version = 4 +material = generic_hips +variant = 0.8 mm [values] infill_line_width = 0.9 @@ -23,7 +24,7 @@ infill_sparse_density = 40 infill_pattern = grid material_print_temperature_layer_0 = =material_print_temperature + 5 -material_initial_print_temperature = =material_print_temperature +material_initial_print_temperature = =material_print_temperature_layer_0 + 5 material_final_print_temperature = =material_print_temperature retraction_min_travel = =round(line_width * 10) retraction_prime_speed = 10 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 3cadef4fdd..e833abcdad 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Extra Coarse definition = cartesio [metadata] +setting_version = 4 type = quality quality_type = extra coarse -material = generic_hips_175_cartesio_0.8_mm weight = 4 -setting_version = 4 +material = generic_hips +variant = 0.8 mm [values] infill_line_width = 0.9 @@ -23,7 +24,7 @@ infill_sparse_density = 40 infill_pattern = grid material_print_temperature_layer_0 = =material_print_temperature + 5 -material_initial_print_temperature = =material_print_temperature +material_initial_print_temperature = =material_print_temperature_layer_0 + 5 material_final_print_temperature = =material_print_temperature retraction_min_travel = =round(line_width * 10) retraction_prime_speed = 10 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 07839c8a9a..eee5862fea 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = High definition = cartesio [metadata] +setting_version = 4 type = quality quality_type = high -material = generic_hips_175_cartesio_0.8_mm weight = 1 -setting_version = 4 +material = generic_hips +variant = 0.8 mm [values] infill_line_width = 0.9 @@ -23,7 +24,7 @@ infill_sparse_density = 40 infill_pattern = grid material_print_temperature_layer_0 = =material_print_temperature + 5 -material_initial_print_temperature = =material_print_temperature +material_initial_print_temperature = =material_print_temperature_layer_0 + 5 material_final_print_temperature = =material_print_temperature retraction_min_travel = =round(line_width * 10) retraction_prime_speed = 10 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 acc9db0891..b0057d5b03 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Normal definition = cartesio [metadata] +setting_version = 4 type = quality quality_type = normal -material = generic_hips_175_cartesio_0.8_mm weight = 2 -setting_version = 4 +material = generic_hips +variant = 0.8 mm [values] infill_line_width = 0.9 @@ -23,7 +24,7 @@ infill_sparse_density = 40 infill_pattern = grid material_print_temperature_layer_0 = =material_print_temperature + 5 -material_initial_print_temperature = =material_print_temperature +material_initial_print_temperature = =material_print_temperature_layer_0 + 5 material_final_print_temperature = =material_print_temperature retraction_min_travel = =round(line_width * 10) retraction_prime_speed = 10 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 b1f2f17d41..6dce2b7ea2 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = High definition = cartesio [metadata] +setting_version = 4 type = quality quality_type = high -material = generic_nylon_175_cartesio_0.25_mm weight = 1 -setting_version = 4 +material = generic_nylon +variant = 0.25 mm [values] infill_line_width = 0.3 @@ -23,7 +24,7 @@ infill_sparse_density = 40 infill_pattern = grid material_print_temperature_layer_0 = =material_print_temperature + 5 -material_initial_print_temperature = =material_print_temperature +material_initial_print_temperature = =material_print_temperature_layer_0 + 5 material_final_print_temperature = =material_print_temperature retraction_min_travel = =round(line_width * 10) retraction_prime_speed = 10 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 bcfa1c2e30..169a7cab65 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Normal definition = cartesio [metadata] +setting_version = 4 type = quality quality_type = normal -material = generic_nylon_175_cartesio_0.25_mm weight = 2 -setting_version = 4 +material = generic_nylon +variant = 0.25 mm [values] infill_line_width = 0.3 @@ -23,7 +24,7 @@ infill_sparse_density = 40 infill_pattern = grid material_print_temperature_layer_0 = =material_print_temperature + 5 -material_initial_print_temperature = =material_print_temperature +material_initial_print_temperature = =material_print_temperature_layer_0 + 5 material_final_print_temperature = =material_print_temperature retraction_min_travel = =round(line_width * 10) retraction_prime_speed = 10 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 2cd50efeb2..101fb595d5 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = High definition = cartesio [metadata] +setting_version = 4 type = quality quality_type = high -material = generic_nylon_175_cartesio_0.4_mm weight = 1 -setting_version = 4 +material = generic_nylon +variant = 0.4 mm [values] infill_line_width = 0.5 @@ -23,7 +24,7 @@ infill_sparse_density = 40 infill_pattern = grid material_print_temperature_layer_0 = =material_print_temperature + 5 -material_initial_print_temperature = =material_print_temperature +material_initial_print_temperature = =material_print_temperature_layer_0 + 5 material_final_print_temperature = =material_print_temperature retraction_min_travel = =round(line_width * 10) retraction_prime_speed = 10 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 7a7d767ea3..dc5522bda3 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Normal definition = cartesio [metadata] +setting_version = 4 type = quality quality_type = normal -material = generic_nylon_175_cartesio_0.4_mm weight = 2 -setting_version = 4 +material = generic_nylon +variant = 0.4 mm [values] infill_line_width = 0.5 @@ -23,7 +24,7 @@ infill_sparse_density = 40 infill_pattern = grid material_print_temperature_layer_0 = =material_print_temperature + 5 -material_initial_print_temperature = =material_print_temperature +material_initial_print_temperature = =material_print_temperature_layer_0 + 5 material_final_print_temperature = =material_print_temperature retraction_min_travel = =round(line_width * 10) retraction_prime_speed = 10 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 5684c89e23..0b4ef88282 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Coarse definition = cartesio [metadata] +setting_version = 4 type = quality quality_type = coarse -material = generic_nylon_175_cartesio_0.8_mm weight = 3 -setting_version = 4 +material = generic_nylon +variant = 0.8 mm [values] infill_line_width = 0.9 @@ -23,7 +24,7 @@ infill_sparse_density = 40 infill_pattern = grid material_print_temperature_layer_0 = =material_print_temperature + 5 -material_initial_print_temperature = =material_print_temperature +material_initial_print_temperature = =material_print_temperature_layer_0 + 5 material_final_print_temperature = =material_print_temperature retraction_min_travel = =round(line_width * 10) retraction_prime_speed = 10 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 8d97e9ac5f..2fd9aa3220 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Extra Coarse definition = cartesio [metadata] +setting_version = 4 type = quality quality_type = extra coarse -material = generic_nylon_175_cartesio_0.8_mm weight = 4 -setting_version = 4 +material = generic_nylon +variant = 0.8 mm [values] infill_line_width = 0.9 @@ -23,7 +24,7 @@ infill_sparse_density = 40 infill_pattern = grid material_print_temperature_layer_0 = =material_print_temperature + 5 -material_initial_print_temperature = =material_print_temperature +material_initial_print_temperature = =material_print_temperature_layer_0 + 5 material_final_print_temperature = =material_print_temperature retraction_min_travel = =round(line_width * 10) retraction_prime_speed = 10 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 946f8de34d..26f749e357 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = High definition = cartesio [metadata] +setting_version = 4 type = quality quality_type = high -material = generic_nylon_175_cartesio_0.8_mm weight = 1 -setting_version = 4 +material = generic_nylon +variant = 0.8 mm [values] infill_line_width = 0.9 @@ -23,7 +24,7 @@ infill_sparse_density = 40 infill_pattern = grid material_print_temperature_layer_0 = =material_print_temperature + 5 -material_initial_print_temperature = =material_print_temperature +material_initial_print_temperature = =material_print_temperature_layer_0 + 5 material_final_print_temperature = =material_print_temperature retraction_min_travel = =round(line_width * 10) retraction_prime_speed = 10 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 80f390c254..4843c9cbf4 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Normal definition = cartesio [metadata] +setting_version = 4 type = quality quality_type = normal -material = generic_nylon_175_cartesio_0.8_mm weight = 2 -setting_version = 4 +material = generic_nylon +variant = 0.8 mm [values] infill_line_width = 0.9 @@ -23,7 +24,7 @@ infill_sparse_density = 40 infill_pattern = grid material_print_temperature_layer_0 = =material_print_temperature + 5 -material_initial_print_temperature = =material_print_temperature +material_initial_print_temperature = =material_print_temperature_layer_0 + 5 material_final_print_temperature = =material_print_temperature retraction_min_travel = =round(line_width * 10) retraction_prime_speed = 10 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 ff6547dd91..d29c8c6801 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = High definition = cartesio [metadata] +setting_version = 4 type = quality quality_type = high -material = generic_pc_175_cartesio_0.25_mm weight = 1 -setting_version = 4 +material = generic_pc +variant = 0.25 mm [values] infill_line_width = 0.3 @@ -23,7 +24,7 @@ infill_sparse_density = 40 infill_pattern = grid material_print_temperature_layer_0 = =material_print_temperature + 5 -material_initial_print_temperature = =material_print_temperature +material_initial_print_temperature = =material_print_temperature_layer_0 + 5 material_final_print_temperature = =material_print_temperature retraction_min_travel = =round(line_width * 10) retraction_prime_speed = 10 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 f3faa9c129..35168f8ed7 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Normal definition = cartesio [metadata] +setting_version = 4 type = quality quality_type = normal -material = generic_pc_175_cartesio_0.25_mm weight = 2 -setting_version = 4 +material = generic_pc +variant = 0.25 mm [values] infill_line_width = 0.3 @@ -23,7 +24,7 @@ infill_sparse_density = 40 infill_pattern = grid material_print_temperature_layer_0 = =material_print_temperature + 5 -material_initial_print_temperature = =material_print_temperature +material_initial_print_temperature = =material_print_temperature_layer_0 + 5 material_final_print_temperature = =material_print_temperature retraction_min_travel = =round(line_width * 10) retraction_prime_speed = 10 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 3aa808fab5..05bb623a90 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = High definition = cartesio [metadata] +setting_version = 4 type = quality quality_type = high -material = generic_pc_175_cartesio_0.4_mm weight = 1 -setting_version = 4 +material = generic_pc +variant = 0.4 mm [values] infill_line_width = 0.5 @@ -23,7 +24,7 @@ infill_sparse_density = 40 infill_pattern = grid material_print_temperature_layer_0 = =material_print_temperature + 5 -material_initial_print_temperature = =material_print_temperature +material_initial_print_temperature = =material_print_temperature_layer_0 + 5 material_final_print_temperature = =material_print_temperature retraction_min_travel = =round(line_width * 10) retraction_prime_speed = 10 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 f9be12da3a..569ecb069a 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Normal definition = cartesio [metadata] +setting_version = 4 type = quality quality_type = normal -material = generic_pc_175_cartesio_0.4_mm weight = 2 -setting_version = 4 +material = generic_pc +variant = 0.4 mm [values] infill_line_width = 0.5 @@ -23,7 +24,7 @@ infill_sparse_density = 40 infill_pattern = grid material_print_temperature_layer_0 = =material_print_temperature + 5 -material_initial_print_temperature = =material_print_temperature +material_initial_print_temperature = =material_print_temperature_layer_0 + 5 material_final_print_temperature = =material_print_temperature retraction_min_travel = =round(line_width * 10) retraction_prime_speed = 10 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 597187437b..b35681187d 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Coarse definition = cartesio [metadata] +setting_version = 4 type = quality quality_type = coarse -material = generic_pc_175_cartesio_0.8_mm weight = 3 -setting_version = 4 +material = generic_pc +variant = 0.8 mm [values] infill_line_width = 0.9 @@ -23,7 +24,7 @@ infill_sparse_density = 40 infill_pattern = grid material_print_temperature_layer_0 = =material_print_temperature + 5 -material_initial_print_temperature = =material_print_temperature +material_initial_print_temperature = =material_print_temperature_layer_0 + 5 material_final_print_temperature = =material_print_temperature retraction_min_travel = =round(line_width * 10) retraction_prime_speed = 10 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 6d1fa196ec..75fe030443 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Extra Coarse definition = cartesio [metadata] +setting_version = 4 type = quality quality_type = extra coarse -material = generic_pc_175_cartesio_0.8_mm weight = 4 -setting_version = 4 +material = generic_pc +variant = 0.8 mm [values] infill_line_width = 0.9 @@ -23,7 +24,7 @@ infill_sparse_density = 40 infill_pattern = grid material_print_temperature_layer_0 = =material_print_temperature + 5 -material_initial_print_temperature = =material_print_temperature +material_initial_print_temperature = =material_print_temperature_layer_0 + 5 material_final_print_temperature = =material_print_temperature retraction_min_travel = =round(line_width * 10) retraction_prime_speed = 10 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 c570b65350..05232ac1b3 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = High definition = cartesio [metadata] +setting_version = 4 type = quality quality_type = high -material = generic_pc_175_cartesio_0.8_mm weight = 1 -setting_version = 4 +material = generic_pc +variant = 0.8 mm [values] infill_line_width = 0.9 @@ -23,7 +24,7 @@ infill_sparse_density = 40 infill_pattern = grid material_print_temperature_layer_0 = =material_print_temperature + 5 -material_initial_print_temperature = =material_print_temperature +material_initial_print_temperature = =material_print_temperature_layer_0 + 5 material_final_print_temperature = =material_print_temperature retraction_min_travel = =round(line_width * 10) retraction_prime_speed = 10 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 0d73b24197..106afcf992 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Normal definition = cartesio [metadata] +setting_version = 4 type = quality quality_type = normal -material = generic_pc_175_cartesio_0.8_mm weight = 2 -setting_version = 4 +material = generic_pc +variant = 0.8 mm [values] infill_line_width = 0.9 @@ -23,7 +24,7 @@ infill_sparse_density = 40 infill_pattern = grid material_print_temperature_layer_0 = =material_print_temperature + 5 -material_initial_print_temperature = =material_print_temperature +material_initial_print_temperature = =material_print_temperature_layer_0 + 5 material_final_print_temperature = =material_print_temperature retraction_min_travel = =round(line_width * 10) retraction_prime_speed = 10 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 c5c4be6f4a..edeb791847 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = High definition = cartesio [metadata] +setting_version = 4 type = quality quality_type = high -material = generic_petg_175_cartesio_0.25_mm weight = 1 -setting_version = 4 +material = generic_petg +variant = 0.25 mm [values] infill_line_width = 0.3 @@ -23,7 +24,7 @@ infill_sparse_density = 40 infill_pattern = grid material_print_temperature_layer_0 = =material_print_temperature + 5 -material_initial_print_temperature = =material_print_temperature +material_initial_print_temperature = =material_print_temperature_layer_0 + 5 material_final_print_temperature = =material_print_temperature retraction_min_travel = =round(line_width * 10) retraction_prime_speed = 8 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 6d12bdc402..ca95ba4d55 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Normal definition = cartesio [metadata] +setting_version = 4 type = quality quality_type = normal -material = generic_petg_175_cartesio_0.25_mm weight = 2 -setting_version = 4 +material = generic_petg +variant = 0.25 mm [values] infill_line_width = 0.3 @@ -23,7 +24,7 @@ infill_sparse_density = 40 infill_pattern = grid material_print_temperature_layer_0 = =material_print_temperature + 5 -material_initial_print_temperature = =material_print_temperature +material_initial_print_temperature = =material_print_temperature_layer_0 + 5 material_final_print_temperature = =material_print_temperature retraction_min_travel = =round(line_width * 10) retraction_prime_speed = 8 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 43dda5007c..47e4e74fba 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = High definition = cartesio [metadata] +setting_version = 4 type = quality quality_type = high -material = generic_petg_175_cartesio_0.4_mm weight = 1 -setting_version = 4 +material = generic_petg +variant = 0.4 mm [values] infill_line_width = 0.5 @@ -23,7 +24,7 @@ infill_sparse_density = 40 infill_pattern = grid material_print_temperature_layer_0 = =material_print_temperature + 5 -material_initial_print_temperature = =material_print_temperature +material_initial_print_temperature = =material_print_temperature_layer_0 + 5 material_final_print_temperature = =material_print_temperature retraction_min_travel = =round(line_width * 10) retraction_prime_speed = 8 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 094dc33263..737289f778 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Normal definition = cartesio [metadata] +setting_version = 4 type = quality quality_type = normal -material = generic_petg_175_cartesio_0.4_mm weight = 2 -setting_version = 4 +material = generic_petg +variant = 0.4 mm [values] infill_line_width = 0.5 @@ -23,7 +24,7 @@ infill_sparse_density = 40 infill_pattern = grid material_print_temperature_layer_0 = =material_print_temperature + 5 -material_initial_print_temperature = =material_print_temperature +material_initial_print_temperature = =material_print_temperature_layer_0 + 5 material_final_print_temperature = =material_print_temperature retraction_min_travel = =round(line_width * 10) retraction_prime_speed = 8 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 da9e4ad3dd..54abbbeb46 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Coarse definition = cartesio [metadata] +setting_version = 4 type = quality quality_type = coarse -material = generic_petg_175_cartesio_0.8_mm weight = 3 -setting_version = 4 +material = generic_petg +variant = 0.8 mm [values] infill_line_width = 0.9 @@ -23,7 +24,7 @@ infill_sparse_density = 40 infill_pattern = grid material_print_temperature_layer_0 = =material_print_temperature + 5 -material_initial_print_temperature = =material_print_temperature +material_initial_print_temperature = =material_print_temperature_layer_0 + 5 material_final_print_temperature = =material_print_temperature retraction_min_travel = =round(line_width * 10) retraction_prime_speed = 8 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 607ba778a1..75ef0ed89b 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Extra Coarse definition = cartesio [metadata] +setting_version = 4 type = quality quality_type = extra coarse -material = generic_petg_175_cartesio_0.8_mm weight = 4 -setting_version = 4 +material = generic_petg +variant = 0.8 mm [values] infill_line_width = 0.9 @@ -23,7 +24,7 @@ infill_sparse_density = 40 infill_pattern = grid material_print_temperature_layer_0 = =material_print_temperature + 5 -material_initial_print_temperature = =material_print_temperature +material_initial_print_temperature = =material_print_temperature_layer_0 + 5 material_final_print_temperature = =material_print_temperature retraction_min_travel = =round(line_width * 10) retraction_prime_speed = 8 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 3010d95dab..2a9542ce56 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = High definition = cartesio [metadata] +setting_version = 4 type = quality quality_type = high -material = generic_petg_175_cartesio_0.8_mm weight = 1 -setting_version = 4 +material = generic_petg +variant = 0.8 mm [values] infill_line_width = 0.9 @@ -23,7 +24,7 @@ infill_sparse_density = 50 infill_pattern = grid material_print_temperature_layer_0 = =material_print_temperature + 5 -material_initial_print_temperature = =material_print_temperature +material_initial_print_temperature = =material_print_temperature_layer_0 + 5 material_final_print_temperature = =material_print_temperature retraction_min_travel = =round(line_width * 10) retraction_prime_speed = 8 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 fbf8fac67f..9f27c3c8d1 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Normal definition = cartesio [metadata] +setting_version = 4 type = quality quality_type = normal -material = generic_petg_175_cartesio_0.8_mm weight = 2 -setting_version = 4 +material = generic_petg +variant = 0.8 mm [values] infill_line_width = 0.9 @@ -23,7 +24,7 @@ infill_sparse_density = 40 infill_pattern = grid material_print_temperature_layer_0 = =material_print_temperature + 5 -material_initial_print_temperature = =material_print_temperature +material_initial_print_temperature = =material_print_temperature_layer_0 + 5 material_final_print_temperature = =material_print_temperature retraction_min_travel = =round(line_width * 10) retraction_prime_speed = 8 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 9d8130602e..62cf3194c0 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = High definition = cartesio [metadata] +setting_version = 4 type = quality quality_type = high -material = generic_pla_175_cartesio_0.25_mm weight = 1 -setting_version = 4 +material = generic_pla +variant = 0.25 mm [values] infill_line_width = 0.3 @@ -23,7 +24,7 @@ infill_sparse_density = 40 infill_pattern = grid material_print_temperature_layer_0 = =material_print_temperature + 5 -material_initial_print_temperature = =material_print_temperature +material_initial_print_temperature = =material_print_temperature_layer_0 + 5 material_final_print_temperature = =material_print_temperature retraction_min_travel = =round(line_width * 10) retraction_prime_speed = 10 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 98401dbf42..5dd27477e1 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Normal definition = cartesio [metadata] +setting_version = 4 type = quality quality_type = normal -material = generic_pla_175_cartesio_0.25_mm weight = 0 -setting_version = 4 +material = generic_pla +variant = 0.25 mm [values] infill_line_width = 0.3 @@ -23,7 +24,7 @@ infill_sparse_density = 40 infill_pattern = grid material_print_temperature_layer_0 = =material_print_temperature + 5 -material_initial_print_temperature = =material_print_temperature +material_initial_print_temperature = =material_print_temperature_layer_0 + 5 material_final_print_temperature = =material_print_temperature retraction_min_travel = =round(line_width * 10) retraction_prime_speed = 10 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 2eda5103d7..b6bf3808be 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = High definition = cartesio [metadata] +setting_version = 4 type = quality quality_type = high -material = generic_pla_175_cartesio_0.4_mm weight = 1 -setting_version = 4 +material = generic_pla +variant = 0.4 mm [values] infill_line_width = 0.5 @@ -23,7 +24,7 @@ infill_sparse_density = 40 infill_pattern = grid material_print_temperature_layer_0 = =material_print_temperature + 5 -material_initial_print_temperature = =material_print_temperature +material_initial_print_temperature = =material_print_temperature_layer_0 + 5 material_final_print_temperature = =material_print_temperature retraction_min_travel = =round(line_width * 10) retraction_prime_speed = 10 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 f3d3820ff7..a03b316e6f 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Normal definition = cartesio [metadata] +setting_version = 4 type = quality quality_type = normal -material = generic_pla_175_cartesio_0.4_mm weight = 0 -setting_version = 4 +material = generic_pla +variant = 0.4 mm [values] infill_line_width = 0.5 @@ -23,7 +24,7 @@ infill_sparse_density = 40 infill_pattern = grid material_print_temperature_layer_0 = =material_print_temperature + 5 -material_initial_print_temperature = =material_print_temperature +material_initial_print_temperature = =material_print_temperature_layer_0 + 5 material_final_print_temperature = =material_print_temperature retraction_min_travel = =round(line_width * 10) retraction_prime_speed = 10 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 d2cf708336..6284ab3325 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Coarse definition = cartesio [metadata] +setting_version = 4 type = quality quality_type = coarse -material = generic_pla_175_cartesio_0.8_mm weight = -3 -setting_version = 4 +material = generic_pla +variant = 0.8 mm [values] infill_line_width = 0.9 @@ -23,7 +24,7 @@ infill_sparse_density = 40 infill_pattern = grid material_print_temperature_layer_0 = =material_print_temperature + 5 -material_initial_print_temperature = =material_print_temperature +material_initial_print_temperature = =material_print_temperature_layer_0 + 5 material_final_print_temperature = =material_print_temperature retraction_min_travel = =round(line_width * 10) retraction_prime_speed = 10 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 888d8f91a7..58b4c347f3 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Extra Coarse definition = cartesio [metadata] +setting_version = 4 type = quality quality_type = extra coarse -material = generic_pla_175_cartesio_0.8_mm weight = -4 -setting_version = 4 +material = generic_pla +variant = 0.8 mm [values] infill_line_width = 0.9 @@ -23,7 +24,7 @@ infill_sparse_density = 40 infill_pattern = grid material_print_temperature_layer_0 = =material_print_temperature + 5 -material_initial_print_temperature = =material_print_temperature +material_initial_print_temperature = =material_print_temperature_layer_0 + 5 material_final_print_temperature = =material_print_temperature retraction_min_travel = =round(line_width * 10) retraction_prime_speed = 10 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 558514db98..f0d22251bb 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = High definition = cartesio [metadata] +setting_version = 4 type = quality quality_type = high -material = generic_pla_175_cartesio_0.8_mm weight = 1 -setting_version = 4 +material = generic_pla +variant = 0.8 mm [values] infill_line_width = 0.9 @@ -23,7 +24,7 @@ infill_sparse_density = 40 infill_pattern = grid material_print_temperature_layer_0 = =material_print_temperature + 5 -material_initial_print_temperature = =material_print_temperature +material_initial_print_temperature = =material_print_temperature_layer_0 + 5 material_final_print_temperature = =material_print_temperature retraction_min_travel = =round(line_width * 10) retraction_prime_speed = 10 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 9c508e4a1f..44ed46ddd3 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Normal definition = cartesio [metadata] +setting_version = 4 type = quality quality_type = normal -material = generic_pla_175_cartesio_0.8_mm weight = 0 -setting_version = 4 +material = generic_pla +variant = 0.8 mm [values] infill_line_width = 0.9 @@ -23,7 +24,7 @@ infill_sparse_density = 40 infill_pattern = grid material_print_temperature_layer_0 = =material_print_temperature + 5 -material_initial_print_temperature = =material_print_temperature +material_initial_print_temperature = =material_print_temperature_layer_0 + 5 material_final_print_temperature = =material_print_temperature retraction_min_travel = =round(line_width * 10) retraction_prime_speed = 10 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 fcbf4913de..aa9ac8393d 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = High definition = cartesio [metadata] +setting_version = 4 type = quality quality_type = high -material = generic_pva_175_cartesio_0.25_mm weight = 1 -setting_version = 4 +material = generic_pva +variant = 0.25 mm [values] infill_line_width = 0.3 @@ -23,7 +24,7 @@ infill_sparse_density = 40 infill_pattern = grid material_print_temperature_layer_0 = =material_print_temperature + 5 -material_initial_print_temperature = =material_print_temperature +material_initial_print_temperature = =material_print_temperature_layer_0 + 5 material_final_print_temperature = =material_print_temperature retraction_min_travel = =round(line_width * 10) retraction_prime_speed = 8 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 3893421df0..b4de6b5730 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Normal definition = cartesio [metadata] +setting_version = 4 type = quality quality_type = normal -material = generic_pva_175_cartesio_0.25_mm weight = 2 -setting_version = 4 +material = generic_pva +variant = 0.25 mm [values] infill_line_width = 0.3 @@ -23,7 +24,7 @@ infill_sparse_density = 40 infill_pattern = grid material_print_temperature_layer_0 = =material_print_temperature + 5 -material_initial_print_temperature = =material_print_temperature +material_initial_print_temperature = =material_print_temperature_layer_0 + 5 material_final_print_temperature = =material_print_temperature retraction_min_travel = =round(line_width * 10) retraction_prime_speed = 8 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 5876db1e2e..5a60dfbe17 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = High definition = cartesio [metadata] +setting_version = 4 type = quality quality_type = high -material = generic_pva_175_cartesio_0.4_mm weight = 1 -setting_version = 4 +material = generic_pva +variant = 0.4 mm [values] infill_line_width = 0.5 @@ -23,7 +24,7 @@ infill_sparse_density = 40 infill_pattern = grid material_print_temperature_layer_0 = =material_print_temperature + 5 -material_initial_print_temperature = =material_print_temperature +material_initial_print_temperature = =material_print_temperature_layer_0 + 5 material_final_print_temperature = =material_print_temperature retraction_min_travel = =round(line_width * 10) retraction_prime_speed = 8 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 c977e79a5c..9cc57ac16a 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Normal definition = cartesio [metadata] +setting_version = 4 type = quality quality_type = normal -material = generic_pva_175_cartesio_0.4_mm weight = 2 -setting_version = 4 +material = generic_pva +variant = 0.4 mm [values] infill_line_width = 0.5 @@ -23,7 +24,7 @@ infill_sparse_density = 40 infill_pattern = grid material_print_temperature_layer_0 = =material_print_temperature + 5 -material_initial_print_temperature = =material_print_temperature +material_initial_print_temperature = =material_print_temperature_layer_0 + 5 material_final_print_temperature = =material_print_temperature retraction_min_travel = =round(line_width * 10) retraction_prime_speed = 8 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 8c36d8e7ed..df1bffeb41 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Coarse definition = cartesio [metadata] +setting_version = 4 type = quality quality_type = coarse -material = generic_pva_175_cartesio_0.8_mm weight = 3 -setting_version = 4 +material = generic_pva +variant = 0.8 mm [values] infill_line_width = 0.9 @@ -23,7 +24,7 @@ infill_sparse_density = 40 infill_pattern = grid material_print_temperature_layer_0 = =material_print_temperature + 5 -material_initial_print_temperature = =material_print_temperature +material_initial_print_temperature = =material_print_temperature_layer_0 + 5 material_final_print_temperature = =material_print_temperature retraction_min_travel = =round(line_width * 10) retraction_prime_speed = 8 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 c2b19868f6..30ade55494 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Extra Coarse definition = cartesio [metadata] +setting_version = 4 type = quality quality_type = extra coarse -material = generic_pva_175_cartesio_0.8_mm weight = 4 -setting_version = 4 +material = generic_pva +variant = 0.8 mm [values] infill_line_width = 0.9 @@ -23,7 +24,7 @@ infill_sparse_density = 40 infill_pattern = grid material_print_temperature_layer_0 = =material_print_temperature + 5 -material_initial_print_temperature = =material_print_temperature +material_initial_print_temperature = =material_print_temperature_layer_0 + 5 material_final_print_temperature = =material_print_temperature retraction_min_travel = =round(line_width * 10) retraction_prime_speed = 8 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 5bd285285a..c8ab571baf 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = High definition = cartesio [metadata] +setting_version = 4 type = quality quality_type = high -material = generic_pva_175_cartesio_0.8_mm weight = 1 -setting_version = 4 +material = generic_pva +variant = 0.8 mm [values] infill_line_width = 0.9 @@ -23,7 +24,7 @@ infill_sparse_density = 40 infill_pattern = grid material_print_temperature_layer_0 = =material_print_temperature + 5 -material_initial_print_temperature = =material_print_temperature +material_initial_print_temperature = =material_print_temperature_layer_0 + 5 material_final_print_temperature = =material_print_temperature retraction_min_travel = =round(line_width * 10) retraction_prime_speed = 8 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 a11bff95e1..815694e410 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Normal definition = cartesio [metadata] +setting_version = 4 type = quality quality_type = normal -material = generic_pva_175_cartesio_0.8_mm weight = 2 -setting_version = 4 +material = generic_pva +variant = 0.8 mm [values] infill_line_width = 0.9 @@ -23,7 +24,7 @@ infill_sparse_density = 40 infill_pattern = grid material_print_temperature_layer_0 = =material_print_temperature + 5 -material_initial_print_temperature = =material_print_temperature +material_initial_print_temperature = =material_print_temperature_layer_0 + 5 material_final_print_temperature = =material_print_temperature retraction_min_travel = =round(line_width * 10) retraction_prime_speed = 8 diff --git a/resources/quality/coarse.inst.cfg b/resources/quality/coarse.inst.cfg index 133ffc8951..9dff2a02b3 100644 --- a/resources/quality/coarse.inst.cfg +++ b/resources/quality/coarse.inst.cfg @@ -1,14 +1,14 @@ [general] -version = 2 +version = 3 name = Coarse Quality definition = fdmprinter [metadata] +setting_version = 4 type = quality quality_type = coarse -global_quality = True weight = -3 -setting_version = 4 +global_quality = True [values] layer_height = 0.4 diff --git a/resources/quality/deltacomb/deltacomb_abs_fast.inst.cfg b/resources/quality/deltacomb/deltacomb_abs_fast.inst.cfg index 43643b6b92..3863cb6940 100644 --- a/resources/quality/deltacomb/deltacomb_abs_fast.inst.cfg +++ b/resources/quality/deltacomb/deltacomb_abs_fast.inst.cfg @@ -1,14 +1,14 @@ [general] -version = 2 +version = 3 definition = deltacomb name = Fast Quality (beta) [metadata] -type = quality setting_version = 4 -material = generic_abs_175 +type = quality quality_type = fast weight = -1 +material = generic_abs [values] adhesion_type = raft @@ -22,4 +22,3 @@ cool_fan_speed_min = 50 cool_min_layer_time = 3 cool_min_speed = 20 material_bed_temperature = 80 - diff --git a/resources/quality/deltacomb/deltacomb_abs_high.inst.cfg b/resources/quality/deltacomb/deltacomb_abs_high.inst.cfg index 99e47bc9cb..715d8a6841 100644 --- a/resources/quality/deltacomb/deltacomb_abs_high.inst.cfg +++ b/resources/quality/deltacomb/deltacomb_abs_high.inst.cfg @@ -1,14 +1,14 @@ [general] -version = 2 +version = 3 definition = deltacomb name = High Quality (beta) [metadata] -type = quality setting_version = 4 -material = generic_abs_175 +type = quality quality_type = high weight = 1 +material = generic_abs [values] adhesion_type = raft @@ -22,4 +22,3 @@ cool_fan_speed_min = 50 cool_min_layer_time = 3 cool_min_speed = 20 material_bed_temperature = 80 - diff --git a/resources/quality/deltacomb/deltacomb_abs_normal.inst.cfg b/resources/quality/deltacomb/deltacomb_abs_normal.inst.cfg index a2aa2be769..7cddbb154a 100644 --- a/resources/quality/deltacomb/deltacomb_abs_normal.inst.cfg +++ b/resources/quality/deltacomb/deltacomb_abs_normal.inst.cfg @@ -1,14 +1,14 @@ [general] -version = 2 +version = 3 definition = deltacomb name = Normal Quality (beta) [metadata] -type = quality setting_version = 4 -material = generic_abs_175 +type = quality quality_type = normal weight = 0 +material = generic_abs [values] adhesion_type = raft diff --git a/resources/quality/deltacomb/deltacomb_nylon_fast.inst.cfg b/resources/quality/deltacomb/deltacomb_nylon_fast.inst.cfg index fac23939cf..72d2b30199 100644 --- a/resources/quality/deltacomb/deltacomb_nylon_fast.inst.cfg +++ b/resources/quality/deltacomb/deltacomb_nylon_fast.inst.cfg @@ -1,14 +1,14 @@ [general] -version = 2 +version = 3 name = Fast Quality (beta) definition = deltacomb [metadata] +setting_version = 4 type = quality -material = generic_nylon_175 quality_type = fast weight = -1 -setting_version = 4 +material = generic_nylon [values] adhesion_type = raft diff --git a/resources/quality/deltacomb/deltacomb_nylon_high.inst.cfg b/resources/quality/deltacomb/deltacomb_nylon_high.inst.cfg index d594126474..2cd71a96b1 100644 --- a/resources/quality/deltacomb/deltacomb_nylon_high.inst.cfg +++ b/resources/quality/deltacomb/deltacomb_nylon_high.inst.cfg @@ -1,14 +1,14 @@ [general] -version = 2 +version = 3 name = High Quality (beta) definition = deltacomb [metadata] +setting_version = 4 type = quality -material = generic_nylon_175 quality_type = high weight = 1 -setting_version = 4 +material = generic_nylon [values] adhesion_type = raft diff --git a/resources/quality/deltacomb/deltacomb_nylon_normal.inst.cfg b/resources/quality/deltacomb/deltacomb_nylon_normal.inst.cfg index 76716fc16d..d42fdee730 100644 --- a/resources/quality/deltacomb/deltacomb_nylon_normal.inst.cfg +++ b/resources/quality/deltacomb/deltacomb_nylon_normal.inst.cfg @@ -1,14 +1,14 @@ [general] -version = 2 +version = 3 name = Normal Quality (beta) definition = deltacomb [metadata] +setting_version = 4 type = quality -material = generic_nylon_175 quality_type = normal weight = 0 -setting_version = 4 +material = generic_nylon [values] adhesion_type = raft @@ -55,4 +55,3 @@ support_z_distance = 0.15 top_bottom_thickness = 0.8 wall_thickness = 0.8 z_seam_type = random - diff --git a/resources/quality/deltacomb/deltacomb_pla_fast.inst.cfg b/resources/quality/deltacomb/deltacomb_pla_fast.inst.cfg index 9783cb11cc..11fefbaed1 100644 --- a/resources/quality/deltacomb/deltacomb_pla_fast.inst.cfg +++ b/resources/quality/deltacomb/deltacomb_pla_fast.inst.cfg @@ -1,14 +1,14 @@ [general] -version = 2 +version = 3 definition = deltacomb name = Fast Quality [metadata] -type = quality setting_version = 4 -material = generic_pla_175 +type = quality quality_type = fast weight = -1 +material = generic_pla [values] adhesion_type = skirt @@ -21,4 +21,3 @@ cool_fan_speed_max = 100 cool_fan_speed_min = 100 cool_min_layer_time = 5 cool_min_speed = 20 - diff --git a/resources/quality/deltacomb/deltacomb_pla_high.inst.cfg b/resources/quality/deltacomb/deltacomb_pla_high.inst.cfg index 9513e98b6a..4b7125dbb9 100644 --- a/resources/quality/deltacomb/deltacomb_pla_high.inst.cfg +++ b/resources/quality/deltacomb/deltacomb_pla_high.inst.cfg @@ -1,14 +1,14 @@ [general] -version = 2 +version = 3 definition = deltacomb name = High Quality [metadata] -type = quality setting_version = 4 -material = generic_pla_175 +type = quality quality_type = high weight = 1 +material = generic_pla [values] adhesion_type = skirt @@ -22,4 +22,3 @@ cool_fan_speed_min = 100 cool_min_layer_time = 5 cool_min_speed = 20 material_print_temperature_layer_0 = =default_material_print_temperature + 5 - diff --git a/resources/quality/deltacomb/deltacomb_pla_normal.inst.cfg b/resources/quality/deltacomb/deltacomb_pla_normal.inst.cfg index d88f5909f0..e935c45567 100644 --- a/resources/quality/deltacomb/deltacomb_pla_normal.inst.cfg +++ b/resources/quality/deltacomb/deltacomb_pla_normal.inst.cfg @@ -1,14 +1,14 @@ [general] -version = 2 +version = 3 definition = deltacomb name = Normal Quality [metadata] -type = quality setting_version = 4 -material = generic_pla_175 +type = quality quality_type = normal weight = 0 +material = generic_pla [values] adhesion_type = skirt diff --git a/resources/quality/draft.inst.cfg b/resources/quality/draft.inst.cfg index a155c8f2e1..211525e7d6 100644 --- a/resources/quality/draft.inst.cfg +++ b/resources/quality/draft.inst.cfg @@ -1,15 +1,14 @@ - [general] -version = 2 +version = 3 name = Draft Quality definition = fdmprinter [metadata] +setting_version = 4 type = quality quality_type = draft -global_quality = True weight = -2 -setting_version = 4 +global_quality = True [values] layer_height = 0.2 diff --git a/resources/quality/extra_coarse.inst.cfg b/resources/quality/extra_coarse.inst.cfg index ce28e54721..e25b813f2f 100644 --- a/resources/quality/extra_coarse.inst.cfg +++ b/resources/quality/extra_coarse.inst.cfg @@ -1,14 +1,14 @@ [general] -version = 2 +version = 3 name = Extra Coarse Quality definition = fdmprinter [metadata] -type = quality -quality_type = Extra coarse -global_quality = True -weight = -4 setting_version = 4 +type = quality +quality_type = extra coarse +weight = -4 +global_quality = True [values] layer_height = 0.6 diff --git a/resources/quality/fabtotum/fabtotum_abs_fast.inst.cfg b/resources/quality/fabtotum/fabtotum_abs_fast.inst.cfg index 245997a27e..78a4eb6f9f 100644 --- a/resources/quality/fabtotum/fabtotum_abs_fast.inst.cfg +++ b/resources/quality/fabtotum/fabtotum_abs_fast.inst.cfg @@ -1,24 +1,24 @@ [general] -version = 2 +version = 3 definition = fabtotum name = Fast Quality [metadata] -type = quality setting_version = 4 -material = fabtotum_abs +type = quality quality_type = fast weight = -1 +material = fabtotum_abs [values] adhesion_type = raft +speed_print = 80 layer_height = 0.2 layer_height_0 = 0.2 -cool_fan_enabled = True +cool_fan_enabled = False cool_fan_full_at_height = 0.4 cool_fan_speed = 50 cool_fan_speed_max = 50 cool_fan_speed_min = 50 cool_min_layer_time = 3 cool_min_speed = 20 - diff --git a/resources/quality/fabtotum/fabtotum_abs_high.inst.cfg b/resources/quality/fabtotum/fabtotum_abs_high.inst.cfg index 26300eec7d..786ae18fa5 100644 --- a/resources/quality/fabtotum/fabtotum_abs_high.inst.cfg +++ b/resources/quality/fabtotum/fabtotum_abs_high.inst.cfg @@ -1,24 +1,24 @@ [general] -version = 2 +version = 3 definition = fabtotum name = High Quality [metadata] -type = quality setting_version = 4 -material = fabtotum_abs +type = quality quality_type = high weight = 1 +material = fabtotum_abs [values] adhesion_type = raft +speed_print = 45 layer_height = 0.1 layer_height_0 = 0.1 -cool_fan_enabled = True +cool_fan_enabled = False cool_fan_full_at_height = 0.2 cool_fan_speed = 50 cool_fan_speed_max = 50 cool_fan_speed_min = 50 cool_min_layer_time = 3 cool_min_speed = 20 - diff --git a/resources/quality/fabtotum/fabtotum_abs_normal.inst.cfg b/resources/quality/fabtotum/fabtotum_abs_normal.inst.cfg index 53d20c8cbc..da75417c87 100644 --- a/resources/quality/fabtotum/fabtotum_abs_normal.inst.cfg +++ b/resources/quality/fabtotum/fabtotum_abs_normal.inst.cfg @@ -1,24 +1,24 @@ [general] -version = 2 +version = 3 definition = fabtotum name = Normal Quality [metadata] -type = quality setting_version = 4 -material = fabtotum_abs +type = quality quality_type = normal weight = 0 +material = fabtotum_abs [values] adhesion_type = raft +speed_print = 60 layer_height = 0.15 layer_height_0 = 0.15 -cool_fan_enabled = True +cool_fan_enabled = False cool_fan_full_at_height = 0.3 cool_fan_speed = 50 cool_fan_speed_max = 50 cool_fan_speed_min = 50 cool_min_layer_time = 3 cool_min_speed = 20 - diff --git a/resources/quality/fabtotum/fabtotum_nylon_fast.inst.cfg b/resources/quality/fabtotum/fabtotum_nylon_fast.inst.cfg index 22bbcbeaeb..db86543322 100644 --- a/resources/quality/fabtotum/fabtotum_nylon_fast.inst.cfg +++ b/resources/quality/fabtotum/fabtotum_nylon_fast.inst.cfg @@ -1,14 +1,14 @@ [general] -version = 2 +version = 3 name = Fast Quality definition = fabtotum [metadata] +setting_version = 4 type = quality -material = fabtotum_nylon quality_type = fast weight = -1 -setting_version = 4 +material = fabtotum_nylon [values] adhesion_type = raft @@ -44,7 +44,7 @@ skirt_gap = 1.5 skirt_line_count = 5 speed_infill = =speed_print speed_layer_0 = 25 -speed_print = 50 +speed_print = 30 speed_topbottom = 40 speed_travel = 200 speed_wall_0 = 40 @@ -54,4 +54,4 @@ support_type = buildplate support_z_distance = 0.15 top_bottom_thickness = 0.8 wall_thickness = 0.8 -z_seam_type = random \ No newline at end of file +z_seam_type = random diff --git a/resources/quality/fabtotum/fabtotum_nylon_high.inst.cfg b/resources/quality/fabtotum/fabtotum_nylon_high.inst.cfg index a625bd715f..010298c472 100644 --- a/resources/quality/fabtotum/fabtotum_nylon_high.inst.cfg +++ b/resources/quality/fabtotum/fabtotum_nylon_high.inst.cfg @@ -1,14 +1,14 @@ [general] -version = 2 +version = 3 name = High Quality definition = fabtotum [metadata] +setting_version = 4 type = quality -material = fabtotum_nylon quality_type = high weight = 1 -setting_version = 4 +material = fabtotum_nylon [values] adhesion_type = raft @@ -44,7 +44,7 @@ skirt_gap = 1.5 skirt_line_count = 5 speed_infill = =speed_print speed_layer_0 = 25 -speed_print = 50 +speed_print = 30 speed_topbottom = 40 speed_travel = 200 speed_wall_0 = 40 @@ -54,4 +54,4 @@ support_type = buildplate support_z_distance = 0.15 top_bottom_thickness = 0.8 wall_thickness = 0.8 -z_seam_type = random \ No newline at end of file +z_seam_type = random diff --git a/resources/quality/fabtotum/fabtotum_nylon_normal.inst.cfg b/resources/quality/fabtotum/fabtotum_nylon_normal.inst.cfg index b05d30c5c6..b9a80d82b3 100644 --- a/resources/quality/fabtotum/fabtotum_nylon_normal.inst.cfg +++ b/resources/quality/fabtotum/fabtotum_nylon_normal.inst.cfg @@ -1,14 +1,14 @@ [general] -version = 2 +version = 3 name = Normal Quality definition = fabtotum [metadata] +setting_version = 4 type = quality -material = fabtotum_nylon quality_type = normal weight = 0 -setting_version = 4 +material = fabtotum_nylon [values] adhesion_type = raft @@ -44,7 +44,7 @@ skirt_gap = 1.5 skirt_line_count = 5 speed_infill = =speed_print speed_layer_0 = 25 -speed_print = 50 +speed_print = 30 speed_topbottom = 40 speed_travel = 200 speed_wall_0 = 40 @@ -55,4 +55,3 @@ support_z_distance = 0.15 top_bottom_thickness = 0.8 wall_thickness = 0.8 z_seam_type = random - diff --git a/resources/quality/fabtotum/fabtotum_pla_fast.inst.cfg b/resources/quality/fabtotum/fabtotum_pla_fast.inst.cfg index 1f1c93961b..bea0ea4aff 100644 --- a/resources/quality/fabtotum/fabtotum_pla_fast.inst.cfg +++ b/resources/quality/fabtotum/fabtotum_pla_fast.inst.cfg @@ -1,17 +1,18 @@ [general] -version = 2 +version = 3 definition = fabtotum name = Fast Quality [metadata] -type = quality setting_version = 4 -material = fabtotum_pla +type = quality quality_type = fast weight = -1 +material = fabtotum_pla [values] adhesion_type = skirt +speed_print = 80 layer_height = 0.2 layer_height_0 = 0.2 cool_fan_enabled = True @@ -21,4 +22,3 @@ cool_fan_speed_max = 100 cool_fan_speed_min = 100 cool_min_layer_time = 5 cool_min_speed = 20 - diff --git a/resources/quality/fabtotum/fabtotum_pla_high.inst.cfg b/resources/quality/fabtotum/fabtotum_pla_high.inst.cfg index 9cd067703c..b77a0d8300 100644 --- a/resources/quality/fabtotum/fabtotum_pla_high.inst.cfg +++ b/resources/quality/fabtotum/fabtotum_pla_high.inst.cfg @@ -1,17 +1,18 @@ [general] -version = 2 +version = 3 definition = fabtotum name = High Quality [metadata] -type = quality setting_version = 4 -material = fabtotum_pla +type = quality quality_type = high weight = 1 +material = fabtotum_pla [values] adhesion_type = skirt +speed_print = 45 layer_height = 0.1 layer_height_0 = 0.1 cool_fan_enabled = True @@ -21,4 +22,3 @@ cool_fan_speed_max = 100 cool_fan_speed_min = 100 cool_min_layer_time = 5 cool_min_speed = 20 - diff --git a/resources/quality/fabtotum/fabtotum_pla_normal.inst.cfg b/resources/quality/fabtotum/fabtotum_pla_normal.inst.cfg index 5b5125c4e5..11e5890cc5 100644 --- a/resources/quality/fabtotum/fabtotum_pla_normal.inst.cfg +++ b/resources/quality/fabtotum/fabtotum_pla_normal.inst.cfg @@ -1,17 +1,18 @@ [general] -version = 2 +version = 3 definition = fabtotum name = Normal Quality [metadata] -type = quality setting_version = 4 -material = fabtotum_pla +type = quality quality_type = normal weight = 0 +material = fabtotum_pla [values] adhesion_type = skirt +speed_print = 60 layer_height = 0.15 layer_height_0 = 0.15 cool_fan_enabled = True @@ -21,4 +22,3 @@ cool_fan_speed_max = 100 cool_fan_speed_min = 100 cool_min_layer_time = 5 cool_min_speed = 20 - diff --git a/resources/quality/fabtotum/fabtotum_tpu_fast.inst.cfg b/resources/quality/fabtotum/fabtotum_tpu_fast.inst.cfg new file mode 100644 index 0000000000..d689f704aa --- /dev/null +++ b/resources/quality/fabtotum/fabtotum_tpu_fast.inst.cfg @@ -0,0 +1,25 @@ +[general] +version = 3 +definition = fabtotum +name = Fast Quality + +[metadata] +type = quality +setting_version = 4 +material = fabtotum_tpu +quality_type = fast +weight = -1 + +[values] +adhesion_type = skirt +speed_print = 80 +layer_height = 0.2 +layer_height_0 = 0.2 +cool_fan_enabled = True +cool_fan_full_at_height = 0.4 +cool_fan_speed = 100 +cool_fan_speed_max = 100 +cool_fan_speed_min = 100 +cool_min_layer_time = 5 +cool_min_speed = 20 + diff --git a/resources/quality/fabtotum/fabtotum_tpu_high.inst.cfg b/resources/quality/fabtotum/fabtotum_tpu_high.inst.cfg new file mode 100644 index 0000000000..6193b3b573 --- /dev/null +++ b/resources/quality/fabtotum/fabtotum_tpu_high.inst.cfg @@ -0,0 +1,24 @@ +[general] +version = 3 +definition = fabtotum +name = High Quality + +[metadata] +type = quality +setting_version = 4 +material = fabtotum_tpu +quality_type = high +weight = 1 + +[values] +adhesion_type = skirt +layer_height = 0.1 +layer_height_0 = 0.1 +cool_fan_enabled = True +cool_fan_full_at_height = 0.2 +cool_fan_speed = 100 +cool_fan_speed_max = 100 +cool_fan_speed_min = 100 +cool_min_layer_time = 5 +cool_min_speed = 20 + diff --git a/resources/quality/fabtotum/fabtotum_tpu_normal.inst.cfg b/resources/quality/fabtotum/fabtotum_tpu_normal.inst.cfg new file mode 100644 index 0000000000..7ccbe296e3 --- /dev/null +++ b/resources/quality/fabtotum/fabtotum_tpu_normal.inst.cfg @@ -0,0 +1,25 @@ +[general] +version = 3 +definition = fabtotum +name = Normal Quality + +[metadata] +type = quality +setting_version = 4 +material = fabtotum_TPU +quality_type = normal +weight = 0 + +[values] +adhesion_type = skirt +speed_print = 80 +layer_height = 0.15 +layer_height_0 = 0.15 +cool_fan_enabled = True +cool_fan_full_at_height = 0.3 +cool_fan_speed = 100 +cool_fan_speed_max = 100 +cool_fan_speed_min = 100 +cool_min_layer_time = 5 +cool_min_speed = 20 + diff --git a/resources/quality/low.inst.cfg b/resources/quality/fast.inst.cfg similarity index 90% rename from resources/quality/low.inst.cfg rename to resources/quality/fast.inst.cfg index e92490722d..56bc6be48d 100644 --- a/resources/quality/low.inst.cfg +++ b/resources/quality/fast.inst.cfg @@ -1,14 +1,14 @@ [general] -version = 2 +version = 3 name = Low Quality definition = fdmprinter [metadata] -type = quality -quality_type = low -global_quality = True -weight = -1 setting_version = 4 +type = quality +quality_type = fast +weight = -1 +global_quality = True [values] infill_sparse_density = 10 diff --git a/resources/quality/gmax15plus/gmax15plus_pla_dual_normal.inst.cfg b/resources/quality/gmax15plus/gmax15plus_pla_dual_normal.inst.cfg new file mode 100644 index 0000000000..ae31f92447 --- /dev/null +++ b/resources/quality/gmax15plus/gmax15plus_pla_dual_normal.inst.cfg @@ -0,0 +1,71 @@ +[general] +version = 3 +name = gMax 1.5+ Dual Normal Layers +definition = gmax15plus_dual + +[metadata] +setting_version = 4 +type = quality +quality_type = normal +weight = -1 + +[values] +layer_height = 0.2 +layer_height_0 = 0.28 + +infill_before_walls = False +infill_overlap = 20 +infill_pattern = grid + +speed_slowdown_layers = 1 +acceleration_enabled = True +acceleration_print = 400 +acceleration_travel = 700 + +coasting_enable = False +coasting_volume = 0.0625 + +retraction_combing = off +retraction_amount = 0.75 +retraction_speed = 70 +material_flow = 98 +material_diameter = 1.75 + +support_use_towers = False +support_z_distance = 0.2 +support_xy_distance = 1.5 +support_join_distance = 10 +support_interface_enable = True +support_interface_pattern = lines + +adhesion_type = skirt +skirt_gap = 2 + +cool_fan_speed = 70 +cool_fan_speed_max = 85 +skin_overlap = 10 +speed_print = 50 +speed_infill = =math.ceil(speed_print * 0.85) +speed_layer_0 = =math.ceil(speed_print * 0.45) +speed_topbottom = =math.ceil(speed_print * 0.75) +speed_wall = =math.ceil(speed_print * 0.5) +speed_wall_x = =math.ceil(speed_print * 0.7) + +top_bottom_pattern = lines +top_layers = 4 +top_thickness = 1 +bottom_layers = 2 +wall_line_count = 2 +z_seam_corner = z_seam_corner_none + +ooze_shield_angle = 20 +ooze_shield_dist = 4 +ooze_shield_enabled = True +prime_tower_enable = False +prime_tower_position_x = 350 +prime_tower_position_y = 350 +prime_tower_wall_thickness = 2 +switch_extruder_retraction_amount = 6 +switch_extruder_retraction_speeds = 60 + +material_standby_temperature = =material_print_temperature - 10 diff --git a/resources/quality/gmax15plus/gmax15plus_pla_dual_thick.inst.cfg b/resources/quality/gmax15plus/gmax15plus_pla_dual_thick.inst.cfg new file mode 100644 index 0000000000..4e262d8ecf --- /dev/null +++ b/resources/quality/gmax15plus/gmax15plus_pla_dual_thick.inst.cfg @@ -0,0 +1,71 @@ +[general] +version = 3 +name = gMax 1.5+ Dual Thick Layers +definition = gmax15plus_dual + +[metadata] +setting_version = 4 +type = quality +quality_type = course +weight = -2 + +[values] +layer_height = 0.28 +layer_height_0 = 0.32 + +infill_before_walls = False +infill_overlap = 20 +infill_pattern = grid + +speed_slowdown_layers = 1 +acceleration_enabled = True +acceleration_print = 400 +acceleration_travel = 700 + +coasting_enable = False +coasting_volume = 0.0625 + +retraction_combing = off +retraction_amount = 0.75 +retraction_speed = 70 +material_flow = 98 +material_diameter = 1.75 + +support_use_towers = False +support_z_distance = 0.2 +support_xy_distance = 1.5 +support_join_distance = 10 +support_interface_enable = True +support_interface_pattern = lines + +adhesion_type = skirt +skirt_gap = 2 + +cool_fan_speed = 70 +cool_fan_speed_max = 85 +skin_overlap = 10 +speed_print = 40 +speed_infill = =math.ceil(speed_print * 0.85) +speed_layer_0 = =math.ceil(speed_print * 0.5) +speed_topbottom = =math.ceil(speed_print * 0.75) +speed_wall = =math.ceil(speed_print * 0.5) +speed_wall_x = =math.ceil(speed_print * 0.7) + +top_bottom_pattern = lines +top_layers = 3 +top_thickness = 1 +bottom_layers = 2 +wall_line_count = 2 +z_seam_corner = z_seam_corner_none + +ooze_shield_angle = 20 +ooze_shield_dist = 4 +ooze_shield_enabled = True +prime_tower_enable = False +prime_tower_position_x = 350 +prime_tower_position_y = 350 +prime_tower_wall_thickness = 2 +switch_extruder_retraction_amount = 6 +switch_extruder_retraction_speeds = 60 + +material_standby_temperature = =material_print_temperature - 10 diff --git a/resources/quality/gmax15plus/gmax15plus_pla_dual_thin.inst.cfg b/resources/quality/gmax15plus/gmax15plus_pla_dual_thin.inst.cfg new file mode 100644 index 0000000000..a1b43d5d08 --- /dev/null +++ b/resources/quality/gmax15plus/gmax15plus_pla_dual_thin.inst.cfg @@ -0,0 +1,71 @@ +[general] +version = 3 +name = gMax 1.5+ Dual Thin Layers +definition = gmax15plus_dual + +[metadata] +setting_version = 4 +type = quality +quality_type = high +weight = 0 + +[values] +layer_height = 0.16 +layer_height_0 = 0.2 + +infill_before_walls = False +infill_overlap = 20 +infill_pattern = grid + +speed_slowdown_layers = 1 +acceleration_enabled = True +acceleration_print = 400 +acceleration_travel = 700 + +coasting_enable = False +coasting_volume = 0.0625 + +retraction_combing = off +retraction_amount = 0.75 +retraction_speed = 70 +material_flow = 98 +material_diameter = 1.75 + +support_use_towers = False +support_z_distance = 0.2 +support_xy_distance = 1.5 +support_join_distance = 10 +support_interface_enable = True +support_interface_pattern = lines + +adhesion_type = skirt +skirt_gap = 2 + +cool_fan_speed = 70 +cool_fan_speed_max = 85 +skin_overlap = 10 +speed_print = 40 +speed_infill = =math.ceil(speed_print * 0.85) +speed_layer_0 = =math.ceil(speed_print * 0.4) +speed_topbottom = =math.ceil(speed_print * 0.75) +speed_wall = =math.ceil(speed_print * 0.5) +speed_wall_x = =math.ceil(speed_print * 0.7) + +top_bottom_pattern = lines +top_layers = 4 +top_thickness = 1 +bottom_layers = 2 +wall_line_count = 2 +z_seam_corner = z_seam_corner_none + +ooze_shield_angle = 20 +ooze_shield_dist = 4 +ooze_shield_enabled = True +prime_tower_enable = False +prime_tower_position_x = 350 +prime_tower_position_y = 350 +prime_tower_wall_thickness = 2 +switch_extruder_retraction_amount = 6 +switch_extruder_retraction_speeds = 60 + +material_standby_temperature = =material_print_temperature - 10 diff --git a/resources/quality/gmax15plus/gmax15plus_pla_dual_very_thick.inst.cfg b/resources/quality/gmax15plus/gmax15plus_pla_dual_very_thick.inst.cfg new file mode 100644 index 0000000000..1d5c7eca91 --- /dev/null +++ b/resources/quality/gmax15plus/gmax15plus_pla_dual_very_thick.inst.cfg @@ -0,0 +1,70 @@ +[general] +version = 3 +name = gMax 1.5+ Dual Very Thick Layers +definition = gmax15plus_dual + +[metadata] +setting_version = 4 +type = quality +quality_type = extra_course +weight = -3 + +[values] +layer_height = 0.32 + +infill_before_walls = False +infill_overlap = 20 +infill_pattern = grid + +speed_slowdown_layers = 1 +acceleration_enabled = True +acceleration_print = 400 +acceleration_travel = 700 + +coasting_enable = False +coasting_volume = 0.0625 + +retraction_combing = off +retraction_amount = 0.75 +retraction_speed = 70 +material_flow = 98 +material_diameter = 1.75 + +support_use_towers = False +support_z_distance = 0.2 +support_xy_distance = 1.5 +support_join_distance = 10 +support_interface_enable = True +support_interface_pattern = lines + +adhesion_type = skirt +skirt_gap = 2 + +cool_fan_speed = 70 +cool_fan_speed_max = 85 +skin_overlap = 10 +speed_print = 40 +speed_infill = =math.ceil(speed_print * 0.85) +speed_layer_0 = =math.ceil(speed_print * 0.45) +speed_topbottom = =math.ceil(speed_print * 0.75) +speed_wall = =math.ceil(speed_print * 0.5) +speed_wall_x = =math.ceil(speed_print * 0.7) + +top_bottom_pattern = lines +top_layers = 3 +top_thickness = 1 +bottom_layers = 2 +wall_line_count = 2 +z_seam_corner = z_seam_corner_none + +ooze_shield_angle = 20 +ooze_shield_dist = 4 +ooze_shield_enabled = True +prime_tower_enable = False +prime_tower_position_x = 350 +prime_tower_position_y = 350 +prime_tower_wall_thickness = 2 +switch_extruder_retraction_amount = 6 +switch_extruder_retraction_speeds = 60 + +material_standby_temperature = =material_print_temperature - 10 diff --git a/resources/quality/gmax15plus/gmax15plus_pla_normal.inst.cfg b/resources/quality/gmax15plus/gmax15plus_pla_normal.inst.cfg new file mode 100644 index 0000000000..1d01b82d3c --- /dev/null +++ b/resources/quality/gmax15plus/gmax15plus_pla_normal.inst.cfg @@ -0,0 +1,59 @@ +[general] +version = 3 +name = gMax 1.5+ Normal Layers +definition = gmax15plus + +[metadata] +setting_version = 4 +type = quality +quality_type = normal +weight = -1 + +[values] +layer_height = 0.2 +layer_height_0 = 0.28 + +infill_before_walls = False +infill_overlap = 20 +infill_pattern = grid + +speed_slowdown_layers = 1 +acceleration_enabled = True +acceleration_print = 400 +acceleration_travel = 700 + +coasting_enable = False +coasting_volume = 0.0625 + +retraction_combing = off +retraction_amount = 0.75 +retraction_speed = 70 +material_flow = 98 +material_diameter = 1.75 + +support_use_towers = False +support_z_distance = 0.2 +support_xy_distance = 1.5 +support_join_distance = 10 +support_interface_enable = True +support_interface_pattern = lines + +adhesion_type = skirt +skirt_gap = 2 + +cool_fan_speed = 70 +cool_fan_speed_max = 85 +skin_overlap = 10 +speed_print = 50 +speed_infill = =math.ceil(speed_print * 0.85) +speed_layer_0 = =math.ceil(speed_print * 0.6) +speed_topbottom = =math.ceil(speed_print * 0.75) +speed_wall = =math.ceil(speed_print * 0.5) +speed_wall_x = =math.ceil(speed_wall * 0.7) + +top_bottom_pattern = lines +top_layers = 4 +top_thickness = 1 +bottom_layers = 2 +wall_line_count = 2 +z_seam_corner = z_seam_corner_none diff --git a/resources/quality/gmax15plus/gmax15plus_pla_thick.inst.cfg b/resources/quality/gmax15plus/gmax15plus_pla_thick.inst.cfg new file mode 100644 index 0000000000..dd6b3e702b --- /dev/null +++ b/resources/quality/gmax15plus/gmax15plus_pla_thick.inst.cfg @@ -0,0 +1,59 @@ +[general] +version = 3 +name = gMax 1.5+ Thick Layers +definition = gmax15plus + +[metadata] +setting_version = 4 +type = quality +quality_type = course +weight = -2 + +[values] +layer_height = 0.28 +layer_height_0 = 0.32 + +infill_before_walls = False +infill_overlap = 20 +infill_pattern = grid + +speed_slowdown_layers = 1 +acceleration_enabled = True +acceleration_print = 400 +acceleration_travel = 700 + +coasting_enable = False +coasting_volume = 0.0625 + +retraction_combing = off +retraction_amount = 0.75 +retraction_speed = 70 +material_flow = 98 +material_diameter = 1.75 + +support_use_towers = False +support_z_distance = 0.2 +support_xy_distance = 1.5 +support_join_distance = 10 +support_interface_enable = True +support_interface_pattern = lines + +adhesion_type = skirt +skirt_gap = 2 + +cool_fan_speed = 70 +cool_fan_speed_max = 85 +skin_overlap = 10 +speed_print = 50 +speed_infill = =math.ceil(speed_print * 0.85) +speed_layer_0 = =math.ceil(speed_print * 0.6) +speed_topbottom = =math.ceil(speed_print * 0.75) +speed_wall = =math.ceil(speed_print * 0.5) +speed_wall_x = =math.ceil(speed_wall * 0.7) + +top_bottom_pattern = lines +top_layers = 3 +top_thickness = 1 +bottom_layers = 2 +wall_line_count = 2 +z_seam_corner = z_seam_corner_none diff --git a/resources/quality/gmax15plus/gmax15plus_pla_thin.inst.cfg b/resources/quality/gmax15plus/gmax15plus_pla_thin.inst.cfg new file mode 100644 index 0000000000..f90cb27647 --- /dev/null +++ b/resources/quality/gmax15plus/gmax15plus_pla_thin.inst.cfg @@ -0,0 +1,59 @@ +[general] +version = 3 +name = gMax 1.5+ Thin Layers +definition = gmax15plus + +[metadata] +setting_version = 4 +type = quality +quality_type = high +weight = 0 + +[values] +layer_height = 0.16 +layer_height_0 = 0.2 + +infill_before_walls = False +infill_overlap = 20 +infill_pattern = grid + +speed_slowdown_layers = 1 +acceleration_enabled = True +acceleration_print = 400 +acceleration_travel = 700 + +coasting_enable = False +coasting_volume = 0.0625 + +retraction_combing = off +retraction_amount = 0.75 +retraction_speed = 70 +material_flow = 98 +material_diameter = 1.75 + +support_use_towers = False +support_z_distance = 0.2 +support_xy_distance = 1.5 +support_join_distance = 10 +support_interface_enable = True +support_interface_pattern = lines + +adhesion_type = skirt +skirt_gap = 2 + +cool_fan_speed = 70 +cool_fan_speed_max = 85 +skin_overlap = 10 +speed_print = 55 +speed_infill = =math.ceil(speed_print * 0.85) +speed_layer_0 = =math.ceil(speed_print * 0.6) +speed_topbottom = =math.ceil(speed_print * 0.75) +speed_wall = =math.ceil(speed_print * 0.5) +speed_wall_x = =math.ceil(speed_wall * 0.7) + +top_bottom_pattern = lines +top_layers = 5 +top_thickness = 1 +bottom_layers = 3 +wall_line_count = 2 +z_seam_corner = z_seam_corner_none diff --git a/resources/quality/gmax15plus/gmax15plus_pla_very_thick.inst.cfg b/resources/quality/gmax15plus/gmax15plus_pla_very_thick.inst.cfg new file mode 100644 index 0000000000..171cf2f28d --- /dev/null +++ b/resources/quality/gmax15plus/gmax15plus_pla_very_thick.inst.cfg @@ -0,0 +1,58 @@ +[general] +version = 3 +name = gMax 1.5+ Very Thick Layers +definition = gmax15plus + +[metadata] +setting_version = 4 +type = quality +quality_type = extra_course +weight = -3 + +[values] +layer_height = 0.32 + +infill_before_walls = False +infill_overlap = 20 +infill_pattern = grid + +speed_slowdown_layers = 1 +acceleration_enabled = True +acceleration_print = 400 +acceleration_travel = 700 + +coasting_enable = False +coasting_volume = 0.0625 + +retraction_combing = off +retraction_amount = 0.75 +retraction_speed = 70 +material_flow = 98 +material_diameter = 1.75 + +support_use_towers = False +support_z_distance = 0.2 +support_xy_distance = 1.5 +support_join_distance = 10 +support_interface_enable = True +support_interface_pattern = lines + +adhesion_type = skirt +skirt_gap = 2 + +cool_fan_speed = 70 +cool_fan_speed_max = 85 +skin_overlap = 10 +speed_print = 45 +speed_infill = =math.ceil(speed_print * 0.85) +speed_layer_0 = =math.ceil(speed_print * 0.6) +speed_topbottom = =math.ceil(speed_print * 0.75) +speed_wall = =math.ceil(speed_print * 0.6) +speed_wall_x = =math.ceil(speed_wall * 0.7) + +top_bottom_pattern = lines +top_layers = 3 +top_thickness = 1 +bottom_layers = 2 +wall_line_count = 2 +z_seam_corner = z_seam_corner_none diff --git a/resources/quality/high.inst.cfg b/resources/quality/high.inst.cfg index d4333c90da..bb9e77ad38 100644 --- a/resources/quality/high.inst.cfg +++ b/resources/quality/high.inst.cfg @@ -1,14 +1,14 @@ [general] -version = 2 +version = 3 name = Extra Fine definition = fdmprinter [metadata] +setting_version = 4 type = quality quality_type = high -global_quality = True weight = 1 -setting_version = 4 +global_quality = True [values] layer_height = 0.06 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 index e36286c6ae..020e9d9b0f 100644 --- a/resources/quality/imade3d_jellybox/generic_petg_0.4_coarse.inst.cfg +++ b/resources/quality/imade3d_jellybox/generic_petg_0.4_coarse.inst.cfg @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Coarse definition = imade3d_jellybox [metadata] -type = quality -material = generic_petg_imade3d_jellybox_0.4_mm -weight = -1 -quality_type = fast setting_version = 4 +type = quality +quality_type = fast +weight = -1 +material = generic_petg +variant = 0.4 mm [values] adhesion_type = skirt @@ -26,8 +27,6 @@ infill_line_width = 0.6 infill_overlap = 15 infill_pattern = zigzag infill_sparse_density = 20 -layer_height = 0.3 -layer_height_0 = 0.3 line_width = 0.4 material_bed_temperature = 50 material_bed_temperature_layer_0 = 55 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 index 3240bad98b..3aba34126e 100644 --- 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Coarse definition = imade3d_jellybox [metadata] -type = quality -material = generic_petg_imade3d_jellybox_0.4_mm_2-fans -weight = -1 -quality_type = fast setting_version = 4 +type = quality +quality_type = fast +weight = -1 +material = generic_petg +variant = 0.4 mm 2-fans [values] adhesion_type = skirt @@ -26,8 +27,6 @@ infill_line_width = 0.6 infill_overlap = 15 infill_pattern = zigzag infill_sparse_density = 20 -layer_height = 0.3 -layer_height_0 = 0.3 line_width = 0.4 material_bed_temperature = 50 material_bed_temperature_layer_0 = 55 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 index 2790a5a742..b235662e9f 100644 --- a/resources/quality/imade3d_jellybox/generic_petg_0.4_medium.inst.cfg +++ b/resources/quality/imade3d_jellybox/generic_petg_0.4_medium.inst.cfg @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Medium definition = imade3d_jellybox [metadata] -type = quality -material = generic_petg_imade3d_jellybox_0.4_mm -weight = 0 -quality_type = normal setting_version = 4 +type = quality +quality_type = normal +weight = 0 +material = generic_petg +variant = 0.4 mm [values] adhesion_type = skirt @@ -26,8 +27,6 @@ infill_line_width = 0.6 infill_overlap = 15 infill_pattern = zigzag infill_sparse_density = 20 -layer_height = 0.2 -layer_height_0 = 0.3 line_width = 0.4 material_bed_temperature = 50 material_bed_temperature_layer_0 = 55 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 index 14f141f0bf..d5a9b09ed7 100644 --- 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Medium definition = imade3d_jellybox [metadata] -type = quality -material = generic_petg_imade3d_jellybox_0.4_mm_2-fans -weight = 0 -quality_type = normal setting_version = 4 +type = quality +quality_type = normal +weight = 0 +material = generic_petg +variant = 0.4 mm 2-fans [values] adhesion_type = skirt @@ -26,8 +27,6 @@ infill_line_width = 0.6 infill_overlap = 15 infill_pattern = zigzag infill_sparse_density = 20 -layer_height = 0.2 -layer_height_0 = 0.3 line_width = 0.4 material_bed_temperature = 50 material_bed_temperature_layer_0 = 55 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 index 842ec618e0..797f77fa72 100644 --- a/resources/quality/imade3d_jellybox/generic_pla_0.4_coarse.inst.cfg +++ b/resources/quality/imade3d_jellybox/generic_pla_0.4_coarse.inst.cfg @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Coarse definition = imade3d_jellybox [metadata] -type = quality -material = generic_pla_imade3d_jellybox_0.4_mm -weight = -1 -quality_type = fast setting_version = 4 +type = quality +quality_type = fast +weight = -1 +material = generic_pla +variant = 0.4 mm [values] adhesion_type = skirt @@ -26,8 +27,6 @@ infill_line_width = 0.6 infill_overlap = 15 infill_pattern = zigzag infill_sparse_density = 20 -layer_height = 0.3 -layer_height_0 = 0.3 line_width = 0.4 material_flow = 90 meshfix_union_all = False 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 index 17e085d84d..61bb573a25 100644 --- 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Coarse definition = imade3d_jellybox [metadata] -type = quality -material = generic_pla_imade3d_jellybox_0.4_mm_2-fans -weight = -1 -quality_type = fast setting_version = 4 +type = quality +quality_type = fast +weight = -1 +material = generic_pla +variant = 0.4 mm 2-fans [values] adhesion_type = skirt @@ -26,8 +27,6 @@ infill_line_width = 0.6 infill_overlap = 15 infill_pattern = zigzag infill_sparse_density = 20 -layer_height = 0.3 -layer_height_0 = 0.3 line_width = 0.4 material_flow = 90 meshfix_union_all = False 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 index a4b44f47f6..3c37910112 100644 --- a/resources/quality/imade3d_jellybox/generic_pla_0.4_fine.inst.cfg +++ b/resources/quality/imade3d_jellybox/generic_pla_0.4_fine.inst.cfg @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Fine definition = imade3d_jellybox [metadata] -type = quality -material = generic_pla_imade3d_jellybox_0.4_mm -weight = 1 -quality_type = high setting_version = 4 +type = quality +quality_type = high +weight = 1 +material = generic_pla +variant = 0.4 mm [values] adhesion_type = skirt @@ -26,8 +27,6 @@ infill_line_width = 0.6 infill_overlap = 15 infill_pattern = zigzag infill_sparse_density = 20 -layer_height = 0.1 -layer_height_0 = 0.3 line_width = 0.4 material_flow = 90 material_print_temperature = 205 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 index 962b3c9ad4..eb31b07794 100644 --- 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Fine definition = imade3d_jellybox [metadata] -type = quality -material = generic_pla_imade3d_jellybox_0.4_mm_2-fans -weight = 1 -quality_type = high setting_version = 4 +type = quality +quality_type = high +weight = 1 +material = generic_pla +variant = 0.4 mm 2-fans [values] adhesion_type = skirt @@ -26,8 +27,6 @@ infill_line_width = 0.6 infill_overlap = 15 infill_pattern = zigzag infill_sparse_density = 20 -layer_height = 0.1 -layer_height_0 = 0.3 line_width = 0.4 material_flow = 90 material_print_temperature = 205 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 index 952b16ecf8..b8bbd674e0 100644 --- a/resources/quality/imade3d_jellybox/generic_pla_0.4_medium.inst.cfg +++ b/resources/quality/imade3d_jellybox/generic_pla_0.4_medium.inst.cfg @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Medium definition = imade3d_jellybox [metadata] -type = quality -material = generic_pla_imade3d_jellybox_0.4_mm -weight = 0 -quality_type = normal setting_version = 4 +type = quality +quality_type = normal +weight = 0 +material = generic_pla +variant = 0.4 mm [values] adhesion_type = skirt @@ -26,8 +27,6 @@ infill_line_width = 0.6 infill_overlap = 15 infill_pattern = zigzag infill_sparse_density = 20 -layer_height = 0.2 -layer_height_0 = 0.3 line_width = 0.4 material_flow = 90 meshfix_union_all = False 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 index bd70d105a4..56ae48379f 100644 --- 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Medium definition = imade3d_jellybox [metadata] -type = quality -material = generic_pla_imade3d_jellybox_0.4_mm_2-fans -weight = 0 -quality_type = normal setting_version = 4 +type = quality +quality_type = normal +weight = 0 +material = generic_pla +variant = 0.4 mm 2-fans [values] adhesion_type = skirt @@ -26,8 +27,6 @@ infill_line_width = 0.6 infill_overlap = 15 infill_pattern = zigzag infill_sparse_density = 20 -layer_height = 0.2 -layer_height_0 = 0.3 line_width = 0.4 material_flow = 90 meshfix_union_all = False 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 index a9d0679612..16fb70252b 100644 --- a/resources/quality/imade3d_jellybox/generic_pla_0.4_ultrafine.inst.cfg +++ b/resources/quality/imade3d_jellybox/generic_pla_0.4_ultrafine.inst.cfg @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = UltraFine definition = imade3d_jellybox [metadata] -type = quality -material = generic_pla_imade3d_jellybox_0.4_mm -weight = 2 -quality_type = ultrahigh setting_version = 4 +type = quality +quality_type = ultrahigh +weight = 2 +material = generic_pla +variant = 0.4 mm [values] adhesion_type = skirt @@ -26,8 +27,6 @@ infill_line_width = 0.6 infill_overlap = 15 infill_pattern = zigzag infill_sparse_density = 20 -layer_height = 0.05 -layer_height_0 = 0.3 line_width = 0.4 material_flow = 90 material_print_temperature = 202 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 index 097e1fc76a..2cab1fad46 100644 --- 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = UltraFine definition = imade3d_jellybox [metadata] -type = quality -material = generic_pla_imade3d_jellybox_0.4_mm_2-fans -weight = 2 -quality_type = ultrahigh setting_version = 4 +type = quality +quality_type = ultrahigh +weight = 2 +material = generic_pla +variant = 0.4 mm 2-fans [values] adhesion_type = skirt @@ -26,8 +27,6 @@ infill_line_width = 0.6 infill_overlap = 15 infill_pattern = zigzag infill_sparse_density = 20 -layer_height = 0.05 -layer_height_0 = 0.3 line_width = 0.4 material_flow = 90 material_print_temperature = 202 diff --git a/resources/quality/imade3d_jellybox/imade3d_jellybox_coarse.inst.cfg b/resources/quality/imade3d_jellybox/imade3d_jellybox_coarse.inst.cfg new file mode 100644 index 0000000000..7a778a788f --- /dev/null +++ b/resources/quality/imade3d_jellybox/imade3d_jellybox_coarse.inst.cfg @@ -0,0 +1,16 @@ +[general] +version = 3 +name = Coarse +definition = imade3d_jellybox + +[metadata] +setting_version = 4 +type = quality +quality_type = fast +weight = -1 +global_quality = True + +[values] +adhesion_type = skirt +layer_height = 0.3 +layer_height_0 = 0.3 diff --git a/resources/quality/imade3d_jellybox/imade3d_jellybox_fine.inst.cfg b/resources/quality/imade3d_jellybox/imade3d_jellybox_fine.inst.cfg new file mode 100644 index 0000000000..51767e0c93 --- /dev/null +++ b/resources/quality/imade3d_jellybox/imade3d_jellybox_fine.inst.cfg @@ -0,0 +1,16 @@ +[general] +version = 3 +name = Fine +definition = imade3d_jellybox + +[metadata] +setting_version = 4 +type = quality +quality_type = high +weight = 1 +global_quality = True + +[values] +adhesion_type = skirt +layer_height = 0.1 +layer_height_0 = 0.3 diff --git a/resources/quality/imade3d_jellybox/imade3d_jellybox_normal.inst.cfg b/resources/quality/imade3d_jellybox/imade3d_jellybox_normal.inst.cfg new file mode 100644 index 0000000000..407ae608a4 --- /dev/null +++ b/resources/quality/imade3d_jellybox/imade3d_jellybox_normal.inst.cfg @@ -0,0 +1,16 @@ +[general] +version = 3 +name = Medium +definition = imade3d_jellybox + +[metadata] +setting_version = 4 +type = quality +quality_type = normal +weight = 0 +global_quality = True + +[values] +adhesion_type = skirt +layer_height = 0.2 +layer_height_0 = 0.3 diff --git a/resources/quality/imade3d_jellybox/imade3d_jellybox_ultrafine.inst.cfg b/resources/quality/imade3d_jellybox/imade3d_jellybox_ultrafine.inst.cfg new file mode 100644 index 0000000000..f531d84234 --- /dev/null +++ b/resources/quality/imade3d_jellybox/imade3d_jellybox_ultrafine.inst.cfg @@ -0,0 +1,16 @@ +[general] +version = 3 +name = UltraFine +definition = imade3d_jellybox + +[metadata] +setting_version = 4 +type = quality +quality_type = ultrahigh +weight = 2 +global_quality = True + +[values] +adhesion_type = skirt +layer_height = 0.05 +layer_height_0 = 0.3 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 5401ec7bd6..69c2b328cf 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 @@ -1,14 +1,14 @@ [general] -version = 2 +version = 3 name = Draft definition = kemiq_q2_beta [metadata] +setting_version = 4 type = quality +quality_type = coarse weight = -3 material = generic_abs -quality_type = coarse -setting_version = 4 [values] layer_height = 0.35 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 aea8fc9535..0bb72ce073 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 @@ -1,14 +1,14 @@ [general] -version = 2 +version = 3 name = Extra Fine definition = kemiq_q2_beta [metadata] +setting_version = 4 type = quality +quality_type = high weight = 1 material = generic_abs -quality_type = high -setting_version = 4 [values] layer_height = 0.06 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 24adbd9f6c..1fd5874b70 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 @@ -1,14 +1,14 @@ [general] -version = 2 +version = 3 name = Fine definition = kemiq_q2_beta [metadata] +setting_version = 4 type = quality +quality_type = normal weight = 0 material = generic_abs -quality_type = normal -setting_version = 4 [values] layer_height = 0.1 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 98d2475633..78f80c576d 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 @@ -1,14 +1,14 @@ [general] -version = 2 +version = 3 name = Low definition = kemiq_q2_beta [metadata] +setting_version = 4 type = quality +quality_type = draft weight = -2 material = generic_abs -quality_type = draft -setting_version = 4 [values] layer_height = 0.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 ab2e9dabbc..626de7bde6 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 @@ -1,14 +1,14 @@ [general] -version = 2 +version = 3 name = Normal definition = kemiq_q2_beta [metadata] +setting_version = 4 type = quality +quality_type = fast weight = -1 material = generic_abs -quality_type = low -setting_version = 4 [values] layer_height = 0.15 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 f868ab40fc..63a49e6bc1 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 @@ -1,14 +1,14 @@ [general] -version = 2 +version = 3 name = Draft definition = kemiq_q2_beta [metadata] +setting_version = 4 type = quality +quality_type = coarse weight = -3 material = generic_pla -quality_type = coarse -setting_version = 4 [values] layer_height = 0.35 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 e907f7ccaf..2d49b01b92 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 @@ -1,14 +1,14 @@ [general] -version = 2 +version = 3 name = Extra Fine definition = kemiq_q2_beta [metadata] -type = quality -material = generic_pla -weight = 1 -quality_type = high setting_version = 4 +type = quality +quality_type = high +weight = 1 +material = generic_pla [values] layer_height = 0.06 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 841023d532..e79a3188d7 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 @@ -1,14 +1,14 @@ [general] -version = 2 +version = 3 name = Fine definition = kemiq_q2_beta [metadata] +setting_version = 4 type = quality +quality_type = normal weight = 0 material = generic_pla -quality_type = normal -setting_version = 4 [values] layer_height = 0.1 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 ca874c6bce..db391b95ca 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 @@ -1,14 +1,14 @@ [general] -version = 2 +version = 3 name = Low definition = kemiq_q2_beta [metadata] +setting_version = 4 type = quality +quality_type = draft weight = -2 material = generic_pla -quality_type = draft -setting_version = 4 [values] layer_height = 0.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 fcfbe72b24..336b1f47b9 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 @@ -1,14 +1,14 @@ [general] -version = 2 +version = 3 name = Normal definition = kemiq_q2_beta [metadata] +setting_version = 4 type = quality +quality_type = fast weight = -1 material = generic_pla -quality_type = low -setting_version = 4 [values] layer_height = 0.15 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 009af9b87b..6044fa25a4 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 @@ -1,14 +1,14 @@ [general] -version = 2 +version = 3 name = Draft definition = kemiq_q2_gama [metadata] +setting_version = 4 type = quality +quality_type = coarse weight = -3 material = generic_pla -quality_type = coarse -setting_version = 4 [values] layer_height = 0.35 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 447e3b012d..9962c554ca 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 @@ -1,14 +1,14 @@ [general] -version = 2 +version = 3 name = Extra Fine definition = kemiq_q2_gama [metadata] -type = quality -material = generic_pla -weight = 1 -quality_type = high setting_version = 4 +type = quality +quality_type = high +weight = 1 +material = generic_pla [values] layer_height = 0.06 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 80b2375108..4b5b3b62ed 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 @@ -1,14 +1,14 @@ [general] -version = 2 +version = 3 name = Fine definition = kemiq_q2_gama [metadata] +setting_version = 4 type = quality +quality_type = normal weight = 0 material = generic_pla -quality_type = normal -setting_version = 4 [values] layer_height = 0.1 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 e30c52f4e6..a187507632 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 @@ -1,14 +1,14 @@ [general] -version = 2 +version = 3 name = Low definition = kemiq_q2_gama [metadata] +setting_version = 4 type = quality +quality_type = draft weight = -2 material = generic_pla -quality_type = draft -setting_version = 4 [values] layer_height = 0.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 31bdaa51bc..281f73393a 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 @@ -1,14 +1,14 @@ [general] -version = 2 +version = 3 name = Normal definition = kemiq_q2_gama [metadata] +setting_version = 4 type = quality +quality_type = fast weight = -1 material = generic_pla -quality_type = low -setting_version = 4 [values] layer_height = 0.15 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 19cc9fd00d..104b747aea 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 @@ -1,15 +1,15 @@ [general] -version = 2 +version = 3 name = Fast definition = malyan_m200 [metadata] +setting_version = 4 type = quality quality_type = draft -material = generic_abs_175 weight = -2 -setting_version = 4 +material = generic_abs [values] material_bed_temperature = 70 -material_bed_temperature_layer_0 = 70 \ No newline at end of file +material_bed_temperature_layer_0 = 70 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 5677a0d58d..3f2eec9867 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 @@ -1,15 +1,15 @@ [general] -version = 2 +version = 3 name = Normal definition = malyan_m200 [metadata] +setting_version = 4 type = quality quality_type = fast -material = generic_abs_175 weight = -1 -setting_version = 4 +material = generic_abs [values] material_bed_temperature = 70 -material_bed_temperature_layer_0 = 70 \ No newline at end of file +material_bed_temperature_layer_0 = 70 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 7798b3f545..55a6c0d4ba 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 @@ -1,15 +1,15 @@ [general] -version = 2 +version = 3 name = Finer definition = malyan_m200 [metadata] +setting_version = 4 type = quality quality_type = high -material = generic_abs_175 weight = 1 -setting_version = 4 +material = generic_abs [values] material_bed_temperature = 70 -material_bed_temperature_layer_0 = 70 \ No newline at end of file +material_bed_temperature_layer_0 = 70 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 c87c66c813..98587bdf7d 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 @@ -1,15 +1,15 @@ [general] -version = 2 +version = 3 name = Fine definition = malyan_m200 [metadata] +setting_version = 4 type = quality quality_type = normal -material = generic_abs_175 weight = 0 -setting_version = 4 +material = generic_abs [values] material_bed_temperature = 70 -material_bed_temperature_layer_0 = 70 \ No newline at end of file +material_bed_temperature_layer_0 = 70 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 e6e3cfcd6c..49fcd1e935 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 @@ -1,15 +1,15 @@ [general] -version = 2 +version = 3 name = Lowest Quality Draft definition = malyan_m200 [metadata] +setting_version = 4 type = quality quality_type = superdraft -material = generic_abs_175 weight = -5 -setting_version = 4 +material = generic_abs [values] material_bed_temperature = 70 -material_bed_temperature_layer_0 = 70 \ No newline at end of file +material_bed_temperature_layer_0 = 70 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 fb08013809..f9a9fe3d98 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 @@ -1,15 +1,15 @@ [general] -version = 2 +version = 3 name = Draft definition = malyan_m200 [metadata] +setting_version = 4 type = quality quality_type = thickerdraft -material = generic_abs_175 weight = -3 -setting_version = 4 +material = generic_abs [values] material_bed_temperature = 70 -material_bed_temperature_layer_0 = 70 \ No newline at end of file +material_bed_temperature_layer_0 = 70 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 385d852688..dcc2813031 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 @@ -1,15 +1,15 @@ [general] -version = 2 +version = 3 name = Ultra Fine definition = malyan_m200 [metadata] +setting_version = 4 type = quality quality_type = ultra -material = generic_abs_175 weight = 2 -setting_version = 4 +material = generic_abs [values] material_bed_temperature = 70 -material_bed_temperature_layer_0 = 70 \ No newline at end of file +material_bed_temperature_layer_0 = 70 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 7026391fb6..251d024a85 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 @@ -1,15 +1,15 @@ [general] -version = 2 +version = 3 name = Low Detail Draft definition = malyan_m200 [metadata] +setting_version = 4 type = quality quality_type = verydraft -material = generic_abs_175 weight = -4 -setting_version = 4 +material = generic_abs [values] material_bed_temperature = 70 -material_bed_temperature_layer_0 = 70 \ No newline at end of file +material_bed_temperature_layer_0 = 70 diff --git a/resources/quality/malyan_m200/malyan_m200_0.04375.inst.cfg b/resources/quality/malyan_m200/malyan_m200_0.04375.inst.cfg index 54be6ecbcc..c9dd72f5f5 100644 --- a/resources/quality/malyan_m200/malyan_m200_0.04375.inst.cfg +++ b/resources/quality/malyan_m200/malyan_m200_0.04375.inst.cfg @@ -1,13 +1,13 @@ [general] -version = 2 +version = 3 name = M1 Quality definition = malyan_m200 [metadata] -type = quality -weight = 2 -quality_type = fine setting_version = 4 +type = quality +quality_type = fine +weight = 2 [values] layer_height = 0.04375 diff --git a/resources/quality/malyan_m200/malyan_m200_0.0875.inst.cfg b/resources/quality/malyan_m200/malyan_m200_0.0875.inst.cfg index 568dd796f3..65d7d0d0b8 100644 --- a/resources/quality/malyan_m200/malyan_m200_0.0875.inst.cfg +++ b/resources/quality/malyan_m200/malyan_m200_0.0875.inst.cfg @@ -1,13 +1,13 @@ [general] -version = 2 +version = 3 name = M2 Quality definition = malyan_m200 [metadata] -type = quality -weight = 1 -quality_type = high setting_version = 4 +type = quality +quality_type = high +weight = 1 [values] layer_height = 0.0875 diff --git a/resources/quality/malyan_m200/malyan_m200_0.13125.inst.cfg b/resources/quality/malyan_m200/malyan_m200_0.13125.inst.cfg index 1dc436502b..89aea54fdc 100644 --- a/resources/quality/malyan_m200/malyan_m200_0.13125.inst.cfg +++ b/resources/quality/malyan_m200/malyan_m200_0.13125.inst.cfg @@ -1,13 +1,13 @@ [general] -version = 2 +version = 3 name = M3 Quality definition = malyan_m200 [metadata] -type = quality -weight = 0 -quality_type = normal setting_version = 4 +type = quality +quality_type = normal +weight = 0 [values] layer_height = 0.13125 diff --git a/resources/quality/malyan_m200/malyan_m200_0.175.inst.cfg b/resources/quality/malyan_m200/malyan_m200_0.175.inst.cfg index 314a8acd83..613988a437 100644 --- a/resources/quality/malyan_m200/malyan_m200_0.175.inst.cfg +++ b/resources/quality/malyan_m200/malyan_m200_0.175.inst.cfg @@ -1,14 +1,14 @@ [general] -version = 2 +version = 3 name = M4 Quality definition = malyan_m200 [metadata] -type = quality -weight = -1 -quality_type = fast -global_quality = true setting_version = 4 +type = quality +quality_type = fast +weight = -1 +global_quality = true [values] layer_height = 0.175 diff --git a/resources/quality/malyan_m200/malyan_m200_0.21875.inst.cfg b/resources/quality/malyan_m200/malyan_m200_0.21875.inst.cfg index a7fedb7e04..75d7601af3 100644 --- a/resources/quality/malyan_m200/malyan_m200_0.21875.inst.cfg +++ b/resources/quality/malyan_m200/malyan_m200_0.21875.inst.cfg @@ -1,13 +1,13 @@ [general] -version = 2 +version = 3 name = M5 Quality definition = malyan_m200 [metadata] -type = quality -weight = -2 -quality_type = faster setting_version = 4 +type = quality +quality_type = faster +weight = -2 [values] layer_height = 0.21875 diff --git a/resources/quality/malyan_m200/malyan_m200_0.2625.inst.cfg b/resources/quality/malyan_m200/malyan_m200_0.2625.inst.cfg index 441abc3070..470af78595 100644 --- a/resources/quality/malyan_m200/malyan_m200_0.2625.inst.cfg +++ b/resources/quality/malyan_m200/malyan_m200_0.2625.inst.cfg @@ -1,13 +1,13 @@ [general] -version = 2 +version = 3 name = M6 Quality definition = malyan_m200 [metadata] -type = quality -weight = -3 -quality_type = draft setting_version = 4 +type = quality +quality_type = draft +weight = -3 [values] layer_height = 0.2625 diff --git a/resources/quality/malyan_m200/malyan_m200_0.30625.inst.cfg b/resources/quality/malyan_m200/malyan_m200_0.30625.inst.cfg index 2588838174..32fa8c5641 100644 --- a/resources/quality/malyan_m200/malyan_m200_0.30625.inst.cfg +++ b/resources/quality/malyan_m200/malyan_m200_0.30625.inst.cfg @@ -1,13 +1,13 @@ [general] -version = 2 +version = 3 name = M7 Quality definition = malyan_m200 [metadata] -type = quality -weight = -4 -quality_type = turbo setting_version = 4 +type = quality +quality_type = turbo +weight = -4 [values] layer_height = 0.30625 diff --git a/resources/quality/malyan_m200/malyan_m200_0.35.inst.cfg b/resources/quality/malyan_m200/malyan_m200_0.35.inst.cfg index 800b6104d9..1e168e7690 100644 --- a/resources/quality/malyan_m200/malyan_m200_0.35.inst.cfg +++ b/resources/quality/malyan_m200/malyan_m200_0.35.inst.cfg @@ -1,14 +1,14 @@ [general] -version = 2 +version = 3 name = M8 Quality definition = malyan_m200 [metadata] -type = quality -weight = -5 -quality_type = hyper -global_quality = true setting_version = 4 +type = quality +quality_type = hyper +weight = -5 +global_quality = true [values] layer_height = 0.35 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 d3104caa87..12796a140f 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 @@ -1,14 +1,14 @@ [general] -version = 2 +version = 3 name = Fast definition = malyan_m200 [metadata] -type = quality -weight = -2 -quality_type = draft -global_quality = True setting_version = 4 +type = quality +quality_type = draft +weight = -2 +global_quality = True [values] layer_height = 0.21875 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 aec535bd71..78f014bd9e 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 @@ -1,14 +1,14 @@ [general] -version = 2 +version = 3 name = Normal definition = malyan_m200 [metadata] -type = quality -weight = -1 -quality_type = fast -global_quality = True setting_version = 4 +type = quality +quality_type = fast +weight = -1 +global_quality = True [values] layer_height = 0.175 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 ca202862a2..bf2f25b418 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 @@ -1,14 +1,14 @@ [general] -version = 2 +version = 3 name = Finer definition = malyan_m200 [metadata] -type = quality -weight = 1 -quality_type = high -global_quality = True setting_version = 4 +type = quality +quality_type = high +weight = 1 +global_quality = True [values] layer_height = 0.0875 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 7076718903..cd9609cc2d 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 @@ -1,14 +1,14 @@ [general] -version = 2 +version = 3 name = Fine definition = malyan_m200 [metadata] -type = quality -weight = 0 -quality_type = normal -global_quality = True setting_version = 4 +type = quality +quality_type = normal +weight = 0 +global_quality = True [values] layer_height = 0.13125 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 7dfbdb5886..880eb5068d 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 @@ -1,14 +1,14 @@ [general] -version = 2 +version = 3 name = Lowest Quality Draft definition = malyan_m200 [metadata] -type = quality -weight = -5 -quality_type = superdraft -global_quality = True setting_version = 4 +type = quality +quality_type = superdraft +weight = -5 +global_quality = True [values] layer_height = 0.35 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 2fbf82b128..9ebc812738 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 @@ -1,14 +1,14 @@ [general] -version = 2 +version = 3 name = Draft definition = malyan_m200 [metadata] -type = quality -weight = -3 -quality_type = thickerdraft -global_quality = True setting_version = 4 +type = quality +quality_type = thickerdraft +weight = -3 +global_quality = True [values] layer_height = 0.2625 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 90e589cca5..f1841970af 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 @@ -1,14 +1,14 @@ [general] -version = 2 +version = 3 name = Ultra Fine definition = malyan_m200 [metadata] -type = quality -weight = 2 -quality_type = ultra -global_quality = True setting_version = 4 +type = quality +quality_type = ultra +weight = 2 +global_quality = True [values] layer_height = 0.04375 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 1210ee214b..7da342c437 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 @@ -1,14 +1,14 @@ [general] -version = 2 +version = 3 name = Low Detail Draft definition = malyan_m200 [metadata] -type = quality -weight = -4 -quality_type = verydraft -global_quality = True setting_version = 4 +type = quality +quality_type = verydraft +weight = -4 +global_quality = True [values] layer_height = 0.30625 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 aef83471ba..0434decedc 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 @@ -1,11 +1,11 @@ [general] -version = 2 +version = 3 name = Fast definition = malyan_m200 [metadata] +setting_version = 4 type = quality quality_type = draft -material = generic_petg_175 weight = -2 -setting_version = 4 \ No newline at end of file +material = generic_petg 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 3c7fc2c239..2049403af4 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 @@ -1,11 +1,11 @@ [general] -version = 2 +version = 3 name = Normal definition = malyan_m200 [metadata] +setting_version = 4 type = quality quality_type = fast -material = generic_petg_175 weight = -1 -setting_version = 4 \ No newline at end of file +material = generic_petg 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 eb1654eae3..00882f2418 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 @@ -1,11 +1,11 @@ [general] -version = 2 +version = 3 name = Finer definition = malyan_m200 [metadata] +setting_version = 4 type = quality quality_type = high -material = generic_petg_175 weight = 1 -setting_version = 4 \ No newline at end of file +material = generic_petg 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 53e60d2d62..58ad4a1085 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 @@ -1,11 +1,11 @@ [general] -version = 2 +version = 3 name = Fine definition = malyan_m200 [metadata] +setting_version = 4 type = quality quality_type = normal -material = generic_petg_175 weight = 0 -setting_version = 4 \ No newline at end of file +material = generic_petg 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 d2a96386ae..09a72e261a 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 @@ -1,11 +1,11 @@ [general] -version = 2 +version = 3 name = Lowest Quality Draft definition = malyan_m200 [metadata] +setting_version = 4 type = quality quality_type = superdraft -material = generic_petg_175 weight = -5 -setting_version = 4 \ No newline at end of file +material = generic_petg 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 e2f37ae43b..e57b1d24f2 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 @@ -1,11 +1,11 @@ [general] -version = 2 +version = 3 name = Draft definition = malyan_m200 [metadata] +setting_version = 4 type = quality quality_type = thickerdraft -material = generic_petg_175 weight = -3 -setting_version = 4 \ No newline at end of file +material = generic_petg 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 0fa89f2569..0c3de72835 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 @@ -1,11 +1,11 @@ [general] -version = 2 +version = 3 name = Ultra Fine definition = malyan_m200 [metadata] +setting_version = 4 type = quality quality_type = ultra -material = generic_petg_175 weight = 2 -setting_version = 4 \ No newline at end of file +material = generic_petg 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 84bedf5c14..0139e972f6 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 @@ -1,11 +1,11 @@ [general] -version = 2 +version = 3 name = Low Detail Draft definition = malyan_m200 [metadata] +setting_version = 4 type = quality quality_type = verydraft -material = generic_petg_175 weight = -4 -setting_version = 4 \ No newline at end of file +material = generic_petg 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 4f221eceb7..c30df8a9b3 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 @@ -1,15 +1,15 @@ [general] -version = 2 +version = 3 name = Fast definition = malyan_m200 [metadata] +setting_version = 4 type = quality quality_type = draft -material = generic_pla_175 weight = -2 -setting_version = 4 +material = generic_pla [values] material_bed_temperature = 60 -material_bed_temperature_layer_0 = 60 \ No newline at end of file +material_bed_temperature_layer_0 = 60 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 3097fe055a..8e1b0478ad 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 @@ -1,15 +1,15 @@ [general] -version = 2 +version = 3 name = Normal definition = malyan_m200 [metadata] +setting_version = 4 type = quality quality_type = fast -material = generic_pla_175 weight = -1 -setting_version = 4 +material = generic_pla [values] material_bed_temperature = 60 -material_bed_temperature_layer_0 = 60 \ No newline at end of file +material_bed_temperature_layer_0 = 60 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 062c120ad0..44713b2386 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 @@ -1,15 +1,15 @@ [general] -version = 2 +version = 3 name = Finer definition = malyan_m200 [metadata] +setting_version = 4 type = quality quality_type = high -material = generic_pla_175 weight = 1 -setting_version = 4 +material = generic_pla [values] material_bed_temperature = 60 -material_bed_temperature_layer_0 = 60 \ No newline at end of file +material_bed_temperature_layer_0 = 60 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 e01141ed9e..cd6497d9bf 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 @@ -1,15 +1,15 @@ [general] -version = 2 +version = 3 name = Fine definition = malyan_m200 [metadata] +setting_version = 4 type = quality quality_type = normal -material = generic_pla_175 weight = 0 -setting_version = 4 +material = generic_pla [values] material_bed_temperature = 60 -material_bed_temperature_layer_0 = 60 \ No newline at end of file +material_bed_temperature_layer_0 = 60 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 53eb4380eb..447de8a48b 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 @@ -1,15 +1,15 @@ [general] -version = 2 +version = 3 name = Lowest Quality Draft definition = malyan_m200 [metadata] +setting_version = 4 type = quality quality_type = superdraft -material = generic_pla_175 weight = -5 -setting_version = 4 +material = generic_pla [values] material_bed_temperature = 60 -material_bed_temperature_layer_0 = 60 \ No newline at end of file +material_bed_temperature_layer_0 = 60 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 32d2b419bc..f2c5e3c9cc 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 @@ -1,15 +1,15 @@ [general] -version = 2 +version = 3 name = Draft definition = malyan_m200 [metadata] +setting_version = 4 type = quality quality_type = thickerdraft -material = generic_pla_175 weight = -3 -setting_version = 4 +material = generic_pla [values] material_bed_temperature = 60 -material_bed_temperature_layer_0 = 60 \ No newline at end of file +material_bed_temperature_layer_0 = 60 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 3865059254..63f19bef41 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 @@ -1,15 +1,15 @@ [general] -version = 2 +version = 3 name = Ultra Fine definition = malyan_m200 [metadata] +setting_version = 4 type = quality quality_type = ultra -material = generic_pla_175 weight = 2 -setting_version = 4 +material = generic_pla [values] material_bed_temperature = 60 -material_bed_temperature_layer_0 = 60 \ No newline at end of file +material_bed_temperature_layer_0 = 60 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 a624c056be..6a96b3d678 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 @@ -1,15 +1,15 @@ [general] -version = 2 +version = 3 name = Low Detail Draft definition = malyan_m200 [metadata] +setting_version = 4 type = quality quality_type = verydraft -material = generic_pla_175 weight = -4 -setting_version = 4 +material = generic_pla [values] material_bed_temperature = 60 -material_bed_temperature_layer_0 = 60 \ No newline at end of file +material_bed_temperature_layer_0 = 60 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 a63256573a..6fec85b563 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 @@ -1,15 +1,15 @@ [general] -version = 2 +version = 3 name = Fast definition = monoprice_select_mini_v2 [metadata] +setting_version = 4 type = quality quality_type = draft -material = generic_abs_175 weight = -2 -setting_version = 4 +material = generic_abs [values] material_bed_temperature = 70 -material_bed_temperature_layer_0 = 70 \ No newline at end of file +material_bed_temperature_layer_0 = 70 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 49f4486596..0d79f2cc72 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 @@ -1,15 +1,15 @@ [general] -version = 2 +version = 3 name = Normal definition = monoprice_select_mini_v2 [metadata] +setting_version = 4 type = quality quality_type = fast -material = generic_abs_175 weight = -1 -setting_version = 4 +material = generic_abs [values] material_bed_temperature = 70 -material_bed_temperature_layer_0 = 70 \ No newline at end of file +material_bed_temperature_layer_0 = 70 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 eab16a8e2b..f02e3b5838 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 @@ -1,15 +1,15 @@ [general] -version = 2 +version = 3 name = Finer definition = monoprice_select_mini_v2 [metadata] +setting_version = 4 type = quality quality_type = high -material = generic_abs_175 weight = 1 -setting_version = 4 +material = generic_abs [values] material_bed_temperature = 70 -material_bed_temperature_layer_0 = 70 \ No newline at end of file +material_bed_temperature_layer_0 = 70 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 03aeb4067b..a046cfa561 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 @@ -1,15 +1,15 @@ [general] -version = 2 +version = 3 name = Fine definition = monoprice_select_mini_v2 [metadata] +setting_version = 4 type = quality quality_type = normal -material = generic_abs_175 weight = 0 -setting_version = 4 +material = generic_abs [values] material_bed_temperature = 70 -material_bed_temperature_layer_0 = 70 \ No newline at end of file +material_bed_temperature_layer_0 = 70 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 148f53ba73..f5861ce734 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 @@ -1,15 +1,15 @@ [general] -version = 2 +version = 3 name = Lowest Quality Draft definition = monoprice_select_mini_v2 [metadata] +setting_version = 4 type = quality quality_type = superdraft -material = generic_abs_175 weight = -5 -setting_version = 4 +material = generic_abs [values] material_bed_temperature = 70 -material_bed_temperature_layer_0 = 70 \ No newline at end of file +material_bed_temperature_layer_0 = 70 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 e2ad71a360..b63fd3cfad 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 @@ -1,15 +1,15 @@ [general] -version = 2 +version = 3 name = Draft definition = monoprice_select_mini_v2 [metadata] +setting_version = 4 type = quality quality_type = thickerdraft -material = generic_abs_175 weight = -3 -setting_version = 4 +material = generic_abs [values] material_bed_temperature = 70 -material_bed_temperature_layer_0 = 70 \ No newline at end of file +material_bed_temperature_layer_0 = 70 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 7ebdf80baf..6aed450961 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 @@ -1,15 +1,15 @@ [general] -version = 2 +version = 3 name = Ultra Fine definition = monoprice_select_mini_v2 [metadata] +setting_version = 4 type = quality quality_type = thickerdraft -material = generic_abs_175 weight = 2 -setting_version = 4 +material = generic_abs [values] material_bed_temperature = 70 -material_bed_temperature_layer_0 = 70 \ No newline at end of file +material_bed_temperature_layer_0 = 70 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 9965ae8bcf..1c462fd435 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 @@ -1,15 +1,15 @@ [general] -version = 2 +version = 3 name = Low Detail Draft definition = monoprice_select_mini_v2 [metadata] +setting_version = 4 type = quality quality_type = verydraft -material = generic_abs_175 weight = -4 -setting_version = 4 +material = generic_abs [values] material_bed_temperature = 70 -material_bed_temperature_layer_0 = 70 \ No newline at end of file +material_bed_temperature_layer_0 = 70 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 b7d0faa2c7..c70ccc9946 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 @@ -1,14 +1,14 @@ [general] -version = 2 +version = 3 name = Fast definition = monoprice_select_mini_v2 [metadata] -type = quality -weight = -2 -quality_type = draft -global_quality = True setting_version = 4 +type = quality +quality_type = draft +weight = -2 +global_quality = True [values] layer_height = 0.21875 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 f7f338e4c9..1bc10e2186 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 @@ -1,14 +1,14 @@ [general] -version = 2 +version = 3 name = Normal definition = monoprice_select_mini_v2 [metadata] -type = quality -weight = -1 -quality_type = fast -global_quality = True setting_version = 4 +type = quality +quality_type = fast +weight = -1 +global_quality = True [values] layer_height = 0.175 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 4a37a1afd8..24d5d5819f 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 @@ -1,14 +1,14 @@ [general] -version = 2 +version = 3 name = Finer definition = monoprice_select_mini_v2 [metadata] -type = quality -weight = 1 -quality_type = high -global_quality = True setting_version = 4 +type = quality +quality_type = high +weight = 1 +global_quality = True [values] layer_height = 0.0875 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 b8e545adcf..0a884c80ca 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 @@ -1,14 +1,14 @@ [general] -version = 2 +version = 3 name = Fine definition = monoprice_select_mini_v2 [metadata] -type = quality -weight = 0 -quality_type = normal -global_quality = True setting_version = 4 +type = quality +quality_type = normal +weight = 0 +global_quality = True [values] layer_height = 0.13125 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 0ef9db5875..9a0928186c 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 @@ -1,14 +1,14 @@ [general] -version = 2 +version = 3 name = Lowest Quality Draft definition = monoprice_select_mini_v2 [metadata] -type = quality -weight = -5 -quality_type = superdraft -global_quality = True setting_version = 4 +type = quality +quality_type = superdraft +weight = -5 +global_quality = True [values] layer_height = 0.35 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 4dd3a7aafe..994ec14a3e 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 @@ -1,14 +1,14 @@ [general] -version = 2 +version = 3 name = Draft definition = monoprice_select_mini_v2 [metadata] -type = quality -weight = -3 -quality_type = thickerdraft -global_quality = True setting_version = 4 +type = quality +quality_type = thickerdraft +weight = -3 +global_quality = True [values] layer_height = 0.2625 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 337f0d06bc..813d156588 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 @@ -1,14 +1,14 @@ [general] -version = 2 +version = 3 name = Ultra Fine definition = monoprice_select_mini_v2 [metadata] -type = quality -weight = 2 -quality_type = ultra -global_quality = True setting_version = 4 +type = quality +quality_type = ultra +weight = 2 +global_quality = True [values] layer_height = 0.04375 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 e884077069..0a461945f5 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 @@ -1,14 +1,14 @@ [general] -version = 2 +version = 3 name = Low Detail Draft definition = monoprice_select_mini_v2 [metadata] -type = quality -weight = -4 -quality_type = verydraft -global_quality = True setting_version = 4 +type = quality +quality_type = verydraft +weight = -4 +global_quality = True [values] layer_height = 0.30625 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 4a03c17a63..d5ccd3070b 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 @@ -1,11 +1,11 @@ [general] -version = 2 +version = 3 name = Fast definition = monoprice_select_mini_v2 [metadata] +setting_version = 4 type = quality quality_type = draft -material = generic_nylon_175 weight = -2 -setting_version = 4 \ No newline at end of file +material = generic_nylon 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 1c04f77b8b..aca8884024 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 @@ -1,11 +1,11 @@ [general] -version = 2 +version = 3 name = Normal definition = monoprice_select_mini_v2 [metadata] +setting_version = 4 type = quality quality_type = fast -material = generic_nylon_175 weight = -1 -setting_version = 4 \ No newline at end of file +material = generic_nylon 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 d57516598a..080a06d84f 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 @@ -1,11 +1,11 @@ [general] -version = 2 +version = 3 name = Finer definition = monoprice_select_mini_v2 [metadata] +setting_version = 4 type = quality quality_type = high -material = generic_nylon_175 weight = 1 -setting_version = 4 \ No newline at end of file +material = generic_nylon 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 308ea86311..7f3222d229 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 @@ -1,11 +1,11 @@ [general] -version = 2 +version = 3 name = Fine definition = monoprice_select_mini_v2 [metadata] +setting_version = 4 type = quality quality_type = normal -material = generic_nylon_175 weight = 0 -setting_version = 4 \ No newline at end of file +material = generic_nylon 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 db4f3ca907..88777be100 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 @@ -1,11 +1,11 @@ [general] -version = 2 +version = 3 name = Lowest Quality Draft definition = monoprice_select_mini_v2 [metadata] +setting_version = 4 type = quality quality_type = superdraft -material = generic_nylon_175 weight = -5 -setting_version = 4 \ No newline at end of file +material = generic_nylon 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 9a1afc0e48..8880d6defa 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 @@ -1,11 +1,11 @@ [general] -version = 2 +version = 3 name = Draft definition = monoprice_select_mini_v2 [metadata] +setting_version = 4 type = quality quality_type = thickerdraft -material = generic_nylon_175 weight = -3 -setting_version = 4 \ No newline at end of file +material = generic_nylon 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 3453671a72..945964cfac 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 @@ -1,11 +1,11 @@ [general] -version = 2 +version = 3 name = Ultra Fine definition = monoprice_select_mini_v2 [metadata] +setting_version = 4 type = quality quality_type = ultra -material = generic_nylon_175 weight = 2 -setting_version = 4 \ No newline at end of file +material = generic_nylon 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 ee2531fc4e..fbebffde3a 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 @@ -1,11 +1,11 @@ [general] -version = 2 +version = 3 name = Low Detail Draft definition = monoprice_select_mini_v2 [metadata] +setting_version = 4 type = quality quality_type = verydraft -material = generic_nylon_175 weight = -4 -setting_version = 4 \ No newline at end of file +material = generic_nylon 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 aa5fc7844d..be4f438df5 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 @@ -1,15 +1,15 @@ [general] -version = 2 +version = 3 name = Fast definition = monoprice_select_mini_v2 [metadata] +setting_version = 4 type = quality quality_type = draft -material = generic_pc_175 weight = -2 -setting_version = 4 +material = generic_pc [values] material_bed_temperature = 70 -material_bed_temperature_layer_0 = 70 \ No newline at end of file +material_bed_temperature_layer_0 = 70 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 232c4ab6f3..c81f19a03e 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 @@ -1,15 +1,15 @@ [general] -version = 2 +version = 3 name = Normal definition = monoprice_select_mini_v2 [metadata] +setting_version = 4 type = quality quality_type = fast -material = generic_pc_175 weight = -1 -setting_version = 4 +material = generic_pc [values] material_bed_temperature = 70 -material_bed_temperature_layer_0 = 70 \ No newline at end of file +material_bed_temperature_layer_0 = 70 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 aa9da322fb..714cd66c1f 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 @@ -1,15 +1,15 @@ [general] -version = 2 +version = 3 name = Finer definition = monoprice_select_mini_v2 [metadata] +setting_version = 4 type = quality quality_type = high -material = generic_pc_175 weight = 1 -setting_version = 4 +material = generic_pc [values] material_bed_temperature = 70 -material_bed_temperature_layer_0 = 70 \ No newline at end of file +material_bed_temperature_layer_0 = 70 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 145b21221b..a314288364 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 @@ -1,15 +1,15 @@ [general] -version = 2 +version = 3 name = Fine definition = monoprice_select_mini_v2 [metadata] +setting_version = 4 type = quality quality_type = normal -material = generic_pc_175 weight = 0 -setting_version = 4 +material = generic_pc [values] material_bed_temperature = 70 -material_bed_temperature_layer_0 = 70 \ No newline at end of file +material_bed_temperature_layer_0 = 70 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 b6e53bda62..4889d3fc7d 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 @@ -1,15 +1,15 @@ [general] -version = 2 +version = 3 name = Lowest Quality Draft definition = monoprice_select_mini_v2 [metadata] +setting_version = 4 type = quality quality_type = superdraft -material = generic_pc_175 weight = -5 -setting_version = 4 +material = generic_pc [values] material_bed_temperature = 70 -material_bed_temperature_layer_0 = 70 \ No newline at end of file +material_bed_temperature_layer_0 = 70 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 055228ab13..12a5c2ac6f 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 @@ -1,15 +1,15 @@ [general] -version = 2 +version = 3 name = Draft definition = monoprice_select_mini_v2 [metadata] +setting_version = 4 type = quality quality_type = thickerdraft -material = generic_pc_175 weight = -3 -setting_version = 4 +material = generic_pc [values] material_bed_temperature = 70 -material_bed_temperature_layer_0 = 70 \ No newline at end of file +material_bed_temperature_layer_0 = 70 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 a3e99b998e..3b70904476 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 @@ -1,15 +1,15 @@ [general] -version = 2 +version = 3 name = Ultra Fine definition = monoprice_select_mini_v2 [metadata] +setting_version = 4 type = quality quality_type = ultra -material = generic_pc_175 weight = 2 -setting_version = 4 +material = generic_pc [values] material_bed_temperature = 70 -material_bed_temperature_layer_0 = 70 \ No newline at end of file +material_bed_temperature_layer_0 = 70 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 73f5a2f2c9..2ea13105ef 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 @@ -1,15 +1,15 @@ [general] -version = 2 +version = 3 name = Low Detail Draft definition = monoprice_select_mini_v2 [metadata] +setting_version = 4 type = quality quality_type = verydraft -material = generic_pc_175 weight = -4 -setting_version = 4 +material = generic_pc [values] material_bed_temperature = 70 -material_bed_temperature_layer_0 = 70 \ No newline at end of file +material_bed_temperature_layer_0 = 70 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 8a33e03310..da8f6a7c9a 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 @@ -1,11 +1,11 @@ [general] -version = 2 +version = 3 name = Fast definition = monoprice_select_mini_v2 [metadata] +setting_version = 4 type = quality quality_type = draft -material = generic_petg_175 weight = -2 -setting_version = 4 \ No newline at end of file +material = generic_petg 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 fb084fa08e..bc151b9635 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 @@ -1,11 +1,11 @@ [general] -version = 2 +version = 3 name = Normal definition = monoprice_select_mini_v2 [metadata] +setting_version = 4 type = quality quality_type = fast -material = generic_petg_175 weight = -1 -setting_version = 4 \ No newline at end of file +material = generic_petg 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 16891f6f43..bc1101603e 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 @@ -1,11 +1,11 @@ [general] -version = 2 +version = 3 name = Finer definition = monoprice_select_mini_v2 [metadata] +setting_version = 4 type = quality quality_type = high -material = generic_petg_175 weight = 1 -setting_version = 4 \ No newline at end of file +material = generic_petg 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 bb2f0b47a8..932bfdf97a 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 @@ -1,11 +1,11 @@ [general] -version = 2 +version = 3 name = Fine definition = monoprice_select_mini_v2 [metadata] +setting_version = 4 type = quality quality_type = normal -material = generic_petg_175 weight = 0 -setting_version = 4 \ No newline at end of file +material = generic_petg 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 78ca1b6b7a..77fb261821 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 @@ -1,11 +1,11 @@ [general] -version = 2 +version = 3 name = Lowest Quality Draft definition = monoprice_select_mini_v2 [metadata] +setting_version = 4 type = quality quality_type = superdraft -material = generic_petg_175 weight = -5 -setting_version = 4 \ No newline at end of file +material = generic_petg 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 69606ff913..096ff5c2f6 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 @@ -1,11 +1,11 @@ [general] -version = 2 +version = 3 name = Draft definition = monoprice_select_mini_v2 [metadata] +setting_version = 4 type = quality quality_type = thickerdraft -material = generic_petg_175 weight = -3 -setting_version = 4 \ No newline at end of file +material = generic_petg 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 7c5ac599c8..9a3cc19a0c 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 @@ -1,11 +1,11 @@ [general] -version = 2 +version = 3 name = Ultra Fine definition = monoprice_select_mini_v2 [metadata] +setting_version = 4 type = quality quality_type = ultra -material = generic_petg_175 weight = 2 -setting_version = 4 \ No newline at end of file +material = generic_petg 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 ed0c2510f5..c9e0aae2c4 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 @@ -1,11 +1,11 @@ [general] -version = 2 +version = 3 name = Low Detail Draft definition = monoprice_select_mini_v2 [metadata] +setting_version = 4 type = quality quality_type = verydraft -material = generic_petg_175 weight = -4 -setting_version = 4 \ No newline at end of file +material = generic_petg 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 04a955cf6c..8f85c598bd 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 @@ -1,11 +1,11 @@ [general] -version = 2 +version = 3 name = Fast definition = monoprice_select_mini_v2 [metadata] +setting_version = 4 type = quality quality_type = draft -material = generic_pla_175 weight = -2 -setting_version = 4 \ No newline at end of file +material = generic_pla 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 6efc0935e2..09e741ad07 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 @@ -1,11 +1,11 @@ [general] -version = 2 +version = 3 name = Normal definition = monoprice_select_mini_v2 [metadata] +setting_version = 4 type = quality quality_type = fast -material = generic_pla_175 weight = 0 -setting_version = 4 \ No newline at end of file +material = generic_pla 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 8fe2371e5d..cf00fb02b0 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 @@ -1,11 +1,11 @@ [general] -version = 2 +version = 3 name = Finer definition = monoprice_select_mini_v2 [metadata] +setting_version = 4 type = quality quality_type = high -material = generic_pla_175 weight = 0 -setting_version = 4 \ No newline at end of file +material = generic_pla 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 01351154c4..eaa85450d8 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 @@ -1,11 +1,11 @@ [general] -version = 2 +version = 3 name = Fine definition = monoprice_select_mini_v2 [metadata] +setting_version = 4 type = quality quality_type = normal -material = generic_pla_175 weight = 0 -setting_version = 4 \ No newline at end of file +material = generic_pla 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 adfced9787..66f888cd6e 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 @@ -1,11 +1,11 @@ [general] -version = 2 +version = 3 name = Lowest Quality Draft definition = monoprice_select_mini_v2 [metadata] +setting_version = 4 type = quality quality_type = superdraft -material = generic_pla_175 weight = -5 -setting_version = 4 \ No newline at end of file +material = generic_pla 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 f4522c9778..c4c2a0c2d1 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 @@ -1,11 +1,11 @@ [general] -version = 2 +version = 3 name = Draft definition = monoprice_select_mini_v2 [metadata] +setting_version = 4 type = quality quality_type = thickerdraft -material = generic_pla_175 weight = -3 -setting_version = 4 \ No newline at end of file +material = generic_pla 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 2fa8eb7f81..b9b0fea26e 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 @@ -1,11 +1,11 @@ [general] -version = 2 +version = 3 name = Ultra Fine definition = monoprice_select_mini_v2 [metadata] +setting_version = 4 type = quality quality_type = ultra -material = generic_pla_175 weight = 2 -setting_version = 4 \ No newline at end of file +material = generic_pla 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 e59cf4a490..bd6febd83c 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 @@ -1,11 +1,11 @@ [general] -version = 2 +version = 3 name = Low Detail Draft definition = monoprice_select_mini_v2 [metadata] +setting_version = 4 type = quality -quality_type = verydraft -material = generic_pla_175 +material = generic_pla weight = 0 -setting_version = 4 \ No newline at end of file +quality_type = verydraft diff --git a/resources/quality/normal.inst.cfg b/resources/quality/normal.inst.cfg index 9fb7b238cd..0f1a4d6905 100644 --- a/resources/quality/normal.inst.cfg +++ b/resources/quality/normal.inst.cfg @@ -1,13 +1,13 @@ [general] -version = 2 +version = 3 name = Fine definition = fdmprinter [metadata] +setting_version = 4 type = quality quality_type = normal -global_quality = True weight = 0 -setting_version = 4 +global_quality = True [values] diff --git a/resources/quality/peopoly_moai/peopoly_moai_high.inst.cfg b/resources/quality/peopoly_moai/peopoly_moai_high.inst.cfg index ae8a377116..57c955f4b7 100644 --- a/resources/quality/peopoly_moai/peopoly_moai_high.inst.cfg +++ b/resources/quality/peopoly_moai/peopoly_moai_high.inst.cfg @@ -1,13 +1,13 @@ [general] -version = 2 +version = 3 name = Extra Fine definition = peopoly_moai [metadata] -type = quality -weight = 1 -quality_type = high setting_version = 4 +type = quality +quality_type = high +weight = 1 [values] infill_sparse_density = 70 diff --git a/resources/quality/peopoly_moai/peopoly_moai_max.inst.cfg b/resources/quality/peopoly_moai/peopoly_moai_max.inst.cfg index 07ab7e364b..4cce7e2d85 100644 --- a/resources/quality/peopoly_moai/peopoly_moai_max.inst.cfg +++ b/resources/quality/peopoly_moai/peopoly_moai_max.inst.cfg @@ -1,13 +1,13 @@ [general] -version = 2 +version = 3 name = Maximum Quality definition = peopoly_moai [metadata] -type = quality -weight = 2 -quality_type = extra_high setting_version = 4 +type = quality +quality_type = extra_high +weight = 2 [values] infill_sparse_density = 70 diff --git a/resources/quality/peopoly_moai/peopoly_moai_normal.inst.cfg b/resources/quality/peopoly_moai/peopoly_moai_normal.inst.cfg index e0d2f7d818..a1465a86c9 100644 --- a/resources/quality/peopoly_moai/peopoly_moai_normal.inst.cfg +++ b/resources/quality/peopoly_moai/peopoly_moai_normal.inst.cfg @@ -1,13 +1,13 @@ [general] -version = 2 +version = 3 name = Fine definition = peopoly_moai [metadata] -type = quality -weight = 0 -quality_type = normal setting_version = 4 +type = quality +quality_type = normal +weight = 0 [values] infill_sparse_density = 70 diff --git a/resources/quality/tevo_blackwidow/tevo_blackwidow_draft.inst.cfg b/resources/quality/tevo_blackwidow/tevo_blackwidow_draft.inst.cfg index 88805021eb..184205b1cd 100644 --- a/resources/quality/tevo_blackwidow/tevo_blackwidow_draft.inst.cfg +++ b/resources/quality/tevo_blackwidow/tevo_blackwidow_draft.inst.cfg @@ -1,18 +1,18 @@ [general] -version = 2 +version = 3 name = Draft definition = tevo_blackwidow [metadata] +setting_version = 4 type = quality quality_type = draft weight = -2 -setting_version = 4 [values] brim_width = 4.0 infill_pattern = zigzag -layer_height = 0.4 +layer_height = 0.3 material_diameter = 1.75 speed_infill = 50 speed_print = 50 @@ -30,4 +30,4 @@ support_type = everywhere support_use_towers = False support_xy_distance = 0.7 top_bottom_thickness = 1.2 -wall_thickness = 1.2 \ No newline at end of file +wall_thickness = 1.2 diff --git a/resources/quality/tevo_blackwidow/tevo_blackwidow_high.inst.cfg b/resources/quality/tevo_blackwidow/tevo_blackwidow_high.inst.cfg index 79d020463f..d158af4123 100644 --- a/resources/quality/tevo_blackwidow/tevo_blackwidow_high.inst.cfg +++ b/resources/quality/tevo_blackwidow/tevo_blackwidow_high.inst.cfg @@ -1,13 +1,13 @@ [general] -version = 2 +version = 3 name = High definition = tevo_blackwidow [metadata] +setting_version = 4 type = quality quality_type = high weight = 1 -setting_version = 4 [values] brim_width = 4.0 @@ -30,4 +30,4 @@ support_type = everywhere support_use_towers = False support_xy_distance = 0.7 top_bottom_thickness = 1.2 -wall_thickness = 1.2 \ No newline at end of file +wall_thickness = 1.2 diff --git a/resources/quality/tevo_blackwidow/tevo_blackwidow_normal.inst.cfg b/resources/quality/tevo_blackwidow/tevo_blackwidow_normal.inst.cfg index 2982c44d3d..a44ff8bcdb 100644 --- a/resources/quality/tevo_blackwidow/tevo_blackwidow_normal.inst.cfg +++ b/resources/quality/tevo_blackwidow/tevo_blackwidow_normal.inst.cfg @@ -1,13 +1,13 @@ [general] -version = 2 +version = 3 name = Normal definition = tevo_blackwidow [metadata] +setting_version = 4 type = quality quality_type = normal weight = 0 -setting_version = 4 [values] brim_width = 4.0 @@ -30,4 +30,4 @@ support_type = everywhere support_use_towers = False support_xy_distance = 0.7 top_bottom_thickness = 1.2 -wall_thickness = 1.2 \ No newline at end of file +wall_thickness = 1.2 diff --git a/resources/quality/ultimaker2/um2_draft.inst.cfg b/resources/quality/ultimaker2/um2_draft.inst.cfg index 4fe3f51e20..dc761afc0b 100644 --- a/resources/quality/ultimaker2/um2_draft.inst.cfg +++ b/resources/quality/ultimaker2/um2_draft.inst.cfg @@ -1,13 +1,14 @@ [general] -version = 2 +version = 3 name = Draft Quality definition = ultimaker2 [metadata] +setting_version = 4 type = quality quality_type = draft weight = -2 -setting_version = 4 +global_quality = True [values] layer_height = 0.2 diff --git a/resources/quality/ultimaker2/um2_low.inst.cfg b/resources/quality/ultimaker2/um2_fast.inst.cfg similarity index 84% rename from resources/quality/ultimaker2/um2_low.inst.cfg rename to resources/quality/ultimaker2/um2_fast.inst.cfg index 832962984c..04c24dc4c2 100644 --- a/resources/quality/ultimaker2/um2_low.inst.cfg +++ b/resources/quality/ultimaker2/um2_fast.inst.cfg @@ -1,13 +1,14 @@ [general] -version = 2 +version = 3 name = Low Quality definition = ultimaker2 [metadata] -type = quality -quality_type = low -weight = -1 setting_version = 4 +type = quality +quality_type = fast +weight = -1 +global_quality = True [values] infill_sparse_density = 10 diff --git a/resources/quality/ultimaker2/um2_high.inst.cfg b/resources/quality/ultimaker2/um2_high.inst.cfg index 96941beed2..1c83ea350b 100644 --- a/resources/quality/ultimaker2/um2_high.inst.cfg +++ b/resources/quality/ultimaker2/um2_high.inst.cfg @@ -1,13 +1,14 @@ [general] -version = 2 +version = 3 name = Extra Fine definition = ultimaker2 [metadata] +setting_version = 4 type = quality quality_type = high weight = 1 -setting_version = 4 +global_quality = True [values] layer_height = 0.06 diff --git a/resources/quality/ultimaker2/um2_normal.inst.cfg b/resources/quality/ultimaker2/um2_normal.inst.cfg index ea804feb80..bddbe6e243 100644 --- a/resources/quality/ultimaker2/um2_normal.inst.cfg +++ b/resources/quality/ultimaker2/um2_normal.inst.cfg @@ -1,12 +1,13 @@ [general] -version = 2 +version = 3 name = Fine definition = ultimaker2 [metadata] +setting_version = 4 type = quality quality_type = normal weight = 0 -setting_version = 4 +global_quality = True [values] 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 638a1a9384..eecaa2fa0f 100644 --- a/resources/quality/ultimaker2_plus/pla_0.25_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/pla_0.25_normal.inst.cfg @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Extra Fine definition = ultimaker2_plus [metadata] -type = quality -material = generic_pla_ultimaker2_plus_0.25_mm -weight = 1 -quality_type = high setting_version = 4 +type = quality +quality_type = high +weight = 1 +material = generic_pla +variant = 0.25 mm [values] cool_min_layer_time = 5 @@ -19,4 +20,3 @@ speed_layer_0 = =round(speed_print * 30 / 30) speed_print = 30 top_bottom_thickness = 0.72 wall_thickness = 0.88 - 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 9f4dfc0b5d..207d237fa3 100644 --- a/resources/quality/ultimaker2_plus/pla_0.4_fast.inst.cfg +++ b/resources/quality/ultimaker2_plus/pla_0.4_fast.inst.cfg @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Normal definition = ultimaker2_plus [metadata] -type = quality -material = generic_pla_ultimaker2_plus_0.4_mm -weight = -1 -quality_type = fast setting_version = 4 +type = quality +quality_type = fast +weight = -1 +material = generic_pla +variant = 0.4 mm [values] cool_min_layer_time = 5 @@ -22,4 +23,3 @@ speed_travel = 150 speed_wall = 50 top_bottom_thickness = 0.75 wall_thickness = 0.7 - 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 7bf51b0211..83ffa99d07 100644 --- a/resources/quality/ultimaker2_plus/pla_0.4_high.inst.cfg +++ b/resources/quality/ultimaker2_plus/pla_0.4_high.inst.cfg @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Extra Fine definition = ultimaker2_plus [metadata] -type = quality -material = generic_pla_ultimaker2_plus_0.4_mm -weight = 1 -quality_type = high setting_version = 4 +type = quality +quality_type = high +weight = 1 +material = generic_pla +variant = 0.4 mm [values] cool_min_layer_time = 5 @@ -20,4 +21,3 @@ speed_print = 50 speed_topbottom = 20 top_bottom_thickness = 0.72 wall_thickness = 1.05 - 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 3c6f40e0bc..683eab7166 100644 --- a/resources/quality/ultimaker2_plus/pla_0.4_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/pla_0.4_normal.inst.cfg @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Fine definition = ultimaker2_plus [metadata] -type = quality -material = generic_pla_ultimaker2_plus_0.4_mm -weight = 0 -quality_type = normal setting_version = 4 +type = quality +quality_type = normal +weight = 0 +material = generic_pla +variant = 0.4 mm [values] cool_min_layer_time = 5 @@ -20,4 +21,3 @@ speed_print = 50 speed_topbottom = 20 top_bottom_thickness = 0.8 wall_thickness = 1.05 - 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 ef79e30b74..80dea5f5fd 100644 --- a/resources/quality/ultimaker2_plus/pla_0.6_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/pla_0.6_normal.inst.cfg @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Fine definition = ultimaker2_plus [metadata] -material = generic_pla_ultimaker2_plus_0.6_mm -type = quality -weight = 0 -quality_type = normal setting_version = 4 +type = quality +quality_type = normal +weight = 0 +material = generic_pla +variant = 0.6 mm [values] cool_min_layer_time = 5 @@ -22,4 +23,3 @@ speed_wall = 40 speed_wall_0 = 25 top_bottom_thickness = 1.2 wall_thickness = 1.59 - 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 42418ea392..5c898c74ec 100644 --- a/resources/quality/ultimaker2_plus/pla_0.8_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/pla_0.8_normal.inst.cfg @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Normal definition = ultimaker2_plus [metadata] -material = generic_pla_ultimaker2_plus_0.8_mm -type = quality -weight = -1 -quality_type = fast setting_version = 4 +type = quality +quality_type = fast +weight = -1 +material = generic_pla +variant = 0.8 mm [values] cool_min_layer_time = 5 @@ -20,4 +21,3 @@ speed_print = 40 speed_wall_0 = 25 top_bottom_thickness = 1.2 wall_thickness = 2.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 50a4076de2..275a4595a0 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Extra Fine definition = ultimaker2_plus [metadata] -type = quality -material = generic_abs_ultimaker2_plus_0.25_mm -weight = 1 -quality_type = high setting_version = 4 +type = quality +quality_type = high +weight = 1 +material = generic_abs +variant = 0.25 mm [values] cool_fan_speed_min = =cool_fan_speed * 0.2 @@ -21,4 +22,3 @@ speed_layer_0 = =round(speed_print * 30 / 30) speed_print = 30 top_bottom_thickness = 0.72 wall_thickness = 0.88 - 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 9d1bcf6ff5..a95417c711 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Normal definition = ultimaker2_plus [metadata] -type = quality -material = generic_abs_ultimaker2_plus_0.4_mm -weight = -1 -quality_type = fast setting_version = 4 +type = quality +quality_type = fast +weight = -1 +material = generic_abs +variant = 0.4 mm [values] cool_fan_speed_min = =cool_fan_speed * 0.2 @@ -24,4 +25,3 @@ speed_travel = 150 speed_wall = 40 top_bottom_thickness = 0.75 wall_thickness = 0.7 - 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 84a5557434..97d35fe6bf 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Extra Fine definition = ultimaker2_plus [metadata] -type = quality -material = generic_abs_ultimaker2_plus_0.4_mm -weight = 1 -quality_type = high setting_version = 4 +type = quality +quality_type = high +weight = 1 +material = generic_abs +variant = 0.4 mm [values] cool_fan_speed_min = =cool_fan_speed * 0.2 @@ -22,4 +23,3 @@ speed_print = 45 speed_wall = 30 top_bottom_thickness = 0.72 wall_thickness = 1.05 - 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 efc749ad8c..162805f5c2 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Fine definition = ultimaker2_plus [metadata] -type = quality -material = generic_abs_ultimaker2_plus_0.4_mm -weight = 0 -quality_type = normal setting_version = 4 +type = quality +quality_type = normal +weight = 0 +material = generic_abs +variant = 0.4 mm [values] cool_fan_speed_min = =cool_fan_speed * 0.2 @@ -22,4 +23,3 @@ speed_print = 45 speed_wall = 30 top_bottom_thickness = 0.8 wall_thickness = 1.05 - 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 eb706c5762..5291356b4e 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Fine definition = ultimaker2_plus [metadata] -type = quality -material = generic_abs_ultimaker2_plus_0.6_mm -weight = 0 -quality_type = normal setting_version = 4 +type = quality +quality_type = normal +weight = 0 +material = generic_abs +variant = 0.6 mm [values] cool_fan_speed_min = =cool_fan_speed * 0.5 @@ -22,4 +23,3 @@ speed_layer_0 = =round(speed_print * 30 / 40) speed_print = 40 top_bottom_thickness = 1.2 wall_thickness = 1.59 - 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 2dba5a9304..01c0b5467b 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Normal definition = ultimaker2_plus [metadata] -type = quality -material = generic_abs_ultimaker2_plus_0.8_mm -weight = -1 -quality_type = fast setting_version = 4 +type = quality +quality_type = fast +weight = -1 +material = generic_abs +variant = 0.8 mm [values] cool_fan_speed_min = =cool_fan_speed * 0.5 @@ -21,4 +22,3 @@ speed_layer_0 = =round(speed_print * 30 / 40) speed_print = 40 top_bottom_thickness = 1.2 wall_thickness = 2.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 8e87e0e7b6..1b656eb4f1 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Extra Fine definition = ultimaker2_plus [metadata] -type = quality -material = generic_cpe_ultimaker2_plus_0.25_mm -weight = -1 -quality_type = high setting_version = 4 +type = quality +quality_type = high +weight = -1 +material = generic_cpe +variant = 0.25 mm [values] cool_fan_speed_min = =cool_fan_speed * 0.2 @@ -21,4 +22,3 @@ speed_layer_0 = =round(speed_print * 30 / 30) speed_print = 30 top_bottom_thickness = 0.72 wall_thickness = 0.88 - 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 e311df00a8..8385800e15 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Normal definition = ultimaker2_plus [metadata] -type = quality -material = generic_cpe_ultimaker2_plus_0.4_mm -weight = -1 -quality_type = fast setting_version = 4 +type = quality +quality_type = fast +weight = -1 +material = generic_cpe +variant = 0.4 mm [values] cool_fan_speed_min = =cool_fan_speed * 0.8 @@ -23,4 +24,3 @@ speed_travel = 150 speed_wall = 40 top_bottom_thickness = 0.75 wall_thickness = 0.7 - 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 685b7798fc..6d810ee231 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Extra Fine definition = ultimaker2_plus [metadata] -type = quality -material = generic_cpe_ultimaker2_plus_0.4_mm -weight = 1 -quality_type = high setting_version = 4 +type = quality +quality_type = high +weight = 1 +material = generic_cpe +variant = 0.4 mm [values] cool_fan_speed_min = =cool_fan_speed * 0.8 @@ -22,4 +23,3 @@ speed_print = 45 speed_wall = 30 top_bottom_thickness = 0.72 wall_thickness = 1.05 - 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 aadb4195f3..1b6ab4edc5 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Fine definition = ultimaker2_plus [metadata] -type = quality -material = generic_cpe_ultimaker2_plus_0.4_mm -weight = 0 -quality_type = normal setting_version = 4 +type = quality +quality_type = normal +weight = 0 +material = generic_cpe +variant = 0.4 mm [values] cool_fan_speed_min = =cool_fan_speed * 0.8 @@ -22,4 +23,3 @@ speed_print = 45 speed_wall = 30 top_bottom_thickness = 0.8 wall_thickness = 1.05 - 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 332033368f..7f79c013b3 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Fine definition = ultimaker2_plus [metadata] -type = quality -material = generic_cpe_ultimaker2_plus_0.6_mm -weight = 0 -quality_type = normal setting_version = 4 +type = quality +quality_type = normal +weight = 0 +material = generic_cpe +variant = 0.6 mm [values] cool_fan_speed_min = =cool_fan_speed * 0.8 @@ -21,4 +22,3 @@ speed_layer_0 = =round(speed_print * 30 / 40) speed_print = 40 top_bottom_thickness = 1.2 wall_thickness = 1.59 - 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 e4fcae8aa1..df92d3e2dd 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Normal definition = ultimaker2_plus [metadata] -type = quality -material = generic_cpe_ultimaker2_plus_0.8_mm -weight = -1 -quality_type = fast setting_version = 4 +type = quality +quality_type = fast +weight = -1 +material = generic_cpe +variant = 0.8 mm [values] cool_fan_speed_min = =cool_fan_speed * 0.8 @@ -21,4 +22,3 @@ speed_layer_0 = =round(speed_print * 30 / 40) speed_print = 40 top_bottom_thickness = 1.2 wall_thickness = 2.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 55af936a89..e83ae78d36 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Fast definition = ultimaker2_plus [metadata] -type = quality -material = generic_cpe_plus_ultimaker2_plus_0.4_mm -weight = -2 -quality_type = draft setting_version = 4 +type = quality +quality_type = draft +weight = -2 +material = generic_cpe_plus +variant = 0.4 mm [values] adhesion_type = raft @@ -40,4 +41,3 @@ support_pattern = lines support_z_distance = 0.26 top_bottom_thickness = 1.5 wall_thickness = 1.14 - 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 eb0ca5e81f..ee0b659b91 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Fine definition = ultimaker2_plus [metadata] -type = quality -material = generic_cpe_plus_ultimaker2_plus_0.4_mm -weight = 0 -quality_type = normal setting_version = 4 +type = quality +quality_type = normal +weight = 0 +material = generic_cpe_plus +variant = 0.4 mm [values] adhesion_type = raft @@ -40,4 +41,3 @@ support_pattern = lines support_z_distance = 0.26 top_bottom_thickness = 1.5 wall_thickness = 1.14 - 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 b324d867bc..0773a81834 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Fast definition = ultimaker2_plus [metadata] -type = quality -material = generic_cpe_plus_ultimaker2_plus_0.6_mm -weight = -2 -quality_type = draft setting_version = 4 +type = quality +quality_type = draft +weight = -2 +material = generic_cpe_plus +variant = 0.6 mm [values] adhesion_type = raft @@ -44,4 +45,3 @@ support_xy_distance = 0.6 support_z_distance = 0.22 top_bottom_thickness = 0.75 wall_thickness = 1.14 - 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 c8c7576d30..4cea2db94e 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Fine definition = ultimaker2_plus [metadata] -type = quality -material = generic_cpe_plus_ultimaker2_plus_0.6_mm -weight = 0 -quality_type = normal setting_version = 4 +type = quality +quality_type = normal +weight = 0 +material = generic_cpe_plus +variant = 0.6 mm [values] adhesion_type = raft @@ -44,4 +45,3 @@ support_xy_distance = 0.6 support_z_distance = 0.22 top_bottom_thickness = 0.75 wall_thickness = 1.14 - 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 28353f729d..27c3052885 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Fast definition = ultimaker2_plus [metadata] -type = quality -material = generic_cpe_plus_ultimaker2_plus_0.8_mm -weight = -2 -quality_type = draft setting_version = 4 +type = quality +quality_type = draft +weight = -2 +material = generic_cpe_plus +variant = 0.8 mm [values] adhesion_type = raft @@ -39,4 +40,3 @@ support_pattern = lines support_z_distance = 0.26 top_bottom_thickness = 1.2 wall_thickness = 2.1 - 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 f74db21b91..26d44f332b 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Fine definition = ultimaker2_plus [metadata] -type = quality -material = generic_cpe_plus_ultimaker2_plus_0.8_mm -weight = 0 -quality_type = normal setting_version = 4 +type = quality +quality_type = normal +weight = 0 +material = generic_cpe_plus +variant = 0.8 mm [values] adhesion_type = raft @@ -39,4 +40,3 @@ support_pattern = lines support_z_distance = 0.26 top_bottom_thickness = 1.2 wall_thickness = 2.1 - 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 b8924423e2..d2c9c9d8d3 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Extra Fine definition = ultimaker2_plus [metadata] -type = quality -material = generic_nylon_ultimaker2_plus_0.25_mm -weight = 1 -quality_type = high setting_version = 4 +type = quality +quality_type = high +weight = 1 +material = generic_nylon +variant = 0.25 mm [values] adhesion_type = raft @@ -41,4 +42,3 @@ support_xy_distance = 0.6 support_z_distance = =layer_height * 2 top_bottom_thickness = 1.2 wall_thickness = 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 323fa51a8d..115e4dd0d3 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Fine definition = ultimaker2_plus [metadata] -type = quality -material = generic_nylon_ultimaker2_plus_0.25_mm -weight = 0 -quality_type = normal setting_version = 4 +type = quality +quality_type = normal +weight = 0 +material = generic_nylon +variant = 0.25 mm [values] adhesion_type = raft @@ -41,4 +42,3 @@ support_xy_distance = 0.6 support_z_distance = =layer_height * 2 top_bottom_thickness = 1.2 wall_thickness = 1 - 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 7628cd0be1..917715ef33 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Normal definition = ultimaker2_plus [metadata] -type = quality -material = generic_nylon_ultimaker2_plus_0.4_mm -weight = -1 -quality_type = fast setting_version = 4 +type = quality +quality_type = fast +weight = -1 +material = generic_nylon +variant = 0.4 mm [values] adhesion_type = raft @@ -40,4 +41,3 @@ support_xy_distance = 0.6 support_z_distance = =layer_height * 2 top_bottom_thickness = 0.75 wall_thickness = 1.06 - 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 a97a4c4e8f..125930991a 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Fine definition = ultimaker2_plus [metadata] -type = quality -material = generic_nylon_ultimaker2_plus_0.4_mm -weight = 0 -quality_type = normal setting_version = 4 +type = quality +quality_type = normal +weight = 0 +material = generic_nylon +variant = 0.4 mm [values] adhesion_type = raft @@ -39,4 +40,3 @@ support_xy_distance = 0.6 support_z_distance = =layer_height * 2 top_bottom_thickness = 0.75 wall_thickness = 1.06 - 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 0cd7bbdbfd..3602182288 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Normal definition = ultimaker2_plus [metadata] -type = quality -material = generic_nylon_ultimaker2_plus_0.6_mm -weight = -1 -quality_type = fast setting_version = 4 +type = quality +quality_type = fast +weight = -1 +material = generic_nylon +variant = 0.6 mm [values] adhesion_type = raft @@ -45,4 +46,3 @@ support_xy_distance = 0.7 support_z_distance = =layer_height * 2 top_bottom_thickness = 1.2 wall_thickness = 1.2 - 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 d5e0025913..c41a8b3612 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Fine definition = ultimaker2_plus [metadata] -type = quality -material = generic_nylon_ultimaker2_plus_0.6_mm -weight = 0 -quality_type = normal setting_version = 4 +type = quality +quality_type = normal +weight = 0 +material = generic_nylon +variant = 0.6 mm [values] adhesion_type = raft @@ -43,4 +44,3 @@ support_xy_distance = 0.7 support_z_distance = =layer_height * 2 top_bottom_thickness = 1.2 wall_thickness = 1.2 - diff --git a/resources/quality/ultimaker2_plus/um2p_nylon_0.8_draft.inst.cfg b/resources/quality/ultimaker2_plus/um2p_nylon_0.8_draft.inst.cfg index f653a90f95..6e68d79f34 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Fast definition = ultimaker2_plus [metadata] -type = quality -material = generic_nylon_ultimaker2_plus_0.8_mm -weight = -2 -quality_type = draft setting_version = 4 +type = quality +quality_type = draft +weight = -2 +material = generic_nylon +variant = 0.8 mm [values] adhesion_type = raft @@ -44,4 +45,3 @@ support_xy_distance = 0.75 support_z_distance = =layer_height * 2 top_bottom_thickness = 1.2 wall_thickness = 2.4 - 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 144c8e74ac..e01006cf58 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Fine definition = ultimaker2_plus [metadata] -type = quality -material = generic_nylon_ultimaker2_plus_0.8_mm -weight = 0 -quality_type = normal setting_version = 4 +type = quality +quality_type = normal +weight = 0 +material = generic_nylon +variant = 0.8 mm [values] adhesion_type = raft @@ -44,4 +45,3 @@ support_xy_distance = 0.75 support_z_distance = =layer_height * 2 top_bottom_thickness = 1.2 wall_thickness = 2.4 - 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 d38f2af4d3..91bc5e523a 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Extra Fine definition = ultimaker2_plus [metadata] -type = quality -material = generic_pc_ultimaker2_plus_0.25_mm -weight = 1 -quality_type = high setting_version = 4 +type = quality +quality_type = high +weight = 1 +material = generic_pc +variant = 0.25 mm [values] adhesion_type = raft @@ -35,4 +36,3 @@ support_infill_rate = 20 support_pattern = lines support_z_distance = 0.19 wall_thickness = 0.88 - diff --git a/resources/quality/ultimaker2_plus/um2p_pc_0.25_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pc_0.25_normal.inst.cfg index aa176f67a2..5407edf56d 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Fine definition = ultimaker2_plus [metadata] -type = quality -material = generic_pc_ultimaker2_plus_0.25_mm -weight = 0 -quality_type = normal setting_version = 4 +type = quality +quality_type = normal +weight = 0 +material = generic_pc +variant = 0.25 mm [values] adhesion_type = raft @@ -35,4 +36,3 @@ support_infill_rate = 20 support_pattern = lines support_z_distance = 0.19 wall_thickness = 0.88 - diff --git a/resources/quality/ultimaker2_plus/um2p_pc_0.4_fast.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pc_0.4_fast.inst.cfg index 0408ead05e..5e0cef44cc 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Normal definition = ultimaker2_plus [metadata] -type = quality -material = generic_pc_ultimaker2_plus_0.4_mm -weight = -1 -quality_type = fast setting_version = 4 +type = quality +quality_type = fast +weight = -1 +material = generic_pc +variant = 0.4 mm [values] adhesion_type = raft @@ -36,4 +37,3 @@ support_infill_rate = 20 support_pattern = lines support_z_distance = 0.19 wall_thickness = 1.2 - diff --git a/resources/quality/ultimaker2_plus/um2p_pc_0.4_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pc_0.4_normal.inst.cfg index ed430f10c0..9e400a46e7 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Fine definition = ultimaker2_plus [metadata] -type = quality -material = generic_pc_ultimaker2_plus_0.4_mm -weight = 0 -quality_type = normal setting_version = 4 +type = quality +quality_type = normal +weight = 0 +material = generic_pc +variant = 0.4 mm [values] adhesion_type = raft @@ -36,4 +37,3 @@ support_infill_rate = 20 support_pattern = lines support_z_distance = 0.19 wall_thickness = 1.2 - diff --git a/resources/quality/ultimaker2_plus/um2p_pc_0.6_fast.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pc_0.6_fast.inst.cfg index b6c3a66c0b..1741eb47e9 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Normal definition = ultimaker2_plus [metadata] -type = quality -material = generic_pc_ultimaker2_plus_0.6_mm -weight = -1 -quality_type = fast setting_version = 4 +type = quality +quality_type = fast +weight = -1 +material = generic_pc +variant = 0.6 mm [values] adhesion_type = raft @@ -42,4 +43,3 @@ support_pattern = lines support_z_distance = 0.21 top_bottom_thickness = 0.75 wall_thickness = 1.06 - 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 0dfb533f56..17df729157 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Fine definition = ultimaker2_plus [metadata] -type = quality -material = generic_pc_ultimaker2_plus_0.6_mm -weight = 0 -quality_type = normal setting_version = 4 +type = quality +quality_type = normal +weight = 0 +material = generic_pc +variant = 0.6 mm [values] adhesion_type = raft @@ -42,4 +43,3 @@ support_pattern = lines support_z_distance = 0.21 top_bottom_thickness = 0.75 wall_thickness = 1.06 - 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 3eee23006f..87bad0bd64 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Fast definition = ultimaker2_plus [metadata] -type = quality -material = generic_pc_ultimaker2_plus_0.8_mm -weight = -2 -quality_type = draft setting_version = 4 +type = quality +quality_type = draft +weight = -2 +material = generic_pc +variant = 0.8 mm [values] adhesion_type = raft @@ -36,4 +37,3 @@ support_pattern = lines support_z_distance = 0.26 top_bottom_thickness = 2.0 wall_thickness = 2.1 - 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 40da82e6bf..e1f208b2f1 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Fine definition = ultimaker2_plus [metadata] -type = quality -material = generic_pc_ultimaker2_plus_0.8_mm -weight = 0 -quality_type = normal setting_version = 4 +type = quality +quality_type = normal +weight = 0 +material = generic_pc +variant = 0.8 mm [values] adhesion_type = raft @@ -36,4 +37,3 @@ support_pattern = lines support_z_distance = 0.26 top_bottom_thickness = 1.2 wall_thickness = 2.1 - 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 6f4e366209..cbb4f2f881 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Normal definition = ultimaker2_plus [metadata] -type = quality -material = generic_pp_ultimaker2_plus_0.4_mm -weight = -1 -quality_type = fast setting_version = 4 +type = quality +quality_type = fast +weight = -1 +material = generic_pp +variant = 0.4 mm [values] acceleration_enabled = True @@ -68,4 +69,3 @@ travel_avoid_distance = 3 wall_0_inset = 0 wall_line_width_x = =round(line_width * 0.38 / 0.38, 2) wall_thickness = 0.76 - 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 c7224f475f..ee38faa33a 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Fine definition = ultimaker2_plus [metadata] -type = quality -material = generic_pp_ultimaker2_plus_0.4_mm -weight = 0 -quality_type = normal setting_version = 4 +type = quality +quality_type = normal +weight = 0 +material = generic_pp +variant = 0.4 mm [values] acceleration_enabled = True @@ -67,4 +68,3 @@ travel_avoid_distance = 3 wall_0_inset = 0 wall_line_width_x = =round(line_width * 0.38 / 0.38, 2) wall_thickness = 0.76 - 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 203db9883e..9fe8c72397 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Fast definition = ultimaker2_plus [metadata] -type = quality -material = generic_pp_ultimaker2_plus_0.6_mm -weight = -2 -quality_type = draft setting_version = 4 +type = quality +quality_type = draft +weight = -2 +material = generic_pp +variant = 0.6 mm [values] acceleration_enabled = True @@ -46,7 +47,6 @@ retraction_extrusion_window = 1 retraction_hop = 0.15 retraction_hop_enabled = True retraction_hop_only_when_collides = True -retraction_min_travel = 0.5 retraction_prime_speed = 15 skin_overlap = 10 skirt_brim_line_width = 0.6 @@ -70,4 +70,3 @@ travel_avoid_distance = 3 wall_0_inset = 0 wall_line_width_x = =round(line_width * 0.57 / 0.57, 2) wall_thickness = 1.14 - 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 64dfbc9281..ba9052818c 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Normal definition = ultimaker2_plus [metadata] -type = quality -material = generic_pp_ultimaker2_plus_0.6_mm -weight = -1 -quality_type = fast setting_version = 4 +type = quality +quality_type = fast +weight = -1 +material = generic_pp +variant = 0.6 mm [values] acceleration_enabled = True @@ -46,7 +47,6 @@ retraction_extrusion_window = 1 retraction_hop = 0.15 retraction_hop_enabled = True retraction_hop_only_when_collides = True -retraction_min_travel = 0.5 retraction_prime_speed = 15 skin_overlap = 10 skirt_brim_line_width = 0.6 @@ -70,4 +70,3 @@ travel_avoid_distance = 3 wall_0_inset = 0 wall_line_width_x = =round(line_width * 0.57 / 0.57, 2) wall_thickness = 1.14 - 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 f6d56242dd..2a6b4d1de8 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Fast definition = ultimaker2_plus [metadata] -type = quality -material = generic_pp_ultimaker2_plus_0.8_mm -weight = -2 -quality_type = fast setting_version = 4 +type = quality +quality_type = fast +weight = -2 +material = generic_pp +variant = 0.8 mm [values] acceleration_enabled = True @@ -46,7 +47,6 @@ retraction_extrusion_window = 1 retraction_hop = 0.15 retraction_hop_enabled = True retraction_hop_only_when_collides = True -retraction_min_travel = 0.5 retraction_prime_speed = 15 skin_overlap = 10 skirt_brim_line_width = 0.8 @@ -70,4 +70,3 @@ travel_avoid_distance = 3 wall_0_inset = 0 wall_line_width_x = =round(line_width * 0.76 / 0.76, 2) wall_thickness = 1.52 - 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 ecb3e3da4a..92f605f557 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Extra Fast definition = ultimaker2_plus [metadata] -type = quality -material = generic_pp_ultimaker2_plus_0.8_mm -weight = -3 -quality_type = draft setting_version = 4 +type = quality +quality_type = draft +weight = -3 +material = generic_pp +variant = 0.8 mm [values] acceleration_enabled = True @@ -46,7 +47,6 @@ retraction_extrusion_window = 1 retraction_hop = 0.15 retraction_hop_enabled = True retraction_hop_only_when_collides = True -retraction_min_travel = 0.5 retraction_prime_speed = 15 skin_overlap = 10 skirt_brim_line_width = 0.8 @@ -70,4 +70,3 @@ travel_avoid_distance = 3 wall_0_inset = 0 wall_line_width_x = =round(line_width * 0.76 / 0.76, 2) wall_thickness = 1.52 - 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 b1cb56a543..b6fe1515c0 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Extra Fine definition = ultimaker2_plus [metadata] -type = quality -material = generic_tpu_ultimaker2_plus_0.25_mm -weight = 1 -quality_type = high setting_version = 4 +type = quality +quality_type = high +weight = 1 +material = generic_tpu +variant = 0.25 mm [values] adhesion_type = brim @@ -40,4 +41,3 @@ support_xy_distance = 0.6 support_z_distance = =layer_height * 2 top_bottom_thickness = 1.2 wall_thickness = 0.88 - 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 80cc92fe64..27e09bdf10 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Fine definition = ultimaker2_plus [metadata] -type = quality -material = generic_tpu_ultimaker2_plus_0.4_mm -weight = 0 -quality_type = normal setting_version = 4 +type = quality +quality_type = normal +weight = 0 +material = generic_tpu +variant = 0.4 mm [values] adhesion_type = brim @@ -37,4 +38,3 @@ support_xy_distance = 0.65 support_z_distance = =layer_height * 2 top_bottom_thickness = 1.2 wall_thickness = 1.05 - 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 9796adada9..6d0b1ef8de 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Normal definition = ultimaker2_plus [metadata] -type = quality -material = generic_tpu_ultimaker2_plus_0.6_mm -weight = -1 -quality_type = fast setting_version = 4 +type = quality +quality_type = fast +weight = -1 +material = generic_tpu +variant = 0.6 mm [values] adhesion_type = brim @@ -42,4 +43,3 @@ support_xy_distance = 0.7 support_z_distance = =layer_height * 2 top_bottom_thickness = 1.2 wall_thickness = 1.14 - 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 fc7d4d12d2..c79c831984 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Fine definition = ultimaker3 [metadata] +setting_version = 4 type = quality quality_type = normal -material = generic_abs_ultimaker3_AA_0.25 weight = 0 -setting_version = 4 +material = generic_abs +variant = AA 0.25 [values] cool_fan_speed = 40 @@ -20,4 +21,3 @@ prime_tower_wall_thickness = 0.9 retraction_prime_speed = 25 speed_topbottom = =math.ceil(speed_print * 30 / 55) wall_thickness = 0.92 - 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 83e0c549c4..83e77eb117 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Fine definition = ultimaker3 [metadata] +setting_version = 4 type = quality quality_type = normal -material = generic_cpe_ultimaker3_AA_0.25 weight = 0 -setting_version = 4 +material = generic_cpe +variant = AA 0.25 [values] prime_tower_size = 12 @@ -18,4 +19,3 @@ speed_infill = 40 speed_topbottom = =math.ceil(speed_print * 30 / 55) top_bottom_thickness = 0.8 wall_thickness = 0.92 - 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 58ddc32101..c3ead92b51 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Fine definition = ultimaker3 [metadata] +setting_version = 4 type = quality quality_type = normal -material = generic_nylon_ultimaker3_AA_0.25 weight = 0 -setting_version = 4 +material = generic_nylon +variant = AA 0.25 [values] cool_min_layer_time_fan_speed_max = 20 @@ -32,4 +33,3 @@ 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/ultimaker3/um3_aa0.25_PC_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.25_PC_Normal_Quality.inst.cfg index 7c9fa32949..bd95837fee 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Fine - Experimental definition = ultimaker3 [metadata] +setting_version = 4 type = quality quality_type = normal -material = generic_pc_ultimaker3_AA_0.25 weight = 0 -setting_version = 4 +material = generic_pc +variant = AA 0.25 [values] acceleration_enabled = True @@ -33,7 +34,6 @@ raft_airgap = 0.25 raft_interface_thickness = =max(layer_height * 1.5, 0.225) retraction_count_max = 80 retraction_hop = 2 -retraction_hop_enabled = True retraction_hop_only_when_collides = True retraction_min_travel = 0.8 retraction_prime_speed = 15 @@ -53,4 +53,3 @@ switch_extruder_retraction_speeds = 35 wall_0_inset = 0 wall_line_width_x = =line_width wall_thickness = 1.2 - 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 1bee4b8f18..7f6fb9fa4d 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Fine definition = ultimaker3 [metadata] +setting_version = 4 type = quality quality_type = normal -material = generic_pla_ultimaker3_AA_0.25 weight = 0 -setting_version = 4 +material = generic_pla +variant = AA 0.25 [values] brim_width = 8 @@ -33,4 +34,3 @@ 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/ultimaker3/um3_aa0.25_PP_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.25_PP_Normal_Quality.inst.cfg index 58e7fdc688..6bdd94f58f 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Fine - Experimental definition = ultimaker3 [metadata] +setting_version = 4 type = quality quality_type = normal -material = generic_pp_ultimaker3_AA_0.25 weight = 0 -setting_version = 4 +material = generic_pp +variant = AA 0.25 [values] acceleration_enabled = True @@ -33,11 +34,10 @@ multiple_mesh_overlap = 0 prime_tower_enable = False prime_tower_size = 16 prime_tower_wipe_enabled = True -retraction_count_max = 6 +retraction_count_max = 45 retraction_extra_prime_amount = 0.2 retraction_extrusion_window = 6.5 retraction_hop = 2 -retraction_hop_enabled = True retraction_hop_only_when_collides = True retraction_min_travel = 0.8 retraction_prime_speed = 13 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 13dca72c27..4b05943b64 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Fast definition = ultimaker3 [metadata] +setting_version = 4 type = quality quality_type = draft -material = generic_abs_ultimaker3_AA_0.4 weight = -2 -setting_version = 4 +material = generic_abs +variant = AA 0.4 [values] machine_nozzle_cool_down_speed = 0.85 @@ -24,4 +25,3 @@ speed_topbottom = =math.ceil(speed_print * 35 / 60) speed_wall = =math.ceil(speed_print * 45 / 60) speed_wall_0 = =math.ceil(speed_wall * 35 / 45) wall_thickness = 1 - 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 10fa10c726..3b441942ac 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Normal definition = ultimaker3 [metadata] +setting_version = 4 type = quality quality_type = fast -material = generic_abs_ultimaker3_AA_0.4 weight = -1 -setting_version = 4 +material = generic_abs +variant = AA 0.4 [values] cool_min_speed = 7 @@ -24,4 +25,3 @@ speed_layer_0 = 20 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) - 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 02f2327468..79cdb4069d 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Extra Fine definition = ultimaker3 [metadata] +setting_version = 4 type = quality quality_type = high -material = generic_abs_ultimaker3_AA_0.4 weight = 1 -setting_version = 4 +material = generic_abs +variant = AA 0.4 [values] cool_min_speed = 12 @@ -23,4 +24,3 @@ speed_print = 50 speed_layer_0 = 20 speed_topbottom = =math.ceil(speed_print * 30 / 50) speed_wall = =math.ceil(speed_print * 30 / 50) - 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 fccb6a35f5..412bc4c5a8 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Fine definition = ultimaker3 [metadata] +setting_version = 4 type = quality quality_type = normal -material = generic_abs_ultimaker3_AA_0.4 weight = 0 -setting_version = 4 +material = generic_abs +variant = AA 0.4 [values] machine_nozzle_cool_down_speed = 0.85 @@ -21,4 +22,3 @@ speed_print = 55 speed_layer_0 = 20 speed_topbottom = =math.ceil(speed_print * 30 / 55) speed_wall = =math.ceil(speed_print * 30 / 55) - 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 f3c6ae8387..e4ef572efb 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Fast definition = ultimaker3 [metadata] +setting_version = 4 type = quality quality_type = draft -material = generic_bam_ultimaker3_AA_0.4 weight = -2 -setting_version = 4 +material = generic_bam +variant = AA 0.4 [values] cool_fan_full_at_height = =layer_height_0 + 2 * layer_height 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 e027477595..c896c74233 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Normal definition = ultimaker3 [metadata] +setting_version = 4 type = quality quality_type = fast -material = generic_bam_ultimaker3_AA_0.4 weight = -1 -setting_version = 4 +material = generic_bam +variant = AA 0.4 [values] cool_fan_full_at_height = =layer_height_0 + 2 * layer_height 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 3ced3a0417..9fdcfb4cf3 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Fine definition = ultimaker3 [metadata] +setting_version = 4 type = quality quality_type = normal -material = generic_bam_ultimaker3_AA_0.4 weight = 0 -setting_version = 4 +material = generic_bam +variant = AA 0.4 [values] cool_fan_full_at_height = =layer_height_0 + 2 * layer_height 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 dfdb1ca8a7..14263ee800 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Fast definition = ultimaker3 [metadata] +setting_version = 4 type = quality quality_type = draft -material = generic_cpe_plus_ultimaker3_AA_0.4 weight = -2 -setting_version = 4 +material = generic_cpe_plus +variant = AA 0.4 [values] acceleration_enabled = True 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 93b371a627..05d8988c36 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Normal definition = ultimaker3 [metadata] +setting_version = 4 type = quality quality_type = fast -material = generic_cpe_plus_ultimaker3_AA_0.4 weight = -1 -setting_version = 4 +material = generic_cpe_plus +variant = AA 0.4 [values] acceleration_enabled = True 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 93647f9f44..6a6fa94730 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Extra Fine definition = ultimaker3 [metadata] +setting_version = 4 type = quality quality_type = high -material = generic_cpe_plus_ultimaker3_AA_0.4 weight = 1 -setting_version = 4 +material = generic_cpe_plus +variant = AA 0.4 [values] acceleration_enabled = True 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 2886ef2229..402e23436a 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Fine definition = ultimaker3 [metadata] +setting_version = 4 type = quality quality_type = normal -material = generic_cpe_plus_ultimaker3_AA_0.4 weight = 0 -setting_version = 4 +material = generic_cpe_plus +variant = AA 0.4 [values] acceleration_enabled = True 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 5e3daf5a9e..9a85ab9b3e 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Fast definition = ultimaker3 [metadata] +setting_version = 4 type = quality quality_type = draft -material = generic_cpe_ultimaker3_AA_0.4 weight = -2 -setting_version = 4 +material = generic_cpe +variant = AA 0.4 [values] material_print_temperature = =default_material_print_temperature + 10 @@ -22,4 +23,3 @@ speed_topbottom = =math.ceil(speed_print * 35 / 60) speed_wall = =math.ceil(speed_print * 45 / 60) speed_wall_0 = =math.ceil(speed_wall * 35 / 45) wall_thickness = 1 - 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 e48f83994d..7099062daf 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Normal definition = ultimaker3 [metadata] +setting_version = 4 type = quality quality_type = fast -material = generic_cpe_ultimaker3_AA_0.4 weight = -1 -setting_version = 4 +material = generic_cpe +variant = AA 0.4 [values] cool_min_speed = 7 @@ -21,4 +22,3 @@ speed_layer_0 = 20 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) - 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 fd0a8cd18d..00adfcc2d7 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Extra Fine definition = ultimaker3 [metadata] +setting_version = 4 type = quality quality_type = high -material = generic_cpe_ultimaker3_AA_0.4 weight = 1 -setting_version = 4 +material = generic_cpe +variant = AA 0.4 [values] cool_min_speed = 12 @@ -22,4 +23,3 @@ speed_print = 50 speed_layer_0 = 20 speed_topbottom = =math.ceil(speed_print * 30 / 50) speed_wall = =math.ceil(speed_print * 30 / 50) - 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 56c997eb15..590eddf43b 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Fine definition = ultimaker3 [metadata] +setting_version = 4 type = quality quality_type = normal -material = generic_cpe_ultimaker3_AA_0.4 weight = 0 -setting_version = 4 +material = generic_cpe +variant = AA 0.4 [values] machine_nozzle_cool_down_speed = 0.85 @@ -20,4 +21,3 @@ speed_print = 55 speed_layer_0 = 20 speed_topbottom = =math.ceil(speed_print * 30 / 55) speed_wall = =math.ceil(speed_print * 30 / 55) - 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 15283a3242..8ade8d4fe4 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Fast definition = ultimaker3 [metadata] +setting_version = 4 type = quality quality_type = draft -material = generic_nylon_ultimaker3_AA_0.4 weight = -2 -setting_version = 4 +material = generic_nylon +variant = AA 0.4 [values] adhesion_type = brim @@ -33,4 +34,3 @@ 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/ultimaker3/um3_aa0.4_Nylon_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_Nylon_Fast_Print.inst.cfg index c063725e82..2fef1fb2a2 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Normal definition = ultimaker3 [metadata] +setting_version = 4 type = quality quality_type = fast -material = generic_nylon_ultimaker3_AA_0.4 weight = -1 -setting_version = 4 +material = generic_nylon +variant = AA 0.4 [values] adhesion_type = brim @@ -33,4 +34,3 @@ 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/ultimaker3/um3_aa0.4_Nylon_High_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_Nylon_High_Quality.inst.cfg index 218e1e50e1..9a320ecde3 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Extra Fine definition = ultimaker3 [metadata] +setting_version = 4 type = quality quality_type = high -material = generic_nylon_ultimaker3_AA_0.4 weight = 1 -setting_version = 4 +material = generic_nylon +variant = AA 0.4 [values] adhesion_type = brim @@ -32,4 +33,3 @@ 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/ultimaker3/um3_aa0.4_Nylon_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_Nylon_Normal_Quality.inst.cfg index 3b96939ac9..34efb4df95 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Fine definition = ultimaker3 [metadata] +setting_version = 4 type = quality quality_type = normal -material = generic_nylon_ultimaker3_AA_0.4 weight = 0 -setting_version = 4 +material = generic_nylon +variant = AA 0.4 [values] adhesion_type = brim @@ -32,4 +33,3 @@ 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/ultimaker3/um3_aa0.4_PC_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PC_Draft_Print.inst.cfg index f8b4dd067c..79ae457587 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Fast definition = ultimaker3 [metadata] +setting_version = 4 type = quality quality_type = draft -material = generic_pc_ultimaker3_AA_0.4 weight = -2 -setting_version = 4 +material = generic_pc +variant = AA 0.4 [values] acceleration_enabled = True @@ -43,7 +44,6 @@ raft_interface_thickness = =max(layer_height * 1.5, 0.225) retraction_count_max = 80 retraction_extrusion_window = 1 retraction_hop = 2 -retraction_hop_enabled = True retraction_hop_only_when_collides = True retraction_min_travel = 0.8 retraction_prime_speed = 15 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 1db3935180..2e07e65bbe 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Normal definition = ultimaker3 [metadata] +setting_version = 4 type = quality quality_type = fast -material = generic_pc_ultimaker3_AA_0.4 weight = -1 -setting_version = 4 +material = generic_pc +variant = AA 0.4 [values] acceleration_enabled = True @@ -42,7 +43,6 @@ raft_interface_thickness = =max(layer_height * 1.5, 0.225) retraction_count_max = 80 retraction_extrusion_window = 1 retraction_hop = 2 -retraction_hop_enabled = True retraction_hop_only_when_collides = True retraction_min_travel = 0.8 retraction_prime_speed = 15 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 0f9e9b15b0..2b1b1f850b 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Extra Fine definition = ultimaker3 [metadata] +setting_version = 4 type = quality quality_type = high -material = generic_pc_ultimaker3_AA_0.4 weight = 1 -setting_version = 4 +material = generic_pc +variant = AA 0.4 [values] acceleration_enabled = True @@ -43,7 +44,6 @@ raft_interface_thickness = =max(layer_height * 1.5, 0.225) retraction_count_max = 80 retraction_extrusion_window = 1 retraction_hop = 2 -retraction_hop_enabled = True retraction_hop_only_when_collides = True retraction_min_travel = 0.8 retraction_prime_speed = 15 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 26a3136069..437ef43878 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Fine definition = ultimaker3 [metadata] +setting_version = 4 type = quality quality_type = normal -material = generic_pc_ultimaker3_AA_0.4 weight = 0 -setting_version = 4 +material = generic_pc +variant = AA 0.4 [values] acceleration_enabled = True @@ -40,7 +41,6 @@ raft_interface_thickness = =max(layer_height * 1.5, 0.225) retraction_count_max = 80 retraction_extrusion_window = 1 retraction_hop = 2 -retraction_hop_enabled = True retraction_hop_only_when_collides = True retraction_min_travel = 0.8 retraction_prime_speed = 15 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 8c6e7bd782..3805d7a396 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 @@ -1,18 +1,20 @@ [general] -version = 2 +version = 3 name = Fast definition = ultimaker3 [metadata] +setting_version = 4 type = quality quality_type = draft -material = generic_pla_ultimaker3_AA_0.4 weight = -2 -setting_version = 4 +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 +infill_line_width = =round(line_width * 0.42 / 0.35, 2) machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature + 5 @@ -20,9 +22,8 @@ material_standby_temperature = 100 prime_tower_enable = False skin_overlap = 20 speed_layer_0 = 20 -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) +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 = 1 wall_thickness = 1 - 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 db441015a8..3a8c6df621 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 @@ -1,18 +1,20 @@ [general] -version = 2 +version = 3 name = Normal definition = ultimaker3 [metadata] +setting_version = 4 type = quality quality_type = fast -material = generic_pla_ultimaker3_AA_0.4 weight = -1 -setting_version = 4 +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 +infill_line_width = =round(line_width * 0.42 / 0.35, 2) machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_standby_temperature = 100 @@ -24,4 +26,3 @@ speed_wall = =math.ceil(speed_print * 40 / 80) speed_wall_0 = =math.ceil(speed_wall * 30 / 40) top_bottom_thickness = 1 wall_thickness = 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 61807490e9..543391fd6b 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 @@ -1,19 +1,21 @@ [general] -version = 2 +version = 3 name = Extra Fine definition = ultimaker3 [metadata] +setting_version = 4 type = quality quality_type = high -material = generic_pla_ultimaker3_AA_0.4 weight = 1 -setting_version = 4 +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 +infill_line_width = =round(line_width * 0.42 / 0.35, 2) machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_print_temperature = =default_material_print_temperature - 5 @@ -26,4 +28,3 @@ speed_topbottom = =math.ceil(speed_print * 30 / 60) speed_wall = =math.ceil(speed_print * 30 / 60) top_bottom_thickness = 1 wall_thickness = 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 d7254b854d..c3c2a8d624 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 @@ -1,19 +1,21 @@ [general] -version = 2 +version = 3 name = Fine definition = ultimaker3 [metadata] +setting_version = 4 type = quality quality_type = normal -material = generic_pla_ultimaker3_AA_0.4 weight = 0 -setting_version = 4 +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 +infill_line_width = =round(line_width * 0.42 / 0.35, 2) machine_nozzle_cool_down_speed = 0.75 machine_nozzle_heat_up_speed = 1.6 material_standby_temperature = 100 @@ -22,4 +24,3 @@ skin_overlap = 10 speed_layer_0 = 20 top_bottom_thickness = 1 wall_thickness = 1 - 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 3fe25e563a..1db33d9073 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Fast definition = ultimaker3 [metadata] +setting_version = 4 type = quality quality_type = draft -material = generic_pp_ultimaker3_AA_0.4 weight = -2 -setting_version = 4 +material = generic_pp +variant = AA 0.4 [values] acceleration_enabled = True @@ -44,7 +45,6 @@ retraction_count_max = 12 retraction_extra_prime_amount = 0.8 retraction_extrusion_window = 1 retraction_hop = 2 -retraction_hop_enabled = True retraction_hop_only_when_collides = True retraction_min_travel = 0.8 retraction_prime_speed = 18 @@ -60,7 +60,6 @@ support_angle = 50 switch_extruder_prime_speed = 15 switch_extruder_retraction_amount = 20 switch_extruder_retraction_speeds = 35 -travel_avoid_distance = 3 wall_0_inset = 0 wall_line_width_x = =line_width -wall_thickness = =line_width * 3 \ No newline at end of file +wall_thickness = =line_width * 3 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 4c92c7a14b..fe7da92bbe 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Normal definition = ultimaker3 [metadata] +setting_version = 4 type = quality quality_type = fast -material = generic_pp_ultimaker3_AA_0.4 weight = -1 -setting_version = 4 +material = generic_pp +variant = AA 0.4 [values] acceleration_enabled = True @@ -43,7 +44,6 @@ retraction_count_max = 12 retraction_extra_prime_amount = 0.8 retraction_extrusion_window = 1 retraction_hop = 2 -retraction_hop_enabled = True retraction_hop_only_when_collides = True retraction_min_travel = 0.8 retraction_prime_speed = 18 @@ -60,7 +60,6 @@ switch_extruder_prime_speed = 15 switch_extruder_retraction_amount = 20 switch_extruder_retraction_speeds = 35 top_bottom_thickness = 1.1 -travel_avoid_distance = 3 wall_0_inset = 0 wall_line_width_x = =line_width -wall_thickness = =line_width * 3 \ No newline at end of file +wall_thickness = =line_width * 3 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 db55956497..8bbb0118b5 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Fine definition = ultimaker3 [metadata] +setting_version = 4 type = quality quality_type = normal -material = generic_pp_ultimaker3_AA_0.4 weight = 0 -setting_version = 4 +material = generic_pp +variant = AA 0.4 [values] acceleration_enabled = True @@ -42,7 +43,6 @@ retraction_count_max = 12 retraction_extra_prime_amount = 0.8 retraction_extrusion_window = 1 retraction_hop = 2 -retraction_hop_enabled = True retraction_hop_only_when_collides = True retraction_min_travel = 0.8 retraction_prime_speed = 18 @@ -59,7 +59,6 @@ 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 \ No newline at end of file +wall_thickness = =line_width * 3 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 6116dc1bda..25e7c2c0ab 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Fast definition = ultimaker3 [metadata] +setting_version = 4 type = quality quality_type = draft -material = generic_tpu_ultimaker3_AA_0.4 weight = -2 -setting_version = 4 +material = generic_tpu +variant = AA 0.4 [values] acceleration_enabled = True @@ -18,11 +19,10 @@ cool_fan_speed_max = 100 cool_min_layer_time_fan_speed_max = 6 cool_min_speed = 4 gradual_infill_step_height = =5 * layer_height -gradual_infill_steps = 4 infill_line_width = =round(line_width * 0.38 / 0.38, 2) infill_overlap = 0 -infill_pattern = tetrahedral -infill_sparse_density = 96 +infill_pattern = cross_3d +infill_sparse_density = 10 infill_wipe_dist = 0.1 jerk_enabled = True jerk_print = 25 @@ -43,9 +43,8 @@ retraction_count_max = 12 retraction_extra_prime_amount = 0.8 retraction_extrusion_window = 1 retraction_hop = 1.5 -retraction_hop_enabled = True retraction_hop_only_when_collides = True -retraction_min_travel = 0.8 +retraction_min_travel = =line_width * 2 retraction_prime_speed = 15 skin_overlap = 5 speed_equalize_flow_enabled = True @@ -63,4 +62,4 @@ top_bottom_thickness = 0.7 travel_avoid_distance = 1.5 wall_0_inset = 0 wall_line_width_x = =line_width -wall_thickness = 0.76 \ No newline at end of file +wall_thickness = 0.76 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 1da5d0fec8..0b7fa6501e 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Normal definition = ultimaker3 [metadata] +setting_version = 4 type = quality quality_type = fast -material = generic_tpu_ultimaker3_AA_0.4 weight = -1 -setting_version = 4 +material = generic_tpu +variant = AA 0.4 [values] acceleration_enabled = True @@ -18,11 +19,10 @@ cool_fan_speed_max = 100 cool_min_layer_time_fan_speed_max = 6 cool_min_speed = 4 gradual_infill_step_height = =5 * layer_height -gradual_infill_steps = 4 infill_line_width = =round(line_width * 0.38 / 0.38, 2) infill_overlap = 0 -infill_pattern = tetrahedral -infill_sparse_density = 96 +infill_pattern = cross_3d +infill_sparse_density = 10 infill_wipe_dist = 0.1 jerk_enabled = True jerk_print = 25 @@ -44,9 +44,8 @@ retraction_count_max = 12 retraction_extra_prime_amount = 0.8 retraction_extrusion_window = 1 retraction_hop = 1.5 -retraction_hop_enabled = True retraction_hop_only_when_collides = True -retraction_min_travel = 0.8 +retraction_min_travel = =line_width * 2 retraction_prime_speed = 15 skin_overlap = 5 speed_equalize_flow_enabled = True @@ -64,4 +63,4 @@ top_bottom_thickness = 0.7 travel_avoid_distance = 1.5 wall_0_inset = 0 wall_line_width_x = =line_width -wall_thickness = 0.76 \ No newline at end of file +wall_thickness = 0.76 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 1938e1c26c..9afecb8987 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Fine definition = ultimaker3 [metadata] +setting_version = 4 type = quality quality_type = normal -material = generic_tpu_ultimaker3_AA_0.4 weight = 0 -setting_version = 4 +material = generic_tpu +variant = AA 0.4 [values] acceleration_enabled = True @@ -18,11 +19,10 @@ cool_fan_speed_max = 100 cool_min_layer_time_fan_speed_max = 6 cool_min_speed = 4 gradual_infill_step_height = =5 * layer_height -gradual_infill_steps = 4 infill_line_width = =round(line_width * 0.38 / 0.38, 2) infill_overlap = 0 -infill_pattern = tetrahedral -infill_sparse_density = 96 +infill_pattern = cross_3d +infill_sparse_density = 10 infill_wipe_dist = 0.1 jerk_enabled = True jerk_print = 25 @@ -41,9 +41,8 @@ retraction_count_max = 12 retraction_extra_prime_amount = 0.8 retraction_extrusion_window = 1 retraction_hop = 1.5 -retraction_hop_enabled = True retraction_hop_only_when_collides = True -retraction_min_travel = 0.8 +retraction_min_travel = =line_width * 2 retraction_prime_speed = 15 skin_overlap = 5 speed_equalize_flow_enabled = True @@ -61,4 +60,4 @@ top_bottom_thickness = 0.7 travel_avoid_distance = 1.5 wall_0_inset = 0 wall_line_width_x = =line_width -wall_thickness = 0.76 \ No newline at end of file +wall_thickness = 0.76 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 7c16e6e8ee..85e1415147 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Fast definition = ultimaker3 [metadata] +setting_version = 4 type = quality quality_type = draft -material = generic_abs_ultimaker3_AA_0.8 weight = -2 -setting_version = 4 +material = generic_abs +variant = AA 0.8 [values] line_width = =machine_nozzle_size * 0.875 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 728b4c868f..3167473cc6 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Sprint definition = ultimaker3 [metadata] +setting_version = 4 type = quality quality_type = superdraft -material = generic_abs_ultimaker3_AA_0.8 weight = -4 -setting_version = 4 +material = generic_abs +variant = AA 0.8 [values] layer_height = 0.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 98ae70c568..0414bf724c 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Extra Fast definition = ultimaker3 [metadata] +setting_version = 4 type = quality quality_type = verydraft -material = generic_abs_ultimaker3_AA_0.8 weight = -3 -setting_version = 4 +material = generic_abs +variant = AA 0.8 [values] layer_height = 0.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 0a05e9aafd..87728c2297 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Fast - Experimental definition = ultimaker3 [metadata] +setting_version = 4 type = quality quality_type = draft -material = generic_cpe_plus_ultimaker3_AA_0.8 weight = -2 -setting_version = 4 +material = generic_cpe_plus +variant = AA 0.8 [values] brim_width = 14 @@ -35,4 +36,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 -travel_avoid_distance = 1.5 \ No newline at end of file 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 82efb6a57b..603f32a688 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Sprint - Experimental definition = ultimaker3 [metadata] +setting_version = 4 type = quality quality_type = superdraft -material = generic_cpe_plus_ultimaker3_AA_0.8 weight = -4 -setting_version = 4 +material = generic_cpe_plus +variant = AA 0.8 [values] brim_width = 14 @@ -36,4 +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 -travel_avoid_distance = 1.5 \ No newline at end of file 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 ff375b6e49..432d502245 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Extra Fast - Experimental definition = ultimaker3 [metadata] +setting_version = 4 type = quality quality_type = verydraft -material = generic_cpe_plus_ultimaker3_AA_0.8 weight = -3 -setting_version = 4 +material = generic_cpe_plus +variant = AA 0.8 [values] brim_width = 14 @@ -36,4 +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 -travel_avoid_distance = 1.5 \ No newline at end of file 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 b4d7035b8d..fd138ae2f2 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Fast definition = ultimaker3 [metadata] +setting_version = 4 type = quality quality_type = draft -material = generic_cpe_ultimaker3_AA_0.8 weight = -2 -setting_version = 4 +material = generic_cpe +variant = AA 0.8 [values] brim_width = 15 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 b5ccc38534..feba0b3160 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Sprint definition = ultimaker3 [metadata] +setting_version = 4 type = quality quality_type = superdraft -material = generic_cpe_ultimaker3_AA_0.8 weight = -4 -setting_version = 4 +material = generic_cpe +variant = AA 0.8 [values] brim_width = 15 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 33ae223526..1d9537097e 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Extra Fast definition = ultimaker3 [metadata] +setting_version = 4 type = quality quality_type = verydraft -material = generic_cpe_ultimaker3_AA_0.8 weight = -3 -setting_version = 4 +material = generic_cpe +variant = AA 0.8 [values] brim_width = 15 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 43ec77453c..e205720539 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Fast definition = ultimaker3 [metadata] +setting_version = 4 type = quality quality_type = draft -material = generic_nylon_ultimaker3_AA_0.8 weight = -2 -setting_version = 4 +material = generic_nylon +variant = AA 0.8 [values] brim_width = 5.6 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 5b8626e8c2..f2853a8781 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Sprint definition = ultimaker3 [metadata] +setting_version = 4 type = quality quality_type = superdraft -material = generic_nylon_ultimaker3_AA_0.8 weight = -4 -setting_version = 4 +material = generic_nylon +variant = AA 0.8 [values] brim_width = 5.6 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 0b115ada4b..442323877c 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Extra Fast definition = ultimaker3 [metadata] +setting_version = 4 type = quality quality_type = verydraft -material = generic_nylon_ultimaker3_AA_0.8 weight = -3 -setting_version = 4 +material = generic_nylon +variant = AA 0.8 [values] brim_width = 5.6 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 0b666d2e0b..d8460c6971 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Fast - Experimental definition = ultimaker3 [metadata] +setting_version = 4 type = quality quality_type = draft -material = generic_pc_ultimaker3_AA_0.8 weight = 0 -setting_version = 4 +material = generic_pc +variant = AA 0.8 [values] brim_width = 14 @@ -28,4 +29,3 @@ 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) -travel_avoid_distance = 3 \ No newline at end of file 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 de212df4af..53f613ec70 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Sprint - Experimental definition = ultimaker3 [metadata] +setting_version = 4 type = quality quality_type = superdraft -material = generic_pc_ultimaker3_AA_0.8 weight = -2 -setting_version = 4 +material = generic_pc +variant = AA 0.8 [values] brim_width = 14 @@ -28,4 +29,3 @@ 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) -travel_avoid_distance = 3 \ No newline at end of file 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 3e0c669eeb..a4fdaaa791 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Extra Fast - Experimental definition = ultimaker3 [metadata] +setting_version = 4 type = quality quality_type = verydraft -material = generic_pc_ultimaker3_AA_0.8 weight = -1 -setting_version = 4 +material = generic_pc +variant = AA 0.8 [values] brim_width = 14 @@ -29,4 +30,3 @@ 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) -travel_avoid_distance = 3 \ No newline at end of file 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 3c4303e017..3293fa8382 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 @@ -1,22 +1,23 @@ [general] -version = 2 +version = 3 name = Fast definition = ultimaker3 [metadata] +setting_version = 4 type = quality quality_type = draft -material = generic_pla_ultimaker3_AA_0.8 weight = -2 -setting_version = 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.535 / 0.75, 2) -infill_pattern = cubic +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 @@ -25,6 +26,12 @@ material_initial_print_temperature = =max(-273.15, material_print_temperature - 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' 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 5509f42aae..b989d7e11a 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 @@ -1,22 +1,23 @@ [general] -version = 2 +version = 3 name = Sprint definition = ultimaker3 [metadata] +setting_version = 4 type = quality quality_type = superdraft -material = generic_pla_ultimaker3_AA_0.8 weight = -4 -setting_version = 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.535 / 0.75, 2) -infill_pattern = cubic +infill_line_width = =round(line_width * 0.65 / 0.75, 2) +infill_pattern = triangles layer_height = 0.4 line_width = =machine_nozzle_size * 0.9375 machine_nozzle_cool_down_speed = 0.75 @@ -27,6 +28,12 @@ material_print_temperature = =default_material_print_temperature + 15 material_standby_temperature = 100 prime_tower_enable = True raft_margin = 10 +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' 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 645c3fe3ef..684eb11c5b 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 @@ -1,22 +1,23 @@ [general] -version = 2 +version = 3 name = Extra Fast definition = ultimaker3 [metadata] +setting_version = 4 type = quality quality_type = verydraft -material = generic_pla_ultimaker3_AA_0.8 weight = -3 -setting_version = 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.535 / 0.75, 2) -infill_pattern = cubic +infill_line_width = =round(line_width * 0.65 / 0.75, 2) +infill_pattern = triangles layer_height = 0.3 line_width = =machine_nozzle_size * 0.9375 machine_nozzle_cool_down_speed = 0.75 @@ -26,6 +27,12 @@ material_initial_print_temperature = =max(-273.15, material_print_temperature - 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' 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 f46c3cfb8f..8ed11c1946 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Fast definition = ultimaker3 [metadata] +setting_version = 4 type = quality quality_type = draft -material = generic_pp_ultimaker3_AA_0.8 weight = -2 -setting_version = 4 +material = generic_pp +variant = AA 0.8 [values] brim_width = 25 @@ -48,4 +49,4 @@ top_bottom_thickness = 1.6 travel_compensate_overlapping_walls_0_enabled = False wall_0_wipe_dist = =line_width * 2 wall_line_width_x = =round(line_width * 0.8 / 0.8, 2) -wall_thickness = 1.6 \ No newline at end of file +wall_thickness = 1.6 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 ac8087d0c4..01b947995d 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Sprint definition = ultimaker3 [metadata] +setting_version = 4 type = quality quality_type = superdraft -material = generic_pp_ultimaker3_AA_0.8 weight = -4 -setting_version = 4 +material = generic_pp +variant = AA 0.8 [values] brim_width = 25 @@ -48,4 +49,4 @@ top_bottom_thickness = 1.6 travel_compensate_overlapping_walls_0_enabled = False wall_0_wipe_dist = =line_width * 2 wall_line_width_x = =round(line_width * 0.8 / 0.8, 2) -wall_thickness = 1.6 \ No newline at end of file +wall_thickness = 1.6 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 daf60f24e6..ba1aa89c91 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 @@ -1,14 +1,15 @@ [general] -version = 2 +version = 3 name = Extra Fast definition = ultimaker3 [metadata] +setting_version = 4 type = quality quality_type = verydraft -material = generic_pp_ultimaker3_AA_0.8 weight = -3 -setting_version = 4 +material = generic_pp +variant = AA 0.8 [values] brim_width = 25 @@ -48,4 +49,4 @@ top_bottom_thickness = 1.6 travel_compensate_overlapping_walls_0_enabled = False wall_0_wipe_dist = =line_width * 2 wall_line_width_x = =round(line_width * 0.8 / 0.8, 2) -wall_thickness = 1.6 \ No newline at end of file +wall_thickness = 1.6 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 726ab82867..e133d335f8 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 @@ -1,25 +1,25 @@ [general] -version = 2 +version = 3 name = Fast definition = ultimaker3 [metadata] +setting_version = 4 type = quality quality_type = draft -material = generic_tpu_ultimaker3_AA_0.8 weight = -2 -setting_version = 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 gradual_infill_step_height = =4 * layer_height -gradual_infill_steps = 5 infill_before_walls = True infill_line_width = =round(line_width * 0.7 / 0.8, 2) -infill_pattern = tetrahedral -infill_sparse_density = 80 +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) @@ -41,7 +41,7 @@ retraction_count_max = 12 retraction_extra_prime_amount = 0.5 retraction_hop = 1.5 retraction_hop_only_when_collides = False -retraction_min_travel = 0.8 +retraction_min_travel = =line_width * 2 retraction_prime_speed = 15 skin_line_width = =round(line_width * 0.78 / 0.8, 2) speed_print = 30 @@ -61,4 +61,4 @@ 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 \ No newline at end of file +wall_thickness = 1.3 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 269725daa9..c835de26f4 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 @@ -1,25 +1,25 @@ [general] -version = 2 +version = 3 name = Sprint definition = ultimaker3 [metadata] +setting_version = 4 type = quality quality_type = superdraft -material = generic_tpu_ultimaker3_AA_0.8 weight = -4 -setting_version = 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 gradual_infill_step_height = =4 * layer_height -gradual_infill_steps = 5 infill_before_walls = True infill_line_width = =round(line_width * 0.7 / 0.8, 2) -infill_pattern = tetrahedral -infill_sparse_density = 80 +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) @@ -42,7 +42,7 @@ retraction_count_max = 12 retraction_extra_prime_amount = 0.5 retraction_hop = 1.5 retraction_hop_only_when_collides = False -retraction_min_travel = 0.8 +retraction_min_travel = =line_width * 2 retraction_prime_speed = 15 skin_line_width = =round(line_width * 0.78 / 0.8, 2) speed_print = 30 @@ -62,4 +62,4 @@ 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 \ No newline at end of file +wall_thickness = 1.3 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 dd1737433a..2e3ad5cf44 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 @@ -1,25 +1,25 @@ [general] -version = 2 +version = 3 name = Extra Fast definition = ultimaker3 [metadata] +setting_version = 4 type = quality quality_type = verydraft -material = generic_tpu_ultimaker3_AA_0.8 weight = -3 -setting_version = 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 gradual_infill_step_height = =4 * layer_height -gradual_infill_steps = 5 infill_before_walls = True infill_line_width = =round(line_width * 0.7 / 0.8, 2) -infill_pattern = tetrahedral -infill_sparse_density = 80 +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) @@ -41,7 +41,7 @@ retraction_count_max = 12 retraction_extra_prime_amount = 0.5 retraction_hop = 1.5 retraction_hop_only_when_collides = False -retraction_min_travel = 0.8 +retraction_min_travel = =line_width * 2 retraction_prime_speed = 15 skin_line_width = =round(line_width * 0.78 / 0.8, 2) speed_print = 30 @@ -61,4 +61,4 @@ 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 \ No newline at end of file +wall_thickness = 1.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 c87f744932..4fff8be5ee 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 @@ -1,17 +1,18 @@ [general] -version = 2 +version = 3 name = Fast definition = ultimaker3 [metadata] +setting_version = 4 type = quality quality_type = draft weight = -2 -material = generic_pva_ultimaker3_BB_0.4 -setting_version = 4 +material = generic_pva +variant = BB 0.4 [values] material_print_temperature = =default_material_print_temperature + 10 material_standby_temperature = 100 prime_tower_enable = False -skin_overlap = 20 \ No newline at end of file +skin_overlap = 20 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 23fa6d61d8..8abce151bf 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 @@ -1,18 +1,19 @@ [general] -version = 2 +version = 3 name = Normal definition = ultimaker3 [metadata] -weight = -1 +setting_version = 4 type = quality quality_type = fast -material = generic_pva_ultimaker3_BB_0.4 -setting_version = 4 +weight = -1 +material = generic_pva +variant = BB 0.4 [values] material_print_temperature = =default_material_print_temperature + 5 material_standby_temperature = 100 prime_tower_enable = False skin_overlap = 15 -support_infill_sparse_thickness = 0.3 \ No newline at end of file +support_infill_sparse_thickness = 0.3 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 3ba82d65c6..0caf36e51b 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 @@ -1,16 +1,17 @@ [general] -version = 2 +version = 3 name = Extra Fine definition = ultimaker3 [metadata] -weight = 1 +setting_version = 4 type = quality quality_type = high -material = generic_pva_ultimaker3_BB_0.4 -setting_version = 4 +weight = 1 +material = generic_pva +variant = BB 0.4 [values] material_standby_temperature = 100 prime_tower_enable = False -support_infill_sparse_thickness = 0.18 \ No newline at end of file +support_infill_sparse_thickness = 0.18 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 a709d5613b..0a8304a743 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 @@ -1,15 +1,16 @@ [general] -version = 2 +version = 3 name = Fine definition = ultimaker3 [metadata] -weight = 0 +setting_version = 4 type = quality quality_type = normal -material = generic_pva_ultimaker3_BB_0.4 -setting_version = 4 +weight = 0 +material = generic_pva +variant = BB 0.4 [values] material_standby_temperature = 100 -prime_tower_enable = False \ No newline at end of file +prime_tower_enable = False 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 4cb296b4c7..d59f283eb6 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 @@ -1,15 +1,16 @@ [general] -version = 2 +version = 3 name = Fast definition = ultimaker3 [metadata] +setting_version = 4 type = quality quality_type = draft weight = -2 -material = generic_pva_ultimaker3_BB_0.8 -setting_version = 4 +material = generic_pva +variant = BB 0.8 [values] material_print_temperature = =default_material_print_temperature + 5 -material_standby_temperature = 100 \ No newline at end of file +material_standby_temperature = 100 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 5249517844..4039d39d6a 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 @@ -1,16 +1,17 @@ [general] -version = 2 +version = 3 name = Sprint definition = ultimaker3 [metadata] +setting_version = 4 type = quality quality_type = superdraft weight = -4 -material = generic_pva_ultimaker3_BB_0.8 -setting_version = 4 +material = generic_pva +variant = BB 0.8 [values] layer_height = 0.4 material_standby_temperature = 100 -support_interface_height = 0.9 \ No newline at end of file +support_interface_height = 0.9 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 c34e19b134..247ee3d4da 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 @@ -1,17 +1,18 @@ [general] -version = 2 +version = 3 name = Extra Fast definition = ultimaker3 [metadata] +setting_version = 4 type = quality quality_type = verydraft weight = -3 -material = generic_pva_ultimaker3_BB_0.8 -setting_version = 4 +material = generic_pva +variant = BB 0.8 [values] layer_height = 0.3 material_standby_temperature = 100 support_infill_sparse_thickness = 0.3 -support_interface_height = 1.2 \ No newline at end of file +support_interface_height = 1.2 diff --git a/resources/quality/ultimaker3/um3_global_Draft_Quality.inst.cfg b/resources/quality/ultimaker3/um3_global_Draft_Quality.inst.cfg index b56775a987..49a514bff3 100644 --- a/resources/quality/ultimaker3/um3_global_Draft_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_global_Draft_Quality.inst.cfg @@ -1,14 +1,14 @@ [general] -version = 2 +version = 3 name = Fast definition = ultimaker3 [metadata] +setting_version = 4 type = quality quality_type = draft -global_quality = True weight = -2 -setting_version = 4 +global_quality = True [values] layer_height = 0.2 diff --git a/resources/quality/ultimaker3/um3_global_Fast_Quality.inst.cfg b/resources/quality/ultimaker3/um3_global_Fast_Quality.inst.cfg index 12f1183364..69a94be93a 100644 --- a/resources/quality/ultimaker3/um3_global_Fast_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_global_Fast_Quality.inst.cfg @@ -1,14 +1,14 @@ [general] -version = 2 +version = 3 name = Normal definition = ultimaker3 [metadata] +setting_version = 4 type = quality quality_type = fast -global_quality = True weight = -1 -setting_version = 4 +global_quality = True [values] layer_height = 0.15 diff --git a/resources/quality/ultimaker3/um3_global_High_Quality.inst.cfg b/resources/quality/ultimaker3/um3_global_High_Quality.inst.cfg index cf6e6c45e0..2aebb18ab5 100644 --- a/resources/quality/ultimaker3/um3_global_High_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_global_High_Quality.inst.cfg @@ -1,14 +1,14 @@ [general] -version = 2 +version = 3 name = Extra Fine definition = ultimaker3 [metadata] +setting_version = 4 type = quality quality_type = high -global_quality = True weight = 0 -setting_version = 4 +global_quality = True [values] layer_height = 0.06 diff --git a/resources/quality/ultimaker3/um3_global_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_global_Normal_Quality.inst.cfg index fef2328923..5effc44fc5 100644 --- a/resources/quality/ultimaker3/um3_global_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_global_Normal_Quality.inst.cfg @@ -1,14 +1,14 @@ [general] -version = 2 +version = 3 name = Fine definition = ultimaker3 [metadata] +setting_version = 4 type = quality quality_type = normal -global_quality = True weight = 0 -setting_version = 4 +global_quality = True [values] layer_height = 0.1 diff --git a/resources/quality/ultimaker3/um3_global_Superdraft_Quality.inst.cfg b/resources/quality/ultimaker3/um3_global_Superdraft_Quality.inst.cfg index be9acd4394..55f5796240 100644 --- a/resources/quality/ultimaker3/um3_global_Superdraft_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_global_Superdraft_Quality.inst.cfg @@ -1,14 +1,14 @@ [general] -version = 2 +version = 3 name = Sprint definition = ultimaker3 [metadata] +setting_version = 4 type = quality quality_type = superdraft -global_quality = True weight = -4 -setting_version = 4 +global_quality = True [values] layer_height = 0.4 diff --git a/resources/quality/ultimaker3/um3_global_Verydraft_Quality.inst.cfg b/resources/quality/ultimaker3/um3_global_Verydraft_Quality.inst.cfg index e2c828fc2d..5d72a76c7c 100644 --- a/resources/quality/ultimaker3/um3_global_Verydraft_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_global_Verydraft_Quality.inst.cfg @@ -1,14 +1,14 @@ [general] -version = 2 +version = 3 name = Extra Fast definition = ultimaker3 [metadata] +setting_version = 4 type = quality quality_type = verydraft -global_quality = True weight = -3 -setting_version = 4 +global_quality = True [values] layer_height = 0.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 new file mode 100644 index 0000000000..30c2749ac6 --- /dev/null +++ b/resources/quality/vertex_delta_k8800/k8800_ABS_Extreme_Quality.inst.cfg @@ -0,0 +1,22 @@ +[general] +version = 3 +name = Extreme +definition = vertex_delta_k8800 + +[metadata] +setting_version = 4 +type = quality +quality_type = extreme +weight = 2 +material = Vertex_Delta_ABS + +[values] +layer_height = 0.05 +layer_height_0 = 0.2 + +material_final_print_temperature = 250 +material_initial_print_temperature = 250 +material_print_temperature = 250 +retraction_amount = 3 +material_standby_temperature = 225 +cool_fan_speed = 0 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 new file mode 100644 index 0000000000..102901ab3d --- /dev/null +++ b/resources/quality/vertex_delta_k8800/k8800_ABS_High_Quality.inst.cfg @@ -0,0 +1,22 @@ +[general] +version = 3 +name = High +definition = vertex_delta_k8800 + +[metadata] +setting_version = 4 +type = quality +quality_type = high +weight = 1 +material = Vertex_Delta_ABS + +[values] +layer_height = 0.1 +layer_height_0 = 0.2 + +material_final_print_temperature = 250 +material_initial_print_temperature = 250 +material_print_temperature = 250 +retraction_amount = 3 +material_standby_temperature = 225 +cool_fan_speed = 0 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 new file mode 100644 index 0000000000..f2e699f571 --- /dev/null +++ b/resources/quality/vertex_delta_k8800/k8800_ABS_Normal_Quality.inst.cfg @@ -0,0 +1,22 @@ +[general] +version = 3 +name = Normal +definition = vertex_delta_k8800 + +[metadata] +setting_version = 4 +type = quality +quality_type = normal +weight = 0 +material = Vertex_Delta_ABS + +[values] +layer_height = 0.2 +layer_height_0 = 0.2 + +material_final_print_temperature = 250 +material_initial_print_temperature = 250 +material_print_temperature = 250 +retraction_amount = 3 +material_standby_temperature = 225 +cool_fan_speed = 00 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 new file mode 100644 index 0000000000..1f98ded1db --- /dev/null +++ b/resources/quality/vertex_delta_k8800/k8800_PET_Extreme_Quality.inst.cfg @@ -0,0 +1,22 @@ +[general] +version = 3 +name = Extreme +definition = vertex_delta_k8800 + +[metadata] +setting_version = 4 +type = quality +quality_type = extreme +weight = 2 +material = Vertex_Delta_PET + +[values] +layer_height = 0.05 +layer_height_0 = 0.2 + +material_final_print_temperature = 240 +material_initial_print_temperature = 240 +material_print_temperature = 240 +retraction_amount = 3 +material_standby_temperature = 215 +cool_fan_speed = 10 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 new file mode 100644 index 0000000000..f050c741c2 --- /dev/null +++ b/resources/quality/vertex_delta_k8800/k8800_PET_High_Quality.inst.cfg @@ -0,0 +1,22 @@ +[general] +version = 3 +name = High +definition = vertex_delta_k8800 + +[metadata] +setting_version = 4 +type = quality +quality_type = high +weight = 1 +material = Vertex_Delta_PET + +[values] +layer_height = 0.1 +layer_height_0 = 0.2 + +material_final_print_temperature = 240 +material_initial_print_temperature = 240 +material_print_temperature = 240 +retraction_amount = 3 +material_standby_temperature = 215 +cool_fan_speed = 10 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 new file mode 100644 index 0000000000..faeb8343fb --- /dev/null +++ b/resources/quality/vertex_delta_k8800/k8800_PET_Normal_Quality.inst.cfg @@ -0,0 +1,22 @@ +[general] +version = 3 +name = Normal +definition = vertex_delta_k8800 + +[metadata] +setting_version = 4 +type = quality +quality_type = normal +weight = 0 +material = Vertex_Delta_PET + +[values] +layer_height = 0.2 +layer_height_0 = 0.2 + +material_final_print_temperature = 240 +material_initial_print_temperature = 240 +material_print_temperature = 240 +retraction_amount = 3 +material_standby_temperature = 215 +cool_fan_speed = 10 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 new file mode 100644 index 0000000000..f5ac232d06 --- /dev/null +++ b/resources/quality/vertex_delta_k8800/k8800_PLA_Extreme_Quality.inst.cfg @@ -0,0 +1,22 @@ +[general] +version = 3 +name = Extreme +definition = vertex_delta_k8800 + +[metadata] +setting_version = 4 +type = quality +quality_type = extreme +weight = 2 +material = Vertex_Delta_PLA + +[values] +layer_height = 0.05 +layer_height_0 = 0.2 + +material_final_print_temperature = 200 +material_initial_print_temperature = 200 +material_print_temperature = 200 +retraction_amount = 3 +material_standby_temperature = 175 +cool_fan_speed = 40 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 new file mode 100644 index 0000000000..63ed8389db --- /dev/null +++ b/resources/quality/vertex_delta_k8800/k8800_PLA_High_Quality.inst.cfg @@ -0,0 +1,22 @@ +[general] +version = 3 +name = High +definition = vertex_delta_k8800 + +[metadata] +setting_version = 4 +type = quality +quality_type = high +weight = 1 +material = Vertex_Delta_PLA + +[values] +layer_height = 0.1 +layer_height_0 = 0.2 + +material_final_print_temperature = 200 +material_initial_print_temperature = 200 +material_print_temperature = 200 +retraction_amount = 3 +material_standby_temperature = 175 +cool_fan_speed = 40 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 new file mode 100644 index 0000000000..e84cbabade --- /dev/null +++ b/resources/quality/vertex_delta_k8800/k8800_PLA_Normal_Quality.inst.cfg @@ -0,0 +1,22 @@ +[general] +version = 3 +name = Normal +definition = vertex_delta_k8800 + +[metadata] +setting_version = 4 +type = quality +quality_type = normal +weight = 0 +material = Vertex_Delta_PLA + +[values] +layer_height = 0.2 +layer_height_0 = 0.2 + +material_final_print_temperature = 200 +material_initial_print_temperature = 200 +material_print_temperature = 200 +retraction_amount = 3 +material_standby_temperature = 175 +cool_fan_speed = 40 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 new file mode 100644 index 0000000000..a2e8a334f7 --- /dev/null +++ b/resources/quality/vertex_delta_k8800/k8800_TPU_Extreme_Quality.inst.cfg @@ -0,0 +1,22 @@ +[general] +version = 3 +name = Extreme +definition = vertex_delta_k8800 + +[metadata] +setting_version = 4 +type = quality +quality_type = extreme +weight = 2 +material = Vertex_Delta_TPU + +[values] +layer_height = 0.05 +layer_height_0 = 0.2 + +material_final_print_temperature = 220 +material_initial_print_temperature = 220 +material_print_temperature = 220 +retraction_amount = 3 +material_standby_temperature = 195 +cool_fan_speed = 20 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 new file mode 100644 index 0000000000..4598332ba6 --- /dev/null +++ b/resources/quality/vertex_delta_k8800/k8800_TPU_High_Quality.inst.cfg @@ -0,0 +1,22 @@ +[general] +version = 3 +name = High +definition = vertex_delta_k8800 + +[metadata] +setting_version = 4 +type = quality +quality_type = high +weight = 1 +material = Vertex_Delta_TPU + +[values] +layer_height = 0.1 +layer_height_0 = 0.2 + +material_final_print_temperature = 220 +material_initial_print_temperature = 220 +material_print_temperature = 220 +retraction_amount = 3 +material_standby_temperature = 195 +cool_fan_speed = 20 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 new file mode 100644 index 0000000000..7a8a964b1c --- /dev/null +++ b/resources/quality/vertex_delta_k8800/k8800_TPU_Normal_Quality.inst.cfg @@ -0,0 +1,22 @@ +[general] +version = 3 +name = Normal +definition = vertex_delta_k8800 + +[metadata] +setting_version = 4 +type = quality +quality_type = normal +weight = 0 +material = Vertex_Delta_TPU + +[values] +layer_height = 0.2 +layer_height_0 = 0.2 + +material_final_print_temperature = 220 +material_initial_print_temperature = 220 +material_print_temperature = 220 +retraction_amount = 3 +material_standby_temperature = 195 +cool_fan_speed = 20 diff --git a/resources/setting_visibility/advanced.cfg b/resources/setting_visibility/advanced.cfg new file mode 100644 index 0000000000..e68ee787f5 --- /dev/null +++ b/resources/setting_visibility/advanced.cfg @@ -0,0 +1,138 @@ +[general] +name = Advanced +weight = 2 + +[machine_settings] + +[resolution] +layer_height +layer_height_0 +line_width +wall_line_width +wall_line_width_0 +wall_line_width_x +skin_line_width +infill_line_width +initial_layer_line_width_factor + +[shell] +wall_extruder_nr +wall_0_extruder_nr +wall_x_extruder_nr +wall_thickness +wall_line_count +top_bottom_extruder_nr +top_bottom_thickness +top_thickness +top_layers +bottom_thickness +bottom_layers +optimize_wall_printing_order +fill_perimeter_gaps +xy_offset +ironing_enabled + +[infill] +infill_extruder_nr +infill_sparse_density +infill_line_distance +infill_pattern +infill_overlap +infill_sparse_thickness +gradual_infill_steps + +[material] +material_print_temperature +material_print_temperature_layer_0 +material_initial_print_temperature +material_final_print_temperature +material_bed_temperature +material_bed_temperature_layer_0 +retraction_enable +retract_at_layer_change +retraction_amount +retraction_speed +material_standby_temperature + +[speed] +speed_print +speed_infill +speed_wall +speed_wall_0 +speed_wall_x +speed_topbottom +speed_support +speed_prime_tower +speed_travel +speed_layer_0 +skirt_brim_speed +acceleration_enabled +jerk_enabled + +[travel] +retraction_combing +travel_avoid_other_parts +travel_avoid_distance +retraction_hop_enabled +retraction_hop_only_when_collides +retraction_hop +retraction_hop_after_extruder_switch + +[cooling] +cool_fan_enabled +cool_fan_speed +cool_fan_speed_min +cool_fan_speed_max +cool_min_layer_time_fan_speed_max +cool_fan_speed_0 +cool_fan_full_at_height +cool_fan_full_layer +cool_min_layer_time +cool_min_speed +cool_lift_head + +[support] +support_enable +support_extruder_nr +support_infill_extruder_nr +support_extruder_nr_layer_0 +support_interface_extruder_nr +support_type +support_angle +support_pattern +support_infill_rate +support_offset +support_infill_sparse_thickness +gradual_support_infill_steps +gradual_support_infill_step_height +support_interface_enable +support_roof_enable +support_bottom_enable + +[platform_adhesion] +prime_blob_enable +adhesion_type +adhesion_extruder_nr +skirt_line_count +brim_width +brim_line_count +brim_outside_only + +[dual] +prime_tower_enable +prime_tower_position_x +prime_tower_position_y +prime_tower_purge_volume + +[meshfix] + +[blackmagic] +print_sequence +magic_mesh_surface_mode +magic_spiralize +smooth_spiralized_contours + +[experimental] +conical_overhang_enabled +support_conical_enabled +adaptive_layer_height_enabled diff --git a/resources/setting_visibility/basic.cfg b/resources/setting_visibility/basic.cfg new file mode 100644 index 0000000000..4196a3a9e7 --- /dev/null +++ b/resources/setting_visibility/basic.cfg @@ -0,0 +1,58 @@ +[general] +name = Basic +weight = 1 + +[machine_settings] + +[resolution] +layer_height + +[shell] +wall_thickness +wall_line_count +top_bottom_thickness +top_thickness +top_layers +bottom_thickness +bottom_layers +xy_offset + +[infill] +infill_sparse_density +infill_pattern + +[material] +material_print_temperature +material_bed_temperature +retraction_enable + +[speed] +speed_print + +[travel] +retraction_hop_enabled + +[cooling] +cool_fan_enabled + +[support] +support_enable +support_extruder_nr +support_type +support_angle + +[platform_adhesion] +prime_blob_enable +adhesion_type +adhesion_extruder_nr + +[dual] +prime_tower_enable +prime_tower_position_x +prime_tower_position_y + +[meshfix] + +[blackmagic] + +[experimental] diff --git a/resources/setting_visibility/expert.cfg b/resources/setting_visibility/expert.cfg new file mode 100644 index 0000000000..d6989f8b26 --- /dev/null +++ b/resources/setting_visibility/expert.cfg @@ -0,0 +1,404 @@ +[general] +name = Expert +weight = 3 + +[machine_settings] + +[resolution] +layer_height +layer_height_0 +line_width +wall_line_width +wall_line_width_0 +wall_line_width_x +skin_line_width +infill_line_width +skirt_brim_line_width +support_line_width +support_interface_line_width +support_roof_line_width +support_bottom_line_width +prime_tower_line_width +initial_layer_line_width_factor + +[shell] +wall_extruder_nr +wall_0_extruder_nr +wall_x_extruder_nr +wall_thickness +wall_line_count +wall_0_wipe_dist +roofing_layer_count +top_bottom_extruder_nr +top_bottom_thickness +top_thickness +top_layers +bottom_thickness +bottom_layers +top_bottom_pattern +top_bottom_pattern_0 +skin_angles +wall_0_inset +optimize_wall_printing_order +outer_inset_first +alternate_extra_perimeter +travel_compensate_overlapping_walls_enabled +travel_compensate_overlapping_walls_0_enabled +travel_compensate_overlapping_walls_x_enabled +fill_perimeter_gaps +filter_out_tiny_gaps +fill_outline_gaps +xy_offset +xy_offset_layer_0 +z_seam_type +z_seam_x +z_seam_y +z_seam_corner +z_seam_relative +skin_no_small_gaps_heuristic +skin_outline_count +ironing_enabled +ironing_only_highest_layer +ironing_pattern +ironing_line_spacing +ironing_flow +ironing_inset +speed_ironing +acceleration_ironing +jerk_ironing + +[infill] +infill_extruder_nr +infill_sparse_density +infill_line_distance +infill_pattern +zig_zaggify_infill +infill_angles +infill_offset_x +infill_offset_y +sub_div_rad_add +infill_overlap +infill_overlap_mm +skin_overlap +skin_overlap_mm +infill_wipe_dist +infill_sparse_thickness +gradual_infill_steps +gradual_infill_step_height +infill_before_walls +min_infill_area +skin_preshrink +top_skin_preshrink +bottom_skin_preshrink +expand_skins_expand_distance +top_skin_expand_distance +bottom_skin_expand_distance +max_skin_angle_for_expansion +min_skin_width_for_expansion + +[material] +default_material_print_temperature +material_print_temperature +material_print_temperature_layer_0 +material_initial_print_temperature +material_final_print_temperature +material_extrusion_cool_down_speed +default_material_bed_temperature +material_bed_temperature +material_bed_temperature_layer_0 +material_diameter +material_adhesion_tendency +material_surface_energy +material_flow +material_flow_layer_0 +retraction_enable +retract_at_layer_change +retraction_amount +retraction_speed +retraction_retract_speed +retraction_prime_speed +retraction_extra_prime_amount +retraction_min_travel +retraction_count_max +retraction_extrusion_window +material_standby_temperature +switch_extruder_retraction_amount +switch_extruder_retraction_speeds +switch_extruder_retraction_speed +switch_extruder_prime_speed + +[speed] +speed_print +speed_infill +speed_wall +speed_wall_0 +speed_wall_x +speed_roofing +speed_topbottom +speed_support +speed_support_infill +speed_support_interface +speed_prime_tower +speed_travel +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 +acceleration_enabled +acceleration_print +acceleration_infill +acceleration_wall +acceleration_wall_0 +acceleration_wall_x +acceleration_roofing +acceleration_topbottom +acceleration_support +acceleration_support_infill +acceleration_support_interface +acceleration_prime_tower +acceleration_travel +acceleration_layer_0 +acceleration_print_layer_0 +acceleration_travel_layer_0 +acceleration_skirt_brim +jerk_enabled +jerk_print +jerk_infill +jerk_wall +jerk_wall_0 +jerk_wall_x +jerk_roofing +jerk_topbottom +jerk_support +jerk_support_infill +jerk_support_interface +jerk_prime_tower +jerk_travel +jerk_layer_0 +jerk_print_layer_0 +jerk_travel_layer_0 +jerk_skirt_brim + +[travel] +retraction_combing +travel_retract_before_outer_wall +travel_avoid_other_parts +travel_avoid_distance +start_layers_at_same_position +layer_start_x +layer_start_y +retraction_hop_enabled +retraction_hop_only_when_collides +retraction_hop +retraction_hop_after_extruder_switch + +[cooling] +cool_fan_enabled +cool_fan_speed +cool_fan_speed_min +cool_fan_speed_max +cool_min_layer_time_fan_speed_max +cool_fan_speed_0 +cool_fan_full_at_height +cool_fan_full_layer +cool_min_layer_time +cool_min_speed +cool_lift_head + +[support] +support_enable +support_extruder_nr +support_infill_extruder_nr +support_extruder_nr_layer_0 +support_interface_extruder_nr +support_roof_extruder_nr +support_bottom_extruder_nr +support_type +support_angle +support_pattern +zig_zaggify_support +support_connect_zigzags +support_infill_rate +support_line_distance +support_z_distance +support_top_distance +support_bottom_distance +support_xy_distance +support_xy_overrides_z +support_xy_distance_overhang +support_bottom_stair_step_height +support_bottom_stair_step_width +support_join_distance +support_offset +support_infill_sparse_thickness +gradual_support_infill_steps +gradual_support_infill_step_height +support_interface_enable +support_roof_enable +support_bottom_enable +support_interface_height +support_roof_height +support_bottom_height +support_interface_skip_height +support_interface_density +support_roof_density +support_bottom_density +support_interface_pattern +support_use_towers +support_tower_diameter +support_minimal_diameter +support_tower_roof_angle +support_mesh_drop_down + +[platform_adhesion] +prime_blob_enable +adhesion_type +adhesion_extruder_nr +skirt_line_count +skirt_gap +skirt_brim_minimal_length +brim_width +brim_line_count +brim_outside_only +raft_margin +raft_smoothing +raft_airgap +raft_surface_layers +raft_surface_thickness +raft_surface_line_width +raft_surface_line_spacing +raft_interface_thickness +raft_interface_line_width +raft_interface_line_spacing +raft_base_thickness +raft_base_line_width +raft_base_line_spacing +raft_speed +raft_acceleration +raft_jerk +raft_fan_speed + +[dual] +prime_tower_enable +prime_tower_circular +prime_tower_size +prime_tower_min_volume +prime_tower_wall_thickness +prime_tower_position_x +prime_tower_position_y +prime_tower_flow +prime_tower_wipe_enabled +dual_pre_wipe +prime_tower_purge_volume +ooze_shield_enabled +ooze_shield_angle +ooze_shield_dist + +[meshfix] +meshfix_union_all +meshfix_union_all_remove_holes +meshfix_extensive_stitching +meshfix_keep_open_polygons +multiple_mesh_overlap +carve_multiple_volumes +alternate_carve_order +remove_empty_first_layers + +[blackmagic] +print_sequence +infill_mesh +infill_mesh_order +cutting_mesh +mold_enabled +mold_width +mold_roof_height +mold_angle +support_mesh +anti_overhang_mesh +magic_mesh_surface_mode +magic_spiralize +smooth_spiralized_contours +relative_extrusion + +[experimental] +support_tree_enable +support_tree_angle +support_tree_branch_distance +support_tree_branch_diameter +support_tree_branch_diameter_angle +support_tree_collision_resolution +support_tree_wall_thickness +support_tree_wall_count +slicing_tolerance +roofing_line_width +roofing_pattern +roofing_angles +infill_enable_travel_optimization +material_flow_dependent_temperature +material_flow_temp_graph +meshfix_maximum_resolution +support_skip_some_zags +support_skip_zag_per_mm +support_zag_skip_count +draft_shield_enabled +draft_shield_dist +draft_shield_height_limitation +draft_shield_height +conical_overhang_enabled +conical_overhang_angle +coasting_enable +coasting_volume +coasting_min_volume +coasting_speed +skin_alternate_rotation +cross_infill_pocket_size +cross_infill_apply_pockets_alternatingly +spaghetti_infill_enabled +spaghetti_infill_stepped +spaghetti_max_infill_angle +spaghetti_max_height +spaghetti_inset +spaghetti_flow +spaghetti_infill_extra_volume +support_conical_enabled +support_conical_angle +support_conical_min_width +infill_hollow +magic_fuzzy_skin_enabled +magic_fuzzy_skin_thickness +magic_fuzzy_skin_point_density +magic_fuzzy_skin_point_dist +flow_rate_max_extrusion_offset +flow_rate_extrusion_offset_factor +wireframe_enabled +wireframe_height +wireframe_roof_inset +wireframe_printspeed +wireframe_printspeed_bottom +wireframe_printspeed_up +wireframe_printspeed_down +wireframe_printspeed_flat +wireframe_flow +wireframe_flow_connection +wireframe_flow_flat +wireframe_top_delay +wireframe_bottom_delay +wireframe_flat_delay +wireframe_up_half_speed +wireframe_top_jump +wireframe_fall_down +wireframe_drag_along +wireframe_strategy +wireframe_straight_before_down +wireframe_roof_fall_down +wireframe_roof_drag_along +wireframe_roof_outer_delay +wireframe_nozzle_clearance +adaptive_layer_height_enabled +adaptive_layer_height_variation +adaptive_layer_height_variation_step +adaptive_layer_height_threshold diff --git a/resources/themes/cura-light/fonts/LICENSE.txt b/resources/themes/cura-light/fonts/LICENSE.txt deleted file mode 100644 index d645695673..0000000000 --- a/resources/themes/cura-light/fonts/LICENSE.txt +++ /dev/null @@ -1,202 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/resources/themes/cura-light/fonts/OpenSans-Bold.ttf b/resources/themes/cura-light/fonts/OpenSans-Bold.ttf deleted file mode 100644 index fd79d43bea..0000000000 Binary files a/resources/themes/cura-light/fonts/OpenSans-Bold.ttf and /dev/null differ diff --git a/resources/themes/cura-light/fonts/OpenSans-BoldItalic.ttf b/resources/themes/cura-light/fonts/OpenSans-BoldItalic.ttf deleted file mode 100644 index 9bc800958a..0000000000 Binary files a/resources/themes/cura-light/fonts/OpenSans-BoldItalic.ttf and /dev/null differ diff --git a/resources/themes/cura-light/fonts/OpenSans-Italic.ttf b/resources/themes/cura-light/fonts/OpenSans-Italic.ttf deleted file mode 100644 index c90da48ff3..0000000000 Binary files a/resources/themes/cura-light/fonts/OpenSans-Italic.ttf and /dev/null differ diff --git a/resources/themes/cura-light/fonts/OpenSans-Light.ttf b/resources/themes/cura-light/fonts/OpenSans-Light.ttf deleted file mode 100644 index 0d381897da..0000000000 Binary files a/resources/themes/cura-light/fonts/OpenSans-Light.ttf and /dev/null differ diff --git a/resources/themes/cura-light/fonts/OpenSans-LightItalic.ttf b/resources/themes/cura-light/fonts/OpenSans-LightItalic.ttf deleted file mode 100644 index 68299c4bc6..0000000000 Binary files a/resources/themes/cura-light/fonts/OpenSans-LightItalic.ttf and /dev/null differ diff --git a/resources/themes/cura-light/fonts/OpenSans-Regular.ttf b/resources/themes/cura-light/fonts/OpenSans-Regular.ttf deleted file mode 100644 index db433349b7..0000000000 Binary files a/resources/themes/cura-light/fonts/OpenSans-Regular.ttf and /dev/null differ diff --git a/resources/themes/cura-light/fonts/OpenSans-Semibold.ttf b/resources/themes/cura-light/fonts/OpenSans-Semibold.ttf deleted file mode 100644 index 1a7679e394..0000000000 Binary files a/resources/themes/cura-light/fonts/OpenSans-Semibold.ttf and /dev/null differ diff --git a/resources/themes/cura-light/fonts/OpenSans-SemiboldItalic.ttf b/resources/themes/cura-light/fonts/OpenSans-SemiboldItalic.ttf deleted file mode 100644 index 59b6d16b06..0000000000 Binary files a/resources/themes/cura-light/fonts/OpenSans-SemiboldItalic.ttf and /dev/null differ diff --git a/resources/themes/cura-light/fonts/noto-sans-display/LICENSE_OFL.txt b/resources/themes/cura-light/fonts/noto-sans-display/LICENSE_OFL.txt new file mode 100644 index 0000000000..d952d62c06 --- /dev/null +++ b/resources/themes/cura-light/fonts/noto-sans-display/LICENSE_OFL.txt @@ -0,0 +1,92 @@ +This Font Software is licensed under the SIL Open Font License, +Version 1.1. + +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font +creation efforts of academic and linguistic communities, and to +provide a free and open framework in which fonts may be shared and +improved in partnership with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply to +any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software +components as distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, +deleting, or substituting -- in part or in whole -- any of the +components of the Original Version, by changing formats or by porting +the Font Software to a new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, +modify, redistribute, and sell modified and unmodified copies of the +Font Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, in +Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the +corresponding Copyright Holder. This restriction only applies to the +primary font name as presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created using +the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/resources/themes/cura-light/fonts/noto-sans-display/noto-sans-display-100-thin-italic.ttf b/resources/themes/cura-light/fonts/noto-sans-display/noto-sans-display-100-thin-italic.ttf new file mode 100644 index 0000000000..498240f65f Binary files /dev/null and b/resources/themes/cura-light/fonts/noto-sans-display/noto-sans-display-100-thin-italic.ttf differ diff --git a/resources/themes/cura-light/fonts/noto-sans-display/noto-sans-display-100-thin.ttf b/resources/themes/cura-light/fonts/noto-sans-display/noto-sans-display-100-thin.ttf new file mode 100644 index 0000000000..4607b9ae49 Binary files /dev/null and b/resources/themes/cura-light/fonts/noto-sans-display/noto-sans-display-100-thin.ttf differ diff --git a/resources/themes/cura-light/fonts/noto-sans-display/noto-sans-display-200-extra-light-italic.ttf b/resources/themes/cura-light/fonts/noto-sans-display/noto-sans-display-200-extra-light-italic.ttf new file mode 100644 index 0000000000..f5adf19193 Binary files /dev/null and b/resources/themes/cura-light/fonts/noto-sans-display/noto-sans-display-200-extra-light-italic.ttf differ diff --git a/resources/themes/cura-light/fonts/noto-sans-display/noto-sans-display-200-extra-light.ttf b/resources/themes/cura-light/fonts/noto-sans-display/noto-sans-display-200-extra-light.ttf new file mode 100644 index 0000000000..3417180964 Binary files /dev/null and b/resources/themes/cura-light/fonts/noto-sans-display/noto-sans-display-200-extra-light.ttf differ diff --git a/resources/themes/cura-light/fonts/noto-sans-display/noto-sans-display-300-light-italic.ttf b/resources/themes/cura-light/fonts/noto-sans-display/noto-sans-display-300-light-italic.ttf new file mode 100644 index 0000000000..1e93062cec Binary files /dev/null and b/resources/themes/cura-light/fonts/noto-sans-display/noto-sans-display-300-light-italic.ttf differ diff --git a/resources/themes/cura-light/fonts/noto-sans-display/noto-sans-display-300-light.ttf b/resources/themes/cura-light/fonts/noto-sans-display/noto-sans-display-300-light.ttf new file mode 100644 index 0000000000..368b0498f7 Binary files /dev/null and b/resources/themes/cura-light/fonts/noto-sans-display/noto-sans-display-300-light.ttf differ diff --git a/resources/themes/cura-light/fonts/noto-sans-display/noto-sans-display-400-regular-italic.ttf b/resources/themes/cura-light/fonts/noto-sans-display/noto-sans-display-400-regular-italic.ttf new file mode 100644 index 0000000000..9cbdab9187 Binary files /dev/null and b/resources/themes/cura-light/fonts/noto-sans-display/noto-sans-display-400-regular-italic.ttf differ diff --git a/resources/themes/cura-light/fonts/noto-sans-display/noto-sans-display-400-regular.ttf b/resources/themes/cura-light/fonts/noto-sans-display/noto-sans-display-400-regular.ttf new file mode 100644 index 0000000000..b695c97b10 Binary files /dev/null and b/resources/themes/cura-light/fonts/noto-sans-display/noto-sans-display-400-regular.ttf differ diff --git a/resources/themes/cura-light/fonts/noto-sans-display/noto-sans-display-500-medium-italic.ttf b/resources/themes/cura-light/fonts/noto-sans-display/noto-sans-display-500-medium-italic.ttf new file mode 100644 index 0000000000..76fa05fc08 Binary files /dev/null and b/resources/themes/cura-light/fonts/noto-sans-display/noto-sans-display-500-medium-italic.ttf differ diff --git a/resources/themes/cura-light/fonts/noto-sans-display/noto-sans-display-500-medium.ttf b/resources/themes/cura-light/fonts/noto-sans-display/noto-sans-display-500-medium.ttf new file mode 100644 index 0000000000..9e62d58b83 Binary files /dev/null and b/resources/themes/cura-light/fonts/noto-sans-display/noto-sans-display-500-medium.ttf differ diff --git a/resources/themes/cura-light/fonts/noto-sans-display/noto-sans-display-600-semi-bold-italic.ttf b/resources/themes/cura-light/fonts/noto-sans-display/noto-sans-display-600-semi-bold-italic.ttf new file mode 100644 index 0000000000..458dfa9e76 Binary files /dev/null and b/resources/themes/cura-light/fonts/noto-sans-display/noto-sans-display-600-semi-bold-italic.ttf differ diff --git a/resources/themes/cura-light/fonts/noto-sans-display/noto-sans-display-600-semi-bold.ttf b/resources/themes/cura-light/fonts/noto-sans-display/noto-sans-display-600-semi-bold.ttf new file mode 100644 index 0000000000..39c27e2ab0 Binary files /dev/null and b/resources/themes/cura-light/fonts/noto-sans-display/noto-sans-display-600-semi-bold.ttf differ diff --git a/resources/themes/cura-light/fonts/noto-sans-display/noto-sans-display-700-bold-italic.ttf b/resources/themes/cura-light/fonts/noto-sans-display/noto-sans-display-700-bold-italic.ttf new file mode 100644 index 0000000000..7089e08be1 Binary files /dev/null and b/resources/themes/cura-light/fonts/noto-sans-display/noto-sans-display-700-bold-italic.ttf differ diff --git a/resources/themes/cura-light/fonts/noto-sans-display/noto-sans-display-700-bold.ttf b/resources/themes/cura-light/fonts/noto-sans-display/noto-sans-display-700-bold.ttf new file mode 100644 index 0000000000..47f0728946 Binary files /dev/null and b/resources/themes/cura-light/fonts/noto-sans-display/noto-sans-display-700-bold.ttf differ diff --git a/resources/themes/cura-light/fonts/noto-sans-display/noto-sans-display-800-extra-bold-italic.ttf b/resources/themes/cura-light/fonts/noto-sans-display/noto-sans-display-800-extra-bold-italic.ttf new file mode 100644 index 0000000000..148c2f80ad Binary files /dev/null and b/resources/themes/cura-light/fonts/noto-sans-display/noto-sans-display-800-extra-bold-italic.ttf differ diff --git a/resources/themes/cura-light/fonts/noto-sans-display/noto-sans-display-800-extra-bold.ttf b/resources/themes/cura-light/fonts/noto-sans-display/noto-sans-display-800-extra-bold.ttf new file mode 100644 index 0000000000..973938bfe8 Binary files /dev/null and b/resources/themes/cura-light/fonts/noto-sans-display/noto-sans-display-800-extra-bold.ttf differ diff --git a/resources/themes/cura-light/fonts/noto-sans-display/noto-sans-display-900-black-italic.ttf b/resources/themes/cura-light/fonts/noto-sans-display/noto-sans-display-900-black-italic.ttf new file mode 100644 index 0000000000..409757d744 Binary files /dev/null and b/resources/themes/cura-light/fonts/noto-sans-display/noto-sans-display-900-black-italic.ttf differ diff --git a/resources/themes/cura-light/fonts/noto-sans-display/noto-sans-display-900-black.ttf b/resources/themes/cura-light/fonts/noto-sans-display/noto-sans-display-900-black.ttf new file mode 100644 index 0000000000..333efd9a55 Binary files /dev/null and b/resources/themes/cura-light/fonts/noto-sans-display/noto-sans-display-900-black.ttf differ diff --git a/resources/themes/cura-light/fonts/noto-sans/LICENSE_OFL.txt b/resources/themes/cura-light/fonts/noto-sans/LICENSE_OFL.txt new file mode 100644 index 0000000000..d952d62c06 --- /dev/null +++ b/resources/themes/cura-light/fonts/noto-sans/LICENSE_OFL.txt @@ -0,0 +1,92 @@ +This Font Software is licensed under the SIL Open Font License, +Version 1.1. + +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font +creation efforts of academic and linguistic communities, and to +provide a free and open framework in which fonts may be shared and +improved in partnership with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply to +any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software +components as distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, +deleting, or substituting -- in part or in whole -- any of the +components of the Original Version, by changing formats or by porting +the Font Software to a new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, +modify, redistribute, and sell modified and unmodified copies of the +Font Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, in +Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the +corresponding Copyright Holder. This restriction only applies to the +primary font name as presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created using +the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/resources/themes/cura-light/fonts/noto-sans/noto-sans-100-thin-italic.ttf b/resources/themes/cura-light/fonts/noto-sans/noto-sans-100-thin-italic.ttf new file mode 100644 index 0000000000..f0bf0da52f Binary files /dev/null and b/resources/themes/cura-light/fonts/noto-sans/noto-sans-100-thin-italic.ttf differ diff --git a/resources/themes/cura-light/fonts/noto-sans/noto-sans-100-thin.ttf b/resources/themes/cura-light/fonts/noto-sans/noto-sans-100-thin.ttf new file mode 100644 index 0000000000..6f8b4eb58e Binary files /dev/null and b/resources/themes/cura-light/fonts/noto-sans/noto-sans-100-thin.ttf differ diff --git a/resources/themes/cura-light/fonts/noto-sans/noto-sans-200-extra-light-italic.ttf b/resources/themes/cura-light/fonts/noto-sans/noto-sans-200-extra-light-italic.ttf new file mode 100644 index 0000000000..3751b82180 Binary files /dev/null and b/resources/themes/cura-light/fonts/noto-sans/noto-sans-200-extra-light-italic.ttf differ diff --git a/resources/themes/cura-light/fonts/noto-sans/noto-sans-200-extra-light.ttf b/resources/themes/cura-light/fonts/noto-sans/noto-sans-200-extra-light.ttf new file mode 100644 index 0000000000..bfa4d4a9c9 Binary files /dev/null and b/resources/themes/cura-light/fonts/noto-sans/noto-sans-200-extra-light.ttf differ diff --git a/resources/themes/cura-light/fonts/noto-sans/noto-sans-300-light-italic.ttf b/resources/themes/cura-light/fonts/noto-sans/noto-sans-300-light-italic.ttf new file mode 100644 index 0000000000..4c338dba3c Binary files /dev/null and b/resources/themes/cura-light/fonts/noto-sans/noto-sans-300-light-italic.ttf differ diff --git a/resources/themes/cura-light/fonts/noto-sans/noto-sans-300-light.ttf b/resources/themes/cura-light/fonts/noto-sans/noto-sans-300-light.ttf new file mode 100644 index 0000000000..404ed0787c Binary files /dev/null and b/resources/themes/cura-light/fonts/noto-sans/noto-sans-300-light.ttf differ diff --git a/resources/themes/cura-light/fonts/noto-sans/noto-sans-400-regular-italic.ttf b/resources/themes/cura-light/fonts/noto-sans/noto-sans-400-regular-italic.ttf new file mode 100644 index 0000000000..6d2c71c864 Binary files /dev/null and b/resources/themes/cura-light/fonts/noto-sans/noto-sans-400-regular-italic.ttf differ diff --git a/resources/themes/cura-light/fonts/noto-sans/noto-sans-400-regular.ttf b/resources/themes/cura-light/fonts/noto-sans/noto-sans-400-regular.ttf new file mode 100644 index 0000000000..0a01a062f0 Binary files /dev/null and b/resources/themes/cura-light/fonts/noto-sans/noto-sans-400-regular.ttf differ diff --git a/resources/themes/cura-light/fonts/noto-sans/noto-sans-500-medium-italic.ttf b/resources/themes/cura-light/fonts/noto-sans/noto-sans-500-medium-italic.ttf new file mode 100644 index 0000000000..3641525eac Binary files /dev/null and b/resources/themes/cura-light/fonts/noto-sans/noto-sans-500-medium-italic.ttf differ diff --git a/resources/themes/cura-light/fonts/noto-sans/noto-sans-500-medium.ttf b/resources/themes/cura-light/fonts/noto-sans/noto-sans-500-medium.ttf new file mode 100644 index 0000000000..5dbefd3727 Binary files /dev/null and b/resources/themes/cura-light/fonts/noto-sans/noto-sans-500-medium.ttf differ diff --git a/resources/themes/cura-light/fonts/noto-sans/noto-sans-600-semi-bold-italic.ttf b/resources/themes/cura-light/fonts/noto-sans/noto-sans-600-semi-bold-italic.ttf new file mode 100644 index 0000000000..a7e904c38e Binary files /dev/null and b/resources/themes/cura-light/fonts/noto-sans/noto-sans-600-semi-bold-italic.ttf differ diff --git a/resources/themes/cura-light/fonts/noto-sans/noto-sans-600-semi-bold.ttf b/resources/themes/cura-light/fonts/noto-sans/noto-sans-600-semi-bold.ttf new file mode 100644 index 0000000000..8b7fd13026 Binary files /dev/null and b/resources/themes/cura-light/fonts/noto-sans/noto-sans-600-semi-bold.ttf differ diff --git a/resources/themes/cura-light/fonts/noto-sans/noto-sans-700-bold-italic.ttf b/resources/themes/cura-light/fonts/noto-sans/noto-sans-700-bold-italic.ttf new file mode 100644 index 0000000000..385e6acb77 Binary files /dev/null and b/resources/themes/cura-light/fonts/noto-sans/noto-sans-700-bold-italic.ttf differ diff --git a/resources/themes/cura-light/fonts/noto-sans/noto-sans-700-bold.ttf b/resources/themes/cura-light/fonts/noto-sans/noto-sans-700-bold.ttf new file mode 100644 index 0000000000..1db7886e94 Binary files /dev/null and b/resources/themes/cura-light/fonts/noto-sans/noto-sans-700-bold.ttf differ diff --git a/resources/themes/cura-light/fonts/noto-sans/noto-sans-800-extra-bold-italic.ttf b/resources/themes/cura-light/fonts/noto-sans/noto-sans-800-extra-bold-italic.ttf new file mode 100644 index 0000000000..cb17fee1ae Binary files /dev/null and b/resources/themes/cura-light/fonts/noto-sans/noto-sans-800-extra-bold-italic.ttf differ diff --git a/resources/themes/cura-light/fonts/noto-sans/noto-sans-800-extra-bold.ttf b/resources/themes/cura-light/fonts/noto-sans/noto-sans-800-extra-bold.ttf new file mode 100644 index 0000000000..d181ffa9e1 Binary files /dev/null and b/resources/themes/cura-light/fonts/noto-sans/noto-sans-800-extra-bold.ttf differ diff --git a/resources/themes/cura-light/fonts/noto-sans/noto-sans-900-black-italic.ttf b/resources/themes/cura-light/fonts/noto-sans/noto-sans-900-black-italic.ttf new file mode 100644 index 0000000000..1cf0fca658 Binary files /dev/null and b/resources/themes/cura-light/fonts/noto-sans/noto-sans-900-black-italic.ttf differ diff --git a/resources/themes/cura-light/fonts/noto-sans/noto-sans-900-black.ttf b/resources/themes/cura-light/fonts/noto-sans/noto-sans-900-black.ttf new file mode 100644 index 0000000000..aa9e05fc9d Binary files /dev/null and b/resources/themes/cura-light/fonts/noto-sans/noto-sans-900-black.ttf differ diff --git a/resources/themes/cura-light/icons/buildplate.svg b/resources/themes/cura-light/icons/buildplate.svg new file mode 100644 index 0000000000..9e61296958 --- /dev/null +++ b/resources/themes/cura-light/icons/buildplate.svg @@ -0,0 +1,17 @@ + + + + icn_buildplate + Created with Sketch. + + + + + + + + + + + + \ No newline at end of file diff --git a/resources/themes/cura-light/icons/connected.svg b/resources/themes/cura-light/icons/connected.svg new file mode 100644 index 0000000000..18423bb6c4 --- /dev/null +++ b/resources/themes/cura-light/icons/connected.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/resources/themes/cura-light/icons/disconnected.svg b/resources/themes/cura-light/icons/disconnected.svg new file mode 100644 index 0000000000..019dff117e --- /dev/null +++ b/resources/themes/cura-light/icons/disconnected.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/resources/themes/cura-light/icons/menu.svg b/resources/themes/cura-light/icons/menu.svg new file mode 100644 index 0000000000..85fbfb072c --- /dev/null +++ b/resources/themes/cura-light/icons/menu.svg @@ -0,0 +1,3 @@ + + + diff --git a/resources/themes/cura-light/icons/printer_group.svg b/resources/themes/cura-light/icons/printer_group.svg new file mode 100644 index 0000000000..614bea90b8 --- /dev/null +++ b/resources/themes/cura-light/icons/printer_group.svg @@ -0,0 +1,12 @@ + + + + icn_groupPrinters + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/resources/themes/cura-light/icons/printer_single.svg b/resources/themes/cura-light/icons/printer_single.svg new file mode 100644 index 0000000000..f7dc83987d --- /dev/null +++ b/resources/themes/cura-light/icons/printer_single.svg @@ -0,0 +1,14 @@ + + + + icn_singlePrinter + Created with Sketch. + + + + + + + + + \ No newline at end of file diff --git a/resources/themes/cura-light/styles.qml b/resources/themes/cura-light/styles.qml index 20f858c238..6b454b7cf1 100755 --- a/resources/themes/cura-light/styles.qml +++ b/resources/themes/cura-light/styles.qml @@ -121,13 +121,13 @@ QtObject { Item { anchors.centerIn: parent - width: textLabel.width + icon.width + Theme.getSize("default_margin").width / 2 + width: Math.round(textLabel.width + icon.width + Theme.getSize("default_margin").width / 2) Label { id: textLabel text: control.text anchors.right: icon.visible ? icon.left : parent.right - anchors.rightMargin: icon.visible ? Theme.getSize("default_margin").width / 2 : 0 + anchors.rightMargin: icon.visible ? Math.round(Theme.getSize("default_margin").width / 2) : 0 anchors.verticalCenter: parent.verticalCenter; font: control.checked ? UM.Theme.getFont("large") : UM.Theme.getFont("large_nonbold") color: @@ -268,7 +268,7 @@ QtObject { anchors.leftMargin: Theme.getSize("button_tooltip_arrow").width * 2 anchors.verticalCenter: parent.verticalCenter - target: Qt.point(parent.x, y + height/2) + target: Qt.point(parent.x, y + Math.round(height/2)) arrowSize: Theme.getSize("button_tooltip_arrow").width color: Theme.getColor("button_tooltip") opacity: control.hovered ? 1.0 : 0.0; @@ -329,9 +329,9 @@ QtObject { UM.RecolorImage { id: tool_button_arrow anchors.right: parent.right; - anchors.rightMargin: (Theme.getSize("button").width - Theme.getSize("button_icon").width) / 4 + anchors.rightMargin: Theme.getSize("button").width - Math.round(Theme.getSize("button_icon").width / 4) anchors.bottom: parent.bottom; - anchors.bottomMargin: (Theme.getSize("button").height - Theme.getSize("button_icon").height) / 4 + anchors.bottomMargin: Theme.getSize("button").height - Math.round(Theme.getSize("button_icon").height / 4) width: Theme.getSize("standard_arrow").width height: Theme.getSize("standard_arrow").height sourceSize.width: width @@ -669,7 +669,7 @@ QtObject { id: category_arrow anchors.verticalCenter: parent.verticalCenter anchors.right: parent.right - anchors.rightMargin: Theme.getSize("default_margin").width * 3 - width / 2 + anchors.rightMargin: Theme.getSize("default_margin").width * 3 - Math.round(width / 2) width: Theme.getSize("standard_arrow").width height: Theme.getSize("standard_arrow").height sourceSize.width: width @@ -712,14 +712,14 @@ QtObject { scrollBarBackground: Rectangle { implicitWidth: Theme.getSize("scrollbar").width - radius: implicitWidth / 2 + radius: Math.round(implicitWidth / 2) color: Theme.getColor("scrollbar_background"); } handle: Rectangle { id: scrollViewHandle implicitWidth: Theme.getSize("scrollbar").width; - radius: implicitWidth / 2 + radius: Math.round(implicitWidth / 2) color: styleData.pressed ? Theme.getColor("scrollbar_handle_down") : styleData.hovered ? Theme.getColor("scrollbar_handle_hover") : Theme.getColor("scrollbar_handle"); Behavior on color { ColorAnimation { duration: 50; } } @@ -806,12 +806,12 @@ QtObject { Rectangle { id: swatch - height: UM.Theme.getSize("setting_control").height / 2 + height: Math.round(UM.Theme.getSize("setting_control").height / 2) width: height anchors.right: downArrow.left anchors.verticalCenter: parent.verticalCenter - anchors.margins: UM.Theme.getSize("default_margin").width / 4 - radius: width / 2 + anchors.margins: Math.round(UM.Theme.getSize("default_margin").width / 4) + radius: Math.round(width / 2) border.width: UM.Theme.getSize("default_lining").width border.color: UM.Theme.getColor("lining") color: (control.color_override !== "") ? control.color_override : control.color @@ -845,7 +845,7 @@ QtObject { color: (control.hovered || control._hovered) ? Theme.getColor("checkbox_hover") : Theme.getColor("checkbox"); Behavior on color { ColorAnimation { duration: 50; } } - radius: control.exclusiveGroup ? Theme.getSize("checkbox").width / 2 : 0 + radius: control.exclusiveGroup ? Math.round(Theme.getSize("checkbox").width / 2) : 0 border.width: Theme.getSize("default_lining").width; border.color: (control.hovered || control._hovered) ? Theme.getColor("checkbox_border_hover") : Theme.getColor("checkbox_border"); @@ -853,8 +853,8 @@ QtObject { UM.RecolorImage { anchors.verticalCenter: parent.verticalCenter anchors.horizontalCenter: parent.horizontalCenter - width: parent.width / 2.5 - height: parent.height / 2.5 + width: Math.round(parent.width / 2.5) + height: Math.round(parent.height / 2.5) sourceSize.width: width sourceSize.height: width color: Theme.getColor("checkbox_mark") @@ -882,7 +882,7 @@ QtObject { color: (control.hovered || control._hovered) ? Theme.getColor("checkbox_hover") : Theme.getColor("checkbox"); Behavior on color { ColorAnimation { duration: 50; } } - radius: control.exclusiveGroup ? Theme.getSize("checkbox").width / 2 : 0 + radius: control.exclusiveGroup ? Math.round(Theme.getSize("checkbox").width / 2) : 0 border.width: Theme.getSize("default_lining").width; border.color: (control.hovered || control._hovered) ? Theme.getColor("checkbox_border_hover") : Theme.getColor("checkbox_border"); @@ -890,8 +890,8 @@ QtObject { UM.RecolorImage { anchors.verticalCenter: parent.verticalCenter anchors.horizontalCenter: parent.horizontalCenter - width: parent.width / 2.5 - height: parent.height / 2.5 + width: Math.round(parent.width / 2.5) + height: Math.round(parent.height / 2.5) sourceSize.width: width sourceSize.height: width color: Theme.getColor("checkbox_mark") @@ -925,7 +925,7 @@ QtObject { border.width: Theme.getSize("default_lining").width; border.color: Theme.getColor("slider_groove_border"); - radius: width / 2; + radius: Math.round(width / 2); Rectangle { anchors { @@ -934,8 +934,8 @@ QtObject { bottom: parent.bottom; } color: Theme.getColor("slider_groove_fill"); - width: (control.value / (control.maximumValue - control.minimumValue)) * parent.width; - radius: width / 2; + width: Math.round((control.value / (control.maximumValue - control.minimumValue)) * parent.width); + radius: Math.round(width / 2); } } handle: Rectangle { @@ -944,7 +944,7 @@ QtObject { color: control.hovered ? Theme.getColor("slider_handle_hover") : Theme.getColor("slider_handle"); border.width: Theme.getSize("default_lining").width border.color: control.hovered ? Theme.getColor("slider_handle_hover_border") : Theme.getColor("slider_handle_border") - radius: Theme.getSize("slider_handle").width / 2; //Round. + radius: Math.round(Theme.getSize("slider_handle").width / 2); //Round. Behavior on color { ColorAnimation { duration: 50; } } } } diff --git a/resources/themes/cura-light/theme.json b/resources/themes/cura-light/theme.json index 51c96a5f82..c0b71ac618 100644 --- a/resources/themes/cura-light/theme.json +++ b/resources/themes/cura-light/theme.json @@ -5,50 +5,65 @@ "fonts": { "large": { - "size": 1.25, - "bold": true, - "family": "Open Sans" + "size": 1.35, + "weight": 63, + "family": "Noto Sans" }, "large_nonbold": { - "size": 1.25, - "family": "Open Sans" + "size": 1.35, + "weight": 50, + "family": "Noto Sans" + }, + "medium": { + "size": 1.16, + "weight": 50, + "family": "Noto Sans" + }, + "medium_bold": { + "size": 1.16, + "weight": 63, + "family": "Noto Sans" }, "default": { - "size": 1.15, - "family": "Open Sans" + "size": 1.0, + "weight": 50, + "family": "Noto Sans" }, "default_bold": { - "size": 1.15, - "bold": true, - "family": "Open Sans" + "size": 1.0, + "weight": 63, + "family": "Noto Sans" }, "default_italic": { "size": 1.15, + "weight": 50, "italic": true, - "family": "Open Sans" + "family": "Noto Sans" }, "small": { "size": 1.0, - "bold": true, - "family": "Open Sans" + "weight": 63, + "family": "Noto Sans" }, "very_small": { "size": 1.0, - "family": "Open Sans" + "weight": 50, + "family": "Noto Sans" }, "button_tooltip": { "size": 1.0, - "family": "Open Sans" + "weight": 50, + "family": "Noto Sans" }, "setting_category": { "size": 1.15, - "bold": true, - "family": "Open Sans" + "weight": 63, + "family": "Noto Sans" }, "action_button": { "size": 1.15, - "bold": true, - "family": "Open Sans" + "weight": 50, + "family": "Noto Sans" } }, @@ -284,7 +299,21 @@ "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, 50] + "layerview_nozzle": [181, 166, 66, 50], + + "configuration_item": [255, 255, 255, 0], + "configuration_item_active": [12, 169, 227, 32], + "configuration_item_text": [0, 0, 0, 255], + "configuration_item_text_active": [0, 0, 0, 255], + "configuration_item_border": [127, 127, 127, 255], + "configuration_item_border_active": [12, 169, 227, 32], + "configuration_item_border_hover": [12, 169, 227, 255], + + "tab_status_connected": [12, 169, 227, 255], + "tab_status_disconnected": [200, 200, 200, 255], + + "printer_config_matched": [12, 169, 227, 255], + "printer_config_mismatch": [127, 127, 127, 255] }, "sizes": { @@ -337,6 +366,9 @@ "small_button": [2, 2], "small_button_icon": [1.5, 1.5], + "printer_status_icon": [1.8, 1.8], + "printer_sync_icon": [1.2, 1.2], + "topbar_logo_right_margin": [3, 0], "topbar_button": [8, 4], "topbar_button_icon": [1.2, 1.2], diff --git a/resources/variants/cartesio_0.25.inst.cfg b/resources/variants/cartesio_0.25.inst.cfg index 0e082e5afa..a3fbe67606 100644 --- a/resources/variants/cartesio_0.25.inst.cfg +++ b/resources/variants/cartesio_0.25.inst.cfg @@ -1,12 +1,13 @@ [general] name = 0.25 mm -version = 2 +version = 3 definition = cartesio [metadata] author = Cartesio -type = variant setting_version = 4 +type = variant +hardware_type = nozzle [values] machine_nozzle_size = 0.25 diff --git a/resources/variants/cartesio_0.4.inst.cfg b/resources/variants/cartesio_0.4.inst.cfg index 27d07c0328..d5fbc4dc26 100644 --- a/resources/variants/cartesio_0.4.inst.cfg +++ b/resources/variants/cartesio_0.4.inst.cfg @@ -1,12 +1,13 @@ [general] name = 0.4 mm -version = 2 +version = 3 definition = cartesio [metadata] author = Cartesio -type = variant setting_version = 4 +type = variant +hardware_type = nozzle [values] machine_nozzle_size = 0.4 diff --git a/resources/variants/cartesio_0.8.inst.cfg b/resources/variants/cartesio_0.8.inst.cfg index e96c78d922..a309c47424 100644 --- a/resources/variants/cartesio_0.8.inst.cfg +++ b/resources/variants/cartesio_0.8.inst.cfg @@ -1,12 +1,13 @@ [general] name = 0.8 mm -version = 2 +version = 3 definition = cartesio [metadata] author = Cartesio -type = variant setting_version = 4 +type = variant +hardware_type = nozzle [values] machine_nozzle_size = 0.8 diff --git a/resources/variants/fabtotum_hyb35.inst.cfg b/resources/variants/fabtotum_hyb35.inst.cfg index 01e94728da..d96189e88e 100644 --- a/resources/variants/fabtotum_hyb35.inst.cfg +++ b/resources/variants/fabtotum_hyb35.inst.cfg @@ -1,12 +1,13 @@ [general] name = Hybrid 0.35 mm -version = 2 +version = 3 definition = fabtotum [metadata] author = FABtotum -type = variant setting_version = 4 +type = variant +hardware_type = nozzle [values] machine_nozzle_size = 0.35 diff --git a/resources/variants/fabtotum_lite04.inst.cfg b/resources/variants/fabtotum_lite04.inst.cfg index ee270a9ead..0309b81733 100644 --- a/resources/variants/fabtotum_lite04.inst.cfg +++ b/resources/variants/fabtotum_lite04.inst.cfg @@ -1,12 +1,13 @@ [general] name = Lite 0.4 mm -version = 2 +version = 3 definition = fabtotum [metadata] author = FABtotum -type = variant setting_version = 4 +type = variant +hardware_type = nozzle [values] machine_nozzle_size = 0.4 diff --git a/resources/variants/fabtotum_lite06.inst.cfg b/resources/variants/fabtotum_lite06.inst.cfg index 49722a50d1..c92e621bd2 100644 --- a/resources/variants/fabtotum_lite06.inst.cfg +++ b/resources/variants/fabtotum_lite06.inst.cfg @@ -1,12 +1,13 @@ [general] name = Lite 0.6 mm -version = 2 +version = 3 definition = fabtotum [metadata] author = FABtotum -type = variant setting_version = 4 +type = variant +hardware_type = nozzle [values] machine_nozzle_size = 0.6 diff --git a/resources/variants/fabtotum_pro02.inst.cfg b/resources/variants/fabtotum_pro02.inst.cfg index 376588fe71..29d245a24a 100644 --- a/resources/variants/fabtotum_pro02.inst.cfg +++ b/resources/variants/fabtotum_pro02.inst.cfg @@ -1,12 +1,13 @@ [general] name = Pro 0.2 mm -version = 2 +version = 3 definition = fabtotum [metadata] author = FABtotum -type = variant setting_version = 4 +type = variant +hardware_type = nozzle [values] machine_nozzle_size = 0.2 diff --git a/resources/variants/fabtotum_pro04.inst.cfg b/resources/variants/fabtotum_pro04.inst.cfg index 54294c572c..42be71b89d 100644 --- a/resources/variants/fabtotum_pro04.inst.cfg +++ b/resources/variants/fabtotum_pro04.inst.cfg @@ -1,12 +1,13 @@ [general] name = Pro 0.4 mm -version = 2 +version = 3 definition = fabtotum [metadata] author = FABtotum -type = variant setting_version = 4 +type = variant +hardware_type = nozzle [values] machine_nozzle_size = 0.4 diff --git a/resources/variants/fabtotum_pro06.inst.cfg b/resources/variants/fabtotum_pro06.inst.cfg index f1055b6ade..9c17d83f47 100644 --- a/resources/variants/fabtotum_pro06.inst.cfg +++ b/resources/variants/fabtotum_pro06.inst.cfg @@ -1,12 +1,13 @@ [general] name = Pro 0.6 mm -version = 2 +version = 3 definition = fabtotum [metadata] author = FABtotum -type = variant setting_version = 4 +type = variant +hardware_type = nozzle [values] machine_nozzle_size = 0.6 diff --git a/resources/variants/fabtotum_pro08.inst.cfg b/resources/variants/fabtotum_pro08.inst.cfg index ef7eb172be..2fc5507024 100644 --- a/resources/variants/fabtotum_pro08.inst.cfg +++ b/resources/variants/fabtotum_pro08.inst.cfg @@ -1,12 +1,13 @@ [general] name = Pro 0.8 mm -version = 2 +version = 3 definition = fabtotum [metadata] author = FABtotum -type = variant setting_version = 4 +type = variant +hardware_type = nozzle [values] machine_nozzle_size = 0.8 diff --git a/resources/variants/gmax15plus_025_e3d.inst.cfg b/resources/variants/gmax15plus_025_e3d.inst.cfg new file mode 100644 index 0000000000..53e6a14b23 --- /dev/null +++ b/resources/variants/gmax15plus_025_e3d.inst.cfg @@ -0,0 +1,13 @@ +[general] +name = 0.25mm E3D (Difficult) +version = 3 +definition = gmax15plus + +[metadata] +author = gcreate +setting_version = 4 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.25 diff --git a/resources/variants/gmax15plus_04_e3d.inst.cfg b/resources/variants/gmax15plus_04_e3d.inst.cfg new file mode 100644 index 0000000000..a0b0d58b92 --- /dev/null +++ b/resources/variants/gmax15plus_04_e3d.inst.cfg @@ -0,0 +1,13 @@ +[general] +name = 0.4mm E3D +version = 3 +definition = gmax15plus + +[metadata] +author = gcreate +setting_version = 4 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.4 diff --git a/resources/variants/gmax15plus_05_e3d.inst.cfg b/resources/variants/gmax15plus_05_e3d.inst.cfg new file mode 100644 index 0000000000..333ab55f81 --- /dev/null +++ b/resources/variants/gmax15plus_05_e3d.inst.cfg @@ -0,0 +1,13 @@ +[general] +name = 0.5mm E3D (Default) +version = 3 +definition = gmax15plus + +[metadata] +author = gcreate +setting_version = 4 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.5 diff --git a/resources/variants/gmax15plus_05_jhead.inst.cfg b/resources/variants/gmax15plus_05_jhead.inst.cfg new file mode 100644 index 0000000000..51902ffa0c --- /dev/null +++ b/resources/variants/gmax15plus_05_jhead.inst.cfg @@ -0,0 +1,13 @@ +[general] +name = 0.5mm J-Head +version = 3 +definition = gmax15plus + +[metadata] +author = gcreate +setting_version = 4 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.5 diff --git a/resources/variants/gmax15plus_06_e3d.inst.cfg b/resources/variants/gmax15plus_06_e3d.inst.cfg new file mode 100644 index 0000000000..3452e5e81f --- /dev/null +++ b/resources/variants/gmax15plus_06_e3d.inst.cfg @@ -0,0 +1,13 @@ +[general] +name = 0.6mm E3D +version = 3 +definition = gmax15plus + +[metadata] +author = gcreate +setting_version = 4 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.6 diff --git a/resources/variants/gmax15plus_08_e3d.inst.cfg b/resources/variants/gmax15plus_08_e3d.inst.cfg new file mode 100644 index 0000000000..cdee755efc --- /dev/null +++ b/resources/variants/gmax15plus_08_e3d.inst.cfg @@ -0,0 +1,13 @@ +[general] +name = 0.8mm E3D +version = 3 +definition = gmax15plus + +[metadata] +author = gcreate +setting_version = 4 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.8 diff --git a/resources/variants/gmax15plus_10_jhead.inst.cfg b/resources/variants/gmax15plus_10_jhead.inst.cfg new file mode 100644 index 0000000000..ee60c71cc2 --- /dev/null +++ b/resources/variants/gmax15plus_10_jhead.inst.cfg @@ -0,0 +1,13 @@ +[general] +name = 1.0mm J-Head +version = 3 +definition = gmax15plus + +[metadata] +author = gcreate +setting_version = 4 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.5 diff --git a/resources/variants/gmax15plus_dual_025_e3d.inst.cfg b/resources/variants/gmax15plus_dual_025_e3d.inst.cfg new file mode 100644 index 0000000000..002af1a0c5 --- /dev/null +++ b/resources/variants/gmax15plus_dual_025_e3d.inst.cfg @@ -0,0 +1,13 @@ +[general] +name = 0.25mm E3D (Difficult) +version = 3 +definition = gmax15plus_dual + +[metadata] +author = gcreate +setting_version = 4 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.25 diff --git a/resources/variants/gmax15plus_dual_04_e3d.inst.cfg b/resources/variants/gmax15plus_dual_04_e3d.inst.cfg new file mode 100644 index 0000000000..a98637e9e1 --- /dev/null +++ b/resources/variants/gmax15plus_dual_04_e3d.inst.cfg @@ -0,0 +1,13 @@ +[general] +name = 0.4mm E3D +version = 3 +definition = gmax15plus_dual + +[metadata] +author = gcreate +setting_version = 4 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.4 diff --git a/resources/variants/gmax15plus_dual_05_e3d.inst.cfg b/resources/variants/gmax15plus_dual_05_e3d.inst.cfg new file mode 100644 index 0000000000..dc7d711043 --- /dev/null +++ b/resources/variants/gmax15plus_dual_05_e3d.inst.cfg @@ -0,0 +1,13 @@ +[general] +name = 0.5mm E3D (Default) +version = 3 +definition = gmax15plus_dual + +[metadata] +author = gcreate +setting_version = 4 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.5 diff --git a/resources/variants/gmax15plus_dual_05_jhead.inst.cfg b/resources/variants/gmax15plus_dual_05_jhead.inst.cfg new file mode 100644 index 0000000000..fc4f17d057 --- /dev/null +++ b/resources/variants/gmax15plus_dual_05_jhead.inst.cfg @@ -0,0 +1,13 @@ +[general] +name = 0.5mm J-Head +version = 3 +definition = gmax15plus_dual + +[metadata] +author = gcreate +setting_version = 4 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.5 diff --git a/resources/variants/gmax15plus_dual_06_e3d.inst.cfg b/resources/variants/gmax15plus_dual_06_e3d.inst.cfg new file mode 100644 index 0000000000..506f2df06e --- /dev/null +++ b/resources/variants/gmax15plus_dual_06_e3d.inst.cfg @@ -0,0 +1,13 @@ +[general] +name = 0.6mm E3D +version = 3 +definition = gmax15plus_dual + +[metadata] +author = gcreate +setting_version = 4 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.6 diff --git a/resources/variants/gmax15plus_dual_08_e3d.inst.cfg b/resources/variants/gmax15plus_dual_08_e3d.inst.cfg new file mode 100644 index 0000000000..d008df70f6 --- /dev/null +++ b/resources/variants/gmax15plus_dual_08_e3d.inst.cfg @@ -0,0 +1,13 @@ +[general] +name = 0.8mm E3D +version = 3 +definition = gmax15plus_dual + +[metadata] +author = gcreate +setting_version = 4 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.8 diff --git a/resources/variants/gmax15plus_dual_10_jhead.inst.cfg b/resources/variants/gmax15plus_dual_10_jhead.inst.cfg new file mode 100644 index 0000000000..825810997e --- /dev/null +++ b/resources/variants/gmax15plus_dual_10_jhead.inst.cfg @@ -0,0 +1,13 @@ +[general] +name = 1.0mm J-Head +version = 3 +definition = gmax15plus_dual + +[metadata] +author = gcreate +setting_version = 4 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.5 diff --git a/resources/variants/imade3d_jellybox_0.4.inst.cfg b/resources/variants/imade3d_jellybox_0.4.inst.cfg index ce9e82e59a..99b55866c7 100644 --- a/resources/variants/imade3d_jellybox_0.4.inst.cfg +++ b/resources/variants/imade3d_jellybox_0.4.inst.cfg @@ -1,12 +1,13 @@ [general] name = 0.4 mm -version = 2 +version = 3 definition = imade3d_jellybox [metadata] author = IMADE3D -type = variant setting_version = 4 +type = variant +hardware_type = nozzle [values] machine_nozzle_size = 0.4 diff --git a/resources/variants/imade3d_jellybox_0.4_2-fans.inst.cfg b/resources/variants/imade3d_jellybox_0.4_2-fans.inst.cfg index 60f9793b2a..890c394a36 100644 --- a/resources/variants/imade3d_jellybox_0.4_2-fans.inst.cfg +++ b/resources/variants/imade3d_jellybox_0.4_2-fans.inst.cfg @@ -1,12 +1,13 @@ [general] name = 0.4 mm 2-fans -version = 2 +version = 3 definition = imade3d_jellybox [metadata] author = IMADE3D -type = variant setting_version = 4 +type = variant +hardware_type = nozzle [values] machine_nozzle_size = 0.4 diff --git a/resources/variants/ultimaker2_0.25.inst.cfg b/resources/variants/ultimaker2_0.25.inst.cfg index 04084867dd..c4d778e5cf 100644 --- a/resources/variants/ultimaker2_0.25.inst.cfg +++ b/resources/variants/ultimaker2_0.25.inst.cfg @@ -1,14 +1,14 @@ [general] name = 0.25 mm -version = 2 +version = 3 definition = ultimaker2 [metadata] -author = Ultimaker -type = variant setting_version = 4 +type = variant +hardware_type = nozzle [values] machine_nozzle_size = 0.25 machine_nozzle_tip_outer_diameter = 0.8 -raft_airgap = 0.25 \ No newline at end of file +raft_airgap = 0.25 diff --git a/resources/variants/ultimaker2_0.4.inst.cfg b/resources/variants/ultimaker2_0.4.inst.cfg index f21d85e258..2ce766a1ac 100644 --- a/resources/variants/ultimaker2_0.4.inst.cfg +++ b/resources/variants/ultimaker2_0.4.inst.cfg @@ -1,12 +1,12 @@ [general] name = 0.4 mm -version = 2 +version = 3 definition = ultimaker2 [metadata] -author = Ultimaker -type = variant setting_version = 4 +type = variant +hardware_type = nozzle [values] machine_nozzle_size = 0.4 diff --git a/resources/variants/ultimaker2_0.6.inst.cfg b/resources/variants/ultimaker2_0.6.inst.cfg index 04128cc297..0c5bdca240 100644 --- a/resources/variants/ultimaker2_0.6.inst.cfg +++ b/resources/variants/ultimaker2_0.6.inst.cfg @@ -1,12 +1,12 @@ [general] name = 0.6 mm -version = 2 +version = 3 definition = ultimaker2 [metadata] -author = Ultimaker -type = variant setting_version = 4 +type = variant +hardware_type = nozzle [values] machine_nozzle_size = 0.6 diff --git a/resources/variants/ultimaker2_0.8.inst.cfg b/resources/variants/ultimaker2_0.8.inst.cfg index 400069d60b..fd11520eca 100644 --- a/resources/variants/ultimaker2_0.8.inst.cfg +++ b/resources/variants/ultimaker2_0.8.inst.cfg @@ -1,12 +1,12 @@ [general] name = 0.8 mm -version = 2 +version = 3 definition = ultimaker2 [metadata] -author = Ultimaker -type = variant setting_version = 4 +type = variant +hardware_type = nozzle [values] machine_nozzle_size = 0.8 diff --git a/resources/variants/ultimaker2_extended_0.25.inst.cfg b/resources/variants/ultimaker2_extended_0.25.inst.cfg index bdff9a5795..b8a31641e3 100644 --- a/resources/variants/ultimaker2_extended_0.25.inst.cfg +++ b/resources/variants/ultimaker2_extended_0.25.inst.cfg @@ -1,12 +1,12 @@ [general] name = 0.25 mm -version = 2 +version = 3 definition = ultimaker2_extended [metadata] -author = Ultimaker -type = variant setting_version = 4 +type = variant +hardware_type = nozzle [values] machine_nozzle_size = 0.25 diff --git a/resources/variants/ultimaker2_extended_0.4.inst.cfg b/resources/variants/ultimaker2_extended_0.4.inst.cfg index 2af9a75024..dbceac2890 100644 --- a/resources/variants/ultimaker2_extended_0.4.inst.cfg +++ b/resources/variants/ultimaker2_extended_0.4.inst.cfg @@ -1,12 +1,12 @@ [general] name = 0.4 mm -version = 2 +version = 3 definition = ultimaker2_extended [metadata] -author = Ultimaker -type = variant setting_version = 4 +type = variant +hardware_type = nozzle [values] machine_nozzle_size = 0.4 diff --git a/resources/variants/ultimaker2_extended_0.6.inst.cfg b/resources/variants/ultimaker2_extended_0.6.inst.cfg index e0753f1c28..6fbb489160 100644 --- a/resources/variants/ultimaker2_extended_0.6.inst.cfg +++ b/resources/variants/ultimaker2_extended_0.6.inst.cfg @@ -1,12 +1,12 @@ [general] name = 0.6 mm -version = 2 +version = 3 definition = ultimaker2_extended [metadata] -author = Ultimaker -type = variant setting_version = 4 +type = variant +hardware_type = nozzle [values] machine_nozzle_size = 0.6 diff --git a/resources/variants/ultimaker2_extended_0.8.inst.cfg b/resources/variants/ultimaker2_extended_0.8.inst.cfg index 43c033b799..94b38de8f2 100644 --- a/resources/variants/ultimaker2_extended_0.8.inst.cfg +++ b/resources/variants/ultimaker2_extended_0.8.inst.cfg @@ -1,12 +1,12 @@ [general] name = 0.8 mm -version = 2 +version = 3 definition = ultimaker2_extended [metadata] -author = Ultimaker -type = variant setting_version = 4 +type = variant +hardware_type = nozzle [values] machine_nozzle_size = 0.8 diff --git a/resources/variants/ultimaker2_extended_plus_0.25.inst.cfg b/resources/variants/ultimaker2_extended_plus_0.25.inst.cfg index 7f1bff4b0c..89916470bb 100644 --- a/resources/variants/ultimaker2_extended_plus_0.25.inst.cfg +++ b/resources/variants/ultimaker2_extended_plus_0.25.inst.cfg @@ -1,12 +1,12 @@ [general] name = 0.25 mm -version = 2 +version = 3 definition = ultimaker2_extended_plus [metadata] -author = Ultimaker -type = variant setting_version = 4 +type = variant +hardware_type = nozzle [values] machine_nozzle_size = 0.25 diff --git a/resources/variants/ultimaker2_extended_plus_0.4.inst.cfg b/resources/variants/ultimaker2_extended_plus_0.4.inst.cfg index f6747d059d..0de416da11 100644 --- a/resources/variants/ultimaker2_extended_plus_0.4.inst.cfg +++ b/resources/variants/ultimaker2_extended_plus_0.4.inst.cfg @@ -1,12 +1,12 @@ [general] name = 0.4 mm -version = 2 +version = 3 definition = ultimaker2_extended_plus [metadata] -author = Ultimaker -type = variant setting_version = 4 +type = variant +hardware_type = nozzle [values] machine_nozzle_size = 0.4 diff --git a/resources/variants/ultimaker2_extended_plus_0.6.inst.cfg b/resources/variants/ultimaker2_extended_plus_0.6.inst.cfg index 706e4b8aa6..4e6ace5a59 100644 --- a/resources/variants/ultimaker2_extended_plus_0.6.inst.cfg +++ b/resources/variants/ultimaker2_extended_plus_0.6.inst.cfg @@ -1,12 +1,12 @@ [general] name = 0.6 mm -version = 2 +version = 3 definition = ultimaker2_extended_plus [metadata] -author = Ultimaker -type = variant setting_version = 4 +type = variant +hardware_type = nozzle [values] machine_nozzle_size = 0.6 diff --git a/resources/variants/ultimaker2_extended_plus_0.8.inst.cfg b/resources/variants/ultimaker2_extended_plus_0.8.inst.cfg index 287c3155b8..7540d5783a 100644 --- a/resources/variants/ultimaker2_extended_plus_0.8.inst.cfg +++ b/resources/variants/ultimaker2_extended_plus_0.8.inst.cfg @@ -1,12 +1,12 @@ [general] name = 0.8 mm -version = 2 +version = 3 definition = ultimaker2_extended_plus [metadata] -author = Ultimaker -type = variant setting_version = 4 +type = variant +hardware_type = nozzle [values] machine_nozzle_size = 0.8 diff --git a/resources/variants/ultimaker2_plus_0.25.inst.cfg b/resources/variants/ultimaker2_plus_0.25.inst.cfg index 1d4617c86b..d59476a4f7 100644 --- a/resources/variants/ultimaker2_plus_0.25.inst.cfg +++ b/resources/variants/ultimaker2_plus_0.25.inst.cfg @@ -1,12 +1,12 @@ [general] name = 0.25 mm -version = 2 +version = 3 definition = ultimaker2_plus [metadata] -author = Ultimaker -type = variant setting_version = 4 +type = variant +hardware_type = nozzle [values] coasting_min_volume = 0.17 diff --git a/resources/variants/ultimaker2_plus_0.4.inst.cfg b/resources/variants/ultimaker2_plus_0.4.inst.cfg index 75a665ad95..a188d10d4a 100644 --- a/resources/variants/ultimaker2_plus_0.4.inst.cfg +++ b/resources/variants/ultimaker2_plus_0.4.inst.cfg @@ -1,12 +1,12 @@ [general] name = 0.4 mm -version = 2 +version = 3 definition = ultimaker2_plus [metadata] -author = Ultimaker -type = variant setting_version = 4 +type = variant +hardware_type = nozzle [values] machine_nozzle_size = 0.4 diff --git a/resources/variants/ultimaker2_plus_0.6.inst.cfg b/resources/variants/ultimaker2_plus_0.6.inst.cfg index 60bbbaa049..b3aad334c3 100644 --- a/resources/variants/ultimaker2_plus_0.6.inst.cfg +++ b/resources/variants/ultimaker2_plus_0.6.inst.cfg @@ -1,12 +1,12 @@ [general] name = 0.6 mm -version = 2 +version = 3 definition = ultimaker2_plus [metadata] -author = Ultimaker -type = variant setting_version = 4 +type = variant +hardware_type = nozzle [values] machine_nozzle_size = 0.6 diff --git a/resources/variants/ultimaker2_plus_0.8.inst.cfg b/resources/variants/ultimaker2_plus_0.8.inst.cfg index 339b320af3..3c5dec79f6 100644 --- a/resources/variants/ultimaker2_plus_0.8.inst.cfg +++ b/resources/variants/ultimaker2_plus_0.8.inst.cfg @@ -1,12 +1,12 @@ [general] name = 0.8 mm -version = 2 +version = 3 definition = ultimaker2_plus [metadata] -author = Ultimaker -type = variant setting_version = 4 +type = variant +hardware_type = nozzle [values] machine_nozzle_size = 0.8 diff --git a/resources/variants/ultimaker3_aa0.25.inst.cfg b/resources/variants/ultimaker3_aa0.25.inst.cfg index e6f852c02c..447bf0e49c 100644 --- a/resources/variants/ultimaker3_aa0.25.inst.cfg +++ b/resources/variants/ultimaker3_aa0.25.inst.cfg @@ -1,12 +1,12 @@ [general] name = AA 0.25 -version = 2 +version = 3 definition = ultimaker3 [metadata] -author = ultimaker -type = variant setting_version = 4 +type = variant +hardware_type = nozzle [values] brim_width = 7 diff --git a/resources/variants/ultimaker3_aa0.8.inst.cfg b/resources/variants/ultimaker3_aa0.8.inst.cfg index de7dfcc364..0bccf91b7c 100644 --- a/resources/variants/ultimaker3_aa0.8.inst.cfg +++ b/resources/variants/ultimaker3_aa0.8.inst.cfg @@ -1,12 +1,12 @@ [general] name = AA 0.8 -version = 2 +version = 3 definition = ultimaker3 [metadata] -author = ultimaker -type = variant setting_version = 4 +type = variant +hardware_type = nozzle [values] acceleration_enabled = True @@ -45,7 +45,6 @@ retraction_amount = 6.5 retraction_count_max = 25 retraction_extrusion_window = 1 retraction_hop = 2 -retraction_hop_enabled = True retraction_hop_only_when_collides = True skin_overlap = 5 speed_equalize_flow_enabled = True diff --git a/resources/variants/ultimaker3_aa04.inst.cfg b/resources/variants/ultimaker3_aa04.inst.cfg index 289ae185b0..0e0187e4df 100644 --- a/resources/variants/ultimaker3_aa04.inst.cfg +++ b/resources/variants/ultimaker3_aa04.inst.cfg @@ -1,17 +1,18 @@ [general] name = AA 0.4 -version = 2 +version = 3 definition = ultimaker3 [metadata] -author = ultimaker -type = variant setting_version = 4 +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 @@ -39,4 +40,3 @@ 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/ultimaker3_bb0.8.inst.cfg b/resources/variants/ultimaker3_bb0.8.inst.cfg index 2cb3103dcf..ef6dc625ac 100644 --- a/resources/variants/ultimaker3_bb0.8.inst.cfg +++ b/resources/variants/ultimaker3_bb0.8.inst.cfg @@ -1,12 +1,12 @@ [general] name = BB 0.8 -version = 2 +version = 3 definition = ultimaker3 [metadata] -author = ultimaker -type = variant setting_version = 4 +type = variant +hardware_type = nozzle [values] acceleration_enabled = True @@ -56,7 +56,6 @@ retraction_amount = 4.5 retraction_count_max = 15 retraction_extrusion_window = =retraction_amount retraction_hop = 2 -retraction_hop_enabled = True retraction_hop_only_when_collides = True retraction_min_travel = 5 retraction_prime_speed = 15 diff --git a/resources/variants/ultimaker3_bb04.inst.cfg b/resources/variants/ultimaker3_bb04.inst.cfg index 5dc0b2832a..91e70f9f98 100644 --- a/resources/variants/ultimaker3_bb04.inst.cfg +++ b/resources/variants/ultimaker3_bb04.inst.cfg @@ -1,12 +1,12 @@ [general] name = BB 0.4 -version = 2 +version = 3 definition = ultimaker3 [metadata] -author = ultimaker -type = variant setting_version = 4 +type = variant +hardware_type = nozzle [values] acceleration_support = =math.ceil(acceleration_print * 2000 / 4000) @@ -20,6 +20,7 @@ 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 prime_tower_purge_volume = 1 raft_base_speed = 20 raft_interface_speed = 20 @@ -46,4 +47,4 @@ 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 \ No newline at end of file +switch_extruder_retraction_amount = 12 diff --git a/resources/variants/ultimaker3_extended_aa0.25.inst.cfg b/resources/variants/ultimaker3_extended_aa0.25.inst.cfg index 631768346e..b06ec0830b 100644 --- a/resources/variants/ultimaker3_extended_aa0.25.inst.cfg +++ b/resources/variants/ultimaker3_extended_aa0.25.inst.cfg @@ -1,12 +1,12 @@ [general] name = AA 0.25 -version = 2 +version = 3 definition = ultimaker3_extended [metadata] -author = ultimaker -type = variant setting_version = 4 +type = variant +hardware_type = nozzle [values] brim_width = 7 @@ -37,4 +37,3 @@ support_z_distance = =layer_height * 2 top_bottom_thickness = 1.2 wall_line_width_x = 0.23 wall_thickness = 1.3 - diff --git a/resources/variants/ultimaker3_extended_aa0.8.inst.cfg b/resources/variants/ultimaker3_extended_aa0.8.inst.cfg index b2ad86ff01..184416b06e 100644 --- a/resources/variants/ultimaker3_extended_aa0.8.inst.cfg +++ b/resources/variants/ultimaker3_extended_aa0.8.inst.cfg @@ -1,12 +1,12 @@ [general] name = AA 0.8 -version = 2 +version = 3 definition = ultimaker3_extended [metadata] -author = ultimaker -type = variant setting_version = 4 +type = variant +hardware_type = nozzle [values] acceleration_enabled = True @@ -45,7 +45,6 @@ retraction_amount = 6.5 retraction_count_max = 25 retraction_extrusion_window = 1 retraction_hop = 2 -retraction_hop_enabled = True retraction_hop_only_when_collides = True skin_overlap = 5 speed_equalize_flow_enabled = True diff --git a/resources/variants/ultimaker3_extended_aa04.inst.cfg b/resources/variants/ultimaker3_extended_aa04.inst.cfg index fdea4de08c..8a2f061224 100644 --- a/resources/variants/ultimaker3_extended_aa04.inst.cfg +++ b/resources/variants/ultimaker3_extended_aa04.inst.cfg @@ -1,17 +1,18 @@ [general] name = AA 0.4 -version = 2 +version = 3 definition = ultimaker3_extended [metadata] -author = ultimaker -type = variant setting_version = 4 +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 diff --git a/resources/variants/ultimaker3_extended_bb0.8.inst.cfg b/resources/variants/ultimaker3_extended_bb0.8.inst.cfg index 6ab16c4f10..8a1a9373f3 100644 --- a/resources/variants/ultimaker3_extended_bb0.8.inst.cfg +++ b/resources/variants/ultimaker3_extended_bb0.8.inst.cfg @@ -1,12 +1,12 @@ [general] name = BB 0.8 -version = 2 +version = 3 definition = ultimaker3_extended [metadata] -author = ultimaker -type = variant setting_version = 4 +type = variant +hardware_type = nozzle [values] acceleration_enabled = True @@ -56,7 +56,6 @@ retraction_amount = 4.5 retraction_count_max = 15 retraction_extrusion_window = =retraction_amount retraction_hop = 2 -retraction_hop_enabled = True retraction_hop_only_when_collides = True retraction_min_travel = 5 retraction_prime_speed = 15 diff --git a/resources/variants/ultimaker3_extended_bb04.inst.cfg b/resources/variants/ultimaker3_extended_bb04.inst.cfg index ee2f138754..5b35351312 100644 --- a/resources/variants/ultimaker3_extended_bb04.inst.cfg +++ b/resources/variants/ultimaker3_extended_bb04.inst.cfg @@ -1,12 +1,12 @@ [general] name = BB 0.4 -version = 2 +version = 3 definition = ultimaker3_extended [metadata] -author = ultimaker -type = variant setting_version = 4 +type = variant +hardware_type = nozzle [values] acceleration_support = =math.ceil(acceleration_print * 2000 / 4000) @@ -20,6 +20,7 @@ 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 prime_tower_purge_volume = 1 raft_base_speed = 20 raft_interface_speed = 20 @@ -46,4 +47,4 @@ 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 \ No newline at end of file +switch_extruder_retraction_amount = 12 diff --git a/run_in_docker.sh b/run_in_docker.sh new file mode 100644 index 0000000000..eb364fd887 --- /dev/null +++ b/run_in_docker.sh @@ -0,0 +1,4 @@ +#!/usr/bin/env bash +Xvfb :1 -screen 0 1280x800x16 & +export DISPLAY=:1.0 +python3 cura_app.py --headless \ No newline at end of file diff --git a/setup.py b/setup.py index a91ba535d5..0d78f44ddc 100644 --- a/setup.py +++ b/setup.py @@ -51,24 +51,24 @@ setup(name="Cura", #console=[{"script": "cura_app.py"}], options={"py2exe": {"skip_archive": False, "includes": includes}}) -print("Coping Cura plugins.") +print("Copying Cura plugins.") shutil.copytree(os.path.dirname(UM.__file__) + "/../plugins", "dist/plugins", ignore = shutil.ignore_patterns("ConsoleLogger", "OBJWriter", "MLPWriter", "MLPReader")) for path in os.listdir("plugins"): copytree("plugins/" + path, "dist/plugins/" + path) -print("Coping resources.") +print("Copying resources.") copytree(os.path.dirname(UM.__file__) + "/../resources", "dist/resources") copytree("resources", "dist/resources") -print("Coping Uranium QML.") +print("Copying Uranium QML.") shutil.copytree(os.path.dirname(UM.__file__) + "/Qt/qml/UM", "dist/qml/UM") for site_package in site.getsitepackages(): qt_origin_path = os.path.join(site_package, "PyQt5") if os.path.isdir(qt_origin_path): - print("Coping PyQt5 plugins from: %s" % qt_origin_path) + print("Copying PyQt5 plugins from: %s" % qt_origin_path) shutil.copytree(os.path.join(qt_origin_path, "plugins"), "dist/PyQt5/plugins") - print("Coping PyQt5 QtQuick from: %s" % qt_origin_path) + print("Copying PyQt5 QtQuick from: %s" % qt_origin_path) shutil.copytree(os.path.join(qt_origin_path, "qml/QtQuick"), "dist/qml/QtQuick") shutil.copytree(os.path.join(qt_origin_path, "qml/QtQuick.2"), "dist/qml/QtQuick.2") - print("Coping PyQt5 svg library from: %s" % qt_origin_path) + print("Copying PyQt5 svg library from: %s" % qt_origin_path) shutil.copy(os.path.join(qt_origin_path, "Qt5Svg.dll"), "dist/Qt5Svg.dll") print("Copying Angle libraries from %s" % qt_origin_path) shutil.copy(os.path.join(qt_origin_path, "libEGL.dll"), "dist/libEGL.dll") diff --git a/tests/Settings/TestExtruderStack.py b/tests/Settings/TestExtruderStack.py index 2a8d19b80f..ce829da4b3 100644 --- a/tests/Settings/TestExtruderStack.py +++ b/tests/Settings/TestExtruderStack.py @@ -15,6 +15,7 @@ from cura.Settings.Exceptions import InvalidContainerError, InvalidOperationErro from cura.Settings.ExtruderManager import ExtruderManager from UM.Settings.ContainerRegistry import ContainerRegistry +from cura.Settings.GlobalStack import GlobalStack ## Fake container registry that always provides all containers you ask of. @pytest.yield_fixture() @@ -252,7 +253,7 @@ def test_deserializeMoveInstanceContainer(extruder_stack): assert extruder_stack.quality.getId() == "empty" assert extruder_stack.material.getId() != "empty" - +from UM.Settings.Validator import Validator ## Tests whether a definition container in the wrong spot is moved into the # correct spot by deserialising. @pytest.mark.skip #The test currently fails because the definition container doesn't have a category, which is wrong but we don't have time to refactor that right now. @@ -279,8 +280,8 @@ def test_getPropertyFallThrough(extruder_stack): container_indices = cura.Settings.CuraContainerStack._ContainerIndexes #Cache. for type_id, type_name in container_indices.IndexTypeMap.items(): container = unittest.mock.MagicMock() - # Return type_id when asking for value and -1 when asking for limit_to_extruder - container.getProperty = lambda key, property, context = None, type_id = type_id: type_id if (key == "layer_height" and property == "value") else (None if property != "limit_to_extruder" else "-1") #Returns the container type ID as layer height, in order to identify it. + # Return type_id when asking for value and -1 when asking for settable_per_extruder + container.getProperty = lambda key, property, context = None, type_id = type_id: type_id if (key == "layer_height" and property == "value") else (None if property != "settable_per_extruder" else "-1") #Returns the container type ID as layer height, in order to identify it. container.hasProperty = lambda key, property: key == "layer_height" container.getMetaDataEntry = unittest.mock.MagicMock(return_value = type_name) mock_layer_heights[type_id] = container @@ -298,7 +299,9 @@ def test_getPropertyFallThrough(extruder_stack): extruder_stack.variant = mock_no_settings[container_indices.Variant] with unittest.mock.patch("cura.Settings.CuraContainerStack.DefinitionContainer", unittest.mock.MagicMock): #To guard against the type checking. extruder_stack.definition = mock_layer_heights[container_indices.Definition] #There's a layer height in here! - extruder_stack.setNextStack(unittest.mock.MagicMock()) + + stack = GlobalStack("PyTest GlobalStack") + extruder_stack.setNextStack(stack) assert extruder_stack.getProperty("layer_height", "value") == container_indices.Definition extruder_stack.variant = mock_layer_heights[container_indices.Variant] @@ -322,30 +325,6 @@ def test_removeContainer(extruder_stack): with pytest.raises(InvalidOperationError): extruder_stack.removeContainer(unittest.mock.MagicMock()) -## Tests setting definitions by specifying an ID of a definition that exists. -def test_setDefinitionByIdExists(extruder_stack, container_registry): - container_registry.return_value = DefinitionContainer(container_id = "some_definition") - extruder_stack.setDefinitionById("some_definition") - assert extruder_stack.definition.getId() == "some_definition" - -## Tests setting definitions by specifying an ID of a definition that doesn't -# exist. -def test_setDefinitionByIdDoesntExist(extruder_stack): - with pytest.raises(InvalidContainerError): - extruder_stack.setDefinitionById("some_definition") #Container registry is empty now. - -## Tests setting materials by specifying an ID of a material that exists. -def test_setMaterialByIdExists(extruder_stack, container_registry): - container_registry.return_value = getInstanceContainer(container_type = "material") - extruder_stack.setMaterialById("InstanceContainer") - assert extruder_stack.material.getId() == "InstanceContainer" - -## Tests setting materials by specifying an ID of a material that doesn't -# exist. -def test_setMaterialByIdDoesntExist(extruder_stack): - with pytest.raises(InvalidContainerError): - extruder_stack.setMaterialById("some_material") #Container registry is empty now. - ## Tests setting properties directly on the extruder stack. @pytest.mark.parametrize("key, property, value", [ ("layer_height", "value", 0.1337), @@ -384,38 +363,3 @@ def test_setPropertyOtherContainers(target_container, stack_variable, extruder_s extruder_stack.setProperty(key, property, value, target_container = target_container) #The actual test. getattr(extruder_stack, stack_variable).setProperty.assert_called_once_with(key, property, value) #Make sure that the proper container gets a setProperty call. - -## Tests setting qualities by specifying an ID of a quality that exists. -def test_setQualityByIdExists(extruder_stack, container_registry): - container_registry.return_value = getInstanceContainer(container_type = "quality") - extruder_stack.setQualityById("InstanceContainer") - assert extruder_stack.quality.getId() == "InstanceContainer" - -## Tests setting qualities by specifying an ID of a quality that doesn't exist. -def test_setQualityByIdDoesntExist(extruder_stack): - with pytest.raises(InvalidContainerError): - extruder_stack.setQualityById("some_quality") #Container registry is empty now. - -## Tests setting quality changes by specifying an ID of a quality change that -# exists. -def test_setQualityChangesByIdExists(extruder_stack, container_registry): - container_registry.return_value = getInstanceContainer(container_type = "quality_changes") - extruder_stack.setQualityChangesById("InstanceContainer") - assert extruder_stack.qualityChanges.getId() == "InstanceContainer" - -## Tests setting quality changes by specifying an ID of a quality change that -# doesn't exist. -def test_setQualityChangesByIdDoesntExist(extruder_stack): - with pytest.raises(InvalidContainerError): - extruder_stack.setQualityChangesById("some_quality_changes") #Container registry is empty now. - -## Tests setting variants by specifying an ID of a variant that exists. -def test_setVariantByIdExists(extruder_stack, container_registry): - container_registry.return_value = getInstanceContainer(container_type = "variant") - extruder_stack.setVariantById("InstanceContainer") - assert extruder_stack.variant.getId() == "InstanceContainer" - -## Tests setting variants by specifying an ID of a variant that doesn't exist. -def test_setVariantByIdDoesntExist(extruder_stack): - with pytest.raises(InvalidContainerError): - extruder_stack.setVariantById("some_variant") #Container registry is empty now. diff --git a/tests/Settings/TestGlobalStack.py b/tests/Settings/TestGlobalStack.py index 9b0735c8f2..6bf10dd8c1 100755 --- a/tests/Settings/TestGlobalStack.py +++ b/tests/Settings/TestGlobalStack.py @@ -116,31 +116,6 @@ def test_addExtruder(global_stack): # global_stack.addExtruder(unittest.mock.MagicMock()) assert len(global_stack.extruders) == 2 #Didn't add the faulty extruder. -## Tests getting the approximate material diameter. -@pytest.mark.parametrize("diameter, approximate_diameter", [ - #Some real-life cases that are common in printers. - (2.85, 3), - (1.75, 2), - (3.0, 3), - (2.0, 2), - #Exceptional cases. - (0, 0), - (-10.1, -10), - (-1, -1), - (9000.1, 9000) -]) -def test_approximateMaterialDiameter(diameter, approximate_diameter, global_stack): - global_stack.definition = DefinitionContainer(container_id = "TestDefinition") - material_diameter = UM.Settings.SettingDefinition.SettingDefinition(key = "material_diameter", container = global_stack.definition) - material_diameter.addSupportedProperty("value", UM.Settings.SettingDefinition.DefinitionPropertyType.Any, default = diameter) - global_stack.definition.definitions.append(material_diameter) - assert float(global_stack.approximateMaterialDiameter) == approximate_diameter - -## Tests getting the material diameter when there is no material diameter. -def test_approximateMaterialDiameterNoDiameter(global_stack): - global_stack.definition = DefinitionContainer(container_id = "TestDefinition") - assert global_stack.approximateMaterialDiameter == "-1" - #Tests setting user changes profiles to invalid containers. @pytest.mark.parametrize("container", [ getInstanceContainer(container_type = "wrong container type"), @@ -486,43 +461,6 @@ def test_removeContainer(global_stack): with pytest.raises(InvalidOperationError): global_stack.removeContainer(unittest.mock.MagicMock()) -## Tests setting definitions by specifying an ID of a definition that exists. -def test_setDefinitionByIdExists(global_stack, container_registry): - container_registry.return_value = DefinitionContainer(container_id = "some_definition") - global_stack.setDefinitionById("some_definition") - assert global_stack.definition.getId() == "some_definition" - -## Tests setting definitions by specifying an ID of a definition that doesn't -# exist. -def test_setDefinitionByIdDoesntExist(global_stack): - with pytest.raises(InvalidContainerError): - global_stack.setDefinitionById("some_definition") #Container registry is empty now. - -## Tests setting definition changes by specifying an ID of a container that -# exists. -def test_setDefinitionChangesByIdExists(global_stack, container_registry): - container_registry.return_value = getInstanceContainer(container_type = "definition_changes") - global_stack.setDefinitionChangesById("InstanceContainer") - assert global_stack.definitionChanges.getId() == "InstanceContainer" - -## Tests setting definition changes by specifying an ID of a container that -# doesn't exist. -def test_setDefinitionChangesByIdDoesntExist(global_stack): - with pytest.raises(InvalidContainerError): - global_stack.setDefinitionChangesById("some_definition_changes") #Container registry is empty now. - -## Tests setting materials by specifying an ID of a material that exists. -def test_setMaterialByIdExists(global_stack, container_registry): - container_registry.return_value = getInstanceContainer(container_type = "material") - global_stack.setMaterialById("InstanceContainer") - assert global_stack.material.getId() == "InstanceContainer" - -## Tests setting materials by specifying an ID of a material that doesn't -# exist. -def test_setMaterialByIdDoesntExist(global_stack): - with pytest.raises(InvalidContainerError): - global_stack.setMaterialById("some_material") #Container registry is empty now. - ## Tests whether changing the next stack is properly forbidden. def test_setNextStack(global_stack): with pytest.raises(InvalidOperationError): @@ -567,50 +505,3 @@ def test_setPropertyOtherContainers(target_container, stack_variable, global_sta global_stack.setProperty(key, property, value, target_container = target_container) #The actual test. getattr(global_stack, stack_variable).setProperty.assert_called_once_with(key, property, value) #Make sure that the proper container gets a setProperty call. - -## Tests setting qualities by specifying an ID of a quality that exists. -def test_setQualityByIdExists(global_stack, container_registry): - container_registry.return_value = getInstanceContainer(container_type = "quality") - global_stack.setQualityById("InstanceContainer") - assert global_stack.quality.getId() == "InstanceContainer" - -## Tests setting qualities by specifying an ID of a quality that doesn't exist. -def test_setQualityByIdDoesntExist(global_stack): - with pytest.raises(InvalidContainerError): - global_stack.setQualityById("some_quality") #Container registry is empty now. - -## Tests setting quality changes by specifying an ID of a quality change that -# exists. -def test_setQualityChangesByIdExists(global_stack, container_registry): - container_registry.return_value = getInstanceContainer(container_type = "quality_changes") - global_stack.setQualityChangesById("InstanceContainer") - assert global_stack.qualityChanges.getId() == "InstanceContainer" - -## Tests setting quality changes by specifying an ID of a quality change that -# doesn't exist. -def test_setQualityChangesByIdDoesntExist(global_stack): - with pytest.raises(InvalidContainerError): - global_stack.setQualityChangesById("some_quality_changes") #Container registry is empty now. - -## Tests setting variants by specifying an ID of a variant that exists. -def test_setVariantByIdExists(global_stack, container_registry): - container_registry.return_value = getInstanceContainer(container_type = "variant") - global_stack.setVariantById("InstanceContainer") - assert global_stack.variant.getId() == "InstanceContainer" - -## Tests setting variants by specifying an ID of a variant that doesn't exist. -def test_setVariantByIdDoesntExist(global_stack): - with pytest.raises(InvalidContainerError): - global_stack.setVariantById("some_variant") #Container registry is empty now. - -## Smoke test for findDefaultVariant -def test_smoke_findDefaultVariant(global_stack): - global_stack.findDefaultVariant() - -## Smoke test for findDefaultMaterial -def test_smoke_findDefaultMaterial(global_stack): - global_stack.findDefaultMaterial() - -## Smoke test for findDefaultQuality -def test_smoke_findDefaultQuality(global_stack): - global_stack.findDefaultQuality() diff --git a/tests/TestProfileRequirements.py b/tests/TestProfileRequirements.py index a91a08172c..edeec909f2 100644 --- a/tests/TestProfileRequirements.py +++ b/tests/TestProfileRequirements.py @@ -22,4 +22,4 @@ def test_ultimaker3extended_variants(um3_file, um3e_file): um3.read_file(open(os.path.join(directory, um3_file))) um3e = configparser.ConfigParser() um3e.read_file(open(os.path.join(directory, um3e_file))) - assert um3["values"] == um3e["values"] \ No newline at end of file + assert um3["values"] == um3e["values"] diff --git a/tools/check_preset_settings.py b/tools/check_preset_settings.py new file mode 100644 index 0000000000..3996d6bcb5 --- /dev/null +++ b/tools/check_preset_settings.py @@ -0,0 +1,126 @@ +#!/usr/bin/env python +import configparser +import json +import os +import sys + + +class PresetSettingsValidator: + + def __init__(self, cura_dir: str): + self._cura_dir = os.path.abspath(cura_dir) + self._resource_dir = os.path.join(self._cura_dir, "resources") + self._definitions_dir = os.path.join(self._resource_dir, "definitions") + self._preset_settings_dir = os.path.join(self._resource_dir, "preset_setting_visibility_groups") + + self._fdmprinter_def_path = os.path.join(self._definitions_dir, "fdmprinter.def.json") + + def validate(self) -> bool: + """ + Validates the preset settings files and returns True or False indicating whether there are invalid files. + """ + if not os.path.isfile(self._fdmprinter_def_path): + raise FileNotFoundError("[%s] is not a file or doesn't exist, please make sure you have specified the correct cura directory [%s]." % (self._fdmprinter_def_path, self._cura_dir)) + + if not os.path.isdir(self._preset_settings_dir): + raise FileNotFoundError("[%s] is not a directory or doesn't exist, please make sure you have specified the correct cura directory [%s]." % (self._preset_settings_dir, self._cura_dir)) + + # parse the definition file + setting_tree_dict = self._parse_definition_file(self._fdmprinter_def_path) + + has_invalid_files = False + + # go through all the preset settings files + for root_dir, _, filenames in os.walk(self._preset_settings_dir): + for filename in filenames: + file_path = os.path.join(root_dir, filename) + print("Validating [%s] ..." % file_path) + + incorrect_sections = [] + incorrect_settings = {} + + parser = configparser.ConfigParser(allow_no_value = True) + with open(file_path, "r", encoding = "utf-8") as f: + parser.read_file(f) + + for key in parser: + # skip general + if key in ("general", configparser.DEFAULTSECT): + continue + + if key not in setting_tree_dict: + incorrect_sections.append(key) + continue + + for setting_key in parser[key]: + if setting_key not in setting_tree_dict[key]: + if setting_key not in incorrect_settings: + incorrect_settings[setting_key] = {"seen_in": [], + "should_be_in": self._should_setting_be_in(setting_tree_dict, setting_key)} + + incorrect_settings[setting_key]["seen_in"].append(key) + + # show results + print("==========================================") + if incorrect_sections or incorrect_settings: + has_invalid_files = True + print("[INVALID] [%s] is invalid, details below" % file_path) + + # show details + for section_name in sorted(incorrect_sections): + print(" -- section name [%s] is incorrect, please check fdmprinter.def.json." % section_name) + + for setting_name in sorted(incorrect_settings.keys()): + details_dict = incorrect_settings[setting_name] + msg = " -- setting [%s] is found in sections [%s], " % (setting_name, ", ".join(details_dict["seen_in"])) + if details_dict["should_be_in"] is not None: + msg += "but should be in section [%s] only." % details_dict["should_be_in"] + else: + msg += "but it cannot be found in fdmprinter.def.json" + print(msg) + + else: + print("[%s] is valid" % file_path) + print("==========================================") + + return not has_invalid_files + + def _parse_definition_file(self, file_path: str): + with open(file_path, "r", encoding = "utf-8") as f: + def_dict = json.load(f, encoding = "utf-8") + + tree_dict = {} + for key, item in def_dict.get("settings", {}).items(): + setting_list = [] + self._generate_tree(setting_list, item.get("children", {})) + tree_dict[key] = setting_list + + return tree_dict + + def _generate_tree(self, setting_list: list, setting_dict: dict): + for key, item in setting_dict.items(): + setting_list.append(key) + if "children" in item: + self._generate_tree(setting_list, item["children"]) + + def _should_setting_be_in(self, setting_dict: dict, setting_name: str) -> str: + """ + Check which section the given setting belongs to. Returns None if the setting cannot be found. + """ + section_name = None + for key, setting_list in setting_dict.items(): + if setting_name in setting_list: + section_name = key + break + return section_name + + +if __name__ == "__main__": + script_dir = os.path.dirname(os.path.realpath(__file__)) + cura_dir = os.path.abspath(os.path.join(script_dir, "..")) + + validator = PresetSettingsValidator(cura_dir) + is_everything_validate = validator.validate() + + ret_code = 0 if is_everything_validate else 1 + sys.exit(ret_code)