From 0c4db90b7bc3460a21a9edbe505e639af5313824 Mon Sep 17 00:00:00 2001 From: Ruben D Date: Tue, 28 Nov 2017 00:20:43 +0100 Subject: [PATCH 01/45] Add button to disable sending info directly Convenient and easy. --- plugins/SliceInfoPlugin/SliceInfo.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/plugins/SliceInfoPlugin/SliceInfo.py b/plugins/SliceInfoPlugin/SliceInfo.py index 79963a4740..4399b0a450 100755 --- a/plugins/SliceInfoPlugin/SliceInfo.py +++ b/plugins/SliceInfoPlugin/SliceInfo.py @@ -40,16 +40,21 @@ class SliceInfo(Extension): Preferences.getInstance().addPreference("info/asked_send_slice_info", False) if not Preferences.getInstance().getValue("info/asked_send_slice_info"): - self.send_slice_info_message = Message(catalog.i18nc("@info", "Cura collects anonymised slicing statistics. You can disable this in the preferences."), + self.send_slice_info_message = Message(catalog.i18nc("@info", "Cura collects anonymized usage statistics."), lifetime = 0, dismissable = False, title = catalog.i18nc("@info:title", "Collecting Data")) - self.send_slice_info_message.addAction("Dismiss", catalog.i18nc("@action:button", "Dismiss"), None, "") + self.send_slice_info_message.addAction("Dismiss", name = catalog.i18nc("@action:button", "Allow"), icon = None, + description = catalog.i18nc("@action:tooltip", "Allow Cura to send anonymized usage statistics to help prioritize future improvements to Cura. Some of your preferences and settings are sent, the Cura version and a hash of the models you're slicing.")) + self.send_slice_info_message.addAction("Disable", name = catalog.i18nc("@action:button", "Disable"), icon = None, + description = catalog.i18nc("@action:tooltip", "Don't allow Cura to send anonymized usage statistics. You can enable it again in the preferences.")) self.send_slice_info_message.actionTriggered.connect(self.messageActionTriggered) self.send_slice_info_message.show() def messageActionTriggered(self, message_id, action_id): + if action_id == "Disable": + Preferences.getInstance().setValue("info/send_slice_info", False) self.send_slice_info_message.hide() Preferences.getInstance().setValue("info/asked_send_slice_info", True) From eaa27114c63101a86d0546d1ff0b1ec336db9164 Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Thu, 21 Dec 2017 12:43:50 +0100 Subject: [PATCH 02/45] Fix ID changing in project loading --- plugins/3MFReader/ThreeMFWorkspaceReader.py | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/plugins/3MFReader/ThreeMFWorkspaceReader.py b/plugins/3MFReader/ThreeMFWorkspaceReader.py index a7dad68519..40d64590f5 100755 --- a/plugins/3MFReader/ThreeMFWorkspaceReader.py +++ b/plugins/3MFReader/ThreeMFWorkspaceReader.py @@ -682,12 +682,7 @@ class ThreeMFWorkspaceReader(WorkspaceReader): file_name = global_stack_file) # Ensure a unique ID and name - stack._id = global_stack_id_new - - # Extruder stacks are "bound" to a machine. If we add the machine as a new one, the id of the - # bound machine also needs to change. - if stack.getMetaDataEntry("machine", None): - stack.setMetaDataEntry("machine", global_stack_id_new) + stack.setMetaDataEntry("id", global_stack_id_new) # Only machines need a new name, stacks may be non-unique stack.setName(global_stack_name_new) @@ -741,7 +736,7 @@ class ThreeMFWorkspaceReader(WorkspaceReader): stack.deserialize(extruder_file_content, file_name = extruder_stack_file) # Ensure a unique ID and name - stack._id = new_id + stack.setMetaDataEntry("id", new_id) self._container_registry.addContainer(stack) extruder_stacks_added.append(stack) From df1d3bf569102e2bd8645b83f436d35b65eb003f Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Thu, 21 Dec 2017 15:42:48 +0100 Subject: [PATCH 03/45] Add fix and doc for Mac OpenGL crash CURA-4726 --- plugins/SimulationView/SimulationView.py | 20 ++++++++++++++++++++ plugins/XRayView/XRayView.py | 22 ++++++++++++++++++++++ 2 files changed, 42 insertions(+) diff --git a/plugins/SimulationView/SimulationView.py b/plugins/SimulationView/SimulationView.py index 44f472129f..6fc362725e 100644 --- a/plugins/SimulationView/SimulationView.py +++ b/plugins/SimulationView/SimulationView.py @@ -4,6 +4,7 @@ import sys from PyQt5.QtCore import Qt +from PyQt5.QtGui import QOpenGLContext from PyQt5.QtWidgets import QApplication from UM.Application import Application @@ -13,6 +14,7 @@ from UM.Logger import Logger from UM.Math.Color import Color from UM.Mesh.MeshBuilder import MeshBuilder from UM.Message import Message +from UM.Platform import Platform from UM.PluginRegistry import PluginRegistry from UM.Preferences import Preferences from UM.Resources import Resources @@ -24,6 +26,7 @@ from UM.View.GL.OpenGLContext import OpenGLContext from UM.View.View import View from UM.i18n import i18nCatalog from cura.ConvexHullNode import ConvexHullNode +from cura.CuraApplication import CuraApplication from .NozzleNode import NozzleNode from .SimulationPass import SimulationPass @@ -414,6 +417,23 @@ class SimulationView(View): return True if event.type == Event.ViewActivateEvent: + # FIX: on Max OS X, somehow QOpenGLContext.currentContext() can become None during View switching. + # This can happen when you do the following steps: + # 1. Start Cura + # 2. Load a model + # 3. Switch to Custom mode + # 4. Select the model and click on the per-object tool icon + # 5. Switch view to Layer view or X-Ray + # 6. Cura will very likely crash + # It seems to be a timing issue that the currentContext can somehow be empty, but I have no clue why. + # This fix tries to reschedule the view changing event call on the Qt thread again if the current OpenGL + # context is None. + if Platform.isOSX(): + if QOpenGLContext.currentContext() is None: + Logger.log("d", "current context of OpenGL is empty on Mac OS X, will try to create shaders later") + CuraApplication.getInstance().callLater(lambda e=event: self.event(e)) + return + # Make sure the SimulationPass is created layer_pass = self.getSimulationPass() self.getRenderer().addRenderPass(layer_pass) diff --git a/plugins/XRayView/XRayView.py b/plugins/XRayView/XRayView.py index 35509a9715..0c4035c62d 100644 --- a/plugins/XRayView/XRayView.py +++ b/plugins/XRayView/XRayView.py @@ -2,10 +2,13 @@ # Cura is released under the terms of the LGPLv3 or higher. import os.path +from PyQt5.QtGui import QOpenGLContext from UM.Application import Application +from UM.Logger import Logger from UM.Math.Color import Color from UM.PluginRegistry import PluginRegistry +from UM.Platform import Platform from UM.Event import Event from UM.View.View import View from UM.Scene.Iterator.BreadthFirstIterator import BreadthFirstIterator @@ -13,6 +16,8 @@ from UM.Scene.Iterator.BreadthFirstIterator import BreadthFirstIterator from UM.View.RenderBatch import RenderBatch from UM.View.GL.OpenGL import OpenGL +from cura.CuraApplication import CuraApplication + from . import XRayPass ## View used to display a see-through version of objects with errors highlighted. @@ -52,6 +57,23 @@ class XRayView(View): def event(self, event): if event.type == Event.ViewActivateEvent: + # FIX: on Max OS X, somehow QOpenGLContext.currentContext() can become None during View switching. + # This can happen when you do the following steps: + # 1. Start Cura + # 2. Load a model + # 3. Switch to Custom mode + # 4. Select the model and click on the per-object tool icon + # 5. Switch view to Layer view or X-Ray + # 6. Cura will very likely crash + # It seems to be a timing issue that the currentContext can somehow be empty, but I have no clue why. + # This fix tries to reschedule the view changing event call on the Qt thread again if the current OpenGL + # context is None. + if Platform.isOSX(): + if QOpenGLContext.currentContext() is None: + Logger.log("d", "current context of OpenGL is empty on Mac OS X, will try to create shaders later") + CuraApplication.getInstance().callLater(lambda e = event: self.event(e)) + return + if not self._xray_pass: # Currently the RenderPass constructor requires a size > 0 # This should be fixed in RenderPass's constructor. From 4e902046208b2c2a31542ab8b3cce38b873f1443 Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Thu, 21 Dec 2017 15:51:24 +0100 Subject: [PATCH 04/45] Only push aways other objects if they are printing meshes CURA-4705 --- cura/PlatformPhysics.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/cura/PlatformPhysics.py b/cura/PlatformPhysics.py index 23197dac24..471e54dba6 100755 --- a/cura/PlatformPhysics.py +++ b/cura/PlatformPhysics.py @@ -76,7 +76,8 @@ class PlatformPhysics: if not node.getDecorator(ConvexHullDecorator): node.addDecorator(ConvexHullDecorator()) - if Preferences.getInstance().getValue("physics/automatic_push_free"): + # only push away objects if this node is a printing mesh + if not node.callDecoration("isNonPrintingMesh") and Preferences.getInstance().getValue("physics/automatic_push_free"): # Check for collisions between convex hulls for other_node in BreadthFirstIterator(root): # Ignore root, ourselves and anything that is not a normal SceneNode. @@ -98,6 +99,9 @@ class PlatformPhysics: if other_node in transformed_nodes: continue # Other node is already moving, wait for next pass. + if other_node.callDecoration("isNonPrintingMesh"): + continue + overlap = (0, 0) # Start loop with no overlap current_overlap_checks = 0 # Continue to check the overlap until we no longer find one. From 447c6e7e2360d89fd00a7926ee8059d70c4b7635 Mon Sep 17 00:00:00 2001 From: Aleksei S Date: Thu, 21 Dec 2017 16:25:13 +0100 Subject: [PATCH 05/45] Added Disable link style CURA-4630 --- cura/CuraApplication.py | 8 ++++++++ plugins/SliceInfoPlugin/SliceInfo.py | 4 ++-- resources/qml/Cura.qml | 6 ++++++ 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/cura/CuraApplication.py b/cura/CuraApplication.py index 18d1bde57e..036369aed7 100755 --- a/cura/CuraApplication.py +++ b/cura/CuraApplication.py @@ -1426,3 +1426,11 @@ class CuraApplication(QtApplication): node = node.getParent() Selection.add(node) + + + triggerPreferenceWindow = pyqtSignal() + + # This event has a simple logic, display pereference window if user decided to disable "collect information" + @pyqtProperty(bool, notify = triggerPreferenceWindow) + def showMyTest(self): + return True \ No newline at end of file diff --git a/plugins/SliceInfoPlugin/SliceInfo.py b/plugins/SliceInfoPlugin/SliceInfo.py index 9bd99cae2b..28bcc763c7 100755 --- a/plugins/SliceInfoPlugin/SliceInfo.py +++ b/plugins/SliceInfoPlugin/SliceInfo.py @@ -48,13 +48,13 @@ class SliceInfo(Extension): self.send_slice_info_message.addAction("Dismiss", name = catalog.i18nc("@action:button", "Allow"), icon = None, description = catalog.i18nc("@action:tooltip", "Allow Cura to send anonymized usage statistics to help prioritize future improvements to Cura. Some of your preferences and settings are sent, the Cura version and a hash of the models you're slicing.")) self.send_slice_info_message.addAction("Disable", name = catalog.i18nc("@action:button", "Disable"), icon = None, - description = catalog.i18nc("@action:tooltip", "Don't allow Cura to send anonymized usage statistics. You can enable it again in the preferences.")) + description = catalog.i18nc("@action:tooltip", "Don't allow Cura to send anonymized usage statistics. You can enable it again in the preferences."), button_style = Message.ActionButtonStyle.LINK) self.send_slice_info_message.actionTriggered.connect(self.messageActionTriggered) self.send_slice_info_message.show() def messageActionTriggered(self, message_id, action_id): if action_id == "Disable": - Preferences.getInstance().setValue("info/send_slice_info", False) + CuraApplication.getInstance().triggerPreferenceWindow.emit() self.send_slice_info_message.hide() Preferences.getInstance().setValue("info/asked_send_slice_info", True) diff --git a/resources/qml/Cura.qml b/resources/qml/Cura.qml index 91098bbb29..40fc88c975 100644 --- a/resources/qml/Cura.qml +++ b/resources/qml/Cura.qml @@ -528,6 +528,12 @@ UM.MainWindow onTriggered: preferences.visible = true } + Connections + { + target: CuraApplication + onShowMyTestChanged: preferences.visible = true + } + MessageDialog { id: newProjectDialog From b29047abd32195666b989adc50ce49545f073a44 Mon Sep 17 00:00:00 2001 From: ChrisTerBeke Date: Fri, 22 Dec 2017 11:38:56 +0100 Subject: [PATCH 06/45] Small fixes for disable user data triggering preferences window --- cura/CuraApplication.py | 16 ++++++++-------- plugins/SliceInfoPlugin/SliceInfo.py | 8 +++++--- resources/qml/Cura.qml | 2 +- 3 files changed, 14 insertions(+), 12 deletions(-) diff --git a/cura/CuraApplication.py b/cura/CuraApplication.py index 036369aed7..e9e2282be6 100755 --- a/cura/CuraApplication.py +++ b/cura/CuraApplication.py @@ -409,6 +409,14 @@ class CuraApplication(QtApplication): else: self.exit(0) + ## Signal to connect preferences action in QML + showPreferencesWindow = pyqtSignal() + + ## Show the preferences window + @pyqtSlot() + def showPreferences(self): + self.showPreferencesWindow.emit() + ## A reusable dialogbox # showMessageBox = pyqtSignal(str, str, str, str, int, int, arguments = ["title", "text", "informativeText", "detailedText", "buttons", "icon"]) @@ -1426,11 +1434,3 @@ class CuraApplication(QtApplication): node = node.getParent() Selection.add(node) - - - triggerPreferenceWindow = pyqtSignal() - - # This event has a simple logic, display pereference window if user decided to disable "collect information" - @pyqtProperty(bool, notify = triggerPreferenceWindow) - def showMyTest(self): - return True \ No newline at end of file diff --git a/plugins/SliceInfoPlugin/SliceInfo.py b/plugins/SliceInfoPlugin/SliceInfo.py index 28bcc763c7..753e00091b 100755 --- a/plugins/SliceInfoPlugin/SliceInfo.py +++ b/plugins/SliceInfoPlugin/SliceInfo.py @@ -52,11 +52,13 @@ class SliceInfo(Extension): self.send_slice_info_message.actionTriggered.connect(self.messageActionTriggered) self.send_slice_info_message.show() + ## Perform action based on user input. + # Note that clicking "Disable" won't actually disable the data sending, but rather take the user to preferences where they can disable it. def messageActionTriggered(self, message_id, action_id): - if action_id == "Disable": - CuraApplication.getInstance().triggerPreferenceWindow.emit() - self.send_slice_info_message.hide() Preferences.getInstance().setValue("info/asked_send_slice_info", True) + if action_id == "Disable": + CuraApplication.getInstance().showPreferences() + self.send_slice_info_message.hide() def _onWriteStarted(self, output_device): try: diff --git a/resources/qml/Cura.qml b/resources/qml/Cura.qml index 40fc88c975..efe956939b 100644 --- a/resources/qml/Cura.qml +++ b/resources/qml/Cura.qml @@ -531,7 +531,7 @@ UM.MainWindow Connections { target: CuraApplication - onShowMyTestChanged: preferences.visible = true + onShowPreferencesWindow: preferences.visible = true } MessageDialog From f75d91071a3fd8b3262d42e809bc0c548d960207 Mon Sep 17 00:00:00 2001 From: ChrisTerBeke Date: Fri, 22 Dec 2017 11:39:58 +0100 Subject: [PATCH 07/45] Remove invisible flag from allowed command line options to trigger non-gui mode --- cura/CuraApplication.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cura/CuraApplication.py b/cura/CuraApplication.py index e9e2282be6..e90dfd70d3 100755 --- a/cura/CuraApplication.py +++ b/cura/CuraApplication.py @@ -691,7 +691,7 @@ class CuraApplication(QtApplication): self.setMainQml(Resources.getPath(self.ResourceTypes.QmlFiles, "Cura.qml")) self._qml_import_paths.append(Resources.getPath(self.ResourceTypes.QmlFiles)) - run_without_gui = self.getCommandLineOption("headless", False) or self.getCommandLineOption("invisible", False) + run_without_gui = self.getCommandLineOption("headless", False) if not run_without_gui: self.initializeEngine() controller.setActiveStage("PrepareStage") From f5918228367a2160ecda9c36296d91ef7615987f Mon Sep 17 00:00:00 2001 From: Aleksei S Date: Fri, 22 Dec 2017 12:00:08 +0100 Subject: [PATCH 08/45] Set minimum distance between models CURA-4672 --- cura/PlatformPhysics.py | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/cura/PlatformPhysics.py b/cura/PlatformPhysics.py index 471e54dba6..543eff0d4b 100755 --- a/cura/PlatformPhysics.py +++ b/cura/PlatformPhysics.py @@ -34,6 +34,7 @@ class PlatformPhysics: self._change_timer.timeout.connect(self._onChangeTimerFinished) self._move_factor = 1.1 # By how much should we multiply overlap to calculate a new spot? self._max_overlap_checks = 10 # How many times should we try to find a new spot per tick? + self._minimum_gap = 2 # It is a minimum distance between two models, applicable for small models Preferences.getInstance().addPreference("physics/automatic_push_free", True) Preferences.getInstance().addPreference("physics/automatic_drop_down", True) @@ -128,8 +129,23 @@ class PlatformPhysics: if own_convex_hull and other_convex_hull: overlap = own_convex_hull.translate(move_vector.x, move_vector.z).intersectsPolygon(other_convex_hull) if overlap: # Moving ensured that overlap was still there. Try anew! - move_vector = move_vector.set(x=move_vector.x + overlap[0] * self._move_factor, + temp_move_vector = move_vector.set(x=move_vector.x + overlap[0] * self._move_factor, z=move_vector.z + overlap[1] * self._move_factor) + + # if the distance between two models less than 2mm then try to find a new factor + if abs(temp_move_vector.x - overlap[0]) < self._minimum_gap and abs(temp_move_vector.y - overlap[1]) < self._minimum_gap: + temp_scale_factor = self._move_factor + temp_x_factor = (abs(overlap[0]) + self._minimum_gap) / overlap[0] # find x move_factor, like (3.4 + 2) / 3.4 = 1.58 + temp_y_factor = (abs(overlap[1]) + self._minimum_gap) / overlap[1] # find y move_factor + if temp_x_factor > temp_y_factor: + temp_scale_factor = temp_x_factor + else: + temp_scale_factor = temp_y_factor + + move_vector = move_vector.set(x=move_vector.x + overlap[0] * temp_scale_factor, + z=move_vector.z + overlap[1] * temp_scale_factor) + else: + move_vector = temp_move_vector else: # This can happen in some cases if the object is not yet done with being loaded. # Simply waiting for the next tick seems to resolve this correctly. From 3f9f00673adf91bc6f6b649df37be490198dd5bb Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Fri, 22 Dec 2017 11:36:42 +0100 Subject: [PATCH 09/45] Fix addExtruderStackForSingleExtrusionMachine() CURA-4708 - Create definition_changes container for the newly created ExtruderStacks. - Move extruder-specific definition_changes settings from the machine's container to the extruder's container --- cura/Settings/CuraContainerRegistry.py | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/cura/Settings/CuraContainerRegistry.py b/cura/Settings/CuraContainerRegistry.py index 089d513071..4a31ed5cc4 100644 --- a/cura/Settings/CuraContainerRegistry.py +++ b/cura/Settings/CuraContainerRegistry.py @@ -430,11 +430,32 @@ class CuraContainerRegistry(ContainerRegistry): 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_name = definition_changes_id + definition_changes = InstanceContainer(definition_changes_id) + definition_changes.setName(definition_changes_name) + definition_changes.addMetaDataEntry("setting_version", CuraApplication.SettingVersion) + definition_changes.addMetaDataEntry("type", "definition_changes") + definition_changes.addMetaDataEntry("definition", extruder_definition.getId()) + + # move definition_changes settings if exist + for setting_key in ("machine_nozzle_size", "material_diameter"): + setting_instance = machine.definitionChanges.getInstance(setting_key) + if setting_instance is not None: + # move it to the extruder stack's definition_changes + definition_changes.addInstance(setting_instance) + machine.definitionChanges.removeInstance(setting_key, postpone_emit = True) + + self.addContainer(definition_changes) + extruder_stack.setDefinitionChanges(definition_changes) + # create empty user changes container otherwise - user_container = InstanceContainer(extruder_stack.id + "_user") + user_container = InstanceContainer(extruder_stack.getId() + "_user") user_container.addMetaDataEntry("type", "user") user_container.addMetaDataEntry("machine", extruder_stack.getId()) - from cura.CuraApplication import CuraApplication user_container.addMetaDataEntry("setting_version", CuraApplication.SettingVersion) user_container.setDefinition(machine.definition.getId()) From 3fb3b5826fae02295cb6d36653dfcc1cf38043a0 Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Fri, 22 Dec 2017 11:39:51 +0100 Subject: [PATCH 10/45] Make sure user containers have unique IDs CURA-4708 --- cura/Settings/CuraContainerRegistry.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/cura/Settings/CuraContainerRegistry.py b/cura/Settings/CuraContainerRegistry.py index 4a31ed5cc4..292e7f1f82 100644 --- a/cura/Settings/CuraContainerRegistry.py +++ b/cura/Settings/CuraContainerRegistry.py @@ -453,7 +453,10 @@ class CuraContainerRegistry(ContainerRegistry): extruder_stack.setDefinitionChanges(definition_changes) # create empty user changes container otherwise - user_container = InstanceContainer(extruder_stack.getId() + "_user") + user_container_id = self.uniqueName(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("setting_version", CuraApplication.SettingVersion) From 05acb2e00fc28c92c9851eb2dbe5c9637068e19c Mon Sep 17 00:00:00 2001 From: Aleksei S Date: Fri, 22 Dec 2017 13:04:25 +0100 Subject: [PATCH 11/45] Prvent integer infinitive value after arranging all models CURA-4672 --- cura/PlatformPhysics.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/cura/PlatformPhysics.py b/cura/PlatformPhysics.py index 543eff0d4b..c4254ebd3f 100755 --- a/cura/PlatformPhysics.py +++ b/cura/PlatformPhysics.py @@ -135,9 +135,9 @@ class PlatformPhysics: # if the distance between two models less than 2mm then try to find a new factor if abs(temp_move_vector.x - overlap[0]) < self._minimum_gap and abs(temp_move_vector.y - overlap[1]) < self._minimum_gap: temp_scale_factor = self._move_factor - temp_x_factor = (abs(overlap[0]) + self._minimum_gap) / overlap[0] # find x move_factor, like (3.4 + 2) / 3.4 = 1.58 - temp_y_factor = (abs(overlap[1]) + self._minimum_gap) / overlap[1] # find y move_factor - if temp_x_factor > temp_y_factor: + temp_x_factor = (abs(overlap[0]) + self._minimum_gap) / overlap[0] if overlap[0] !=0 else 0# find x move_factor, like (3.4 + 2) / 3.4 = 1.58 + temp_y_factor = (abs(overlap[1]) + self._minimum_gap) / overlap[1] if overlap[1] !=0 else 0 # find y move_factor + if abs(temp_x_factor) > abs(temp_y_factor): temp_scale_factor = temp_x_factor else: temp_scale_factor = temp_y_factor From 26a136f7c51e1cd8f4f9267c00ebeabc3561ed88 Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Fri, 22 Dec 2017 13:29:55 +0100 Subject: [PATCH 12/45] Revert "Simplified upgrade funtion, typos, check extruder count" This reverts commit fd6d3e76a3754dae14f83a45d20685b4ddae6062. CURA-4708 --- .../VersionUpgrade30to31.py | 123 +++++++++--------- 1 file changed, 64 insertions(+), 59 deletions(-) diff --git a/plugins/VersionUpgrade/VersionUpgrade30to31/VersionUpgrade30to31.py b/plugins/VersionUpgrade/VersionUpgrade30to31/VersionUpgrade30to31.py index c350dadefe..c01ff158b1 100644 --- a/plugins/VersionUpgrade/VersionUpgrade30to31/VersionUpgrade30to31.py +++ b/plugins/VersionUpgrade/VersionUpgrade30to31/VersionUpgrade30to31.py @@ -129,17 +129,12 @@ class VersionUpgrade30to31(VersionUpgrade): if parser.has_option("values", "machine_nozzle_size"): machine_nozzle_size = parser["values"]["machine_nozzle_size"] - machine_extruder_count = '1' # by default it is 1 and the value cannot be stored in the global stack - if parser.has_option("values", "machine_extruder_count"): - machine_extruder_count = parser["values"]["machine_extruder_count"] + definition_name = parser["general"]["name"] + machine_extruders = self._getSingleExtrusionMachineExtruders(definition_name) - if machine_extruder_count == '1': - definition_name = parser["general"]["name"] - machine_extruders = self._getSingleExtrusionMachineExtruders(definition_name) - - # For single extruder machine we need only first extruder - if len(machine_extruders) !=0: - self._updateSingleExtruderDefinitionFile(machine_extruders, machine_nozzle_size) + #For single extuder machine we nee only first extruder + if len(machine_extruders) !=0: + if self._updateSingleExtuderDefinitionFile(machine_extruders, machine_nozzle_size): parser.remove_option("values", "machine_nozzle_size") # Update version numbers @@ -224,9 +219,9 @@ class VersionUpgrade30to31(VersionUpgrade): machine_instances_dir = Resources.getPath(CuraApplication.ResourceTypes.MachineStack) - machine_instance_id = None + machine_instances = [] - # Find machine instances + #Find all machine instances for item in os.listdir(machine_instances_dir): file_path = os.path.join(machine_instances_dir, item) if not os.path.isfile(file_path): @@ -247,51 +242,57 @@ class VersionUpgrade30to31(VersionUpgrade): if not parser.has_option("general", "id"): continue - id = parser["general"]["id"] - if id + "_settings" != definition_name: + machine_instances.append(parser) + + #Find for extruders + extruders_instances_dir = Resources.getPath(CuraApplication.ResourceTypes.ExtruderStack) + #"machine",[extruders] + extruder_instances_per_machine = {} + + #Find all custom extruders for founded machines + for item in os.listdir(extruders_instances_dir): + file_path = os.path.join(extruders_instances_dir, item) + if not os.path.isfile(file_path): continue - else: - machine_instance_id = id + + 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 "extruder_train" != parser["metadata"]["type"]: + continue + + if not parser.has_option("metadata", "machine"): + continue + if not parser.has_option("metadata", "position"): + continue + + + for machine_instace in machine_instances: + + machine_id = machine_instace["general"]["id"] + if machine_id != parser["metadata"]["machine"]: + continue + + if machine_id + "_settings" != definition_name: + continue + + if extruder_instances_per_machine.get(machine_id) is None: + extruder_instances_per_machine.update({machine_id:[]}) + + extruder_instances_per_machine.get(machine_id).append(parser) + #the extruder can be related only to one machine break - if machine_instance_id is not None: + return extruder_instances_per_machine - extruders_instances_dir = Resources.getPath(CuraApplication.ResourceTypes.ExtruderStack) - #"machine",[extruders] - extruder_instances = [] - - # Find all custom extruders for found machines - for item in os.listdir(extruders_instances_dir): - file_path = os.path.join(extruders_instances_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 "extruder_train" != parser["metadata"]["type"]: - continue - - if not parser.has_option("metadata", "machine"): - continue - if not parser.has_option("metadata", "position"): - continue - - if machine_instance_id != parser["metadata"]["machine"]: - continue - - extruder_instances.append(parser) - - return extruder_instances - - # Find extruder definition at index 0 and update its values - def _updateSingleExtruderDefinitionFile(self, extruder_instances_per_machine, machine_nozzle_size): + #Find extruder defition at index 0 and update its values + def _updateSingleExtuderDefinitionFile(self, extruder_instances_per_machine, machine_nozzle_size): defintion_instances_dir = Resources.getPath(CuraApplication.ResourceTypes.DefinitionChangesContainer) @@ -311,15 +312,19 @@ class VersionUpgrade30to31(VersionUpgrade): continue name = parser["general"]["name"] custom_extruder_at_0_position = None - for extruder_instance in extruder_instances_per_machine: + for machine_extruders in extruder_instances_per_machine: + for extruder_instance in extruder_instances_per_machine[machine_extruders]: - definition_position = extruder_instance["metadata"]["position"] + if extruder_instance["general"]["id"] + "_settings" == name: + defition_position = extruder_instance["metadata"]["position"] - if definition_position == "0": - custom_extruder_at_0_position = extruder_instance + if defition_position == "0": + custom_extruder_at_0_position = extruder_instance + break + if custom_extruder_at_0_position is not None: break - # If not null, then parsed file is for first extuder and then can be updated. I need to update only + #If not null, then parsed file is for first extuder and then can be updated. I need to update only # first, because this update for single extuder machine if custom_extruder_at_0_position is not None: @@ -369,4 +374,4 @@ class VersionUpgrade30to31(VersionUpgrade): 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()) \ No newline at end of file + f.write(extruder_quality_changes_output.getvalue()) From 2cffb1759f68a7cd5c861e74540bb4dc3f95d1cf Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Fri, 22 Dec 2017 13:30:06 +0100 Subject: [PATCH 13/45] Revert "Version upgrade for nozzle_size" This reverts commit 54bc7dd348d77efa7f2dc3f420200df9864b8d37. CURA-4708 --- .../VersionUpgrade30to31.py | 142 ------------------ 1 file changed, 142 deletions(-) diff --git a/plugins/VersionUpgrade/VersionUpgrade30to31/VersionUpgrade30to31.py b/plugins/VersionUpgrade/VersionUpgrade30to31/VersionUpgrade30to31.py index c01ff158b1..8c5a160ff4 100644 --- a/plugins/VersionUpgrade/VersionUpgrade30to31/VersionUpgrade30to31.py +++ b/plugins/VersionUpgrade/VersionUpgrade30to31/VersionUpgrade30to31.py @@ -122,21 +122,6 @@ class VersionUpgrade30to31(VersionUpgrade): if len(all_quality_changes) <= 1 and not parser.has_option("metadata", "extruder"): self._createExtruderQualityChangesForSingleExtrusionMachine(filename, parser) - if parser["metadata"]["type"] == "definition_changes": - if parser["general"]["definition"] == "custom": - - # We are only interested in machine_nozzle_size - if parser.has_option("values", "machine_nozzle_size"): - machine_nozzle_size = parser["values"]["machine_nozzle_size"] - - definition_name = parser["general"]["name"] - machine_extruders = self._getSingleExtrusionMachineExtruders(definition_name) - - #For single extuder machine we nee only first extruder - if len(machine_extruders) !=0: - if self._updateSingleExtuderDefinitionFile(machine_extruders, machine_nozzle_size): - parser.remove_option("values", "machine_nozzle_size") - # Update version numbers parser["general"]["version"] = "2" parser["metadata"]["setting_version"] = "4" @@ -215,133 +200,6 @@ class VersionUpgrade30to31(VersionUpgrade): return quality_changes_containers - def _getSingleExtrusionMachineExtruders(self, definition_name): - - machine_instances_dir = Resources.getPath(CuraApplication.ResourceTypes.MachineStack) - - machine_instances = [] - - #Find all machine instances - for item in os.listdir(machine_instances_dir): - file_path = os.path.join(machine_instances_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 "machine" != parser["metadata"]["type"]: - continue - - if not parser.has_option("general", "id"): - continue - - machine_instances.append(parser) - - #Find for extruders - extruders_instances_dir = Resources.getPath(CuraApplication.ResourceTypes.ExtruderStack) - #"machine",[extruders] - extruder_instances_per_machine = {} - - #Find all custom extruders for founded machines - for item in os.listdir(extruders_instances_dir): - file_path = os.path.join(extruders_instances_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 "extruder_train" != parser["metadata"]["type"]: - continue - - if not parser.has_option("metadata", "machine"): - continue - if not parser.has_option("metadata", "position"): - continue - - - for machine_instace in machine_instances: - - machine_id = machine_instace["general"]["id"] - if machine_id != parser["metadata"]["machine"]: - continue - - if machine_id + "_settings" != definition_name: - continue - - if extruder_instances_per_machine.get(machine_id) is None: - extruder_instances_per_machine.update({machine_id:[]}) - - extruder_instances_per_machine.get(machine_id).append(parser) - #the extruder can be related only to one machine - break - - return extruder_instances_per_machine - - #Find extruder defition at index 0 and update its values - def _updateSingleExtuderDefinitionFile(self, extruder_instances_per_machine, machine_nozzle_size): - - defintion_instances_dir = Resources.getPath(CuraApplication.ResourceTypes.DefinitionChangesContainer) - - for item in os.listdir(defintion_instances_dir): - file_path = os.path.join(defintion_instances_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("general", "name"): - continue - name = parser["general"]["name"] - custom_extruder_at_0_position = None - for machine_extruders in extruder_instances_per_machine: - for extruder_instance in extruder_instances_per_machine[machine_extruders]: - - if extruder_instance["general"]["id"] + "_settings" == name: - defition_position = extruder_instance["metadata"]["position"] - - if defition_position == "0": - custom_extruder_at_0_position = extruder_instance - break - if custom_extruder_at_0_position is not None: - break - - #If not null, then parsed file is for first extuder and then can be updated. I need to update only - # first, because this update for single extuder machine - if custom_extruder_at_0_position is not None: - - #Add new value - parser["values"]["machine_nozzle_size"] = machine_nozzle_size - - definition_output = io.StringIO() - parser.write(definition_output) - - with open(file_path, "w") as f: - f.write(definition_output.getvalue()) - - return True - - return False - - 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, "") From a7d51326c0c94cdcd8b6114764a43d3f24353955 Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Fri, 22 Dec 2017 14:06:11 +0100 Subject: [PATCH 14/45] Move extruder-specific DC settings CURA-4708 Read code comments. --- cura/Settings/ExtruderStack.py | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/cura/Settings/ExtruderStack.py b/cura/Settings/ExtruderStack.py index 42a2733879..6dffeda6c2 100644 --- a/cura/Settings/ExtruderStack.py +++ b/cura/Settings/ExtruderStack.py @@ -8,6 +8,7 @@ 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 . import Exceptions from .CuraContainerStack import CuraContainerStack @@ -16,6 +17,11 @@ 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. # # @@ -39,6 +45,29 @@ 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() From 0cd392fbd233c1f4ed21afa44dab1d3219db36e7 Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Fri, 22 Dec 2017 14:08:22 +0100 Subject: [PATCH 15/45] Create new SettingInstance when moving extruder DC settings CURA-4708 --- cura/Settings/CuraContainerRegistry.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/cura/Settings/CuraContainerRegistry.py b/cura/Settings/CuraContainerRegistry.py index 292e7f1f82..533908a614 100644 --- a/cura/Settings/CuraContainerRegistry.py +++ b/cura/Settings/CuraContainerRegistry.py @@ -14,6 +14,7 @@ from UM.Decorators import override from UM.Settings.ContainerRegistry import ContainerRegistry from UM.Settings.ContainerStack import ContainerStack from UM.Settings.InstanceContainer import InstanceContainer +from UM.Settings.SettingInstance import SettingInstance from UM.Application import Application from UM.Logger import Logger from UM.Message import Message @@ -443,10 +444,16 @@ class CuraContainerRegistry(ContainerRegistry): # move definition_changes settings if exist for setting_key in ("machine_nozzle_size", "material_diameter"): - setting_instance = machine.definitionChanges.getInstance(setting_key) - if setting_instance is not None: + setting_value = machine.definitionChanges.getProperty(setting_key, "value") + if setting_value is not None: # move it to the extruder stack's definition_changes - definition_changes.addInstance(setting_instance) + setting_definition = machine.getSettingDefinition(setting_key) + new_instance = SettingInstance(setting_definition, definition_changes) + new_instance.setProperty("value", setting_value) + new_instance.resetState() # Ensure that the state is not seen as a user state. + definition_changes.addInstance(new_instance) + definition_changes.setDirty(True) + machine.definitionChanges.removeInstance(setting_key, postpone_emit = True) self.addContainer(definition_changes) From 0c28c61e0536ce3f73bf0415ee4e001e5fb92e82 Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Fri, 22 Dec 2017 14:09:13 +0100 Subject: [PATCH 16/45] Create new SettingInstances when moving user changes settings CURA-4708 --- cura/Settings/CuraContainerRegistry.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/cura/Settings/CuraContainerRegistry.py b/cura/Settings/CuraContainerRegistry.py index 533908a614..7b21332ee4 100644 --- a/cura/Settings/CuraContainerRegistry.py +++ b/cura/Settings/CuraContainerRegistry.py @@ -475,7 +475,15 @@ class CuraContainerRegistry(ContainerRegistry): for user_setting_key in machine.userChanges.getAllKeys(): settable_per_extruder = machine.getProperty(user_setting_key, "settable_per_extruder") if settable_per_extruder: - user_container.addInstance(machine.userChanges.getInstance(user_setting_key)) + setting_value = machine.getProperty(user_setting_key, "value") + + setting_definition = machine.getSettingDefinition(user_setting_key) + new_instance = SettingInstance(setting_definition, definition_changes) + new_instance.setProperty("value", setting_value) + new_instance.resetState() # Ensure that the state is not seen as a user state. + user_container.addInstance(new_instance) + user_container.setDirty(True) + machine.userChanges.removeInstance(user_setting_key, postpone_emit = True) self.addContainer(user_container) From d0a3575c0c0b7065f7f6583bc4e04901dac6a725 Mon Sep 17 00:00:00 2001 From: Aleksei S Date: Fri, 22 Dec 2017 14:48:45 +0100 Subject: [PATCH 17/45] Don't print the model if it is outside of the buildplate CURA-4734 --- plugins/CuraEngineBackend/StartSliceJob.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/plugins/CuraEngineBackend/StartSliceJob.py b/plugins/CuraEngineBackend/StartSliceJob.py index 4da26aa78f..b22e116f95 100644 --- a/plugins/CuraEngineBackend/StartSliceJob.py +++ b/plugins/CuraEngineBackend/StartSliceJob.py @@ -143,10 +143,11 @@ class StartSliceJob(Job): if per_object_stack: is_non_printing_mesh = any(per_object_stack.getProperty(key, "value") for key in NON_PRINTING_MESH_SETTINGS) - if not getattr(node, "_outside_buildarea", False) or not is_non_printing_mesh: + if not getattr(node, "_outside_buildarea", False): temp_list.append(node) if not is_non_printing_mesh: has_printing_mesh = True + Job.yieldThread() #If the list doesn't have any model with suitable settings then clean the list From 4b9ddc186a8ba870ea3cfb761c2d257ec3f9616d Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Thu, 28 Dec 2017 14:28:12 +0100 Subject: [PATCH 18/45] Code style: Space after binary operator Contributes to issue CURA-4672. --- cura/PlatformPhysics.py | 4 ++-- .../VersionUpgrade30to31/VersionUpgrade30to31.py | 2 +- plugins/X3DReader/X3DReader.py | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/cura/PlatformPhysics.py b/cura/PlatformPhysics.py index c4254ebd3f..d1871466d5 100755 --- a/cura/PlatformPhysics.py +++ b/cura/PlatformPhysics.py @@ -135,8 +135,8 @@ class PlatformPhysics: # if the distance between two models less than 2mm then try to find a new factor if abs(temp_move_vector.x - overlap[0]) < self._minimum_gap and abs(temp_move_vector.y - overlap[1]) < self._minimum_gap: temp_scale_factor = self._move_factor - temp_x_factor = (abs(overlap[0]) + self._minimum_gap) / overlap[0] if overlap[0] !=0 else 0# find x move_factor, like (3.4 + 2) / 3.4 = 1.58 - temp_y_factor = (abs(overlap[1]) + self._minimum_gap) / overlap[1] if overlap[1] !=0 else 0 # find y move_factor + temp_x_factor = (abs(overlap[0]) + self._minimum_gap) / overlap[0] if overlap[0] != 0 else 0# find x move_factor, like (3.4 + 2) / 3.4 = 1.58 + temp_y_factor = (abs(overlap[1]) + self._minimum_gap) / overlap[1] if overlap[1] != 0 else 0 # find y move_factor if abs(temp_x_factor) > abs(temp_y_factor): temp_scale_factor = temp_x_factor else: diff --git a/plugins/VersionUpgrade/VersionUpgrade30to31/VersionUpgrade30to31.py b/plugins/VersionUpgrade/VersionUpgrade30to31/VersionUpgrade30to31.py index c350dadefe..35c889c6bd 100644 --- a/plugins/VersionUpgrade/VersionUpgrade30to31/VersionUpgrade30to31.py +++ b/plugins/VersionUpgrade/VersionUpgrade30to31/VersionUpgrade30to31.py @@ -138,7 +138,7 @@ class VersionUpgrade30to31(VersionUpgrade): machine_extruders = self._getSingleExtrusionMachineExtruders(definition_name) # For single extruder machine we need only first extruder - if len(machine_extruders) !=0: + if len(machine_extruders) != 0: self._updateSingleExtruderDefinitionFile(machine_extruders, machine_nozzle_size) parser.remove_option("values", "machine_nozzle_size") diff --git a/plugins/X3DReader/X3DReader.py b/plugins/X3DReader/X3DReader.py index e4a59dcdaa..8280af936d 100644 --- a/plugins/X3DReader/X3DReader.py +++ b/plugins/X3DReader/X3DReader.py @@ -184,7 +184,7 @@ class X3DReader(MeshReader): got_center = (center.x != 0 or center.y != 0 or center.z != 0) T = self.transform - if trans.x != 0 or trans.y != 0 or trans.z !=0: + if trans.x != 0 or trans.y != 0 or trans.z != 0: T.translate(trans) if got_center: T.translate(center) From a4d83331adb72eafc0c145a97a5797e0c8be39c5 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Thu, 28 Dec 2017 14:30:47 +0100 Subject: [PATCH 19/45] Code style: Space around binary operator Contributes to issue CURA-4672. --- cura/PlatformPhysics.py | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/cura/PlatformPhysics.py b/cura/PlatformPhysics.py index d1871466d5..62338ce91f 100755 --- a/cura/PlatformPhysics.py +++ b/cura/PlatformPhysics.py @@ -117,33 +117,33 @@ class PlatformPhysics: overlap = node.callDecoration("getConvexHull").translate(move_vector.x, move_vector.z).intersectsPolygon(other_head_hull) if overlap: # Moving ensured that overlap was still there. Try anew! - move_vector = move_vector.set(x=move_vector.x + overlap[0] * self._move_factor, - z=move_vector.z + overlap[1] * self._move_factor) + move_vector = move_vector.set(x = move_vector.x + overlap[0] * self._move_factor, + z = move_vector.z + overlap[1] * self._move_factor) else: # Moving ensured that overlap was still there. Try anew! - move_vector = move_vector.set(x=move_vector.x + overlap[0] * self._move_factor, - z=move_vector.z + overlap[1] * self._move_factor) + move_vector = move_vector.set(x = move_vector.x + overlap[0] * self._move_factor, + z = move_vector.z + overlap[1] * self._move_factor) else: own_convex_hull = node.callDecoration("getConvexHull") other_convex_hull = other_node.callDecoration("getConvexHull") if own_convex_hull and other_convex_hull: overlap = own_convex_hull.translate(move_vector.x, move_vector.z).intersectsPolygon(other_convex_hull) if overlap: # Moving ensured that overlap was still there. Try anew! - temp_move_vector = move_vector.set(x=move_vector.x + overlap[0] * self._move_factor, - z=move_vector.z + overlap[1] * self._move_factor) + temp_move_vector = move_vector.set(x = move_vector.x + overlap[0] * self._move_factor, + z = move_vector.z + overlap[1] * self._move_factor) # if the distance between two models less than 2mm then try to find a new factor if abs(temp_move_vector.x - overlap[0]) < self._minimum_gap and abs(temp_move_vector.y - overlap[1]) < self._minimum_gap: temp_scale_factor = self._move_factor - temp_x_factor = (abs(overlap[0]) + self._minimum_gap) / overlap[0] if overlap[0] != 0 else 0# find x move_factor, like (3.4 + 2) / 3.4 = 1.58 + temp_x_factor = (abs(overlap[0]) + self._minimum_gap) / overlap[0] if overlap[0] != 0 else 0 # find x move_factor, like (3.4 + 2) / 3.4 = 1.58 temp_y_factor = (abs(overlap[1]) + self._minimum_gap) / overlap[1] if overlap[1] != 0 else 0 # find y move_factor if abs(temp_x_factor) > abs(temp_y_factor): temp_scale_factor = temp_x_factor else: temp_scale_factor = temp_y_factor - move_vector = move_vector.set(x=move_vector.x + overlap[0] * temp_scale_factor, - z=move_vector.z + overlap[1] * temp_scale_factor) + move_vector = move_vector.set(x = move_vector.x + overlap[0] * temp_scale_factor, + z = move_vector.z + overlap[1] * temp_scale_factor) else: move_vector = temp_move_vector else: @@ -151,7 +151,7 @@ class PlatformPhysics: # Simply waiting for the next tick seems to resolve this correctly. overlap = None - if not Vector.Null.equals(move_vector, epsilon=1e-5): + if not Vector.Null.equals(move_vector, epsilon = 1e-5): transformed_nodes.append(node) op = PlatformPhysicsOperation.PlatformPhysicsOperation(node, move_vector) op.push() From 5f240229f9290b27fa1759ce40c1020ebe18826b Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Thu, 28 Dec 2017 15:40:37 +0100 Subject: [PATCH 20/45] Fix reference to addAdditionalComponents and updateAdditionalComponents Nobody ever tested this, I think... Contributes to issue CURA-4741. --- resources/qml/MonitorButton.qml | 4 ++-- resources/qml/SaveButton.qml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/resources/qml/MonitorButton.qml b/resources/qml/MonitorButton.qml index 9305e2261a..21bc360fe2 100644 --- a/resources/qml/MonitorButton.qml +++ b/resources/qml/MonitorButton.qml @@ -199,12 +199,12 @@ Item } Component.onCompleted: { - updateAdditionalComponents("monitorButtons") + buttonsRow.updateAdditionalComponents("monitorButtons") } Connections { target: CuraApplication - onAdditionalComponentsChanged: updateAdditionalComponents + onAdditionalComponentsChanged: buttonsRow.updateAdditionalComponents } function updateAdditionalComponents (areaId) { diff --git a/resources/qml/SaveButton.qml b/resources/qml/SaveButton.qml index c5025dea78..dc24cc4700 100644 --- a/resources/qml/SaveButton.qml +++ b/resources/qml/SaveButton.qml @@ -138,12 +138,12 @@ Item { } Component.onCompleted: { - addAdditionalComponents("saveButton") + saveRow.addAdditionalComponents("saveButton") } Connections { target: CuraApplication - onAdditionalComponentsChanged: addAdditionalComponents + onAdditionalComponentsChanged: saveRow.addAdditionalComponents("saveButton") } function addAdditionalComponents (areaId) { From 9b41cc05af39f260a5f98a5079119be29d368161 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Thu, 28 Dec 2017 15:46:06 +0100 Subject: [PATCH 21/45] Further fix for MonitorButton Forgot this one here. Contributes to issue CURA-4741. --- resources/qml/MonitorButton.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/qml/MonitorButton.qml b/resources/qml/MonitorButton.qml index 21bc360fe2..b23ba4c95a 100644 --- a/resources/qml/MonitorButton.qml +++ b/resources/qml/MonitorButton.qml @@ -204,7 +204,7 @@ Item Connections { target: CuraApplication - onAdditionalComponentsChanged: buttonsRow.updateAdditionalComponents + onAdditionalComponentsChanged: buttonsRow.updateAdditionalComponents("monitorButtons") } function updateAdditionalComponents (areaId) { From 10f9ae4082d81acc26923ff29635472bcc11c55a Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Thu, 28 Dec 2017 16:21:29 +0100 Subject: [PATCH 22/45] Resolve binding loop Let's align the icons to the text instead of the text to the icons. This makes it all align from left to right and allows the button to take the width of the childrenRect properly. --- resources/themes/cura-light/styles.qml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/resources/themes/cura-light/styles.qml b/resources/themes/cura-light/styles.qml index 0de761b7d9..7532f0dfaf 100755 --- a/resources/themes/cura-light/styles.qml +++ b/resources/themes/cura-light/styles.qml @@ -202,9 +202,8 @@ QtObject { height: Theme.getSize("topbar_button_icon").height Label { + id: button_label text: control.text; - anchors.right: (icon.visible || overlayIcon.visible) ? icon.left : parent.right - anchors.rightMargin: (icon.visible || overlayIcon.visible) ? Theme.getSize("default_margin").width : 0 anchors.verticalCenter: parent.verticalCenter; font: control.checked ? UM.Theme.getFont("large") : UM.Theme.getFont("large_nonbold") color: @@ -227,6 +226,8 @@ QtObject { { visible: control.iconSource != "" id: icon + anchors.left: button_label.right + anchors.leftMargin: (icon.visible || overlayIcon.visible) ? Theme.getSize("default_margin").width : 0 color: UM.Theme.getColor("text_emphasis") opacity: !control.enabled ? 0.2 : 1.0 source: control.iconSource @@ -238,6 +239,8 @@ QtObject { UM.RecolorImage { id: overlayIcon + anchors.left: button_label.right + anchors.leftMargin: (icon.visible || overlayIcon.visible) ? Theme.getSize("default_margin").width : 0 visible: control.overlayIconSource != "" && control.iconSource != "" color: control.overlayColor opacity: !control.enabled ? 0.2 : 1.0 From bf2972200d023ef30d5925080083a0708d48667f Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Thu, 28 Dec 2017 18:09:44 +0100 Subject: [PATCH 23/45] Clarify infill/skin overlap setting descriptions a bit Discovered during work on CURA-4732. --- resources/definitions/fdmprinter.def.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 24f7efe373..17f8b6826f 100644 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -1614,7 +1614,7 @@ "infill_overlap": { "label": "Infill Overlap Percentage", - "description": "The amount of overlap between the infill and the walls. A slight overlap allows the walls to connect firmly to the infill.", + "description": "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.", "unit": "%", "type": "float", "default_value": 10, @@ -1635,7 +1635,7 @@ "default_value": 0.04, "minimum_value_warning": "-0.5 * machine_nozzle_size", "maximum_value_warning": "machine_nozzle_size", - "value": "0.5 * ( infill_line_width + (wall_line_width_x if wall_line_count > 1 else wall_line_width_0) ) * infill_overlap / 100 if infill_sparse_density < 95 and infill_pattern != 'concentric' else 0", + "value": "0.5 * (infill_line_width + (wall_line_width_x if wall_line_count > 1 else wall_line_width_0)) * infill_overlap / 100 if infill_sparse_density < 95 and infill_pattern != 'concentric' else 0", "enabled": "infill_sparse_density > 0 and infill_pattern != 'concentric'", "settable_per_mesh": true } @@ -1644,7 +1644,7 @@ "skin_overlap": { "label": "Skin Overlap Percentage", - "description": "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.", + "description": "The amount of overlap between the skin and the walls as a percentage of the skin line width. A slight overlap allows the walls to connect firmly to the skin. This is a percentage of the average line widths of the skin lines and the innermost wall.", "unit": "%", "type": "float", "default_value": 5, @@ -1665,7 +1665,7 @@ "default_value": 0.02, "minimum_value_warning": "-0.5 * machine_nozzle_size", "maximum_value_warning": "machine_nozzle_size", - "value": "0.5 * ( skin_line_width + (wall_line_width_x if wall_line_count > 1 else wall_line_width_0) ) * skin_overlap / 100 if top_bottom_pattern != 'concentric' else 0", + "value": "0.5 * (skin_line_width + (wall_line_width_x if wall_line_count > 1 else wall_line_width_0)) * skin_overlap / 100 if top_bottom_pattern != 'concentric' else 0", "enabled": "top_bottom_pattern != 'concentric'", "settable_per_mesh": true } From 5b47c58e80a89522ac7529e7a5c556f7bd1d4a77 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Fri, 29 Dec 2017 11:22:55 +0100 Subject: [PATCH 24/45] Add European Portuguese translation This is a new translation from Bothof. Contributes to issue CURA-4692. --- resources/i18n/pt_PT/cura.po | 4595 ++++++++++++++ resources/i18n/pt_PT/fdmextruder.def.json.po | 210 + resources/i18n/pt_PT/fdmprinter.def.json.po | 5814 ++++++++++++++++++ 3 files changed, 10619 insertions(+) create mode 100644 resources/i18n/pt_PT/cura.po create mode 100644 resources/i18n/pt_PT/fdmextruder.def.json.po create mode 100644 resources/i18n/pt_PT/fdmprinter.def.json.po diff --git a/resources/i18n/pt_PT/cura.po b/resources/i18n/pt_PT/cura.po new file mode 100644 index 0000000000..5cabe1b536 --- /dev/null +++ b/resources/i18n/pt_PT/cura.po @@ -0,0 +1,4595 @@ +# Cura +# Copyright (C) 2017 Ultimaker +# This file is distributed under the same license as the Cura package. +# Ruben Dulek , 2017. +# +#, fuzzy +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" +"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" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:29 +msgctxt "@action" +msgid "Machine Settings" +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" + +#: /home/ruben/Projects/Cura/plugins/X3DReader/__init__.py:13 +msgctxt "@item:inlistbox" +msgid "X3D File" +msgstr "Ficheiro X3D" + +#: /home/ruben/Projects/Cura/plugins/GCodeWriter/__init__.py:16 +msgctxt "@item:inlistbox" +msgid "GCode File" +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" + +#: /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" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:86 +msgctxt "@info:status" +msgid "Connecting to Doodle3D Connect" +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/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/ImageReader/ConfigUI.qml:188 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:376 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:139 +#: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:87 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:253 +msgctxt "@action:button" +msgid "Cancel" +msgstr "Cancelar" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:154 +msgctxt "@info:status" +msgid "Sending data to Doodle3D Connect" +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?" + +#: /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" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:213 +msgctxt "@info:status" +msgid "File sent to Doodle3D Connect" +msgstr "Ficheiro enviado para o Doodle3D Connect" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:214 +msgctxt "@action:button" +msgid "Open Connect..." +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" + +#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:34 +msgctxt "@item:inmenu" +msgid "Show Changelog" +msgstr "Mostrar registo de alterações" + +#: /home/ruben/Projects/Cura/plugins/ProfileFlattener/ProfileFlattener.py:20 +msgctxt "@item:inmenu" +msgid "Flatten active settings" +msgstr "Definições ativas de aplanamento" + +#: /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" + +#: /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" + +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:28 +msgctxt "@info:tooltip" +msgid "Print via USB" +msgstr "Imprimir através de USB" + +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:30 +msgctxt "@info:status" +msgid "Connected via USB" +msgstr "Ligado através de USB" + +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:154 +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." + +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:154 +msgctxt "@info:title" +msgid "Printer Unavailable" +msgstr "Impressora indisponível" + +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:457 +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." + +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:457 +msgctxt "@info:title" +msgid "USB Printing" +msgstr "Impressão através de USB" + +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:461 +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." + +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:461 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:108 +#: /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 +msgctxt "@info:title" +msgid "Warning" +msgstr "Aviso" + +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:108 +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 +#, 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 +msgctxt "@info:title" +msgid "Printer Firmware" +msgstr "Firmware da impressora" + +#: /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" + +#: /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}" + +#: /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}" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:89 +msgctxt "@info:title" +msgid "Saving" +msgstr "A guardar" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:99 +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:102 +#, python-brace-format +msgctxt "@info:status Don't translate the XML tags or !" +msgid "Could not save to {0}: {1}" +msgstr "Não foi possível guardar em {0}: {1}" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:118 +#, python-brace-format +msgctxt "@info:status Don't translate the tag {device}!" +msgid "Could not find a file name when trying to write to {device}." +msgstr "Não foi possível encontrar um nome de ficheiro ao tentar gravar em {device}." + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:131 +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:146 +#, python-brace-format +msgctxt "@info:status" +msgid "Could not save to removable drive {0}: {1}" +msgstr "Não foi possível guardar na unidade amoví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/cura/Settings/CuraContainerRegistry.py:153 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1358 +msgctxt "@info:title" +msgid "Error" +msgstr "Erro" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:140 +#, python-brace-format +msgctxt "@info:status" +msgid "Saved to Removable Drive {0} as {1}" +msgstr "Guardado na unidade amovível {0} como {1}" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:140 +msgctxt "@info:title" +msgid "File Saved" +msgstr "Ficheiro guardado" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:141 +msgctxt "@action:button" +msgid "Eject" +msgstr "Ejetar" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:141 +#, python-brace-format +msgctxt "@action" +msgid "Eject removable device {0}" +msgstr "Ejetar dispositivo amovível {0}" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:156 +#, python-brace-format +msgctxt "@info:status" +msgid "Ejected {0}. You can now safely remove the drive." +msgstr "{0} ejetado. Pode agora remover a unidade com segurança." + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:156 +msgctxt "@info:title" +msgid "Safely Remove Hardware" +msgstr "Remover hardware com segurança" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:158 +#, python-brace-format +msgctxt "@info:status" +msgid "Failed to eject {0}. Another program may be using the drive." +msgstr "Falha ao ejetar {0}. Outro programa pode estar a utilizar a unidade." + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/WindowsRemovableDrivePlugin.py:68 +msgctxt "@item:intext" +msgid "Removable Drive" +msgstr "Unidade amovível" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:109 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:53 +msgctxt "@action:button Preceded by 'Ready to'." +msgid "Print over network" +msgstr "Imprimir através da rede" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:110 +msgctxt "@properties:tooltip" +msgid "Print over network" +msgstr "Imprimir através da rede" + +#: /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" +msgstr "Acesso à impressora solicitado. Aprove a solicitação na impressora" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:159 +msgctxt "@info:title" +msgid "Connection status" +msgstr "Estado da ligação" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:160 +msgctxt "@info:status" +msgid "" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:160 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:163 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:164 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:479 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:502 +msgctxt "@info:title" +msgid "Connection Status" +msgstr "Estado da ligação" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:161 +msgctxt "@action:button" +msgid "Retry" +msgstr "Repetir" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:161 +msgctxt "@info:tooltip" +msgid "Re-send the access request" +msgstr "Reenviar a solicitação de acesso" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:163 +msgctxt "@info:status" +msgid "Access to the printer accepted" +msgstr "Acesso à impressora aceite" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:164 +msgctxt "@info:status" +msgid "No access to print with this printer. Unable to send print job." +msgstr "Sem acesso à impressão com esta impressora. Não é possível enviar a tarefa de impressão." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:165 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:28 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:72 +msgctxt "@action:button" +msgid "Request Access" +msgstr "Solicitar acesso" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:165 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:27 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:71 +msgctxt "@info:tooltip" +msgid "Send access request to the printer" +msgstr "Enviar solicitação de acesso para a impressora" + +#: /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." +msgstr "Ligado através da rede. Aprove a solicitação de acesso na impressora." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:392 +msgctxt "@info:status" +msgid "Connected over the network." +msgstr "Ligado através da rede." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:405 +msgctxt "@info:status" +msgid "Connected over the network. No access to control the printer." +msgstr "Ligado através da rede. Sem acesso para controlar a impressora." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:410 +msgctxt "@info:status" +msgid "Access request was denied on the printer." +msgstr "A solicitação de acesso foi negada na impressora." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:413 +msgctxt "@info:status" +msgid "Access request failed due to a timeout." +msgstr "A solicitação de acesso falhou devido a tempo excedido." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:478 +msgctxt "@info:status" +msgid "The connection with the network was lost." +msgstr "A ligação à rede foi perdida." + +#: /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 "A ligação à impressora foi perdida. Verifique se a impressora está ligada." + +#: /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." +msgstr "Não é possível iniciar uma nova tarefa de impressão; a impressora está ocupada. O estado atual da impressora é %s." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:667 +msgctxt "@info:title" +msgid "Printer Status" +msgstr "Estado da impressora" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:691 +#, python-brace-format +msgctxt "@info:status" +msgid "Unable to start a new print job. No Printcore loaded in slot {0}" +msgstr "Não é possível iniciar uma nova tarefa de impressão. Nenhum núcleo de impressão carregado na ranhura {0}" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:699 +#, python-brace-format +msgctxt "@info:status" +msgid "Unable to start a new print job. No material loaded in slot {0}" +msgstr "Não é possível iniciar uma nova tarefa de impressão. Nenhum material carregado na ranhura {0}" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:709 +#, python-brace-format +msgctxt "@label" +msgid "Not enough material for spool {0}." +msgstr "Material insuficiente para a bobina {0}." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:719 +#, python-brace-format +msgctxt "@label" +msgid "Different PrintCore (Cura: {0}, Printer: {1}) selected for extruder {2}" +msgstr "Núcleo de impressão diferente (Cura: {0}, Impressora: {1}) selecionado para a extrusora {2}" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:733 +#, 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 a extrusora {2}" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:741 +#, python-brace-format +msgctxt "@label" +msgid "" +"PrintCore {0} is not properly calibrated. XY calibration needs to be " +"performed on the printer." +msgstr "O núcleo de impressão {0} não foi devidamente calibrado. É necessário realizar a calibração XY na impressora." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:746 +msgctxt "@label" +msgid "Are you sure you wish to print with the selected configuration?" +msgstr "Tem a certeza de que deseja imprimir com a configuração selecionada?" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:747 +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 "Foi detetada uma incompatibilidade entre a configuração ou calibração da impressora e o Cura. Para obter melhores resultados, segmente sempre para os núcleos de impressão e para os materiais que estão introduzidos na impressora." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:753 +msgctxt "@window:title" +msgid "Mismatched configuration" +msgstr "Configuração incompatível" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:864 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:262 +msgctxt "@info:status" +msgid "" +"Sending new jobs (temporarily) blocked, still sending the previous print job." +msgstr "A enviar novas tarefas bloqueadas (temporariamente); ainda a enviar a tarefa de impressão anterior." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:873 +msgctxt "@info:status" +msgid "Sending data to printer" +msgstr "A enviar dados para a impressora" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:873 +msgctxt "@info:title" +msgid "Sending Data" +msgstr "A enviar dados" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:944 +msgctxt "@info:status" +msgid "Unable to send data to printer. Is another job still active?" +msgstr "Não é possível enviar dados para a impressora. Existe outra tarefa ativa?" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1085 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:196 +msgctxt "@label:MonitorStatus" +msgid "Aborting print..." +msgstr "A cancelar impressão..." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1091 +msgctxt "@label:MonitorStatus" +msgid "Print aborted. Please check the printer" +msgstr "Impressão cancelada. Verifique a impressora" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1097 +msgctxt "@label:MonitorStatus" +msgid "Pausing print..." +msgstr "A colocar a impressão em pausa..." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1099 +msgctxt "@label:MonitorStatus" +msgid "Resuming print..." +msgstr "A retomar a impressão..." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1289 +msgctxt "@window:title" +msgid "Sync with your printer" +msgstr "Sincronizar com a impressora" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1291 +msgctxt "@label" +msgid "Would you like to use your current printer configuration in Cura?" +msgstr "Gostaria de utilizar a configuração de impressora atual no Cura?" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1293 +msgctxt "@label" +msgid "" +"The PrintCores and/or materials on your printer differ from those within " +"your current project. For the best result, always slice for the PrintCores " +"and materials that are inserted in your printer." +msgstr "Os núcleos de impressão e/ou materiais na sua impressora são diferentes dos incluídos no seu projeto atual. Para obter melhores resultados, segmente sempre para os núcleos de impressão e para os materiais que estão introduzidos na impressora." + +#: /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." +msgstr "Esta impressora não está configurada para alojar um grupo de impressoras Ultimaker 3 ligadas em rede." + +#: /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." +msgstr "Esta impressora aloja um grupo de {count} impressoras Ultimaker 3 ligadas em rede." + +#: /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} terminou a impressão de \"{job_name}\". Recolha a impressão e confirme a limpeza da placa de construção." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:115 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:520 +#, 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}\". Altere a configuração da impressora de forma a corresponder à tarefa para dar início à impressão." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:278 +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 "Não é possível enviar nova tarefa de impressão: esta impressora 3D não está (ainda) configurada para alojar um grupo de impressoras Ultimaker 3 ligadas em rede." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:410 +#, python-brace-format +msgctxt "@info:status" +msgid "Unable to send print job to group {cluster_name}." +msgstr "Não é possível enviar tarefa de impressão para o grupo {cluster_name}." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:418 +#, python-brace-format +msgctxt "@info:status" +msgid "Sent {file_name} to group {cluster_name}." +msgstr "{File_name} enviado para o grupo {cluster_name}." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:423 +msgctxt "@action:button" +msgid "Show print jobs" +msgstr "Mostrar tarefas de impressão" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:424 +msgctxt "@info:tooltip" +msgid "Opens the print jobs interface in your browser." +msgstr "Abre a interface de tarefas de impressão no seu browser." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:489 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:239 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:47 +msgctxt "@label" +msgid "Unknown" +msgstr "Desconhecido" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:492 +#, python-brace-format +msgctxt "@info:status" +msgid "Printer '{printer_name}' has finished printing '{job_name}'." +msgstr "A impressora {printer_name} terminou a impressão de \"{job_name}\"." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:494 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:497 +msgctxt "@info:status" +msgid "Print finished" +msgstr "Impressão 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/PrinterInfoBlock.qml:282 +msgctxt "@label:status" +msgid "Action required" +msgstr "Ação necessária" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:643 +#, python-brace-format +msgctxt "@info:progress" +msgid "Sending {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 +msgctxt "@action" +msgid "Connect via Network" +msgstr "Ligar através de rede" + +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:64 +#, 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." + +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:65 +#, python-format +msgctxt "@info:title The %s gets replaced with the printer name." +msgid "New %s firmware available" +msgstr "Novo firmware %s disponível" + +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:66 +msgctxt "@action:button" +msgid "How to update" +msgstr "Como atualizar" + +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:77 +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 +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!" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:31 +msgctxt "@item:inlistbox" +msgid "SolidWorks part file" +msgstr "Ficheiro de peça SolidWorks" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:35 +msgctxt "@item:inlistbox" +msgid "SolidWorks assembly file" +msgstr "Ficheiro de montagem SolidWorks" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.py:21 +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/SimulationView/__init__.py:14 +msgctxt "@item:inlistbox" +msgid "Simulation view" +msgstr "Visualização de simulação" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:100 +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" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:101 +msgctxt "@info:title" +msgid "Simulation View" +msgstr "Visualização de simulação" + +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.py:26 +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." + +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:46 +msgctxt "@info:title" +msgid "Collecting Data" +msgstr "A recolher dados" + +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:48 +msgctxt "@action:button" +msgid "Dismiss" +msgstr "Dispensar" + +#: /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/GCodeProfileReader/__init__.py:14 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/__init__.py:14 +msgctxt "@item:inlistbox" +msgid "G-code File" +msgstr "Ficheiro G-code" + +#: /home/ruben/Projects/Cura/plugins/ImageReader/__init__.py:14 +msgctxt "@item:inlistbox" +msgid "JPG Image" +msgstr "Imagem JPG" + +#: /home/ruben/Projects/Cura/plugins/ImageReader/__init__.py:18 +msgctxt "@item:inlistbox" +msgid "JPEG Image" +msgstr "Imagem JPEG" + +#: /home/ruben/Projects/Cura/plugins/ImageReader/__init__.py:22 +msgctxt "@item:inlistbox" +msgid "PNG Image" +msgstr "Imagem PNG" + +#: /home/ruben/Projects/Cura/plugins/ImageReader/__init__.py:26 +msgctxt "@item:inlistbox" +msgid "BMP Image" +msgstr "Imagem BMP" + +#: /home/ruben/Projects/Cura/plugins/ImageReader/__init__.py:30 +msgctxt "@item:inlistbox" +msgid "GIF Image" +msgstr "Imagem GIF" + +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:269 +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." + +#: /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:327 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:336 +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}" + +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:326 +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." + +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:335 +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." + +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:50 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:239 +msgctxt "@info:status" +msgid "Processing Layers" +msgstr "A processar camadas" + +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:239 +msgctxt "@info:title" +msgid "Information" +msgstr "Informações" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/__init__.py:14 +msgctxt "@label" +msgid "Per Model Settings" +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" + +#: /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." + +#: /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 "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." + +#: /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 "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 +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 +msgctxt "@title:tab" +msgid "Custom" +msgstr "Personalizado" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/__init__.py:30 +#: /home/ruben/Projects/Cura/plugins/3MFReader/__init__.py:36 +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 +msgctxt "@label" +msgid "Nozzle" +msgstr "Bocal" + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:164 +#, python-brace-format +msgctxt "@info:status" +msgid "Failed to get plugin ID from {0}" +msgstr "Falha ao obter ID de plug-in de {0}" + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:165 +msgctxt "@info:tile" +msgid "Warning" +msgstr "Aviso" + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:203 +msgctxt "@window:title" +msgid "Plugin browser" +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" + +#: /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 +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 +msgctxt "@info:title" +msgid "G-code Details" +msgstr "Detalhes do G-code" + +#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:424 +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." + +#: /home/ruben/Projects/Cura/plugins/CuraProfileWriter/__init__.py:14 +#: /home/ruben/Projects/Cura/plugins/CuraProfileReader/__init__.py:14 +msgctxt "@item:inlistbox" +msgid "Cura Profile" +msgstr "Perfil Cura" + +#: /home/ruben/Projects/Cura/plugins/3MFWriter/__init__.py:30 +msgctxt "@item:inlistbox" +msgid "3MF file" +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" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelection.py:20 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelection.py:18 +msgctxt "@action" +msgid "Select upgrades" +msgstr "Selecionar atualizações" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UpgradeFirmwareMachineAction.py:12 +msgctxt "@action" +msgid "Upgrade Firmware" +msgstr "Atualizar firmware" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.py:14 +msgctxt "@action" +msgid "Checkup" +msgstr "Exame" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.py:15 +msgctxt "@action" +msgid "Level build plate" +msgstr "Nivelar placa de construção" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:89 +msgctxt "@tooltip" +msgid "Outer Wall" +msgstr "Parede externa" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:90 +msgctxt "@tooltip" +msgid "Inner Walls" +msgstr "Paredes internas" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:91 +msgctxt "@tooltip" +msgid "Skin" +msgstr "Revestimento" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:92 +msgctxt "@tooltip" +msgid "Infill" +msgstr "Preenchimento" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:93 +msgctxt "@tooltip" +msgid "Support Infill" +msgstr "Preenchimento de suporte" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:94 +msgctxt "@tooltip" +msgid "Support Interface" +msgstr "Interface de suporte" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:95 +msgctxt "@tooltip" +msgid "Support" +msgstr "Suporte" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:96 +msgctxt "@tooltip" +msgid "Skirt" +msgstr "Contorno" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:97 +msgctxt "@tooltip" +msgid "Travel" +msgstr "Deslocação" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:98 +msgctxt "@tooltip" +msgid "Retractions" +msgstr "Retrações" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:99 +msgctxt "@tooltip" +msgid "Other" +msgstr "Outro" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:199 +msgctxt "@label unknown material" +msgid "Unknown" +msgstr "Desconhecido" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:284 +#, python-brace-format +msgctxt "@label" +msgid "Pre-sliced file {0}" +msgstr "Ficheiro pré-segmentado {0}" + +#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:469 +msgctxt "@item:material" +msgid "No material loaded" +msgstr "Nenhum material carregado" + +#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:476 +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 +msgctxt "@title:window" +msgid "File Already Exists" +msgstr "O ficheiro já existe" + +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:432 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:114 +#, python-brace-format +msgctxt "@label Don't translate the XML tag !" +msgid "" +"The file {0} already exists. Are you sure you want to " +"overwrite it?" +msgstr "O ficheiro {0} já existe. Tem a certeza de que deseja substituí-lo?" + +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:815 +msgctxt "@label" +msgid "Custom" +msgstr "Personalizado" + +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:819 +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 +msgctxt "@menuitem" +msgid "Not overridden" +msgstr "Não substituído" + +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:117 +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/MaterialManager.py:24 +msgctxt "@info:title" +msgid "Incompatible Material" +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." +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" + +#: /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}" + +#: /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." + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:156 +#, 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 +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 +#, python-brace-format +msgctxt "@info:status Don't translate the XML tags or !" +msgid "" +"Failed to import profile from {0}: {1}" +msgstr "Falha ao importar perfil de {0}: {1}" + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:216 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:252 +#, 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 +#, 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." + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:274 +msgctxt "@label" +msgid "Custom profile" +msgstr "Perfil personalizado" + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:285 +msgctxt "@info:status" +msgid "Profile is missing a quality type." +msgstr "O perfil tem um tipo de qualidade em falta." + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:321 +#, 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/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 "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 +msgctxt "@info:title" +msgid "Build Volume" +msgstr "Volume de construção" + +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:34 +msgctxt "@info:status" +msgid "Multiplying and placing objects" +msgstr "Multiplicar e dispor objetos" + +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:35 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:83 +msgctxt "@info:title" +msgid "Placing Object" +msgstr "A dispor objeto" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:80 +msgctxt "@title:window" +msgid "Crash Report" +msgstr "Relatório de falhas" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:93 +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. 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 +msgctxt "@title:groupbox" +msgid "System information" +msgstr "Informações do sistema" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:109 +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}
" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:113 +#, python-brace-format +msgctxt "@label Qt version" +msgid "Qt version: {qt}
" +msgstr "Versão Qt: {qt}
" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:114 +#, python-brace-format +msgctxt "@label PyQt version" +msgid "PyQt version: {pyqt}
" +msgstr "Versão PyQt: {pyqt}
" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:115 +#, python-brace-format +msgctxt "@label OpenGL" +msgid "OpenGL: {opengl}
" +msgstr "OpenGL: {opengl}
" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:130 +#, 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 +#, python-brace-format +msgctxt "@label OpenGL vendor" +msgid "
  • OpenGL Vendor: {vendor}
  • " +msgstr "
  • Vendedor do OpenGL: {vendor}
  • " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:132 +#, python-brace-format +msgctxt "@label OpenGL renderer" +msgid "
  • OpenGL Renderer: {renderer}
  • " +msgstr "
  • Processador do OpenGL: {renderer}
  • " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:141 +msgctxt "@title:groupbox" +msgid "Exception traceback" +msgstr "Determinação da origem da exceção" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:208 +msgctxt "@title:groupbox" +msgid "Logs" +msgstr "Registos" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:231 +msgctxt "@title:groupbox" +msgid "User description" +msgstr "Descrição do utilizador" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:246 +msgctxt "@action:button" +msgid "Send report" +msgstr "Enviar relatório" + +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:256 +msgctxt "@info:progress" +msgid "Loading machines..." +msgstr "A carregar máquinas..." + +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:661 +msgctxt "@info:progress" +msgid "Setting up scene..." +msgstr "A configurar cenário..." + +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:703 +msgctxt "@info:progress" +msgid "Loading interface..." +msgstr "A carregar interface..." + +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:874 +#, 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 "%(largura).1f x %(profundidade).1f x %(altura).1f mm" + +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1348 +#, 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 +#, 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 +msgctxt "@info:status" +msgid "The selected model was too small to load." +msgstr "O modelo selecionado era demasiado pequeno para carregar." + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:59 +msgctxt "@title" +msgid "Machine Settings" +msgstr "Definições da máquina" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:78 +msgctxt "@title:tab" +msgid "Printer" +msgstr "Impressora" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:97 +msgctxt "@label" +msgid "Printer Settings" +msgstr "Definições da impressora" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:108 +msgctxt "@label" +msgid "X (Width)" +msgstr "X (largura)" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:109 +#: /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 +msgctxt "@label" +msgid "mm" +msgstr "mm" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:118 +msgctxt "@label" +msgid "Y (Depth)" +msgstr "Y (profundidade)" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:128 +msgctxt "@label" +msgid "Z (Height)" +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" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:149 +msgctxt "@option:check" +msgid "Origin at center" +msgstr "Origem no centro" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:157 +msgctxt "@option:check" +msgid "Heated bed" +msgstr "Base aquecida" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:168 +msgctxt "@label" +msgid "Gcode flavor" +msgstr "Padrão Gcode" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:181 +msgctxt "@label" +msgid "Printhead Settings" +msgstr "Definições da cabeça de impressão" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:191 +msgctxt "@label" +msgid "X min" +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\"." + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:201 +msgctxt "@label" +msgid "Y min" +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\"." + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:211 +msgctxt "@label" +msgid "X max" +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\"." + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:221 +msgctxt "@label" +msgid "Y max" +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\"." + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:234 +msgctxt "@label" +msgid "Gantry height" +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\"." + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:255 +msgctxt "@label" +msgid "Number of Extruders" +msgstr "Número de extrusoras" + +#: /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 +msgctxt "@label" +msgid "Start Gcode" +msgstr "Gcode inicial" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:327 +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 +msgctxt "@label" +msgid "End Gcode" +msgstr "Gcode final" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:346 +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 +msgctxt "@label" +msgid "Nozzle Settings" +msgstr "Definições do bocal" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:400 +msgctxt "@label" +msgid "Nozzle offset X" +msgstr "Desvio X do bocal" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:412 +msgctxt "@label" +msgid "Nozzle offset Y" +msgstr "Desvio Y do bocal" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:433 +msgctxt "@label" +msgid "Extruder Start Gcode" +msgstr "Gcode inicial da extrusora" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:451 +msgctxt "@label" +msgid "Extruder End Gcode" +msgstr "Gcode final da extrusora" + +#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.qml:18 +msgctxt "@label" +msgid "Changelog" +msgstr "Registo 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/PluginBrowser/PluginBrowser.qml:80 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:123 +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:147 +#: /home/ruben/Projects/Cura/resources/qml/EngineLog.qml:38 +msgctxt "@action:button" +msgid "Close" +msgstr "Fechar" + +#: /home/ruben/Projects/Cura/plugins/USBPrinting/FirmwareUpdateWindow.qml:22 +msgctxt "@title:window" +msgid "Firmware Update" +msgstr "Atualização de firmware" + +#: /home/ruben/Projects/Cura/plugins/USBPrinting/FirmwareUpdateWindow.qml:42 +msgctxt "@label" +msgid "Firmware update completed." +msgstr "Atualização de firmware concluída." + +#: /home/ruben/Projects/Cura/plugins/USBPrinting/FirmwareUpdateWindow.qml:47 +msgctxt "@label" +msgid "Starting firmware update, this may take a while." +msgstr "A iniciar atualização de firmware; isto poderá demorar algum tempo." + +#: /home/ruben/Projects/Cura/plugins/USBPrinting/FirmwareUpdateWindow.qml:52 +msgctxt "@label" +msgid "Updating firmware." +msgstr "A atualizar firmware." + +#: /home/ruben/Projects/Cura/plugins/USBPrinting/FirmwareUpdateWindow.qml:61 +msgctxt "@label" +msgid "Firmware update failed due to an unknown error." +msgstr "A atualização de firmware falhou devido a um erro desconhecido." + +#: /home/ruben/Projects/Cura/plugins/USBPrinting/FirmwareUpdateWindow.qml:64 +msgctxt "@label" +msgid "Firmware update failed due to an communication error." +msgstr "A atualização de firmware falhou devido a um erro de comunicação." + +#: /home/ruben/Projects/Cura/plugins/USBPrinting/FirmwareUpdateWindow.qml:67 +msgctxt "@label" +msgid "Firmware update failed due to an input/output error." +msgstr "A atualização de firmware falhou devido a um erro de entrada/saída." + +#: /home/ruben/Projects/Cura/plugins/USBPrinting/FirmwareUpdateWindow.qml:70 +msgctxt "@label" +msgid "Firmware update failed due to missing firmware." +msgstr "A atualização de firmware falhou devido à ausência de firmware." + +#: /home/ruben/Projects/Cura/plugins/USBPrinting/FirmwareUpdateWindow.qml:73 +msgctxt "@label" +msgid "Unknown error code: %1" +msgstr "Código de erro desconhecido: %1" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:55 +msgctxt "@title:window" +msgid "Connect to Networked Printer" +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" +"\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:" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:75 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:44 +msgctxt "@action:button" +msgid "Add" +msgstr "Adicionar" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:85 +msgctxt "@action:button" +msgid "Edit" +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 +msgctxt "@action:button" +msgid "Remove" +msgstr "Remover" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:104 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:35 +msgctxt "@action:button" +msgid "Refresh" +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" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:221 +msgctxt "@label" +msgid "Type" +msgstr "Tipo" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:233 +msgctxt "@label" +msgid "Ultimaker 3" +msgstr "Ultimaker 3" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:236 +msgctxt "@label" +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" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:264 +msgctxt "@label" +msgid "Address" +msgstr "Endereço" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:286 +msgctxt "@label" +msgid "This printer is not set up to host a group of Ultimaker 3 printers." +msgstr "Esta impressora não está configurada para alojar um grupo de impressoras Ultimaker 3." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:290 +msgctxt "@label" +msgid "This printer is the host for a group of %1 Ultimaker 3 printers." +msgstr "Esta impressora aloja um grupo de %1 impressoras Ultimaker 3." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:300 +msgctxt "@label" +msgid "The printer at this address has not yet responded." +msgstr "A impressora neste endereço ainda não respondeu." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:305 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:38 +msgctxt "@action:button" +msgid "Connect" +msgstr "Ligar" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:319 +msgctxt "@title:window" +msgid "Printer Address" +msgstr "Endereço da impressora" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:349 +msgctxt "@alabel" +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" +msgstr "OK" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrintWindow.qml:24 +msgctxt "@title:window" +msgid "Print over network" +msgstr "Imprimir através da rede" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrintWindow.qml:92 +msgctxt "@action:button" +msgid "Print" +msgstr "Imprimir" + +#: /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ão está configurado para alojar um grupo de impressoras Ultimaker 3 ligadas em rede" + +#: /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." + +#: /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" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:37 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:278 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:408 +msgctxt "@label" +msgid "Preparing to print" +msgstr "A preparar para imprimir" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:39 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:271 +msgctxt "@label:status" +msgid "Printing" +msgstr "A imprimir" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:41 +msgctxt "@label:status" +msgid "Available" +msgstr "Disponível" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:43 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:101 +msgctxt "@label:MonitorStatus" +msgid "Lost connection with the printer" +msgstr "Ligação com a impressora perdida" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:257 +msgctxt "@label:status" +msgid "Disabled" +msgstr "Desativado" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:273 +msgctxt "@label:status" +msgid "Reserved" +msgstr "Reservado" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:275 +msgctxt "@label:status" +msgid "Finished" +msgstr "Concluído" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:290 +msgctxt "@label:status" +msgid "Paused" +msgstr "Em pausa" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:292 +msgctxt "@label:status" +msgid "Resuming" +msgstr "A retomar" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:294 +msgctxt "@label:status" +msgid "Print aborted" +msgstr "Impressão cancelada" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:389 +#: /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" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:403 +msgctxt "@label" +msgid "Finishes at: " +msgstr "Termina a: " + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:405 +msgctxt "@label" +msgid "Clear build plate" +msgstr "Limpar placa de construção" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:414 +msgctxt "@label" +msgid "Waiting for configuration change" +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" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterControlItem.qml:94 +msgctxt "@label" +msgid "Printing" +msgstr "A imprimir" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterControlItem.qml:112 +msgctxt "@label" +msgid "Queued" +msgstr "Em fila" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterControlItem.qml:171 +msgctxt "@label:title" +msgid "Printers" +msgstr "Impressoras" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterControlItem.qml:225 +msgctxt "@action:button" +msgid "View printers" +msgstr "Visualizar impressoras" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:37 +msgctxt "@info:tooltip" +msgid "Connect to a printer" +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" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:117 +msgctxt "@action:button" +msgid "Activate Configuration" +msgstr "Ativar configuração" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:20 +msgctxt "@title:window" +msgid "Cura SolidWorks Plugin Configuration" +msgstr "Configuração do plug-in SolidWorks do Cura" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:44 +msgctxt "@action:label" +msgid "Default quality of the exported STL:" +msgstr "Qualidade predefinida do STL exportado:" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:79 +msgctxt "@option:curaSolidworksStlQuality" +msgid "Always ask" +msgstr "Perguntar sempre" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:80 +msgctxt "@option:curaSolidworksStlQuality" +msgid "Always use Fine quality" +msgstr "Utilizar sempre qualidade de alta resolução" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:81 +msgctxt "@option:curaSolidworksStlQuality" +msgid "Always use Coarse quality" +msgstr "Utilizar sempre a qualidade de baixa resolução" + +#: /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 +msgctxt "@option:curaSolidworksStlQuality" +msgid "Coarse" +msgstr "Baixa resolução" + +#: /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 +msgctxt "@text:window" +msgid "Remember my choice" +msgstr "Memorizar a minha escolha" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:81 +msgctxt "@label" +msgid "Color scheme" +msgstr "Esquema de cores" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:96 +msgctxt "@label:listbox" +msgid "Material Color" +msgstr "Cor do material" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:100 +msgctxt "@label:listbox" +msgid "Line Type" +msgstr "Tipo de linha" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:104 +msgctxt "@label:listbox" +msgid "Feedrate" +msgstr "Velocidade de alimentação" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:108 +msgctxt "@label:listbox" +msgid "Layer thickness" +msgstr "Espessura da camada" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:148 +msgctxt "@label" +msgid "Compatibility Mode" +msgstr "Modo de compatibilidade" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:230 +msgctxt "@label" +msgid "Show Travels" +msgstr "Mostrar deslocações" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:236 +msgctxt "@label" +msgid "Show Helpers" +msgstr "Mostrar auxiliares" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:242 +msgctxt "@label" +msgid "Show Shell" +msgstr "Mostrar cobertura" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:248 +msgctxt "@label" +msgid "Show Infill" +msgstr "Mostrar preenchimento" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:297 +msgctxt "@label" +msgid "Only Show Top Layers" +msgstr "Mostrar apenas camadas superiores" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:306 +msgctxt "@label" +msgid "Show 5 Detailed Layers On Top" +msgstr "Mostrar cinco camadas detalhadas no topo" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:317 +msgctxt "@label" +msgid "Top / Bottom" +msgstr "Superior/Inferior" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:321 +msgctxt "@label" +msgid "Inner Wall" +msgstr "Parede interna" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:378 +msgctxt "@label" +msgid "min" +msgstr "mín." + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:420 +msgctxt "@label" +msgid "max" +msgstr "máx." + +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:18 +msgctxt "@title:window" +msgid "Post Processing Plugin" +msgstr "Plug-in de pós-processamento" + +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:49 +msgctxt "@label" +msgid "Post Processing Scripts" +msgstr "Scripts de pós-processamento" + +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:217 +msgctxt "@action" +msgid "Add a script" +msgstr "Adicionar um script" + +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:263 +msgctxt "@label" +msgid "Settings" +msgstr "Definições" + +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:455 +msgctxt "@info:tooltip" +msgid "Change active post-processing scripts" +msgstr "Alterar scripts de pós-processamento ativos" + +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:19 +msgctxt "@title:window" +msgid "Convert Image..." +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\"." + +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:38 +msgctxt "@action:label" +msgid "Height (mm)" +msgstr "Altura (mm)" + +#: /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." + +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:61 +msgctxt "@action:label" +msgid "Base (mm)" +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." + +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:84 +msgctxt "@action:label" +msgid "Width (mm)" +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." + +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:108 +msgctxt "@action:label" +msgid "Depth (mm)" +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." + +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:139 +msgctxt "@item:inlistbox" +msgid "Lighter is higher" +msgstr "Mais claro é mais alto" + +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:139 +msgctxt "@item:inlistbox" +msgid "Darker is higher" +msgstr "Mais escuro é mais alto" + +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:149 +msgctxt "@info:tooltip" +msgid "The amount of smoothing to apply to the image." +msgstr "A quantidade de suavização a aplicar à imagem." + +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:154 +msgctxt "@action:label" +msgid "Smoothing" +msgstr "Suavização" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:208 +msgctxt "@action:button" +msgid "Select settings" +msgstr "Selecionar definições" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:248 +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/resources/qml/Preferences/SettingVisibilityPage.qml:91 +msgctxt "@label:textbox" +msgid "Filter..." +msgstr "Filtrar..." + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:296 +msgctxt "@label:checkbox" +msgid "Show all" +msgstr "Mostrar tudo" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:14 +msgctxt "@title:window" +msgid "Open Project" +msgstr "Abrir projeto" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:58 +msgctxt "@action:ComboBox option" +msgid "Update existing" +msgstr "Atualizar existente" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:59 +msgctxt "@action:ComboBox option" +msgid "Create new" +msgstr "Criar novo" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:70 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:72 +msgctxt "@action:title" +msgid "Summary - Cura Project" +msgstr "Resumo – Projeto Cura" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:92 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:90 +msgctxt "@action:label" +msgid "Printer settings" +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?" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:128 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:99 +msgctxt "@action:label" +msgid "Type" +msgstr "Tipo" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:144 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:201 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:293 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:114 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:190 +msgctxt "@action:label" +msgid "Name" +msgstr "Nome" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:165 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:166 +msgctxt "@action:label" +msgid "Profile settings" +msgstr "Definições do perfil" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:181 +msgctxt "@info:tooltip" +msgid "How should the conflict in the profile be resolved?" +msgstr "Como deve ser resolvido o conflito no perfil?" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:216 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:174 +msgctxt "@action:label" +msgid "Not in profile" +msgstr "Inexistente no perfil" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:221 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:179 +msgctxt "@action:label" +msgid "%1 override" +msgid_plural "%1 overrides" +msgstr[0] "%1 substituição" +msgstr[1] "%1 substituições" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:232 +msgctxt "@action:label" +msgid "Derivative from" +msgstr "Derivado de" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:237 +msgctxt "@action:label" +msgid "%1, %2 override" +msgid_plural "%1, %2 overrides" +msgstr[0] "%1, %2 substituição" +msgstr[1] "%1, %2 substituições" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:253 +msgctxt "@action:label" +msgid "Material settings" +msgstr "Definições de material" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:269 +msgctxt "@info:tooltip" +msgid "How should the conflict in the material be resolved?" +msgstr "Como deve ser resolvido o conflito no material?" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:312 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:209 +msgctxt "@action:label" +msgid "Setting visibility" +msgstr "Visibilidade das definições" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:321 +msgctxt "@action:label" +msgid "Mode" +msgstr "Modo" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:337 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:218 +msgctxt "@action:label" +msgid "Visible settings:" +msgstr "Definições visíveis:" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:342 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:223 +msgctxt "@action:label" +msgid "%1 out of %2" +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." + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:386 +msgctxt "@action:button" +msgid "Open" +msgstr "Abrir" + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:11 +msgctxt "@title:window" +msgid "Find & Update plugins" +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." + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:145 +msgctxt "@action:button" +msgid "Upgrade" +msgstr "Atualizar" + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:147 +msgctxt "@action:button" +msgid "Installed" +msgstr "Instalado" + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:149 +msgctxt "@action:button" +msgid "Download" +msgstr "Transferir" + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:199 +msgctxt "@title:window" +msgid "Plugin License Agreement" +msgstr "Contrato de licença do plug-in" + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:220 +msgctxt "@label" +msgid "" +"This plugin contains a license.\n" +"You need to accept this license to install this plugin.\n" +"Do you agree with the terms below?" +msgstr "Este plug-in contém uma licença.\nÉ necessário aceitar esta licença para instalar o plug-in.\nConcorda com os termos abaixo?" + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:242 +msgctxt "@action:button" +msgid "Accept" +msgstr "Aceitar" + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:253 +msgctxt "@action:button" +msgid "Decline" +msgstr "Rejeitar" + +#: /home/ruben/Projects/Cura/plugins/UserAgreementPlugin/UserAgreement.qml:16 +msgctxt "@title:window" +msgid "User Agreement" +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" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:37 +msgctxt "@label" +msgid "Please select any upgrades made to this Ultimaker 2." +msgstr "Selecione quaisquer atualizações realizadas a esta Ultimaker 2." + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:45 +msgctxt "@label" +msgid "Olsson Block" +msgstr "Bloco Olsson" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:27 +msgctxt "@title" +msgid "Build Plate Leveling" +msgstr "Nivelamento da placa 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." + +#: /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." + +#: /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" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:74 +msgctxt "@action:button" +msgid "Move to Next Position" +msgstr "Avançar para posição seguinte" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UpgradeFirmwareMachineAction.qml:27 +msgctxt "@title" +msgid "Upgrade Firmware" +msgstr "Atualizar firmware" + +#: /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." + +#: /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 "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 +msgctxt "@action:button" +msgid "Automatically upgrade Firmware" +msgstr "Atualizar firmware automaticamente" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UpgradeFirmwareMachineAction.qml:72 +msgctxt "@action:button" +msgid "Upload custom Firmware" +msgstr "Carregar firmware personalizado" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UpgradeFirmwareMachineAction.qml:83 +msgctxt "@title:window" +msgid "Select custom firmware" +msgstr "Selecionar firmware personalizado" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:37 +msgctxt "@label" +msgid "Please select any upgrades made to this Ultimaker Original" +msgstr "Selecione quaisquer atualizações realizadas a esta Ultimaker Original" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:45 +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)" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:27 +msgctxt "@title" +msgid "Check Printer" +msgstr "Verificar impressora" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:39 +msgctxt "@label" +msgid "" +"It's a good idea to do a few sanity checks on your Ultimaker. You can skip " +"this step if you know your machine is functional" +msgstr "É recomendado efetuar algumas verificações de conformidade à sua Ultimaker. Pode ignorar este passo se souber que a sua máquina está funcional" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:53 +msgctxt "@action:button" +msgid "Start Printer Check" +msgstr "Iniciar verificação da impressora" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:80 +msgctxt "@label" +msgid "Connection: " +msgstr "Ligação: " + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:89 +msgctxt "@info:status" +msgid "Connected" +msgstr "Ligado" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:89 +msgctxt "@info:status" +msgid "Not connected" +msgstr "Não ligado" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:99 +msgctxt "@label" +msgid "Min endstop X: " +msgstr "X mín. de posição final: " + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:109 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:130 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:151 +msgctxt "@info:status" +msgid "Works" +msgstr "Trabalhos" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:109 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:130 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:151 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:173 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:234 +msgctxt "@info:status" +msgid "Not checked" +msgstr "Não verificado" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:120 +msgctxt "@label" +msgid "Min endstop Y: " +msgstr "Y mín. de posição final: " + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:141 +msgctxt "@label" +msgid "Min endstop Z: " +msgstr "Z mín. de posição final: " + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:163 +msgctxt "@label" +msgid "Nozzle temperature check: " +msgstr "Verificação da temperatura do bocal: " + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:187 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:248 +msgctxt "@action:button" +msgid "Stop Heating" +msgstr "Parar aquecimento" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:187 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:248 +msgctxt "@action:button" +msgid "Start Heating" +msgstr "Iniciar aquecimento" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:223 +msgctxt "@label" +msgid "Build plate temperature check:" +msgstr "Verificação da temperatura da placa de construção:" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:234 +msgctxt "@info:status" +msgid "Checked" +msgstr "Verificado" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:284 +msgctxt "@label" +msgid "Everything is in order! You're done with your CheckUp." +msgstr "Está tudo em ordem! O seu exame está concluído." + +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:88 +msgctxt "@label:MonitorStatus" +msgid "Not connected to a printer" +msgstr "Não ligado a uma impressora" + +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:90 +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/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/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/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/Preferences/MachinesPage.qml:188 +msgctxt "@label:MonitorStatus" +msgid "Preparing..." +msgstr "A preparar..." + +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:111 +msgctxt "@label:MonitorStatus" +msgid "Please remove the print" +msgstr "Remova a impressão" + +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:237 +msgctxt "@label:" +msgid "Resume" +msgstr "Retomar" + +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:241 +msgctxt "@label:" +msgid "Pause" +msgstr "Colocar em pausa" + +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:270 +msgctxt "@label:" +msgid "Abort Print" +msgstr "Cancelar impressão" + +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:280 +msgctxt "@window:title" +msgid "Abort print" +msgstr "Cancelar impressão" + +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:282 +msgctxt "@label" +msgid "Are you sure you want to abort the print?" +msgstr "Tem a certeza de que deseja cancelar a impressão?" + +#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:15 +msgctxt "@title:window" +msgid "Discard or Keep changes" +msgstr "Eliminar 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?" + +#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:110 +msgctxt "@title:column" +msgid "Profile settings" +msgstr "Definições do perfil" + +#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:117 +msgctxt "@title:column" +msgid "Default" +msgstr "Predefinição" + +#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:124 +msgctxt "@title:column" +msgid "Customized" +msgstr "Personalizado" + +#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:157 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:593 +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 +msgctxt "@option:discardOrKeep" +msgid "Discard and never ask again" +msgstr "Eliminar e não perguntar novamente" + +#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:159 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:595 +msgctxt "@option:discardOrKeep" +msgid "Keep and never ask again" +msgstr "Manter e não perguntar novamente" + +#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:196 +msgctxt "@action:button" +msgid "Discard" +msgstr "Eliminar" + +#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:209 +msgctxt "@action:button" +msgid "Keep" +msgstr "Manter" + +#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:222 +msgctxt "@action:button" +msgid "Create New Profile" +msgstr "Criar novo perfil" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:44 +msgctxt "@title" +msgid "Information" +msgstr "Informações" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:68 +msgctxt "@label" +msgid "Display Name" +msgstr "Apresentar 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 +msgctxt "@label" +msgid "Material Type" +msgstr "Tipo de material" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:105 +msgctxt "@label" +msgid "Color" +msgstr "Cor" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:139 +msgctxt "@label" +msgid "Properties" +msgstr "Propriedades" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:141 +msgctxt "@label" +msgid "Density" +msgstr "Densidade" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:156 +msgctxt "@label" +msgid "Diameter" +msgstr "Diâmetro" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:185 +msgctxt "@label" +msgid "Filament Cost" +msgstr "Custo do filamento" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:201 +msgctxt "@label" +msgid "Filament weight" +msgstr "Peso do filamento" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:218 +msgctxt "@label" +msgid "Filament length" +msgstr "Comprimento do filamento" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:227 +msgctxt "@label" +msgid "Cost per Meter" +msgstr "Custo por metro" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:241 +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 +msgctxt "@label" +msgid "Unlink Material" +msgstr "Desassociar material" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:259 +msgctxt "@label" +msgid "Description" +msgstr "Descrição" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:272 +msgctxt "@label" +msgid "Adhesion Information" +msgstr "Informações de aderência" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:298 +msgctxt "@label" +msgid "Print settings" +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" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:44 +msgctxt "@label:textbox" +msgid "Check all" +msgstr "Verificar tudo" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:40 +msgctxt "@info:status" +msgid "Calculated" +msgstr "Calculado" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:53 +msgctxt "@title:column" +msgid "Setting" +msgstr "Definição" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:60 +msgctxt "@title:column" +msgid "Profile" +msgstr "Perfil" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:67 +msgctxt "@title:column" +msgid "Current" +msgstr "Atual" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:75 +msgctxt "@title:column" +msgid "Unit" +msgstr "Unidade" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:14 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:439 +msgctxt "@title:tab" +msgid "General" +msgstr "Geral" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:128 +msgctxt "@label" +msgid "Interface" +msgstr "Interface" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:139 +msgctxt "@label" +msgid "Language:" +msgstr "Idioma:" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:205 +msgctxt "@label" +msgid "Currency:" +msgstr "Moeda:" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:219 +msgctxt "@label" +msgid "Theme:" +msgstr "Tema:" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:279 +msgctxt "@label" +msgid "" +"You will need to restart the application for these changes to have effect." +msgstr "É necessário reiniciar a aplicação para que estas alterações sejam aplicadas." + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:296 +msgctxt "@info:tooltip" +msgid "Slice automatically when changing settings." +msgstr "Segmentar automaticamente ao alterar as definições." + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:304 +msgctxt "@option:check" +msgid "Slice automatically" +msgstr "Segmentar automaticamente" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:318 +msgctxt "@label" +msgid "Viewport behavior" +msgstr "Comportamento da janela" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:326 +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." + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:335 +msgctxt "@option:check" +msgid "Display overhang" +msgstr "Apresentar saliência" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:342 +msgctxt "@info:tooltip" +msgid "" +"Moves the camera so the model is in the center of the view when a model is " +"selected" +msgstr "Move a câmara de forma que o modelo fique no centro da visualização quando é selecionado um modelo" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:347 +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 +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 +msgctxt "@action:button" +msgid "Invert the direction of camera zoom." +msgstr "Inverta a direção do zoom da câmara." + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:370 +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 +msgctxt "@action:button" +msgid "Zoom toward mouse direction" +msgstr "Aplicar zoom na direção do rato" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:384 +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?" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:389 +msgctxt "@option:check" +msgid "Ensure models are kept apart" +msgstr "Garantir que os modelos são mantidos afastados" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:397 +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?" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:402 +msgctxt "@option:check" +msgid "Automatically drop models to the build plate" +msgstr "Baixar modelos automaticamente para a placa de construção" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:414 +msgctxt "@info:tooltip" +msgid "Show caution message in gcode reader." +msgstr "Mostrar mensagem de atenção no leitor de gcode." + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:423 +msgctxt "@option:check" +msgid "Caution message in gcode reader" +msgstr "Mensagem de atenção no leitor de gcode" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:430 +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 +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)" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:451 +msgctxt "@label" +msgid "Opening and saving files" +msgstr "Abrir e guardar ficheiros" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:457 +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?" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:462 +msgctxt "@option:check" +msgid "Scale large models" +msgstr "Dimensionar modelos grandes" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:471 +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?" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:476 +msgctxt "@option:check" +msgid "Scale extremely small models" +msgstr "Dimensionar modelos extremamente pequenos" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:485 +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?" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:490 +msgctxt "@option:check" +msgid "Add machine prefix to job name" +msgstr "Adicionar prefixo da máquina ao nome da tarefa" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:499 +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 +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 +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 +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 +msgctxt "@option:openProject" +msgid "Always ask" +msgstr "Perguntar sempre" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:534 +msgctxt "@option:openProject" +msgid "Always open as a project" +msgstr "Abrir sempre como projeto" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:535 +msgctxt "@option:openProject" +msgid "Always import models" +msgstr "Importar sempre modelos" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:571 +msgctxt "@info:tooltip" +msgid "" +"When you have made changes to a profile and switched to a different one, a " +"dialog will be shown asking whether you want to keep your modifications or " +"not, or you can choose a default behaviour and never show that dialog again." +msgstr "Quando tiver realizado alterações a um perfil e mudado para outro, será apresentada uma caixa de diálogo a perguntar se pretende manter as alterações. Caso contrário, pode escolher um comportamento predefinido, sendo que a caixa de diálogo nunca mais é apresentada." + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:580 +msgctxt "@label" +msgid "Override Profile" +msgstr "Substituir perfil" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:629 +msgctxt "@label" +msgid "Privacy" +msgstr "Privacidade" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:636 +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 +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 +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." + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:656 +msgctxt "@option:check" +msgid "Send (anonymous) print information" +msgstr "Enviar informações de impressão (anónimas)" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:15 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:444 +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 +msgctxt "@action:button" +msgid "Activate" +msgstr "Ativar" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:57 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:102 +msgctxt "@action:button" +msgid "Rename" +msgstr "Renomear" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:149 +msgctxt "@label" +msgid "Printer type:" +msgstr "Tipo de impressora:" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:158 +msgctxt "@label" +msgid "Connection:" +msgstr "Ligação:" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:164 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:52 +msgctxt "@info:status" +msgid "The printer is not connected." +msgstr "A impressora não está ligada." + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:170 +msgctxt "@label" +msgid "State:" +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" + +#: /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" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:15 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:448 +msgctxt "@title:tab" +msgid "Profiles" +msgstr "Perfis" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:29 +msgctxt "@label" +msgid "Protected profiles" +msgstr "Perfis protegidos" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:29 +msgctxt "@label" +msgid "Custom profiles" +msgstr "Perfis personalizados" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:64 +msgctxt "@label" +msgid "Create" +msgstr "Criar" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:80 +msgctxt "@label" +msgid "Duplicate" +msgstr "Duplicar" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:113 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:201 +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 +msgctxt "@action:button" +msgid "Export" +msgstr "Exportar" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:126 +msgctxt "@label %1 is printer name" +msgid "Printer: %1" +msgstr "Impressora: %1" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:165 +msgctxt "@action:button" +msgid "Update profile with current settings/overrides" +msgstr "Atualizar perfil com as definições/substituições atuais" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:173 +msgctxt "@action:button" +msgid "Discard current changes" +msgstr "Eliminar 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." + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:197 +msgctxt "@action:label" +msgid "Your current settings match the selected profile." +msgstr "As suas definições atuais correspondem ao perfil selecionado." + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:215 +msgctxt "@title:tab" +msgid "Global Settings" +msgstr "Definições globais" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:258 +msgctxt "@title:window" +msgid "Rename Profile" +msgstr "Renomear perfil" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:271 +msgctxt "@title:window" +msgid "Create Profile" +msgstr "Criar perfil" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:285 +msgctxt "@title:window" +msgid "Duplicate Profile" +msgstr "Duplicar perfil" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:299 +msgctxt "@window:title" +msgid "Import Profile" +msgstr "Importar perfil" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:307 +msgctxt "@title:window" +msgid "Import Profile" +msgstr "Importar perfil" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:335 +msgctxt "@title:window" +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 +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" +msgid "Printer: %1, %2: %3" +msgstr "Impressora: %1, %2: %3" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:120 +msgctxt "@action:label %1 is printer name" +msgid "Printer: %1" +msgstr "Impressora: %1" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:149 +msgctxt "@action:button" +msgid "Create" +msgstr "Criar" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:168 +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 +msgctxt "@title:window" +msgid "Import Material" +msgstr "Importar material" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:320 +msgctxt "@info:status Don't translate the XML tags or !" +msgid "" +"Could not import material %1: %2" +msgstr "Não foi possível importar o material %1: %2" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:324 +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 +msgctxt "@title:window" +msgid "Export Material" +msgstr "Exportar material" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:362 +msgctxt "@info:status Don't translate the XML tags and !" +msgid "" +"Failed to export material to %1: %2" +msgstr "Falha ao exportar material para %1: %2" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:368 +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 +msgctxt "@title:window" +msgid "Add Printer" +msgstr "Adicionar impressora" + +#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:185 +msgctxt "@label" +msgid "Printer Name:" +msgstr "Nome da impressora:" + +#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:208 +msgctxt "@action:button" +msgid "Add Printer" +msgstr "Adicionar impressora" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:15 +msgctxt "@title:window" +msgid "About Cura" +msgstr "Sobre o Cura" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:43 +msgctxt "@label" +msgid "version: %1" +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." + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:69 +msgctxt "@info:credit" +msgid "" +"Cura is developed by Ultimaker B.V. in cooperation with the community.\n" +"Cura proudly uses the following open source projects:" +msgstr "O Cura foi desenvolvido pela Ultimaker B.V. em colaboração com a comunidade.\nO Cura tem o prazer de utilizar os seguintes projetos open source:" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:118 +msgctxt "@label" +msgid "Graphical user interface" +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" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:120 +msgctxt "@label" +msgid "GCode generator" +msgstr "Gerador de GCode" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:121 +msgctxt "@label" +msgid "Interprocess communication library" +msgstr "Biblioteca de comunicação interprocessual" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:123 +msgctxt "@label" +msgid "Programming language" +msgstr "Linguagem de programação" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:124 +msgctxt "@label" +msgid "GUI framework" +msgstr "Estrutura da GUI" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:125 +msgctxt "@label" +msgid "GUI framework bindings" +msgstr "Ligações de estrutura da GUI" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:126 +msgctxt "@label" +msgid "C/C++ Binding library" +msgstr "Biblioteca de ligações C/C++" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:127 +msgctxt "@label" +msgid "Data interchange format" +msgstr "Formato de intercâmbio de dados" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:128 +msgctxt "@label" +msgid "Support library for scientific computing" +msgstr "Biblioteca de apoio para computação científica" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:129 +msgctxt "@label" +msgid "Support library for faster math" +msgstr "Biblioteca de apoio para cálculos mais rápidos" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:130 +msgctxt "@label" +msgid "Support library for handling STL files" +msgstr "Biblioteca de apoio para processamento de ficheiros STL" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:131 +msgctxt "@label" +msgid "Support library for handling 3MF files" +msgstr "Biblioteca de apoio para processamento de ficheiros 3MF" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:132 +msgctxt "@label" +msgid "Serial communication library" +msgstr "Biblioteca de comunicação em série" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:133 +msgctxt "@label" +msgid "ZeroConf discovery library" +msgstr "Biblioteca de deteção ZeroConf" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:134 +msgctxt "@label" +msgid "Polygon clipping library" +msgstr "Biblioteca de recortes de polígonos" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:135 +msgctxt "@Label" +msgid "Python HTTP library" +msgstr "Biblioteca de HTTP Python" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:137 +msgctxt "@label" +msgid "Font" +msgstr "Tipo de letra" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:138 +msgctxt "@label" +msgid "SVG icons" +msgstr "Ícones SVG" + +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:41 +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 +msgctxt "@tooltip" +msgid "" +"Some setting/override values are different from the values stored in the " +"profile.\n" +"\n" +"Click to open the profile manager." +msgstr "Alguns valores de definição/substituição são diferentes dos valores armazenados no perfil.\n\nClique para abrir o gestor de perfis." + +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:152 +msgctxt "@label:textbox" +msgid "Search..." +msgstr "Procurar..." + +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:483 +msgctxt "@action:menu" +msgid "Copy value to all extruders" +msgstr "Copiar valor para todas as extrusoras" + +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:498 +msgctxt "@action:menu" +msgid "Hide this setting" +msgstr "Ocultar esta definição" + +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:508 +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 +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 +msgctxt "@action:menu" +msgid "Configure setting visiblity..." +msgstr "Configurar visibilidade da definição..." + +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingCategory.qml:123 +msgctxt "@label" +msgid "" +"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." + +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:62 +msgctxt "@label Header for list of settings." +msgid "Affects" +msgstr "Afeta" + +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:67 +msgctxt "@label Header for list of settings." +msgid "Affected By" +msgstr "Afetado por" + +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:157 +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." + +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:160 +msgctxt "@label" +msgid "The value is resolved from per-extruder values " +msgstr "O valor é resolvido a partir de valores por extrusora " + +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:186 +msgctxt "@label" +msgid "" +"This setting has a value that is different from the profile.\n" +"\n" +"Click to restore the value of the profile." +msgstr "Esta definição tem um valor que é diferente do perfil.\n\nClique para restaurar o valor do perfil." + +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:284 +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 "Geralmente, esta definição é calculada, mas atualmente tem um valor absoluto definido.\n\nClique para restaurar o valor calculado." + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:120 +msgctxt "@label:listbox" +msgid "Print Setup" +msgstr "Configuração de impressão" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:120 +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" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:336 +msgctxt "@label Hours and minutes" +msgid "00h 00min" +msgstr "00h00min" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:354 +msgctxt "@tooltip" +msgid "Time specification
    " +msgstr "Especificação de tempo
    " + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:429 +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 +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 +msgctxt "@label g for grams" +msgid "%1g" +msgstr "%1 g" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:444 +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" +msgid "%1m / ~ %2g / ~ %4 %3" +msgstr "%1 m/~ %2 g/~ %4 %3" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:503 +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." + +#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:49 +msgctxt "@title:menuitem %1 is the automatically selected material" +msgid "Automatic: %1" +msgstr "Automático: %1" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:12 +msgctxt "@title:menu menubar:toplevel" +msgid "&View" +msgstr "&Visualizar" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/NozzleMenu.qml:40 +msgctxt "@title:menuitem %1 is the nozzle currently loaded in the printer" +msgid "Automatic: %1" +msgstr "Automático: %1" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ContextMenu.qml:25 +msgctxt "@label" +msgid "Print Selected Model With:" +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 +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 +msgctxt "@label" +msgid "Number of Copies" +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" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:38 +msgctxt "@info:status" +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 +msgctxt "@label" +msgid "Extruder" +msgstr "Extrusora" + +#: /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 "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." + +#: /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." + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:220 +msgctxt "@tooltip" +msgid "The material in this extruder." +msgstr "O material nesta extrusora." + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:252 +msgctxt "@tooltip" +msgid "The nozzle inserted in this extruder." +msgstr "O bocal inserido nesta extrusora." + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:283 +msgctxt "@label" +msgid "Build plate" +msgstr "Placa 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." +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 +msgctxt "@tooltip" +msgid "The current temperature of the heated bed." +msgstr "A temperatura atual da base aquecida." + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:423 +msgctxt "@tooltip of temperature input" +msgid "The temperature to pre-heat the bed to." +msgstr "A temperatura de pré-aquecimento da base." + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:623 +msgctxt "@button Cancel pre-heating" +msgid "Cancel" +msgstr "Cancelar" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:623 +msgctxt "@button" +msgid "Pre-heat" +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." + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:703 +msgctxt "@label" +msgid "Printer control" +msgstr "Controlo da impressora" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:717 +msgctxt "@label" +msgid "Jog Position" +msgstr "Posição de deslocação" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:735 +msgctxt "@label" +msgid "X/Y" +msgstr "X/Y" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:842 +msgctxt "@label" +msgid "Z" +msgstr "Z" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:907 +msgctxt "@label" +msgid "Jog Distance" +msgstr "Distância de deslocação" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:1018 +msgctxt "@label" +msgid "Active print" +msgstr "Impressão ativa" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:1023 +msgctxt "@label" +msgid "Job Name" +msgstr "Nome da tarefa" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:1029 +msgctxt "@label" +msgid "Printing Time" +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 +msgctxt "@action:inmenu" +msgid "Toggle Fu&ll Screen" +msgstr "Alternar para e&crã inteiro" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:79 +msgctxt "@action:inmenu menubar:edit" +msgid "&Undo" +msgstr "&Anular" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:89 +msgctxt "@action:inmenu menubar:edit" +msgid "&Redo" +msgstr "&Refazer" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:99 +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" +msgid "Configure Cura..." +msgstr "Configurar Cura..." + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:121 +msgctxt "@action:inmenu menubar:printer" +msgid "&Add Printer..." +msgstr "&Adicionar impressora..." + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:127 +msgctxt "@action:inmenu menubar:printer" +msgid "Manage Pr&inters..." +msgstr "Gerir im&pressoras..." + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:134 +msgctxt "@action:inmenu" +msgid "Manage Materials..." +msgstr "Gerir materiais..." + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:142 +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 +msgctxt "@action:inmenu menubar:profile" +msgid "&Discard current changes" +msgstr "&Eliminar alterações atuais" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:162 +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 +msgctxt "@action:inmenu menubar:profile" +msgid "Manage Profiles..." +msgstr "Gerir perfis..." + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:175 +msgctxt "@action:inmenu menubar:help" +msgid "Show Online &Documentation" +msgstr "Mostrar &documentação online" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:183 +msgctxt "@action:inmenu menubar:help" +msgid "Report a &Bug" +msgstr "Reportar um &erro" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:191 +msgctxt "@action:inmenu menubar:help" +msgid "&About..." +msgstr "&Sobre..." + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:198 +msgctxt "@action:inmenu menubar:edit" +msgid "Delete &Selected Model" +msgid_plural "Delete &Selected Models" +msgstr[0] "Eliminar modelo &selecionado" +msgstr[1] "Eliminar modelos &selecionados" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:208 +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 +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 +msgctxt "@action:inmenu" +msgid "Delete Model" +msgstr "Eliminar modelo" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:234 +msgctxt "@action:inmenu" +msgid "Ce&nter Model on Platform" +msgstr "Ce&ntrar modelo na plataforma" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:240 +msgctxt "@action:inmenu menubar:edit" +msgid "&Group Models" +msgstr "&Agrupar modelos" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:250 +msgctxt "@action:inmenu menubar:edit" +msgid "Ungroup Models" +msgstr "Desagrupar modelos" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:260 +msgctxt "@action:inmenu menubar:edit" +msgid "&Merge Models" +msgstr "&Unir modelos" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:270 +msgctxt "@action:inmenu" +msgid "&Multiply Model..." +msgstr "&Multiplicar modelo..." + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:277 +msgctxt "@action:inmenu menubar:edit" +msgid "&Select All Models" +msgstr "&Selecionar todos os modelos" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:287 +msgctxt "@action:inmenu menubar:edit" +msgid "&Clear Build Plate" +msgstr "&Limpar placa de construção" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:297 +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 +msgctxt "@action:inmenu menubar:edit" +msgid "Arrange All Models" +msgstr "Dispor todos os modelos" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:314 +msgctxt "@action:inmenu menubar:edit" +msgid "Arrange Selection" +msgstr "Dispor seleção" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:321 +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 +msgctxt "@action:inmenu menubar:edit" +msgid "Reset All Model &Transformations" +msgstr "Repor todas as &transformações de modelos" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:335 +msgctxt "@action:inmenu menubar:file" +msgid "&Open File(s)..." +msgstr "&Abrir ficheiro(s)..." + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:343 +msgctxt "@action:inmenu menubar:file" +msgid "&New Project..." +msgstr "&Novo projeto..." + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:350 +msgctxt "@action:inmenu menubar:help" +msgid "Show Engine &Log..." +msgstr "Mostrar ®isto de motor..." + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:358 +msgctxt "@action:inmenu menubar:help" +msgid "Show Configuration Folder" +msgstr "Mostrar pasta de configuração" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:365 +msgctxt "@action:menu" +msgid "Configure setting visibility..." +msgstr "Configurar visibilidade das definições..." + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:372 +msgctxt "@action:menu" +msgid "Browse plugins..." +msgstr "Procurar plug-ins..." + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:379 +msgctxt "@action:menu" +msgid "Installed plugins..." +msgstr "Plug-ins instalados..." + +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:28 +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" + +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:36 +msgctxt "@label:PrintjobStatus" +msgid "Slicing..." +msgstr "A segmentar..." + +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:38 +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" + +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:42 +msgctxt "@label:PrintjobStatus" +msgid "Slicing unavailable" +msgstr "Segmentação indisponível" + +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:162 +msgctxt "@label:Printjob" +msgid "Prepare" +msgstr "Preparar" + +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:162 +msgctxt "@label:Printjob" +msgid "Cancel" +msgstr "Cancelar" + +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:302 +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 +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?" + +#: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:99 +msgctxt "@action:button" +msgid "Import all as models" +msgstr "Importar tudo como modelos" + +#: /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 +msgctxt "@title:menu menubar:toplevel" +msgid "&File" +msgstr "&Ficheiro" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:98 +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 +msgctxt "@title:menu menubar:file" +msgid "Save &As..." +msgstr "Guardar &como..." + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:118 +msgctxt "@title:menu menubar:file" +msgid "Save project" +msgstr "Guardar projeto" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:141 +msgctxt "@title:menu menubar:toplevel" +msgid "&Edit" +msgstr "&Editar" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:158 +msgctxt "@title:menu" +msgid "&View" +msgstr "&Visualizar" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:163 +msgctxt "@title:menu" +msgid "&Settings" +msgstr "&Definições" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:165 +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 +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 +msgctxt "@title:menu" +msgid "&Profile" +msgstr "&Perfil" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:180 +msgctxt "@action:inmenu" +msgid "Set as Active Extruder" +msgstr "Definir como extrusora ativa" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:198 +msgctxt "@title:menu menubar:toplevel" +msgid "E&xtensions" +msgstr "E&xtensões" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:232 +msgctxt "@title:menu menubar:toplevel" +msgid "P&lugins" +msgstr "P&lug-ins" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:240 +msgctxt "@title:menu menubar:toplevel" +msgid "P&references" +msgstr "P&referências" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:248 +msgctxt "@title:menu menubar:toplevel" +msgid "&Help" +msgstr "&Ajuda" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:330 +msgctxt "@action:button" +msgid "Open File" +msgstr "Abrir ficheiro" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:442 +msgctxt "@title:tab" +msgid "Settings" +msgstr "Definições" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:478 +msgctxt "@title:window" +msgid "New project" +msgstr "Novo projeto" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:479 +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." + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:721 +msgctxt "@window:title" +msgid "Install Plugin" +msgstr "Instalar plug-in" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:728 +msgctxt "@title:window" +msgid "Open File(s)" +msgstr "Abrir ficheiro(s)" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:731 +msgctxt "@text:window" +msgid "" +"We have found one or more G-Code files within the files you have selected. " +"You can only open one G-Code file at a time. If you want to open a G-Code " +"file, please just select only one." +msgstr "Encontrámos um ou mais ficheiros G-Code nos ficheiros selecionados. Só é possível abrir um ficheiro G-Code de cada vez. Se pretender abrir um ficheiro G-code, selecione apenas um." + +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:14 +msgctxt "@title:window" +msgid "Save Project" +msgstr "Guardar projeto" + +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:136 +msgctxt "@action:label" +msgid "Extruder %1" +msgstr "Extrusora %1" + +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:146 +msgctxt "@action:label" +msgid "%1 & material" +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" + +#: /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 +msgctxt "@label" +msgid "Layer Height" +msgstr "Altura da camada" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:323 +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" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:340 +msgctxt "@label" +msgid "Print Speed" +msgstr "Velocidade de impressão" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:350 +msgctxt "@label" +msgid "Slower" +msgstr "Mais lenta" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:361 +msgctxt "@label" +msgid "Faster" +msgstr "Mais rápida" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:388 +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." + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:413 +msgctxt "@label" +msgid "Infill" +msgstr "Preenchimento" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:633 +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." + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:645 +msgctxt "@label" +msgid "Enable gradual" +msgstr "Ativar gradação" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:712 +msgctxt "@label" +msgid "Generate Support" +msgstr "Gerar suporte" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:746 +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." + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:764 +msgctxt "@label" +msgid "Support Extruder" +msgstr "Extrusora de suporte" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:816 +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." + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:839 +msgctxt "@label" +msgid "Build Plate Adhesion" +msgstr "Aderência à placa de construção" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:894 +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." + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:934 +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" + +#: /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" + +#: /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 +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?" + +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:103 +msgctxt "@action:button" +msgid "Open as project" +msgstr "Abrir como projeto" + +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:122 +msgctxt "@action:button" +msgid "Import models" +msgstr "Importar modelos" + +#: /home/ruben/Projects/Cura/resources/qml/EngineLog.qml:15 +msgctxt "@title:window" +msgid "Engine Log" +msgstr "Registo de motor" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:242 +msgctxt "@label" +msgid "Material" +msgstr "Material" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:349 +msgctxt "@label" +msgid "Check compatibility" +msgstr "Verificar compatibilidade" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:369 +msgctxt "@tooltip" +msgid "Click to check the material compatibility on Ultimaker.com." +msgstr "Clique para verificar a compatibilidade do material em Ultimaker.com." + +#: 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.)" + +#: MachineSettingsAction/plugin.json +msgctxt "name" +msgid "Machine Settings action" +msgstr "Ação de definições da máquina" + +#: XRayView/plugin.json +msgctxt "description" +msgid "Provides the X-Ray view." +msgstr "Fornece a visualização de raio X." + +#: XRayView/plugin.json +msgctxt "name" +msgid "X-Ray View" +msgstr "Visualização de raio X" + +#: X3DReader/plugin.json +msgctxt "description" +msgid "Provides support for reading X3D files." +msgstr "Fornece suporte para ler ficheiros X3D." + +#: X3DReader/plugin.json +msgctxt "name" +msgid "X3D Reader" +msgstr "Leitor de X3D" + +#: GCodeWriter/plugin.json +msgctxt "description" +msgid "Writes GCode to a file." +msgstr "Grava o GCode num ficheiro." + +#: GCodeWriter/plugin.json +msgctxt "name" +msgid "GCode Writer" +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." + +#: cura-god-mode-plugin/src/GodMode/plugin.json +msgctxt "name" +msgid "God Mode" +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." + +#: Doodle3D-cura-plugin/Doodle3D/plugin.json +msgctxt "name" +msgid "Doodle3D WiFi-Box" +msgstr "Wi-Fi box Doodle3D" + +#: ChangeLogPlugin/plugin.json +msgctxt "description" +msgid "Shows changes since latest checked version." +msgstr "Mostra as alterações efetuadas desde a última versão verificada." + +#: ChangeLogPlugin/plugin.json +msgctxt "name" +msgid "Changelog" +msgstr "Registo de alterações" + +#: ProfileFlattener/plugin.json +msgctxt "description" +msgid "Create a flattend quality changes profile." +msgstr "Cria um perfil de alterações de qualidade aplanado." + +#: ProfileFlattener/plugin.json +msgctxt "name" +msgid "Profile flatener" +msgstr "Aplanador de perfis" + +#: USBPrinting/plugin.json +msgctxt "description" +msgid "" +"Accepts G-Code and sends them to a printer. Plugin can also update firmware." +msgstr "Aceita G-Codes e envia-os para uma impressora. O plug-in também pode atualizar firmware." + +#: USBPrinting/plugin.json +msgctxt "name" +msgid "USB printing" +msgstr "Impressão através de USB" + +#: RemovableDriveOutputDevice/plugin.json +msgctxt "description" +msgid "Provides removable drive hotplugging and writing support." +msgstr "Fornece suporte de ligação da unidade amovível e suporte de gravação." + +#: RemovableDriveOutputDevice/plugin.json +msgctxt "name" +msgid "Removable Drive Output Device Plugin" +msgstr "Plug-in de dispositivo de saída da unidade amovível" + +#: UM3NetworkPrinting/plugin.json +msgctxt "description" +msgid "Manages network connections to Ultimaker 3 printers" +msgstr "Gere as ligações de rede com as impressoras Ultimaker 3" + +#: UM3NetworkPrinting/plugin.json +msgctxt "name" +msgid "UM3 Network Connection" +msgstr "Ligação de rede UM3" + +#: FirmwareUpdateChecker/plugin.json +msgctxt "description" +msgid "Checks for firmware updates." +msgstr "Procura atualizações de firmware." + +#: FirmwareUpdateChecker/plugin.json +msgctxt "name" +msgid "Firmware Update Checker" +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 "Oferece a possibilidade de abrir determinados ficheiros através do SolidWorks. Estes são posteriormente convertidos e carregados para o Cura" + +#: CuraSolidWorksPlugin/plugin.json +msgctxt "name" +msgid "SolidWorks Integration" +msgstr "SolidWorks Integration" + +#: SimulationView/plugin.json +msgctxt "description" +msgid "Provides the Simulation view." +msgstr "Fornece a visualização de simulação." + +#: SimulationView/plugin.json +msgctxt "name" +msgid "Simulation View" +msgstr "Visualização de simulação" + +#: PostProcessingPlugin/plugin.json +msgctxt "description" +msgid "Extension that allows for user created scripts for post processing" +msgstr "Extensão que permite a utilização de scripts criados pelo utilizador para efeitos de pós-processamento" + +#: PostProcessingPlugin/plugin.json +msgctxt "name" +msgid "Post Processing" +msgstr "Pós-processamento" + +#: 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." + +#: AutoSave/plugin.json +msgctxt "name" +msgid "Auto Save" +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." + +#: SliceInfoPlugin/plugin.json +msgctxt "name" +msgid "Slice info" +msgstr "Informações de segmentação" + +#: XmlMaterialProfile/plugin.json +msgctxt "description" +msgid "Provides capabilities to read and write XML-based material profiles." +msgstr "Fornece capacidades para ler e gravar perfis de material com base em XML." + +#: XmlMaterialProfile/plugin.json +msgctxt "name" +msgid "Material Profiles" +msgstr "Perfis de material" + +#: 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." + +#: LegacyProfileReader/plugin.json +msgctxt "name" +msgid "Legacy Cura Profile Reader" +msgstr "Leitor de perfis legados do Cura" + +#: 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." + +#: GCodeProfileReader/plugin.json +msgctxt "name" +msgid "GCode Profile Reader" +msgstr "Leitor de perfis GCode" + +#: VersionUpgrade/VersionUpgrade25to26/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 2.5 to Cura 2.6." +msgstr "Atualiza as configurações do Cura 2.5 para o Cura 2.6." + +#: VersionUpgrade/VersionUpgrade25to26/plugin.json +msgctxt "name" +msgid "Version Upgrade 2.5 to 2.6" +msgstr "Atualização da versão 2.5 para 2.6" + +#: VersionUpgrade/VersionUpgrade27to30/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 2.7 to Cura 3.0." +msgstr "Atualiza as configurações do Cura 2.7 para o Cura 3.0." + +#: VersionUpgrade/VersionUpgrade27to30/plugin.json +msgctxt "name" +msgid "Version Upgrade 2.7 to 3.0" +msgstr "Atualização da versão 2.7 para 3.0" + +#: VersionUpgrade/VersionUpgrade30to31/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 3.0 to Cura 3.1." +msgstr "Atualiza as configurações do Cura 3.0 para o Cura 3.1." + +#: VersionUpgrade/VersionUpgrade30to31/plugin.json +msgctxt "name" +msgid "Version Upgrade 3.0 to 3.1" +msgstr "Atualização da versão 3.0 para 3.1" + +#: VersionUpgrade/VersionUpgrade26to27/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 2.6 to Cura 2.7." +msgstr "Atualiza as configurações do Cura 2.6 para o Cura 2.7." + +#: VersionUpgrade/VersionUpgrade26to27/plugin.json +msgctxt "name" +msgid "Version Upgrade 2.6 to 2.7" +msgstr "Atualização da versão 2.6 para 2.7" + +#: VersionUpgrade/VersionUpgrade21to22/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 2.1 to Cura 2.2." +msgstr "Atualiza as configurações do Cura 2.1 para o Cura 2.2." + +#: VersionUpgrade/VersionUpgrade21to22/plugin.json +msgctxt "name" +msgid "Version Upgrade 2.1 to 2.2" +msgstr "Atualização da versão 2.1 para 2.2" + +#: VersionUpgrade/VersionUpgrade22to24/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 2.2 to Cura 2.4." +msgstr "Atualiza as configurações do Cura 2.2 para o Cura 2.4." + +#: VersionUpgrade/VersionUpgrade22to24/plugin.json +msgctxt "name" +msgid "Version Upgrade 2.2 to 2.4" +msgstr "Atualização da versão 2.2 para 2.4" + +#: ImageReader/plugin.json +msgctxt "description" +msgid "Enables ability to generate printable geometry from 2D image files." +msgstr "Permite gerar geometria imprimível a partir de ficheiros de imagem 2D." + +#: ImageReader/plugin.json +msgctxt "name" +msgid "Image Reader" +msgstr "Leitor de imagens" + +#: CuraEngineBackend/plugin.json +msgctxt "description" +msgid "Provides the link to the CuraEngine slicing backend." +msgstr "Fornece a hiperligação para o back-end de segmentação do CuraEngine." + +#: CuraEngineBackend/plugin.json +msgctxt "name" +msgid "CuraEngine Backend" +msgstr "Back-end do CuraEngine" + +#: PerObjectSettingsTool/plugin.json +msgctxt "description" +msgid "Provides the Per Model Settings." +msgstr "Fornece as definições por modelo." + +#: PerObjectSettingsTool/plugin.json +msgctxt "name" +msgid "Per Model Settings Tool" +msgstr "Ferramenta de definições por modelo" + +#: cura-siemensnx-plugin/plugin.json +msgctxt "description" +msgid "Helps you to install an 'export to Cura' button in Siemens NX." +msgstr "Ajuda a instalar um botão \"Exportar para o Cura\" no Siemens NX." + +#: cura-siemensnx-plugin/plugin.json +msgctxt "name" +msgid "Siemens NX Integration" +msgstr "Siemens NX Integration" + +#: 3MFReader/plugin.json +msgctxt "description" +msgid "Provides support for reading 3MF files." +msgstr "Fornece suporte para ler ficheiros 3MF." + +#: 3MFReader/plugin.json +msgctxt "name" +msgid "3MF Reader" +msgstr "Leitor de 3MF" + +#: PluginBrowser/plugin.json +msgctxt "description" +msgid "Find, manage and install new plugins." +msgstr "Procura, gere e instala novos plug-ins." + +#: PluginBrowser/plugin.json +msgctxt "name" +msgid "Plugin Browser" +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." + +#: SolidView/plugin.json +msgctxt "name" +msgid "Solid View" +msgstr "Visualização sólida" + +#: GCodeReader/plugin.json +msgctxt "description" +msgid "Allows loading and displaying G-code files." +msgstr "Permite carregar e apresentar ficheiros G-code." + +#: GCodeReader/plugin.json +msgctxt "name" +msgid "G-code Reader" +msgstr "Leitor de G-code" + +#: CuraProfileWriter/plugin.json +msgctxt "description" +msgid "Provides support for exporting Cura profiles." +msgstr "Fornece suporte para exportar perfis Cura." + +#: CuraProfileWriter/plugin.json +msgctxt "name" +msgid "Cura Profile Writer" +msgstr "Gravador de perfis Cura" + +#: 3MFWriter/plugin.json +msgctxt "description" +msgid "Provides support for writing 3MF files." +msgstr "Fornece suporte para gravar ficheiros 3MF." + +#: 3MFWriter/plugin.json +msgctxt "name" +msgid "3MF Writer" +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" + +#: UserAgreementPlugin/plugin.json +msgctxt "name" +msgid "UserAgreement" +msgstr "Contrato do 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.)" + +#: UltimakerMachineActions/plugin.json +msgctxt "name" +msgid "Ultimaker machine actions" +msgstr "Ações automáticas da Ultimaker" + +#: CuraProfileReader/plugin.json +msgctxt "description" +msgid "Provides support for importing Cura profiles." +msgstr "Fornece suporte para importar perfis Cura." + +#: CuraProfileReader/plugin.json +msgctxt "name" +msgid "Cura Profile Reader" +msgstr "Leitor de perfis Cura" diff --git a/resources/i18n/pt_PT/fdmextruder.def.json.po b/resources/i18n/pt_PT/fdmextruder.def.json.po new file mode 100644 index 0000000000..852fe4d562 --- /dev/null +++ b/resources/i18n/pt_PT/fdmextruder.def.json.po @@ -0,0 +1,210 @@ +# Cura JSON setting files +# 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" +"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" + +#: fdmextruder.def.json +msgctxt "machine_settings label" +msgid "Machine" +msgstr "Máquina" + +#: fdmextruder.def.json +msgctxt "machine_settings description" +msgid "Machine specific settings" +msgstr "Definições específicas da máquina" + +#: fdmextruder.def.json +msgctxt "extruder_nr label" +msgid "Extruder" +msgstr "Extrusora" + +#: 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." + +#: fdmextruder.def.json +msgctxt "machine_nozzle_id label" +msgid "Nozzle ID" +msgstr "ID do bocal" + +#: 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\"." + +#: fdmextruder.def.json +msgctxt "machine_nozzle_size label" +msgid "Nozzle Diameter" +msgstr "Diâmetro do bocal" + +#: 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." + +#: fdmextruder.def.json +msgctxt "machine_nozzle_offset_x label" +msgid "Nozzle X Offset" +msgstr "Desvio X do bocal" + +#: 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." + +#: fdmextruder.def.json +msgctxt "machine_nozzle_offset_y label" +msgid "Nozzle Y Offset" +msgstr "Desvio Y do bocal" + +#: 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." + +#: fdmextruder.def.json +msgctxt "machine_extruder_start_code label" +msgid "Extruder Start G-Code" +msgstr "G-Code inicial da extrusora" + +#: 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." + +#: fdmextruder.def.json +msgctxt "machine_extruder_start_pos_abs label" +msgid "Extruder Start Position Absolute" +msgstr "Posição inicial absoluta da extrusora" + +#: 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." + +#: fdmextruder.def.json +msgctxt "machine_extruder_start_pos_x label" +msgid "Extruder Start Position X" +msgstr "X da posição inicial da extrusora" + +#: 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." + +#: fdmextruder.def.json +msgctxt "machine_extruder_start_pos_y label" +msgid "Extruder Start Position Y" +msgstr "Y da posição inicial da extrusora" + +#: 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." + +#: fdmextruder.def.json +msgctxt "machine_extruder_end_code label" +msgid "Extruder End G-Code" +msgstr "G-Code final da extrusora" + +#: 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." + +#: fdmextruder.def.json +msgctxt "machine_extruder_end_pos_abs label" +msgid "Extruder End Position Absolute" +msgstr "Posição final absoluta da extrusora" + +#: 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." + +#: fdmextruder.def.json +msgctxt "machine_extruder_end_pos_x label" +msgid "Extruder End Position X" +msgstr "X da posição final da extrusora" + +#: 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." + +#: fdmextruder.def.json +msgctxt "machine_extruder_end_pos_y label" +msgid "Extruder End Position Y" +msgstr "Y da posição final da extrusora" + +#: 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." + +#: fdmextruder.def.json +msgctxt "extruder_prime_pos_z label" +msgid "Extruder Prime Z Position" +msgstr "Posição Z de preparação da extrusora" + +#: 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." + +#: fdmextruder.def.json +msgctxt "platform_adhesion label" +msgid "Build Plate Adhesion" +msgstr "Aderência à placa de construção" + +#: fdmextruder.def.json +msgctxt "platform_adhesion description" +msgid "Adhesion" +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" + +#: 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." + +#: fdmextruder.def.json +msgctxt "extruder_prime_pos_y label" +msgid "Extruder Prime Y Position" +msgstr "Posição Y de preparação da extrusora" + +#: 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." diff --git a/resources/i18n/pt_PT/fdmprinter.def.json.po b/resources/i18n/pt_PT/fdmprinter.def.json.po new file mode 100644 index 0000000000..d7385d9584 --- /dev/null +++ b/resources/i18n/pt_PT/fdmprinter.def.json.po @@ -0,0 +1,5814 @@ +# Cura JSON setting files +# 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" +"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" + +#: fdmprinter.def.json +msgctxt "machine_settings label" +msgid "Machine" +msgstr "Máquina" + +#: fdmprinter.def.json +msgctxt "machine_settings description" +msgid "Machine specific settings" +msgstr "Definições específicas da máquina" + +#: fdmprinter.def.json +msgctxt "machine_name label" +msgid "Machine Type" +msgstr "Tipo de máquina" + +#: fdmprinter.def.json +msgctxt "machine_name description" +msgid "The name of your 3D printer model." +msgstr "O nome do seu modelo de impressora 3D." + +#: fdmprinter.def.json +msgctxt "machine_show_variants label" +msgid "Show Machine Variants" +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." +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" + +#: fdmprinter.def.json +msgctxt "machine_start_gcode description" +msgid "" +"Gcode commands to be executed at the very start - separated by \n" +"." +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" + +#: fdmprinter.def.json +msgctxt "machine_end_gcode description" +msgid "" +"Gcode commands to be executed at the very end - separated by \n" +"." +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" + +#: fdmprinter.def.json +msgctxt "material_guid description" +msgid "GUID of the material. This is set automatically. " +msgstr "GUID do material. Isto é 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" + +#: 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." + +#: fdmprinter.def.json +msgctxt "material_print_temp_wait label" +msgid "Wait for Nozzle Heatup" +msgstr "Aguardar pelo aquecimento do bocal" + +#: 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." + +#: fdmprinter.def.json +msgctxt "material_print_temp_prepend label" +msgid "Include Material Temperatures" +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." + +#: fdmprinter.def.json +msgctxt "material_bed_temp_prepend label" +msgid "Include Build Plate Temperature" +msgstr "Incluir temperatura da placa 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." + +#: fdmprinter.def.json +msgctxt "machine_width label" +msgid "Machine Width" +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." + +#: fdmprinter.def.json +msgctxt "machine_depth label" +msgid "Machine Depth" +msgstr "Profundidade da máquina" + +#: fdmprinter.def.json +msgctxt "machine_depth description" +msgid "The depth (Y-direction) of the printable area." +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" + +#: 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." + +#: fdmprinter.def.json +msgctxt "machine_shape option rectangular" +msgid "Rectangular" +msgstr "Retangular" + +#: fdmprinter.def.json +msgctxt "machine_shape option elliptic" +msgid "Elliptic" +msgstr "Elíptica" + +#: fdmprinter.def.json +msgctxt "machine_height label" +msgid "Machine Height" +msgstr "Altura da máquina" + +#: fdmprinter.def.json +msgctxt "machine_height description" +msgid "The height (Z-direction) of the printable area." +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" + +#: 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." + +#: fdmprinter.def.json +msgctxt "machine_center_is_zero label" +msgid "Is Center Origin" +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." + +#: fdmprinter.def.json +msgctxt "machine_extruder_count label" +msgid "Number of Extruders" +msgstr "Número de extrusoras" + +#: 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." + +#: fdmprinter.def.json +msgctxt "machine_nozzle_tip_outer_diameter label" +msgid "Outer nozzle diameter" +msgstr "Diâmetro externo do bocal" + +#: 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." + +#: fdmprinter.def.json +msgctxt "machine_nozzle_head_distance label" +msgid "Nozzle length" +msgstr "Comprimento do bocal" + +#: 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." + +#: fdmprinter.def.json +msgctxt "machine_nozzle_expansion_angle label" +msgid "Nozzle angle" +msgstr "Ângulo do bocal" + +#: 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." + +#: fdmprinter.def.json +msgctxt "machine_heat_zone_length label" +msgid "Heat zone length" +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." + +#: fdmprinter.def.json +msgctxt "machine_filament_park_distance label" +msgid "Filament Park Distance" +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." + +#: fdmprinter.def.json +msgctxt "machine_nozzle_temp_enabled label" +msgid "Enable Nozzle Temperature Control" +msgstr "Ativar controlo de temperatura do bocal" + +#: 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." + +#: fdmprinter.def.json +msgctxt "machine_nozzle_heat_up_speed label" +msgid "Heat up speed" +msgstr "Velocidade de aquecimento" + +#: 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." + +#: fdmprinter.def.json +msgctxt "machine_nozzle_cool_down_speed label" +msgid "Cool down speed" +msgstr "Velocidade de arrefecimento" + +#: 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." + +#: fdmprinter.def.json +msgctxt "machine_min_cool_heat_time_window label" +msgid "Minimal Time Standby Temperature" +msgstr "Tempo mínimo para temperatura 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." + +#: fdmprinter.def.json +msgctxt "machine_gcode_flavor label" +msgid "Gcode flavour" +msgstr "Padrão de Gcode" + +#: fdmprinter.def.json +msgctxt "machine_gcode_flavor description" +msgid "The type of gcode to be generated." +msgstr "O tipo de gcode a ser gerado." + +#: fdmprinter.def.json +msgctxt "machine_gcode_flavor option RepRap (Marlin/Sprinter)" +msgid "Marlin" +msgstr "Marlin" + +#: fdmprinter.def.json +msgctxt "machine_gcode_flavor option RepRap (Volumetric)" +msgid "Marlin (Volumetric)" +msgstr "Marlin (volumétrico)" + +#: fdmprinter.def.json +msgctxt "machine_gcode_flavor option RepRap (RepRap)" +msgid "RepRap" +msgstr "RepRap" + +#: fdmprinter.def.json +msgctxt "machine_gcode_flavor option UltiGCode" +msgid "Ultimaker 2" +msgstr "Ultimaker 2" + +#: fdmprinter.def.json +msgctxt "machine_gcode_flavor option Griffin" +msgid "Griffin" +msgstr "Griffin" + +#: fdmprinter.def.json +msgctxt "machine_gcode_flavor option Makerbot" +msgid "Makerbot" +msgstr "Makerbot" + +#: fdmprinter.def.json +msgctxt "machine_gcode_flavor option BFB" +msgid "Bits from Bytes" +msgstr "Bits from Bytes" + +#: fdmprinter.def.json +msgctxt "machine_gcode_flavor option MACH3" +msgid "Mach3" +msgstr "Mach3" + +#: fdmprinter.def.json +msgctxt "machine_gcode_flavor option Repetier" +msgid "Repetier" +msgstr "Repetier" + +#: fdmprinter.def.json +msgctxt "machine_disallowed_areas label" +msgid "Disallowed areas" +msgstr "Áreas não permitidas" + +#: fdmprinter.def.json +msgctxt "machine_disallowed_areas description" +msgid "A list of polygons with areas the print head is not allowed to enter." +msgstr "Uma lista de polígonos com áreas onde a cabeça de impressão não pode entrar." + +#: fdmprinter.def.json +msgctxt "nozzle_disallowed_areas label" +msgid "Nozzle Disallowed Areas" +msgstr "Áreas não permitidas do bocal" + +#: 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." + +#: fdmprinter.def.json +msgctxt "machine_head_polygon label" +msgid "Machine head polygon" +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)." + +#: 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" + +#: 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)." + +#: fdmprinter.def.json +msgctxt "gantry_height label" +msgid "Gantry height" +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)." + +#: fdmprinter.def.json +msgctxt "machine_nozzle_id label" +msgid "Nozzle ID" +msgstr "ID do bocal" + +#: 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\"." + +#: fdmprinter.def.json +msgctxt "machine_nozzle_size label" +msgid "Nozzle Diameter" +msgstr "Diâmetro do bocal" + +#: 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." + +#: fdmprinter.def.json +msgctxt "machine_use_extruder_offset_to_offset_coords label" +msgid "Offset With Extruder" +msgstr "Desvio da extrusora" + +#: 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." + +#: fdmprinter.def.json +msgctxt "extruder_prime_pos_z label" +msgid "Extruder Prime Z Position" +msgstr "Posição Z de preparação da extrusora" + +#: 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." + +#: fdmprinter.def.json +msgctxt "extruder_prime_pos_abs label" +msgid "Absolute Extruder Prime Position" +msgstr "Posição absoluta de preparação da extrusora" + +#: 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." + +#: fdmprinter.def.json +msgctxt "machine_max_feedrate_x label" +msgid "Maximum Speed X" +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." + +#: fdmprinter.def.json +msgctxt "machine_max_feedrate_y label" +msgid "Maximum Speed Y" +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." + +#: fdmprinter.def.json +msgctxt "machine_max_feedrate_z label" +msgid "Maximum Speed Z" +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." + +#: fdmprinter.def.json +msgctxt "machine_max_feedrate_e label" +msgid "Maximum Feedrate" +msgstr "Velocidade máxima de alimentação" + +#: fdmprinter.def.json +msgctxt "machine_max_feedrate_e description" +msgid "The maximum speed of the filament." +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" + +#: 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" + +#: fdmprinter.def.json +msgctxt "machine_max_acceleration_y label" +msgid "Maximum Acceleration Y" +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." + +#: fdmprinter.def.json +msgctxt "machine_max_acceleration_z label" +msgid "Maximum Acceleration Z" +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." + +#: fdmprinter.def.json +msgctxt "machine_max_acceleration_e label" +msgid "Maximum Filament Acceleration" +msgstr "Aceleração máxima do filamento" + +#: fdmprinter.def.json +msgctxt "machine_max_acceleration_e description" +msgid "Maximum acceleration for the motor of the filament." +msgstr "A aceleração máxima do motor do filamento." + +#: fdmprinter.def.json +msgctxt "machine_acceleration label" +msgid "Default Acceleration" +msgstr "Aceleração predefinida" + +#: fdmprinter.def.json +msgctxt "machine_acceleration description" +msgid "The default acceleration of print head movement." +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" + +#: 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." + +#: fdmprinter.def.json +msgctxt "machine_max_jerk_z label" +msgid "Default Z Jerk" +msgstr "Solavanco 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." + +#: fdmprinter.def.json +msgctxt "machine_max_jerk_e label" +msgid "Default Filament Jerk" +msgstr "Solavanco 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." + +#: fdmprinter.def.json +msgctxt "machine_minimum_feedrate label" +msgid "Minimum Feedrate" +msgstr "Velocidade mínima de alimentação" + +#: fdmprinter.def.json +msgctxt "machine_minimum_feedrate description" +msgid "The minimal movement speed of the print head." +msgstr "A velocidade mínima de movimento da cabeça de impressão." + +#: fdmprinter.def.json +msgctxt "resolution label" +msgid "Quality" +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)." + +#: fdmprinter.def.json +msgctxt "layer_height label" +msgid "Layer Height" +msgstr "Altura da camada" + +#: 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." + +#: fdmprinter.def.json +msgctxt "layer_height_0 label" +msgid "Initial Layer Height" +msgstr "Altura 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" + +#: fdmprinter.def.json +msgctxt "line_width label" +msgid "Line Width" +msgstr "Largura 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." + +#: fdmprinter.def.json +msgctxt "wall_line_width label" +msgid "Wall Line Width" +msgstr "Largura da linha de 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." + +#: fdmprinter.def.json +msgctxt "wall_line_width_0 label" +msgid "Outer Wall Line Width" +msgstr "Largura da linha de parede externa" + +#: 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." + +#: fdmprinter.def.json +msgctxt "wall_line_width_x label" +msgid "Inner Wall(s) Line Width" +msgstr "Largura da linha de parede(s) interna" + +#: 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." + +#: fdmprinter.def.json +msgctxt "skin_line_width label" +msgid "Top/Bottom Line Width" +msgstr "Largura da 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." + +#: fdmprinter.def.json +msgctxt "infill_line_width label" +msgid "Infill Line Width" +msgstr "Largura da linha de preenchimento" + +#: fdmprinter.def.json +msgctxt "infill_line_width description" +msgid "Width of a single infill line." +msgstr "A largura de uma única linha de preenchimento." + +#: fdmprinter.def.json +msgctxt "skirt_brim_line_width label" +msgid "Skirt/Brim Line Width" +msgstr "Largura da linha de contorno/borda" + +#: 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." + +#: fdmprinter.def.json +msgctxt "support_line_width label" +msgid "Support Line Width" +msgstr "Largura da linha de suporte" + +#: 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." + +#: fdmprinter.def.json +msgctxt "support_interface_line_width label" +msgid "Support Interface Line Width" +msgstr "Largura da linha da interface de 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." + +#: fdmprinter.def.json +msgctxt "support_roof_line_width label" +msgid "Support Roof Line Width" +msgstr "Largura da linha do teto de 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." + +#: fdmprinter.def.json +msgctxt "support_bottom_line_width label" +msgid "Support Floor Line Width" +msgstr "Largura da linha do piso de 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." + +#: fdmprinter.def.json +msgctxt "prime_tower_line_width label" +msgid "Prime Tower Line Width" +msgstr "Largura da linha da torre de 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." + +#: fdmprinter.def.json +msgctxt "initial_layer_line_width_factor label" +msgid "Initial Layer Line Width" +msgstr "Largura da linha da 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." + +#: fdmprinter.def.json +msgctxt "shell label" +msgid "Shell" +msgstr "Cobertura" + +#: fdmprinter.def.json +msgctxt "shell description" +msgid "Shell" +msgstr "Cobertura" + +#: fdmprinter.def.json +msgctxt "wall_extruder_nr label" +msgid "Wall Extruder" +msgstr "Extrusora de parede" + +#: 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." + +#: fdmprinter.def.json +msgctxt "wall_0_extruder_nr label" +msgid "Outer Wall Extruder" +msgstr "Extrusora de parede externa" + +#: 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." + +#: fdmprinter.def.json +msgctxt "wall_x_extruder_nr label" +msgid "Inner Wall Extruder" +msgstr "Extrusora de parede 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 "A máquina de extrusão utilizada para imprimir as paredes internas. Esta é utilizada em extrusões múltiplas." + +#: fdmprinter.def.json +msgctxt "wall_thickness label" +msgid "Wall Thickness" +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." + +#: fdmprinter.def.json +msgctxt "wall_line_count label" +msgid "Wall Line Count" +msgstr "Contagem de linhas de parede" + +#: 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." + +#: fdmprinter.def.json +msgctxt "wall_0_wipe_dist label" +msgid "Outer Wall Wipe Distance" +msgstr "Distância de limpeza da parede externa" + +#: 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." + +#: fdmprinter.def.json +msgctxt "roofing_extruder_nr label" +msgid "Top Surface Skin Extruder" +msgstr "Extrusora de revestimento da superfície 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." + +#: fdmprinter.def.json +msgctxt "roofing_layer_count label" +msgid "Top Surface Skin Layers" +msgstr "Camadas de revestimento da superfície 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)." + +#: fdmprinter.def.json +msgctxt "top_bottom_extruder_nr label" +msgid "Top/Bottom Extruder" +msgstr "Extrusora 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." + +#: fdmprinter.def.json +msgctxt "top_bottom_thickness label" +msgid "Top/Bottom Thickness" +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." + +#: fdmprinter.def.json +msgctxt "top_thickness label" +msgid "Top Thickness" +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." + +#: fdmprinter.def.json +msgctxt "top_layers label" +msgid "Top Layers" +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." + +#: fdmprinter.def.json +msgctxt "bottom_thickness label" +msgid "Bottom Thickness" +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." + +#: fdmprinter.def.json +msgctxt "bottom_layers label" +msgid "Bottom Layers" +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." + +#: fdmprinter.def.json +msgctxt "top_bottom_pattern label" +msgid "Top/Bottom Pattern" +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." + +#: fdmprinter.def.json +msgctxt "top_bottom_pattern option lines" +msgid "Lines" +msgstr "Linhas" + +#: fdmprinter.def.json +msgctxt "top_bottom_pattern option concentric" +msgid "Concentric" +msgstr "Concêntrico" + +#: fdmprinter.def.json +msgctxt "top_bottom_pattern option zigzag" +msgid "Zig Zag" +msgstr "Ziguezague" + +#: fdmprinter.def.json +msgctxt "top_bottom_pattern_0 label" +msgid "Bottom Pattern Initial Layer" +msgstr "Camada inicial de padrão inferior" + +#: 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." + +#: fdmprinter.def.json +msgctxt "top_bottom_pattern_0 option lines" +msgid "Lines" +msgstr "Linhas" + +#: fdmprinter.def.json +msgctxt "top_bottom_pattern_0 option concentric" +msgid "Concentric" +msgstr "Concêntrico" + +#: fdmprinter.def.json +msgctxt "top_bottom_pattern_0 option zigzag" +msgid "Zig Zag" +msgstr "Ziguezague" + +#: fdmprinter.def.json +msgctxt "skin_angles label" +msgid "Top/Bottom Line Directions" +msgstr "Direções de 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)." + +#: fdmprinter.def.json +msgctxt "wall_0_inset label" +msgid "Outer Wall Inset" +msgstr "Inserção de parede externa" + +#: 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." + +#: fdmprinter.def.json +msgctxt "outer_inset_first label" +msgid "Outer Before Inner Walls" +msgstr "Paredes externas antes das internas" + +#: 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." + +#: fdmprinter.def.json +msgctxt "alternate_extra_perimeter label" +msgid "Alternate Extra Wall" +msgstr "Alternar parede adicional" + +#: 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." + +#: fdmprinter.def.json +msgctxt "travel_compensate_overlapping_walls_enabled label" +msgid "Compensate Wall Overlaps" +msgstr "Compensar sobreposição de 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." + +#: fdmprinter.def.json +msgctxt "travel_compensate_overlapping_walls_0_enabled label" +msgid "Compensate Outer Wall Overlaps" +msgstr "Compensar sobreposição de paredes externas" + +#: 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." + +#: fdmprinter.def.json +msgctxt "travel_compensate_overlapping_walls_x_enabled label" +msgid "Compensate Inner Wall Overlaps" +msgstr "Compensar sobreposição de paredes internas" + +#: 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." + +#: fdmprinter.def.json +msgctxt "fill_perimeter_gaps label" +msgid "Fill Gaps Between Walls" +msgstr "Preencher folgas entre paredes" + +#: 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." + +#: fdmprinter.def.json +msgctxt "fill_perimeter_gaps option nowhere" +msgid "Nowhere" +msgstr "Em lado nenhum" + +#: fdmprinter.def.json +msgctxt "fill_perimeter_gaps option everywhere" +msgid "Everywhere" +msgstr "Em todo o lado" + +#: fdmprinter.def.json +msgctxt "fill_outline_gaps label" +msgid "Print Thin Walls" +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." + +#: fdmprinter.def.json +msgctxt "xy_offset label" +msgid "Horizontal Expansion" +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." + +#: fdmprinter.def.json +msgctxt "xy_offset_layer_0 label" +msgid "Initial Layer Horizontal Expansion" +msgstr "Expansão horizontal da camada inicial" + +#: 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\"." + +#: fdmprinter.def.json +msgctxt "z_seam_type label" +msgid "Z Seam Alignment" +msgstr "Alinhamento da costura 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 "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." + +#: fdmprinter.def.json +msgctxt "z_seam_type option back" +msgid "User Specified" +msgstr "Especificado pelo utilizador" + +#: fdmprinter.def.json +msgctxt "z_seam_type option shortest" +msgid "Shortest" +msgstr "Mais curto" + +#: fdmprinter.def.json +msgctxt "z_seam_type option random" +msgid "Random" +msgstr "Aleatório" + +#: fdmprinter.def.json +msgctxt "z_seam_type option sharpest_corner" +msgid "Sharpest Corner" +msgstr "Canto mais acentuado" + +#: fdmprinter.def.json +msgctxt "z_seam_x label" +msgid "Z Seam X" +msgstr "X da costura 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." +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" + +#: 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 "A coordenada Y 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_corner label" +msgid "Seam Corner Preference" +msgstr "Preferência de canto da costura" + +#: fdmprinter.def.json +msgctxt "z_seam_corner description" +msgid "" +"Control whether corners on the model outline influence the position of the " +"seam. None means that corners have no influence on the seam position. Hide " +"Seam makes the seam more likely to occur on an inside corner. Expose Seam " +"makes the seam more likely to occur on an outside corner. Hide or Expose " +"Seam makes the seam more likely to occur at an inside or outside corner." +msgstr "Controla se 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." + +#: fdmprinter.def.json +msgctxt "z_seam_corner option z_seam_corner_none" +msgid "None" +msgstr "Nenhum" + +#: fdmprinter.def.json +msgctxt "z_seam_corner option z_seam_corner_inner" +msgid "Hide Seam" +msgstr "Ocultar costura" + +#: fdmprinter.def.json +msgctxt "z_seam_corner option z_seam_corner_outer" +msgid "Expose Seam" +msgstr "Expor costura" + +#: fdmprinter.def.json +msgctxt "z_seam_corner option z_seam_corner_any" +msgid "Hide or Expose Seam" +msgstr "Ocultar ou expor costura" + +#: fdmprinter.def.json +msgctxt "z_seam_relative label" +msgid "Z Seam Relative" +msgstr "Relativo à costura 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." + +#: fdmprinter.def.json +msgctxt "skin_no_small_gaps_heuristic label" +msgid "Ignore Small Z Gaps" +msgstr "Ignorar pequenas folgas 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." + +#: fdmprinter.def.json +msgctxt "skin_outline_count label" +msgid "Extra Skin Wall Count" +msgstr "Contagem de paredes de revestimento adicional" + +#: 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." + +#: fdmprinter.def.json +msgctxt "ironing_enabled label" +msgid "Enable Ironing" +msgstr "Ativar engomagem" + +#: 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." + +#: fdmprinter.def.json +msgctxt "ironing_only_highest_layer label" +msgid "Iron Only Highest Layer" +msgstr "Engomar apenas camada superior" + +#: 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." + +#: fdmprinter.def.json +msgctxt "ironing_pattern label" +msgid "Ironing Pattern" +msgstr "Padrão de engomagem" + +#: 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." + +#: fdmprinter.def.json +msgctxt "ironing_pattern option concentric" +msgid "Concentric" +msgstr "Concêntrico" + +#: fdmprinter.def.json +msgctxt "ironing_pattern option zigzag" +msgid "Zig Zag" +msgstr "Ziguezague" + +#: fdmprinter.def.json +msgctxt "ironing_line_spacing label" +msgid "Ironing Line Spacing" +msgstr "Espaçamento da linha de engomagem" + +#: 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." + +#: fdmprinter.def.json +msgctxt "ironing_flow label" +msgid "Ironing Flow" +msgstr "Fluxo de engomagem" + +#: 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." + +#: fdmprinter.def.json +msgctxt "ironing_inset label" +msgid "Ironing Inset" +msgstr "Inserção de engomagem" + +#: 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." + +#: fdmprinter.def.json +msgctxt "speed_ironing label" +msgid "Ironing Speed" +msgstr "Velocidade de engomagem" + +#: 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." + +#: fdmprinter.def.json +msgctxt "acceleration_ironing label" +msgid "Ironing Acceleration" +msgstr "Aceleração de engomagem" + +#: 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." + +#: fdmprinter.def.json +msgctxt "jerk_ironing label" +msgid "Ironing Jerk" +msgstr "Solavanco de engomagem" + +#: fdmprinter.def.json +msgctxt "jerk_ironing description" +msgid "The maximum instantaneous velocity change while performing ironing." +msgstr "A mudança de velocidade instantânea máxima ao engomar." + +#: fdmprinter.def.json +msgctxt "infill label" +msgid "Infill" +msgstr "Preenchimento" + +#: fdmprinter.def.json +msgctxt "infill description" +msgid "Infill" +msgstr "Preenchimento" + +#: fdmprinter.def.json +msgctxt "infill_extruder_nr label" +msgid "Infill Extruder" +msgstr "Extrusora de preenchimento" + +#: 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." + +#: fdmprinter.def.json +msgctxt "infill_sparse_density label" +msgid "Infill Density" +msgstr "Densidade de preenchimento" + +#: 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." + +#: fdmprinter.def.json +msgctxt "infill_line_distance label" +msgid "Infill Line Distance" +msgstr "Distância da linha de preenchimento" + +#: 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." + +#: fdmprinter.def.json +msgctxt "infill_pattern label" +msgid "Infill Pattern" +msgstr "Padrão de preenchimento" + +#: 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." + +#: fdmprinter.def.json +msgctxt "infill_pattern option grid" +msgid "Grid" +msgstr "Grelha" + +#: fdmprinter.def.json +msgctxt "infill_pattern option lines" +msgid "Lines" +msgstr "Linhas" + +#: fdmprinter.def.json +msgctxt "infill_pattern option triangles" +msgid "Triangles" +msgstr "Triângulos" + +#: fdmprinter.def.json +msgctxt "infill_pattern option trihexagon" +msgid "Tri-Hexagon" +msgstr "Tri-hexágono" + +#: fdmprinter.def.json +msgctxt "infill_pattern option cubic" +msgid "Cubic" +msgstr "Cúbico" + +#: fdmprinter.def.json +msgctxt "infill_pattern option cubicsubdiv" +msgid "Cubic Subdivision" +msgstr "Subdivisão cúbica" + +#: fdmprinter.def.json +msgctxt "infill_pattern option tetrahedral" +msgid "Octet" +msgstr "Octeto" + +#: fdmprinter.def.json +msgctxt "infill_pattern option quarter_cubic" +msgid "Quarter Cubic" +msgstr "Quarto cúbico" + +#: fdmprinter.def.json +msgctxt "infill_pattern option concentric" +msgid "Concentric" +msgstr "Concêntrico" + +#: fdmprinter.def.json +msgctxt "infill_pattern option concentric_3d" +msgid "Concentric 3D" +msgstr "Concêntrico 3D" + +#: fdmprinter.def.json +msgctxt "infill_pattern option zigzag" +msgid "Zig Zag" +msgstr "Ziguezague" + +#: fdmprinter.def.json +msgctxt "infill_pattern option cross" +msgid "Cross" +msgstr "Cruz" + +#: fdmprinter.def.json +msgctxt "infill_pattern option cross_3d" +msgid "Cross 3D" +msgstr "Cruz 3D" + +#: fdmprinter.def.json +msgctxt "zig_zaggify_infill label" +msgid "Connect Infill Lines" +msgstr "Ligar linhas de preenchimento" + +#: 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." + +#: fdmprinter.def.json +msgctxt "infill_angles label" +msgid "Infill Line Directions" +msgstr "Direções da linha de preenchimento" + +#: 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)." + +#: fdmprinter.def.json +msgctxt "infill_offset_x label" +msgid "Infill X Offset" +msgstr "Desvio 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 apresenta um desvio a esta distância ao longo do eixo X." + +#: fdmprinter.def.json +msgctxt "infill_offset_y label" +msgid "Infill Y Offset" +msgstr "Desvio Y do preenchimento" + +#: 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." + +#: fdmprinter.def.json +msgctxt "sub_div_rad_add label" +msgid "Cubic Subdivision Shell" +msgstr "Cobertura de 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." + +#: fdmprinter.def.json +msgctxt "infill_overlap label" +msgid "Infill Overlap Percentage" +msgstr "Percentagem 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 "A quantidade de sobreposição entre o preenchimento e as paredes. 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" + +#: 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." + +#: fdmprinter.def.json +msgctxt "skin_overlap label" +msgid "Skin Overlap Percentage" +msgstr "Percentagem de sobreposição do 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." + +#: fdmprinter.def.json +msgctxt "skin_overlap_mm label" +msgid "Skin Overlap" +msgstr "Sobreposição de revestimento" + +#: 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." + +#: fdmprinter.def.json +msgctxt "infill_wipe_dist label" +msgid "Infill Wipe Distance" +msgstr "Distância de limpeza do preenchimento" + +#: 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." + +#: fdmprinter.def.json +msgctxt "infill_sparse_thickness label" +msgid "Infill Layer Thickness" +msgstr "Espessura da camada de preenchimento" + +#: 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." + +#: fdmprinter.def.json +msgctxt "gradual_infill_steps label" +msgid "Gradual Infill Steps" +msgstr "Passos de preenchimento 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." + +#: fdmprinter.def.json +msgctxt "gradual_infill_step_height label" +msgid "Gradual Infill Step Height" +msgstr "Altura do passo de preenchimento 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." + +#: fdmprinter.def.json +msgctxt "infill_before_walls label" +msgid "Infill Before Walls" +msgstr "Preenchimento 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." + +#: fdmprinter.def.json +msgctxt "min_infill_area label" +msgid "Minimum Infill Area" +msgstr "Área de preenchimento 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)." + +#: fdmprinter.def.json +msgctxt "skin_preshrink label" +msgid "Skin Removal Width" +msgstr "Largura de remoção do 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." +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" + +#: 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 "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" + +#: 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 "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" + +#: 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." + +#: fdmprinter.def.json +msgctxt "top_skin_expand_distance label" +msgid "Top Skin Expand Distance" +msgstr "Distância de expansão do 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." + +#: fdmprinter.def.json +msgctxt "bottom_skin_expand_distance label" +msgid "Bottom Skin Expand Distance" +msgstr "Distância de expansão do 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." + +#: fdmprinter.def.json +msgctxt "max_skin_angle_for_expansion label" +msgid "Maximum Skin Angle for Expansion" +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." + +#: 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" + +#: 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 "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 +msgctxt "material label" +msgid "Material" +msgstr "Material" + +#: fdmprinter.def.json +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" + +#: 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." + +#: fdmprinter.def.json +msgctxt "material_print_temperature label" +msgid "Printing Temperature" +msgstr "Temperatura de impressão" + +#: fdmprinter.def.json +msgctxt "material_print_temperature description" +msgid "The temperature used for printing." +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" + +#: 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 "A temperatura utilizada para imprimir a primeira camada. Esta é definida como 0 para desativar o manuseamento especial da camada inicial." + +#: fdmprinter.def.json +msgctxt "material_initial_print_temperature label" +msgid "Initial Printing Temperature" +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." +msgstr "A temperatura mínima ao aquecer até à Temperatura de impressão à qual a impressão já pode começar." + +#: fdmprinter.def.json +msgctxt "material_final_print_temperature label" +msgid "Final Printing Temperature" +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." +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" +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." + +#: fdmprinter.def.json +msgctxt "material_bed_temperature label" +msgid "Build Plate Temperature" +msgstr "Temperatura da placa 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." + +#: 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" + +#: 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." + +#: fdmprinter.def.json +msgctxt "material_diameter label" +msgid "Diameter" +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." +msgstr "Ajusta o diâmetro do filamento utilizado. Faça corresponder este valor com o diâmetro do filamento utilizado." + +#: fdmprinter.def.json +msgctxt "material_adhesion_tendency label" +msgid "Adhesion Tendency" +msgstr "Tendência de aderência" + +#: fdmprinter.def.json +msgctxt "material_adhesion_tendency description" +msgid "Surface adhesion tendency." +msgstr "A tendência de aderência à superfície." + +#: fdmprinter.def.json +msgctxt "material_surface_energy label" +msgid "Surface Energy" +msgstr "Energia da superfície" + +#: fdmprinter.def.json +msgctxt "material_surface_energy description" +msgid "Surface energy." +msgstr "Energia da superfície." + +#: fdmprinter.def.json +msgctxt "material_flow label" +msgid "Flow" +msgstr "Fluxo" + +#: fdmprinter.def.json +msgctxt "material_flow description" +msgid "" +"Flow compensation: the amount of material extruded is multiplied by this " +"value." +msgstr "Compensação de fluxo: a quantidade de material extrudido é multiplicada por este valor." + +#: fdmprinter.def.json +msgctxt "retraction_enable label" +msgid "Enable Retraction" +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. " + +#: fdmprinter.def.json +msgctxt "retract_at_layer_change label" +msgid "Retract at Layer Change" +msgstr "Retrair na mudança de 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." + +#: fdmprinter.def.json +msgctxt "retraction_amount label" +msgid "Retraction Distance" +msgstr "Distância de retração" + +#: fdmprinter.def.json +msgctxt "retraction_amount description" +msgid "The length of material retracted during a retraction move." +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" + +#: fdmprinter.def.json +msgctxt "retraction_speed description" +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." + +#: fdmprinter.def.json +msgctxt "retraction_retract_speed label" +msgid "Retraction Retract Speed" +msgstr "Velocidade de recolha de retração" + +#: 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." + +#: fdmprinter.def.json +msgctxt "retraction_prime_speed label" +msgid "Retraction Prime Speed" +msgstr "Velocidade de preparação de retração" + +#: fdmprinter.def.json +msgctxt "retraction_prime_speed description" +msgid "The speed at which the filament is primed during a retraction move." +msgstr "A velocidade a que o filamento é preparado durante um movimento de retração." + +#: fdmprinter.def.json +msgctxt "retraction_extra_prime_amount label" +msgid "Retraction Extra Prime Amount" +msgstr "Quantidade de 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." + +#: fdmprinter.def.json +msgctxt "retraction_min_travel label" +msgid "Retraction Minimum Travel" +msgstr "Deslocação mínima de 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." +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" + +#: 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 "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" + +#: 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." + +#: fdmprinter.def.json +msgctxt "material_standby_temperature label" +msgid "Standby Temperature" +msgstr "Temperatura de 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." + +#: 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" + +#: fdmprinter.def.json +msgctxt "switch_extruder_retraction_amount description" +msgid "" +"The amount of retraction: Set at 0 for no retraction at all. This should " +"generally be the same as the length of the heat zone." +msgstr "A quantidade de retração: defina como 0 para não obter qualquer retração. Normalmente, esta deve ser a mesma que o comprimento da zona de aquecimento." + +#: fdmprinter.def.json +msgctxt "switch_extruder_retraction_speeds label" +msgid "Nozzle Switch Retraction Speed" +msgstr "Velocidade de retração de substituição do bocal" + +#: 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 "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" + +#: 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." + +#: fdmprinter.def.json +msgctxt "switch_extruder_prime_speed label" +msgid "Nozzle Switch Prime Speed" +msgstr "Velocidade de preparação de substituição do bocal" + +#: 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." + +#: fdmprinter.def.json +msgctxt "speed label" +msgid "Speed" +msgstr "Velocidade" + +#: fdmprinter.def.json +msgctxt "speed description" +msgid "Speed" +msgstr "Velocidade" + +#: fdmprinter.def.json +msgctxt "speed_print label" +msgid "Print Speed" +msgstr "Velocidade de impressão" + +#: fdmprinter.def.json +msgctxt "speed_print description" +msgid "The speed at which printing happens." +msgstr "A velocidade a que é efetuada a impressão." + +#: fdmprinter.def.json +msgctxt "speed_infill label" +msgid "Infill Speed" +msgstr "Velocidade de preenchimento" + +#: fdmprinter.def.json +msgctxt "speed_infill description" +msgid "The speed at which infill is printed." +msgstr "A velocidade a que o preenchimento é impresso." + +#: fdmprinter.def.json +msgctxt "speed_wall label" +msgid "Wall Speed" +msgstr "Velocidade de parede" + +#: fdmprinter.def.json +msgctxt "speed_wall description" +msgid "The speed at which the walls are printed." +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" + +#: 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." + +#: fdmprinter.def.json +msgctxt "speed_wall_x label" +msgid "Inner Wall Speed" +msgstr "Velocidade de parede interna" + +#: 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." + +#: fdmprinter.def.json +msgctxt "speed_roofing label" +msgid "Top Surface Skin Speed" +msgstr "Velocidade de revestimento da superfície superior" + +#: fdmprinter.def.json +msgctxt "speed_roofing description" +msgid "The speed at which top surface skin layers are printed." +msgstr "A velocidade a que as camadas de revestimento da superfície superior são impressas." + +#: fdmprinter.def.json +msgctxt "speed_topbottom label" +msgid "Top/Bottom Speed" +msgstr "Velocidade superior/inferior" + +#: fdmprinter.def.json +msgctxt "speed_topbottom description" +msgid "The speed at which top/bottom layers are printed." +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" + +#: 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 "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" + +#: 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." + +#: fdmprinter.def.json +msgctxt "speed_support_interface label" +msgid "Support Interface Speed" +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." + +#: fdmprinter.def.json +msgctxt "speed_support_roof label" +msgid "Support Roof Speed" +msgstr "Velocidade do teto 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." + +#: fdmprinter.def.json +msgctxt "speed_support_bottom label" +msgid "Support Floor Speed" +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." +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 +msgctxt "speed_prime_tower label" +msgid "Prime Tower Speed" +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." +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 +msgctxt "speed_travel label" +msgid "Travel Speed" +msgstr "Velocidade de deslocação" + +#: fdmprinter.def.json +msgctxt "speed_travel description" +msgid "The speed at which travel moves are made." +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" + +#: 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." + +#: fdmprinter.def.json +msgctxt "speed_print_layer_0 label" +msgid "Initial Layer Print Speed" +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." + +#: fdmprinter.def.json +msgctxt "speed_travel_layer_0 label" +msgid "Initial Layer Travel Speed" +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." + +#: fdmprinter.def.json +msgctxt "skirt_brim_speed label" +msgid "Skirt/Brim Speed" +msgstr "Velocidade de contorno/borda" + +#: 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." + +#: fdmprinter.def.json +msgctxt "max_feedrate_z_override label" +msgid "Maximum Z Speed" +msgstr "Velocidade Z máxima" + +#: 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." + +#: fdmprinter.def.json +msgctxt "speed_slowdown_layers label" +msgid "Number of Slower Layers" +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." + +#: fdmprinter.def.json +msgctxt "speed_equalize_flow_enabled label" +msgid "Equalize Filament Flow" +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." + +#: fdmprinter.def.json +msgctxt "speed_equalize_flow_max label" +msgid "Maximum Speed for Flow Equalization" +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." +msgstr "A velocidade máxima de impressão ao ajustar a velocidade de impressão para equilibrar o fluxo." + +#: fdmprinter.def.json +msgctxt "acceleration_enabled label" +msgid "Enable Acceleration Control" +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." +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 +msgctxt "acceleration_print label" +msgid "Print Acceleration" +msgstr "Aceleração de impressão" + +#: fdmprinter.def.json +msgctxt "acceleration_print description" +msgid "The acceleration with which printing happens." +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" + +#: fdmprinter.def.json +msgctxt "acceleration_infill description" +msgid "The acceleration with which infill is printed." +msgstr "A aceleração com que o preenchimento é impresso." + +#: fdmprinter.def.json +msgctxt "acceleration_wall label" +msgid "Wall Acceleration" +msgstr "Aceleração de parede" + +#: fdmprinter.def.json +msgctxt "acceleration_wall description" +msgid "The acceleration with which the walls are printed." +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" + +#: 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." + +#: fdmprinter.def.json +msgctxt "acceleration_wall_x label" +msgid "Inner Wall Acceleration" +msgstr "Aceleração da parede interna" + +#: 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." + +#: fdmprinter.def.json +msgctxt "acceleration_roofing label" +msgid "Top Surface Skin Acceleration" +msgstr "Aceleração do revestimento da superfície superior" + +#: fdmprinter.def.json +msgctxt "acceleration_roofing description" +msgid "The acceleration with which top surface skin layers are printed." +msgstr "A aceleração com que as camadas de revestimento da superfície superior são impressas." + +#: fdmprinter.def.json +msgctxt "acceleration_topbottom label" +msgid "Top/Bottom Acceleration" +msgstr "Aceleração superior/inferior" + +#: fdmprinter.def.json +msgctxt "acceleration_topbottom description" +msgid "The acceleration with which top/bottom layers are printed." +msgstr "A aceleração com que as camadas superiores/inferiores são impressas." + +#: fdmprinter.def.json +msgctxt "acceleration_support label" +msgid "Support Acceleration" +msgstr "Aceleração de suporte" + +#: fdmprinter.def.json +msgctxt "acceleration_support description" +msgid "The acceleration with which the support structure is printed." +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" + +#: 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." + +#: fdmprinter.def.json +msgctxt "acceleration_support_interface label" +msgid "Support Interface Acceleration" +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." + +#: fdmprinter.def.json +msgctxt "acceleration_support_roof label" +msgid "Support Roof Acceleration" +msgstr "Aceleração do teto 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." + +#: fdmprinter.def.json +msgctxt "acceleration_support_bottom label" +msgid "Support Floor Acceleration" +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." +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 +msgctxt "acceleration_prime_tower label" +msgid "Prime Tower Acceleration" +msgstr "Aceleração da torre de preparação" + +#: fdmprinter.def.json +msgctxt "acceleration_prime_tower description" +msgid "The acceleration with which the prime tower is printed." +msgstr "A aceleração com que a torre de preparação é impressa." + +#: fdmprinter.def.json +msgctxt "acceleration_travel label" +msgid "Travel Acceleration" +msgstr "Aceleração de deslocação" + +#: fdmprinter.def.json +msgctxt "acceleration_travel description" +msgid "The acceleration with which travel moves are made." +msgstr "A aceleração com que os movimentos de deslocação são efetuados." + +#: fdmprinter.def.json +msgctxt "acceleration_layer_0 label" +msgid "Initial Layer Acceleration" +msgstr "Aceleração da camada inicial" + +#: fdmprinter.def.json +msgctxt "acceleration_layer_0 description" +msgid "The acceleration for the initial layer." +msgstr "A aceleração da camada inicial." + +#: fdmprinter.def.json +msgctxt "acceleration_print_layer_0 label" +msgid "Initial Layer Print Acceleration" +msgstr "Aceleração de impressão da camada inicial" + +#: fdmprinter.def.json +msgctxt "acceleration_print_layer_0 description" +msgid "The acceleration during the printing of the initial layer." +msgstr "A aceleração durante a impressão da camada inicial." + +#: fdmprinter.def.json +msgctxt "acceleration_travel_layer_0 label" +msgid "Initial Layer Travel Acceleration" +msgstr "Aceleração de deslocação da camada inicial" + +#: fdmprinter.def.json +msgctxt "acceleration_travel_layer_0 description" +msgid "The acceleration for travel moves in the initial layer." +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" + +#: 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." + +#: fdmprinter.def.json +msgctxt "jerk_enabled label" +msgid "Enable Jerk Control" +msgstr "Ativar controlo de solavanco" + +#: 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." + +#: fdmprinter.def.json +msgctxt "jerk_print label" +msgid "Print Jerk" +msgstr "Solavanco 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." + +#: fdmprinter.def.json +msgctxt "jerk_infill label" +msgid "Infill Jerk" +msgstr "Solavanco de preenchimento" + +#: 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." + +#: fdmprinter.def.json +msgctxt "jerk_wall label" +msgid "Wall Jerk" +msgstr "Solavanco de parede" + +#: fdmprinter.def.json +msgctxt "jerk_wall description" +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" + +#: 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." + +#: fdmprinter.def.json +msgctxt "jerk_wall_x label" +msgid "Inner Wall Jerk" +msgstr "Solavanco de parede interna" + +#: 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." + +#: fdmprinter.def.json +msgctxt "jerk_roofing label" +msgid "Top Surface Skin Jerk" +msgstr "Solavanco de revestimento da superfície superior" + +#: fdmprinter.def.json +msgctxt "jerk_roofing description" +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" + +#: fdmprinter.def.json +msgctxt "jerk_topbottom description" +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" + +#: fdmprinter.def.json +msgctxt "jerk_support description" +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" + +#: 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." + +#: fdmprinter.def.json +msgctxt "jerk_support_interface label" +msgid "Support Interface Jerk" +msgstr "Solavanco de interface de 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." + +#: fdmprinter.def.json +msgctxt "jerk_support_roof label" +msgid "Support Roof Jerk" +msgstr "Solavanco de teto de 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." + +#: fdmprinter.def.json +msgctxt "jerk_support_bottom label" +msgid "Support Floor Jerk" +msgstr "Solavanco de piso de suporte" + +#: fdmprinter.def.json +msgctxt "jerk_support_bottom description" +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" + +#: fdmprinter.def.json +msgctxt "jerk_prime_tower description" +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" + +#: fdmprinter.def.json +msgctxt "jerk_travel description" +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" + +#: fdmprinter.def.json +msgctxt "jerk_layer_0 description" +msgid "The print maximum instantaneous velocity change for the initial layer." +msgstr "A mudança de velocidade instantânea máxima de impressão para a camada inicial." + +#: fdmprinter.def.json +msgctxt "jerk_print_layer_0 label" +msgid "Initial Layer Print Jerk" +msgstr "Solavanco de impressão da camada inicial" + +#: fdmprinter.def.json +msgctxt "jerk_print_layer_0 description" +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" + +#: fdmprinter.def.json +msgctxt "jerk_travel_layer_0 description" +msgid "The acceleration for travel moves in the initial layer." +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" + +#: 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." + +#: fdmprinter.def.json +msgctxt "travel label" +msgid "Travel" +msgstr "Deslocação" + +#: fdmprinter.def.json +msgctxt "travel description" +msgid "travel" +msgstr "deslocação" + +#: fdmprinter.def.json +msgctxt "retraction_combing label" +msgid "Combing Mode" +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." + +#: fdmprinter.def.json +msgctxt "retraction_combing option off" +msgid "Off" +msgstr "Desligado" + +#: fdmprinter.def.json +msgctxt "retraction_combing option all" +msgid "All" +msgstr "Tudo" + +#: fdmprinter.def.json +msgctxt "retraction_combing option noskin" +msgid "No Skin" +msgstr "Sem revestimento" + +#: fdmprinter.def.json +msgctxt "travel_retract_before_outer_wall label" +msgid "Retract Before Outer Wall" +msgstr "Retrair antes da parede externa" + +#: 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." + +#: fdmprinter.def.json +msgctxt "travel_avoid_other_parts label" +msgid "Avoid Printed Parts When Traveling" +msgstr "Evitar peças impressas durante a deslocação" + +#: 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." + +#: fdmprinter.def.json +msgctxt "travel_avoid_distance label" +msgid "Travel Avoid Distance" +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." + +#: 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" + +#: 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." + +#: fdmprinter.def.json +msgctxt "layer_start_x label" +msgid "Layer Start X" +msgstr "X de início da 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." +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" + +#: 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 "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" + +#: 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." + +#: fdmprinter.def.json +msgctxt "retraction_hop_only_when_collides label" +msgid "Z Hop Only Over Printed Parts" +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." + +#: fdmprinter.def.json +msgctxt "retraction_hop label" +msgid "Z Hop Height" +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." + +#: 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" + +#: 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." + +#: fdmprinter.def.json +msgctxt "cooling label" +msgid "Cooling" +msgstr "Arrefecimento" + +#: fdmprinter.def.json +msgctxt "cooling description" +msgid "Cooling" +msgstr "Arrefecimento" + +#: fdmprinter.def.json +msgctxt "cool_fan_enabled label" +msgid "Enable Print Cooling" +msgstr "Ativar arrefecimento de 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." + +#: fdmprinter.def.json +msgctxt "cool_fan_speed label" +msgid "Fan Speed" +msgstr "Velocidade da ventoinha" + +#: 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." + +#: fdmprinter.def.json +msgctxt "cool_fan_speed_min label" +msgid "Regular Fan Speed" +msgstr "Velocidade normal da ventoinha" + +#: 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." + +#: fdmprinter.def.json +msgctxt "cool_fan_speed_max label" +msgid "Maximum Fan Speed" +msgstr "Velocidade máxima da ventoinha" + +#: 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." + +#: 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" + +#: 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." + +#: fdmprinter.def.json +msgctxt "cool_fan_speed_0 label" +msgid "Initial Fan Speed" +msgstr "Velocidade inicial da ventoinha" + +#: 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." + +#: fdmprinter.def.json +msgctxt "cool_fan_full_at_height label" +msgid "Regular Fan Speed at Height" +msgstr "Velocidade normal da ventoinha em altura" + +#: 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." + +#: fdmprinter.def.json +msgctxt "cool_fan_full_layer label" +msgid "Regular Fan Speed at Layer" +msgstr "Velocidade normal da ventoinha na camada" + +#: 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." + +#: fdmprinter.def.json +msgctxt "cool_min_layer_time label" +msgid "Minimum Layer Time" +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." + +#: fdmprinter.def.json +msgctxt "cool_min_speed label" +msgid "Minimum Speed" +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." + +#: fdmprinter.def.json +msgctxt "cool_lift_head label" +msgid "Lift Head" +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." + +#: fdmprinter.def.json +msgctxt "support label" +msgid "Support" +msgstr "Suporte" + +#: fdmprinter.def.json +msgctxt "support description" +msgid "Support" +msgstr "Suporte" + +#: fdmprinter.def.json +msgctxt "support_enable label" +msgid "Generate Support" +msgstr "Gerar suporte" + +#: 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." + +#: fdmprinter.def.json +msgctxt "support_extruder_nr label" +msgid "Support Extruder" +msgstr "Extrusora de suporte" + +#: 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." + +#: fdmprinter.def.json +msgctxt "support_infill_extruder_nr label" +msgid "Support Infill Extruder" +msgstr "Extrusora de preenchimento 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." + +#: fdmprinter.def.json +msgctxt "support_extruder_nr_layer_0 label" +msgid "First Layer Support Extruder" +msgstr "Extrusora 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." + +#: fdmprinter.def.json +msgctxt "support_interface_extruder_nr label" +msgid "Support Interface Extruder" +msgstr "Extrusora 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." + +#: fdmprinter.def.json +msgctxt "support_roof_extruder_nr label" +msgid "Support Roof Extruder" +msgstr "Extrusora de teto 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." + +#: fdmprinter.def.json +msgctxt "support_bottom_extruder_nr label" +msgid "Support Floor Extruder" +msgstr "Extrusora 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." + +#: fdmprinter.def.json +msgctxt "support_type label" +msgid "Support Placement" +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." + +#: fdmprinter.def.json +msgctxt "support_type option buildplate" +msgid "Touching Buildplate" +msgstr "Tocar na placa de construção" + +#: fdmprinter.def.json +msgctxt "support_type option everywhere" +msgid "Everywhere" +msgstr "Em todo o lado" + +#: fdmprinter.def.json +msgctxt "support_angle label" +msgid "Support Overhang Angle" +msgstr "Ângulo de saliência de suporte" + +#: 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." + +#: fdmprinter.def.json +msgctxt "support_pattern label" +msgid "Support Pattern" +msgstr "Padrão de suporte" + +#: 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." + +#: fdmprinter.def.json +msgctxt "support_pattern option lines" +msgid "Lines" +msgstr "Linhas" + +#: fdmprinter.def.json +msgctxt "support_pattern option grid" +msgid "Grid" +msgstr "Grelha" + +#: fdmprinter.def.json +msgctxt "support_pattern option triangles" +msgid "Triangles" +msgstr "Triângulos" + +#: fdmprinter.def.json +msgctxt "support_pattern option concentric" +msgid "Concentric" +msgstr "Concêntrico" + +#: fdmprinter.def.json +msgctxt "support_pattern option concentric_3d" +msgid "Concentric 3D" +msgstr "Concêntrico 3D" + +#: fdmprinter.def.json +msgctxt "support_pattern option zigzag" +msgid "Zig Zag" +msgstr "Ziguezague" + +#: fdmprinter.def.json +msgctxt "support_pattern option cross" +msgid "Cross" +msgstr "Cruz" + +#: fdmprinter.def.json +msgctxt "support_connect_zigzags label" +msgid "Connect Support ZigZags" +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." +msgstr "Liga os ziguezagues. Isto irá aumentar a resistência da estrutura de suporte em ziguezague." + +#: fdmprinter.def.json +msgctxt "support_infill_rate label" +msgid "Support Density" +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." +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 +msgctxt "support_line_distance label" +msgid "Support Line Distance" +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." +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 +msgctxt "support_z_distance label" +msgid "Support Z Distance" +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." +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 +msgctxt "support_top_distance label" +msgid "Support Top Distance" +msgstr "Distância superior do suporte" + +#: fdmprinter.def.json +msgctxt "support_top_distance description" +msgid "Distance from the top of the support to the print." +msgstr "A distância entre a parte superior do suporte e a impressão." + +#: fdmprinter.def.json +msgctxt "support_bottom_distance label" +msgid "Support Bottom Distance" +msgstr "Distância inferior do suporte" + +#: fdmprinter.def.json +msgctxt "support_bottom_distance description" +msgid "Distance from the print to the bottom of the support." +msgstr "A distância entre a impressão e a parte inferior do suporte." + +#: fdmprinter.def.json +msgctxt "support_xy_distance label" +msgid "Support X/Y Distance" +msgstr "Distância X/Y do suporte" + +#: fdmprinter.def.json +msgctxt "support_xy_distance description" +msgid "Distance of the support structure from the print in the X/Y directions." +msgstr "A distância entre a estrutura de suporte e a impressão nas direções X/Y." + +#: fdmprinter.def.json +msgctxt "support_xy_overrides_z label" +msgid "Support Distance Priority" +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." +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 +msgctxt "support_xy_overrides_z option xy_overrides_z" +msgid "X/Y overrides Z" +msgstr "X/Y substitui Z" + +#: fdmprinter.def.json +msgctxt "support_xy_overrides_z option z_overrides_xy" +msgid "Z overrides X/Y" +msgstr "Z substitui X/Y" + +#: fdmprinter.def.json +msgctxt "support_xy_distance_overhang label" +msgid "Minimum Support X/Y Distance" +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. " +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" + +#: 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." + +#: fdmprinter.def.json +msgctxt "support_bottom_stair_step_width label" +msgid "Support Stair Step Maximum Width" +msgstr "Largura máxima dos degraus de 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." + +#: fdmprinter.def.json +msgctxt "support_join_distance label" +msgid "Support Join Distance" +msgstr "Distância da junção do suporte" + +#: fdmprinter.def.json +msgctxt "support_join_distance description" +msgid "" +"The maximum distance between support structures in the X/Y directions. When " +"seperate structures are closer together than this value, the structures " +"merge into one." +msgstr "A distância máxima entre as estruturas de suporte nas direções X/Y. Quando as estruturas separadas estão mais próximas do que este valor, as estruturas fundem-se numa só." + +#: fdmprinter.def.json +msgctxt "support_offset label" +msgid "Support Horizontal Expansion" +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." +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" + +#: 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." + +#: fdmprinter.def.json +msgctxt "gradual_support_infill_steps label" +msgid "Gradual Support Infill Steps" +msgstr "Passos de preenchimento 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." + +#: 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" + +#: 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." + +#: fdmprinter.def.json +msgctxt "support_interface_enable label" +msgid "Enable Support Interface" +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." +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" + +#: 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." + +#: fdmprinter.def.json +msgctxt "support_bottom_enable label" +msgid "Enable Support Floor" +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." + +#: fdmprinter.def.json +msgctxt "support_interface_height label" +msgid "Support Interface Thickness" +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." +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" + +#: 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." + +#: fdmprinter.def.json +msgctxt "support_bottom_height label" +msgid "Support Floor Thickness" +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." +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" + +#: 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." + +#: fdmprinter.def.json +msgctxt "support_interface_density label" +msgid "Support Interface Density" +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." + +#: fdmprinter.def.json +msgctxt "support_roof_density label" +msgid "Support Roof Density" +msgstr "Densidade do teto 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." + +#: fdmprinter.def.json +msgctxt "support_roof_line_distance label" +msgid "Support Roof Line Distance" +msgstr "Distância da linha do teto 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." + +#: fdmprinter.def.json +msgctxt "support_bottom_density label" +msgid "Support Floor Density" +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." +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 +msgctxt "support_bottom_line_distance label" +msgid "Support Floor Line Distance" +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." +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 +msgctxt "support_interface_pattern label" +msgid "Support Interface Pattern" +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." + +#: fdmprinter.def.json +msgctxt "support_interface_pattern option lines" +msgid "Lines" +msgstr "Linhas" + +#: fdmprinter.def.json +msgctxt "support_interface_pattern option grid" +msgid "Grid" +msgstr "Grelha" + +#: fdmprinter.def.json +msgctxt "support_interface_pattern option triangles" +msgid "Triangles" +msgstr "Triângulos" + +#: fdmprinter.def.json +msgctxt "support_interface_pattern option concentric" +msgid "Concentric" +msgstr "Concêntrico" + +#: fdmprinter.def.json +msgctxt "support_interface_pattern option concentric_3d" +msgid "Concentric 3D" +msgstr "Concêntrico 3D" + +#: fdmprinter.def.json +msgctxt "support_interface_pattern option zigzag" +msgid "Zig Zag" +msgstr "Ziguezague" + +#: fdmprinter.def.json +msgctxt "support_roof_pattern label" +msgid "Support Roof Pattern" +msgstr "Padrão do teto 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." + +#: fdmprinter.def.json +msgctxt "support_roof_pattern option lines" +msgid "Lines" +msgstr "Linhas" + +#: fdmprinter.def.json +msgctxt "support_roof_pattern option grid" +msgid "Grid" +msgstr "Grelha" + +#: fdmprinter.def.json +msgctxt "support_roof_pattern option triangles" +msgid "Triangles" +msgstr "Triângulos" + +#: fdmprinter.def.json +msgctxt "support_roof_pattern option concentric" +msgid "Concentric" +msgstr "Concêntrico" + +#: fdmprinter.def.json +msgctxt "support_roof_pattern option concentric_3d" +msgid "Concentric 3D" +msgstr "Concêntrico 3D" + +#: fdmprinter.def.json +msgctxt "support_roof_pattern option zigzag" +msgid "Zig Zag" +msgstr "Ziguezague" + +#: fdmprinter.def.json +msgctxt "support_bottom_pattern label" +msgid "Support Floor Pattern" +msgstr "Padrão do piso de suporte" + +#: 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." + +#: fdmprinter.def.json +msgctxt "support_bottom_pattern option lines" +msgid "Lines" +msgstr "Linhas" + +#: fdmprinter.def.json +msgctxt "support_bottom_pattern option grid" +msgid "Grid" +msgstr "Grelha" + +#: fdmprinter.def.json +msgctxt "support_bottom_pattern option triangles" +msgid "Triangles" +msgstr "Triângulos" + +#: fdmprinter.def.json +msgctxt "support_bottom_pattern option concentric" +msgid "Concentric" +msgstr "Concêntrico" + +#: fdmprinter.def.json +msgctxt "support_bottom_pattern option concentric_3d" +msgid "Concentric 3D" +msgstr "Concêntrico 3D" + +#: fdmprinter.def.json +msgctxt "support_bottom_pattern option zigzag" +msgid "Zig Zag" +msgstr "Ziguezague" + +#: fdmprinter.def.json +msgctxt "support_use_towers label" +msgid "Use Towers" +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." + +#: fdmprinter.def.json +msgctxt "support_tower_diameter label" +msgid "Tower Diameter" +msgstr "Diâmetro da torre" + +#: fdmprinter.def.json +msgctxt "support_tower_diameter description" +msgid "The diameter of a special tower." +msgstr "O diâmetro de uma torre especial." + +#: fdmprinter.def.json +msgctxt "support_minimal_diameter label" +msgid "Minimum Diameter" +msgstr "Diâmetro mínimo" + +#: fdmprinter.def.json +msgctxt "support_minimal_diameter description" +msgid "" +"Minimum diameter in the X/Y directions of a small area which is to be " +"supported by a specialized support tower." +msgstr "O diâmetro mínimo nas direções X/Y de uma pequena área que deverá ser suportada por uma torre de suporte especializada." + +#: fdmprinter.def.json +msgctxt "support_tower_roof_angle label" +msgid "Tower Roof Angle" +msgstr "Ângulo do teto 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." + +#: fdmprinter.def.json +msgctxt "platform_adhesion label" +msgid "Build Plate Adhesion" +msgstr "Aderência à placa de construção" + +#: fdmprinter.def.json +msgctxt "platform_adhesion description" +msgid "Adhesion" +msgstr "Aderência" + +#: fdmprinter.def.json +msgctxt "prime_blob_enable label" +msgid "Enable Prime Blob" +msgstr "Ativar blob de preparaçã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." + +#: fdmprinter.def.json +msgctxt "extruder_prime_pos_x label" +msgid "Extruder Prime X Position" +msgstr "Posição X de preparação da extrusora" + +#: 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." + +#: fdmprinter.def.json +msgctxt "extruder_prime_pos_y label" +msgid "Extruder Prime Y Position" +msgstr "Posição Y de preparação da extrusora" + +#: 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." + +#: fdmprinter.def.json +msgctxt "adhesion_type label" +msgid "Build Plate Adhesion Type" +msgstr "Tipo de aderência à placa de construção" + +#: fdmprinter.def.json +msgctxt "adhesion_type description" +msgid "" +"Different options that help to improve both priming your extrusion and " +"adhesion to the build plate. Brim adds a single layer flat area around the " +"base of your model to prevent warping. Raft adds a thick grid with a roof " +"below the model. Skirt is a line printed around the model, but not connected " +"to the model." +msgstr "Diferentes opções que ajudam a melhorar a 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." + +#: fdmprinter.def.json +msgctxt "adhesion_type option skirt" +msgid "Skirt" +msgstr "Contorno" + +#: fdmprinter.def.json +msgctxt "adhesion_type option brim" +msgid "Brim" +msgstr "Borda" + +#: fdmprinter.def.json +msgctxt "adhesion_type option raft" +msgid "Raft" +msgstr "Base reticular" + +#: fdmprinter.def.json +msgctxt "adhesion_type option none" +msgid "None" +msgstr "Nenhum" + +#: fdmprinter.def.json +msgctxt "adhesion_extruder_nr label" +msgid "Build Plate Adhesion Extruder" +msgstr "Extrusora de aderência à placa de construção" + +#: 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." + +#: fdmprinter.def.json +msgctxt "skirt_line_count label" +msgid "Skirt Line Count" +msgstr "Contagem de linhas de 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." + +#: fdmprinter.def.json +msgctxt "skirt_gap label" +msgid "Skirt Distance" +msgstr "Distância do 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." + +#: fdmprinter.def.json +msgctxt "skirt_brim_minimal_length label" +msgid "Skirt/Brim Minimum Length" +msgstr "Comprimento mínimo do contorno/da borda" + +#: 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." + +#: fdmprinter.def.json +msgctxt "brim_width label" +msgid "Brim Width" +msgstr "Largura da borda" + +#: 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." + +#: fdmprinter.def.json +msgctxt "brim_line_count label" +msgid "Brim Line Count" +msgstr "Contagem de linhas de borda" + +#: 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." + +#: fdmprinter.def.json +msgctxt "brim_outside_only label" +msgid "Brim Only on Outside" +msgstr "Borda 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." + +#: fdmprinter.def.json +msgctxt "raft_margin label" +msgid "Raft Extra Margin" +msgstr "Margem adicional da base reticular" + +#: 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." + +#: fdmprinter.def.json +msgctxt "raft_smoothing label" +msgid "Raft Smoothing" +msgstr "Suavização da base reticular" + +#: 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." + +#: fdmprinter.def.json +msgctxt "raft_airgap label" +msgid "Raft Air Gap" +msgstr "Folga de ar da base reticular" + +#: 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." + +#: fdmprinter.def.json +msgctxt "layer_0_z_overlap label" +msgid "Initial Layer Z Overlap" +msgstr "Sobreposição Z da camada inicial" + +#: 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." + +#: fdmprinter.def.json +msgctxt "raft_surface_layers label" +msgid "Raft Top Layers" +msgstr "Camadas superiores da base reticular" + +#: 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." + +#: fdmprinter.def.json +msgctxt "raft_surface_thickness label" +msgid "Raft Top Layer Thickness" +msgstr "Espessura das camada superiores da base reticular" + +#: 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." + +#: fdmprinter.def.json +msgctxt "raft_surface_line_width label" +msgid "Raft Top Line Width" +msgstr "Largura das linhas superiores da base reticular" + +#: 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." + +#: fdmprinter.def.json +msgctxt "raft_surface_line_spacing label" +msgid "Raft Top Spacing" +msgstr "Espaçamento superior da base reticular" + +#: 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." + +#: fdmprinter.def.json +msgctxt "raft_interface_thickness label" +msgid "Raft Middle Thickness" +msgstr "Espessura média da base reticular" + +#: 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." + +#: fdmprinter.def.json +msgctxt "raft_interface_line_width label" +msgid "Raft Middle Line Width" +msgstr "Largura da linha média da base reticular" + +#: 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." + +#: fdmprinter.def.json +msgctxt "raft_interface_line_spacing label" +msgid "Raft Middle Spacing" +msgstr "Espaçamento médio da base reticular" + +#: 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." + +#: fdmprinter.def.json +msgctxt "raft_base_thickness label" +msgid "Raft Base Thickness" +msgstr "Espessura inferior da base reticular" + +#: 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." + +#: fdmprinter.def.json +msgctxt "raft_base_line_width label" +msgid "Raft Base Line Width" +msgstr "Largura da linha inferior da base reticular" + +#: 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." + +#: fdmprinter.def.json +msgctxt "raft_base_line_spacing label" +msgid "Raft Line Spacing" +msgstr "Espaçamento da linha da base reticular" + +#: 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." + +#: fdmprinter.def.json +msgctxt "raft_speed label" +msgid "Raft Print Speed" +msgstr "Velocidade de impressão da base reticular" + +#: 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." + +#: fdmprinter.def.json +msgctxt "raft_surface_speed label" +msgid "Raft Top Print Speed" +msgstr "Velocidade de impressão superior da base reticular" + +#: 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." + +#: fdmprinter.def.json +msgctxt "raft_interface_speed label" +msgid "Raft Middle Print Speed" +msgstr "Velocidade de impressão média da base reticular" + +#: 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." + +#: fdmprinter.def.json +msgctxt "raft_base_speed label" +msgid "Raft Base Print Speed" +msgstr "Velocidade de impressão inferior da base reticular" + +#: 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." + +#: fdmprinter.def.json +msgctxt "raft_acceleration label" +msgid "Raft Print Acceleration" +msgstr "Aceleração de impressão da base reticular" + +#: 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." + +#: fdmprinter.def.json +msgctxt "raft_surface_acceleration label" +msgid "Raft Top Print Acceleration" +msgstr "Aceleração de impressão superior da base reticular" + +#: 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." + +#: fdmprinter.def.json +msgctxt "raft_interface_acceleration label" +msgid "Raft Middle Print Acceleration" +msgstr "Aceleração de impressão média da base reticular" + +#: 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." + +#: fdmprinter.def.json +msgctxt "raft_base_acceleration label" +msgid "Raft Base Print Acceleration" +msgstr "Aceleração de impressão inferior da base reticular" + +#: 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." + +#: fdmprinter.def.json +msgctxt "raft_jerk label" +msgid "Raft Print Jerk" +msgstr "Solavanco de impressão da base reticular" + +#: 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." + +#: fdmprinter.def.json +msgctxt "raft_surface_jerk label" +msgid "Raft Top Print Jerk" +msgstr "Solavanco de impressão superior da base reticular" + +#: 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." + +#: fdmprinter.def.json +msgctxt "raft_interface_jerk label" +msgid "Raft Middle Print Jerk" +msgstr "Solavanco de impressão média da base reticular" + +#: 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." + +#: fdmprinter.def.json +msgctxt "raft_base_jerk label" +msgid "Raft Base Print Jerk" +msgstr "Solavanco de impressão inferior da base reticular" + +#: 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." + +#: fdmprinter.def.json +msgctxt "raft_fan_speed label" +msgid "Raft Fan Speed" +msgstr "Velocidade da ventoinha da base reticular" + +#: fdmprinter.def.json +msgctxt "raft_fan_speed description" +msgid "The fan speed for the raft." +msgstr "A velocidade da ventoinha da base reticular." + +#: fdmprinter.def.json +msgctxt "raft_surface_fan_speed label" +msgid "Raft Top Fan Speed" +msgstr "Velocidade da ventoinha superior da base reticular" + +#: 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." + +#: fdmprinter.def.json +msgctxt "raft_interface_fan_speed label" +msgid "Raft Middle Fan Speed" +msgstr "Velocidade da ventoinha média da base reticular" + +#: 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." + +#: fdmprinter.def.json +msgctxt "raft_base_fan_speed label" +msgid "Raft Base Fan Speed" +msgstr "Velocidade da ventoinha inferior da base reticular" + +#: 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." + +#: fdmprinter.def.json +msgctxt "dual label" +msgid "Dual Extrusion" +msgstr "Extrusão dupla" + +#: fdmprinter.def.json +msgctxt "dual description" +msgid "Settings used for printing with multiple extruders." +msgstr "Definições utilizadas para imprimir com várias extrusoras." + +#: fdmprinter.def.json +msgctxt "prime_tower_enable label" +msgid "Enable Prime Tower" +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." + +#: fdmprinter.def.json +msgctxt "prime_tower_size label" +msgid "Prime Tower Size" +msgstr "Tamanho da 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." + +#: fdmprinter.def.json +msgctxt "prime_tower_min_volume label" +msgid "Prime Tower Minimum Volume" +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." +msgstr "O volume mínimo para cada camada da torre de preparação para preparar material suficiente." + +#: fdmprinter.def.json +msgctxt "prime_tower_wall_thickness label" +msgid "Prime Tower Thickness" +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." +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 +msgctxt "prime_tower_position_x label" +msgid "Prime Tower X Position" +msgstr "Posição X da torre de preparação" + +#: fdmprinter.def.json +msgctxt "prime_tower_position_x description" +msgid "The x coordinate of the position of the prime tower." +msgstr "A coordenada X da posição da torre de preparação." + +#: fdmprinter.def.json +msgctxt "prime_tower_position_y label" +msgid "Prime Tower Y Position" +msgstr "Posição Y da torre de preparação" + +#: fdmprinter.def.json +msgctxt "prime_tower_position_y description" +msgid "The y coordinate of the position of the prime tower." +msgstr "A coordenada Y da posição da torre de preparação." + +#: fdmprinter.def.json +msgctxt "prime_tower_flow label" +msgid "Prime Tower Flow" +msgstr "Fluxo da torre de preparação" + +#: fdmprinter.def.json +msgctxt "prime_tower_flow description" +msgid "" +"Flow compensation: the amount of material extruded is multiplied by this " +"value." +msgstr "Compensação de fluxo: a quantidade de material extrudido é multiplicada por este valor." + +#: fdmprinter.def.json +msgctxt "prime_tower_wipe_enabled label" +msgid "Wipe Inactive Nozzle on Prime Tower" +msgstr "Limpar bocal 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." + +#: fdmprinter.def.json +msgctxt "dual_pre_wipe label" +msgid "Wipe Nozzle After Switch" +msgstr "Limpar bocal após substituição" + +#: 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." + +#: fdmprinter.def.json +msgctxt "prime_tower_purge_volume label" +msgid "Prime Tower Purge Volume" +msgstr "Volume de purga da torre de 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." + +#: fdmprinter.def.json +msgctxt "ooze_shield_enabled label" +msgid "Enable Ooze Shield" +msgstr "Ativar proteção contra vazamentos" + +#: 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." + +#: fdmprinter.def.json +msgctxt "ooze_shield_angle label" +msgid "Ooze Shield Angle" +msgstr "Ângulo da proteção contra vazamentos" + +#: 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." + +#: fdmprinter.def.json +msgctxt "ooze_shield_dist label" +msgid "Ooze Shield Distance" +msgstr "Distância da proteção contra vazamentos" + +#: 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." + +#: fdmprinter.def.json +msgctxt "meshfix label" +msgid "Mesh Fixes" +msgstr "Correção de malhas" + +#: fdmprinter.def.json +msgctxt "meshfix description" +msgid "category_fixes" +msgstr "correção_categorias" + +#: fdmprinter.def.json +msgctxt "meshfix_union_all label" +msgid "Union Overlapping Volumes" +msgstr "União de 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." + +#: fdmprinter.def.json +msgctxt "meshfix_union_all_remove_holes label" +msgid "Remove All Holes" +msgstr "Remover todos os orifícios" + +#: 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." + +#: fdmprinter.def.json +msgctxt "meshfix_extensive_stitching label" +msgid "Extensive Stitching" +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." + +#: fdmprinter.def.json +msgctxt "meshfix_keep_open_polygons label" +msgid "Keep Disconnected Faces" +msgstr "Manter faces desconectadas" + +#: 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." + +#: fdmprinter.def.json +msgctxt "multiple_mesh_overlap label" +msgid "Merged Meshes Overlap" +msgstr "Sobreposição de malhas fundidas" + +#: 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." +msgstr "Faz com que as malhas em contacto se sobreponham ligeiramente. Isto melhora a sua ligação." + +#: fdmprinter.def.json +msgctxt "carve_multiple_volumes label" +msgid "Remove Mesh Intersection" +msgstr "Remover interceção de malhas" + +#: 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." + +#: fdmprinter.def.json +msgctxt "alternate_carve_order label" +msgid "Alternate Mesh Removal" +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." +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" + +#: 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." + +#: fdmprinter.def.json +msgctxt "blackmagic label" +msgid "Special Modes" +msgstr "Modos especiais" + +#: fdmprinter.def.json +msgctxt "blackmagic description" +msgid "category_blackmagic" +msgstr "categoria_blackmagic" + +#: fdmprinter.def.json +msgctxt "print_sequence label" +msgid "Print Sequence" +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." + +#: fdmprinter.def.json +msgctxt "print_sequence option all_at_once" +msgid "All at Once" +msgstr "Simultaneamente" + +#: fdmprinter.def.json +msgctxt "print_sequence option one_at_a_time" +msgid "One at a Time" +msgstr "Individualmente" + +#: fdmprinter.def.json +msgctxt "infill_mesh label" +msgid "Infill Mesh" +msgstr "Malha de preenchimento" + +#: 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." + +#: fdmprinter.def.json +msgctxt "infill_mesh_order label" +msgid "Infill Mesh Order" +msgstr "Ordem de malhas de preenchimento" + +#: 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." + +#: fdmprinter.def.json +msgctxt "cutting_mesh label" +msgid "Cutting Mesh" +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." + +#: fdmprinter.def.json +msgctxt "mold_enabled label" +msgid "Mold" +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." + +#: fdmprinter.def.json +msgctxt "mold_width label" +msgid "Minimal Mold Width" +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." +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" + +#: fdmprinter.def.json +msgctxt "mold_roof_height description" +msgid "The height above horizontal parts in your model which to print mold." +msgstr "A altura acima das partes horizontais do modelo em que deve imprimir o molde." + +#: fdmprinter.def.json +msgctxt "mold_angle label" +msgid "Mold Angle" +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." + +#: fdmprinter.def.json +msgctxt "support_mesh label" +msgid "Support Mesh" +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." +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" +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." +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 +msgctxt "magic_mesh_surface_mode label" +msgid "Surface Mode" +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." + +#: fdmprinter.def.json +msgctxt "magic_mesh_surface_mode option normal" +msgid "Normal" +msgstr "Normal" + +#: fdmprinter.def.json +msgctxt "magic_mesh_surface_mode option surface" +msgid "Surface" +msgstr "Superfície" + +#: fdmprinter.def.json +msgctxt "magic_mesh_surface_mode option both" +msgid "Both" +msgstr "Ambos" + +#: fdmprinter.def.json +msgctxt "magic_spiralize label" +msgid "Spiralize Outer Contour" +msgstr "Contorno externo em espiral" + +#: 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." + +#: fdmprinter.def.json +msgctxt "smooth_spiralized_contours label" +msgid "Smooth Spiralized Contours" +msgstr "Suavizar contornos em espiral" + +#: 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." + +#: fdmprinter.def.json +msgctxt "relative_extrusion label" +msgid "Relative Extrusion" +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." +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 +msgctxt "experimental label" +msgid "Experimental" +msgstr "Experimental" + +#: fdmprinter.def.json +msgctxt "experimental description" +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" + +#: 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." + +#: fdmprinter.def.json +msgctxt "support_skip_some_zags label" +msgid "Break Up Support In Chunks" +msgstr "Separar suporte 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." + +#: fdmprinter.def.json +msgctxt "support_skip_zag_per_mm label" +msgid "Support Chunk Size" +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." + +#: fdmprinter.def.json +msgctxt "support_zag_skip_count label" +msgid "Support Chunk Line Count" +msgstr "Contagem 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." + +#: fdmprinter.def.json +msgctxt "draft_shield_enabled label" +msgid "Enable Draft Shield" +msgstr "Ativar proteção 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." + +#: fdmprinter.def.json +msgctxt "draft_shield_dist label" +msgid "Draft Shield X/Y Distance" +msgstr "Distância X/Y da proteção contra correntes de ar" + +#: fdmprinter.def.json +msgctxt "draft_shield_dist description" +msgid "Distance of the draft shield from the print, in the X/Y directions." +msgstr "A distância da proteção contra correntes de ar relativamente à impressora nas direções X/Y." + +#: fdmprinter.def.json +msgctxt "draft_shield_height_limitation label" +msgid "Draft Shield Limitation" +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." +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 +msgctxt "draft_shield_height_limitation option full" +msgid "Full" +msgstr "Máximo" + +#: fdmprinter.def.json +msgctxt "draft_shield_height_limitation option limited" +msgid "Limited" +msgstr "Limitado" + +#: fdmprinter.def.json +msgctxt "draft_shield_height label" +msgid "Draft Shield Height" +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." +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 +msgctxt "conical_overhang_enabled label" +msgid "Make Overhang Printable" +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." +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 +msgctxt "conical_overhang_angle label" +msgid "Maximum Model Angle" +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." + +#: fdmprinter.def.json +msgctxt "coasting_enable label" +msgid "Enable Coasting" +msgstr "Ativar desaceleração" + +#: 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." + +#: fdmprinter.def.json +msgctxt "coasting_volume label" +msgid "Coasting Volume" +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." + +#: fdmprinter.def.json +msgctxt "coasting_min_volume label" +msgid "Minimum Volume Before Coasting" +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." +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 +msgctxt "coasting_speed label" +msgid "Coasting Speed" +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." +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" + +#: 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." + +#: fdmprinter.def.json +msgctxt "cross_infill_pocket_size label" +msgid "Cross 3D Pocket Size" +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." +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 +msgctxt "cross_infill_apply_pockets_alternatingly label" +msgid "Alternate Cross 3D Pockets" +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." +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" + +#: 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." + +#: fdmprinter.def.json +msgctxt "spaghetti_infill_stepped label" +msgid "Spaghetti Infill Stepping" +msgstr "Passos de preenchimento 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." + +#: fdmprinter.def.json +msgctxt "spaghetti_max_infill_angle label" +msgid "Spaghetti Maximum Infill Angle" +msgstr "Ângulo de preenchimento 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." + +#: fdmprinter.def.json +msgctxt "spaghetti_max_height label" +msgid "Spaghetti Infill Maximum Height" +msgstr "Altura máxima de preenchimento 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." +msgstr "A altura máxima do espaço interior que pode ser combinado e preenchido a partir da parte superior." + +#: fdmprinter.def.json +msgctxt "spaghetti_inset label" +msgid "Spaghetti Inset" +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." + +#: fdmprinter.def.json +msgctxt "spaghetti_flow label" +msgid "Spaghetti Flow" +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." + +#: fdmprinter.def.json +msgctxt "spaghetti_infill_extra_volume label" +msgid "Spaghetti Infill Extra Volume" +msgstr "Volume adicional de preenchimento 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." + +#: fdmprinter.def.json +msgctxt "support_conical_enabled label" +msgid "Enable Conical Support" +msgstr "Ativar suporte cónico" + +#: fdmprinter.def.json +msgctxt "support_conical_enabled description" +msgid "" +"Experimental feature: Make support areas smaller at the bottom than at the " +"overhang." +msgstr "Funcionalidade experimental: torna as áreas de suporte mais reduzidas na parte inferior do que na saliência." + +#: fdmprinter.def.json +msgctxt "support_conical_angle label" +msgid "Conical Support Angle" +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." +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 +msgctxt "support_conical_min_width label" +msgid "Conical Support Minimum Width" +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." + +#: fdmprinter.def.json +msgctxt "infill_hollow label" +msgid "Hollow Out Objects" +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." + +#: fdmprinter.def.json +msgctxt "magic_fuzzy_skin_enabled label" +msgid "Fuzzy Skin" +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." + +#: fdmprinter.def.json +msgctxt "magic_fuzzy_skin_thickness label" +msgid "Fuzzy Skin Thickness" +msgstr "Espessura do 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." + +#: fdmprinter.def.json +msgctxt "magic_fuzzy_skin_point_density label" +msgid "Fuzzy Skin Density" +msgstr "Densidade do 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." +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 +msgctxt "magic_fuzzy_skin_point_dist label" +msgid "Fuzzy Skin Point Distance" +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." +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 +msgctxt "flow_rate_max_extrusion_offset label" +msgid "Flow rate compensation max extrusion offset" +msgstr "Desvio de extrusão máximo de compensação da taxa de fluxo" + +#: 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." + +#: fdmprinter.def.json +msgctxt "flow_rate_extrusion_offset_factor label" +msgid "Flow rate compensation factor" +msgstr "Fator de compensação da taxa de fluxo" + +#: fdmprinter.def.json +msgctxt "flow_rate_extrusion_offset_factor description" +msgid "The multiplication factor for the flow rate -> distance translation." +msgstr "O fator de multiplicação da taxa de fluxo -> translação de distância." + +#: fdmprinter.def.json +msgctxt "wireframe_enabled label" +msgid "Wire Printing" +msgstr "Impressão de 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." + +#: fdmprinter.def.json +msgctxt "wireframe_height label" +msgid "WP Connection Height" +msgstr "Altura de ligação da impressão de 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." +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" + +#: 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." +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 +msgctxt "wireframe_printspeed label" +msgid "WP Speed" +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." + +#: fdmprinter.def.json +msgctxt "wireframe_printspeed_bottom label" +msgid "WP Bottom Printing Speed" +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." +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 +msgctxt "wireframe_printspeed_up label" +msgid "WP Upward Printing Speed" +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." +msgstr "A velocidade de impressão de uma linha ascendente \"no ar\". Aplica-se apenas à impressão de fios." + +#: fdmprinter.def.json +msgctxt "wireframe_printspeed_down label" +msgid "WP Downward Printing Speed" +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." +msgstr "Velocidade de impressão de uma linha diagonal descendente. Aplica-se apenas à impressão de fios." + +#: fdmprinter.def.json +msgctxt "wireframe_printspeed_flat label" +msgid "WP Horizontal Printing Speed" +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." +msgstr "Velocidade de impressão de contornos horizontais do modelo. Aplica-se apenas à impressão de fios." + +#: fdmprinter.def.json +msgctxt "wireframe_flow label" +msgid "WP Flow" +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." +msgstr "Compensação de fluxo: a quantidade de material extrudido é multiplicada por este valor. Aplica-se apenas à impressão de fios." + +#: fdmprinter.def.json +msgctxt "wireframe_flow_connection label" +msgid "WP Connection Flow" +msgstr "Fluxo de ligação da impressão de fios" + +#: fdmprinter.def.json +msgctxt "wireframe_flow_connection description" +msgid "Flow compensation when going up or down. Only applies to Wire Printing." +msgstr "A compensação de fluxo ao deslocar-se para cima ou para baixo. Aplica-se apenas à impressão de fios." + +#: fdmprinter.def.json +msgctxt "wireframe_flow_flat label" +msgid "WP Flat Flow" +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." +msgstr "Compensação de fluxo ao imprimir linhas planas. Aplica-se apenas à impressão de fios." + +#: fdmprinter.def.json +msgctxt "wireframe_top_delay label" +msgid "WP Top Delay" +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." +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 +msgctxt "wireframe_bottom_delay label" +msgid "WP Bottom Delay" +msgstr "Atraso da parte inferior da impressão de fios" + +#: fdmprinter.def.json +msgctxt "wireframe_bottom_delay description" +msgid "Delay time after a downward move. Only applies to Wire Printing." +msgstr "O tempo de atraso após um movimento descendente. Aplica-se apenas à impressão de fios." + +#: fdmprinter.def.json +msgctxt "wireframe_flat_delay label" +msgid "WP Flat Delay" +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." +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 +msgctxt "wireframe_up_half_speed label" +msgid "WP Ease Upward" +msgstr "Facilidade de movimento ascendente da impressão de fios" + +#: fdmprinter.def.json +msgctxt "wireframe_up_half_speed description" +msgid "" +"Distance of an upward move which is extruded with half speed.\n" +"This can cause better adhesion to previous layers, while not heating the " +"material in those layers too much. Only applies to Wire Printing." +msgstr "A distância de um movimento ascendente que é extrudido a metade da velocidade.\nIsto pode causar melhor aderência às camadas anteriores, sendo que o material nessas camadas não é demasiado aquecido. Aplica-se apenas à impressão de fios." + +#: fdmprinter.def.json +msgctxt "wireframe_top_jump label" +msgid "WP Knot Size" +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." +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 +msgctxt "wireframe_fall_down label" +msgid "WP Fall Down" +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." +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 +msgctxt "wireframe_drag_along label" +msgid "WP Drag Along" +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." +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 +msgctxt "wireframe_strategy label" +msgid "WP Strategy" +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." +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 +msgctxt "wireframe_strategy option compensate" +msgid "Compensate" +msgstr "Compensar" + +#: fdmprinter.def.json +msgctxt "wireframe_strategy option knot" +msgid "Knot" +msgstr "Nó" + +#: fdmprinter.def.json +msgctxt "wireframe_strategy option retract" +msgid "Retract" +msgstr "Retrair" + +#: fdmprinter.def.json +msgctxt "wireframe_straight_before_down label" +msgid "WP Straighten Downward Lines" +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." +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" + +#: 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." + +#: fdmprinter.def.json +msgctxt "wireframe_roof_drag_along label" +msgid "WP Roof Drag Along" +msgstr "Arrastamento do teto 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." + +#: fdmprinter.def.json +msgctxt "wireframe_roof_outer_delay label" +msgid "WP Roof Outer Delay" +msgstr "Atraso externo do teto 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." + +#: fdmprinter.def.json +msgctxt "wireframe_nozzle_clearance label" +msgid "WP Nozzle Clearance" +msgstr "Espaço do bocal 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." + +#: fdmprinter.def.json +msgctxt "command_line_settings label" +msgid "Command Line Settings" +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." +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 +msgctxt "center_object label" +msgid "Center object" +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." + +#: fdmprinter.def.json +msgctxt "mesh_position_x label" +msgid "Mesh position x" +msgstr "Posição X da malha" + +#: fdmprinter.def.json +msgctxt "mesh_position_x description" +msgid "Offset applied to the object in the x direction." +msgstr "Desvio aplicado ao objeto na direção X." + +#: fdmprinter.def.json +msgctxt "mesh_position_y label" +msgid "Mesh position y" +msgstr "Posição Y da malha" + +#: fdmprinter.def.json +msgctxt "mesh_position_y description" +msgid "Offset applied to the object in the y direction." +msgstr "Desvio aplicado ao objeto na direção Y." + +#: fdmprinter.def.json +msgctxt "mesh_position_z label" +msgid "Mesh position z" +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\"." + +#: fdmprinter.def.json +msgctxt "mesh_rotation_matrix label" +msgid "Mesh Rotation Matrix" +msgstr "Matriz de 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." From da4372beef71eeb68ea69146d916406848d904d5 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Fri, 29 Dec 2017 11:49:04 +0100 Subject: [PATCH 25/45] Corrections for Portuguese translation Without really knowing the language, I was able to make these corrections. Contributes to issue CURA-4692. --- resources/i18n/pt_PT/cura.po | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/resources/i18n/pt_PT/cura.po b/resources/i18n/pt_PT/cura.po index 5cabe1b536..6fbc8664a9 100644 --- a/resources/i18n/pt_PT/cura.po +++ b/resources/i18n/pt_PT/cura.po @@ -568,7 +568,7 @@ msgstr "Não é possível enviar tarefa de impressão para o grupo {cluster_name #, python-brace-format msgctxt "@info:status" msgid "Sent {file_name} to group {cluster_name}." -msgstr "{File_name} enviado para o grupo {cluster_name}." +msgstr "{file_name} enviado para o grupo {cluster_name}." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:423 msgctxt "@action:button" @@ -1306,7 +1306,7 @@ 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 "%(largura).1f x %(profundidade).1f x %(altura).1f mm" +msgstr "%(width).1f x %(depth).1f x %(height).1f mm" #: /home/ruben/Projects/Cura/cura/CuraApplication.py:1348 #, python-brace-format @@ -2043,7 +2043,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 placa de construção" #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:108 msgctxt "@action:label" @@ -3376,7 +3376,7 @@ 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." +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 msgctxt "@label" From ac8f3a31bed6503d64b860fb238ed21e694c1692 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Fri, 29 Dec 2017 11:51:28 +0100 Subject: [PATCH 26/45] Include period in translation source text I suspect that this was originally done this way to prevent breaking a string freeze. I'm now correcting it so that languages that don't use this period will also be able to properly end their sentence (such as Japanese or Chinese). Contributes to issue CURA-4692. --- resources/qml/Settings/SettingItem.qml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/resources/qml/Settings/SettingItem.qml b/resources/qml/Settings/SettingItem.qml index 1fa83cb6d4..4a89090984 100644 --- a/resources/qml/Settings/SettingItem.qml +++ b/resources/qml/Settings/SettingItem.qml @@ -1,5 +1,5 @@ -// Copyright (c) 2015 Ultimaker B.V. -// Uranium is released under the terms of the LGPLv3 or higher. +// Copyright (c) 2017 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. import QtQuick 2.1 import QtQuick.Layouts 1.1 @@ -154,7 +154,7 @@ Item { onEntered: { hoverTimer.stop(); - var tooltipText = catalog.i18nc("@label", "This setting is always shared between all extruders. Changing it here will change the value for all extruders") + "."; + var tooltipText = catalog.i18nc("@label", "This setting is always shared between all extruders. Changing it here will change the value for all extruders."); if ((resolve != "None") && (stackLevel != 0)) { // We come here if a setting has a resolve and the setting is not manually edited. tooltipText += " " + catalog.i18nc("@label", "The value is resolved from per-extruder values ") + "[" + Cura.ExtruderManager.getInstanceExtruderValues(definition.key) + "]."; From c786f7a69b46c950712cf32b8d3f341b8c9e7289 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Fri, 29 Dec 2017 11:53:58 +0100 Subject: [PATCH 27/45] Add Portuguese to language drop-down So that we can select it. Contributes to issue CURA-4692. --- resources/qml/Preferences/GeneralPage.qml | 1 + 1 file changed, 1 insertion(+) diff --git a/resources/qml/Preferences/GeneralPage.qml b/resources/qml/Preferences/GeneralPage.qml index e9dae6eb11..722ba31c48 100644 --- a/resources/qml/Preferences/GeneralPage.qml +++ b/resources/qml/Preferences/GeneralPage.qml @@ -159,6 +159,7 @@ UM.PreferencesPage append({ text: "Nederlands", code: "nl_NL" }) append({ text: "Polski", code: "pl_PL" }) append({ text: "Português do Brasil", code: "pt_BR" }) + append({ text: "Português", code: "pt_PT" }) append({ text: "Русский", code: "ru_RU" }) append({ text: "Türkçe", code: "tr_TR" }) append({ text: "简体中文", code: "zh_CN" }) From cda600f12d0e03dffdbdbf77a72ba27a85336db2 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Fri, 29 Dec 2017 13:16:52 +0100 Subject: [PATCH 28/45] Don't halt build when encountering duplicate tests I had duplicate tests because multiple plug-ins were interfering with each other. We shouldn't crash on that. Contributes to issue CURA-4692. --- cmake/CuraTests.cmake | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/cmake/CuraTests.cmake b/cmake/CuraTests.cmake index a8af16c28c..3cb5a705b3 100644 --- a/cmake/CuraTests.cmake +++ b/cmake/CuraTests.cmake @@ -28,12 +28,17 @@ function(cura_add_test) string(REPLACE "|" ":" _PYTHONPATH ${_PYTHONPATH}) endif() - add_test( - NAME ${_NAME} - COMMAND ${PYTHON_EXECUTABLE} -m pytest --junitxml=${CMAKE_BINARY_DIR}/junit-${_NAME}.xml ${_DIRECTORY} - ) - set_tests_properties(${_NAME} PROPERTIES ENVIRONMENT LANG=C) - set_tests_properties(${_NAME} PROPERTIES ENVIRONMENT "PYTHONPATH=${_PYTHONPATH}") + get_test_property(${_NAME} ENVIRONMENT test_exists) #Find out if the test exists by getting a property from it that always exists (such as ENVIRONMENT because we set that ourselves). + if (${test_exists} EQUAL "NOTFOUND") + add_test( + NAME ${_NAME} + COMMAND ${PYTHON_EXECUTABLE} -m pytest --junitxml=${CMAKE_BINARY_DIR}/junit-${_NAME}.xml ${_DIRECTORY} + ) + set_tests_properties(${_NAME} PROPERTIES ENVIRONMENT LANG=C) + set_tests_properties(${_NAME} PROPERTIES ENVIRONMENT "PYTHONPATH=${_PYTHONPATH}") + else() + message(WARNING "Duplicate test ${_NAME}!") + endif() endfunction() cura_add_test(NAME pytest-main DIRECTORY ${CMAKE_SOURCE_DIR}/tests PYTHONPATH "${CMAKE_SOURCE_DIR}|${URANIUM_DIR}") From 8b504c8acc56f7db4e5465c32130e451c24c81a0 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Fri, 29 Dec 2017 14:07:34 +0100 Subject: [PATCH 29/45] Fix scroll position after collapsing category not in focus When collapsing a category, the height of the category is briefly set to 0 and then animated there properly. If the setting list becomes so small then that the scroll bar disappears, the view should automatically get scrolled up. But because the focus changed at the same time it would move the scrollbar such that the category header was in view. This clashed, causing the scroll position to end up not completely at the top even though the scroll bar did disappear. Setting the focus after collapsing the scroll bar prevents this. Contributes to issue CURA-4732 and fixes #2935. --- resources/qml/Settings/SettingCategory.qml | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/resources/qml/Settings/SettingCategory.qml b/resources/qml/Settings/SettingCategory.qml index 53f8f89e15..3ccf668699 100644 --- a/resources/qml/Settings/SettingCategory.qml +++ b/resources/qml/Settings/SettingCategory.qml @@ -1,5 +1,5 @@ -// Copyright (c) 2015 Ultimaker B.V. -// Uranium is released under the terms of the LGPLv3 or higher. +// 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 @@ -31,13 +31,17 @@ Button { onClicked: { - forceActiveFocus(); if(definition.expanded) { settingDefinitionsModel.collapse(definition.key); - } else { + } + else + { settingDefinitionsModel.expandAll(definition.key); } + //Set focus so that tab navigation continues from this point on. + //NB: This must be set AFTER collapsing/expanding the category so that the scroll position is correct. + forceActiveFocus(); } onActiveFocusChanged: { From 1bcdc0357e4d1ad0e1e4d05c39fa56d825c39b5c Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Fri, 29 Dec 2017 14:32:43 +0100 Subject: [PATCH 30/45] If there is no added printer, disallow closing the window The state of having no printer added is very weird to the user. Let's prevent that from happening by accident. Contributes to issue CURA-4736. --- resources/qml/AddMachineDialog.qml | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/resources/qml/AddMachineDialog.qml b/resources/qml/AddMachineDialog.qml index 109ea07695..a635f1f8d1 100644 --- a/resources/qml/AddMachineDialog.qml +++ b/resources/qml/AddMachineDialog.qml @@ -1,4 +1,4 @@ -// Copyright (c) 2016 Ultimaker B.V. +// Copyright (c) 2017 Ultimaker B.V. // Cura is released under the terms of the LGPLv3 or higher. import QtQuick 2.2 @@ -25,6 +25,15 @@ UM.Dialog width: minimumWidth height: minimumHeight + flags: { + var window_flags = Qt.Dialog | Qt.CustomizeWindowHint | Qt.WindowTitleHint; + if (Cura.MachineManager.activeDefinitionId !== "") //Disallow closing the window if we have no active printer yet. You MUST add a printer. + { + window_flags |= Qt.WindowCloseButtonHint; + } + return window_flags; + } + onVisibilityChanged: { // Reset selection and machine name From 4a3109c8852e229a6d3002db0ec0a43388bf41a0 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Fri, 29 Dec 2017 14:47:55 +0100 Subject: [PATCH 31/45] Don't crash when loading model before a printer is loaded The model won't load successfully and you get a message that it failed to load, but Cura won't crash at least. Contributes to issue CURA-4736. --- cura/CuraApplication.py | 2 +- cura/ShapeArray.py | 7 +++---- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/cura/CuraApplication.py b/cura/CuraApplication.py index e90dfd70d3..1dce1039db 100755 --- a/cura/CuraApplication.py +++ b/cura/CuraApplication.py @@ -1387,7 +1387,7 @@ class CuraApplication(QtApplication): if node.callDecoration("isSliceable"): # Only check position if it's not already blatantly obvious that it won't fit. - if node.getBoundingBox().width < self._volume.getBoundingBox().width or node.getBoundingBox().depth < self._volume.getBoundingBox().depth: + if node.getBoundingBox() is None or self._volume.getBoundingBox() is None or node.getBoundingBox().width < self._volume.getBoundingBox().width or node.getBoundingBox().depth < self._volume.getBoundingBox().depth: # Find node location offset_shape_arr, hull_shape_arr = ShapeArray.fromNode(node, min_offset = min_offset) diff --git a/cura/ShapeArray.py b/cura/ShapeArray.py index 73fc2023e3..9232c9f22f 100755 --- a/cura/ShapeArray.py +++ b/cura/ShapeArray.py @@ -43,13 +43,12 @@ class ShapeArray: transform_x = transform._data[0][3] transform_y = transform._data[2][3] hull_verts = node.callDecoration("getConvexHull") + # If a model is too small then it will not contain any points + if hull_verts is None or not hull_verts.getPoints().any(): + return None, None # For one_at_a_time printing you need the convex hull head. hull_head_verts = node.callDecoration("getConvexHullHead") or hull_verts - # If a model is to small then it will not contain any points - if not hull_verts.getPoints().any(): - return None, None - offset_verts = hull_head_verts.getMinkowskiHull(Polygon.approximatedCircle(min_offset)) offset_points = copy.deepcopy(offset_verts._points) # x, y offset_points[:, 0] = numpy.add(offset_points[:, 0], -transform_x) From 719bd5a707cb5e5f944f81d59f0dedc56722816d Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Fri, 29 Dec 2017 18:08:58 +0100 Subject: [PATCH 32/45] Fix slicing non-printable meshes that fall outside of build volume Non-printable meshes don't care whether they are in the build volume or not. Contributes to issue CURA-4734. --- plugins/CuraEngineBackend/StartSliceJob.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/CuraEngineBackend/StartSliceJob.py b/plugins/CuraEngineBackend/StartSliceJob.py index b22e116f95..21b3973bc6 100644 --- a/plugins/CuraEngineBackend/StartSliceJob.py +++ b/plugins/CuraEngineBackend/StartSliceJob.py @@ -143,7 +143,7 @@ class StartSliceJob(Job): if per_object_stack: is_non_printing_mesh = any(per_object_stack.getProperty(key, "value") for key in NON_PRINTING_MESH_SETTINGS) - if not getattr(node, "_outside_buildarea", False): + 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 From 391adbdfb3aae0063ff4f25407122f96761f1251 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torbj=C3=B8rn?= Date: Sat, 30 Dec 2017 02:24:23 +0100 Subject: [PATCH 33/45] Remove ID from definition files --- resources/definitions/builder_premium_large.def.json | 1 - resources/definitions/builder_premium_medium.def.json | 1 - resources/definitions/builder_premium_small.def.json | 1 - resources/definitions/deltacomb.def.json | 1 - 4 files changed, 4 deletions(-) diff --git a/resources/definitions/builder_premium_large.def.json b/resources/definitions/builder_premium_large.def.json index 5fc4b46c98..b496dc524e 100644 --- a/resources/definitions/builder_premium_large.def.json +++ b/resources/definitions/builder_premium_large.def.json @@ -1,5 +1,4 @@ { - "id": "builder_premium_large", "version": 2, "name": "Builder Premium Large", "inherits": "fdmprinter", diff --git a/resources/definitions/builder_premium_medium.def.json b/resources/definitions/builder_premium_medium.def.json index 56dab8f863..fe8a039fc4 100644 --- a/resources/definitions/builder_premium_medium.def.json +++ b/resources/definitions/builder_premium_medium.def.json @@ -1,5 +1,4 @@ { - "id": "builder_premium_medium", "version": 2, "name": "Builder Premium Medium", "inherits": "fdmprinter", diff --git a/resources/definitions/builder_premium_small.def.json b/resources/definitions/builder_premium_small.def.json index 65103ce1af..a1660b63cf 100644 --- a/resources/definitions/builder_premium_small.def.json +++ b/resources/definitions/builder_premium_small.def.json @@ -1,5 +1,4 @@ { - "id": "builder_premium_small", "version": 2, "name": "Builder Premium Small", "inherits": "fdmprinter", diff --git a/resources/definitions/deltacomb.def.json b/resources/definitions/deltacomb.def.json index 031bd12156..7e6e956dbc 100644 --- a/resources/definitions/deltacomb.def.json +++ b/resources/definitions/deltacomb.def.json @@ -1,5 +1,4 @@ { - "id": "deltacomb", "version": 2, "name": "Deltacomb 3D", "inherits": "fdmprinter", From 28919a57a4ab98e13465e8c31158fecc6239a307 Mon Sep 17 00:00:00 2001 From: Ruben D Date: Sat, 30 Dec 2017 16:58:52 +0100 Subject: [PATCH 34/45] Fix testing whether tests exist on older CMake The string equality works on the 3.6 but not on 3.5. This works on 3.5, so I hope it also works on 3.6 (but I don't have that computer with me right now). --- cmake/CuraTests.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/CuraTests.cmake b/cmake/CuraTests.cmake index 3cb5a705b3..f93313e39a 100644 --- a/cmake/CuraTests.cmake +++ b/cmake/CuraTests.cmake @@ -29,7 +29,7 @@ function(cura_add_test) endif() get_test_property(${_NAME} ENVIRONMENT test_exists) #Find out if the test exists by getting a property from it that always exists (such as ENVIRONMENT because we set that ourselves). - if (${test_exists} EQUAL "NOTFOUND") + if (NOT ${test_exists}) add_test( NAME ${_NAME} COMMAND ${PYTHON_EXECUTABLE} -m pytest --junitxml=${CMAKE_BINARY_DIR}/junit-${_NAME}.xml ${_DIRECTORY} From 80ba5fc97dc4e328e1303bc5fd7cd3e337fb0585 Mon Sep 17 00:00:00 2001 From: Ruben D Date: Sat, 30 Dec 2017 17:11:11 +0100 Subject: [PATCH 35/45] Fix PYTHONPATH pass-through This makes sure that any pythonpath on the user's environment is also used for these tests. The same fix as here: https://github.com/Ultimaker/Uranium/commit/31106cd60af774d8cd0ed24e18615a6491212b34 --- cmake/CuraTests.cmake | 2 ++ 1 file changed, 2 insertions(+) diff --git a/cmake/CuraTests.cmake b/cmake/CuraTests.cmake index f93313e39a..ffe4616bf3 100644 --- a/cmake/CuraTests.cmake +++ b/cmake/CuraTests.cmake @@ -24,8 +24,10 @@ function(cura_add_test) if(WIN32) string(REPLACE "|" "\\;" _PYTHONPATH ${_PYTHONPATH}) + set(_PYTHONPATH "${_PYTHONPATH}\\;$ENV{PYTHONPATH}") else() string(REPLACE "|" ":" _PYTHONPATH ${_PYTHONPATH}) + set(_PYTHONPATH "${_PYTHONPATH}:$ENV{PYTHONPATH}") endif() get_test_property(${_NAME} ENVIRONMENT test_exists) #Find out if the test exists by getting a property from it that always exists (such as ENVIRONMENT because we set that ourselves). From 689a18ee5788d46fd0d27a83b3fac242aea6e30b Mon Sep 17 00:00:00 2001 From: Ruben D Date: Sat, 30 Dec 2017 19:35:46 +0100 Subject: [PATCH 36/45] Rename sidebar_collapsed and code style sidebar_collapsed is more consistent with other options and setting names we use. Better change it before the next release rolls out otherwise we'd have to do a version upgrade. Also changed some code style things to be in line with our guidelines. Contributes to issue CURA-4234. --- cura/CuraApplication.py | 2 +- resources/qml/Cura.qml | 7 ++++--- resources/qml/Topbar.qml | 7 +++++-- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/cura/CuraApplication.py b/cura/CuraApplication.py index 1dce1039db..fec5abd871 100755 --- a/cura/CuraApplication.py +++ b/cura/CuraApplication.py @@ -316,7 +316,7 @@ class CuraApplication(QtApplication): preferences.addPreference("cura/material_settings", "{}") preferences.addPreference("view/invert_zoom", False) - preferences.addPreference("cura/sidebar_collapse", False) + preferences.addPreference("cura/sidebar_collapsed", False) self._need_to_show_user_agreement = not Preferences.getInstance().getValue("general/accepted_user_agreement") diff --git a/resources/qml/Cura.qml b/resources/qml/Cura.qml index efe956939b..0f55ad07fa 100644 --- a/resources/qml/Cura.qml +++ b/resources/qml/Cura.qml @@ -401,7 +401,7 @@ UM.MainWindow collapseSidebarAnimation.start(); } collapsed = !collapsed; - UM.Preferences.setValue("cura/sidebar_collapse", collapsed); + UM.Preferences.setValue("cura/sidebar_collapsed", collapsed); } anchors @@ -432,9 +432,10 @@ UM.MainWindow Component.onCompleted: { - var sidebarCollapsed = UM.Preferences.getValue("cura/sidebar_collapse"); + var sidebar_collapsed = UM.Preferences.getValue("cura/sidebar_collapsed"); - if (sidebarCollapsed) { + if (sidebar_collapsed) + { sidebar.collapsed = true; viewportRect = Qt.rect(0, 0, 1, 1.0) collapseSidebarAnimation.start(); diff --git a/resources/qml/Topbar.qml b/resources/qml/Topbar.qml index 9b67856fc8..c016c155a5 100644 --- a/resources/qml/Topbar.qml +++ b/resources/qml/Topbar.qml @@ -25,9 +25,12 @@ Rectangle property int allItemsWidth: 0; function updateMarginsAndSizes() { - if (UM.Preferences.getValue("cura/sidebar_collapse")) { + if (UM.Preferences.getValue("cura/sidebar_collapsed")) + { rightMargin = UM.Theme.getSize("default_margin").width; - } else { + } + else + { rightMargin = UM.Theme.getSize("sidebar").width + UM.Theme.getSize("default_margin").width; } allItemsWidth = ( From a87465186e6ac4622d373112422ccc4bff368b12 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Tue, 2 Jan 2018 08:19:31 +0100 Subject: [PATCH 37/45] Fix off-by-one bug when importing profiles with extruder stacks Since machine_extruders contains only the extruder stacks (not the global stack) but profile_index counts through all stacks including the global stack, we need to increase the length of machine_extruders by 1 when comparing. I also swapped the comparison around since I think it's more logical this way around. Contributes to issue CURA-4738. --- cura/Settings/CuraContainerRegistry.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cura/Settings/CuraContainerRegistry.py b/cura/Settings/CuraContainerRegistry.py index 089d513071..97391bfa0f 100644 --- a/cura/Settings/CuraContainerRegistry.py +++ b/cura/Settings/CuraContainerRegistry.py @@ -224,7 +224,7 @@ class CuraContainerRegistry(ContainerRegistry): # This is assumed to be the global profile profile_id = (global_container_stack.getBottom().getId() + "_" + name_seed).lower().replace(" ", "_") - elif len(machine_extruders) > profile_index: + 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"): From 2e197f0f3480b7ee0ed82ff24d83d8f3803591a2 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Tue, 2 Jan 2018 08:36:46 +0100 Subject: [PATCH 38/45] Move all per-extruder settings Also move things that we didn't think of previously, such as extruder offsets. You can't enter them as a user in the interface if it was single-extrusion, but you could've edited the files. Contributes to issue CURA-4708. --- cura/Settings/CuraContainerRegistry.py | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/cura/Settings/CuraContainerRegistry.py b/cura/Settings/CuraContainerRegistry.py index 7b21332ee4..008f3aa680 100644 --- a/cura/Settings/CuraContainerRegistry.py +++ b/cura/Settings/CuraContainerRegistry.py @@ -443,18 +443,19 @@ class CuraContainerRegistry(ContainerRegistry): definition_changes.addMetaDataEntry("definition", extruder_definition.getId()) # move definition_changes settings if exist - for setting_key in ("machine_nozzle_size", "material_diameter"): - setting_value = machine.definitionChanges.getProperty(setting_key, "value") - if setting_value is not None: - # move it to the extruder stack's definition_changes - setting_definition = machine.getSettingDefinition(setting_key) - new_instance = SettingInstance(setting_definition, definition_changes) - new_instance.setProperty("value", setting_value) - new_instance.resetState() # Ensure that the state is not seen as a user state. - definition_changes.addInstance(new_instance) - definition_changes.setDirty(True) + for setting_key in definition_changes.getAllKeys(): + if machine.definition.getProperty(setting_key, "settable_per_extruder"): + setting_value = machine.definitionChanges.getProperty(setting_key, "value") + if setting_value is not None: + # move it to the extruder stack's definition_changes + setting_definition = machine.getSettingDefinition(setting_key) + new_instance = SettingInstance(setting_definition, definition_changes) + new_instance.setProperty("value", setting_value) + new_instance.resetState() # Ensure that the state is not seen as a user state. + definition_changes.addInstance(new_instance) + definition_changes.setDirty(True) - machine.definitionChanges.removeInstance(setting_key, postpone_emit = True) + machine.definitionChanges.removeInstance(setting_key, postpone_emit = True) self.addContainer(definition_changes) extruder_stack.setDefinitionChanges(definition_changes) From 16dfc094ebd4990fd392e45f3675e4705bd1136c Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Tue, 2 Jan 2018 10:47:19 +0100 Subject: [PATCH 39/45] Fix version upgrade 30 to 31 CURA-4708 A merge mistake. No need to be there. --- .../VersionUpgrade30to31.py | 20 ------------------- 1 file changed, 20 deletions(-) diff --git a/plugins/VersionUpgrade/VersionUpgrade30to31/VersionUpgrade30to31.py b/plugins/VersionUpgrade/VersionUpgrade30to31/VersionUpgrade30to31.py index c87ce91545..8c5a160ff4 100644 --- a/plugins/VersionUpgrade/VersionUpgrade30to31/VersionUpgrade30to31.py +++ b/plugins/VersionUpgrade/VersionUpgrade30to31/VersionUpgrade30to31.py @@ -122,26 +122,6 @@ class VersionUpgrade30to31(VersionUpgrade): if len(all_quality_changes) <= 1 and not parser.has_option("metadata", "extruder"): self._createExtruderQualityChangesForSingleExtrusionMachine(filename, parser) - if parser["metadata"]["type"] == "definition_changes": - if parser["general"]["definition"] == "custom": - - # We are only interested in machine_nozzle_size - if parser.has_option("values", "machine_nozzle_size"): - machine_nozzle_size = parser["values"]["machine_nozzle_size"] - - machine_extruder_count = '1' # by default it is 1 and the value cannot be stored in the global stack - if parser.has_option("values", "machine_extruder_count"): - machine_extruder_count = parser["values"]["machine_extruder_count"] - - if machine_extruder_count == '1': - definition_name = parser["general"]["name"] - machine_extruders = self._getSingleExtrusionMachineExtruders(definition_name) - - # For single extruder machine we need only first extruder - if len(machine_extruders) != 0: - self._updateSingleExtruderDefinitionFile(machine_extruders, machine_nozzle_size) - parser.remove_option("values", "machine_nozzle_size") - # Update version numbers parser["general"]["version"] = "2" parser["metadata"]["setting_version"] = "4" From 2e4ffc83b53ee5275e25c0e0dbe457a8dfcec688 Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Tue, 2 Jan 2018 10:50:06 +0100 Subject: [PATCH 40/45] Add material_diameter to fdmextruder definition CURA-4708 --- resources/definitions/fdmextruder.def.json | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/resources/definitions/fdmextruder.def.json b/resources/definitions/fdmextruder.def.json index 2b314cd6a5..3a59e7df1e 100644 --- a/resources/definitions/fdmextruder.def.json +++ b/resources/definitions/fdmextruder.def.json @@ -181,6 +181,27 @@ } } }, + "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 + } + } + }, "platform_adhesion": { "label": "Build Plate Adhesion", From b246a102ed1332afc52eacadda0f34f610428f05 Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Tue, 2 Jan 2018 12:40:43 +0100 Subject: [PATCH 41/45] Fix MachineSettings dialog CURA-4708 - Move material diameter and nozzle size to extruder tabs - Fix value bindings --- .../MachineSettingsAction.py | 108 ++++++++---------- .../MachineSettingsAction.qml | 58 +++++----- 2 files changed, 77 insertions(+), 89 deletions(-) diff --git a/plugins/MachineSettingsAction/MachineSettingsAction.py b/plugins/MachineSettingsAction/MachineSettingsAction.py index 7b407519e5..aacedbfbdf 100755 --- a/plugins/MachineSettingsAction/MachineSettingsAction.py +++ b/plugins/MachineSettingsAction/MachineSettingsAction.py @@ -7,14 +7,11 @@ from UM.FlameProfiler import pyqtSlot from cura.MachineAction import MachineAction from UM.Application import Application -from UM.Preferences import Preferences -from UM.Settings.InstanceContainer import InstanceContainer 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.CuraApplication import CuraApplication from cura.Settings.ExtruderManager import ExtruderManager from cura.Settings.CuraStackBuilder import CuraStackBuilder @@ -36,7 +33,6 @@ class MachineSettingsAction(MachineAction): self._container_registry.containerAdded.connect(self._onContainerAdded) self._container_registry.containerRemoved.connect(self._onContainerRemoved) Application.getInstance().globalContainerStackChanged.connect(self._onGlobalContainerChanged) - ExtruderManager.getInstance().activeExtruderChanged.connect(self._onActiveExtruderStackChanged) self._empty_container = self._container_registry.getEmptyInstanceContainer() @@ -67,7 +63,9 @@ class MachineSettingsAction(MachineAction): self._global_container_stack, self._global_container_stack.getName() + "_settings") # Notify the UI in which container to store the machine settings data - container_index = self._global_container_stack.getContainerIndex(definition_changes_container) + from cura.Settings.CuraContainerStack import CuraContainerStack, _ContainerIndexes + + container_index = _ContainerIndexes.DefinitionChanges if container_index != self._container_index: self._container_index = container_index self.containerIndexChanged.emit() @@ -82,17 +80,6 @@ class MachineSettingsAction(MachineAction): if self._backend and self._backend.determineAutoSlicing(): self._backend.tickle() - def _onActiveExtruderStackChanged(self): - extruder_container_stack = ExtruderManager.getInstance().getActiveExtruderStack() - if not self._global_container_stack or not extruder_container_stack: - return - - # Make sure there is a definition_changes container to store the machine settings - definition_changes_container = extruder_container_stack.definitionChanges - if definition_changes_container == self._empty_container: - definition_changes_container = CuraStackBuilder.createDefinitionChangesContainer( - extruder_container_stack, extruder_container_stack.getId() + "_settings") - containerIndexChanged = pyqtSignal() @pyqtProperty(int, notify = containerIndexChanged) @@ -217,8 +204,8 @@ class MachineSettingsAction(MachineAction): Application.getInstance().globalContainerStackChanged.emit() - @pyqtSlot() - def updateMaterialForDiameter(self): + @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 @@ -226,24 +213,22 @@ class MachineSettingsAction(MachineAction): if not self._global_container_stack.getMetaDataEntry("has_materials", False): return - material = ExtruderManager.getInstance().getActiveExtruderStack().material - material_diameter = material.getProperty("material_diameter", "value") + 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)) - definition_changes = self._global_container_stack.definitionChanges - machine_diameter = definition_changes.getProperty("material_diameter", "value") + machine_diameter = extruder_stack.definitionChanges.getProperty("material_diameter", "value") if not machine_diameter: - machine_diameter = self._global_container_stack.definition.getProperty("material_diameter", "value") + machine_diameter = extruder_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.") - stacks = ExtruderManager.getInstance().getExtruderStacks() - 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) @@ -251,45 +236,44 @@ class MachineSettingsAction(MachineAction): materials_definition = "fdmprinter" has_material_variants = False - for stack in stacks: - old_material = stack.material - search_criteria = { - "type": "material", - "approximate_diameter": machine_approximate_diameter, - "material": old_material.getMetaDataEntry("material", "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"] = stack.variant.getId() + old_material = extruder_stack.material + search_criteria = { + "type": "material", + "approximate_diameter": machine_approximate_diameter, + "material": old_material.getMetaDataEntry("material", "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("definition", None) - search_criteria["id"] = stack.getMetaDataEntry("preferred_material") + if old_material == self._empty_container: + search_criteria.pop("material", None) + search_criteria.pop("supplier", 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["color_name"] = "Generic" 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["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"] = 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] + 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()) + Logger.log("i", "Selecting new material: %s" % materials[0].getId()) - stack.material = materials[0] + extruder_stack.material = materials[0] diff --git a/plugins/MachineSettingsAction/MachineSettingsAction.qml b/plugins/MachineSettingsAction/MachineSettingsAction.qml index 6ff70a1503..f89ca8473c 100644 --- a/plugins/MachineSettingsAction/MachineSettingsAction.qml +++ b/plugins/MachineSettingsAction/MachineSettingsAction.qml @@ -292,18 +292,6 @@ Cura.MachineAction } } } - - Loader - { - id: materialDiameterField - visible: Cura.MachineManager.hasMaterials - sourceComponent: numericTextFieldWithUnit - property string settingKey: "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.") - property var afterOnEditingFinished: manager.updateMaterialForDiameter - property string label: catalog.i18nc("@label", "Material diameter") - } } } @@ -360,7 +348,6 @@ Cura.MachineAction if(currentIndex > 0) { contentItem.forceActiveFocus(); - Cura.ExtruderManager.setActiveExtruderIndex(currentIndex - 1); } } @@ -397,6 +384,25 @@ Cura.MachineAction property bool isExtruderSetting: true } + Loader + { + id: materialDiameterField + visible: Cura.MachineManager.hasMaterials + sourceComponent: numericTextFieldWithUnit + property string settingKey: "material_diameter" + property string label: catalog.i18nc("@label", "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.") + property var afterOnEditingFinished: + { + if (settingsTabs.currentIndex > 0) + { + manager.updateMaterialForDiameter(settingsTabs.currentIndex - 1); + } + } + property bool isExtruderSetting: true + } + Loader { id: extruderOffsetXField @@ -495,7 +501,7 @@ Cura.MachineAction { if(settingsTabs.currentIndex > 0) { - return Cura.MachineManager.activeStackId; + return Cura.ExtruderManager.extruderIds[String(settingsTabs.currentIndex - 1)]; } return ""; } @@ -513,11 +519,11 @@ Cura.MachineAction checked: String(propertyProvider.properties.value).toLowerCase() != 'false' onClicked: { - propertyProvider.setPropertyValue("value", checked); - if(_forceUpdateOnChange) - { - manager.forceUpdate(); - } + propertyProvider.setPropertyValue("value", checked); + if(_forceUpdateOnChange) + { + manager.forceUpdate(); + } } } } @@ -548,7 +554,7 @@ Cura.MachineAction { if(settingsTabs.currentIndex > 0) { - return Cura.MachineManager.activeStackId; + return Cura.ExtruderManager.extruderIds[String(settingsTabs.currentIndex - 1)]; } return ""; } @@ -581,7 +587,10 @@ Cura.MachineAction TextField { id: textField - text: (propertyProvider.properties.value) ? propertyProvider.properties.value : "" + text: { + const value = propertyProvider.properties.value; + return value ? value : ""; + } validator: RegExpValidator { regExp: _allowNegative ? /-?[0-9\.]{0,6}/ : /[0-9\.]{0,6}/ } onEditingFinished: { @@ -590,12 +599,7 @@ Cura.MachineAction propertyProvider.setPropertyValue("value", text); if(_forceUpdateOnChange) { - var extruderIndex = Cura.ExtruderManager.activeExtruderIndex; manager.forceUpdate(); - if(Cura.ExtruderManager.activeExtruderIndex != extruderIndex) - { - Cura.ExtruderManager.setActiveExtruderIndex(extruderIndex) - } } if(_afterOnEditingFinished) { @@ -641,7 +645,7 @@ Cura.MachineAction { if(settingsTabs.currentIndex > 0) { - return Cura.MachineManager.activeStackId; + return Cura.ExtruderManager.extruderIds[String(settingsTabs.currentIndex - 1)]; } return ""; } From 1aebe32ba6cf94d7a5df650a1845d103ee57e832 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Tue, 2 Jan 2018 16:16:33 +0100 Subject: [PATCH 42/45] Fix winding order of left endpoint triangles Otherwise the left side is invisible due to backface culling. --- plugins/SimulationView/layers3d.shader | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/plugins/SimulationView/layers3d.shader b/plugins/SimulationView/layers3d.shader index 86a88fab83..95dc604389 100644 --- a/plugins/SimulationView/layers3d.shader +++ b/plugins/SimulationView/layers3d.shader @@ -187,7 +187,7 @@ geometry41core = myEmitVertex(v_vertex[1], v_color[1], g_vertex_normal_vert, u_viewProjectionMatrix * (gl_in[1].gl_Position - g_vertex_offset_horz + g_vertex_offset_vert)); myEmitVertex(v_vertex[1], v_color[1], g_vertex_normal_vert, u_viewProjectionMatrix * (gl_in[1].gl_Position + g_vertex_offset_horz + g_vertex_offset_vert)); myEmitVertex(v_vertex[1], v_color[1], g_vertex_normal_vert, u_viewProjectionMatrix * (gl_in[1].gl_Position - g_vertex_offset_horz_head + g_vertex_offset_vert)); - //And reverse so that the line is also visible from the back side. + //And reverse so that the line is also visible from the back side. myEmitVertex(v_vertex[1], v_color[1], g_vertex_normal_vert, u_viewProjectionMatrix * (gl_in[1].gl_Position + g_vertex_offset_horz + g_vertex_offset_vert)); myEmitVertex(v_vertex[1], v_color[1], g_vertex_normal_vert, u_viewProjectionMatrix * (gl_in[1].gl_Position - g_vertex_offset_horz + g_vertex_offset_vert)); myEmitVertex(v_vertex[0], v_color[0], g_vertex_normal_vert, u_viewProjectionMatrix * (gl_in[0].gl_Position + g_vertex_offset_horz + g_vertex_offset_vert)); @@ -212,17 +212,17 @@ geometry41core = EndPrimitive(); // left side - myEmitVertex(v_vertex[0], v_color[0], g_vertex_normal_horz, u_viewProjectionMatrix * (gl_in[0].gl_Position + g_vertex_offset_horz)); + myEmitVertex(v_vertex[0], v_color[0], -g_vertex_normal_horz, u_viewProjectionMatrix * (gl_in[0].gl_Position - g_vertex_offset_horz)); myEmitVertex(v_vertex[0], v_color[0], g_vertex_normal_vert, u_viewProjectionMatrix * (gl_in[0].gl_Position + g_vertex_offset_vert)); myEmitVertex(v_vertex[0], v_color[0], g_vertex_normal_horz_head, u_viewProjectionMatrix * (gl_in[0].gl_Position + g_vertex_offset_horz_head)); - myEmitVertex(v_vertex[0], v_color[0], -g_vertex_normal_horz, u_viewProjectionMatrix * (gl_in[0].gl_Position - g_vertex_offset_horz)); + myEmitVertex(v_vertex[0], v_color[0], g_vertex_normal_horz, u_viewProjectionMatrix * (gl_in[0].gl_Position + g_vertex_offset_horz)); EndPrimitive(); - myEmitVertex(v_vertex[0], v_color[0], -g_vertex_normal_horz, u_viewProjectionMatrix * (gl_in[0].gl_Position - g_vertex_offset_horz)); + myEmitVertex(v_vertex[0], v_color[0], g_vertex_normal_horz, u_viewProjectionMatrix * (gl_in[0].gl_Position + g_vertex_offset_horz)); myEmitVertex(v_vertex[0], v_color[0], -g_vertex_normal_vert, u_viewProjectionMatrix * (gl_in[0].gl_Position - g_vertex_offset_vert)); myEmitVertex(v_vertex[0], v_color[0], g_vertex_normal_horz_head, u_viewProjectionMatrix * (gl_in[0].gl_Position + g_vertex_offset_horz_head)); - myEmitVertex(v_vertex[0], v_color[0], g_vertex_normal_horz, u_viewProjectionMatrix * (gl_in[0].gl_Position + g_vertex_offset_horz)); + myEmitVertex(v_vertex[0], v_color[0], -g_vertex_normal_horz, u_viewProjectionMatrix * (gl_in[0].gl_Position - g_vertex_offset_horz)); EndPrimitive(); From 43db2ee2f91242f7801521695ca1537413640dc7 Mon Sep 17 00:00:00 2001 From: Aleksei S Date: Wed, 3 Jan 2018 10:34:23 +0100 Subject: [PATCH 43/45] Added ElideRight for the text which is out of boundaries CURA-4692 --- resources/qml/SidebarSimple.qml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/resources/qml/SidebarSimple.qml b/resources/qml/SidebarSimple.qml index 62cf6f9d34..7aca25160a 100644 --- a/resources/qml/SidebarSimple.qml +++ b/resources/qml/SidebarSimple.qml @@ -340,6 +340,8 @@ 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) + elide: Text.ElideRight } Label From f6168c07f09a8d76e290b3616de15d077c9b1ef7 Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Wed, 3 Jan 2018 11:26:57 +0100 Subject: [PATCH 44/45] Fix material_diameter bindings for metarial menu and page CURA-4708 --- resources/qml/Menus/MaterialMenu.qml | 9 +++++---- resources/qml/Preferences/MaterialsPage.qml | 3 ++- resources/qml/Settings/SettingView.qml | 2 +- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/resources/qml/Menus/MaterialMenu.qml b/resources/qml/Menus/MaterialMenu.qml index c1a1eea7a7..983d2f1b92 100644 --- a/resources/qml/Menus/MaterialMenu.qml +++ b/resources/qml/Menus/MaterialMenu.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.2 @@ -33,9 +33,10 @@ Menu { id: materialDiameterProvider - containerStackId: Cura.MachineManager.activeMachineId + containerStackId: Cura.ExtruderManager.activeExtruderStackId key: "material_diameter" watchedProperties: [ "value" ] + storeIndex: 5 } MenuItem @@ -207,8 +208,8 @@ Menu // Add to top section var materialId = items[i].id; genericMaterialsModel.append({ - id:materialId, - name:items[i].name + id: materialId, + name: items[i].name }); } else diff --git a/resources/qml/Preferences/MaterialsPage.qml b/resources/qml/Preferences/MaterialsPage.qml index c33cdbfc89..81c1bd711a 100644 --- a/resources/qml/Preferences/MaterialsPage.qml +++ b/resources/qml/Preferences/MaterialsPage.qml @@ -387,9 +387,10 @@ UM.ManagementPage { id: materialDiameterProvider - containerStackId: Cura.MachineManager.activeMachineId + containerStackId: Cura.ExtruderManager.activeExtruderStackId key: "material_diameter" watchedProperties: [ "value" ] + storeIndex: 5 } UM.I18nCatalog { id: catalog; name: "cura"; } diff --git a/resources/qml/Settings/SettingView.qml b/resources/qml/Settings/SettingView.qml index 5d39572647..1d4e1016bc 100644 --- a/resources/qml/Settings/SettingView.qml +++ b/resources/qml/Settings/SettingView.qml @@ -372,7 +372,7 @@ Item { id: provider - containerStackId: Cura.MachineManager.activeMachineId + containerStackId: Cura.ExtruderManager.activeExtruderStackId key: model.key ? model.key : "" watchedProperties: [ "value", "enabled", "state", "validationState", "settable_per_extruder", "resolve" ] storeIndex: 0 From 6997c2d2dce03f0b85f17e1a3ef18ce319047ecd Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Wed, 3 Jan 2018 11:58:14 +0100 Subject: [PATCH 45/45] Add timeout for Jenkinsfile --- Jenkinsfile | 70 +++++++++++++++++++++++++++-------------------------- 1 file changed, 36 insertions(+), 34 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 6408cbf9b2..20c7303719 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -1,45 +1,47 @@ -parallel_nodes(['linux && cura', 'windows && cura']) { - // Prepare building - stage('Prepare') { - // Ensure we start with a clean build directory. - step([$class: 'WsCleanup']) +timeout(time: 2, unit: "HOURS") { + parallel_nodes(['linux && cura', 'windows && cura']) { + // Prepare building + stage('Prepare') { + // Ensure we start with a clean build directory. + step([$class: 'WsCleanup']) - // Checkout whatever sources are linked to this pipeline. - checkout scm - } + // Checkout whatever sources are linked to this pipeline. + checkout scm + } - // If any error occurs during building, we want to catch it and continue with the "finale" stage. - catchError { - // Building and testing should happen in a subdirectory. - dir('build') { - // Perform the "build". Since Uranium is Python code, this basically only ensures CMake is setup. - stage('Build') { - def branch = env.BRANCH_NAME - if(!fileExists("${env.CURA_ENVIRONMENT_PATH}/${branch}")) { - branch = "master" + // If any error occurs during building, we want to catch it and continue with the "finale" stage. + catchError { + // Building and testing should happen in a subdirectory. + dir('build') { + // Perform the "build". Since Uranium is Python code, this basically only ensures CMake is setup. + stage('Build') { + def branch = env.BRANCH_NAME + if(!fileExists("${env.CURA_ENVIRONMENT_PATH}/${branch}")) { + branch = "master" + } + + // Ensure CMake is setup. Note that since this is Python code we do not really "build" it. + def uranium_dir = get_workspace_dir("Ultimaker/Uranium/${branch}") + cmake("..", "-DCMAKE_PREFIX_PATH=\"${env.CURA_ENVIRONMENT_PATH}/${branch}\" -DCMAKE_BUILD_TYPE=Release -DURANIUM_DIR=\"${uranium_dir}\"") } - // Ensure CMake is setup. Note that since this is Python code we do not really "build" it. - def uranium_dir = get_workspace_dir("Ultimaker/Uranium/${branch}") - cmake("..", "-DCMAKE_PREFIX_PATH=\"${env.CURA_ENVIRONMENT_PATH}/${branch}\" -DCMAKE_BUILD_TYPE=Release -DURANIUM_DIR=\"${uranium_dir}\"") - } - - // Try and run the unit tests. If this stage fails, we consider the build to be "unstable". - stage('Unit Test') { - try { - make('test') - } catch(e) { - currentBuild.result = "UNSTABLE" + // Try and run the unit tests. If this stage fails, we consider the build to be "unstable". + stage('Unit Test') { + try { + make('test') + } catch(e) { + currentBuild.result = "UNSTABLE" + } } } } - } - // Perform any post-build actions like notification and publishing of unit tests. - stage('Finalize') { - // Publish the test results to Jenkins. - junit allowEmptyResults: true, testResults: 'build/junit*.xml' + // Perform any post-build actions like notification and publishing of unit tests. + stage('Finalize') { + // Publish the test results to Jenkins. + junit allowEmptyResults: true, testResults: 'build/junit*.xml' - notify_build_result(env.CURA_EMAIL_RECIPIENTS, '#cura-dev', ['master', '2.']) + notify_build_result(env.CURA_EMAIL_RECIPIENTS, '#cura-dev', ['master', '2.']) + } } }