From 5b368fbfd5e8c588b6679c62fb81f20a47052489 Mon Sep 17 00:00:00 2001 From: Jack Ha Date: Mon, 6 Nov 2017 09:25:42 +0100 Subject: [PATCH 001/102] CURA-4104 added first sucky build plate selection options --- cura/BuildPlateModel.py | 2 + cura/CuraActions.py | 43 +++++++++++++++++++ cura/CuraApplication.py | 36 +++++++++++++++- .../SetBuildPlateNumberOperation.py | 27 ++++++++++++ cura/Scene/BuildPlateDecorator.py | 34 +++++++++++++++ resources/qml/Menus/ContextMenu.qml | 20 +++++++++ resources/qml/Menus/ViewMenu.qml | 19 ++++++++ 7 files changed, 179 insertions(+), 2 deletions(-) create mode 100644 cura/BuildPlateModel.py create mode 100644 cura/Operations/SetBuildPlateNumberOperation.py create mode 100644 cura/Scene/BuildPlateDecorator.py diff --git a/cura/BuildPlateModel.py b/cura/BuildPlateModel.py new file mode 100644 index 0000000000..139597f9cb --- /dev/null +++ b/cura/BuildPlateModel.py @@ -0,0 +1,2 @@ + + diff --git a/cura/CuraActions.py b/cura/CuraActions.py index b51728f028..663da3ec09 100644 --- a/cura/CuraActions.py +++ b/cura/CuraActions.py @@ -19,6 +19,11 @@ from cura.MultiplyObjectsJob import MultiplyObjectsJob from cura.Settings.SetObjectExtruderOperation import SetObjectExtruderOperation from cura.Settings.ExtruderManager import ExtruderManager +from cura.Operations.SetBuildPlateNumberOperation import SetBuildPlateNumberOperation + +from UM.Logger import Logger + + class CuraActions(QObject): def __init__(self, parent = None): super().__init__(parent) @@ -124,5 +129,43 @@ class CuraActions(QObject): operation.addOperation(SetObjectExtruderOperation(node, extruder_id)) operation.push() + @pyqtSlot(int) + def setBuildPlateForSelection(self, build_plate_nr: int) -> None: + Logger.log("d", "Setting build plate number... %d" % build_plate_nr) + operation = GroupedOperation() + + nodes_to_change = [] + for node in Selection.getAllSelectedObjects(): + # Do not change any nodes that already have the right extruder set. + if node.callDecoration("getBuildPlateNumber") == build_plate_nr: + continue + + # If the node is a group, apply the active extruder to all children of the group. + if node.callDecoration("isGroup"): + for grouped_node in BreadthFirstIterator(node): + if grouped_node.callDecoration("getBuildPlateNumber") == build_plate_nr: + continue + + if grouped_node.callDecoration("isGroup"): + continue + + nodes_to_change.append(grouped_node) + continue + + nodes_to_change.append(node) + + if not nodes_to_change: + Logger.log("d", "Nothing to change.") + # If there are no changes to make, we still need to reset the selected extruders. + # This is a workaround for checked menu items being deselected while still being + # selected. + #ExtruderManager.getInstance().resetSelectedObjectExtruders() + return + + Logger.log("d", "Yes: %s", nodes_to_change) + for node in nodes_to_change: + operation.addOperation(SetBuildPlateNumberOperation(node, build_plate_nr)) + operation.push() + def _openUrl(self, url): QDesktopServices.openUrl(url) diff --git a/cura/CuraApplication.py b/cura/CuraApplication.py index b09371ae0d..ff8dfd021a 100755 --- a/cura/CuraApplication.py +++ b/cura/CuraApplication.py @@ -1,4 +1,5 @@ # Copyright (c) 2017 Ultimaker B.V. +# Copyright (c) 2017 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. from PyQt5.QtNetwork import QLocalServer @@ -53,6 +54,9 @@ from cura.Settings.SettingInheritanceManager import SettingInheritanceManager from cura.Settings.UserProfilesModel import UserProfilesModel from cura.Settings.SimpleModeSettingsManager import SimpleModeSettingsManager +# research +from cura.Scene.BuildPlateDecorator import BuildPlateDecorator + from . import PlatformPhysics from . import BuildVolume from . import CameraAnimation @@ -376,6 +380,10 @@ class CuraApplication(QtApplication): self._plugin_registry.addSupportedPluginExtension("curaplugin", "Cura Plugin") + # research + self._num_build_plates = 1 # default + self._active_build_plate = 1 + def _onEngineCreated(self): self._engine.addImageProvider("camera", CameraImageProvider.CameraImageProvider()) @@ -855,6 +863,8 @@ class CuraApplication(QtApplication): activityChanged = pyqtSignal() sceneBoundingBoxChanged = pyqtSignal() preferredOutputMimetypeChanged = pyqtSignal() + numBuildPlatesChanged = pyqtSignal() + activeBuildPlateChanged = pyqtSignal() @pyqtProperty(bool, notify = activityChanged) def platformActivity(self): @@ -1025,7 +1035,7 @@ class CuraApplication(QtApplication): op.push() Selection.clear() - ## Reset all translation on nodes with mesh data. + ## Reset all translation on nodes with mesh data. @pyqtSlot() def resetAllTranslation(self): Logger.log("i", "Resetting all scene translations") @@ -1150,7 +1160,7 @@ class CuraApplication(QtApplication): job.start() else: Logger.log("w", "Unable to reload data because we don't have a filename.") - + ## Get logging data of the backend engine # \returns \type{string} Logging data @pyqtSlot(result = str) @@ -1373,6 +1383,7 @@ class CuraApplication(QtApplication): for node in nodes: node.setSelectable(True) node.setName(os.path.basename(filename)) + node.addDecorator(BuildPlateDecorator()) extension = os.path.splitext(filename)[1] if extension.lower() in self._non_sliceable_extensions: @@ -1445,3 +1456,24 @@ class CuraApplication(QtApplication): node = node.getParent() Selection.add(node) + + #### research - hacky place for these kind of thing + @pyqtSlot(int) + def setActiveBuildPlate(self, nr): + Logger.log("d", "Select build plate: %s" % nr) + self._active_build_plate = nr + self.activeBuildPlateChanged.emit() + + @pyqtSlot() + def newBuildPlate(self): + Logger.log("d", "New build plate") + self._num_build_plates += 1 + self.numBuildPlatesChanged.emit() + + @pyqtProperty(int, notify = numBuildPlatesChanged) + def numBuildPlates(self): + return self._num_build_plates + + @pyqtProperty(int, notify = activeBuildPlateChanged) + def activeBuildPlate(self): + return self._active_build_plate diff --git a/cura/Operations/SetBuildPlateNumberOperation.py b/cura/Operations/SetBuildPlateNumberOperation.py new file mode 100644 index 0000000000..bbef4caf84 --- /dev/null +++ b/cura/Operations/SetBuildPlateNumberOperation.py @@ -0,0 +1,27 @@ +# Copyright (c) 2017 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +from UM.Scene.SceneNode import SceneNode +from UM.Operations.Operation import Operation + +from cura.Settings.SettingOverrideDecorator import SettingOverrideDecorator + +## Simple operation to set the extruder a certain object should be printed with. +class SetBuildPlateNumberOperation(Operation): + def __init__(self, node: SceneNode, build_plate_nr: int) -> None: + self._node = node + self._build_plate_nr = build_plate_nr + self._previous_build_plate_nr = None + self._decorator_added = False + + def undo(self): + if self._previous_build_plate_nr: + self._node.callDecoration("setBuildPlateNumber", self._previous_build_plate_nr) + + def redo(self): + stack = self._node.callDecoration("getStack") #Don't try to get the active extruder since it may be None anyway. + if not stack: + self._node.addDecorator(SettingOverrideDecorator()) + + self._previous_build_plate_nr = self._node.callDecoration("getBuildPlateNumber") + self._node.callDecoration("setBuildPlateNumber", self._build_plate_nr) diff --git a/cura/Scene/BuildPlateDecorator.py b/cura/Scene/BuildPlateDecorator.py new file mode 100644 index 0000000000..8d91f9e90a --- /dev/null +++ b/cura/Scene/BuildPlateDecorator.py @@ -0,0 +1,34 @@ +from UM.Scene.SceneNodeDecorator import SceneNodeDecorator +from UM.Scene.Selection import Selection + + +class BuildPlateDecorator(SceneNodeDecorator): + def __init__(self): + super().__init__() + self._build_plate_number = -1 + + def setBuildPlateNumber(self, nr): + self._build_plate_number = nr + # self.getNode().childrenChanged.connect(self._onChildrenChanged) + + def getBuildPlateNumber(self): + return self._build_plate_number + + # def setNode(self, node): + # super().setNode(node) + # self.getNode().childrenChanged.connect(self._onChildrenChanged) + + # def _onChildrenChanged(self, node): + # if not self.getNode().hasChildren(): + # # A group that no longer has children may remove itself from the scene + # self._old_parent = self.getNode().getParent() + # self.getNode().setParent(None) + # Selection.remove(self.getNode()) + # else: + # # A group that has removed itself from the scene because it had no children may add itself back to the scene when a child is added to it + # if not self.getNode().getParent() and self._old_parent: + # self.getNode().setParent(self._old_parent) + # self._old_parent = None + + def __deepcopy__(self, memo): + return BuildPlateDecorator() diff --git a/resources/qml/Menus/ContextMenu.qml b/resources/qml/Menus/ContextMenu.qml index 39d497722f..175410773e 100644 --- a/resources/qml/Menus/ContextMenu.qml +++ b/resources/qml/Menus/ContextMenu.qml @@ -39,6 +39,26 @@ Menu onObjectRemoved: base.removeItem(object) } + MenuSeparator {} + MenuItem { + text: "build plate 0"; + onTriggered: CuraActions.setBuildPlateForSelection(0); + checkable: true + checked: false + } + MenuItem { + text: "build plate 1"; + onTriggered: CuraActions.setBuildPlateForSelection(1); + checkable: true + checked: false + } + MenuItem { + text: "build plate 2"; + onTriggered: CuraActions.setBuildPlateForSelection(2); + checkable: true + checked: false + } + // Global actions MenuSeparator {} MenuItem { action: Cura.Actions.selectAll; } diff --git a/resources/qml/Menus/ViewMenu.qml b/resources/qml/Menus/ViewMenu.qml index bb5999edb9..3c5485da32 100644 --- a/resources/qml/Menus/ViewMenu.qml +++ b/resources/qml/Menus/ViewMenu.qml @@ -28,6 +28,25 @@ Menu } ExclusiveGroup { id: group; } + MenuSeparator {} + MenuItem { + text: "build plate 0"; + onTriggered: CuraApplication.setActiveBuildPlate(0); + } + MenuItem { + text: "build plate 1"; + onTriggered: CuraApplication.setActiveBuildPlate(1); + } + MenuItem { + text: "build plate 2"; + onTriggered: CuraApplication.setActiveBuildPlate(2); + } + ExclusiveGroup { id: buildPlateGroup; } + + MenuItem { + text: "New build plate"; + onTriggered: CuraApplication.newBuildPlate(); + } MenuSeparator {} MenuItem { action: Cura.Actions.homeCamera; } } From 5050124699fa50501916fe7319417e480efd3a94 Mon Sep 17 00:00:00 2001 From: Jack Ha Date: Mon, 6 Nov 2017 14:02:22 +0100 Subject: [PATCH 002/102] CURA-4525 wip objects menu --- cura/CuraApplication.py | 4 + plugins/CuraEngineBackend/StartSliceJob.py | 10 ++- plugins/SolidView/SolidView.py | 3 +- resources/qml/Cura.qml | 41 +++++++++- resources/qml/ObjectsList.qml | 88 ++++++++++++++++++++++ resources/themes/cura-light/theme.json | 4 +- 6 files changed, 144 insertions(+), 6 deletions(-) create mode 100644 resources/qml/ObjectsList.qml diff --git a/cura/CuraApplication.py b/cura/CuraApplication.py index ff8dfd021a..5111b9b52a 100755 --- a/cura/CuraApplication.py +++ b/cura/CuraApplication.py @@ -292,6 +292,8 @@ class CuraApplication(QtApplication): preferences.addPreference("metadata/setting_version", 0) preferences.setValue("metadata/setting_version", self.SettingVersion) #Don't make it equal to the default so that the setting version always gets written to the file. + preferences.addPreference("view/build_plate_number", 0) + preferences.addPreference("cura/active_mode", "simple") preferences.addPreference("cura/categories_expanded", "") @@ -1462,6 +1464,8 @@ class CuraApplication(QtApplication): def setActiveBuildPlate(self, nr): Logger.log("d", "Select build plate: %s" % nr) self._active_build_plate = nr + Preferences.setValue("view/build_plate_number", self._active_build_plate) + self.activeBuildPlateChanged.emit() @pyqtSlot() diff --git a/plugins/CuraEngineBackend/StartSliceJob.py b/plugins/CuraEngineBackend/StartSliceJob.py index a53daa4e63..607914f5c5 100644 --- a/plugins/CuraEngineBackend/StartSliceJob.py +++ b/plugins/CuraEngineBackend/StartSliceJob.py @@ -140,9 +140,13 @@ class StartSliceJob(Job): temp_list = [] for node in DepthFirstIterator(self._scene.getRoot()): if type(node) is SceneNode and node.getMeshData() and node.getMeshData().getVertices() is not None: - if not getattr(node, "_outside_buildarea", False)\ - or (node.callDecoration("getStack") and any(node.callDecoration("getStack").getProperty(setting, "value") for setting in self._not_printed_mesh_settings)): - temp_list.append(node) + + # temp hack to filter on build plate 0 + if (node.callDecoration("getBuildPlateNumber") == 0): + + if not getattr(node, "_outside_buildarea", False)\ + or (node.callDecoration("getStack") and any(node.callDecoration("getStack").getProperty(setting, "value") for setting in self._not_printed_mesh_settings)): + temp_list.append(node) Job.yieldThread() if temp_list: diff --git a/plugins/SolidView/SolidView.py b/plugins/SolidView/SolidView.py index 8f0c9a4dc1..625223a097 100644 --- a/plugins/SolidView/SolidView.py +++ b/plugins/SolidView/SolidView.py @@ -71,10 +71,11 @@ class SolidView(View): else: self._enabled_shader.setUniformValue("u_overhangAngle", math.cos(math.radians(0))) + activeBuildPlateNumber = Preferences.getInstance().getValue("view/build_plate_number") or 0 for node in DepthFirstIterator(scene.getRoot()): if not node.render(renderer): - if node.getMeshData() and node.isVisible(): + if node.getMeshData() and node.isVisible() and (node.callDecoration("getBuildPlateNumber") == activeBuildPlateNumber): uniforms = {} shade_factor = 1.0 diff --git a/resources/qml/Cura.qml b/resources/qml/Cura.qml index 2fd19a8a03..03d0ce9ecd 100644 --- a/resources/qml/Cura.qml +++ b/resources/qml/Cura.qml @@ -340,6 +340,22 @@ UM.MainWindow action: Cura.Actions.open; } + Button + { + id: objectsButton; + text: catalog.i18nc("@action:button","Objects"); + iconSource: UM.Theme.getIcon("load") + style: UM.Theme.styles.tool_button + tooltip: ''; + anchors + { + top: openFileButton.bottom; + topMargin: UM.Theme.getSize("default_margin").height; + left: parent.left; + } + action: triggerObjectsList; + } + Toolbar { id: toolbar; @@ -348,7 +364,7 @@ UM.MainWindow property int mouseY: base.mouseY anchors { - top: openFileButton.bottom; + top: objectsButton.bottom; topMargin: UM.Theme.getSize("window_margin").height; left: parent.left; } @@ -380,6 +396,29 @@ UM.MainWindow monitoringPrint: base.showPrintMonitor } + Action + { + id: triggerObjectsList; + text: catalog.i18nc("@action:inmenu menubar:file","&Open File(s)..."); + iconName: "document-open"; + shortcut: StandardKey.Open; + onTriggered: objectsList.visible = !objectsList.visible; + } + + ObjectsList + { + id: objectsList; + visible: false; + anchors + { + top: objectsButton.top; + left: objectsButton.right; + leftMargin: UM.Theme.getSize("default_margin").width; + rightMargin: UM.Theme.getSize("default_margin").width; + } + + } + Rectangle { id: viewportOverlay diff --git a/resources/qml/ObjectsList.qml b/resources/qml/ObjectsList.qml new file mode 100644 index 0000000000..105bdb957b --- /dev/null +++ b/resources/qml/ObjectsList.qml @@ -0,0 +1,88 @@ +// Copyright (c) 2017 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.2 +import QtQuick.Controls 1.1 +import QtQuick.Controls.Styles 1.1 +import QtQuick.Layouts 1.1 +import QtQuick.Dialogs 1.1 + +import UM 1.3 as UM +import Cura 1.0 as Cura + +import "Menus" + +Rectangle +{ + id: base; + + color: UM.Theme.getColor("tool_panel_background") + + width: UM.Theme.getSize("objects_menu_size").width + height: UM.Theme.getSize("objects_menu_size").height + + Button + { + id: openFileButton; + text: catalog.i18nc("@action:button","Open File"); + iconSource: UM.Theme.getIcon("load") + style: UM.Theme.styles.tool_button + tooltip: ''; + anchors + { + top: parent.top; + topMargin: UM.Theme.getSize("default_margin").height; + left: parent.left; + leftMargin: UM.Theme.getSize("default_margin").height; + } + action: Cura.Actions.open; + } + + ListModel + { + id: objectsListModel; + + ListElement { + name: "Apple" + cost: 2.45 + } + ListElement { + name: "Orange" + cost: 3.25 + } + ListElement { + name: "Banana" + cost: 1.95 + } + } + + Component { + id: objectDelegate + Rectangle { + height: 30 + + Text { + text: name + color: red + } + //Text { text: '$' + cost } + } + } + + ListView + { + model: objectsListModel; + anchors + { + top: openFileButton.bottom; + topMargin: UM.Theme.getSize("default_margin").height; + left: parent.left; + leftMargin: UM.Theme.getSize("default_margin").height; + } + width: parent.width - 2 * UM.Theme.getSize("default_margin").height + height: 100 + + delegate: objectDelegate + } + +} diff --git a/resources/themes/cura-light/theme.json b/resources/themes/cura-light/theme.json index b41ea96846..315b29bec0 100644 --- a/resources/themes/cura-light/theme.json +++ b/resources/themes/cura-light/theme.json @@ -374,6 +374,8 @@ "infill_button_margin": [0.5, 0.5], - "jobspecs_line": [2.0, 2.0] + "jobspecs_line": [2.0, 2.0], + + "objects_menu_size": [20, 30] } } From 38670171f5063a0aa525117955da39135bca2a20 Mon Sep 17 00:00:00 2001 From: Jack Ha Date: Tue, 7 Nov 2017 14:52:22 +0100 Subject: [PATCH 003/102] CURA-4525 party working objects list and build plates --- cura/CuraActions.py | 5 - cura/CuraApplication.py | 17 ++- cura/ObjectManager.py | 68 ++++++++++ cura/Scene/BuildPlateDecorator.py | 17 --- plugins/SolidView/SolidView.py | 2 +- resources/qml/ObjectsList.qml | 201 +++++++++++++++++++++++++----- 6 files changed, 252 insertions(+), 58 deletions(-) create mode 100644 cura/ObjectManager.py diff --git a/cura/CuraActions.py b/cura/CuraActions.py index 663da3ec09..c313488cac 100644 --- a/cura/CuraActions.py +++ b/cura/CuraActions.py @@ -156,13 +156,8 @@ class CuraActions(QObject): if not nodes_to_change: Logger.log("d", "Nothing to change.") - # If there are no changes to make, we still need to reset the selected extruders. - # This is a workaround for checked menu items being deselected while still being - # selected. - #ExtruderManager.getInstance().resetSelectedObjectExtruders() return - Logger.log("d", "Yes: %s", nodes_to_change) for node in nodes_to_change: operation.addOperation(SetBuildPlateNumberOperation(node, build_plate_nr)) operation.push() diff --git a/cura/CuraApplication.py b/cura/CuraApplication.py index 5111b9b52a..7a6994e83e 100755 --- a/cura/CuraApplication.py +++ b/cura/CuraApplication.py @@ -79,6 +79,8 @@ from cura.Settings.ContainerManager import ContainerManager from cura.Settings.GlobalStack import GlobalStack from cura.Settings.ExtruderStack import ExtruderStack +from cura.ObjectManager import ObjectManager + from PyQt5.QtCore import QUrl, pyqtSignal, pyqtProperty, QEvent, Q_ENUMS from UM.FlameProfiler import pyqtSlot from PyQt5.QtGui import QColor, QIcon @@ -205,6 +207,7 @@ class CuraApplication(QtApplication): self._machine_action_manager = MachineActionManager.MachineActionManager() self._machine_manager = None # This is initialized on demand. self._material_manager = None + self._object_manager = None self._setting_inheritance_manager = None self._simple_mode_settings_manager = None @@ -292,8 +295,6 @@ class CuraApplication(QtApplication): preferences.addPreference("metadata/setting_version", 0) preferences.setValue("metadata/setting_version", self.SettingVersion) #Don't make it equal to the default so that the setting version always gets written to the file. - preferences.addPreference("view/build_plate_number", 0) - preferences.addPreference("cura/active_mode", "simple") preferences.addPreference("cura/categories_expanded", "") @@ -384,7 +385,7 @@ class CuraApplication(QtApplication): # research self._num_build_plates = 1 # default - self._active_build_plate = 1 + self._active_build_plate = 0 def _onEngineCreated(self): self._engine.addImageProvider("camera", CameraImageProvider.CameraImageProvider()) @@ -717,6 +718,9 @@ class CuraApplication(QtApplication): qmlRegisterSingletonType(SimpleModeSettingsManager, "Cura", 1, 2, "SimpleModeSettingsManager", self.getSimpleModeSettingsManager) + Logger.log("d", " #### going to register object manager") + qmlRegisterSingletonType(ObjectManager, "Cura", 1, 2, "ObjectManager", self.getObjectManager) + qmlRegisterSingletonType(MachineActionManager.MachineActionManager, "Cura", 1, 0, "MachineActionManager", self.getMachineActionManager) self.setMainQml(Resources.getPath(self.ResourceTypes.QmlFiles, "Cura.qml")) self._qml_import_paths.append(Resources.getPath(self.ResourceTypes.QmlFiles)) @@ -744,6 +748,11 @@ class CuraApplication(QtApplication): self._material_manager = MaterialManager.createMaterialManager() return self._material_manager + def getObjectManager(self, *args): + if self._object_manager is None: + self._object_manager = ObjectManager.createObjectManager() + return self._object_manager + def getSettingInheritanceManager(self, *args): if self._setting_inheritance_manager is None: self._setting_inheritance_manager = SettingInheritanceManager.createSettingInheritanceManager() @@ -799,6 +808,7 @@ class CuraApplication(QtApplication): qmlRegisterType(QualitySettingsModel, "Cura", 1, 0, "QualitySettingsModel") qmlRegisterType(MachineNameValidator, "Cura", 1, 0, "MachineNameValidator") qmlRegisterType(UserChangesModel, "Cura", 1, 1, "UserChangesModel") + # qmlRegisterSingletonType(ObjectManager, "Cura", 1, 0, "ObjectManager", ObjectManager.createObjectManager) qmlRegisterSingletonType(ContainerManager, "Cura", 1, 0, "ContainerManager", ContainerManager.createContainerManager) @@ -1464,7 +1474,6 @@ class CuraApplication(QtApplication): def setActiveBuildPlate(self, nr): Logger.log("d", "Select build plate: %s" % nr) self._active_build_plate = nr - Preferences.setValue("view/build_plate_number", self._active_build_plate) self.activeBuildPlateChanged.emit() diff --git a/cura/ObjectManager.py b/cura/ObjectManager.py new file mode 100644 index 0000000000..fc6d343252 --- /dev/null +++ b/cura/ObjectManager.py @@ -0,0 +1,68 @@ +from UM.Logger import Logger +from PyQt5.QtCore import pyqtSignal, pyqtProperty, pyqtSlot +from UM.Application import Application +from UM.Qt.ListModel import ListModel +from UM.Scene.Iterator.DepthFirstIterator import DepthFirstIterator +from UM.Scene.SceneNode import SceneNode +from UM.Scene.Selection import Selection +from PyQt5.QtCore import Qt +from PyQt5.QtWidgets import QApplication + + +class ObjectManager(ListModel): + def __init__(self): + super().__init__() + self._last_selected_index = 0 + Application.getInstance().getController().getScene().sceneChanged.connect(self._update) + + def _update(self, *args): + nodes = [] + for node in DepthFirstIterator(Application.getInstance().getController().getScene().getRoot()): + if type(node) is not SceneNode or (not node.getMeshData() and not node.callDecoration("getLayerData")): + continue + nodes.append({ + "name": node.getName(), + "isSelected": Selection.isSelected(node), + "buildPlateNumber": node.callDecoration("getBuildPlateNumber"), + "node": node + }) + nodes = sorted(nodes, key=lambda n: n["name"]) + self.setItems(nodes) + + self.itemsChanged.emit() + + ## Either select or deselect an item + @pyqtSlot(int) + def changeSelection(self, index): + modifiers = QApplication.keyboardModifiers() + ctrl_is_active = modifiers & Qt.ControlModifier + shift_is_active = modifiers & Qt.ShiftModifier + + if ctrl_is_active: + item = self.getItem(index) + node = item["node"] + if Selection.isSelected(node): + Selection.remove(node) + else: + Selection.add(node) + elif shift_is_active: + polarity = 1 if index + 1 > self._last_selected_index else -1 + for i in range(self._last_selected_index, index + polarity, polarity): + item = self.getItem(i) + node = item["node"] + Selection.add(node) + else: + # Single select + item = self.getItem(index) + node = item["node"] + Selection.clear() + Selection.add(node) + build_plate_number = node.callDecoration("getBuildPlateNumber") + if build_plate_number is not None and build_plate_number != -1: + Application.getInstance().setActiveBuildPlate(build_plate_number) + + self._last_selected_index = index + + @staticmethod + def createObjectManager(): + return ObjectManager() diff --git a/cura/Scene/BuildPlateDecorator.py b/cura/Scene/BuildPlateDecorator.py index 8d91f9e90a..2125d731de 100644 --- a/cura/Scene/BuildPlateDecorator.py +++ b/cura/Scene/BuildPlateDecorator.py @@ -9,26 +9,9 @@ class BuildPlateDecorator(SceneNodeDecorator): def setBuildPlateNumber(self, nr): self._build_plate_number = nr - # self.getNode().childrenChanged.connect(self._onChildrenChanged) def getBuildPlateNumber(self): return self._build_plate_number - # def setNode(self, node): - # super().setNode(node) - # self.getNode().childrenChanged.connect(self._onChildrenChanged) - - # def _onChildrenChanged(self, node): - # if not self.getNode().hasChildren(): - # # A group that no longer has children may remove itself from the scene - # self._old_parent = self.getNode().getParent() - # self.getNode().setParent(None) - # Selection.remove(self.getNode()) - # else: - # # A group that has removed itself from the scene because it had no children may add itself back to the scene when a child is added to it - # if not self.getNode().getParent() and self._old_parent: - # self.getNode().setParent(self._old_parent) - # self._old_parent = None - def __deepcopy__(self, memo): return BuildPlateDecorator() diff --git a/plugins/SolidView/SolidView.py b/plugins/SolidView/SolidView.py index 625223a097..d37fbb7c9d 100644 --- a/plugins/SolidView/SolidView.py +++ b/plugins/SolidView/SolidView.py @@ -71,7 +71,7 @@ class SolidView(View): else: self._enabled_shader.setUniformValue("u_overhangAngle", math.cos(math.radians(0))) - activeBuildPlateNumber = Preferences.getInstance().getValue("view/build_plate_number") or 0 + activeBuildPlateNumber = Application.getInstance().activeBuildPlate for node in DepthFirstIterator(scene.getRoot()): if not node.render(renderer): diff --git a/resources/qml/ObjectsList.qml b/resources/qml/ObjectsList.qml index 105bdb957b..758fa59488 100644 --- a/resources/qml/ObjectsList.qml +++ b/resources/qml/ObjectsList.qml @@ -8,7 +8,7 @@ import QtQuick.Layouts 1.1 import QtQuick.Dialogs 1.1 import UM 1.3 as UM -import Cura 1.0 as Cura +import Cura 1.2 as Cura import "Menus" @@ -21,6 +21,8 @@ Rectangle width: UM.Theme.getSize("objects_menu_size").width height: UM.Theme.getSize("objects_menu_size").height + SystemPalette { id: palette } + Button { id: openFileButton; @@ -38,51 +40,188 @@ Rectangle action: Cura.Actions.open; } - ListModel - { - id: objectsListModel; - - ListElement { - name: "Apple" - cost: 2.45 - } - ListElement { - name: "Orange" - cost: 3.25 - } - ListElement { - name: "Banana" - cost: 1.95 - } - } - Component { id: objectDelegate - Rectangle { - height: 30 + Rectangle + { + height: childrenRect.height + color: Cura.ObjectManager.getItem(index).isSelected ? palette.highlight : index % 2 ? palette.base : palette.alternateBase + width: parent.width + Label + { + id: nodeNameLabel + anchors.left: parent.left + anchors.leftMargin: UM.Theme.getSize("default_margin").width + //anchors.right: parent.right + width: parent.width - 2 * UM.Theme.getSize("default_margin").width - 30 + text: Cura.ObjectManager.getItem(index).name; + color: Cura.ObjectManager.getItem(index).isSelected ? palette.highlightedText : palette.text + elide: Text.ElideRight + } - Text { - text: name - color: red + Label + { + id: buildPlateNumberLabel + width: 20 + anchors.left: nodeNameLabel.right + anchors.leftMargin: UM.Theme.getSize("default_margin").width + anchors.right: parent.right + text: Cura.ObjectManager.getItem(index).buildPlateNumber; + color: Cura.ObjectManager.getItem(index).isSelected ? palette.highlightedText : palette.text + elide: Text.ElideRight + } + + MouseArea + { + anchors.fill: parent; + onClicked: + { + Cura.ObjectManager.changeSelection(index); + } + } } - //Text { text: '$' + cost } - } } - ListView + // list all the scene nodes + ScrollView { - model: objectsListModel; + id: objectsList + frameVisible: true + width: parent.width - 2 * UM.Theme.getSize("default_margin").height + anchors { top: openFileButton.bottom; topMargin: UM.Theme.getSize("default_margin").height; left: parent.left; leftMargin: UM.Theme.getSize("default_margin").height; + bottom: buildPlateSelection.top; + bottomMargin: UM.Theme.getSize("default_margin").height; } - width: parent.width - 2 * UM.Theme.getSize("default_margin").height - height: 100 - delegate: objectDelegate + Rectangle + { + parent: viewport + anchors.fill: parent + color: palette.light + } + + ListView + { + id: listview + model: Cura.ObjectManager + //model: objectsListModel + + onModelChanged: + { + //currentIndex = -1; + } + width: parent.width + currentIndex: -1 + onCurrentIndexChanged: + { + //base.selectedPrinter = listview.model[currentIndex]; + // Only allow connecting if the printer has responded to API query since the last refresh + //base.completeProperties = base.selectedPrinter != null && base.selectedPrinter.getProperty("incomplete") != "true"; + } + //Component.onCompleted: manager.startDiscovery() + delegate: objectDelegate + } + } + + ListModel + { + id: buildPlatesModel + + ListElement + { + name: "build plate 0" + buildPlateNumber: 0 + } + ListElement + { + name: "build plate 1" + buildPlateNumber: 1 + } + ListElement + { + name: "build plate 2" + buildPlateNumber: 2 + } + } + + Component { + id: buildPlateDelegate + Rectangle + { + height: childrenRect.height + color: CuraApplication.activeBuildPlate == buildPlateNumber ? palette.highlight : index % 2 ? palette.base : palette.alternateBase + width: parent.width + Label + { + anchors.left: parent.left + anchors.leftMargin: UM.Theme.getSize("default_margin").width + anchors.right: parent.right + text: name //Cura.ObjectManager.getItem(index).name; + color: CuraApplication.activeBuildPlate == buildPlateNumber ? palette.highlightedText : palette.text + elide: Text.ElideRight + } + + MouseArea + { + anchors.fill: parent; + onClicked: + { + CuraApplication.setActiveBuildPlate(buildPlateNumber); + } + } + } + } + + ScrollView + { + id: buildPlateSelection + frameVisible: true + height: 100 + width: parent.width - 2 * UM.Theme.getSize("default_margin").height + + anchors + { + // top: objectsList.bottom; + topMargin: UM.Theme.getSize("default_margin").height; + left: parent.left; + leftMargin: UM.Theme.getSize("default_margin").height; + bottom: parent.bottom; + bottomMargin: UM.Theme.getSize("default_margin").height; + } + + Rectangle + { + parent: viewport + anchors.fill: parent + color: palette.light + } + + ListView + { + id: buildPlateListView + model: buildPlatesModel + + onModelChanged: + { + //currentIndex = -1; + } + width: parent.width + currentIndex: -1 + onCurrentIndexChanged: + { + //base.selectedPrinter = listview.model[currentIndex]; + // Only allow connecting if the printer has responded to API query since the last refresh + //base.completeProperties = base.selectedPrinter != null && base.selectedPrinter.getProperty("incomplete") != "true"; + } + //Component.onCompleted: manager.startDiscovery() + delegate: buildPlateDelegate + } } } From 41d5ec86a305d4fc0d5f85e159631d4936032b93 Mon Sep 17 00:00:00 2001 From: Jack Ha Date: Wed, 8 Nov 2017 14:07:40 +0100 Subject: [PATCH 004/102] CURA-4525 updated scene node menu and added multi buildplate arrange --- cura/Arrange.py | 20 ++- cura/ArrangeObjectsAllBuildPlatesJob.py | 159 ++++++++++++++++++++++++ cura/CuraActions.py | 23 ++-- cura/CuraApplication.py | 28 ++++- cura/MultiplyObjectsJob.py | 5 + cura/Scene/BuildPlateDecorator.py | 12 +- resources/qml/Actions.qml | 9 ++ resources/qml/ObjectsList.qml | 58 ++++++--- resources/themes/cura-light/theme.json | 2 +- 9 files changed, 272 insertions(+), 44 deletions(-) create mode 100644 cura/ArrangeObjectsAllBuildPlatesJob.py diff --git a/cura/Arrange.py b/cura/Arrange.py index 0d1f2e0c06..305729d763 100755 --- a/cura/Arrange.py +++ b/cura/Arrange.py @@ -30,6 +30,7 @@ class Arrange: self._offset_x = offset_x self._offset_y = offset_y self._last_priority = 0 + self._is_empty = True ## Helper to create an Arranger instance # @@ -38,8 +39,8 @@ class Arrange: # \param scene_root Root for finding all scene nodes # \param fixed_nodes Scene nodes to be placed @classmethod - def create(cls, scene_root = None, fixed_nodes = None, scale = 0.5): - arranger = Arrange(220, 220, 110, 110, scale = scale) + def create(cls, scene_root = None, fixed_nodes = None, scale = 0.5, x = 220, y = 220): + arranger = Arrange(x, y, x / 2, y / 2, scale = scale) arranger.centerFirst() if fixed_nodes is None: @@ -62,7 +63,7 @@ class Arrange: for area in disallowed_areas: points = copy.deepcopy(area._points) shape_arr = ShapeArray.fromPolygon(points, scale = scale) - arranger.place(0, 0, shape_arr) + arranger.place(0, 0, shape_arr, update_empty = False) return arranger ## Find placement for a node (using offset shape) and place it (using hull shape) @@ -166,7 +167,7 @@ class Arrange: # \param x x-coordinate # \param y y-coordinate # \param shape_arr ShapeArray object - def place(self, x, y, shape_arr): + def place(self, x, y, shape_arr, update_empty = True): x = int(self._scale * x) y = int(self._scale * y) offset_x = x + self._offset_x + shape_arr.offset_x @@ -179,10 +180,17 @@ class Arrange: max_y = min(max(offset_y + shape_arr.arr.shape[0], 0), shape_y - 1) occupied_slice = self._occupied[min_y:max_y, min_x:max_x] # we use a slice of shape because it can be out of bounds - occupied_slice[numpy.where(shape_arr.arr[ - min_y - offset_y:max_y - offset_y, min_x - offset_x:max_x - offset_x] == 1)] = 1 + new_occupied = numpy.where(shape_arr.arr[ + min_y - offset_y:max_y - offset_y, min_x - offset_x:max_x - offset_x] == 1) + if update_empty and new_occupied: + self._is_empty = False + occupied_slice[new_occupied] = 1 # Set priority to low (= high number), so it won't get picked at trying out. prio_slice = self._priority[min_y:max_y, min_x:max_x] prio_slice[numpy.where(shape_arr.arr[ min_y - offset_y:max_y - offset_y, min_x - offset_x:max_x - offset_x] == 1)] = 999 + + @property + def isEmpty(self): + return self._is_empty diff --git a/cura/ArrangeObjectsAllBuildPlatesJob.py b/cura/ArrangeObjectsAllBuildPlatesJob.py new file mode 100644 index 0000000000..eacd18d5ad --- /dev/null +++ b/cura/ArrangeObjectsAllBuildPlatesJob.py @@ -0,0 +1,159 @@ +# Copyright (c) 2017 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +from UM.Job import Job +from UM.Scene.SceneNode import SceneNode +from UM.Math.Vector import Vector +from UM.Operations.SetTransformOperation import SetTransformOperation +from UM.Operations.TranslateOperation import TranslateOperation +from UM.Operations.GroupedOperation import GroupedOperation +from UM.Logger import Logger +from UM.Message import Message +from UM.i18n import i18nCatalog +i18n_catalog = i18nCatalog("cura") + +from cura.ZOffsetDecorator import ZOffsetDecorator +from cura.Arrange import Arrange +from cura.ShapeArray import ShapeArray + +from typing import List + + +class ArrangeArray: + def __init__(self, x, y, fixed_nodes): + self._x = x + self._y = y + self._fixed_nodes = fixed_nodes + self._count = 0 + self._first_empty = None + self._has_empty = False + self._arrange = [] + + def _update_first_empty(self): + for i, a in enumerate(self._arrange): + if a.isEmpty: + self._first_empty = i + self._has_empty = True + + Logger.log("d", "lala %s %s", self._first_empty, self._has_empty) + return + self._first_empty = None + self._has_empty = False + + def add(self): + new_arrange = Arrange.create(x = self._x, y = self._y, fixed_nodes = self._fixed_nodes) + self._arrange.append(new_arrange) + self._count += 1 + self._update_first_empty() + + def count(self): + return self._count + + def get(self, index): + return self._arrange[index] + + def getFirstEmpty(self): + if not self._is_empty: + self.add() + return self._arrange[self._first_empty] + + +class ArrangeObjectsAllBuildPlatesJob(Job): + def __init__(self, nodes: List[SceneNode], min_offset = 8): + super().__init__() + self._nodes = nodes + self._min_offset = min_offset + + def run(self): + status_message = Message(i18n_catalog.i18nc("@info:status", "Finding new location for objects"), + lifetime = 0, + dismissable=False, + progress = 0, + title = i18n_catalog.i18nc("@info:title", "Finding Location")) + status_message.show() + + + # Collect nodes to be placed + nodes_arr = [] # fill with (size, node, offset_shape_arr, hull_shape_arr) + for node in self._nodes: + offset_shape_arr, hull_shape_arr = ShapeArray.fromNode(node, min_offset = self._min_offset) + nodes_arr.append((offset_shape_arr.arr.shape[0] * offset_shape_arr.arr.shape[1], node, offset_shape_arr, hull_shape_arr)) + + # Sort the nodes with the biggest area first. + nodes_arr.sort(key=lambda item: item[0]) + nodes_arr.reverse() + + x, y = 200, 200 + + arrange_array = ArrangeArray(x = x, y = y, fixed_nodes = []) + arrange_array.add() + + # Place nodes one at a time + start_priority = 0 + grouped_operation = GroupedOperation() + found_solution_for_all = True + left_over_nodes = [] # nodes that do not fit on an empty build plate + + for idx, (size, node, offset_shape_arr, hull_shape_arr) in enumerate(nodes_arr): + # For performance reasons, we assume that when a location does not fit, + # it will also not fit for the next object (while what can be untrue). + # We also skip possibilities by slicing through the possibilities (step = 10) + + try_placement = True + + current_build_plate_number = 0 # always start with the first one + + # # Only for first build plate + # if last_size == size and last_build_plate_number == current_build_plate_number: + # # This optimization works if many of the objects have the same size + # # Continue with same build plate number + # start_priority = last_priority + # else: + # start_priority = 0 + + while try_placement: + Logger.log("d", "start_priority %s", start_priority) + # make sure that current_build_plate_number is not going crazy or you'll have a lot of arrange objects + while current_build_plate_number >= arrange_array.count(): + arrange_array.add() + arranger = arrange_array.get(current_build_plate_number) + + best_spot = arranger.bestSpot(offset_shape_arr, start_prio=start_priority, step=10) + x, y = best_spot.x, best_spot.y + node.removeDecorator(ZOffsetDecorator) + if node.getBoundingBox(): + center_y = node.getWorldPosition().y - node.getBoundingBox().bottom + else: + center_y = 0 + if x is not None: # We could find a place + arranger.place(x, y, hull_shape_arr) # place the object in the arranger + + node.callDecoration("setBuildPlateNumber", current_build_plate_number) + grouped_operation.addOperation(TranslateOperation(node, Vector(x, center_y, y), set_position = True)) + try_placement = False + else: + # very naive, because we skip to the next build plate if one model doesn't fit. + if arranger.isEmpty: + # apparently we can never place this object + left_over_nodes.append(node) + try_placement = False + else: + # try next build plate + current_build_plate_number += 1 + try_placement = True + + status_message.setProgress((idx + 1) / len(nodes_arr) * 100) + Job.yieldThread() + + for node in left_over_nodes: + node.callDecoration("setBuildPlateNumber", -1) # these are not on any build plate + found_solution_for_all = False + + grouped_operation.push() + + status_message.hide() + + if not found_solution_for_all: + no_full_solution_message = Message(i18n_catalog.i18nc("@info:status", "Unable to find a location within the build volume for all objects"), + title = i18n_catalog.i18nc("@info:title", "Can't Find Location")) + no_full_solution_message.show() diff --git a/cura/CuraActions.py b/cura/CuraActions.py index c313488cac..dbcd31f646 100644 --- a/cura/CuraActions.py +++ b/cura/CuraActions.py @@ -134,25 +134,16 @@ class CuraActions(QObject): Logger.log("d", "Setting build plate number... %d" % build_plate_nr) operation = GroupedOperation() + root = Application.getInstance().getController().getScene().getRoot() + nodes_to_change = [] for node in Selection.getAllSelectedObjects(): - # Do not change any nodes that already have the right extruder set. - if node.callDecoration("getBuildPlateNumber") == build_plate_nr: - continue + parent_node = node # Find the parent node to change instead + while parent_node.getParent() != root: + parent_node = parent_node.getParent() - # If the node is a group, apply the active extruder to all children of the group. - if node.callDecoration("isGroup"): - for grouped_node in BreadthFirstIterator(node): - if grouped_node.callDecoration("getBuildPlateNumber") == build_plate_nr: - continue - - if grouped_node.callDecoration("isGroup"): - continue - - nodes_to_change.append(grouped_node) - continue - - nodes_to_change.append(node) + for single_node in BreadthFirstIterator(parent_node): + nodes_to_change.append(single_node) if not nodes_to_change: Logger.log("d", "Nothing to change.") diff --git a/cura/CuraApplication.py b/cura/CuraApplication.py index 7a6994e83e..39e4b38824 100755 --- a/cura/CuraApplication.py +++ b/cura/CuraApplication.py @@ -39,8 +39,11 @@ from cura.ConvexHullDecorator import ConvexHullDecorator from cura.SetParentOperation import SetParentOperation from cura.SliceableObjectDecorator import SliceableObjectDecorator from cura.BlockSlicingDecorator import BlockSlicingDecorator +# research +from cura.Scene.BuildPlateDecorator import BuildPlateDecorator from cura.ArrangeObjectsJob import ArrangeObjectsJob +from cura.ArrangeObjectsAllBuildPlatesJob import ArrangeObjectsAllBuildPlatesJob from cura.MultiplyObjectsJob import MultiplyObjectsJob from UM.Settings.SettingDefinition import SettingDefinition, DefinitionPropertyType @@ -54,8 +57,6 @@ from cura.Settings.SettingInheritanceManager import SettingInheritanceManager from cura.Settings.UserProfilesModel import UserProfilesModel from cura.Settings.SimpleModeSettingsManager import SimpleModeSettingsManager -# research -from cura.Scene.BuildPlateDecorator import BuildPlateDecorator from . import PlatformPhysics from . import BuildVolume @@ -1105,7 +1106,7 @@ class CuraApplication(QtApplication): ## Arrange all objects. @pyqtSlot() - def arrangeAll(self): + def arrangeObjectsToAllBuildPlates(self): nodes = [] for node in DepthFirstIterator(self.getController().getScene().getRoot()): if type(node) is not SceneNode: @@ -1119,6 +1120,26 @@ class CuraApplication(QtApplication): # Skip nodes that are too big if node.getBoundingBox().width < self._volume.getBoundingBox().width or node.getBoundingBox().depth < self._volume.getBoundingBox().depth: nodes.append(node) + job = ArrangeObjectsAllBuildPlatesJob(nodes) + job.start() + + # Single build plate + @pyqtSlot() + def arrangeAll(self): + nodes = [] + for node in DepthFirstIterator(self.getController().getScene().getRoot()): + if type(node) is not SceneNode: + continue + if not node.getMeshData() and not node.callDecoration("isGroup"): + continue # Node that doesnt have a mesh and is not a group. + if node.getParent() and node.getParent().callDecoration("isGroup"): + continue # Grouped nodes don't need resetting as their parent (the group) is resetted) + if not node.isSelectable(): + continue # i.e. node with layer data + if node.callDecoration("getBuildPlateNumber") == self._active_build_plate: + # Skip nodes that are too big + if node.getBoundingBox().width < self._volume.getBoundingBox().width or node.getBoundingBox().depth < self._volume.getBoundingBox().depth: + nodes.append(node) self.arrange(nodes, fixed_nodes = []) ## Arrange Selection @@ -1250,6 +1271,7 @@ class CuraApplication(QtApplication): group_decorator = GroupDecorator() group_node.addDecorator(group_decorator) group_node.addDecorator(ConvexHullDecorator()) + group_node.addDecorator(BuildPlateDecorator(self.activeBuildPlate)) group_node.setParent(self.getController().getScene().getRoot()) group_node.setSelectable(True) center = Selection.getSelectionCenter() diff --git a/cura/MultiplyObjectsJob.py b/cura/MultiplyObjectsJob.py index 721c0e4c07..63a38993a2 100644 --- a/cura/MultiplyObjectsJob.py +++ b/cura/MultiplyObjectsJob.py @@ -13,6 +13,7 @@ from UM.i18n import i18nCatalog i18n_catalog = i18nCatalog("cura") from cura.ZOffsetDecorator import ZOffsetDecorator +from cura.Scene.BuildPlateDecorator import BuildPlateDecorator from cura.Arrange import Arrange from cura.ShapeArray import ShapeArray @@ -65,6 +66,10 @@ class MultiplyObjectsJob(Job): new_location = new_location.set(z = 100 - i * 20) node.setPosition(new_location) + # Same build plate + build_plate_number = current_node.callDecoration("getBuildPlateNumber") + node.callDecoration("setBuildPlateNumber", build_plate_number) + nodes.append(node) current_progress += 1 status_message.setProgress((current_progress / total_progress) * 100) diff --git a/cura/Scene/BuildPlateDecorator.py b/cura/Scene/BuildPlateDecorator.py index 2125d731de..b0a14e41f4 100644 --- a/cura/Scene/BuildPlateDecorator.py +++ b/cura/Scene/BuildPlateDecorator.py @@ -1,14 +1,20 @@ from UM.Scene.SceneNodeDecorator import SceneNodeDecorator -from UM.Scene.Selection import Selection +from UM.Application import Application +from UM.Logger import Logger class BuildPlateDecorator(SceneNodeDecorator): - def __init__(self): + def __init__(self, build_plate_number = -1): super().__init__() - self._build_plate_number = -1 + self.setBuildPlateNumber(build_plate_number) def setBuildPlateNumber(self, nr): + # Make sure that groups are set correctly + # setBuildPlateForSelection in CuraActions makes sure that no single childs are set. self._build_plate_number = nr + if self._node and self._node.callDecoration("isGroup"): + for child in self._node.getChildren(): + child.callDecoration("setBuildPlateNumber", nr) def getBuildPlateNumber(self): return self._build_plate_number diff --git a/resources/qml/Actions.qml b/resources/qml/Actions.qml index cc27520a02..89ec2cf70d 100644 --- a/resources/qml/Actions.qml +++ b/resources/qml/Actions.qml @@ -35,6 +35,7 @@ Item property alias selectAll: selectAllAction; property alias deleteAll: deleteAllAction; property alias reloadAll: reloadAllAction; + property alias arrangeAllBuildPlates: arrangeAllBuildPlatesAction; property alias arrangeAll: arrangeAllAction; property alias arrangeSelection: arrangeSelectionAction; property alias resetAllTranslation: resetAllTranslationAction; @@ -300,6 +301,14 @@ Item onTriggered: CuraApplication.reloadAll(); } + Action + { + id: arrangeAllBuildPlatesAction; + text: ""; + iconName: "document-open"; + onTriggered: CuraApplication.arrangeObjectsToAllBuildPlates(); + } + Action { id: arrangeAllAction; diff --git a/resources/qml/ObjectsList.qml b/resources/qml/ObjectsList.qml index 758fa59488..4a7c84c41e 100644 --- a/resources/qml/ObjectsList.qml +++ b/resources/qml/ObjectsList.qml @@ -110,21 +110,7 @@ Rectangle { id: listview model: Cura.ObjectManager - //model: objectsListModel - - onModelChanged: - { - //currentIndex = -1; - } width: parent.width - currentIndex: -1 - onCurrentIndexChanged: - { - //base.selectedPrinter = listview.model[currentIndex]; - // Only allow connecting if the printer has responded to API query since the last refresh - //base.completeProperties = base.selectedPrinter != null && base.selectedPrinter.getProperty("incomplete") != "true"; - } - //Component.onCompleted: manager.startDiscovery() delegate: objectDelegate } } @@ -191,7 +177,7 @@ Rectangle topMargin: UM.Theme.getSize("default_margin").height; left: parent.left; leftMargin: UM.Theme.getSize("default_margin").height; - bottom: parent.bottom; + bottom: arrangeAllBuildPlatesButton.top; bottomMargin: UM.Theme.getSize("default_margin").height; } @@ -224,4 +210,46 @@ Rectangle } } + Button + { + id: arrangeAllBuildPlatesButton; + text: catalog.i18nc("@action:button","Arrange to all build plates"); + //iconSource: UM.Theme.getIcon("load") + //style: UM.Theme.styles.tool_button + height: 25 + tooltip: ''; + anchors + { + //top: buildPlateSelection.bottom; + topMargin: UM.Theme.getSize("default_margin").height; + left: parent.left; + leftMargin: UM.Theme.getSize("default_margin").height; + right: parent.right; + rightMargin: UM.Theme.getSize("default_margin").height; + bottom: arrangeBuildPlateButton.top; + bottomMargin: UM.Theme.getSize("default_margin").height; + } + action: Cura.Actions.arrangeAllBuildPlates; + } + + Button + { + id: arrangeBuildPlateButton; + text: catalog.i18nc("@action:button","Arrange current build plate"); + height: 25 + tooltip: ''; + anchors + { + topMargin: UM.Theme.getSize("default_margin").height; + left: parent.left; + leftMargin: UM.Theme.getSize("default_margin").height; + right: parent.right; + rightMargin: UM.Theme.getSize("default_margin").height; + bottom: parent.bottom; + bottomMargin: UM.Theme.getSize("default_margin").height; + } + action: Cura.Actions.arrangeAll; + } + + } diff --git a/resources/themes/cura-light/theme.json b/resources/themes/cura-light/theme.json index 315b29bec0..e78cd27cee 100644 --- a/resources/themes/cura-light/theme.json +++ b/resources/themes/cura-light/theme.json @@ -376,6 +376,6 @@ "jobspecs_line": [2.0, 2.0], - "objects_menu_size": [20, 30] + "objects_menu_size": [20, 40] } } From e21acd1a07da8bd40031c0039dc5abc831f276ec Mon Sep 17 00:00:00 2001 From: Jack Ha Date: Thu, 9 Nov 2017 17:03:20 +0100 Subject: [PATCH 005/102] CURA-4525 first multi slice + multi layer data, added filter on build plate, added option arrange on load, visuals like convex hull are now correct --- cura/Arrange.py | 2 +- cura/ArrangeObjectsAllBuildPlatesJob.py | 1 - cura/ConvexHullNode.py | 3 +- cura/CuraApplication.py | 105 +++--- cura/ObjectManager.py | 29 +- cura/Scene/BuildPlateDecorator.py | 7 + cura/Scene/CuraSceneNode.py | 40 +++ plugins/3MFReader/ThreeMFReader.py | 3 +- .../CuraEngineBackend/CuraEngineBackend.py | 140 +++++--- .../ProcessSlicedLayersJob.py | 27 +- plugins/CuraEngineBackend/StartSliceJob.py | 19 +- plugins/ImageReader/ImageReader.py | 4 +- plugins/LayerView/LayerPass.py | 3 +- plugins/SolidView/SolidView.py | 2 +- plugins/X3DReader/X3DReader.py | 303 +++++++++--------- resources/qml/Cura.qml | 1 + resources/qml/ObjectsList.qml | 23 +- resources/qml/Preferences/GeneralPage.qml | 16 +- 18 files changed, 468 insertions(+), 260 deletions(-) create mode 100644 cura/Scene/CuraSceneNode.py diff --git a/cura/Arrange.py b/cura/Arrange.py index 305729d763..2f77ec9a7f 100755 --- a/cura/Arrange.py +++ b/cura/Arrange.py @@ -40,7 +40,7 @@ class Arrange: # \param fixed_nodes Scene nodes to be placed @classmethod def create(cls, scene_root = None, fixed_nodes = None, scale = 0.5, x = 220, y = 220): - arranger = Arrange(x, y, x / 2, y / 2, scale = scale) + arranger = Arrange(x, y, x // 2, y // 2, scale = scale) arranger.centerFirst() if fixed_nodes is None: diff --git a/cura/ArrangeObjectsAllBuildPlatesJob.py b/cura/ArrangeObjectsAllBuildPlatesJob.py index eacd18d5ad..7991ac39f0 100644 --- a/cura/ArrangeObjectsAllBuildPlatesJob.py +++ b/cura/ArrangeObjectsAllBuildPlatesJob.py @@ -112,7 +112,6 @@ class ArrangeObjectsAllBuildPlatesJob(Job): # start_priority = 0 while try_placement: - Logger.log("d", "start_priority %s", start_priority) # make sure that current_build_plate_number is not going crazy or you'll have a lot of arrange objects while current_build_plate_number >= arrange_array.count(): arrange_array.add() diff --git a/cura/ConvexHullNode.py b/cura/ConvexHullNode.py index cc4720c197..c6ff80670d 100644 --- a/cura/ConvexHullNode.py +++ b/cura/ConvexHullNode.py @@ -6,7 +6,6 @@ from UM.Scene.SceneNode import SceneNode from UM.Resources import Resources from UM.Math.Color import Color from UM.Mesh.MeshBuilder import MeshBuilder # To create a mesh to display the convex hull with. - from UM.View.GL.OpenGL import OpenGL @@ -65,7 +64,7 @@ class ConvexHullNode(SceneNode): ConvexHullNode.shader.setUniformValue("u_diffuseColor", self._color) ConvexHullNode.shader.setUniformValue("u_opacity", 0.6) - if self.getParent(): + if self.getParent() and self.getParent().callDecoration("getBuildPlateNumber") == Application.getInstance().activeBuildPlate: if self.getMeshData(): renderer.queueNode(self, transparent = True, shader = ConvexHullNode.shader, backface_cull = True, sort = -8) if self._convex_hull_head_mesh: diff --git a/cura/CuraApplication.py b/cura/CuraApplication.py index 39e4b38824..c1c894c735 100755 --- a/cura/CuraApplication.py +++ b/cura/CuraApplication.py @@ -33,6 +33,7 @@ from UM.Operations.AddSceneNodeOperation import AddSceneNodeOperation from UM.Operations.RemoveSceneNodeOperation import RemoveSceneNodeOperation from UM.Operations.GroupedOperation import GroupedOperation from UM.Operations.SetTransformOperation import SetTransformOperation + from cura.Arrange import Arrange from cura.ShapeArray import ShapeArray from cura.ConvexHullDecorator import ConvexHullDecorator @@ -41,6 +42,7 @@ from cura.SliceableObjectDecorator import SliceableObjectDecorator from cura.BlockSlicingDecorator import BlockSlicingDecorator # research from cura.Scene.BuildPlateDecorator import BuildPlateDecorator +from cura.Scene.CuraSceneNode import CuraSceneNode from cura.ArrangeObjectsJob import ArrangeObjectsJob from cura.ArrangeObjectsAllBuildPlatesJob import ArrangeObjectsAllBuildPlatesJob @@ -307,11 +309,13 @@ class CuraApplication(QtApplication): preferences.addPreference("cura/asked_dialog_on_project_save", False) preferences.addPreference("cura/choice_on_profile_override", "always_ask") preferences.addPreference("cura/choice_on_open_project", "always_ask") + preferences.addPreference("cura/arrange_objects_on_load", True) preferences.addPreference("cura/currency", "€") preferences.addPreference("cura/material_settings", "{}") preferences.addPreference("view/invert_zoom", False) + preferences.addPreference("view/filter_current_build_plate", False) self._need_to_show_user_agreement = not Preferences.getInstance().getValue("general/accepted_user_agreement") @@ -896,7 +900,7 @@ class CuraApplication(QtApplication): scene_bounding_box = None is_block_slicing_node = False for node in DepthFirstIterator(self.getController().getScene().getRoot()): - if type(node) is not SceneNode or (not node.getMeshData() and not node.callDecoration("getLayerData")): + if not issubclass(type(node), SceneNode) or (not node.getMeshData() and not node.callDecoration("getLayerData")): continue if node.callDecoration("isBlockSlicing"): is_block_slicing_node = True @@ -1013,7 +1017,7 @@ class CuraApplication(QtApplication): Selection.clear() for node in DepthFirstIterator(self.getController().getScene().getRoot()): - if type(node) is not SceneNode: + if not issubclass(type(node), SceneNode): continue if not node.getMeshData() and not node.callDecoration("isGroup"): continue # Node that doesnt have a mesh and is not a group. @@ -1021,6 +1025,9 @@ class CuraApplication(QtApplication): continue # Grouped nodes don't need resetting as their parent (the group) is resetted) if not node.isSelectable(): continue # i.e. node with layer data + if not node.callDecoration("isSliceable"): + continue # i.e. node with layer data + Selection.add(node) ## Delete all nodes containing mesh data in the scene. @@ -1032,7 +1039,7 @@ class CuraApplication(QtApplication): nodes = [] for node in DepthFirstIterator(self.getController().getScene().getRoot()): - if type(node) is not SceneNode: + if not issubclass(type(node), SceneNode): continue if (not node.getMeshData() and not node.callDecoration("getLayerData")) and not node.callDecoration("isGroup"): continue # Node that doesnt have a mesh and is not a group. @@ -1054,7 +1061,7 @@ class CuraApplication(QtApplication): Logger.log("i", "Resetting all scene translations") nodes = [] for node in DepthFirstIterator(self.getController().getScene().getRoot()): - if type(node) is not SceneNode: + if not issubclass(type(node), SceneNode): continue if not node.getMeshData() and not node.callDecoration("isGroup"): continue # Node that doesnt have a mesh and is not a group. @@ -1082,13 +1089,13 @@ class CuraApplication(QtApplication): Logger.log("i", "Resetting all scene transformations") nodes = [] for node in DepthFirstIterator(self.getController().getScene().getRoot()): - if type(node) is not SceneNode: + if not issubclass(type(node), SceneNode): continue if not node.getMeshData() and not node.callDecoration("isGroup"): continue # Node that doesnt have a mesh and is not a group. if node.getParent() and node.getParent().callDecoration("isGroup"): continue # Grouped nodes don't need resetting as their parent (the group) is resetted) - if not node.isSelectable(): + if not node.callDecoration("isSliceable"): continue # i.e. node with layer data nodes.append(node) @@ -1109,7 +1116,27 @@ class CuraApplication(QtApplication): def arrangeObjectsToAllBuildPlates(self): nodes = [] for node in DepthFirstIterator(self.getController().getScene().getRoot()): - if type(node) is not SceneNode: + if not issubclass(type(node), SceneNode): + continue + if not node.getMeshData() and not node.callDecoration("isGroup"): + continue # Node that doesnt have a mesh and is not a group. + if node.getParent() and node.getParent().callDecoration("isGroup"): + continue # Grouped nodes don't need resetting as their parent (the group) is resetted) + if not node.callDecoration("isSliceable"): + continue # i.e. node with layer data + # Skip nodes that are too big + if node.getBoundingBox().width < self._volume.getBoundingBox().width or node.getBoundingBox().depth < self._volume.getBoundingBox().depth: + nodes.append(node) + job = ArrangeObjectsAllBuildPlatesJob(nodes) + job.start() + self.setActiveBuildPlate(0) + + # Single build plate + @pyqtSlot() + def arrangeAll(self): + nodes = [] + for node in DepthFirstIterator(self.getController().getScene().getRoot()): + if not issubclass(type(node), SceneNode): continue if not node.getMeshData() and not node.callDecoration("isGroup"): continue # Node that doesnt have a mesh and is not a group. @@ -1117,24 +1144,7 @@ class CuraApplication(QtApplication): continue # Grouped nodes don't need resetting as their parent (the group) is resetted) if not node.isSelectable(): continue # i.e. node with layer data - # Skip nodes that are too big - if node.getBoundingBox().width < self._volume.getBoundingBox().width or node.getBoundingBox().depth < self._volume.getBoundingBox().depth: - nodes.append(node) - job = ArrangeObjectsAllBuildPlatesJob(nodes) - job.start() - - # Single build plate - @pyqtSlot() - def arrangeAll(self): - nodes = [] - for node in DepthFirstIterator(self.getController().getScene().getRoot()): - if type(node) is not SceneNode: - continue - if not node.getMeshData() and not node.callDecoration("isGroup"): - continue # Node that doesnt have a mesh and is not a group. - if node.getParent() and node.getParent().callDecoration("isGroup"): - continue # Grouped nodes don't need resetting as their parent (the group) is resetted) - if not node.isSelectable(): + if not node.callDecoration("isSliceable"): continue # i.e. node with layer data if node.callDecoration("getBuildPlateNumber") == self._active_build_plate: # Skip nodes that are too big @@ -1150,7 +1160,7 @@ class CuraApplication(QtApplication): # What nodes are on the build plate and are not being moved fixed_nodes = [] for node in DepthFirstIterator(self.getController().getScene().getRoot()): - if type(node) is not SceneNode: + if not issubclass(type(node), SceneNode): continue if not node.getMeshData() and not node.callDecoration("isGroup"): continue # Node that doesnt have a mesh and is not a group. @@ -1158,6 +1168,8 @@ class CuraApplication(QtApplication): continue # Grouped nodes don't need resetting as their parent (the group) is resetted) if not node.isSelectable(): continue # i.e. node with layer data + if not node.callDecoration("isSliceable"): + continue # i.e. node with layer data if node in nodes: # exclude selected node from fixed_nodes continue fixed_nodes.append(node) @@ -1176,7 +1188,7 @@ class CuraApplication(QtApplication): Logger.log("i", "Reloading all loaded mesh data.") nodes = [] for node in DepthFirstIterator(self.getController().getScene().getRoot()): - if type(node) is not SceneNode or not node.getMeshData(): + if not issubclass(type(node), SceneNode) or not node.getMeshData(): continue nodes.append(node) @@ -1267,7 +1279,7 @@ class CuraApplication(QtApplication): @pyqtSlot() def groupSelected(self): # Create a group-node - group_node = SceneNode() + group_node = CuraSceneNode() group_decorator = GroupDecorator() group_node.addDecorator(group_decorator) group_node.addDecorator(ConvexHullDecorator()) @@ -1413,11 +1425,15 @@ class CuraApplication(QtApplication): min_offset = 8 self.fileLoaded.emit(filename) + arrange_objects_on_load = Preferences.getInstance().getValue("cura/arrange_objects_on_load") + target_build_plate = self.activeBuildPlate if arrange_objects_on_load else -1 + + for original_node in nodes: + node = CuraSceneNode() # We want our own CuraSceneNode + node.setMeshData(original_node.getMeshData()) - for node in nodes: node.setSelectable(True) node.setName(os.path.basename(filename)) - node.addDecorator(BuildPlateDecorator()) extension = os.path.splitext(filename)[1] if extension.lower() in self._non_sliceable_extensions: @@ -1442,20 +1458,23 @@ class CuraApplication(QtApplication): if not child.getDecorator(ConvexHullDecorator): child.addDecorator(ConvexHullDecorator()) - 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: - # Find node location - offset_shape_arr, hull_shape_arr = ShapeArray.fromNode(node, min_offset = min_offset) + if arrange_objects_on_load: + 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: + # Find node location + offset_shape_arr, hull_shape_arr = ShapeArray.fromNode(node, min_offset = min_offset) - # If a model is to small then it will not contain any points - if offset_shape_arr is None and hull_shape_arr is None: - Message(self._i18n_catalog.i18nc("@info:status", "The selected model was too small to load."), - title=self._i18n_catalog.i18nc("@info:title", "Warning")).show() - return + # If a model is to small then it will not contain any points + if offset_shape_arr is None and hull_shape_arr is None: + Message(self._i18n_catalog.i18nc("@info:status", "The selected model was too small to load."), + title=self._i18n_catalog.i18nc("@info:title", "Warning")).show() + return - # Step is for skipping tests to make it a lot faster. it also makes the outcome somewhat rougher - node, _ = arranger.findNodePlacement(node, offset_shape_arr, hull_shape_arr, step = 10) + # Step is for skipping tests to make it a lot faster. it also makes the outcome somewhat rougher + node, _ = arranger.findNodePlacement(node, offset_shape_arr, hull_shape_arr, step = 10) + + node.addDecorator(BuildPlateDecorator(target_build_plate)) op = AddSceneNodeOperation(node, scene.getRoot()) op.push() @@ -1494,6 +1513,8 @@ class CuraApplication(QtApplication): #### research - hacky place for these kind of thing @pyqtSlot(int) def setActiveBuildPlate(self, nr): + if nr == self._active_build_plate: + return Logger.log("d", "Select build plate: %s" % nr) self._active_build_plate = nr diff --git a/cura/ObjectManager.py b/cura/ObjectManager.py index fc6d343252..a148c05f28 100644 --- a/cura/ObjectManager.py +++ b/cura/ObjectManager.py @@ -7,23 +7,35 @@ from UM.Scene.SceneNode import SceneNode from UM.Scene.Selection import Selection from PyQt5.QtCore import Qt from PyQt5.QtWidgets import QApplication +#from cura.Scene.CuraSceneNode import CuraSceneNode +from UM.Preferences import Preferences class ObjectManager(ListModel): def __init__(self): super().__init__() self._last_selected_index = 0 - Application.getInstance().getController().getScene().sceneChanged.connect(self._update) + Application.getInstance().getController().getScene().sceneChanged.connect(self._update_scene_changed) + Preferences.getInstance().preferenceChanged.connect(self._update) + Application.getInstance().activeBuildPlateChanged.connect(self._update) def _update(self, *args): nodes = [] + filter_current_build_plate = Preferences.getInstance().getValue("view/filter_current_build_plate") + active_build_plate_number = Application.getInstance().activeBuildPlate for node in DepthFirstIterator(Application.getInstance().getController().getScene().getRoot()): - if type(node) is not SceneNode or (not node.getMeshData() and not node.callDecoration("getLayerData")): + if not issubclass(type(node), SceneNode) or (not node.getMeshData() and not node.callDecoration("getLayerData")): + continue + if not node.callDecoration("isSliceable"): + continue + node_build_plate_number = node.callDecoration("getBuildPlateNumber") + if filter_current_build_plate and node_build_plate_number != active_build_plate_number: continue nodes.append({ "name": node.getName(), "isSelected": Selection.isSelected(node), - "buildPlateNumber": node.callDecoration("getBuildPlateNumber"), + "isOutsideBuildArea": node.isOutsideBuildArea(), + "buildPlateNumber": node_build_plate_number, "node": node }) nodes = sorted(nodes, key=lambda n: n["name"]) @@ -31,6 +43,12 @@ class ObjectManager(ListModel): self.itemsChanged.emit() + def _update_scene_changed(self, *args): + # if args and type(args[0]) is not CuraSceneNode: + # Logger.log("d", " ascdf %s", args) + # return + self._update(*args) + ## Either select or deselect an item @pyqtSlot(int) def changeSelection(self, index): @@ -63,6 +81,11 @@ class ObjectManager(ListModel): self._last_selected_index = index + # testing + for node in DepthFirstIterator(Application.getInstance().getController().getScene().getRoot()): + if node.callDecoration("getLayerData"): + Logger.log("d", " ##### NODE: %s", node) + @staticmethod def createObjectManager(): return ObjectManager() diff --git a/cura/Scene/BuildPlateDecorator.py b/cura/Scene/BuildPlateDecorator.py index b0a14e41f4..2c886c7444 100644 --- a/cura/Scene/BuildPlateDecorator.py +++ b/cura/Scene/BuildPlateDecorator.py @@ -6,11 +6,14 @@ from UM.Logger import Logger class BuildPlateDecorator(SceneNodeDecorator): def __init__(self, build_plate_number = -1): super().__init__() + self._build_plate_number = None + self._previous_build_plate_number = None self.setBuildPlateNumber(build_plate_number) def setBuildPlateNumber(self, nr): # Make sure that groups are set correctly # setBuildPlateForSelection in CuraActions makes sure that no single childs are set. + self._previous_build_plate_number = self._build_plate_number self._build_plate_number = nr if self._node and self._node.callDecoration("isGroup"): for child in self._node.getChildren(): @@ -19,5 +22,9 @@ class BuildPlateDecorator(SceneNodeDecorator): def getBuildPlateNumber(self): return self._build_plate_number + # Used to determine from what build plate the node moved. + def getPreviousBuildPlateNumber(self): + return self._previous_build_plate_number + def __deepcopy__(self, memo): return BuildPlateDecorator() diff --git a/cura/Scene/CuraSceneNode.py b/cura/Scene/CuraSceneNode.py new file mode 100644 index 0000000000..ccec76b53d --- /dev/null +++ b/cura/Scene/CuraSceneNode.py @@ -0,0 +1,40 @@ +from UM.Application import Application +from UM.Logger import Logger +from UM.Scene.SceneNode import SceneNode +from copy import deepcopy + + +## Scene nodes that are models are only seen when selecting the corresponding build plate +# Note that many other nodes can just be UM SceneNode objects. +class CuraSceneNode(SceneNode): + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self._outside_buildarea = True + + def setOutsideBuildArea(self, new_value): + self._outside_buildarea = new_value + + def isOutsideBuildArea(self): + return self._outside_buildarea or self.callDecoration("getBuildPlateNumber") < 0 + + def isVisible(self): + return super().isVisible() and self.callDecoration("getBuildPlateNumber") == Application.getInstance().activeBuildPlate + + def isSelectable(self) -> bool: + return super().isSelectable() and self.callDecoration("getBuildPlateNumber") == Application.getInstance().activeBuildPlate + + ## Taken from SceneNode, but replaced SceneNode with CuraSceneNode + def __deepcopy__(self, memo): + copy = CuraSceneNode() + copy.setTransformation(self.getLocalTransformation()) + copy.setMeshData(self._mesh_data) + copy.setVisible(deepcopy(self._visible, memo)) + copy._selectable = deepcopy(self._selectable, memo) + copy._name = deepcopy(self._name, memo) + for decorator in self._decorators: + copy.addDecorator(deepcopy(decorator, memo)) + + for child in self._children: + copy.addChild(deepcopy(child, memo)) + self.calculateBoundingBoxMesh() + return copy diff --git a/plugins/3MFReader/ThreeMFReader.py b/plugins/3MFReader/ThreeMFReader.py index a34bf771d7..8c4ef9d1ae 100755 --- a/plugins/3MFReader/ThreeMFReader.py +++ b/plugins/3MFReader/ThreeMFReader.py @@ -15,7 +15,8 @@ from cura.Settings.SettingOverrideDecorator import SettingOverrideDecorator from UM.Application import Application from cura.Settings.ExtruderManager import ExtruderManager from cura.QualityManager import QualityManager -from UM.Scene.SceneNode import SceneNode +#from UM.Scene.SceneNode import SceneNode +from cura.Scene.CuraSceneNode import CuraSceneNode as SceneNode from cura.SliceableObjectDecorator import SliceableObjectDecorator from cura.ZOffsetDecorator import ZOffsetDecorator diff --git a/plugins/CuraEngineBackend/CuraEngineBackend.py b/plugins/CuraEngineBackend/CuraEngineBackend.py index 914aa1dee0..67d3fe8c42 100755 --- a/plugins/CuraEngineBackend/CuraEngineBackend.py +++ b/plugins/CuraEngineBackend/CuraEngineBackend.py @@ -69,9 +69,10 @@ class CuraEngineBackend(QObject, Backend): # Workaround to disable layer view processing if layer view is not active. self._layer_view_active = False Application.getInstance().getController().activeViewChanged.connect(self._onActiveViewChanged) + Application.getInstance().activeBuildPlateChanged.connect(self._onActiveViewChanged) self._onActiveViewChanged() self._stored_layer_data = [] - self._stored_optimized_layer_data = [] + self._stored_optimized_layer_data = {} # key is build plate number, then arrays are stored until they go to the ProcessSlicesLayersJob self._scene = Application.getInstance().getController().getScene() self._scene.sceneChanged.connect(self._onSceneChanged) @@ -104,12 +105,14 @@ class CuraEngineBackend(QObject, Backend): self._message_handlers["cura.proto.SlicingFinished"] = self._onSlicingFinishedMessage self._start_slice_job = None + self._start_slice_job_build_plate = None self._slicing = False # Are we currently slicing? self._restart = False # Back-end is currently restarting? self._tool_active = False # If a tool is active, some tasks do not have to do anything self._always_restart = True # Always restart the engine when starting a new slice. Don't keep the process running. TODO: Fix engine statelessness. self._process_layers_job = None # The currently active job to process layers, or None if it is not processing layers. - self._need_slicing = False + # self._need_slicing = False + self._build_plates_to_be_sliced = [] # what needs slicing? self._engine_is_fresh = True # Is the newly started engine used before or not? self._backend_log_max_lines = 20000 # Maximum number of lines to buffer @@ -189,8 +192,9 @@ class CuraEngineBackend(QObject, Backend): ## Perform a slice of the scene. def slice(self): + Logger.log("d", "starting to slice again!") self._slice_start_time = time() - if not self._need_slicing: + if not self._build_plates_to_be_sliced: self.processingProgress.emit(1.0) self.backendStateChange.emit(BackendState.Done) Logger.log("w", "Slice unnecessary, nothing has changed that needs reslicing.") @@ -199,7 +203,6 @@ class CuraEngineBackend(QObject, Backend): Application.getInstance().getPrintInformation().setToZeroPrintInformation() self._stored_layer_data = [] - self._stored_optimized_layer_data = [] if self._process is None: self._createSocket() @@ -215,6 +218,9 @@ class CuraEngineBackend(QObject, Backend): slice_message = self._socket.createMessage("cura.proto.Slice") self._start_slice_job = StartSliceJob.StartSliceJob(slice_message) + self._start_slice_job_build_plate = self._build_plates_to_be_sliced.pop(0) + self._stored_optimized_layer_data[self._start_slice_job_build_plate] = [] + self._start_slice_job.setBuildPlate(self._start_slice_job_build_plate) self._start_slice_job.start() self._start_slice_job.finished.connect(self._onStartSliceCompleted) @@ -223,7 +229,8 @@ class CuraEngineBackend(QObject, Backend): def _terminate(self): self._slicing = False self._stored_layer_data = [] - self._stored_optimized_layer_data = [] + if self._start_slice_job_build_plate in self._stored_optimized_layer_data: + del self._stored_optimized_layer_data[self._start_slice_job_build_plate] if self._start_slice_job is not None: self._start_slice_job.cancel() @@ -315,10 +322,13 @@ class CuraEngineBackend(QObject, Backend): self._error_message = Message(catalog.i18nc("@info:status", "Nothing to slice because none of the models fit the build volume. Please scale or rotate models to fit."), title = catalog.i18nc("@info:title", "Unable to slice")) self._error_message.show() - self.backendStateChange.emit(BackendState.Error) + #self.backendStateChange.emit(BackendState.Error) else: - self.backendStateChange.emit(BackendState.NotStarted) + #self.backendStateChange.emit(BackendState.NotStarted) + pass + self._invokeSlice() return + # Preparation completed, send it to the backend. self._socket.sendMessage(job.getSliceMessage()) @@ -360,27 +370,34 @@ class CuraEngineBackend(QObject, Backend): # # \param source The scene node that was changed. def _onSceneChanged(self, source): - if type(source) is not SceneNode: + Logger.log("d", " ##### scene changed: %s", source) + if not issubclass(type(source), SceneNode): return root_scene_nodes_changed = False + build_plates_changed = set() if source == self._scene.getRoot(): num_objects = 0 for node in DepthFirstIterator(self._scene.getRoot()): # Only count sliceable objects if node.callDecoration("isSliceable"): num_objects += 1 + build_plates_changed.add(node.callDecoration("getBuildPlateNumber")) + build_plates_changed.add(node.callDecoration("getPreviousBuildPlateNumber")) if num_objects != self._last_num_objects: self._last_num_objects = num_objects root_scene_nodes_changed = True - else: - return + # else: + # return # ?? + build_plates_changed.discard(None) + build_plates_changed.discard(-1) # object not on build plate + Logger.log("d", " #### build plates changed: %s", build_plates_changed) - if not source.callDecoration("isGroup") and not root_scene_nodes_changed: - if source.getMeshData() is None: - return - if source.getMeshData().getVertices() is None: - return + # if not source.callDecoration("isGroup") and not root_scene_nodes_changed: + # if source.getMeshData() is None: + # return + # if source.getMeshData().getVertices() is None: + # return if self._tool_active: # do it later, each source only has to be done once @@ -388,9 +405,24 @@ class CuraEngineBackend(QObject, Backend): self._postponed_scene_change_sources.append(source) return - self.needsSlicing() - self.stopSlicing() - self._onChanged() + if build_plates_changed: + Logger.log("d", " going to reslice") + self.stopSlicing() + for build_plate_number in build_plates_changed: + if build_plate_number not in self._build_plates_to_be_sliced: + self._build_plates_to_be_sliced.append(build_plate_number) + self.processingProgress.emit(0.0) + self.backendStateChange.emit(BackendState.NotStarted) + if not self._use_timer: + # With manually having to slice, we want to clear the old invalid layer data. + self._clearLayerData(build_plates_changed) + + self._invokeSlice() + + # #self.needsSlicing() + # self.stopSlicing() + # #self._onChanged() + # self._invokeSlice() ## Called when an error occurs in the socket connection towards the engine. # @@ -410,16 +442,24 @@ class CuraEngineBackend(QObject, Backend): Logger.log("w", "A socket error caused the connection to be reset") ## Remove old layer data (if any) - def _clearLayerData(self): + def _clearLayerData(self, build_plate_numbers = set()): for node in DepthFirstIterator(self._scene.getRoot()): if node.callDecoration("getLayerData"): - node.getParent().removeChild(node) - break + if node.callDecoration("getBuildPlateNumber") in build_plate_numbers or not build_plate_numbers: + node.getParent().removeChild(node) - ## Convenient function: set need_slicing, emit state and clear layer data + def markSliceAll(self): + if 0 not in self._build_plates_to_be_sliced: + self._build_plates_to_be_sliced.append(0) + if 1 not in self._build_plates_to_be_sliced: + self._build_plates_to_be_sliced.append(1) + if 2 not in self._build_plates_to_be_sliced: + self._build_plates_to_be_sliced.append(2) + + ## Convenient function: mark everything to slice, emit state and clear layer data def needsSlicing(self): self.stopSlicing() - self._need_slicing = True + self.markSliceAll() self.processingProgress.emit(0.0) self.backendStateChange.emit(BackendState.NotStarted) if not self._use_timer: @@ -441,7 +481,7 @@ class CuraEngineBackend(QObject, Backend): def _onStackErrorCheckFinished(self): self._is_error_check_scheduled = False - if not self._slicing and self._need_slicing: + if not self._slicing and self._build_plates_to_be_sliced: #self._need_slicing: self.needsSlicing() self._onChanged() @@ -455,7 +495,7 @@ class CuraEngineBackend(QObject, Backend): # # \param message The protobuf message containing sliced layer data. def _onOptimizedLayerMessage(self, message): - self._stored_optimized_layer_data.append(message) + self._stored_optimized_layer_data[self._start_slice_job_build_plate].append(message) ## Called when a progress message is received from the engine. # @@ -464,6 +504,16 @@ class CuraEngineBackend(QObject, Backend): self.processingProgress.emit(message.amount) self.backendStateChange.emit(BackendState.Processing) + # testing + def _invokeSlice(self): + if self._use_timer: + # if the error check is scheduled, wait for the error check finish signal to trigger auto-slice, + # otherwise business as usual + if self._is_error_check_scheduled: + self._change_timer.stop() + else: + self._change_timer.start() + ## Called when the engine sends a message that slicing is finished. # # \param message The protobuf message signalling that slicing is finished. @@ -481,13 +531,20 @@ class CuraEngineBackend(QObject, Backend): self._scene.gcode_list[self._scene.gcode_list.index(line)] = replaced self._slicing = False - self._need_slicing = False + #self._need_slicing = False Logger.log("d", "Slicing took %s seconds", time() - self._slice_start_time ) - if self._layer_view_active and (self._process_layers_job is None or not self._process_layers_job.isRunning()): - self._process_layers_job = ProcessSlicedLayersJob.ProcessSlicedLayersJob(self._stored_optimized_layer_data) - self._process_layers_job.finished.connect(self._onProcessLayersFinished) - self._process_layers_job.start() - self._stored_optimized_layer_data = [] + + # See if we need to process the sliced layers job. + active_build_plate = Application.getInstance().activeBuildPlate + if self._layer_view_active and (self._process_layers_job is None or not self._process_layers_job.isRunning()) and active_build_plate == self._start_slice_job_build_plate: + self._startProcessSlicedLayersJob(active_build_plate) + self._start_slice_job_build_plate = None + + Logger.log("d", "See if there is more to slice...") + # Somehow this results in an Arcus Error + # self.slice() + # Testing call slice again, allow backend to restart by using the timer + self._invokeSlice() ## Called when a g-code message is received from the engine. # @@ -584,19 +641,26 @@ class CuraEngineBackend(QObject, Backend): source = self._postponed_scene_change_sources.pop(0) self._onSceneChanged(source) + def _startProcessSlicedLayersJob(self, build_plate_number): + self._process_layers_job = ProcessSlicedLayersJob.ProcessSlicedLayersJob(self._stored_optimized_layer_data[build_plate_number]) + self._process_layers_job.setBuildPlate(build_plate_number) + self._process_layers_job.finished.connect(self._onProcessLayersFinished) + self._process_layers_job.start() + del self._stored_optimized_layer_data[build_plate_number] + ## Called when the user changes the active view mode. def _onActiveViewChanged(self): - if Application.getInstance().getController().getActiveView(): - view = Application.getInstance().getController().getActiveView() + application = Application.getInstance() + view = application.getController().getActiveView() + if view: + active_build_plate = application.activeBuildPlate if view.getPluginId() == "LayerView": # If switching to layer view, we should process the layers if that hasn't been done yet. self._layer_view_active = True # There is data and we're not slicing at the moment # if we are slicing, there is no need to re-calculate the data as it will be invalid in a moment. - if self._stored_optimized_layer_data and not self._slicing: - self._process_layers_job = ProcessSlicedLayersJob.ProcessSlicedLayersJob(self._stored_optimized_layer_data) - self._process_layers_job.finished.connect(self._onProcessLayersFinished) - self._process_layers_job.start() - self._stored_optimized_layer_data = [] + # TODO: what build plate I am slicing + if active_build_plate in self._stored_optimized_layer_data and not self._slicing: + self._startProcessSlicedLayersJob(active_build_plate) else: self._layer_view_active = False diff --git a/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py b/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py index a352564bc2..1e56f2dd35 100644 --- a/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py +++ b/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py @@ -17,10 +17,12 @@ from UM.Logger import Logger from UM.Math.Vector import Vector +from cura.Scene.BuildPlateDecorator import BuildPlateDecorator from cura.Settings.ExtruderManager import ExtruderManager from cura import LayerDataBuilder from cura import LayerDataDecorator from cura import LayerPolygon +# from cura.Scene.CuraSceneNode import CuraSceneNode import numpy from time import time @@ -49,6 +51,7 @@ class ProcessSlicedLayersJob(Job): self._scene = Application.getInstance().getController().getScene() self._progress_message = Message(catalog.i18nc("@info:status", "Processing Layers"), 0, False, -1) self._abort_requested = False + self._build_plate_number = None ## Aborts the processing of layers. # @@ -59,7 +62,11 @@ class ProcessSlicedLayersJob(Job): def abort(self): self._abort_requested = True + def setBuildPlate(self, new_value): + self._build_plate_number = new_value + def run(self): + Logger.log("d", "########## Processing new layer for [%s]..." % self._build_plate_number) start_time = time() if Application.getInstance().getController().getActiveView().getPluginId() == "LayerView": self._progress_message.show() @@ -72,16 +79,18 @@ class ProcessSlicedLayersJob(Job): Application.getInstance().getController().activeViewChanged.connect(self._onActiveViewChanged) new_node = SceneNode() + new_node.addDecorator(BuildPlateDecorator(self._build_plate_number)) - ## Remove old layer data (if any) - for node in DepthFirstIterator(self._scene.getRoot()): - if node.callDecoration("getLayerData"): - node.getParent().removeChild(node) - break - if self._abort_requested: - if self._progress_message: - self._progress_message.hide() - return + # ## Remove old layer data (if any) + # for node in DepthFirstIterator(self._scene.getRoot()): + # if node.callDecoration("getLayerData") and node.callDecoration("getBuildPlateNumber") == self._build_plate_number: + # Logger.log("d", " # Removing: %s", node) + # node.getParent().removeChild(node) + # #break + # if self._abort_requested: + # if self._progress_message: + # self._progress_message.hide() + # return # Force garbage collection. # For some reason, Python has a tendency to keep the layer data diff --git a/plugins/CuraEngineBackend/StartSliceJob.py b/plugins/CuraEngineBackend/StartSliceJob.py index 607914f5c5..f6abe94702 100644 --- a/plugins/CuraEngineBackend/StartSliceJob.py +++ b/plugins/CuraEngineBackend/StartSliceJob.py @@ -10,12 +10,13 @@ from UM.Job import Job from UM.Application import Application from UM.Logger import Logger -from UM.Scene.SceneNode import SceneNode +#from UM.Scene.SceneNode import SceneNode from UM.Scene.Iterator.DepthFirstIterator import DepthFirstIterator from UM.Settings.Validator import ValidatorState from UM.Settings.SettingRelation import RelationType +from cura.Scene.CuraSceneNode import CuraSceneNode as SceneNode from cura.OneAtATimeIterator import OneAtATimeIterator from cura.Settings.ExtruderManager import ExtruderManager @@ -58,10 +59,14 @@ class StartSliceJob(Job): self._scene = Application.getInstance().getController().getScene() self._slice_message = slice_message self._is_cancelled = False + self._build_plate_number = None def getSliceMessage(self): return self._slice_message + def setBuildPlate(self, build_plate_number): + self._build_plate_number = build_plate_number + ## Check if a stack has any errors. ## returns true if it has errors, false otherwise. def _checkStackForErrors(self, stack): @@ -78,6 +83,10 @@ class StartSliceJob(Job): ## Runs the job that initiates the slicing. def run(self): + if self._build_plate_number is None: + self.setResult(StartJobResult.Error) + return + stack = Application.getInstance().getGlobalContainerStack() if not stack: self.setResult(StartJobResult.Error) @@ -141,14 +150,12 @@ class StartSliceJob(Job): for node in DepthFirstIterator(self._scene.getRoot()): if type(node) is SceneNode and node.getMeshData() and node.getMeshData().getVertices() is not None: - # temp hack to filter on build plate 0 - if (node.callDecoration("getBuildPlateNumber") == 0): - - if not getattr(node, "_outside_buildarea", False)\ - or (node.callDecoration("getStack") and any(node.callDecoration("getStack").getProperty(setting, "value") for setting in self._not_printed_mesh_settings)): + if (node.callDecoration("getBuildPlateNumber") == self._build_plate_number): + if not getattr(node, "_outside_buildarea", False) or (node.callDecoration("getStack") and any(node.callDecoration("getStack").getProperty(setting, "value") for setting in self._not_printed_mesh_settings)): temp_list.append(node) Job.yieldThread() + Logger.log("d", " objects to be sliced: %s", temp_list) if temp_list: object_groups.append(temp_list) diff --git a/plugins/ImageReader/ImageReader.py b/plugins/ImageReader/ImageReader.py index b419c0b496..2529abf2d8 100644 --- a/plugins/ImageReader/ImageReader.py +++ b/plugins/ImageReader/ImageReader.py @@ -8,12 +8,14 @@ from PyQt5.QtCore import Qt from UM.Mesh.MeshReader import MeshReader from UM.Mesh.MeshBuilder import MeshBuilder -from UM.Scene.SceneNode import SceneNode +#from UM.Scene.SceneNode import SceneNode from UM.Math.Vector import Vector from UM.Job import Job from UM.Logger import Logger from .ImageReaderUI import ImageReaderUI +from cura.Scene.CuraSceneNode import CuraSceneNode as SceneNode + class ImageReader(MeshReader): def __init__(self): diff --git a/plugins/LayerView/LayerPass.py b/plugins/LayerView/LayerPass.py index 963c8c75c8..2b0e82d4b3 100755 --- a/plugins/LayerView/LayerPass.py +++ b/plugins/LayerView/LayerPass.py @@ -66,13 +66,14 @@ class LayerPass(RenderPass): self.bind() tool_handle_batch = RenderBatch(self._tool_handle_shader, type = RenderBatch.RenderType.Overlay) + active_build_plate = Application.getInstance().activeBuildPlate for node in DepthFirstIterator(self._scene.getRoot()): if isinstance(node, ToolHandle): tool_handle_batch.addItem(node.getWorldTransformation(), mesh = node.getSolidMesh()) - elif isinstance(node, SceneNode) and (node.getMeshData() or node.callDecoration("isBlockSlicing")) and node.isVisible(): + elif issubclass(type(node), SceneNode) and (node.getMeshData() or node.callDecoration("isBlockSlicing")) and node.isVisible() and node.callDecoration("getBuildPlateNumber") == active_build_plate: layer_data = node.callDecoration("getLayerData") if not layer_data: continue diff --git a/plugins/SolidView/SolidView.py b/plugins/SolidView/SolidView.py index d37fbb7c9d..699cec23f5 100644 --- a/plugins/SolidView/SolidView.py +++ b/plugins/SolidView/SolidView.py @@ -75,7 +75,7 @@ class SolidView(View): for node in DepthFirstIterator(scene.getRoot()): if not node.render(renderer): - if node.getMeshData() and node.isVisible() and (node.callDecoration("getBuildPlateNumber") == activeBuildPlateNumber): + if node.getMeshData() and node.isVisible(): # and (node.callDecoration("getBuildPlateNumber") == activeBuildPlateNumber): uniforms = {} shade_factor = 1.0 diff --git a/plugins/X3DReader/X3DReader.py b/plugins/X3DReader/X3DReader.py index e4a59dcdaa..a0d530c78c 100644 --- a/plugins/X3DReader/X3DReader.py +++ b/plugins/X3DReader/X3DReader.py @@ -11,7 +11,8 @@ from UM.Math.Matrix import Matrix from UM.Math.Vector import Vector from UM.Mesh.MeshBuilder import MeshBuilder from UM.Mesh.MeshReader import MeshReader -from UM.Scene.SceneNode import SceneNode +#from UM.Scene.SceneNode import SceneNode +from cura.Scene.CuraSceneNode import CuraSceneNode as SceneNode MYPY = False try: @@ -19,63 +20,63 @@ try: import xml.etree.cElementTree as ET except ImportError: import xml.etree.ElementTree as ET - + # TODO: preserve the structure of scenes that contain several objects -# Use CADPart, for example, to distinguish between separate objects - +# Use CADPart, for example, to distinguish between separate objects + DEFAULT_SUBDIV = 16 # Default subdivision factor for spheres, cones, and cylinders EPSILON = 0.000001 class Shape: - + # Expects verts in MeshBuilder-ready format, as a n by 3 mdarray # with vertices stored in rows def __init__(self, verts, faces, index_base, name): self.verts = verts self.faces = faces # Those are here for debugging purposes only - self.index_base = index_base + self.index_base = index_base self.name = name - + class X3DReader(MeshReader): def __init__(self): super().__init__() self._supported_extensions = [".x3d"] self._namespaces = {} - + # Main entry point # Reads the file, returns a SceneNode (possibly with nested ones), or None def read(self, file_name): try: self.defs = {} self.shapes = [] - + tree = ET.parse(file_name) xml_root = tree.getroot() - + if xml_root.tag != "X3D": return None - scale = 1000 # Default X3D unit it one meter, while Cura's is one millimeters + scale = 1000 # Default X3D unit it one meter, while Cura's is one millimeters if xml_root[0].tag == "head": for head_node in xml_root[0]: if head_node.tag == "unit" and head_node.attrib.get("category") == "length": scale *= float(head_node.attrib["conversionFactor"]) - break + break xml_scene = xml_root[1] else: xml_scene = xml_root[0] - + if xml_scene.tag != "Scene": return None - + self.transform = Matrix() self.transform.setByScaleFactor(scale) self.index_base = 0 - + # Traverse the scene tree, populate the shapes list self.processChildNodes(xml_scene) - + if self.shapes: builder = MeshBuilder() builder.setVertices(numpy.concatenate([shape.verts for shape in self.shapes])) @@ -95,20 +96,20 @@ class X3DReader(MeshReader): else: return None - + except Exception: Logger.logException("e", "Exception in X3D reader") return None return node - + # ------------------------- XML tree traversal - + def processNode(self, xml_node): xml_node = self.resolveDefUse(xml_node) if xml_node is None: return - + tag = xml_node.tag if tag in ("Group", "StaticGroup", "CADAssembly", "CADFace", "CADLayer", "Collision"): self.processChildNodes(xml_node) @@ -120,8 +121,8 @@ class X3DReader(MeshReader): self.processTransform(xml_node) elif tag == "Shape": self.processShape(xml_node) - - + + def processShape(self, xml_node): # Find the geometry and the appearance inside the Shape geometry = appearance = None @@ -130,21 +131,21 @@ class X3DReader(MeshReader): appearance = self.resolveDefUse(sub_node) elif sub_node.tag in self.geometry_importers and not geometry: geometry = self.resolveDefUse(sub_node) - - # TODO: appearance is completely ignored. At least apply the material color... + + # TODO: appearance is completely ignored. At least apply the material color... if not geometry is None: try: - self.verts = self.faces = [] # Safeguard + self.verts = self.faces = [] # Safeguard self.geometry_importers[geometry.tag](self, geometry) m = self.transform.getData() verts = m.dot(self.verts)[:3].transpose() - + self.shapes.append(Shape(verts, self.faces, self.index_base, geometry.tag)) self.index_base += len(verts) - + except Exception: Logger.logException("e", "Exception in X3D reader while reading %s", geometry.tag) - + # Returns the referenced node if the node has USE, the same node otherwise. # May return None is USE points at a nonexistent node # In X3DOM, when both DEF and USE are in the same node, DEF is ignored. @@ -155,34 +156,34 @@ class X3DReader(MeshReader): if USE: return self.defs.get(USE, None) - DEF = node.attrib.get("DEF") + DEF = node.attrib.get("DEF") if DEF: - self.defs[DEF] = node + self.defs[DEF] = node return node - + def processChildNodes(self, node): for c in node: self.processNode(c) Job.yieldThread() - + # Since this is a grouping node, will recurse down the tree. # According to the spec, the final transform matrix is: # T * C * R * SR * S * -SR * -C # Where SR corresponds to the rotation matrix to scaleOrientation - # C and SR are rather exotic. S, slightly less so. + # C and SR are rather exotic. S, slightly less so. def processTransform(self, node): rot = readRotation(node, "rotation", (0, 0, 1, 0)) # (angle, axisVactor) tuple trans = readVector(node, "translation", (0, 0, 0)) # Vector scale = readVector(node, "scale", (1, 1, 1)) # Vector center = readVector(node, "center", (0, 0, 0)) # Vector scale_orient = readRotation(node, "scaleOrientation", (0, 0, 1, 0)) # (angle, axisVactor) tuple - - # Store the previous transform; in Cura, the default matrix multiplication is in place + + # Store the previous transform; in Cura, the default matrix multiplication is in place prev = Matrix(self.transform.getData()) # It's deep copy, I've checked - + # The rest of transform manipulation will be applied in place 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: T.translate(trans) @@ -202,13 +203,13 @@ class X3DReader(MeshReader): T.rotateByAxis(-scale_orient[0], scale_orient[1]) if got_center: T.translate(-center) - + self.processChildNodes(node) self.transform = prev - + # ------------------------- Geometry importers # They are supposed to fill the self.verts and self.faces arrays, the caller will do the rest - + # Primitives def processGeometryBox(self, node): @@ -228,14 +229,14 @@ class X3DReader(MeshReader): self.addVertex(-dx, -dy, dz) self.addVertex(-dx, -dy, -dz) self.addVertex(dx, -dy, -dz) - + self.addQuad(0, 1, 2, 3) # +y self.addQuad(4, 0, 3, 7) # +x self.addQuad(7, 3, 2, 6) # -z self.addQuad(6, 2, 1, 5) # -x self.addQuad(5, 1, 0, 4) # +z self.addQuad(7, 6, 5, 4) # -y - + # The sphere is subdivided into nr rings and ns segments def processGeometrySphere(self, node): r = readFloat(node, "radius", 0.5) @@ -247,16 +248,16 @@ class X3DReader(MeshReader): (nr, ns) = subdiv else: nr = ns = DEFAULT_SUBDIV - + lau = pi / nr # Unit angle of latitude (rings) for the given tesselation lou = 2 * pi / ns # Unit angle of longitude (segments) - + self.reserveFaceAndVertexCount(ns*(nr*2 - 2), 2 + (nr - 1)*ns) - + # +y and -y poles self.addVertex(0, r, 0) self.addVertex(0, -r, 0) - + # The non-polar vertices go from x=0, negative z plane counterclockwise - # to -x, to +z, to +x, back to -z for ring in range(1, nr): @@ -264,12 +265,12 @@ class X3DReader(MeshReader): self.addVertex(-r*sin(lou * seg) * sin(lau * ring), r*cos(lau * ring), -r*cos(lou * seg) * sin(lau * ring)) - + vb = 2 + (nr - 2) * ns # First vertex index for the bottom cap - + # Faces go in order: top cap, sides, bottom cap. # Sides go by ring then by segment. - + # Caps # Top cap face vertices go in order: down right up # (starting from +y pole) @@ -277,7 +278,7 @@ class X3DReader(MeshReader): for seg in range(ns): self.addTri(0, seg + 2, (seg + 1) % ns + 2) self.addTri(1, vb + (seg + 1) % ns, vb + seg) - + # Sides # Side face vertices go in order: down right upleft, downright up left for ring in range(nr - 2): @@ -288,24 +289,24 @@ class X3DReader(MeshReader): for seg in range(ns): nseg = (seg + 1) % ns self.addQuad(tvb + seg, bvb + seg, bvb + nseg, tvb + nseg) - + def processGeometryCone(self, node): r = readFloat(node, "bottomRadius", 1) height = readFloat(node, "height", 2) bottom = readBoolean(node, "bottom", True) side = readBoolean(node, "side", True) n = readInt(node, "subdivision", DEFAULT_SUBDIV) - + d = height / 2 angle = 2 * pi / n - + self.reserveFaceAndVertexCount((n if side else 0) + (n-2 if bottom else 0), n+1) - + # Vertex 0 is the apex, vertices 1..n are the bottom self.addVertex(0, d, 0) for i in range(n): self.addVertex(-r * sin(angle * i), -d, -r * cos(angle * i)) - + # Side face vertices go: up down right if side: for i in range(n): @@ -313,7 +314,7 @@ class X3DReader(MeshReader): if bottom: for i in range(2, n): self.addTri(1, i, i+1) - + def processGeometryCylinder(self, node): r = readFloat(node, "radius", 1) height = readFloat(node, "height", 2) @@ -321,13 +322,13 @@ class X3DReader(MeshReader): side = readBoolean(node, "side", True) top = readBoolean(node, "top", True) n = readInt(node, "subdivision", DEFAULT_SUBDIV) - + nn = n * 2 angle = 2 * pi / n hh = height/2 - + self.reserveFaceAndVertexCount((nn if side else 0) + (n - 2 if top else 0) + (n - 2 if bottom else 0), nn) - + # The seam is at x=0, z=-r, vertices go ccw - # to pos x, to neg z, to neg x, back to neg z for i in range(n): @@ -335,18 +336,18 @@ class X3DReader(MeshReader): rc = -r * cos(angle * i) self.addVertex(rs, hh, rc) self.addVertex(rs, -hh, rc) - + if side: for i in range(n): ni = (i + 1) % n self.addQuad(ni * 2 + 1, ni * 2, i * 2, i * 2 + 1) - + for i in range(2, nn-3, 2): if top: self.addTri(0, i, i+2) if bottom: self.addTri(1, i+1, i+3) - + # Semi-primitives def processGeometryElevationGrid(self, node): @@ -356,21 +357,21 @@ class X3DReader(MeshReader): nz = readInt(node, "zDimension", 0) height = readFloatArray(node, "height", False) ccw = readBoolean(node, "ccw", True) - + if nx <= 0 or nz <= 0 or len(height) < nx*nz: return # That's weird, the wording of the standard suggests grids with zero quads are somehow valid - + self.reserveFaceAndVertexCount(2*(nx-1)*(nz-1), nx*nz) - + for z in range(nz): for x in range(nx): self.addVertex(x * dx, height[z*nx + x], z * dz) - + for z in range(1, nz): for x in range(1, nx): self.addTriFlip((z - 1)*nx + x - 1, z*nx + x, (z - 1)*nx + x, ccw) self.addTriFlip((z - 1)*nx + x - 1, z*nx + x - 1, z*nx + x, ccw) - + def processGeometryExtrusion(self, node): ccw = readBoolean(node, "ccw", True) begin_cap = readBoolean(node, "beginCap", True) @@ -384,23 +385,23 @@ class X3DReader(MeshReader): # This converts X3D's axis/angle rotation to a 3x3 numpy matrix def toRotationMatrix(rot): (x, y, z) = rot[:3] - a = rot[3] + a = rot[3] s = sin(a) c = cos(a) t = 1-c return numpy.array(( (x * x * t + c, x * y * t - z*s, x * z * t + y * s), (x * y * t + z*s, y * y * t + c, y * z * t - x * s), - (x * z * t - y * s, y * z * t + x * s, z * z * t + c))) - + (x * z * t - y * s, y * z * t + x * s, z * z * t + c))) + orient = [toRotationMatrix(orient[i:i+4]) if orient[i+3] != 0 else None for i in range(0, len(orient), 4)] - + scale = readFloatArray(node, "scale", None) if scale: scale = [numpy.array(((scale[i], 0, 0), (0, 1, 0), (0, 0, scale[i+1]))) if scale[i] != 1 or scale[i+1] != 1 else None for i in range(0, len(scale), 2)] - - + + # Special treatment for the closed spine and cross section. # Let's save some memory by not creating identical but distinct vertices; # later we'll introduce conditional logic to link the last vertex with @@ -413,14 +414,14 @@ class X3DReader(MeshReader): ncf = nc if crossClosed else nc - 1 # Face count along the cross; for closed cross, it's the same as the # respective vertex count - + spine_closed = spine[0] == spine[-1] if spine_closed: spine = spine[:-1] ns = len(spine) spine = [Vector(*s) for s in spine] nsf = ns if spine_closed else ns - 1 - + # This will be used for fallback, where the current spine point joins # two collinear spine segments. No need to recheck the case of the # closed spine/last-to-first point juncture; if there's an angle there, @@ -442,7 +443,7 @@ class X3DReader(MeshReader): if v.cross(orig_y).length() > EPSILON: # Spine at angle with global y - rotate the z accordingly a = v.cross(orig_y) # Axis of rotation to get to the Z - (x, y, z) = a.normalized().getData() + (x, y, z) = a.normalized().getData() s = a.length()/v.length() c = sqrt(1-s*s) t = 1-c @@ -452,7 +453,7 @@ class X3DReader(MeshReader): (x * z * t + y * s, y * z * t - x * s, z * z * t + c))) orig_z = Vector(*m.dot(orig_z.getData())) return orig_z - + self.reserveFaceAndVertexCount(2*nsf*ncf + (nc - 2 if begin_cap else 0) + (nc - 2 if end_cap else 0), ns*nc) z = None @@ -482,151 +483,151 @@ class X3DReader(MeshReader): y = spt - sprev # If there's more than one point in the spine, z is already set. # One point in the spline is an error anyway. - + z = z.normalized() y = y.normalized() x = y.cross(z) # Already normalized m = numpy.array(((x.x, y.x, z.x), (x.y, y.y, z.y), (x.z, y.z, z.z))) - + # Columns are the unit vectors for the xz plane for the cross-section if orient: mrot = orient[i] if len(orient) > 1 else orient[0] if not mrot is None: m = m.dot(mrot) # Tested against X3DOM, the result matches, still not sure :( - + if scale: mscale = scale[i] if len(scale) > 1 else scale[0] if not mscale is None: m = m.dot(mscale) - + # First the cross-section 2-vector is scaled, # then rotated (which may make it a 3-vector), # then applied to the xz plane unit vectors - + sptv3 = numpy.array(spt.getData()[:3]) for cpt in cross: v = sptv3 + m.dot(cpt) self.addVertex(*v) - + if begin_cap: self.addFace([x for x in range(nc - 1, -1, -1)], ccw) - + # Order of edges in the face: forward along cross, forward along spine, # backward along cross, backward along spine, flipped if now ccw. # This order is assumed later in the texture coordinate assignment; # please don't change without syncing. - + for s in range(ns - 1): for c in range(ncf): self.addQuadFlip(s * nc + c, s * nc + (c + 1) % nc, (s + 1) * nc + (c + 1) % nc, (s + 1) * nc + c, ccw) - + if spine_closed: # The faces between the last and the first spine points b = (ns - 1) * nc for c in range(ncf): self.addQuadFlip(b + c, b + (c + 1) % nc, (c + 1) % nc, c, ccw) - + if end_cap: self.addFace([(ns - 1) * nc + x for x in range(0, nc)], ccw) - + # Triangle meshes # Helper for numerous nodes with a Coordinate subnode holding vertices # That all triangle meshes and IndexedFaceSet - # num_faces can be a function, in case the face count is a function of vertex count + # num_faces can be a function, in case the face count is a function of vertex count def startCoordMesh(self, node, num_faces): ccw = readBoolean(node, "ccw", True) self.readVertices(node) # This will allocate and fill the vertex array if hasattr(num_faces, "__call__"): num_faces = num_faces(self.getVertexCount()) self.reserveFaceCount(num_faces) - + return ccw - + def processGeometryIndexedTriangleSet(self, node): index = readIntArray(node, "index", []) num_faces = len(index) // 3 ccw = int(self.startCoordMesh(node, num_faces)) - + for i in range(0, num_faces*3, 3): self.addTri(index[i + 1 - ccw], index[i + ccw], index[i+2]) - + def processGeometryIndexedTriangleStripSet(self, node): strips = readIndex(node, "index") ccw = int(self.startCoordMesh(node, sum([len(strip) - 2 for strip in strips]))) - + for strip in strips: sccw = ccw # Running CCW value, reset for each strip for i in range(len(strip) - 2): self.addTri(strip[i + 1 - sccw], strip[i + sccw], strip[i+2]) sccw = 1 - sccw - + def processGeometryIndexedTriangleFanSet(self, node): fans = readIndex(node, "index") ccw = int(self.startCoordMesh(node, sum([len(fan) - 2 for fan in fans]))) - + for fan in fans: for i in range(1, len(fan) - 1): self.addTri(fan[0], fan[i + 1 - ccw], fan[i + ccw]) - + def processGeometryTriangleSet(self, node): ccw = int(self.startCoordMesh(node, lambda num_vert: num_vert // 3)) for i in range(0, self.getVertexCount(), 3): self.addTri(i + 1 - ccw, i + ccw, i+2) - + def processGeometryTriangleStripSet(self, node): strips = readIntArray(node, "stripCount", []) ccw = int(self.startCoordMesh(node, sum([n-2 for n in strips]))) - + vb = 0 for n in strips: sccw = ccw - for i in range(n-2): + for i in range(n-2): self.addTri(vb + i + 1 - sccw, vb + i + sccw, vb + i + 2) sccw = 1 - sccw vb += n - + def processGeometryTriangleFanSet(self, node): fans = readIntArray(node, "fanCount", []) ccw = int(self.startCoordMesh(node, sum([n-2 for n in fans]))) - + vb = 0 for n in fans: - for i in range(1, n-1): + for i in range(1, n-1): self.addTri(vb, vb + i + 1 - ccw, vb + i + ccw) vb += n - + # Quad geometries from the CAD module, might be relevant for printing - + def processGeometryQuadSet(self, node): ccw = self.startCoordMesh(node, lambda num_vert: 2*(num_vert // 4)) for i in range(0, self.getVertexCount(), 4): self.addQuadFlip(i, i+1, i+2, i+3, ccw) - + def processGeometryIndexedQuadSet(self, node): index = readIntArray(node, "index", []) num_quads = len(index) // 4 ccw = self.startCoordMesh(node, num_quads*2) - + for i in range(0, num_quads*4, 4): self.addQuadFlip(index[i], index[i+1], index[i+2], index[i+3], ccw) - + # 2D polygon geometries # Won't work for now, since Cura expects every mesh to have a nontrivial convex hull # The only way around that is merging meshes. - + def processGeometryDisk2D(self, node): innerRadius = readFloat(node, "innerRadius", 0) outerRadius = readFloat(node, "outerRadius", 1) n = readInt(node, "subdivision", DEFAULT_SUBDIV) - + angle = 2 * pi / n - + self.reserveFaceAndVertexCount(n*4 if innerRadius else n-2, n*2 if innerRadius else n) - + for i in range(n): s = sin(angle * i) c = cos(angle * i) @@ -635,11 +636,11 @@ class X3DReader(MeshReader): self.addVertex(innerRadius*c, innerRadius*s, 0) ni = (i+1) % n self.addQuad(2*i, 2*ni, 2*ni+1, 2*i+1) - + if not innerRadius: for i in range(2, n): self.addTri(0, i-1, i) - + def processGeometryRectangle2D(self, node): (x, y) = readFloatArray(node, "size", (2, 2)) self.reserveFaceAndVertexCount(2, 4) @@ -648,7 +649,7 @@ class X3DReader(MeshReader): self.addVertex(x/2, y/2, 0) self.addVertex(-x/2, y/2, 0) self.addQuad(0, 1, 2, 3) - + def processGeometryTriangleSet2D(self, node): verts = readFloatArray(node, "vertices", ()) num_faces = len(verts) // 6; @@ -656,25 +657,25 @@ class X3DReader(MeshReader): self.reserveFaceAndVertexCount(num_faces, num_faces * 3) for vert in verts: self.addVertex(*vert) - + # The front face is on the +Z side, so CCW is a variable for i in range(0, num_faces*3, 3): a = Vector(*verts[i+2]) - Vector(*verts[i]) b = Vector(*verts[i+1]) - Vector(*verts[i]) self.addTriFlip(i, i+1, i+2, a.x*b.y > a.y*b.x) - + # General purpose polygon mesh def processGeometryIndexedFaceSet(self, node): faces = readIndex(node, "coordIndex") ccw = self.startCoordMesh(node, sum([len(face) - 2 for face in faces])) - + for face in faces: if len(face) == 3: self.addTriFlip(face[0], face[1], face[2], ccw) elif len(face) > 3: self.addFace(face, ccw) - + geometry_importers = { "IndexedFaceSet": processGeometryIndexedFaceSet, "IndexedTriangleSet": processGeometryIndexedTriangleSet, @@ -695,7 +696,7 @@ class X3DReader(MeshReader): "Cylinder": processGeometryCylinder, "Cone": processGeometryCone } - + # Parses the Coordinate.@point field, fills the verts array. def readVertices(self, node): for c in node: @@ -704,9 +705,9 @@ class X3DReader(MeshReader): if not c is None: pt = c.attrib.get("point") if pt: - # allow the list of float values in 'point' attribute to - # be separated by commas or whitespace as per spec of - # XML encoding of X3D + # allow the list of float values in 'point' attribute to + # be separated by commas or whitespace as per spec of + # XML encoding of X3D # Ref ISO/IEC 19776-1:2015 : Section 5.1.2 co = [float(x) for vec in pt.split(',') for x in vec.split()] num_verts = len(co) // 3 @@ -715,57 +716,57 @@ class X3DReader(MeshReader): # Group by three for i in range(num_verts): self.verts[:3,i] = co[3*i:3*i+3] - + # Mesh builder helpers - + def reserveFaceAndVertexCount(self, num_faces, num_verts): # Unlike the Cura MeshBuilder, we use 4-vectors stored as columns for easier transform self.verts = numpy.zeros((4, num_verts), dtype=numpy.float32) self.verts[3,:] = numpy.ones((num_verts), dtype=numpy.float32) self.num_verts = 0 self.reserveFaceCount(num_faces) - + def reserveFaceCount(self, num_faces): self.faces = numpy.zeros((num_faces, 3), dtype=numpy.int32) self.num_faces = 0 - + def getVertexCount(self): return self.verts.shape[1] - + def addVertex(self, x, y, z): self.verts[0, self.num_verts] = x self.verts[1, self.num_verts] = y self.verts[2, self.num_verts] = z self.num_verts += 1 - + # Indices are 0-based for this shape, but they won't be zero-based in the merged mesh def addTri(self, a, b, c): self.faces[self.num_faces, 0] = self.index_base + a self.faces[self.num_faces, 1] = self.index_base + b self.faces[self.num_faces, 2] = self.index_base + c self.num_faces += 1 - + def addTriFlip(self, a, b, c, ccw): if ccw: self.addTri(a, b, c) else: self.addTri(b, a, c) - + # Needs to be convex, but not necessaily planar # Assumed ccw, cut along the ac diagonal def addQuad(self, a, b, c, d): self.addTri(a, b, c) self.addTri(c, d, a) - + def addQuadFlip(self, a, b, c, d, ccw): if ccw: self.addTri(a, b, c) self.addTri(c, d, a) else: self.addTri(a, c, b) - self.addTri(c, a, d) - - + self.addTri(c, a, d) + + # Arbitrary polygon triangulation. # Doesn't assume convexity and doesn't check the "convex" flag in the file. # Works by the "cutting of ears" algorithm: @@ -776,13 +777,13 @@ class X3DReader(MeshReader): def addFace(self, indices, ccw): # Resolve indices to coordinates for faster math face = [Vector(data=self.verts[0:3, i]) for i in indices] - + # Need a normal to the plane so that we can know which vertices form inner angles normal = findOuterNormal(face) - + if not normal: # Couldn't find an outer edge, non-planar polygon maybe? return - + # Find the vertex with the smallest inner angle and no points inside, cut off. Repeat until done n = len(face) vi = [i for i in range(n)] # We'll be using this to kick vertices from the face @@ -807,17 +808,17 @@ class X3DReader(MeshReader): if pointInsideTriangle(vx, next, prev, nextXprev): no_points_inside = False break - + if no_points_inside: max_cos = cos i_min = i - + self.addTriFlip(indices[vi[(i_min + n - 1) % n]], indices[vi[i_min]], indices[vi[(i_min + 1) % n]], ccw) vi.pop(i_min) n -= 1 self.addTriFlip(indices[vi[0]], indices[vi[1]], indices[vi[2]], ccw) - + # ------------------------------------------------------------ # X3D field parsers # ------------------------------------------------------------ @@ -844,7 +845,7 @@ def readInt(node, attr, default): if not s: return default return int(s, 0) - + def readBoolean(node, attr, default): s = node.attrib.get(attr) if not s: @@ -873,8 +874,8 @@ def readIndex(node, attr): chunk.append(v[i]) if chunk: chunks.append(chunk) - return chunks - + return chunks + # Given a face as a sequence of vectors, returns a normal to the polygon place that forms a right triple # with a vector along the polygon sequence and a vector backwards def findOuterNormal(face): @@ -894,25 +895,25 @@ def findOuterNormal(face): if rejection.dot(prev_rejection) < -EPSILON: # points on both sides of the edge - not an outer one is_outer = False break - elif rejection.length() > prev_rejection.length(): # Pick a greater rejection for numeric stability + elif rejection.length() > prev_rejection.length(): # Pick a greater rejection for numeric stability prev_rejection = rejection - + if is_outer: # Found an outer edge, prev_rejection is the rejection inside the face. Generate a normal. return edge.cross(prev_rejection) return False -# Given two *collinear* vectors a and b, returns the coefficient that takes b to a. +# Given two *collinear* vectors a and b, returns the coefficient that takes b to a. # No error handling. -# For stability, taking the ration between the biggest coordinates would be better... +# For stability, taking the ration between the biggest coordinates would be better... def ratio(a, b): if b.x > EPSILON or b.x < -EPSILON: return a.x / b.x elif b.y > EPSILON or b.y < -EPSILON: return a.y / b.y else: - return a.z / b.z - + return a.z / b.z + def pointInsideTriangle(vx, next, prev, nextXprev): vxXprev = vx.cross(prev) r = ratio(vxXprev, nextXprev) @@ -921,4 +922,4 @@ def pointInsideTriangle(vx, next, prev, nextXprev): vxXnext = vx.cross(next); s = -ratio(vxXnext, nextXprev) return s > 0 and (s + r) < 1 - + diff --git a/resources/qml/Cura.qml b/resources/qml/Cura.qml index 03d0ce9ecd..29d8b439a8 100644 --- a/resources/qml/Cura.qml +++ b/resources/qml/Cura.qml @@ -409,6 +409,7 @@ UM.MainWindow { id: objectsList; visible: false; + //z: -10; anchors { top: objectsButton.top; diff --git a/resources/qml/ObjectsList.qml b/resources/qml/ObjectsList.qml index 4a7c84c41e..cde7f065fa 100644 --- a/resources/qml/ObjectsList.qml +++ b/resources/qml/ObjectsList.qml @@ -55,7 +55,7 @@ Rectangle //anchors.right: parent.right width: parent.width - 2 * UM.Theme.getSize("default_margin").width - 30 text: Cura.ObjectManager.getItem(index).name; - color: Cura.ObjectManager.getItem(index).isSelected ? palette.highlightedText : palette.text + color: Cura.ObjectManager.getItem(index).isSelected ? palette.highlightedText : (Cura.ObjectManager.getItem(index).isOutsideBuildArea ? palette.mid : palette.text) elide: Text.ElideRight } @@ -95,7 +95,7 @@ Rectangle topMargin: UM.Theme.getSize("default_margin").height; left: parent.left; leftMargin: UM.Theme.getSize("default_margin").height; - bottom: buildPlateSelection.top; + bottom: filterBuildPlateCheckbox.top; bottomMargin: UM.Theme.getSize("default_margin").height; } @@ -115,6 +115,25 @@ Rectangle } } + + CheckBox + { + id: filterBuildPlateCheckbox + checked: boolCheck(UM.Preferences.getValue("view/filter_current_build_plate")) + onClicked: UM.Preferences.setValue("view/filter_current_build_plate", checked) + + text: catalog.i18nc("@option:check","Filter active build plate"); + + anchors + { + left: parent.left; + topMargin: UM.Theme.getSize("default_margin").height; + bottomMargin: UM.Theme.getSize("default_margin").height; + leftMargin: UM.Theme.getSize("default_margin").height; + bottom: buildPlateSelection.top; + } + } + ListModel { id: buildPlatesModel diff --git a/resources/qml/Preferences/GeneralPage.qml b/resources/qml/Preferences/GeneralPage.qml index ad6c2ce050..c74fb5720d 100644 --- a/resources/qml/Preferences/GeneralPage.qml +++ b/resources/qml/Preferences/GeneralPage.qml @@ -304,7 +304,7 @@ UM.PreferencesPage text: catalog.i18nc("@option:check","Slice automatically"); } } - + Item { //: Spacer @@ -451,6 +451,20 @@ UM.PreferencesPage text: catalog.i18nc("@label","Opening and saving files") } + UM.TooltipArea { + width: childrenRect.width + height: childrenRect.height + text: catalog.i18nc("@info:tooltip","Should newly loaded models be arranged on the build palte?") + + CheckBox + { + id: arrangeOnLoadCheckbox + text: catalog.i18nc("@option:check","Arrange objects on load") + checked: boolCheck(UM.Preferences.getValue("cura/arrange_objects_on_load")) + onCheckedChanged: UM.Preferences.setValue("cura/arrange_objects_on_load", checked) + } + } + UM.TooltipArea { width: childrenRect.width height: childrenRect.height From c73247016912af860ce1a6a351ae33a64c09d06f Mon Sep 17 00:00:00 2001 From: Jack Ha Date: Mon, 13 Nov 2017 13:01:58 +0100 Subject: [PATCH 006/102] CURA-4525 refined the condition when to reslice build plates; however from the layer view it (still) doesn't always show the layers --- cura/Scene/BuildPlateDecorator.py | 3 + .../CuraEngineBackend/CuraEngineBackend.py | 112 +++++++++++------- 2 files changed, 74 insertions(+), 41 deletions(-) diff --git a/cura/Scene/BuildPlateDecorator.py b/cura/Scene/BuildPlateDecorator.py index 2c886c7444..41921a120f 100644 --- a/cura/Scene/BuildPlateDecorator.py +++ b/cura/Scene/BuildPlateDecorator.py @@ -26,5 +26,8 @@ class BuildPlateDecorator(SceneNodeDecorator): def getPreviousBuildPlateNumber(self): return self._previous_build_plate_number + def removePreviousBuildPlateNumber(self): + self._previous_build_plate_number = None + def __deepcopy__(self, memo): return BuildPlateDecorator() diff --git a/plugins/CuraEngineBackend/CuraEngineBackend.py b/plugins/CuraEngineBackend/CuraEngineBackend.py index 67d3fe8c42..78e1f9f8d6 100755 --- a/plugins/CuraEngineBackend/CuraEngineBackend.py +++ b/plugins/CuraEngineBackend/CuraEngineBackend.py @@ -16,6 +16,7 @@ from UM.Scene.Iterator.DepthFirstIterator import DepthFirstIterator from UM.Qt.Duration import DurationFormat from PyQt5.QtCore import QObject, pyqtSlot +from collections import defaultdict from cura.Settings.ExtruderManager import ExtruderManager from . import ProcessSlicedLayersJob from . import StartSliceJob @@ -117,7 +118,7 @@ class CuraEngineBackend(QObject, Backend): self._backend_log_max_lines = 20000 # Maximum number of lines to buffer self._error_message = None # Pop-up message that shows errors. - self._last_num_objects = 0 # Count number of objects to see if there is something changed + self._last_num_objects = defaultdict(int) # Count number of objects to see if there is something changed self._postponed_scene_change_sources = [] # scene change is postponed (by a tool) self.backendQuit.connect(self._onBackendQuit) @@ -192,17 +193,26 @@ class CuraEngineBackend(QObject, Backend): ## Perform a slice of the scene. def slice(self): - Logger.log("d", "starting to slice again!") + Logger.log("d", "starting to slice!") self._slice_start_time = time() if not self._build_plates_to_be_sliced: self.processingProgress.emit(1.0) self.backendStateChange.emit(BackendState.Done) Logger.log("w", "Slice unnecessary, nothing has changed that needs reslicing.") return - if Application.getInstance().getPrintInformation(): - Application.getInstance().getPrintInformation().setToZeroPrintInformation() + + # see if we really have to slice + build_plate_to_be_sliced = self._build_plates_to_be_sliced.pop(0) + num_objects = self._numObjects() + if build_plate_to_be_sliced not in num_objects or num_objects[build_plate_to_be_sliced] == 0: + Logger.log("d", " ## Build plate %s has 0 objects to be sliced, skipping", build_plate_to_be_sliced) + self._invokeSlice() self._stored_layer_data = [] + self._stored_optimized_layer_data[build_plate_to_be_sliced] = [] + + if Application.getInstance().getPrintInformation(): + Application.getInstance().getPrintInformation().setToZeroPrintInformation() if self._process is None: self._createSocket() @@ -218,8 +228,7 @@ class CuraEngineBackend(QObject, Backend): slice_message = self._socket.createMessage("cura.proto.Slice") self._start_slice_job = StartSliceJob.StartSliceJob(slice_message) - self._start_slice_job_build_plate = self._build_plates_to_be_sliced.pop(0) - self._stored_optimized_layer_data[self._start_slice_job_build_plate] = [] + self._start_slice_job_build_plate = build_plate_to_be_sliced self._start_slice_job.setBuildPlate(self._start_slice_job_build_plate) self._start_slice_job.start() self._start_slice_job.finished.connect(self._onStartSliceCompleted) @@ -364,40 +373,62 @@ class CuraEngineBackend(QObject, Backend): self.disableTimer() return False + ## Return a dict with number of objects per build plate + def _numObjects(self): + num_objects = defaultdict(int) + for node in DepthFirstIterator(self._scene.getRoot()): + # Only count sliceable objects + if node.callDecoration("isSliceable"): + build_plate_number = node.callDecoration("getBuildPlateNumber") + num_objects[build_plate_number] += 1 + return num_objects + ## Listener for when the scene has changed. # # This should start a slice if the scene is now ready to slice. # # \param source The scene node that was changed. def _onSceneChanged(self, source): - Logger.log("d", " ##### scene changed: %s", source) if not issubclass(type(source), SceneNode): return - root_scene_nodes_changed = False - build_plates_changed = set() + build_plate_changed = set() + source_build_plate_number = source.callDecoration("getBuildPlateNumber") if source == self._scene.getRoot(): - num_objects = 0 + # we got the root node + num_objects = self._numObjects() + # num_objects = defaultdict(int) for node in DepthFirstIterator(self._scene.getRoot()): - # Only count sliceable objects - if node.callDecoration("isSliceable"): - num_objects += 1 - build_plates_changed.add(node.callDecoration("getBuildPlateNumber")) - build_plates_changed.add(node.callDecoration("getPreviousBuildPlateNumber")) - if num_objects != self._last_num_objects: - self._last_num_objects = num_objects - root_scene_nodes_changed = True - # else: - # return # ?? - build_plates_changed.discard(None) - build_plates_changed.discard(-1) # object not on build plate - Logger.log("d", " #### build plates changed: %s", build_plates_changed) + # # Only count sliceable objects + # if node.callDecoration("isSliceable"): + # build_plate_number = node.callDecoration("getBuildPlateNumber") + # num_objects[build_plate_number] += 1 + node.callDecoration("removePreviousBuildPlateNumber") # use the previous build plate number one time + for build_plate_number in list(self._last_num_objects.keys()) + list(num_objects.keys()): + if build_plate_number not in self._last_num_objects or num_objects[build_plate_number] != self._last_num_objects[build_plate_number]: + self._last_num_objects[build_plate_number] = num_objects[build_plate_number] + build_plate_changed.add(build_plate_number) + else: + # we got a single scenenode, how do we know if it's changed? + # build_plate_changed.add(source_build_plate_number) + # build_plate_changed.add(source.callDecoration("getPreviousBuildPlateNumber")) + # source.callDecoration("removePreviousBuildPlateNumber") # use the previous build plate number one time + if not source.callDecoration("isGroup"): + if source.getMeshData() is None: + return + if source.getMeshData().getVertices() is None: + return - # if not source.callDecoration("isGroup") and not root_scene_nodes_changed: - # if source.getMeshData() is None: - # return - # if source.getMeshData().getVertices() is None: - # return + # we got a single object and it passed all the tests of being changed + build_plate_changed.add(source_build_plate_number) + build_plate_changed.add(source.callDecoration("getPreviousBuildPlateNumber")) + source.callDecoration("removePreviousBuildPlateNumber") # use the previous build plate number one time + + build_plate_changed.discard(None) + build_plate_changed.discard(-1) # object not on build plate + if not build_plate_changed: + return + # Logger.log("d", " #### build plates changed: %s", build_plate_changed) if self._tool_active: # do it later, each source only has to be done once @@ -405,19 +436,18 @@ class CuraEngineBackend(QObject, Backend): self._postponed_scene_change_sources.append(source) return - if build_plates_changed: - Logger.log("d", " going to reslice") - self.stopSlicing() - for build_plate_number in build_plates_changed: - if build_plate_number not in self._build_plates_to_be_sliced: - self._build_plates_to_be_sliced.append(build_plate_number) - self.processingProgress.emit(0.0) - self.backendStateChange.emit(BackendState.NotStarted) - if not self._use_timer: - # With manually having to slice, we want to clear the old invalid layer data. - self._clearLayerData(build_plates_changed) + Logger.log("d", " going to reslice: %s", build_plate_changed) + self.stopSlicing() + for build_plate_number in build_plate_changed: + if build_plate_number not in self._build_plates_to_be_sliced: + self._build_plates_to_be_sliced.append(build_plate_number) + self.processingProgress.emit(0.0) + self.backendStateChange.emit(BackendState.NotStarted) + if not self._use_timer: + # With manually having to slice, we want to clear the old invalid layer data. + self._clearLayerData(build_plate_changed) - self._invokeSlice() + self._invokeSlice() # #self.needsSlicing() # self.stopSlicing() @@ -445,7 +475,7 @@ class CuraEngineBackend(QObject, Backend): def _clearLayerData(self, build_plate_numbers = set()): for node in DepthFirstIterator(self._scene.getRoot()): if node.callDecoration("getLayerData"): - if node.callDecoration("getBuildPlateNumber") in build_plate_numbers or not build_plate_numbers: + if not build_plate_numbers or node.callDecoration("getBuildPlateNumber") in build_plate_numbers: node.getParent().removeChild(node) def markSliceAll(self): From 040cc31079e904aa10a3519f44191d33a7ca5d5a Mon Sep 17 00:00:00 2001 From: Jack Ha Date: Mon, 13 Nov 2017 14:25:22 +0100 Subject: [PATCH 007/102] CURA-4525 layer data viewing seems fixed, although after moving an object to a different build plate triggers the reslice only after deselecting --- cura/Scene/BuildPlateDecorator.py | 9 --- .../CuraEngineBackend/CuraEngineBackend.py | 58 +++++++++---------- .../ProcessSlicedLayersJob.py | 3 + plugins/CuraEngineBackend/StartSliceJob.py | 3 +- 4 files changed, 32 insertions(+), 41 deletions(-) diff --git a/cura/Scene/BuildPlateDecorator.py b/cura/Scene/BuildPlateDecorator.py index 41921a120f..6b4dcfc970 100644 --- a/cura/Scene/BuildPlateDecorator.py +++ b/cura/Scene/BuildPlateDecorator.py @@ -7,13 +7,11 @@ class BuildPlateDecorator(SceneNodeDecorator): def __init__(self, build_plate_number = -1): super().__init__() self._build_plate_number = None - self._previous_build_plate_number = None self.setBuildPlateNumber(build_plate_number) def setBuildPlateNumber(self, nr): # Make sure that groups are set correctly # setBuildPlateForSelection in CuraActions makes sure that no single childs are set. - self._previous_build_plate_number = self._build_plate_number self._build_plate_number = nr if self._node and self._node.callDecoration("isGroup"): for child in self._node.getChildren(): @@ -22,12 +20,5 @@ class BuildPlateDecorator(SceneNodeDecorator): def getBuildPlateNumber(self): return self._build_plate_number - # Used to determine from what build plate the node moved. - def getPreviousBuildPlateNumber(self): - return self._previous_build_plate_number - - def removePreviousBuildPlateNumber(self): - self._previous_build_plate_number = None - def __deepcopy__(self, memo): return BuildPlateDecorator() diff --git a/plugins/CuraEngineBackend/CuraEngineBackend.py b/plugins/CuraEngineBackend/CuraEngineBackend.py index 78e1f9f8d6..ebe4634786 100755 --- a/plugins/CuraEngineBackend/CuraEngineBackend.py +++ b/plugins/CuraEngineBackend/CuraEngineBackend.py @@ -177,6 +177,7 @@ class CuraEngineBackend(QObject, Backend): self._createSocket() if self._process_layers_job: # We were processing layers. Stop that, the layers are going to change soon. + Logger.log("d", "Aborting process layers job...") self._process_layers_job.abort() self._process_layers_job = None @@ -201,12 +202,19 @@ class CuraEngineBackend(QObject, Backend): Logger.log("w", "Slice unnecessary, nothing has changed that needs reslicing.") return + if self._process_layers_job: + Logger.log("d", " ## Process layers job still busy, trying later") + self._invokeSlice() + return + # see if we really have to slice build_plate_to_be_sliced = self._build_plates_to_be_sliced.pop(0) + Logger.log("d", "Going to slice build plate [%s]!" % build_plate_to_be_sliced) num_objects = self._numObjects() if build_plate_to_be_sliced not in num_objects or num_objects[build_plate_to_be_sliced] == 0: Logger.log("d", " ## Build plate %s has 0 objects to be sliced, skipping", build_plate_to_be_sliced) self._invokeSlice() + return self._stored_layer_data = [] self._stored_optimized_layer_data[build_plate_to_be_sliced] = [] @@ -326,17 +334,18 @@ class CuraEngineBackend(QObject, Backend): else: self.backendStateChange.emit(BackendState.NotStarted) - if job.getResult() == StartSliceJob.StartJobResult.NothingToSlice: - if Application.getInstance().platformActivity: - self._error_message = Message(catalog.i18nc("@info:status", "Nothing to slice because none of the models fit the build volume. Please scale or rotate models to fit."), - title = catalog.i18nc("@info:title", "Unable to slice")) - self._error_message.show() - #self.backendStateChange.emit(BackendState.Error) - else: - #self.backendStateChange.emit(BackendState.NotStarted) - pass - self._invokeSlice() - return + # Doesn't occur anymore, is handled in slice() + # if job.getResult() == StartSliceJob.StartJobResult.NothingToSlice: + # if Application.getInstance().platformActivity: + # self._error_message = Message(catalog.i18nc("@info:status", "Nothing to slice because none of the models fit the build volume. Please scale or rotate models to fit."), + # title = catalog.i18nc("@info:title", "Unable to slice")) + # self._error_message.show() + # #self.backendStateChange.emit(BackendState.Error) + # else: + # #self.backendStateChange.emit(BackendState.NotStarted) + # pass + # self._invokeSlice() + # return # Preparation completed, send it to the backend. self._socket.sendMessage(job.getSliceMessage()) @@ -397,38 +406,24 @@ class CuraEngineBackend(QObject, Backend): if source == self._scene.getRoot(): # we got the root node num_objects = self._numObjects() - # num_objects = defaultdict(int) - for node in DepthFirstIterator(self._scene.getRoot()): - # # Only count sliceable objects - # if node.callDecoration("isSliceable"): - # build_plate_number = node.callDecoration("getBuildPlateNumber") - # num_objects[build_plate_number] += 1 - node.callDecoration("removePreviousBuildPlateNumber") # use the previous build plate number one time for build_plate_number in list(self._last_num_objects.keys()) + list(num_objects.keys()): if build_plate_number not in self._last_num_objects or num_objects[build_plate_number] != self._last_num_objects[build_plate_number]: self._last_num_objects[build_plate_number] = num_objects[build_plate_number] build_plate_changed.add(build_plate_number) else: - # we got a single scenenode, how do we know if it's changed? - # build_plate_changed.add(source_build_plate_number) - # build_plate_changed.add(source.callDecoration("getPreviousBuildPlateNumber")) - # source.callDecoration("removePreviousBuildPlateNumber") # use the previous build plate number one time + # we got a single scenenode if not source.callDecoration("isGroup"): if source.getMeshData() is None: return if source.getMeshData().getVertices() is None: return - # we got a single object and it passed all the tests of being changed build_plate_changed.add(source_build_plate_number) - build_plate_changed.add(source.callDecoration("getPreviousBuildPlateNumber")) - source.callDecoration("removePreviousBuildPlateNumber") # use the previous build plate number one time build_plate_changed.discard(None) build_plate_changed.discard(-1) # object not on build plate if not build_plate_changed: return - # Logger.log("d", " #### build plates changed: %s", build_plate_changed) if self._tool_active: # do it later, each source only has to be done once @@ -443,9 +438,9 @@ class CuraEngineBackend(QObject, Backend): self._build_plates_to_be_sliced.append(build_plate_number) self.processingProgress.emit(0.0) self.backendStateChange.emit(BackendState.NotStarted) - if not self._use_timer: + # if not self._use_timer: # With manually having to slice, we want to clear the old invalid layer data. - self._clearLayerData(build_plate_changed) + self._clearLayerData(build_plate_changed) self._invokeSlice() @@ -568,6 +563,7 @@ class CuraEngineBackend(QObject, Backend): active_build_plate = Application.getInstance().activeBuildPlate if self._layer_view_active and (self._process_layers_job is None or not self._process_layers_job.isRunning()) and active_build_plate == self._start_slice_job_build_plate: self._startProcessSlicedLayersJob(active_build_plate) + # self._onActiveViewChanged() self._start_slice_job_build_plate = None Logger.log("d", "See if there is more to slice...") @@ -676,7 +672,6 @@ class CuraEngineBackend(QObject, Backend): self._process_layers_job.setBuildPlate(build_plate_number) self._process_layers_job.finished.connect(self._onProcessLayersFinished) self._process_layers_job.start() - del self._stored_optimized_layer_data[build_plate_number] ## Called when the user changes the active view mode. def _onActiveViewChanged(self): @@ -689,7 +684,7 @@ class CuraEngineBackend(QObject, Backend): # There is data and we're not slicing at the moment # if we are slicing, there is no need to re-calculate the data as it will be invalid in a moment. # TODO: what build plate I am slicing - if active_build_plate in self._stored_optimized_layer_data and not self._slicing: + if active_build_plate in self._stored_optimized_layer_data and not self._slicing and not self._process_layers_job: self._startProcessSlicedLayersJob(active_build_plate) else: self._layer_view_active = False @@ -726,7 +721,10 @@ class CuraEngineBackend(QObject, Backend): self._onChanged() def _onProcessLayersFinished(self, job): + del self._stored_optimized_layer_data[job.getBuildPlate()] self._process_layers_job = None + Logger.log("d", "See if there is more to slice(2)...") + self._invokeSlice() ## Connect slice function to timer. def enableTimer(self): diff --git a/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py b/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py index 1e56f2dd35..916cc4d914 100644 --- a/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py +++ b/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py @@ -65,6 +65,9 @@ class ProcessSlicedLayersJob(Job): def setBuildPlate(self, new_value): self._build_plate_number = new_value + def getBuildPlate(self): + return self._build_plate_number + def run(self): Logger.log("d", "########## Processing new layer for [%s]..." % self._build_plate_number) start_time = time() diff --git a/plugins/CuraEngineBackend/StartSliceJob.py b/plugins/CuraEngineBackend/StartSliceJob.py index f6abe94702..cf6043c6cb 100644 --- a/plugins/CuraEngineBackend/StartSliceJob.py +++ b/plugins/CuraEngineBackend/StartSliceJob.py @@ -120,7 +120,7 @@ class StartSliceJob(Job): with self._scene.getSceneLock(): # Remove old layer data. for node in DepthFirstIterator(self._scene.getRoot()): - if node.callDecoration("getLayerData"): + if node.callDecoration("getLayerData") and node.callDecoration("getBuildPlateNumber") == self._build_plate_number: node.getParent().removeChild(node) break @@ -155,7 +155,6 @@ class StartSliceJob(Job): temp_list.append(node) Job.yieldThread() - Logger.log("d", " objects to be sliced: %s", temp_list) if temp_list: object_groups.append(temp_list) From 8e5e555344bb1b7e59779390358ecbd3e4ae1501 Mon Sep 17 00:00:00 2001 From: Jack Ha Date: Mon, 13 Nov 2017 16:27:15 +0100 Subject: [PATCH 008/102] CURA-4525 Send all build plate gcodes to printer at one press of the button :-) --- cura/CuraApplication.py | 19 +++++++++++- cura/GCodeListDecorator.py | 2 +- .../CuraEngineBackend/CuraEngineBackend.py | 16 ++++++---- .../NetworkClusterPrinterOutputDevice.py | 30 ++++++++++++++----- 4 files changed, 51 insertions(+), 16 deletions(-) diff --git a/cura/CuraApplication.py b/cura/CuraApplication.py index c1c894c735..de78f808cd 100755 --- a/cura/CuraApplication.py +++ b/cura/CuraApplication.py @@ -258,6 +258,7 @@ class CuraApplication(QtApplication): self._i18n_catalog = i18nCatalog("cura") self.getController().getScene().sceneChanged.connect(self.updatePlatformActivity) + self.getController().getScene().sceneChanged.connect(self.updateMaxBuildPlate) # it may be a bit inefficient when changing a lot simultaneously self.getController().toolOperationStopped.connect(self._onToolOperationStopped) self.getController().contextMenuRequested.connect(self._onContextMenuRequested) @@ -1523,7 +1524,7 @@ class CuraApplication(QtApplication): @pyqtSlot() def newBuildPlate(self): Logger.log("d", "New build plate") - self._num_build_plates += 1 + #self._num_build_plates += 1 self.numBuildPlatesChanged.emit() @pyqtProperty(int, notify = numBuildPlatesChanged) @@ -1533,3 +1534,19 @@ class CuraApplication(QtApplication): @pyqtProperty(int, notify = activeBuildPlateChanged) def activeBuildPlate(self): return self._active_build_plate + + def updateMaxBuildPlate(self, source): + if not issubclass(type(source), SceneNode): + return + num_build_plates = self._calcMaxBuildPlate() + if num_build_plates != self._num_build_plates: + self._num_build_plates = num_build_plates + self.numBuildPlatesChanged.emit() + + def _calcMaxBuildPlate(self): + max_build_plate = 0 + for node in DepthFirstIterator(self.getController().getScene().getRoot()): + if node.callDecoration("isSliceable"): + build_plate_number = node.callDecoration("getBuildPlateNumber") + max_build_plate = max(build_plate_number, max_build_plate) + return max_build_plate diff --git a/cura/GCodeListDecorator.py b/cura/GCodeListDecorator.py index 5738d0a7f2..66ecf3beac 100644 --- a/cura/GCodeListDecorator.py +++ b/cura/GCodeListDecorator.py @@ -4,7 +4,7 @@ from UM.Scene.SceneNodeDecorator import SceneNodeDecorator class GCodeListDecorator(SceneNodeDecorator): def __init__(self): super().__init__() - self._gcode_list = [] + self._gcode_list = {} # [] def getGCodeList(self): return self._gcode_list diff --git a/plugins/CuraEngineBackend/CuraEngineBackend.py b/plugins/CuraEngineBackend/CuraEngineBackend.py index ebe4634786..f8b68e118a 100755 --- a/plugins/CuraEngineBackend/CuraEngineBackend.py +++ b/plugins/CuraEngineBackend/CuraEngineBackend.py @@ -230,7 +230,9 @@ class CuraEngineBackend(QObject, Backend): self.processingProgress.emit(0.0) self.backendStateChange.emit(BackendState.NotStarted) - self._scene.gcode_list = [] + if not hasattr(self._scene, "gcode_list"): + self._scene.gcode_list = {} + self._scene.gcode_list[build_plate_to_be_sliced] = [] #[] indexed by build plate number self._slicing = True self.slicingStarted.emit() @@ -370,7 +372,7 @@ class CuraEngineBackend(QObject, Backend): self.backendStateChange.emit(BackendState.Disabled) gcode_list = node.callDecoration("getGCodeList") if gcode_list is not None: - self._scene.gcode_list = gcode_list + self._scene.gcode_list[node.callDecoration("getBuildPlateNumber")] = gcode_list if self._use_timer == enable_timer: return self._use_timer @@ -546,14 +548,16 @@ class CuraEngineBackend(QObject, Backend): self.backendStateChange.emit(BackendState.Done) self.processingProgress.emit(1.0) - for line in self._scene.gcode_list: + gcode_list = self._scene.gcode_list[self._start_slice_job_build_plate] + for index, line in enumerate(gcode_list): replaced = line.replace("{print_time}", str(Application.getInstance().getPrintInformation().currentPrintTime.getDisplayString(DurationFormat.Format.ISO8601))) replaced = replaced.replace("{filament_amount}", str(Application.getInstance().getPrintInformation().materialLengths)) replaced = replaced.replace("{filament_weight}", str(Application.getInstance().getPrintInformation().materialWeights)) replaced = replaced.replace("{filament_cost}", str(Application.getInstance().getPrintInformation().materialCosts)) replaced = replaced.replace("{jobname}", str(Application.getInstance().getPrintInformation().jobName)) - self._scene.gcode_list[self._scene.gcode_list.index(line)] = replaced + #gcode_list[gcode_list.index(line)] = replaced + gcode_list[index] = replaced self._slicing = False #self._need_slicing = False @@ -576,14 +580,14 @@ class CuraEngineBackend(QObject, Backend): # # \param message The protobuf message containing g-code, encoded as UTF-8. def _onGCodeLayerMessage(self, message): - self._scene.gcode_list.append(message.data.decode("utf-8", "replace")) + self._scene.gcode_list[self._start_slice_job_build_plate].append(message.data.decode("utf-8", "replace")) ## Called when a g-code prefix message is received from the engine. # # \param message The protobuf message containing the g-code prefix, # encoded as UTF-8. def _onGCodePrefixMessage(self, message): - self._scene.gcode_list.insert(0, message.data.decode("utf-8", "replace")) + self._scene.gcode_list[self._start_slice_job_build_plate].insert(0, message.data.decode("utf-8", "replace")) ## Creates a new socket connection. def _createSocket(self): diff --git a/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py b/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py index b6e94121f8..14a60a6b22 100644 --- a/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py +++ b/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py @@ -254,6 +254,10 @@ class NetworkClusterPrinterOutputDevice(NetworkPrinterOutputDevice.NetworkPrinte self._selected_printer = self._automatic_printer # reset to default option self._request_job = [nodes, file_name, filter_by_machine, file_handler, kwargs] + # the build plates to be sent + self._job_list = list(getattr(Application.getInstance().getController().getScene(), "gcode_list").keys()) + Logger.log("d", "build plates to be sent to printer: %s", (self._job_list)) + if self._stage != OutputStage.ready: if self._error_message: self._error_message.hide() @@ -263,12 +267,14 @@ class NetworkClusterPrinterOutputDevice(NetworkPrinterOutputDevice.NetworkPrinte self._error_message.show() return + self._add_build_plate_number = len(self._job_list) > 1 if len(self._printers) > 1: self.spawnPrintView() # Ask user how to print it. elif len(self._printers) == 1: # If there is only one printer, don't bother asking. self.selectAutomaticPrinter() self.sendPrintJob() + else: # Cluster has no printers, warn the user of this. if self._error_message: @@ -283,28 +289,34 @@ class NetworkClusterPrinterOutputDevice(NetworkPrinterOutputDevice.NetworkPrinte @pyqtSlot() def sendPrintJob(self): nodes, file_name, filter_by_machine, file_handler, kwargs = self._request_job - require_printer_name = self._selected_printer["unique_name"] + output_build_plate_number = self._job_list.pop(0) + gcode = getattr(Application.getInstance().getController().getScene(), "gcode_list")[output_build_plate_number] self._send_gcode_start = time.time() - Logger.log("d", "Sending print job [%s] to host..." % file_name) + Logger.log("d", "Sending print job [%s] to host, build plate [%s]..." % (file_name, output_build_plate_number)) if self._stage != OutputStage.ready: Logger.log("d", "Unable to send print job as the state is %s", self._stage) raise OutputDeviceError.DeviceBusyError() self._stage = OutputStage.uploading - self._file_name = "%s.gcode.gz" % file_name + if self._add_build_plate_number: + self._file_name = "%s_%d.gcode.gz" % (file_name, output_build_plate_number) + else: + self._file_name = "%s.gcode.gz" % (file_name) self._showProgressMessage() - new_request = self._buildSendPrintJobHttpRequest(require_printer_name) + require_printer_name = self._selected_printer["unique_name"] + + new_request = self._buildSendPrintJobHttpRequest(require_printer_name, gcode) if new_request is None or self._stage != OutputStage.uploading: return self._request = new_request self._reply = self._manager.post(self._request, self._multipart) self._reply.uploadProgress.connect(self._onUploadProgress) - # See _finishedPostPrintJobRequest() + # See _finishedPrintJobPostRequest() - def _buildSendPrintJobHttpRequest(self, require_printer_name): + def _buildSendPrintJobHttpRequest(self, require_printer_name, gcode): api_url = QUrl(self._api_base_uri + "print_jobs/") request = QNetworkRequest(api_url) # Create multipart request and add the g-code. @@ -313,9 +325,8 @@ class NetworkClusterPrinterOutputDevice(NetworkPrinterOutputDevice.NetworkPrinte # Add gcode part = QHttpPart() part.setHeader(QNetworkRequest.ContentDispositionHeader, - 'form-data; name="file"; filename="%s"' % self._file_name) + 'form-data; name="file"; filename="%s"' % (self._file_name)) - gcode = getattr(Application.getInstance().getController().getScene(), "gcode_list") compressed_gcode = self._compressGcode(gcode) if compressed_gcode is None: return None # User aborted print, so stop trying. @@ -401,6 +412,9 @@ class NetworkClusterPrinterOutputDevice(NetworkPrinterOutputDevice.NetworkPrinte self._cleanupRequest() + if self._job_list: # start sending next job + self.sendPrintJob() + def _showRequestFailedMessage(self, reply): if reply is not None: Logger.log("w", "Unable to send print job to group {cluster_name}: {error_string} ({error})".format( From 97f61366a83a24e0fa5c5664dc513e29b70bd5de Mon Sep 17 00:00:00 2001 From: Jack Ha Date: Mon, 13 Nov 2017 16:51:07 +0100 Subject: [PATCH 009/102] CURA-4525 fix accidently remove all scenenodes when deleteAll --- cura/CuraApplication.py | 2 +- resources/qml/ObjectsList.qml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/cura/CuraApplication.py b/cura/CuraApplication.py index de78f808cd..7667d6dad8 100755 --- a/cura/CuraApplication.py +++ b/cura/CuraApplication.py @@ -1040,7 +1040,7 @@ class CuraApplication(QtApplication): nodes = [] for node in DepthFirstIterator(self.getController().getScene().getRoot()): - if not issubclass(type(node), SceneNode): + if type(node) not in {SceneNode, CuraSceneNode}: continue if (not node.getMeshData() and not node.callDecoration("getLayerData")) and not node.callDecoration("isGroup"): continue # Node that doesnt have a mesh and is not a group. diff --git a/resources/qml/ObjectsList.qml b/resources/qml/ObjectsList.qml index cde7f065fa..4eeb0cd568 100644 --- a/resources/qml/ObjectsList.qml +++ b/resources/qml/ObjectsList.qml @@ -54,7 +54,7 @@ Rectangle anchors.leftMargin: UM.Theme.getSize("default_margin").width //anchors.right: parent.right width: parent.width - 2 * UM.Theme.getSize("default_margin").width - 30 - text: Cura.ObjectManager.getItem(index).name; + text: Cura.ObjectManager.getItem(index) ? Cura.ObjectManager.getItem(index).name : ""; color: Cura.ObjectManager.getItem(index).isSelected ? palette.highlightedText : (Cura.ObjectManager.getItem(index).isOutsideBuildArea ? palette.mid : palette.text) elide: Text.ElideRight } @@ -66,7 +66,7 @@ Rectangle anchors.left: nodeNameLabel.right anchors.leftMargin: UM.Theme.getSize("default_margin").width anchors.right: parent.right - text: Cura.ObjectManager.getItem(index).buildPlateNumber; + text: Cura.ObjectManager.getItem(index) ? Cura.ObjectManager.getItem(index).buildPlateNumber : 0; color: Cura.ObjectManager.getItem(index).isSelected ? palette.highlightedText : palette.text elide: Text.ElideRight } From bd8aa8d989bb53b968ef1d114776aece8ca4bf9f Mon Sep 17 00:00:00 2001 From: Jack Ha Date: Tue, 14 Nov 2017 14:27:46 +0100 Subject: [PATCH 010/102] CURA-4525 automatic build plate menu items using BuildPlateModel --- cura/BuildPlateModel.py | 60 +++++++++++++++++ cura/ConvexHullNode.py | 2 +- cura/CuraApplication.py | 64 ++++--------------- cura/ObjectManager.py | 15 ++--- cura/Scene/CuraSceneNode.py | 4 +- .../CuraEngineBackend/CuraEngineBackend.py | 6 +- plugins/LayerView/LayerPass.py | 2 +- plugins/SolidView/SolidView.py | 4 +- resources/qml/Cura.qml | 7 +- resources/qml/Menus/ContextMenu.qml | 28 ++++---- resources/qml/Menus/ViewMenu.qml | 41 ++++++------ resources/qml/ObjectsList.qml | 50 +++------------ 12 files changed, 131 insertions(+), 152 deletions(-) diff --git a/cura/BuildPlateModel.py b/cura/BuildPlateModel.py index 139597f9cb..35a311dc5f 100644 --- a/cura/BuildPlateModel.py +++ b/cura/BuildPlateModel.py @@ -1,2 +1,62 @@ +from UM.Qt.ListModel import ListModel +from PyQt5.QtCore import pyqtSignal, pyqtProperty, pyqtSlot +from UM.Scene.Iterator.DepthFirstIterator import DepthFirstIterator +from UM.Scene.SceneNode import SceneNode +from UM.Logger import Logger +from UM.Application import Application +class BuildPlateModel(ListModel): + maxBuildPlateChanged = pyqtSignal() + activeBuildPlateChanged = pyqtSignal() + + def __init__(self): + super().__init__() + Application.getInstance().getController().getScene().sceneChanged.connect(self.updateMaxBuildPlate) # it may be a bit inefficient when changing a lot simultaneously + + self._max_build_plate = 1 # default + self._active_build_plate = 0 + + @pyqtSlot(int) + def setActiveBuildPlate(self, nr): + if nr == self._active_build_plate: + return + Logger.log("d", "Select build plate: %s" % nr) + self._active_build_plate = nr + + self.activeBuildPlateChanged.emit() + + @pyqtProperty(int, notify = activeBuildPlateChanged) + def activeBuildPlate(self): + return self._active_build_plate + + ## Return the highest build plate number + @pyqtProperty(int, notify = maxBuildPlateChanged) + def maxBuildPlate(self): + return self._max_build_plate + + def updateMaxBuildPlate(self, source): + if not issubclass(type(source), SceneNode): + return + max_build_plate = self._calcMaxBuildPlate() + changed = False + if max_build_plate != self._max_build_plate: + self._max_build_plate = max_build_plate + changed = True + if changed: + self.maxBuildPlateChanged.emit() + build_plates = [{"name": "Build Plate %d" % (i + 1), "buildPlateNumber": i} for i in range(self._max_build_plate + 1)] + self.setItems(build_plates) + self.itemsChanged.emit() + + def _calcMaxBuildPlate(self): + max_build_plate = 0 + for node in DepthFirstIterator(Application.getInstance().getController().getScene().getRoot()): + if node.callDecoration("isSliceable"): + build_plate_number = node.callDecoration("getBuildPlateNumber") + max_build_plate = max(build_plate_number, max_build_plate) + return max_build_plate + + @staticmethod + def createBuildPlateModel(): + return BuildPlateModel() diff --git a/cura/ConvexHullNode.py b/cura/ConvexHullNode.py index c6ff80670d..cec9d3d698 100644 --- a/cura/ConvexHullNode.py +++ b/cura/ConvexHullNode.py @@ -64,7 +64,7 @@ class ConvexHullNode(SceneNode): ConvexHullNode.shader.setUniformValue("u_diffuseColor", self._color) ConvexHullNode.shader.setUniformValue("u_opacity", 0.6) - if self.getParent() and self.getParent().callDecoration("getBuildPlateNumber") == Application.getInstance().activeBuildPlate: + if self.getParent() and self.getParent().callDecoration("getBuildPlateNumber") == Application.getInstance().getBuildPlateModel().activeBuildPlate: if self.getMeshData(): renderer.queueNode(self, transparent = True, shader = ConvexHullNode.shader, backface_cull = True, sort = -8) if self._convex_hull_head_mesh: diff --git a/cura/CuraApplication.py b/cura/CuraApplication.py index 7667d6dad8..08b81d568c 100755 --- a/cura/CuraApplication.py +++ b/cura/CuraApplication.py @@ -40,7 +40,6 @@ from cura.ConvexHullDecorator import ConvexHullDecorator from cura.SetParentOperation import SetParentOperation from cura.SliceableObjectDecorator import SliceableObjectDecorator from cura.BlockSlicingDecorator import BlockSlicingDecorator -# research from cura.Scene.BuildPlateDecorator import BuildPlateDecorator from cura.Scene.CuraSceneNode import CuraSceneNode @@ -83,6 +82,7 @@ from cura.Settings.GlobalStack import GlobalStack from cura.Settings.ExtruderStack import ExtruderStack from cura.ObjectManager import ObjectManager +from cura.BuildPlateModel import BuildPlateModel from PyQt5.QtCore import QUrl, pyqtSignal, pyqtProperty, QEvent, Q_ENUMS from UM.FlameProfiler import pyqtSlot @@ -211,6 +211,7 @@ class CuraApplication(QtApplication): self._machine_manager = None # This is initialized on demand. self._material_manager = None self._object_manager = None + self._build_plate_model = None self._setting_inheritance_manager = None self._simple_mode_settings_manager = None @@ -258,7 +259,6 @@ class CuraApplication(QtApplication): self._i18n_catalog = i18nCatalog("cura") self.getController().getScene().sceneChanged.connect(self.updatePlatformActivity) - self.getController().getScene().sceneChanged.connect(self.updateMaxBuildPlate) # it may be a bit inefficient when changing a lot simultaneously self.getController().toolOperationStopped.connect(self._onToolOperationStopped) self.getController().contextMenuRequested.connect(self._onContextMenuRequested) @@ -389,10 +389,6 @@ class CuraApplication(QtApplication): self._plugin_registry.addSupportedPluginExtension("curaplugin", "Cura Plugin") - # research - self._num_build_plates = 1 # default - self._active_build_plate = 0 - def _onEngineCreated(self): self._engine.addImageProvider("camera", CameraImageProvider.CameraImageProvider()) @@ -724,8 +720,8 @@ class CuraApplication(QtApplication): qmlRegisterSingletonType(SimpleModeSettingsManager, "Cura", 1, 2, "SimpleModeSettingsManager", self.getSimpleModeSettingsManager) - Logger.log("d", " #### going to register object manager") qmlRegisterSingletonType(ObjectManager, "Cura", 1, 2, "ObjectManager", self.getObjectManager) + qmlRegisterSingletonType(BuildPlateModel, "Cura", 1, 2, "BuildPlateModel", self.getBuildPlateModel) qmlRegisterSingletonType(MachineActionManager.MachineActionManager, "Cura", 1, 0, "MachineActionManager", self.getMachineActionManager) self.setMainQml(Resources.getPath(self.ResourceTypes.QmlFiles, "Cura.qml")) @@ -759,6 +755,11 @@ class CuraApplication(QtApplication): self._object_manager = ObjectManager.createObjectManager() return self._object_manager + def getBuildPlateModel(self, *args): + if self._build_plate_model is None: + self._build_plate_model = BuildPlateModel.createBuildPlateModel() + return self._build_plate_model + def getSettingInheritanceManager(self, *args): if self._setting_inheritance_manager is None: self._setting_inheritance_manager = SettingInheritanceManager.createSettingInheritanceManager() @@ -881,8 +882,6 @@ class CuraApplication(QtApplication): activityChanged = pyqtSignal() sceneBoundingBoxChanged = pyqtSignal() preferredOutputMimetypeChanged = pyqtSignal() - numBuildPlatesChanged = pyqtSignal() - activeBuildPlateChanged = pyqtSignal() @pyqtProperty(bool, notify = activityChanged) def platformActivity(self): @@ -1130,12 +1129,13 @@ class CuraApplication(QtApplication): nodes.append(node) job = ArrangeObjectsAllBuildPlatesJob(nodes) job.start() - self.setActiveBuildPlate(0) + self.getBuildPlateModel().setActiveBuildPlate(0) # Single build plate @pyqtSlot() def arrangeAll(self): nodes = [] + active_build_plate = self.getBuildPlateModel().activeBuildPlate for node in DepthFirstIterator(self.getController().getScene().getRoot()): if not issubclass(type(node), SceneNode): continue @@ -1147,7 +1147,7 @@ class CuraApplication(QtApplication): continue # i.e. node with layer data if not node.callDecoration("isSliceable"): continue # i.e. node with layer data - if node.callDecoration("getBuildPlateNumber") == self._active_build_plate: + if node.callDecoration("getBuildPlateNumber") == active_build_plate: # Skip nodes that are too big if node.getBoundingBox().width < self._volume.getBoundingBox().width or node.getBoundingBox().depth < self._volume.getBoundingBox().depth: nodes.append(node) @@ -1284,7 +1284,7 @@ class CuraApplication(QtApplication): group_decorator = GroupDecorator() group_node.addDecorator(group_decorator) group_node.addDecorator(ConvexHullDecorator()) - group_node.addDecorator(BuildPlateDecorator(self.activeBuildPlate)) + group_node.addDecorator(BuildPlateDecorator(self.getBuildPlateModel().activeBuildPlate)) group_node.setParent(self.getController().getScene().getRoot()) group_node.setSelectable(True) center = Selection.getSelectionCenter() @@ -1510,43 +1510,3 @@ class CuraApplication(QtApplication): node = node.getParent() Selection.add(node) - - #### research - hacky place for these kind of thing - @pyqtSlot(int) - def setActiveBuildPlate(self, nr): - if nr == self._active_build_plate: - return - Logger.log("d", "Select build plate: %s" % nr) - self._active_build_plate = nr - - self.activeBuildPlateChanged.emit() - - @pyqtSlot() - def newBuildPlate(self): - Logger.log("d", "New build plate") - #self._num_build_plates += 1 - self.numBuildPlatesChanged.emit() - - @pyqtProperty(int, notify = numBuildPlatesChanged) - def numBuildPlates(self): - return self._num_build_plates - - @pyqtProperty(int, notify = activeBuildPlateChanged) - def activeBuildPlate(self): - return self._active_build_plate - - def updateMaxBuildPlate(self, source): - if not issubclass(type(source), SceneNode): - return - num_build_plates = self._calcMaxBuildPlate() - if num_build_plates != self._num_build_plates: - self._num_build_plates = num_build_plates - self.numBuildPlatesChanged.emit() - - def _calcMaxBuildPlate(self): - max_build_plate = 0 - for node in DepthFirstIterator(self.getController().getScene().getRoot()): - if node.callDecoration("isSliceable"): - build_plate_number = node.callDecoration("getBuildPlateNumber") - max_build_plate = max(build_plate_number, max_build_plate) - return max_build_plate diff --git a/cura/ObjectManager.py b/cura/ObjectManager.py index a148c05f28..8361e43d71 100644 --- a/cura/ObjectManager.py +++ b/cura/ObjectManager.py @@ -15,14 +15,15 @@ class ObjectManager(ListModel): def __init__(self): super().__init__() self._last_selected_index = 0 - Application.getInstance().getController().getScene().sceneChanged.connect(self._update_scene_changed) + self._build_plate_model = Application.getInstance().getBuildPlateModel() + Application.getInstance().getController().getScene().sceneChanged.connect(self._update) Preferences.getInstance().preferenceChanged.connect(self._update) - Application.getInstance().activeBuildPlateChanged.connect(self._update) + self._build_plate_model.activeBuildPlateChanged.connect(self._update) def _update(self, *args): nodes = [] filter_current_build_plate = Preferences.getInstance().getValue("view/filter_current_build_plate") - active_build_plate_number = Application.getInstance().activeBuildPlate + active_build_plate_number = self._build_plate_model.activeBuildPlate for node in DepthFirstIterator(Application.getInstance().getController().getScene().getRoot()): if not issubclass(type(node), SceneNode) or (not node.getMeshData() and not node.callDecoration("getLayerData")): continue @@ -43,12 +44,6 @@ class ObjectManager(ListModel): self.itemsChanged.emit() - def _update_scene_changed(self, *args): - # if args and type(args[0]) is not CuraSceneNode: - # Logger.log("d", " ascdf %s", args) - # return - self._update(*args) - ## Either select or deselect an item @pyqtSlot(int) def changeSelection(self, index): @@ -77,7 +72,7 @@ class ObjectManager(ListModel): Selection.add(node) build_plate_number = node.callDecoration("getBuildPlateNumber") if build_plate_number is not None and build_plate_number != -1: - Application.getInstance().setActiveBuildPlate(build_plate_number) + self._build_plate_model.setActiveBuildPlate(build_plate_number) self._last_selected_index = index diff --git a/cura/Scene/CuraSceneNode.py b/cura/Scene/CuraSceneNode.py index ccec76b53d..e68405daf6 100644 --- a/cura/Scene/CuraSceneNode.py +++ b/cura/Scene/CuraSceneNode.py @@ -18,10 +18,10 @@ class CuraSceneNode(SceneNode): return self._outside_buildarea or self.callDecoration("getBuildPlateNumber") < 0 def isVisible(self): - return super().isVisible() and self.callDecoration("getBuildPlateNumber") == Application.getInstance().activeBuildPlate + return super().isVisible() and self.callDecoration("getBuildPlateNumber") == Application.getInstance().getBuildPlateModel().activeBuildPlate def isSelectable(self) -> bool: - return super().isSelectable() and self.callDecoration("getBuildPlateNumber") == Application.getInstance().activeBuildPlate + return super().isSelectable() and self.callDecoration("getBuildPlateNumber") == Application.getInstance().getBuildPlateModel().activeBuildPlate ## Taken from SceneNode, but replaced SceneNode with CuraSceneNode def __deepcopy__(self, memo): diff --git a/plugins/CuraEngineBackend/CuraEngineBackend.py b/plugins/CuraEngineBackend/CuraEngineBackend.py index f8b68e118a..c250b9019c 100755 --- a/plugins/CuraEngineBackend/CuraEngineBackend.py +++ b/plugins/CuraEngineBackend/CuraEngineBackend.py @@ -70,7 +70,7 @@ class CuraEngineBackend(QObject, Backend): # Workaround to disable layer view processing if layer view is not active. self._layer_view_active = False Application.getInstance().getController().activeViewChanged.connect(self._onActiveViewChanged) - Application.getInstance().activeBuildPlateChanged.connect(self._onActiveViewChanged) + Application.getInstance().getBuildPlateModel().activeBuildPlateChanged.connect(self._onActiveViewChanged) self._onActiveViewChanged() self._stored_layer_data = [] self._stored_optimized_layer_data = {} # key is build plate number, then arrays are stored until they go to the ProcessSlicesLayersJob @@ -564,7 +564,7 @@ class CuraEngineBackend(QObject, Backend): Logger.log("d", "Slicing took %s seconds", time() - self._slice_start_time ) # See if we need to process the sliced layers job. - active_build_plate = Application.getInstance().activeBuildPlate + active_build_plate = Application.getInstance().getBuildPlateModel().activeBuildPlate if self._layer_view_active and (self._process_layers_job is None or not self._process_layers_job.isRunning()) and active_build_plate == self._start_slice_job_build_plate: self._startProcessSlicedLayersJob(active_build_plate) # self._onActiveViewChanged() @@ -682,7 +682,7 @@ class CuraEngineBackend(QObject, Backend): application = Application.getInstance() view = application.getController().getActiveView() if view: - active_build_plate = application.activeBuildPlate + active_build_plate = application.getBuildPlateModel().activeBuildPlate if view.getPluginId() == "LayerView": # If switching to layer view, we should process the layers if that hasn't been done yet. self._layer_view_active = True # There is data and we're not slicing at the moment diff --git a/plugins/LayerView/LayerPass.py b/plugins/LayerView/LayerPass.py index 2b0e82d4b3..e6f60df723 100755 --- a/plugins/LayerView/LayerPass.py +++ b/plugins/LayerView/LayerPass.py @@ -66,7 +66,7 @@ class LayerPass(RenderPass): self.bind() tool_handle_batch = RenderBatch(self._tool_handle_shader, type = RenderBatch.RenderType.Overlay) - active_build_plate = Application.getInstance().activeBuildPlate + active_build_plate = Application.getInstance().getBuildPlateModel().activeBuildPlate for node in DepthFirstIterator(self._scene.getRoot()): diff --git a/plugins/SolidView/SolidView.py b/plugins/SolidView/SolidView.py index 699cec23f5..973b513794 100644 --- a/plugins/SolidView/SolidView.py +++ b/plugins/SolidView/SolidView.py @@ -71,11 +71,9 @@ class SolidView(View): else: self._enabled_shader.setUniformValue("u_overhangAngle", math.cos(math.radians(0))) - activeBuildPlateNumber = Application.getInstance().activeBuildPlate - for node in DepthFirstIterator(scene.getRoot()): if not node.render(renderer): - if node.getMeshData() and node.isVisible(): # and (node.callDecoration("getBuildPlateNumber") == activeBuildPlateNumber): + if node.getMeshData() and node.isVisible(): uniforms = {} shade_factor = 1.0 diff --git a/resources/qml/Cura.qml b/resources/qml/Cura.qml index 29d8b439a8..1db6e2a511 100644 --- a/resources/qml/Cura.qml +++ b/resources/qml/Cura.qml @@ -324,6 +324,7 @@ UM.MainWindow } } + /* Button { id: openFileButton; @@ -339,17 +340,19 @@ UM.MainWindow } action: Cura.Actions.open; } + */ Button { id: objectsButton; text: catalog.i18nc("@action:button","Objects"); - iconSource: UM.Theme.getIcon("load") + iconSource: UM.Theme.getIcon("plus") style: UM.Theme.styles.tool_button tooltip: ''; anchors { - top: openFileButton.bottom; + top: topbar.bottom; + //top: openFileButton.bottom; topMargin: UM.Theme.getSize("default_margin").height; left: parent.left; } diff --git a/resources/qml/Menus/ContextMenu.qml b/resources/qml/Menus/ContextMenu.qml index 175410773e..2aa3bd6bdb 100644 --- a/resources/qml/Menus/ContextMenu.qml +++ b/resources/qml/Menus/ContextMenu.qml @@ -7,7 +7,7 @@ import QtQuick.Dialogs 1.2 import QtQuick.Window 2.1 import UM 1.2 as UM -import Cura 1.0 as Cura +import Cura 1.2 as Cura Menu { @@ -40,21 +40,21 @@ Menu } MenuSeparator {} - MenuItem { - text: "build plate 0"; - onTriggered: CuraActions.setBuildPlateForSelection(0); - checkable: true - checked: false + Instantiator + { + model: Cura.BuildPlateModel + MenuItem { + text: Cura.BuildPlateModel.getItem(index).name; + onTriggered: CuraActions.setBuildPlateForSelection(Cura.BuildPlateModel.getItem(index).buildPlateNumber); + checkable: true + checked: Cura.BuildPlateModel.getItem(index).buildPlateNumber == Cura.BuildPlateModel.activeBuildPlate + } + onObjectAdded: base.insertItem(index, object); + onObjectRemoved: base.removeItem(object) } MenuItem { - text: "build plate 1"; - onTriggered: CuraActions.setBuildPlateForSelection(1); - checkable: true - checked: false - } - MenuItem { - text: "build plate 2"; - onTriggered: CuraActions.setBuildPlateForSelection(2); + text: "New build plate"; + onTriggered: CuraActions.setBuildPlateForSelection(Cura.BuildPlateModel.maxBuildPlate + 1); checkable: true checked: false } diff --git a/resources/qml/Menus/ViewMenu.qml b/resources/qml/Menus/ViewMenu.qml index 3c5485da32..a78e465c85 100644 --- a/resources/qml/Menus/ViewMenu.qml +++ b/resources/qml/Menus/ViewMenu.qml @@ -5,12 +5,12 @@ import QtQuick 2.2 import QtQuick.Controls 1.1 import UM 1.2 as UM -import Cura 1.0 as Cura +import Cura 1.2 as Cura Menu { title: catalog.i18nc("@title:menu menubar:toplevel", "&View"); - id: menu + id: base enabled: !PrintInformation.preSliced Instantiator { @@ -23,30 +23,27 @@ Menu exclusiveGroup: group; onTriggered: UM.Controller.setActiveView(model.id); } - onObjectAdded: menu.insertItem(index, object) - onObjectRemoved: menu.removeItem(object) + onObjectAdded: base.insertItem(index, object) + onObjectRemoved: base.removeItem(object) } ExclusiveGroup { id: group; } MenuSeparator {} - MenuItem { - text: "build plate 0"; - onTriggered: CuraApplication.setActiveBuildPlate(0); - } - MenuItem { - text: "build plate 1"; - onTriggered: CuraApplication.setActiveBuildPlate(1); - } - MenuItem { - text: "build plate 2"; - onTriggered: CuraApplication.setActiveBuildPlate(2); + MenuItem { action: Cura.Actions.homeCamera; } + + MenuSeparator {} + Instantiator + { + model: Cura.BuildPlateModel + MenuItem { + text: Cura.BuildPlateModel.getItem(index).name; + onTriggered: Cura.BuildPlateModel.setActiveBuildPlate(Cura.BuildPlateModel.getItem(index).buildPlateNumber); + checkable: true; + checked: Cura.BuildPlateModel.getItem(index).buildPlateNumber == Cura.BuildPlateModel.activeBuildPlate; + exclusiveGroup: buildPlateGroup; + } + onObjectAdded: base.insertItem(index, object); + onObjectRemoved: base.removeItem(object) } ExclusiveGroup { id: buildPlateGroup; } - - MenuItem { - text: "New build plate"; - onTriggered: CuraApplication.newBuildPlate(); - } - MenuSeparator {} - MenuItem { action: Cura.Actions.homeCamera; } } diff --git a/resources/qml/ObjectsList.qml b/resources/qml/ObjectsList.qml index 4eeb0cd568..bf7d92c4d6 100644 --- a/resources/qml/ObjectsList.qml +++ b/resources/qml/ObjectsList.qml @@ -52,7 +52,6 @@ Rectangle id: nodeNameLabel anchors.left: parent.left anchors.leftMargin: UM.Theme.getSize("default_margin").width - //anchors.right: parent.right width: parent.width - 2 * UM.Theme.getSize("default_margin").width - 30 text: Cura.ObjectManager.getItem(index) ? Cura.ObjectManager.getItem(index).name : ""; color: Cura.ObjectManager.getItem(index).isSelected ? palette.highlightedText : (Cura.ObjectManager.getItem(index).isOutsideBuildArea ? palette.mid : palette.text) @@ -66,7 +65,7 @@ Rectangle anchors.left: nodeNameLabel.right anchors.leftMargin: UM.Theme.getSize("default_margin").width anchors.right: parent.right - text: Cura.ObjectManager.getItem(index) ? Cura.ObjectManager.getItem(index).buildPlateNumber : 0; + text: Cura.ObjectManager.getItem(index).buildPlateNumber != -1 ? Cura.ObjectManager.getItem(index).buildPlateNumber + 1 : ""; color: Cura.ObjectManager.getItem(index).isSelected ? palette.highlightedText : palette.text elide: Text.ElideRight } @@ -134,41 +133,22 @@ Rectangle } } - ListModel - { - id: buildPlatesModel - - ListElement - { - name: "build plate 0" - buildPlateNumber: 0 - } - ListElement - { - name: "build plate 1" - buildPlateNumber: 1 - } - ListElement - { - name: "build plate 2" - buildPlateNumber: 2 - } - } Component { id: buildPlateDelegate Rectangle { height: childrenRect.height - color: CuraApplication.activeBuildPlate == buildPlateNumber ? palette.highlight : index % 2 ? palette.base : palette.alternateBase + color: Cura.BuildPlateModel.getItem(index).buildPlateNumber == Cura.BuildPlateModel.activeBuildPlate ? palette.highlight : index % 2 ? palette.base : palette.alternateBase width: parent.width Label { + id: buildPlateNameLabel anchors.left: parent.left anchors.leftMargin: UM.Theme.getSize("default_margin").width - anchors.right: parent.right - text: name //Cura.ObjectManager.getItem(index).name; - color: CuraApplication.activeBuildPlate == buildPlateNumber ? palette.highlightedText : palette.text + width: parent.width - 2 * UM.Theme.getSize("default_margin").width - 30 + text: Cura.BuildPlateModel.getItem(index) ? Cura.BuildPlateModel.getItem(index).name : ""; + color: Cura.BuildPlateModel.activeBuildPlate == index ? palette.highlightedText : palette.text elide: Text.ElideRight } @@ -177,7 +157,7 @@ Rectangle anchors.fill: parent; onClicked: { - CuraApplication.setActiveBuildPlate(buildPlateNumber); + Cura.BuildPlateModel.setActiveBuildPlate(index); } } } @@ -192,7 +172,6 @@ Rectangle anchors { - // top: objectsList.bottom; topMargin: UM.Theme.getSize("default_margin").height; left: parent.left; leftMargin: UM.Theme.getSize("default_margin").height; @@ -210,21 +189,8 @@ Rectangle ListView { id: buildPlateListView - model: buildPlatesModel - - onModelChanged: - { - //currentIndex = -1; - } + model: Cura.BuildPlateModel width: parent.width - currentIndex: -1 - onCurrentIndexChanged: - { - //base.selectedPrinter = listview.model[currentIndex]; - // Only allow connecting if the printer has responded to API query since the last refresh - //base.completeProperties = base.selectedPrinter != null && base.selectedPrinter.getProperty("incomplete") != "true"; - } - //Component.onCompleted: manager.startDiscovery() delegate: buildPlateDelegate } } From f6c7ffac116c0541aff3d8d4d68e66055bc4c8ad Mon Sep 17 00:00:00 2001 From: Jack Ha Date: Tue, 14 Nov 2017 14:48:51 +0100 Subject: [PATCH 011/102] CURA-4525 some cleanup and comments --- cura/CuraApplication.py | 1 - cura/GCodeListDecorator.py | 2 +- cura/ObjectManager.py | 1 + cura/Scene/BuildPlateDecorator.py | 1 + plugins/CuraEngineBackend/CuraEngineBackend.py | 15 +++------------ .../CuraEngineBackend/ProcessSlicedLayersJob.py | 11 ----------- 6 files changed, 6 insertions(+), 25 deletions(-) diff --git a/cura/CuraApplication.py b/cura/CuraApplication.py index 08b81d568c..4b71047dfc 100755 --- a/cura/CuraApplication.py +++ b/cura/CuraApplication.py @@ -815,7 +815,6 @@ class CuraApplication(QtApplication): qmlRegisterType(QualitySettingsModel, "Cura", 1, 0, "QualitySettingsModel") qmlRegisterType(MachineNameValidator, "Cura", 1, 0, "MachineNameValidator") qmlRegisterType(UserChangesModel, "Cura", 1, 1, "UserChangesModel") - # qmlRegisterSingletonType(ObjectManager, "Cura", 1, 0, "ObjectManager", ObjectManager.createObjectManager) qmlRegisterSingletonType(ContainerManager, "Cura", 1, 0, "ContainerManager", ContainerManager.createContainerManager) diff --git a/cura/GCodeListDecorator.py b/cura/GCodeListDecorator.py index 66ecf3beac..5738d0a7f2 100644 --- a/cura/GCodeListDecorator.py +++ b/cura/GCodeListDecorator.py @@ -4,7 +4,7 @@ from UM.Scene.SceneNodeDecorator import SceneNodeDecorator class GCodeListDecorator(SceneNodeDecorator): def __init__(self): super().__init__() - self._gcode_list = {} # [] + self._gcode_list = [] def getGCodeList(self): return self._gcode_list diff --git a/cura/ObjectManager.py b/cura/ObjectManager.py index 8361e43d71..413f43ed73 100644 --- a/cura/ObjectManager.py +++ b/cura/ObjectManager.py @@ -11,6 +11,7 @@ from PyQt5.QtWidgets import QApplication from UM.Preferences import Preferences +## Keep track of all objects in the project class ObjectManager(ListModel): def __init__(self): super().__init__() diff --git a/cura/Scene/BuildPlateDecorator.py b/cura/Scene/BuildPlateDecorator.py index 6b4dcfc970..cfbe792699 100644 --- a/cura/Scene/BuildPlateDecorator.py +++ b/cura/Scene/BuildPlateDecorator.py @@ -3,6 +3,7 @@ from UM.Application import Application from UM.Logger import Logger +## Make a SceneNode build plate aware CuraSceneNode objects all have this decorator. class BuildPlateDecorator(SceneNodeDecorator): def __init__(self, build_plate_number = -1): super().__init__() diff --git a/plugins/CuraEngineBackend/CuraEngineBackend.py b/plugins/CuraEngineBackend/CuraEngineBackend.py index c250b9019c..b0f44e931d 100755 --- a/plugins/CuraEngineBackend/CuraEngineBackend.py +++ b/plugins/CuraEngineBackend/CuraEngineBackend.py @@ -112,7 +112,6 @@ class CuraEngineBackend(QObject, Backend): self._tool_active = False # If a tool is active, some tasks do not have to do anything self._always_restart = True # Always restart the engine when starting a new slice. Don't keep the process running. TODO: Fix engine statelessness. self._process_layers_job = None # The currently active job to process layers, or None if it is not processing layers. - # self._need_slicing = False self._build_plates_to_be_sliced = [] # what needs slicing? self._engine_is_fresh = True # Is the newly started engine used before or not? @@ -446,11 +445,6 @@ class CuraEngineBackend(QObject, Backend): self._invokeSlice() - # #self.needsSlicing() - # self.stopSlicing() - # #self._onChanged() - # self._invokeSlice() - ## Called when an error occurs in the socket connection towards the engine. # # \param error The exception that occurred. @@ -476,12 +470,9 @@ class CuraEngineBackend(QObject, Backend): node.getParent().removeChild(node) def markSliceAll(self): - if 0 not in self._build_plates_to_be_sliced: - self._build_plates_to_be_sliced.append(0) - if 1 not in self._build_plates_to_be_sliced: - self._build_plates_to_be_sliced.append(1) - if 2 not in self._build_plates_to_be_sliced: - self._build_plates_to_be_sliced.append(2) + for build_plate_number in range(Application.getInstance().getBuildPlateModel().maxBuildPlate + 1): + if build_plate_number not in self._build_plates_to_be_sliced: + self._build_plates_to_be_sliced.append(build_plate_number) ## Convenient function: mark everything to slice, emit state and clear layer data def needsSlicing(self): diff --git a/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py b/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py index 916cc4d914..8da18a066d 100644 --- a/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py +++ b/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py @@ -84,17 +84,6 @@ class ProcessSlicedLayersJob(Job): new_node = SceneNode() new_node.addDecorator(BuildPlateDecorator(self._build_plate_number)) - # ## Remove old layer data (if any) - # for node in DepthFirstIterator(self._scene.getRoot()): - # if node.callDecoration("getLayerData") and node.callDecoration("getBuildPlateNumber") == self._build_plate_number: - # Logger.log("d", " # Removing: %s", node) - # node.getParent().removeChild(node) - # #break - # if self._abort_requested: - # if self._progress_message: - # self._progress_message.hide() - # return - # Force garbage collection. # For some reason, Python has a tendency to keep the layer data # in memory longer than needed. Forcing the GC to run here makes From 4a893c048e28259819aac59f72e0e54d628e76f7 Mon Sep 17 00:00:00 2001 From: Jack Ha Date: Tue, 14 Nov 2017 16:35:37 +0100 Subject: [PATCH 012/102] CURA-4525 made PrintInformation multi buildplate-aware --- cura/BuildPlateModel.py | 2 +- cura/CuraApplication.py | 2 + cura/PrintInformation.py | 106 ++++++++++++------ .../CuraEngineBackend/CuraEngineBackend.py | 9 +- 4 files changed, 81 insertions(+), 38 deletions(-) diff --git a/cura/BuildPlateModel.py b/cura/BuildPlateModel.py index 35a311dc5f..a29dd65de4 100644 --- a/cura/BuildPlateModel.py +++ b/cura/BuildPlateModel.py @@ -15,7 +15,7 @@ class BuildPlateModel(ListModel): Application.getInstance().getController().getScene().sceneChanged.connect(self.updateMaxBuildPlate) # it may be a bit inefficient when changing a lot simultaneously self._max_build_plate = 1 # default - self._active_build_plate = 0 + self._active_build_plate = -1 @pyqtSlot(int) def setActiveBuildPlate(self, nr): diff --git a/cura/CuraApplication.py b/cura/CuraApplication.py index 4b71047dfc..46d4270da7 100755 --- a/cura/CuraApplication.py +++ b/cura/CuraApplication.py @@ -758,6 +758,8 @@ class CuraApplication(QtApplication): def getBuildPlateModel(self, *args): if self._build_plate_model is None: self._build_plate_model = BuildPlateModel.createBuildPlateModel() + self._build_plate_model.setActiveBuildPlate(0) # default value + return self._build_plate_model def getSettingInheritanceManager(self, *args): diff --git a/cura/PrintInformation.py b/cura/PrintInformation.py index d3bcc10781..6bf35f49c7 100644 --- a/cura/PrintInformation.py +++ b/cura/PrintInformation.py @@ -53,10 +53,10 @@ class PrintInformation(QObject): self.initializeCuraMessagePrintTimeProperties() - self._material_lengths = [] - self._material_weights = [] - self._material_costs = [] - self._material_names = [] + self._material_lengths = {} # indexed by build plate number + self._material_weights = {} + self._material_costs = {} + self._material_names = {} self._pre_sliced = False @@ -68,10 +68,13 @@ class PrintInformation(QObject): self._abbr_machine = "" self._job_name = "" self._project_name = "" + self._active_build_plate = 0 + self._initVariablesWithBuildPlate(self._active_build_plate) Application.getInstance().globalContainerStackChanged.connect(self._updateJobName) Application.getInstance().fileLoaded.connect(self.setBaseName) Application.getInstance().projectFileLoaded.connect(self.setProjectName) + Application.getInstance().getBuildPlateModel().activeBuildPlateChanged.connect(self._onActiveBuildPlateChanged) Preferences.getInstance().preferenceChanged.connect(self._onPreferencesChanged) self._active_material_container = None @@ -83,7 +86,7 @@ class PrintInformation(QObject): # Crate cura message translations and using translation keys initialize empty time Duration object for total time # and time for each feature def initializeCuraMessagePrintTimeProperties(self): - self._current_print_time = Duration(None, self) + self._current_print_time = {} # Duration(None, self) self._print_time_message_translations = { "inset_0": catalog.i18nc("@tooltip", "Outer Wall"), @@ -101,10 +104,26 @@ class PrintInformation(QObject): self._print_time_message_values = {} - # Full fill message values using keys from _print_time_message_translations - for key in self._print_time_message_translations.keys(): - self._print_time_message_values[key] = Duration(None, self) + def _initPrintTimeMessageValues(self, build_plate_number): + # Full fill message values using keys from _print_time_message_translations + self._print_time_message_values[build_plate_number] = {} + for key in self._print_time_message_translations.keys(): + self._print_time_message_values[build_plate_number][key] = Duration(None, self) + + def _initVariablesWithBuildPlate(self, build_plate_number): + if build_plate_number not in self._print_time_message_values: + self._initPrintTimeMessageValues(build_plate_number) + if self._active_build_plate not in self._material_lengths: + self._material_lengths[self._active_build_plate] = [] + if self._active_build_plate not in self._material_weights: + self._material_weights[self._active_build_plate] = [] + if self._active_build_plate not in self._material_costs: + self._material_costs[self._active_build_plate] = [] + if self._active_build_plate not in self._material_names: + self._material_names[self._active_build_plate] = [] + if self._active_build_plate not in self._current_print_time: + self._current_print_time[self._active_build_plate] = Duration(None, self) currentPrintTimeChanged = pyqtSignal() @@ -120,53 +139,58 @@ class PrintInformation(QObject): @pyqtProperty(Duration, notify = currentPrintTimeChanged) def currentPrintTime(self): - return self._current_print_time + return self._current_print_time[self._active_build_plate] materialLengthsChanged = pyqtSignal() @pyqtProperty("QVariantList", notify = materialLengthsChanged) def materialLengths(self): - return self._material_lengths + return self._material_lengths[self._active_build_plate] materialWeightsChanged = pyqtSignal() @pyqtProperty("QVariantList", notify = materialWeightsChanged) def materialWeights(self): - return self._material_weights + return self._material_weights[self._active_build_plate] materialCostsChanged = pyqtSignal() @pyqtProperty("QVariantList", notify = materialCostsChanged) def materialCosts(self): - return self._material_costs + return self._material_costs[self._active_build_plate] materialNamesChanged = pyqtSignal() @pyqtProperty("QVariantList", notify = materialNamesChanged) def materialNames(self): - return self._material_names + return self._material_names[self._active_build_plate] - def _onPrintDurationMessage(self, print_time, material_amounts): - - self._updateTotalPrintTimePerFeature(print_time) + def _onPrintDurationMessage(self, build_plate_number, print_time, material_amounts): + Logger.log("d", " ### print duration message for build plate %s", build_plate_number) + self._updateTotalPrintTimePerFeature(build_plate_number, print_time) self.currentPrintTimeChanged.emit() self._material_amounts = material_amounts self._calculateInformation() - def _updateTotalPrintTimePerFeature(self, print_time): + def _updateTotalPrintTimePerFeature(self, build_plate_number, print_time): total_estimated_time = 0 + if build_plate_number not in self._print_time_message_values: + self._initPrintTimeMessageValues(build_plate_number) + for feature, time in print_time.items(): if time != time: # Check for NaN. Engine can sometimes give us weird values. - self._print_time_message_values.get(feature).setDuration(0) + self._print_time_message_values[build_plate_number].get(feature).setDuration(0) Logger.log("w", "Received NaN for print duration message") continue total_estimated_time += time - self._print_time_message_values.get(feature).setDuration(time) + self._print_time_message_values[build_plate_number].get(feature).setDuration(time) - self._current_print_time.setDuration(total_estimated_time) + if build_plate_number not in self._current_print_time: + self._current_print_time[build_plate_number] = Duration(None, self) + self._current_print_time[build_plate_number].setDuration(total_estimated_time) def _calculateInformation(self): if Application.getInstance().getGlobalContainerStack() is None: @@ -174,10 +198,10 @@ class PrintInformation(QObject): # Material amount is sent as an amount of mm^3, so calculate length from that radius = Application.getInstance().getGlobalContainerStack().getProperty("material_diameter", "value") / 2 - self._material_lengths = [] - self._material_weights = [] - self._material_costs = [] - self._material_names = [] + self._material_lengths[self._active_build_plate] = [] + self._material_weights[self._active_build_plate] = [] + self._material_costs[self._active_build_plate] = [] + self._material_names[self._active_build_plate] = [] material_preference_values = json.loads(Preferences.getInstance().getValue("cura/material_settings")) @@ -215,10 +239,10 @@ class PrintInformation(QObject): length = round((amount / (math.pi * radius ** 2)) / 1000, 2) else: length = 0 - self._material_weights.append(weight) - self._material_lengths.append(length) - self._material_costs.append(cost) - self._material_names.append(material_name) + self._material_weights[self._active_build_plate].append(weight) + self._material_lengths[self._active_build_plate].append(length) + self._material_costs[self._active_build_plate].append(cost) + self._material_names[self._active_build_plate].append(material_name) self.materialLengthsChanged.emit() self.materialWeightsChanged.emit() @@ -245,6 +269,20 @@ class PrintInformation(QObject): self._active_material_container = active_material_containers[0] self._active_material_container.metaDataChanged.connect(self._onMaterialMetaDataChanged) + def _onActiveBuildPlateChanged(self): + new_active_build_plate = Application.getInstance().getBuildPlateModel().activeBuildPlate + if new_active_build_plate != self._active_build_plate: + Logger.log("d", " ## active build plate changed: %s", self._active_build_plate) + self._active_build_plate = new_active_build_plate + + self._initVariablesWithBuildPlate(self._active_build_plate) + + self.materialLengthsChanged.emit() + self.materialWeightsChanged.emit() + self.materialCostsChanged.emit() + self.materialNamesChanged.emit() + self.currentPrintTimeChanged.emit() + def _onMaterialMetaDataChanged(self, *args, **kwargs): self._calculateInformation() @@ -341,7 +379,9 @@ class PrintInformation(QObject): @pyqtSlot(result = "QVariantMap") def getFeaturePrintTimes(self): result = {} - for feature, time in self._print_time_message_values.items(): + if self._active_build_plate not in self._print_time_message_values: + self._initPrintTimeMessageValues(self._active_build_plate) + for feature, time in self._print_time_message_values[self._active_build_plate].items(): if feature in self._print_time_message_translations: result[self._print_time_message_translations[feature]] = time else: @@ -349,10 +389,12 @@ class PrintInformation(QObject): return result # Simulate message with zero time duration - def setToZeroPrintInformation(self): + def setToZeroPrintInformation(self, build_plate_number): temp_message = {} - for key in self._print_time_message_values.keys(): + if build_plate_number not in self._print_time_message_values: + self._print_time_message_values[build_plate_number] = {} + for key in self._print_time_message_values[build_plate_number].keys(): temp_message[key] = 0 temp_material_amounts = [0] - self._onPrintDurationMessage(temp_message, temp_material_amounts) + self._onPrintDurationMessage(build_plate_number, temp_message, temp_material_amounts) diff --git a/plugins/CuraEngineBackend/CuraEngineBackend.py b/plugins/CuraEngineBackend/CuraEngineBackend.py index b0f44e931d..859578c3e9 100755 --- a/plugins/CuraEngineBackend/CuraEngineBackend.py +++ b/plugins/CuraEngineBackend/CuraEngineBackend.py @@ -207,6 +207,7 @@ class CuraEngineBackend(QObject, Backend): return # see if we really have to slice + active_build_plate = Application.getInstance().getBuildPlateModel().activeBuildPlate build_plate_to_be_sliced = self._build_plates_to_be_sliced.pop(0) Logger.log("d", "Going to slice build plate [%s]!" % build_plate_to_be_sliced) num_objects = self._numObjects() @@ -218,8 +219,8 @@ class CuraEngineBackend(QObject, Backend): self._stored_layer_data = [] self._stored_optimized_layer_data[build_plate_to_be_sliced] = [] - if Application.getInstance().getPrintInformation(): - Application.getInstance().getPrintInformation().setToZeroPrintInformation() + if Application.getInstance().getPrintInformation() and build_plate_to_be_sliced == active_build_plate: + Application.getInstance().getPrintInformation().setToZeroPrintInformation(build_plate_to_be_sliced) if self._process is None: self._createSocket() @@ -547,11 +548,9 @@ class CuraEngineBackend(QObject, Backend): replaced = replaced.replace("{filament_cost}", str(Application.getInstance().getPrintInformation().materialCosts)) replaced = replaced.replace("{jobname}", str(Application.getInstance().getPrintInformation().jobName)) - #gcode_list[gcode_list.index(line)] = replaced gcode_list[index] = replaced self._slicing = False - #self._need_slicing = False Logger.log("d", "Slicing took %s seconds", time() - self._slice_start_time ) # See if we need to process the sliced layers job. @@ -608,7 +607,7 @@ class CuraEngineBackend(QObject, Backend): material_amounts.append(message.getRepeatedMessage("materialEstimates", index).material_amount) times = self._parseMessagePrintTimes(message) - self.printDurationMessage.emit(times, material_amounts) + self.printDurationMessage.emit(self._start_slice_job_build_plate, times, material_amounts) ## Called for parsing message to retrieve estimated time per feature # From be6561b5754d8b13bf51b5cb990907724787797f Mon Sep 17 00:00:00 2001 From: Jack Ha Date: Wed, 15 Nov 2017 10:28:34 +0100 Subject: [PATCH 013/102] CURA-4525 fixed material info per build plate, bugfix arrange on load --- cura/CuraApplication.py | 2 +- cura/PrintInformation.py | 29 +++++++++++-------- .../CuraEngineBackend/CuraEngineBackend.py | 1 - plugins/GCodeWriter/GCodeWriter.py | 3 +- plugins/SliceInfoPlugin/SliceInfo.py | 2 +- 5 files changed, 21 insertions(+), 16 deletions(-) diff --git a/cura/CuraApplication.py b/cura/CuraApplication.py index 46d4270da7..14b09c4902 100755 --- a/cura/CuraApplication.py +++ b/cura/CuraApplication.py @@ -1428,7 +1428,7 @@ class CuraApplication(QtApplication): self.fileLoaded.emit(filename) arrange_objects_on_load = Preferences.getInstance().getValue("cura/arrange_objects_on_load") - target_build_plate = self.activeBuildPlate if arrange_objects_on_load else -1 + target_build_plate = self.getBuildPlateModel().activeBuildPlate if arrange_objects_on_load else -1 for original_node in nodes: node = CuraSceneNode() # We want our own CuraSceneNode diff --git a/cura/PrintInformation.py b/cura/PrintInformation.py index 6bf35f49c7..bbc5cd4329 100644 --- a/cura/PrintInformation.py +++ b/cura/PrintInformation.py @@ -165,13 +165,16 @@ class PrintInformation(QObject): def materialNames(self): return self._material_names[self._active_build_plate] + def printTimes(self): + return self._print_time_message_values[self._active_build_plate] + def _onPrintDurationMessage(self, build_plate_number, print_time, material_amounts): Logger.log("d", " ### print duration message for build plate %s", build_plate_number) self._updateTotalPrintTimePerFeature(build_plate_number, print_time) self.currentPrintTimeChanged.emit() self._material_amounts = material_amounts - self._calculateInformation() + self._calculateInformation(build_plate_number) def _updateTotalPrintTimePerFeature(self, build_plate_number, print_time): total_estimated_time = 0 @@ -192,16 +195,16 @@ class PrintInformation(QObject): self._current_print_time[build_plate_number] = Duration(None, self) self._current_print_time[build_plate_number].setDuration(total_estimated_time) - def _calculateInformation(self): + def _calculateInformation(self, build_plate_number): if Application.getInstance().getGlobalContainerStack() is None: return # Material amount is sent as an amount of mm^3, so calculate length from that radius = Application.getInstance().getGlobalContainerStack().getProperty("material_diameter", "value") / 2 - self._material_lengths[self._active_build_plate] = [] - self._material_weights[self._active_build_plate] = [] - self._material_costs[self._active_build_plate] = [] - self._material_names[self._active_build_plate] = [] + self._material_lengths[build_plate_number] = [] + self._material_weights[build_plate_number] = [] + self._material_costs[build_plate_number] = [] + self._material_names[build_plate_number] = [] material_preference_values = json.loads(Preferences.getInstance().getValue("cura/material_settings")) @@ -239,10 +242,10 @@ class PrintInformation(QObject): length = round((amount / (math.pi * radius ** 2)) / 1000, 2) else: length = 0 - self._material_weights[self._active_build_plate].append(weight) - self._material_lengths[self._active_build_plate].append(length) - self._material_costs[self._active_build_plate].append(cost) - self._material_names[self._active_build_plate].append(material_name) + self._material_weights[build_plate_number].append(weight) + self._material_lengths[build_plate_number].append(length) + self._material_costs[build_plate_number].append(cost) + self._material_names[build_plate_number].append(material_name) self.materialLengthsChanged.emit() self.materialWeightsChanged.emit() @@ -253,7 +256,8 @@ class PrintInformation(QObject): if preference != "cura/material_settings": return - self._calculateInformation() + for build_plate_number in range(Application.getInstance().getBuildPlateModel().maxBuildPlate + 1): + self._calculateInformation(build_plate_number) def _onActiveMaterialChanged(self): if self._active_material_container: @@ -284,7 +288,8 @@ class PrintInformation(QObject): self.currentPrintTimeChanged.emit() def _onMaterialMetaDataChanged(self, *args, **kwargs): - self._calculateInformation() + for build_plate_number in range(Application.getInstance().getBuildPlateModel().maxBuildPlate + 1): + self._calculateInformation(build_plate_number) @pyqtSlot(str) def setJobName(self, name): diff --git a/plugins/CuraEngineBackend/CuraEngineBackend.py b/plugins/CuraEngineBackend/CuraEngineBackend.py index 859578c3e9..08c89c56a6 100755 --- a/plugins/CuraEngineBackend/CuraEngineBackend.py +++ b/plugins/CuraEngineBackend/CuraEngineBackend.py @@ -433,7 +433,6 @@ class CuraEngineBackend(QObject, Backend): self._postponed_scene_change_sources.append(source) return - Logger.log("d", " going to reslice: %s", build_plate_changed) self.stopSlicing() for build_plate_number in build_plate_changed: if build_plate_number not in self._build_plates_to_be_sliced: diff --git a/plugins/GCodeWriter/GCodeWriter.py b/plugins/GCodeWriter/GCodeWriter.py index 3860590ef7..192354d947 100644 --- a/plugins/GCodeWriter/GCodeWriter.py +++ b/plugins/GCodeWriter/GCodeWriter.py @@ -59,8 +59,9 @@ class GCodeWriter(MeshWriter): Logger.log("e", "GCode Writer does not support non-text mode.") return False + active_build_plate = Application.getInstance().getBuildPlateModel().activeBuildPlate scene = Application.getInstance().getController().getScene() - gcode_list = getattr(scene, "gcode_list") + gcode_list = getattr(scene, "gcode_list")[active_build_plate] if gcode_list: for gcode in gcode_list: stream.write(gcode) diff --git a/plugins/SliceInfoPlugin/SliceInfo.py b/plugins/SliceInfoPlugin/SliceInfo.py index 0514c4dacf..a72c056bc9 100755 --- a/plugins/SliceInfoPlugin/SliceInfo.py +++ b/plugins/SliceInfoPlugin/SliceInfo.py @@ -162,7 +162,7 @@ class SliceInfo(Extension): data["models"].append(model) - print_times = print_information._print_time_message_values + print_times = print_information.printTimes() data["print_times"] = {"travel": int(print_times["travel"].getDisplayString(DurationFormat.Format.Seconds)), "support": int(print_times["support"].getDisplayString(DurationFormat.Format.Seconds)), "infill": int(print_times["infill"].getDisplayString(DurationFormat.Format.Seconds)), From 864f41772355e6eef4d0170dd9090b870b8d368a Mon Sep 17 00:00:00 2001 From: Jack Ha Date: Wed, 15 Nov 2017 16:03:32 +0100 Subject: [PATCH 014/102] CURA-4525 Fix load and save projects. Not storing build plates or object names yet. --- cura/PrintInformation.py | 2 -- plugins/3MFReader/ThreeMFReader.py | 13 ++++++++++--- plugins/3MFWriter/ThreeMFWriter.py | 3 ++- resources/qml/Actions.qml | 4 ++-- 4 files changed, 14 insertions(+), 8 deletions(-) diff --git a/cura/PrintInformation.py b/cura/PrintInformation.py index bbc5cd4329..f2d28c9297 100644 --- a/cura/PrintInformation.py +++ b/cura/PrintInformation.py @@ -169,7 +169,6 @@ class PrintInformation(QObject): return self._print_time_message_values[self._active_build_plate] def _onPrintDurationMessage(self, build_plate_number, print_time, material_amounts): - Logger.log("d", " ### print duration message for build plate %s", build_plate_number) self._updateTotalPrintTimePerFeature(build_plate_number, print_time) self.currentPrintTimeChanged.emit() @@ -276,7 +275,6 @@ class PrintInformation(QObject): def _onActiveBuildPlateChanged(self): new_active_build_plate = Application.getInstance().getBuildPlateModel().activeBuildPlate if new_active_build_plate != self._active_build_plate: - Logger.log("d", " ## active build plate changed: %s", self._active_build_plate) self._active_build_plate = new_active_build_plate self._initVariablesWithBuildPlate(self._active_build_plate) diff --git a/plugins/3MFReader/ThreeMFReader.py b/plugins/3MFReader/ThreeMFReader.py index 8c4ef9d1ae..f75cf68312 100755 --- a/plugins/3MFReader/ThreeMFReader.py +++ b/plugins/3MFReader/ThreeMFReader.py @@ -15,8 +15,8 @@ from cura.Settings.SettingOverrideDecorator import SettingOverrideDecorator from UM.Application import Application from cura.Settings.ExtruderManager import ExtruderManager from cura.QualityManager import QualityManager -#from UM.Scene.SceneNode import SceneNode -from cura.Scene.CuraSceneNode import CuraSceneNode as SceneNode +from cura.Scene.CuraSceneNode import CuraSceneNode +from cura.Scene.BuildPlateDecorator import BuildPlateDecorator from cura.SliceableObjectDecorator import SliceableObjectDecorator from cura.ZOffsetDecorator import ZOffsetDecorator @@ -44,6 +44,7 @@ class ThreeMFReader(MeshReader): } self._base_name = "" self._unit = None + self._object_count = 0 # Used to name objects as there is no node name yet. def _createMatrixFromTransformationString(self, transformation): if transformation == "": @@ -78,7 +79,12 @@ class ThreeMFReader(MeshReader): ## Convenience function that converts a SceneNode object (as obtained from libSavitar) to a Uranium scene node. # \returns Uranium scene node. def _convertSavitarNodeToUMNode(self, savitar_node): - um_node = SceneNode() + self._object_count += 1 + node_name = "Object %s" % self._object_count + + um_node = CuraSceneNode() + um_node.addDecorator(BuildPlateDecorator(0)) + um_node.setName(node_name) transformation = self._createMatrixFromTransformationString(savitar_node.getTransformation()) um_node.setTransformation(transformation) mesh_builder = MeshBuilder() @@ -155,6 +161,7 @@ class ThreeMFReader(MeshReader): def read(self, file_name): result = [] + self._object_count = 0 # Used to name objects as there is no node name yet. # The base object of 3mf is a zipped archive. try: archive = zipfile.ZipFile(file_name, "r") diff --git a/plugins/3MFWriter/ThreeMFWriter.py b/plugins/3MFWriter/ThreeMFWriter.py index a764d30fac..8e005c47b1 100644 --- a/plugins/3MFWriter/ThreeMFWriter.py +++ b/plugins/3MFWriter/ThreeMFWriter.py @@ -7,6 +7,7 @@ from UM.Logger import Logger from UM.Math.Matrix import Matrix from UM.Application import Application import UM.Scene.SceneNode +from cura.Scene.CuraSceneNode import CuraSceneNode import Savitar @@ -63,7 +64,7 @@ class ThreeMFWriter(MeshWriter): ## Convenience function that converts an Uranium SceneNode object to a SavitarSceneNode # \returns Uranium Scenen node. def _convertUMNodeToSavitarNode(self, um_node, transformation = Matrix()): - if type(um_node) is not UM.Scene.SceneNode.SceneNode: + if type(um_node) not in [UM.Scene.SceneNode.SceneNode, CuraSceneNode]: return None savitar_node = Savitar.SceneNode() diff --git a/resources/qml/Actions.qml b/resources/qml/Actions.qml index 89ec2cf70d..c6b0a443bb 100644 --- a/resources/qml/Actions.qml +++ b/resources/qml/Actions.qml @@ -304,8 +304,8 @@ Item Action { id: arrangeAllBuildPlatesAction; - text: ""; - iconName: "document-open"; + text: catalog.i18nc("@action:inmenu menubar:edit","Arrange All Models To All Build Plates"); + //iconName: "document-open"; onTriggered: CuraApplication.arrangeObjectsToAllBuildPlates(); } From e2a663992cf9e8c5f6062114369ba63c7ab18fc9 Mon Sep 17 00:00:00 2001 From: Jack Ha Date: Wed, 15 Nov 2017 17:00:19 +0100 Subject: [PATCH 015/102] CURA-4525 Added an option to turn on the UI elements of multi build plate --- cura/CuraApplication.py | 5 ++++- resources/qml/Cura.qml | 7 ++++--- resources/qml/Menus/ContextMenu.qml | 8 ++++++-- resources/qml/Menus/ViewMenu.qml | 5 ++++- resources/qml/Preferences/GeneralPage.qml | 18 ++++++++++++++++-- 5 files changed, 34 insertions(+), 9 deletions(-) diff --git a/cura/CuraApplication.py b/cura/CuraApplication.py index 14b09c4902..056b6eaeb2 100755 --- a/cura/CuraApplication.py +++ b/cura/CuraApplication.py @@ -311,6 +311,7 @@ class CuraApplication(QtApplication): preferences.addPreference("cura/choice_on_profile_override", "always_ask") preferences.addPreference("cura/choice_on_open_project", "always_ask") preferences.addPreference("cura/arrange_objects_on_load", True) + preferences.addPreference("cura/use_multi_build_plate", False) preferences.addPreference("cura/currency", "€") preferences.addPreference("cura/material_settings", "{}") @@ -1427,7 +1428,9 @@ class CuraApplication(QtApplication): min_offset = 8 self.fileLoaded.emit(filename) - arrange_objects_on_load = Preferences.getInstance().getValue("cura/arrange_objects_on_load") + arrange_objects_on_load = ( + not Preferences.getInstance().getValue("cura/use_multi_build_plate") or + Preferences.getInstance().getValue("cura/arrange_objects_on_load")) target_build_plate = self.getBuildPlateModel().activeBuildPlate if arrange_objects_on_load else -1 for original_node in nodes: diff --git a/resources/qml/Cura.qml b/resources/qml/Cura.qml index 1db6e2a511..254679ec53 100644 --- a/resources/qml/Cura.qml +++ b/resources/qml/Cura.qml @@ -324,10 +324,10 @@ UM.MainWindow } } - /* Button { id: openFileButton; + visible: !UM.Preferences.getValue("cura/use_multi_build_plate") text: catalog.i18nc("@action:button","Open File"); iconSource: UM.Theme.getIcon("load") style: UM.Theme.styles.tool_button @@ -340,12 +340,13 @@ UM.MainWindow } action: Cura.Actions.open; } - */ Button { id: objectsButton; - text: catalog.i18nc("@action:button","Objects"); + visible: UM.Preferences.getValue("cura/use_multi_build_plate") + + text: catalog.i18nc("@action:button","Objects list"); iconSource: UM.Theme.getIcon("plus") style: UM.Theme.styles.tool_button tooltip: ''; diff --git a/resources/qml/Menus/ContextMenu.qml b/resources/qml/Menus/ContextMenu.qml index 2aa3bd6bdb..a52a2d46a3 100644 --- a/resources/qml/Menus/ContextMenu.qml +++ b/resources/qml/Menus/ContextMenu.qml @@ -39,7 +39,9 @@ Menu onObjectRemoved: base.removeItem(object) } - MenuSeparator {} + MenuSeparator { + visible: UM.Preferences.getValue("cura/use_multi_build_plate") + } Instantiator { model: Cura.BuildPlateModel @@ -48,15 +50,17 @@ Menu onTriggered: CuraActions.setBuildPlateForSelection(Cura.BuildPlateModel.getItem(index).buildPlateNumber); checkable: true checked: Cura.BuildPlateModel.getItem(index).buildPlateNumber == Cura.BuildPlateModel.activeBuildPlate + visible: UM.Preferences.getValue("cura/use_multi_build_plate") } onObjectAdded: base.insertItem(index, object); - onObjectRemoved: base.removeItem(object) + onObjectRemoved: base.removeItem(object); } MenuItem { text: "New build plate"; onTriggered: CuraActions.setBuildPlateForSelection(Cura.BuildPlateModel.maxBuildPlate + 1); checkable: true checked: false + visible: UM.Preferences.getValue("cura/use_multi_build_plate") } // Global actions diff --git a/resources/qml/Menus/ViewMenu.qml b/resources/qml/Menus/ViewMenu.qml index a78e465c85..7c7060b1f0 100644 --- a/resources/qml/Menus/ViewMenu.qml +++ b/resources/qml/Menus/ViewMenu.qml @@ -31,7 +31,9 @@ Menu MenuSeparator {} MenuItem { action: Cura.Actions.homeCamera; } - MenuSeparator {} + MenuSeparator { + visible: UM.Preferences.getValue("cura/use_multi_build_plate") + } Instantiator { model: Cura.BuildPlateModel @@ -41,6 +43,7 @@ Menu checkable: true; checked: Cura.BuildPlateModel.getItem(index).buildPlateNumber == Cura.BuildPlateModel.activeBuildPlate; exclusiveGroup: buildPlateGroup; + visible: UM.Preferences.getValue("cura/use_multi_build_plate") } onObjectAdded: base.insertItem(index, object); onObjectRemoved: base.removeItem(object) diff --git a/resources/qml/Preferences/GeneralPage.qml b/resources/qml/Preferences/GeneralPage.qml index c74fb5720d..197e22fb53 100644 --- a/resources/qml/Preferences/GeneralPage.qml +++ b/resources/qml/Preferences/GeneralPage.qml @@ -454,12 +454,26 @@ UM.PreferencesPage UM.TooltipArea { width: childrenRect.width height: childrenRect.height - text: catalog.i18nc("@info:tooltip","Should newly loaded models be arranged on the build palte?") + text: catalog.i18nc("@info:tooltip","Use multi build plate functionality (EXPERIMENTAL)") + + CheckBox + { + id: useMultiBuildPlateCheckbox + text: catalog.i18nc("@option:check","Use multi build plate functionality (EXPERIMENTAL, restart)") + checked: boolCheck(UM.Preferences.getValue("cura/use_multi_build_plate")) + onCheckedChanged: UM.Preferences.setValue("cura/use_multi_build_plate", checked) + } + } + + UM.TooltipArea { + width: childrenRect.width + height: childrenRect.height + text: catalog.i18nc("@info:tooltip","Should newly loaded models be arranged on the build plate? Used in conjunction with multi build plate (EXPERIMENTAL)") CheckBox { id: arrangeOnLoadCheckbox - text: catalog.i18nc("@option:check","Arrange objects on load") + text: catalog.i18nc("@option:check","Arrange objects on load (EXPERIMENTAL)") checked: boolCheck(UM.Preferences.getValue("cura/arrange_objects_on_load")) onCheckedChanged: UM.Preferences.setValue("cura/arrange_objects_on_load", checked) } From 228039545bb4eab3134a1fd75507e2b010749ec3 Mon Sep 17 00:00:00 2001 From: Jack Ha Date: Thu, 16 Nov 2017 09:58:53 +0100 Subject: [PATCH 016/102] CURA-4525 send active build plate to legacy UM3 with Print over network --- plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py | 3 ++- resources/qml/Actions.qml | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py b/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py index d8dd780ed5..8895d1c22d 100755 --- a/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py +++ b/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py @@ -675,7 +675,8 @@ class NetworkPrinterOutputDevice(PrinterOutputDevice): Application.getInstance().showPrintMonitor.emit(True) self._print_finished = True self.writeStarted.emit(self) - self._gcode = getattr(Application.getInstance().getController().getScene(), "gcode_list") + active_build_plate = Application.getInstance().getBuildPlateModel().activeBuildPlate + self._gcode = getattr(Application.getInstance().getController().getScene(), "gcode_list")[active_build_plate] print_information = Application.getInstance().getPrintInformation() warnings = [] # There might be multiple things wrong. Keep a list of all the stuff we need to warn about. diff --git a/resources/qml/Actions.qml b/resources/qml/Actions.qml index c6b0a443bb..e2db0171b1 100644 --- a/resources/qml/Actions.qml +++ b/resources/qml/Actions.qml @@ -306,7 +306,7 @@ Item id: arrangeAllBuildPlatesAction; text: catalog.i18nc("@action:inmenu menubar:edit","Arrange All Models To All Build Plates"); //iconName: "document-open"; - onTriggered: CuraApplication.arrangeObjectsToAllBuildPlates(); + onTriggered: Printer.arrangeObjectsToAllBuildPlates(); } Action From 579f2b5ec6b6e57766bd6a5a3c083045601d421d Mon Sep 17 00:00:00 2001 From: Jack Ha Date: Thu, 16 Nov 2017 16:34:12 +0100 Subject: [PATCH 017/102] CURA-4525 prepare for print all or single build plate question --- .../UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py b/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py index 14a60a6b22..2f56561295 100644 --- a/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py +++ b/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py @@ -255,7 +255,8 @@ class NetworkClusterPrinterOutputDevice(NetworkPrinterOutputDevice.NetworkPrinte self._request_job = [nodes, file_name, filter_by_machine, file_handler, kwargs] # the build plates to be sent - self._job_list = list(getattr(Application.getInstance().getController().getScene(), "gcode_list").keys()) + gcodes = getattr(Application.getInstance().getController().getScene(), "gcode_list") + self._job_list = list(gcodes.keys()) Logger.log("d", "build plates to be sent to printer: %s", (self._job_list)) if self._stage != OutputStage.ready: @@ -268,7 +269,7 @@ class NetworkClusterPrinterOutputDevice(NetworkPrinterOutputDevice.NetworkPrinte return self._add_build_plate_number = len(self._job_list) > 1 - if len(self._printers) > 1: + if len(self._printers) > 1 or len(gcodes) > 1: self.spawnPrintView() # Ask user how to print it. elif len(self._printers) == 1: # If there is only one printer, don't bother asking. From 312bd137c221194a7cfa97db4117495ff9d3a529 Mon Sep 17 00:00:00 2001 From: Jack Ha Date: Thu, 21 Dec 2017 11:03:32 +0100 Subject: [PATCH 018/102] Fix merge error, a variable got renamed. CURA-4525 --- cura/PrintInformation.py | 1 - 1 file changed, 1 deletion(-) diff --git a/cura/PrintInformation.py b/cura/PrintInformation.py index 72613fb7ef..60d3c11a49 100644 --- a/cura/PrintInformation.py +++ b/cura/PrintInformation.py @@ -74,7 +74,6 @@ class PrintInformation(QObject): Application.getInstance().globalContainerStackChanged.connect(self._updateJobName) Application.getInstance().fileLoaded.connect(self.setBaseName) - Application.getInstance().projectFileLoaded.connect(self.setProjectName) Application.getInstance().getBuildPlateModel().activeBuildPlateChanged.connect(self._onActiveBuildPlateChanged) Application.getInstance().workspaceLoaded.connect(self.setProjectName) From a47107448ef1476f94ed9406568d4dae24473670 Mon Sep 17 00:00:00 2001 From: Jack Ha Date: Thu, 21 Dec 2017 11:39:37 +0100 Subject: [PATCH 019/102] Moved objects menu to lower left and made it collapsible. CURA-4525 --- .../ProcessSlicedLayersJob.py | 2 +- resources/qml/Cura.qml | 40 ++------------ resources/qml/ObjectsList.qml | 55 +++++++++++++------ resources/themes/cura-light/theme.json | 4 +- 4 files changed, 47 insertions(+), 54 deletions(-) diff --git a/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py b/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py index 077e81f8dc..5f632768ec 100644 --- a/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py +++ b/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py @@ -69,7 +69,7 @@ class ProcessSlicedLayersJob(Job): return self._build_plate_number def run(self): - Logger.log("d", "########## Processing new layer for [%s]..." % self._build_plate_number) + Logger.log("d", "Processing new layer for build plate %s..." % self._build_plate_number) start_time = time() view = Application.getInstance().getController().getActiveView() if view.getPluginId() == "SimulationView": diff --git a/resources/qml/Cura.qml b/resources/qml/Cura.qml index 9f3ccb67c5..ec9773679a 100644 --- a/resources/qml/Cura.qml +++ b/resources/qml/Cura.qml @@ -348,7 +348,6 @@ UM.MainWindow Button { id: openFileButton; - visible: !UM.Preferences.getValue("cura/use_multi_build_plate") text: catalog.i18nc("@action:button","Open File"); iconSource: UM.Theme.getIcon("load") style: UM.Theme.styles.tool_button @@ -362,25 +361,6 @@ UM.MainWindow action: Cura.Actions.open; } - Button - { - id: objectsButton; - visible: UM.Preferences.getValue("cura/use_multi_build_plate") - - text: catalog.i18nc("@action:button","Objects list"); - iconSource: UM.Theme.getIcon("plus") - style: UM.Theme.styles.tool_button - tooltip: ''; - anchors - { - top: topbar.bottom; - //top: openFileButton.bottom; - topMargin: UM.Theme.getSize("default_margin").height; - left: parent.left; - } - action: triggerObjectsList; - } - Toolbar { id: toolbar; @@ -389,32 +369,24 @@ UM.MainWindow property int mouseY: base.mouseY anchors { - top: objectsButton.bottom; + top: openFileButton.bottom; topMargin: UM.Theme.getSize("window_margin").height; left: parent.left; } } - Action - { - id: triggerObjectsList; - text: catalog.i18nc("@action:inmenu menubar:file","&Open File(s)..."); - iconName: "document-open"; - shortcut: StandardKey.Open; - onTriggered: objectsList.visible = !objectsList.visible; - } - ObjectsList { id: objectsList; - visible: false; - //z: -10; + visible: UM.Preferences.getValue("cura/use_multi_build_plate"); anchors { - top: objectsButton.top; - left: objectsButton.right; + bottom: parent.bottom; + left: parent.left; leftMargin: UM.Theme.getSize("default_margin").width; rightMargin: UM.Theme.getSize("default_margin").width; + topMargin: UM.Theme.getSize("default_margin").height; + bottomMargin: UM.Theme.getSize("default_margin").height; } } diff --git a/resources/qml/ObjectsList.qml b/resources/qml/ObjectsList.qml index bf7d92c4d6..e0e7e08820 100644 --- a/resources/qml/ObjectsList.qml +++ b/resources/qml/ObjectsList.qml @@ -19,25 +19,43 @@ Rectangle color: UM.Theme.getColor("tool_panel_background") width: UM.Theme.getSize("objects_menu_size").width - height: UM.Theme.getSize("objects_menu_size").height + height: { + if (collapsed) { + return UM.Theme.getSize("objects_menu_size_collapsed").height; + } else { + return UM.Theme.getSize("objects_menu_size").height; + } + } + + property bool collapsed: false; SystemPalette { id: palette } - Button - { - id: openFileButton; - text: catalog.i18nc("@action:button","Open File"); - iconSource: UM.Theme.getIcon("load") - style: UM.Theme.styles.tool_button - tooltip: ''; - anchors + Button { + id: collapseButton + anchors.top: parent.top + anchors.topMargin: Math.floor(UM.Theme.getSize("default_margin").height + (UM.Theme.getSize("layerview_row").height - UM.Theme.getSize("default_margin").height) / 2) + anchors.right: parent.right + anchors.rightMargin: UM.Theme.getSize("default_margin").width + + width: UM.Theme.getSize("standard_arrow").width + height: UM.Theme.getSize("standard_arrow").height + + onClicked: collapsed = !collapsed + + style: ButtonStyle { - top: parent.top; - topMargin: UM.Theme.getSize("default_margin").height; - left: parent.left; - leftMargin: UM.Theme.getSize("default_margin").height; + background: UM.RecolorImage + { + width: control.width + height: control.height + sourceSize.width: width + sourceSize.height: width + color: UM.Theme.getColor("setting_control_text") + source: collapsed ? UM.Theme.getIcon("arrow_left") : UM.Theme.getIcon("arrow_bottom") + } + label: Label{ } } - action: Cura.Actions.open; } Component { @@ -86,11 +104,12 @@ Rectangle { id: objectsList frameVisible: true + visible: !collapsed width: parent.width - 2 * UM.Theme.getSize("default_margin").height anchors { - top: openFileButton.bottom; + top: collapseButton.bottom; topMargin: UM.Theme.getSize("default_margin").height; left: parent.left; leftMargin: UM.Theme.getSize("default_margin").height; @@ -118,10 +137,11 @@ Rectangle CheckBox { id: filterBuildPlateCheckbox + visible: !collapsed checked: boolCheck(UM.Preferences.getValue("view/filter_current_build_plate")) onClicked: UM.Preferences.setValue("view/filter_current_build_plate", checked) - text: catalog.i18nc("@option:check","Filter active build plate"); + text: catalog.i18nc("@option:check","See only current build plate"); anchors { @@ -133,7 +153,6 @@ Rectangle } } - Component { id: buildPlateDelegate Rectangle @@ -167,7 +186,7 @@ Rectangle { id: buildPlateSelection frameVisible: true - height: 100 + height: UM.Theme.getSize("build_plate_selection_size").height width: parent.width - 2 * UM.Theme.getSize("default_margin").height anchors diff --git a/resources/themes/cura-light/theme.json b/resources/themes/cura-light/theme.json index e7e1a377f5..714e578d97 100644 --- a/resources/themes/cura-light/theme.json +++ b/resources/themes/cura-light/theme.json @@ -393,6 +393,8 @@ "jobspecs_line": [2.0, 2.0], - "objects_menu_size": [20, 40] + "objects_menu_size": [17, 40], + "objects_menu_size_collapsed": [15, 15], + "build_plate_selection_size": [15, 5] } } From 1ca6fa0daa240f9bac2cf5a431bbb82d43473af7 Mon Sep 17 00:00:00 2001 From: Jack Ha Date: Thu, 21 Dec 2017 11:40:59 +0100 Subject: [PATCH 020/102] Different arrow for collapsing. CURA-4525 --- resources/qml/ObjectsList.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/qml/ObjectsList.qml b/resources/qml/ObjectsList.qml index e0e7e08820..95979961c0 100644 --- a/resources/qml/ObjectsList.qml +++ b/resources/qml/ObjectsList.qml @@ -52,7 +52,7 @@ Rectangle sourceSize.width: width sourceSize.height: width color: UM.Theme.getColor("setting_control_text") - source: collapsed ? UM.Theme.getIcon("arrow_left") : UM.Theme.getIcon("arrow_bottom") + source: collapsed ? UM.Theme.getIcon("arrow_top") : UM.Theme.getIcon("arrow_bottom") } label: Label{ } } From 4b5097f99831fb49d0c4db3201bcd211225684a2 Mon Sep 17 00:00:00 2001 From: Jack Ha Date: Thu, 21 Dec 2017 12:41:06 +0100 Subject: [PATCH 021/102] Objects menu now collapses animated and it has a border. CURA-4525 --- resources/qml/ObjectsList.qml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/resources/qml/ObjectsList.qml b/resources/qml/ObjectsList.qml index 95979961c0..b67c0c0bec 100644 --- a/resources/qml/ObjectsList.qml +++ b/resources/qml/ObjectsList.qml @@ -26,6 +26,10 @@ Rectangle return UM.Theme.getSize("objects_menu_size").height; } } + Behavior on height { NumberAnimation { duration: 100 } } + + border.width: UM.Theme.getSize("default_lining").width + border.color: UM.Theme.getColor("lining") property bool collapsed: false; From c05e6b43fff33148ce75230441edacbd8b4d5895 Mon Sep 17 00:00:00 2001 From: Jack Ha Date: Thu, 21 Dec 2017 13:11:32 +0100 Subject: [PATCH 022/102] Fixed platform physics. CURA-4525 --- cura/PlatformPhysics.py | 2 +- plugins/CuraEngineBackend/CuraEngineBackend.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/cura/PlatformPhysics.py b/cura/PlatformPhysics.py index 23197dac24..cc2074cc3e 100755 --- a/cura/PlatformPhysics.py +++ b/cura/PlatformPhysics.py @@ -60,7 +60,7 @@ class PlatformPhysics: random.shuffle(nodes) for node in nodes: - if node is root or type(node) is not SceneNode or node.getBoundingBox() is None: + if node is root or not issubclass(type(node), SceneNode) or node.getBoundingBox() is None: continue bbox = node.getBoundingBox() diff --git a/plugins/CuraEngineBackend/CuraEngineBackend.py b/plugins/CuraEngineBackend/CuraEngineBackend.py index 9d7cb62a8e..473dbee31a 100755 --- a/plugins/CuraEngineBackend/CuraEngineBackend.py +++ b/plugins/CuraEngineBackend/CuraEngineBackend.py @@ -213,7 +213,7 @@ class CuraEngineBackend(QObject, Backend): Logger.log("d", "Going to slice build plate [%s]!" % build_plate_to_be_sliced) num_objects = self._numObjects() if build_plate_to_be_sliced not in num_objects or num_objects[build_plate_to_be_sliced] == 0: - Logger.log("d", " ## Build plate %s has 0 objects to be sliced, skipping", build_plate_to_be_sliced) + Logger.log("d", "Build plate %s has 0 objects to be sliced, skipping", build_plate_to_be_sliced) self._invokeSlice() return From 9f8eae006c77000f3d17c9cb3b4c5873ac6cec4d Mon Sep 17 00:00:00 2001 From: Jack Ha Date: Thu, 21 Dec 2017 13:15:10 +0100 Subject: [PATCH 023/102] Fix push free. CURA-4525 --- cura/PlatformPhysics.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cura/PlatformPhysics.py b/cura/PlatformPhysics.py index cc2074cc3e..5a57912db6 100755 --- a/cura/PlatformPhysics.py +++ b/cura/PlatformPhysics.py @@ -80,7 +80,7 @@ class PlatformPhysics: # Check for collisions between convex hulls for other_node in BreadthFirstIterator(root): # Ignore root, ourselves and anything that is not a normal SceneNode. - if other_node is root or type(other_node) is not SceneNode or other_node is node: + if other_node is root or not issubclass(type(other_node), SceneNode) or other_node is node: continue # Ignore collisions of a group with it's own children From 08391250765dc1a01780421a1db86bf13294b85c Mon Sep 17 00:00:00 2001 From: Jack Ha Date: Thu, 21 Dec 2017 13:31:19 +0100 Subject: [PATCH 024/102] Fix platform physics not working across different build plates. CURA-4525 --- cura/PlatformPhysics.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/cura/PlatformPhysics.py b/cura/PlatformPhysics.py index 5a57912db6..43118c5d01 100755 --- a/cura/PlatformPhysics.py +++ b/cura/PlatformPhysics.py @@ -57,6 +57,7 @@ class PlatformPhysics: # Only check nodes inside build area. nodes = [node for node in nodes if (hasattr(node, "_outside_buildarea") and not node._outside_buildarea)] + active_build_plate = Application.getInstance().getBuildPlateModel().activeBuildPlate random.shuffle(nodes) for node in nodes: @@ -80,7 +81,7 @@ class PlatformPhysics: # Check for collisions between convex hulls for other_node in BreadthFirstIterator(root): # Ignore root, ourselves and anything that is not a normal SceneNode. - if other_node is root or not issubclass(type(other_node), SceneNode) or other_node is node: + if other_node is root or not issubclass(type(other_node), SceneNode) or other_node is node or other_node.callDecoration("getBuildPlateNumber") != node.callDecoration("getBuildPlateNumber"): continue # Ignore collisions of a group with it's own children From fda4badab154e4dcf74e7ec3eca26c5800f9205d Mon Sep 17 00:00:00 2001 From: Jack Ha Date: Thu, 21 Dec 2017 15:08:46 +0100 Subject: [PATCH 025/102] Checked build plates in context menu now actually match the selected item's build plates; changed collapse arrow. CURA-4525 --- cura/BuildPlateModel.py | 16 ++++++++++++++++ resources/qml/Menus/ContextMenu.qml | 7 +++++-- resources/qml/ObjectsList.qml | 2 +- 3 files changed, 22 insertions(+), 3 deletions(-) diff --git a/cura/BuildPlateModel.py b/cura/BuildPlateModel.py index a29dd65de4..c832a7c522 100644 --- a/cura/BuildPlateModel.py +++ b/cura/BuildPlateModel.py @@ -2,6 +2,7 @@ from UM.Qt.ListModel import ListModel from PyQt5.QtCore import pyqtSignal, pyqtProperty, pyqtSlot from UM.Scene.Iterator.DepthFirstIterator import DepthFirstIterator from UM.Scene.SceneNode import SceneNode +from UM.Scene.Selection import Selection from UM.Logger import Logger from UM.Application import Application @@ -9,13 +10,17 @@ from UM.Application import Application class BuildPlateModel(ListModel): maxBuildPlateChanged = pyqtSignal() activeBuildPlateChanged = pyqtSignal() + selectionChanged = pyqtSignal() def __init__(self): super().__init__() Application.getInstance().getController().getScene().sceneChanged.connect(self.updateMaxBuildPlate) # it may be a bit inefficient when changing a lot simultaneously + Application.getInstance().getController().getScene().sceneChanged.connect(self._updateSelectedObjectBuildPlateNumbers) + Selection.selectionChanged.connect(self._updateSelectedObjectBuildPlateNumbers) self._max_build_plate = 1 # default self._active_build_plate = -1 + self._selection_build_plates = [] @pyqtSlot(int) def setActiveBuildPlate(self, nr): @@ -60,3 +65,14 @@ class BuildPlateModel(ListModel): @staticmethod def createBuildPlateModel(): return BuildPlateModel() + + def _updateSelectedObjectBuildPlateNumbers(self, *args): + result = set() + for node in Selection.getAllSelectedObjects(): + result.add(node.callDecoration("getBuildPlateNumber")) + self._selection_build_plates = list(result) + self.selectionChanged.emit() + + @pyqtProperty("QVariantList", notify = selectionChanged) + def selectionBuildPlates(self): + return self._selection_build_plates diff --git a/resources/qml/Menus/ContextMenu.qml b/resources/qml/Menus/ContextMenu.qml index a80de2d8a7..910f0a951a 100644 --- a/resources/qml/Menus/ContextMenu.qml +++ b/resources/qml/Menus/ContextMenu.qml @@ -49,7 +49,7 @@ Menu text: Cura.BuildPlateModel.getItem(index).name; onTriggered: CuraActions.setBuildPlateForSelection(Cura.BuildPlateModel.getItem(index).buildPlateNumber); checkable: true - checked: Cura.BuildPlateModel.getItem(index).buildPlateNumber == Cura.BuildPlateModel.activeBuildPlate + checked: Cura.BuildPlateModel.selectionBuildPlates.indexOf(Cura.BuildPlateModel.getItem(index).buildPlateNumber) != -1; visible: UM.Preferences.getValue("cura/use_multi_build_plate") } onObjectAdded: base.insertItem(index, object); @@ -57,7 +57,10 @@ Menu } MenuItem { text: "New build plate"; - onTriggered: CuraActions.setBuildPlateForSelection(Cura.BuildPlateModel.maxBuildPlate + 1); + onTriggered: { + CuraActions.setBuildPlateForSelection(Cura.BuildPlateModel.maxBuildPlate + 1); + checked = false; + } checkable: true checked: false visible: UM.Preferences.getValue("cura/use_multi_build_plate") diff --git a/resources/qml/ObjectsList.qml b/resources/qml/ObjectsList.qml index b67c0c0bec..ac99d6b0ef 100644 --- a/resources/qml/ObjectsList.qml +++ b/resources/qml/ObjectsList.qml @@ -56,7 +56,7 @@ Rectangle sourceSize.width: width sourceSize.height: width color: UM.Theme.getColor("setting_control_text") - source: collapsed ? UM.Theme.getIcon("arrow_top") : UM.Theme.getIcon("arrow_bottom") + source: collapsed ? UM.Theme.getIcon("arrow_left") : UM.Theme.getIcon("arrow_bottom") } label: Label{ } } From 24ad68aeb5b1c28f47ac81dd320939a75092c291 Mon Sep 17 00:00:00 2001 From: Jack Ha Date: Thu, 21 Dec 2017 15:13:12 +0100 Subject: [PATCH 026/102] Fix initial state of 'See only current build plate'. CURA-4525 --- resources/qml/ObjectsList.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/qml/ObjectsList.qml b/resources/qml/ObjectsList.qml index ac99d6b0ef..e688928570 100644 --- a/resources/qml/ObjectsList.qml +++ b/resources/qml/ObjectsList.qml @@ -142,7 +142,7 @@ Rectangle { id: filterBuildPlateCheckbox visible: !collapsed - checked: boolCheck(UM.Preferences.getValue("view/filter_current_build_plate")) + checked: UM.Preferences.getValue("view/filter_current_build_plate") onClicked: UM.Preferences.setValue("view/filter_current_build_plate", checked) text: catalog.i18nc("@option:check","See only current build plate"); From 9ff15bf72d49f24cd77613f5830f949aa0662e11 Mon Sep 17 00:00:00 2001 From: Jack Ha Date: Thu, 21 Dec 2017 15:42:23 +0100 Subject: [PATCH 027/102] Fixed not always updating objects list when changing build plate number by adding signals. CURA-4525 --- cura/Scene/BuildPlateDecorator.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/cura/Scene/BuildPlateDecorator.py b/cura/Scene/BuildPlateDecorator.py index cfbe792699..6a288b4bcd 100644 --- a/cura/Scene/BuildPlateDecorator.py +++ b/cura/Scene/BuildPlateDecorator.py @@ -14,9 +14,13 @@ class BuildPlateDecorator(SceneNodeDecorator): # Make sure that groups are set correctly # setBuildPlateForSelection in CuraActions makes sure that no single childs are set. self._build_plate_number = nr + if self._node is not None: + self._node.transformationChanged.emit() + #self._node.transformationChanged.emit() if self._node and self._node.callDecoration("isGroup"): for child in self._node.getChildren(): child.callDecoration("setBuildPlateNumber", nr) + child.transformationChanged.emit() def getBuildPlateNumber(self): return self._build_plate_number From 2c831ceb05fe46993ebcbd81ec28b7dc8e232faa Mon Sep 17 00:00:00 2001 From: Jack Ha Date: Thu, 21 Dec 2017 15:47:40 +0100 Subject: [PATCH 028/102] For this version, send all build plates. No print view when multiple build plates. CURA-4525 --- plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py b/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py index 1b029903b7..05069d1c0d 100644 --- a/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py +++ b/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py @@ -259,7 +259,7 @@ class NetworkClusterPrinterOutputDevice(NetworkPrinterOutputDevice.NetworkPrinte self._add_build_plate_number = len(self._job_list) > 1 self.writeStarted.emit(self) # Allow postprocessing before sending data to the printer - if len(self._printers) > 1 or len(gcodes) > 1: + if len(self._printers) > 1: self.spawnPrintView() # Ask user how to print it. elif len(self._printers) == 1: # If there is only one printer, don't bother asking. From 663ceab0699d1bae2aaab8895d81dbdc3cd0e813 Mon Sep 17 00:00:00 2001 From: Jack Ha Date: Thu, 21 Dec 2017 16:53:43 +0100 Subject: [PATCH 029/102] Undo emit transformationChanges (caused a crash), themed objects in objects list. CURA-4525 --- cura/ArrangeObjectsAllBuildPlatesJob.py | 2 -- cura/BuildPlateModel.py | 6 +++++- cura/Scene/BuildPlateDecorator.py | 10 +++++----- resources/qml/Actions.qml | 1 - resources/qml/ObjectsList.qml | 10 ++++++---- resources/themes/cura-light/theme.json | 5 +++-- 6 files changed, 19 insertions(+), 15 deletions(-) diff --git a/cura/ArrangeObjectsAllBuildPlatesJob.py b/cura/ArrangeObjectsAllBuildPlatesJob.py index 7991ac39f0..f062c2b23b 100644 --- a/cura/ArrangeObjectsAllBuildPlatesJob.py +++ b/cura/ArrangeObjectsAllBuildPlatesJob.py @@ -34,8 +34,6 @@ class ArrangeArray: if a.isEmpty: self._first_empty = i self._has_empty = True - - Logger.log("d", "lala %s %s", self._first_empty, self._has_empty) return self._first_empty = None self._has_empty = False diff --git a/cura/BuildPlateModel.py b/cura/BuildPlateModel.py index c832a7c522..118a5ce271 100644 --- a/cura/BuildPlateModel.py +++ b/cura/BuildPlateModel.py @@ -40,7 +40,11 @@ class BuildPlateModel(ListModel): def maxBuildPlate(self): return self._max_build_plate - def updateMaxBuildPlate(self, source): + def updateMaxBuildPlate(self, *args): + if args: + source = args[0] + else: + source = None if not issubclass(type(source), SceneNode): return max_build_plate = self._calcMaxBuildPlate() diff --git a/cura/Scene/BuildPlateDecorator.py b/cura/Scene/BuildPlateDecorator.py index 6a288b4bcd..36b89c5e5d 100644 --- a/cura/Scene/BuildPlateDecorator.py +++ b/cura/Scene/BuildPlateDecorator.py @@ -1,6 +1,5 @@ from UM.Scene.SceneNodeDecorator import SceneNodeDecorator -from UM.Application import Application -from UM.Logger import Logger +from UM.Scene.SceneNode import SceneNode ## Make a SceneNode build plate aware CuraSceneNode objects all have this decorator. @@ -14,13 +13,14 @@ class BuildPlateDecorator(SceneNodeDecorator): # Make sure that groups are set correctly # setBuildPlateForSelection in CuraActions makes sure that no single childs are set. self._build_plate_number = nr - if self._node is not None: - self._node.transformationChanged.emit() + # if issubclass(type(self._node), SceneNode): # TODO: Crashes on ArrangeObjectsAllBuildPlatesJob + # self._node.transformationChanged.emit() #self._node.transformationChanged.emit() if self._node and self._node.callDecoration("isGroup"): for child in self._node.getChildren(): child.callDecoration("setBuildPlateNumber", nr) - child.transformationChanged.emit() + # if issubclass(type(child), SceneNode): + # child.transformationChanged.emit() def getBuildPlateNumber(self): return self._build_plate_number diff --git a/resources/qml/Actions.qml b/resources/qml/Actions.qml index 0727642d7e..93861c0963 100644 --- a/resources/qml/Actions.qml +++ b/resources/qml/Actions.qml @@ -316,7 +316,6 @@ Item { id: arrangeAllBuildPlatesAction; text: catalog.i18nc("@action:inmenu menubar:edit","Arrange All Models To All Build Plates"); - //iconName: "document-open"; onTriggered: Printer.arrangeObjectsToAllBuildPlates(); } diff --git a/resources/qml/ObjectsList.qml b/resources/qml/ObjectsList.qml index e688928570..761ff6d3f5 100644 --- a/resources/qml/ObjectsList.qml +++ b/resources/qml/ObjectsList.qml @@ -146,6 +146,7 @@ Rectangle onClicked: UM.Preferences.setValue("view/filter_current_build_plate", checked) text: catalog.i18nc("@option:check","See only current build plate"); + style: UM.Theme.styles.checkbox; anchors { @@ -192,6 +193,7 @@ Rectangle frameVisible: true height: UM.Theme.getSize("build_plate_selection_size").height width: parent.width - 2 * UM.Theme.getSize("default_margin").height + style: UM.Theme.styles.scrollview anchors { @@ -222,9 +224,8 @@ Rectangle { id: arrangeAllBuildPlatesButton; text: catalog.i18nc("@action:button","Arrange to all build plates"); - //iconSource: UM.Theme.getIcon("load") - //style: UM.Theme.styles.tool_button - height: 25 + style: UM.Theme.styles.sidebar_action_button + height: UM.Theme.getSize("objects_menu_button").height; tooltip: ''; anchors { @@ -244,7 +245,8 @@ Rectangle { id: arrangeBuildPlateButton; text: catalog.i18nc("@action:button","Arrange current build plate"); - height: 25 + style: UM.Theme.styles.sidebar_action_button + height: UM.Theme.getSize("objects_menu_button").height; tooltip: ''; anchors { diff --git a/resources/themes/cura-light/theme.json b/resources/themes/cura-light/theme.json index 714e578d97..18f2650e77 100644 --- a/resources/themes/cura-light/theme.json +++ b/resources/themes/cura-light/theme.json @@ -393,8 +393,9 @@ "jobspecs_line": [2.0, 2.0], - "objects_menu_size": [17, 40], + "objects_menu_size": [20, 40], "objects_menu_size_collapsed": [15, 15], - "build_plate_selection_size": [15, 5] + "build_plate_selection_size": [15, 5], + "objects_menu_button": [0.3, 2.7] } } From ed8f73765ee6aa772c1fd8382af0c414aab22d73 Mon Sep 17 00:00:00 2001 From: TheAssassin Date: Fri, 22 Dec 2017 02:11:34 +0100 Subject: [PATCH 030/102] Reduce amount of movements after print At the moment, the base plate is moved to the end stops, which moves the head to the front of the base plate (at least for stock printers, but most likely for modified ones, too), making the object inaccessible. This has been fixed by moving the base plate to the back after this step. That eliminates the need for the X/Y homing, hence it got removed from the after print code. Also, before these changes, the "steppers off" command was pretty pointless, as the final move was performed after this step. This is not necessarily a problem, but can be annoying when trying to move the base plate or extruder after the print by hand. All in all some useful changes. --- resources/definitions/tevo_tarantula.def.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/definitions/tevo_tarantula.def.json b/resources/definitions/tevo_tarantula.def.json index 097281aaeb..09a9a4a0f4 100644 --- a/resources/definitions/tevo_tarantula.def.json +++ b/resources/definitions/tevo_tarantula.def.json @@ -66,7 +66,7 @@ "default_value": "G21 ;metric values\nG90 ;absolute positioning\nM82 ;set extruder to absolute mode\nM107 ;start with the fan off\nG28 X0 Y0 ;move X/Y to min endstops\nG28 Z0 ;move Z to min endstops\nG1 Z15.0 F9000 ;move the platform down 15mm\nG92 E0 ;zero the extruded length\nG1 F200 E3 ;extrude 3mm of feed stock\nG92 E0 ;zero the extruded length again\nG1 F9000\n;Put printing message on LCD screen\nM117 Printing..." }, "machine_end_gcode": { - "default_value": "M104 S0 ;extruder heater off\nM140 S0 ;heated bed heater off (if you have it)\nG91 ;relative positioning\nG1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\nG1 Z+0.5 E-5 X-20 Y-20 F9000 ;move Z up a bit and retract filament even more\nG28 X0 Y0 ;move X/Y to min endstops, so the head is out of the way\nM84 ;steppers off\nG90 ;absolute positioning\nG1 Y200 F3600 ;move baseplate to front for easier access to printed object" + "default_value": "M104 S0 ;extruder heater off\nM140 S0 ;heated bed heater off (if you have it)\nG91 ;relative positioning\nG1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\nG1 Z+0.5 E-5 X-20 Y-20 F9000 ;move Z up a bit and retract filament even more\nG90 ;absolute positioning\nG1 Y200 F3600 ;move extruder out of the way by moving the baseplate to the front for easier access to printed object\nM84 ;steppers off" } } } From 3f9f00673adf91bc6f6b649df37be490198dd5bb Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Fri, 22 Dec 2017 11:36:42 +0100 Subject: [PATCH 031/102] 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 032/102] 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 26a136f7c51e1cd8f4f9267c00ebeabc3561ed88 Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Fri, 22 Dec 2017 13:29:55 +0100 Subject: [PATCH 033/102] 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 034/102] 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 035/102] 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 036/102] 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 037/102] 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 038/102] 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 a63ad41676bfafd30c227b91cdb344e667efe0e5 Mon Sep 17 00:00:00 2001 From: TheAssassin Date: Sun, 24 Dec 2017 22:14:45 +0100 Subject: [PATCH 039/102] Move extruder to X0 --- resources/definitions/tevo_tarantula.def.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/definitions/tevo_tarantula.def.json b/resources/definitions/tevo_tarantula.def.json index 09a9a4a0f4..a9f9cefff2 100644 --- a/resources/definitions/tevo_tarantula.def.json +++ b/resources/definitions/tevo_tarantula.def.json @@ -66,7 +66,7 @@ "default_value": "G21 ;metric values\nG90 ;absolute positioning\nM82 ;set extruder to absolute mode\nM107 ;start with the fan off\nG28 X0 Y0 ;move X/Y to min endstops\nG28 Z0 ;move Z to min endstops\nG1 Z15.0 F9000 ;move the platform down 15mm\nG92 E0 ;zero the extruded length\nG1 F200 E3 ;extrude 3mm of feed stock\nG92 E0 ;zero the extruded length again\nG1 F9000\n;Put printing message on LCD screen\nM117 Printing..." }, "machine_end_gcode": { - "default_value": "M104 S0 ;extruder heater off\nM140 S0 ;heated bed heater off (if you have it)\nG91 ;relative positioning\nG1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\nG1 Z+0.5 E-5 X-20 Y-20 F9000 ;move Z up a bit and retract filament even more\nG90 ;absolute positioning\nG1 Y200 F3600 ;move extruder out of the way by moving the baseplate to the front for easier access to printed object\nM84 ;steppers off" + "default_value": "M104 S0 ;extruder heater off\nM140 S0 ;heated bed heater off (if you have it)\nG91 ;relative positioning\nG1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\nG1 Z+0.5 E-5 X-20 Y-20 F9000 ;move Z up a bit and retract filament even more\nG90 ;absolute positioning\nG1 X0 Y200 F3600 ;move extruder out of the way by moving the baseplate to the front for easier access to printed object\nM84 ;steppers off" } } } From 4b9ddc186a8ba870ea3cfb761c2d257ec3f9616d Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Thu, 28 Dec 2017 14:28:12 +0100 Subject: [PATCH 040/102] 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 041/102] 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 042/102] 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 043/102] 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 044/102] 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 045/102] 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 b733c587f433b4305d8b1bef80b5d0a785d48e76 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torbj=C3=B8rn?= Date: Fri, 29 Dec 2017 01:33:12 +0100 Subject: [PATCH 046/102] Adding support Anycubic i3 Mega Definition for _Anycubic i3 Mega_ from the user manual. --- .../definitions/anycubic_i3_mega.def.json | 57 +++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 resources/definitions/anycubic_i3_mega.def.json diff --git a/resources/definitions/anycubic_i3_mega.def.json b/resources/definitions/anycubic_i3_mega.def.json new file mode 100644 index 0000000000..2ae21b6d80 --- /dev/null +++ b/resources/definitions/anycubic_i3_mega.def.json @@ -0,0 +1,57 @@ +{ + "version":2, + "name":"Anycubic i3 Mega", + "inherits":"fdmprinter", + "metadata":{ + "visible":true, + "author":"TheTobby", + "manufacturer":"Anycubic", + "file_formats":"text/x-gcode", + "icon":"icon_ultimaker2", + "platform":"prusai3_platform.stl" + }, + "overrides":{ + "machine_name":{ + "default_value":"Anycubic i3 Mega" + }, + "machine_heated_bed":{ + "default_value":true + }, + "machine_width":{ + "default_value":210 + }, + "machine_height":{ + "default_value":205 + }, + "machine_depth":{ + "default_value":210 + }, + "machine_center_is_zero":{ + "default_value":false + }, + "machine_nozzle_size":{ + "default_value":0.4 + }, + "material_diameter":{ + "default_value":1.75 + }, + "speed_travel":{ + "default_value":60 + }, + "speed_print":{ + "default_value":50 + }, + "gantry_height":{ + "default_value":0 + }, + "machine_gcode_flavor":{ + "default_value":"RepRap (Marlin/Sprinter)" + }, + "machine_start_gcode":{ + "default_value":"G21 ;metric values\nG90 ;absolute positioning\nM82 ;set extruder to absolute mode\nM107 ;start with the fan off\nG28 X0 Y0 ;move X/Y to min endstops\nG28 Z0 ;move Z to min endstops\nG1 Z15.0 F{travel_speed} ;move the platform down 15mm\nG92 E0 ;zero the extruded length\nG1 F200 E3 ;extrude 3mm of feed stock\nG92 E0 ;zero the extruded length again\nG1 F{travel_speed}\nM117 Printing...\nG5" + }, + "machine_end_gcode":{ + "default_value":"M104 S0 ; turn off extruder\nM140 S0 ; turn off bed\nM84 ; disable motors\nM107\nG91 ;relative positioning\nG1 E-1 F300 ;retract the filament a bit before lifting the nozzle\nto release some of the pressure\nG1 Z+0.5 E-5 ;X-20 Y-20 F{travel_speed} ;move Z up a bit and retract filament even more\nG28 X0 ;Y0 ;move X/Y to min endstops\nso the head is out of the way\nG1 Y180 F2000\nM84 ;steppers off\nG90\nM300 P300 S4000" + } + } +} \ No newline at end of file From c1dea6e9d43e60d0b4a52ef9929da581e6bfdf60 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torbj=C3=B8rn?= Date: Fri, 29 Dec 2017 01:56:46 +0100 Subject: [PATCH 047/102] Adding support Tevo Black Widow Definition for _Tevo Black Widow_ from the user manual. --- .../definitions/tevo_blackwidow.def.json | 57 +++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 resources/definitions/tevo_blackwidow.def.json diff --git a/resources/definitions/tevo_blackwidow.def.json b/resources/definitions/tevo_blackwidow.def.json new file mode 100644 index 0000000000..f31bbcff23 --- /dev/null +++ b/resources/definitions/tevo_blackwidow.def.json @@ -0,0 +1,57 @@ +{ + "version": 2, + "name": "Tevo Black Widow", + "inherits": "fdmprinter", + "metadata": { + "visible": true, + "author": "TheTobby", + "manufacturer": "Tevo", + "file_formats": "text/x-gcode", + "icon": "icon_ultimaker2", + "platform": "prusai3_platform.stl" + }, + "overrides": { + "machine_name": { + "default_value": "Tevo Black Widow" + }, + "machine_heated_bed": { + "default_value": true + }, + "machine_width": { + "default_value": 350 + }, + "machine_height": { + "default_value": 250 + }, + "machine_depth": { + "default_value": 250 + }, + "machine_center_is_zero": { + "default_value": false + }, + "machine_nozzle_size": { + "default_value": 0.4 + }, + "material_diameter": { + "default_value": 1.75 + }, + "gantry_height": { + "default_value": 0 + }, + "machine_gcode_flavor": { + "default_value": "RepRap (Marlin/Sprinter)" + }, + "speed_travel": { + "default_value": 70 + }, + "speed_print": { + "default_value": 60 + }, + "machine_start_gcode": { + "default_value": "M280 P0 S160 ; release BLTouch alarm (OK to send for Non BLTouch)\M420 Z2 ; set fade leveling at 2mm for BLTouch (OK to send for Non BLTouch)\G28 ; home all\G29 ; probe bed\G92 E0 ;zero the extruded length\G1 X0.0 Y50.0 Z10.0 F3600\; perform wipe and prime\G1 Z0.0 F1000\G1 Z0.2 Y70.0 E9.0 F1000.0 ; prime\G1 Y100.0 E12.5 F1000.0 ; prime\G92 E0 ; zero extruder again\M117 Printing..." + }, + "machine_end_gcode": { + "default_value": "G92 E0 ; zero the extruded length again\G1 E-1.5 F500 ; retract the filament to release some of the pressure\M104 S0 ; turn off extruder\M140 S0 ; turn off bed\G28 X0 ; home X axis\G1 Y245 ; move Y axis to end position\M84 ; disable motors\M107 ; turn off fan" + } + } +} From 5b47c58e80a89522ac7529e7a5c556f7bd1d4a77 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Fri, 29 Dec 2017 11:22:55 +0100 Subject: [PATCH 048/102] 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 049/102] 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 050/102] 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 051/102] 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 052/102] 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 053/102] 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 054/102] 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 055/102] 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 056/102] 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 8a308ef0dbd4b2d787ba862efd7647e4c1d3089a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torbj=C3=B8rn?= Date: Fri, 29 Dec 2017 19:59:04 +0100 Subject: [PATCH 057/102] Added Quality profiles for Anycubic i3 Mega --- .../definitions/anycubic_i3_mega.def.json | 12 ++-- ...bic_i3_mega_global_Coarse_Quality.inst.cfg | 43 ++++++++++++++ ...cubic_i3_mega_global_High_Quality.inst.cfg | 43 ++++++++++++++ ...bic_i3_mega_global_Normal_Quality.inst.cfg | 43 ++++++++++++++ .../anycubic_i3_mega_petg_coarse.inst.cfg | 59 +++++++++++++++++++ .../petg/anycubic_i3_mega_petg_high.inst.cfg | 59 +++++++++++++++++++ .../anycubic_i3_mega_petg_normal.inst.cfg | 59 +++++++++++++++++++ .../pla/anycubic_i3_mega_pla_coarse.inst.cfg | 59 +++++++++++++++++++ .../pla/anycubic_i3_mega_pla_high.inst.cfg | 59 +++++++++++++++++++ .../pla/anycubic_i3_mega_pla_normal.inst.cfg | 59 +++++++++++++++++++ 10 files changed, 488 insertions(+), 7 deletions(-) create mode 100644 resources/quality/anycubic_i3_mega/anycubic_i3_mega_global_Coarse_Quality.inst.cfg create mode 100644 resources/quality/anycubic_i3_mega/anycubic_i3_mega_global_High_Quality.inst.cfg create mode 100644 resources/quality/anycubic_i3_mega/anycubic_i3_mega_global_Normal_Quality.inst.cfg create mode 100644 resources/quality/anycubic_i3_mega/petg/anycubic_i3_mega_petg_coarse.inst.cfg create mode 100644 resources/quality/anycubic_i3_mega/petg/anycubic_i3_mega_petg_high.inst.cfg create mode 100644 resources/quality/anycubic_i3_mega/petg/anycubic_i3_mega_petg_normal.inst.cfg create mode 100644 resources/quality/anycubic_i3_mega/pla/anycubic_i3_mega_pla_coarse.inst.cfg create mode 100644 resources/quality/anycubic_i3_mega/pla/anycubic_i3_mega_pla_high.inst.cfg create mode 100644 resources/quality/anycubic_i3_mega/pla/anycubic_i3_mega_pla_normal.inst.cfg diff --git a/resources/definitions/anycubic_i3_mega.def.json b/resources/definitions/anycubic_i3_mega.def.json index 2ae21b6d80..5e35ab1fdd 100644 --- a/resources/definitions/anycubic_i3_mega.def.json +++ b/resources/definitions/anycubic_i3_mega.def.json @@ -8,8 +8,12 @@ "manufacturer":"Anycubic", "file_formats":"text/x-gcode", "icon":"icon_ultimaker2", - "platform":"prusai3_platform.stl" + "platform":"prusai3_platform.stl", + "has_materials": true, + "has_machine_quality": true, + "preferred_quality": "*normal*" }, + "overrides":{ "machine_name":{ "default_value":"Anycubic i3 Mega" @@ -34,12 +38,6 @@ }, "material_diameter":{ "default_value":1.75 - }, - "speed_travel":{ - "default_value":60 - }, - "speed_print":{ - "default_value":50 }, "gantry_height":{ "default_value":0 diff --git a/resources/quality/anycubic_i3_mega/anycubic_i3_mega_global_Coarse_Quality.inst.cfg b/resources/quality/anycubic_i3_mega/anycubic_i3_mega_global_Coarse_Quality.inst.cfg new file mode 100644 index 0000000000..721aa4f25b --- /dev/null +++ b/resources/quality/anycubic_i3_mega/anycubic_i3_mega_global_Coarse_Quality.inst.cfg @@ -0,0 +1,43 @@ +[general] +version = 2 +name = Coarse +definition = anycubic_i3_mega + +[metadata] +type = quality +quality_type = coarse +global_quality = True +weight = -3 +setting_version = 4 + +[values] +layer_height = 0.4 +layer_height_0 = =layer_height + +skin_angles = [0,90] + +infill_before_walls = False +infill_angles = [0,90] + +speed_slowdown_layers = 1 +acceleration_print = 2000 +acceleration_travel = 3000 +jerk_print = 13 +jerk_travel = 13 + +retraction_combing = off + +support_z_distance = 0 +support_xy_distance = 0.7 +support_join_distance = 10 +support_interface_enable = True +support_interface_pattern = triangles + +adhesion_type = skirt +skirt_gap = 1 +speed_infill = 50 +speed_print = 50 +speed_support = 30 +speed_topbottom = 20 +speed_travel = 100 +speed_wall = 50 \ No newline at end of file diff --git a/resources/quality/anycubic_i3_mega/anycubic_i3_mega_global_High_Quality.inst.cfg b/resources/quality/anycubic_i3_mega/anycubic_i3_mega_global_High_Quality.inst.cfg new file mode 100644 index 0000000000..e69d70828d --- /dev/null +++ b/resources/quality/anycubic_i3_mega/anycubic_i3_mega_global_High_Quality.inst.cfg @@ -0,0 +1,43 @@ +[general] +version = 2 +name = High +definition = anycubic_i3_mega + +[metadata] +type = quality +quality_type = high +global_quality = True +weight = 1 +setting_version = 4 + +[values] +layer_height = 0.1 +layer_height_0 = =0.2 if min(extruderValues('machine_nozzle_size')) < 0.3 else 0.3 + +skin_angles = [0,90] + +infill_before_walls = False +infill_angles = [0,90] + +speed_slowdown_layers = 1 +acceleration_print = 2000 +acceleration_travel = 3000 +jerk_print = 13 +jerk_travel = 13 + +retraction_combing = off + +support_z_distance = 0 +support_xy_distance = 0.7 +support_join_distance = 10 +support_interface_enable = True +support_interface_pattern = triangles + +adhesion_type = skirt +skirt_gap = 1 +speed_infill = 50 +speed_print = 50 +speed_support = 30 +speed_topbottom = 20 +speed_travel = 50 +speed_wall = 50 \ No newline at end of file diff --git a/resources/quality/anycubic_i3_mega/anycubic_i3_mega_global_Normal_Quality.inst.cfg b/resources/quality/anycubic_i3_mega/anycubic_i3_mega_global_Normal_Quality.inst.cfg new file mode 100644 index 0000000000..bab515eae4 --- /dev/null +++ b/resources/quality/anycubic_i3_mega/anycubic_i3_mega_global_Normal_Quality.inst.cfg @@ -0,0 +1,43 @@ +[general] +version = 2 +name = Normal +definition = anycubic_i3_mega + +[metadata] +type = quality +quality_type = normal +global_quality = True +weight = 0 +setting_version = 4 + +[values] +layer_height = 0.2 +layer_height_0 = =0.2 if min(extruderValues('machine_nozzle_size')) < 0.3 else 0.3 + +skin_angles = [0,90] + +infill_before_walls = False +infill_angles = [0,90] + +speed_slowdown_layers = 1 +acceleration_print = 2000 +acceleration_travel = 3000 +jerk_print = 13 +jerk_travel = 13 + +retraction_combing = off + +support_z_distance = 0 +support_xy_distance = 0.7 +support_join_distance = 10 +support_interface_enable = True +support_interface_pattern = triangles + +adhesion_type = skirt +skirt_gap = 1 +speed_infill = 60 +speed_print = 60 +speed_support = 60 +speed_topbottom = 30 +speed_travel = 60 +speed_wall = 60 \ No newline at end of file diff --git a/resources/quality/anycubic_i3_mega/petg/anycubic_i3_mega_petg_coarse.inst.cfg b/resources/quality/anycubic_i3_mega/petg/anycubic_i3_mega_petg_coarse.inst.cfg new file mode 100644 index 0000000000..682e198f78 --- /dev/null +++ b/resources/quality/anycubic_i3_mega/petg/anycubic_i3_mega_petg_coarse.inst.cfg @@ -0,0 +1,59 @@ +[general] +version = 2 +name = Coarse +definition = anycubic_i3_mega + +[metadata] +type = quality +quality_type = coarse +material = generic_petg_175 +weight = 1 +setting_version = 4 + +[values] +acceleration_enabled = True +acceleration_print = 2000 +acceleration_travel = 3500 +adhesion_type = skirt +cool_fan_full_at_height = 0.5 +cool_fan_speed = 50 +cool_fan_speed_0 = 50 +infill_overlap = 15 +infill_sparse_density = 25 +initial_layer_line_width_factor = 140 +jerk_enabled = True +jerk_print = 13 +jerk_travel = 13 +layer_height_0 = 0.2 +material_bed_temperature = 80 +material_diameter = 1.7 +material_print_temperature = 230 +material_print_temperature_layer_0 = 0 +retract_at_layer_change = False +retraction_amount = 4.5 +retraction_hop = 0.075 +retraction_hop_enabled = True +retraction_hop_only_when_collides = True +retraction_min_travel = 1.5 +retraction_speed = 60 +skirt_brim_speed = 40 +skirt_gap = 5 +skirt_line_count = 3 +speed_infill = 60 +speed_print = 60 +speed_support = 30 +speed_topbottom = 30 +speed_travel = 100 +speed_wall = 60 +speed_wall_x = 60 +support_angle = 60 +support_enable = False +support_interface_enable = False +support_pattern = triangles +support_roof_enable = False +support_type = everywhere +support_xy_distance = 0.7 +top_bottom_thickness = 1.2 +wall_thickness = 1.2 +infill_pattern = zigzag +support_use_towers = False \ No newline at end of file diff --git a/resources/quality/anycubic_i3_mega/petg/anycubic_i3_mega_petg_high.inst.cfg b/resources/quality/anycubic_i3_mega/petg/anycubic_i3_mega_petg_high.inst.cfg new file mode 100644 index 0000000000..5a22a4c0b2 --- /dev/null +++ b/resources/quality/anycubic_i3_mega/petg/anycubic_i3_mega_petg_high.inst.cfg @@ -0,0 +1,59 @@ +[general] +version = 2 +name = High +definition = anycubic_i3_mega + +[metadata] +type = quality +quality_type = high +material = generic_petg_175 +weight = 3 +setting_version = 4 + +[values] +acceleration_enabled = True +acceleration_print = 2000 +acceleration_travel = 3500 +adhesion_type = skirt +cool_fan_full_at_height = 0.5 +cool_fan_speed = 50 +cool_fan_speed_0 = 50 +infill_overlap = 15 +infill_sparse_density = 25 +initial_layer_line_width_factor = 140 +jerk_enabled = True +jerk_print = 13 +jerk_travel = 13 +layer_height_0 = 0.2 +material_bed_temperature = 80 +material_diameter = 1.7 +material_print_temperature = 230 +material_print_temperature_layer_0 = 0 +retract_at_layer_change = False +retraction_amount = 4.5 +retraction_hop = 0.075 +retraction_hop_enabled = True +retraction_hop_only_when_collides = True +retraction_min_travel = 1.5 +retraction_speed = 60 +skirt_brim_speed = 40 +skirt_gap = 5 +skirt_line_count = 3 +speed_infill = 50 +speed_print = 50 +speed_support = 30 +speed_topbottom = 20 +speed_travel = 50 +speed_wall = 50 +speed_wall_x = 50 +support_angle = 60 +support_enable = False +support_interface_enable = False +support_pattern = triangles +support_roof_enable = False +support_type = everywhere +support_xy_distance = 0.7 +top_bottom_thickness = 1.2 +wall_thickness = 1.2 +infill_pattern = zigzag +support_use_towers = False \ No newline at end of file diff --git a/resources/quality/anycubic_i3_mega/petg/anycubic_i3_mega_petg_normal.inst.cfg b/resources/quality/anycubic_i3_mega/petg/anycubic_i3_mega_petg_normal.inst.cfg new file mode 100644 index 0000000000..dfe39f87f2 --- /dev/null +++ b/resources/quality/anycubic_i3_mega/petg/anycubic_i3_mega_petg_normal.inst.cfg @@ -0,0 +1,59 @@ +[general] +version = 2 +name = Normal +definition = anycubic_i3_mega + +[metadata] +type = quality +quality_type = normal +material = generic_petg_175 +weight = 2 +setting_version = 4 + +[values] +acceleration_enabled = True +acceleration_print = 2000 +acceleration_travel = 3500 +adhesion_type = skirt +cool_fan_full_at_height = 0.5 +cool_fan_speed = 50 +cool_fan_speed_0 = 50 +infill_overlap = 15 +infill_sparse_density = 25 +initial_layer_line_width_factor = 140 +jerk_enabled = True +jerk_print = 13 +jerk_travel = 13 +layer_height_0 = 0.2 +material_bed_temperature = 80 +material_diameter = 1.7 +material_print_temperature = 230 +material_print_temperature_layer_0 = 0 +retract_at_layer_change = False +retraction_amount = 4.5 +retraction_hop = 0.075 +retraction_hop_enabled = True +retraction_hop_only_when_collides = True +retraction_min_travel = 1.5 +retraction_speed = 60 +skirt_brim_speed = 40 +skirt_gap = 5 +skirt_line_count = 3 +speed_infill = 60 +speed_print = 60 +speed_support = 30 +speed_topbottom = 30 +speed_travel = 100 +speed_wall = 60 +speed_wall_x = 60 +support_angle = 60 +support_enable = False +support_interface_enable = False +support_pattern = triangles +support_roof_enable = False +support_type = everywhere +support_xy_distance = 0.7 +top_bottom_thickness = 1.2 +wall_thickness = 1.2 +infill_pattern = zigzag +support_use_towers = False \ No newline at end of file diff --git a/resources/quality/anycubic_i3_mega/pla/anycubic_i3_mega_pla_coarse.inst.cfg b/resources/quality/anycubic_i3_mega/pla/anycubic_i3_mega_pla_coarse.inst.cfg new file mode 100644 index 0000000000..c4f6f5ecae --- /dev/null +++ b/resources/quality/anycubic_i3_mega/pla/anycubic_i3_mega_pla_coarse.inst.cfg @@ -0,0 +1,59 @@ +[general] +version = 2 +name = Coarse +definition = anycubic_i3_mega + +[metadata] +type = quality +quality_type = coarse +material = generic_pla_175 +weight = 0 +setting_version = 4 + +[values] +acceleration_enabled = True +acceleration_print = 2000 +acceleration_travel = 3500 +adhesion_type = skirt +cool_fan_full_at_height = 0.5 +cool_fan_speed = 100 +cool_fan_speed_0 = 100 +infill_overlap = 15 +infill_sparse_density = 25 +initial_layer_line_width_factor = 140 +jerk_enabled = True +jerk_print = 13 +jerk_travel = 13 +layer_height_0 = 0.3 +material_bed_temperature = 60 +material_diameter = 1.7 +material_print_temperature = 200 +material_print_temperature_layer_0 = 0 +retract_at_layer_change = False +retraction_amount = 7 +retraction_hop = 0.075 +retraction_hop_enabled = True +retraction_hop_only_when_collides = True +retraction_min_travel = 1.5 +retraction_speed = 40 +skirt_brim_speed = 40 +skirt_gap = 5 +skirt_line_count = 3 +speed_infill = 60 +speed_print = 60 +speed_support = 60 +speed_topbottom = 30 +speed_travel = 100 +speed_wall = 60 +speed_wall_x = 60 +support_angle = 60 +support_enable = False +support_interface_enable = False +support_pattern = triangles +support_roof_enable = False +support_type = everywhere +support_xy_distance = 0.7 +top_bottom_thickness = 1.2 +wall_thickness = 1.2 +infill_pattern = zigzag +support_use_towers = False \ No newline at end of file diff --git a/resources/quality/anycubic_i3_mega/pla/anycubic_i3_mega_pla_high.inst.cfg b/resources/quality/anycubic_i3_mega/pla/anycubic_i3_mega_pla_high.inst.cfg new file mode 100644 index 0000000000..009bd89c16 --- /dev/null +++ b/resources/quality/anycubic_i3_mega/pla/anycubic_i3_mega_pla_high.inst.cfg @@ -0,0 +1,59 @@ +[general] +version = 2 +name = High +definition = anycubic_i3_mega + +[metadata] +type = quality +quality_type = high +material = generic_pla_175 +weight = 2 +setting_version = 4 + +[values] +acceleration_enabled = True +acceleration_print = 2000 +acceleration_travel = 3500 +adhesion_type = skirt +cool_fan_full_at_height = 0.5 +cool_fan_speed = 100 +cool_fan_speed_0 = 100 +infill_overlap = 15 +infill_sparse_density = 25 +initial_layer_line_width_factor = 140 +jerk_enabled = True +jerk_print = 13 +jerk_travel = 13 +layer_height_0 = 0.3 +material_bed_temperature = 60 +material_diameter = 1.7 +material_print_temperature = 200 +material_print_temperature_layer_0 = 0 +retract_at_layer_change = False +retraction_amount = 7 +retraction_hop = 0.075 +retraction_hop_enabled = True +retraction_hop_only_when_collides = True +retraction_min_travel = 1.5 +retraction_speed = 40 +skirt_brim_speed = 40 +skirt_gap = 5 +skirt_line_count = 3 +speed_infill = 50 +speed_print = 50 +speed_support = 30 +speed_topbottom = 20 +speed_travel = 50 +speed_wall = 50 +speed_wall_x = 50 +support_angle = 60 +support_enable = False +support_interface_enable = False +support_pattern = triangles +support_roof_enable = False +support_type = everywhere +support_xy_distance = 0.7 +top_bottom_thickness = 1.2 +wall_thickness = 1.2 +infill_pattern = zigzag +support_use_towers = False \ No newline at end of file diff --git a/resources/quality/anycubic_i3_mega/pla/anycubic_i3_mega_pla_normal.inst.cfg b/resources/quality/anycubic_i3_mega/pla/anycubic_i3_mega_pla_normal.inst.cfg new file mode 100644 index 0000000000..907b95fb71 --- /dev/null +++ b/resources/quality/anycubic_i3_mega/pla/anycubic_i3_mega_pla_normal.inst.cfg @@ -0,0 +1,59 @@ +[general] +version = 2 +name = Normal +definition = anycubic_i3_mega + +[metadata] +type = quality +quality_type = normal +material = generic_pla_175 +weight = 1 +setting_version = 4 + +[values] +acceleration_enabled = True +acceleration_print = 2000 +acceleration_travel = 3500 +adhesion_type = skirt +cool_fan_full_at_height = 0.5 +cool_fan_speed = 100 +cool_fan_speed_0 = 100 +infill_overlap = 15 +infill_sparse_density = 25 +initial_layer_line_width_factor = 140 +jerk_enabled = True +jerk_print = 13 +jerk_travel = 13 +layer_height_0 = 0.3 +material_bed_temperature = 60 +material_diameter = 1.7 +material_print_temperature = 200 +material_print_temperature_layer_0 = 0 +retract_at_layer_change = False +retraction_amount = 7 +retraction_hop = 0.075 +retraction_hop_enabled = True +retraction_hop_only_when_collides = True +retraction_min_travel = 1.5 +retraction_speed = 40 +skirt_brim_speed = 40 +skirt_gap = 5 +skirt_line_count = 3 +speed_infill = 50 +speed_print = 50 +speed_support = 30 +speed_topbottom = 20 +speed_travel = 100 +speed_wall = 50 +speed_wall_x = 50 +support_angle = 60 +support_enable = False +support_interface_enable = False +support_pattern = triangles +support_roof_enable = False +support_type = everywhere +support_xy_distance = 0.7 +top_bottom_thickness = 1.2 +wall_thickness = 1.2 +infill_pattern = zigzag +support_use_towers = False \ No newline at end of file From b782b532fcbc1ee07781a7c50d236b16759bb3da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torbj=C3=B8rn?= Date: Fri, 29 Dec 2017 23:27:39 +0100 Subject: [PATCH 058/102] Update to new machine_gcode_flavor definition --- resources/definitions/anycubic_i3_mega.def.json | 2 +- resources/definitions/tevo_blackwidow.def.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/resources/definitions/anycubic_i3_mega.def.json b/resources/definitions/anycubic_i3_mega.def.json index 5e35ab1fdd..3c0925a2d5 100644 --- a/resources/definitions/anycubic_i3_mega.def.json +++ b/resources/definitions/anycubic_i3_mega.def.json @@ -43,7 +43,7 @@ "default_value":0 }, "machine_gcode_flavor":{ - "default_value":"RepRap (Marlin/Sprinter)" + "default_value":"Marlin" }, "machine_start_gcode":{ "default_value":"G21 ;metric values\nG90 ;absolute positioning\nM82 ;set extruder to absolute mode\nM107 ;start with the fan off\nG28 X0 Y0 ;move X/Y to min endstops\nG28 Z0 ;move Z to min endstops\nG1 Z15.0 F{travel_speed} ;move the platform down 15mm\nG92 E0 ;zero the extruded length\nG1 F200 E3 ;extrude 3mm of feed stock\nG92 E0 ;zero the extruded length again\nG1 F{travel_speed}\nM117 Printing...\nG5" diff --git a/resources/definitions/tevo_blackwidow.def.json b/resources/definitions/tevo_blackwidow.def.json index f31bbcff23..f37ed9f24e 100644 --- a/resources/definitions/tevo_blackwidow.def.json +++ b/resources/definitions/tevo_blackwidow.def.json @@ -39,7 +39,7 @@ "default_value": 0 }, "machine_gcode_flavor": { - "default_value": "RepRap (Marlin/Sprinter)" + "default_value": "Marlin" }, "speed_travel": { "default_value": 70 From 7aaedff8afe7c99713cf0b7764f6378c3dfaa8b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torbj=C3=B8rn?= Date: Sat, 30 Dec 2017 00:17:36 +0100 Subject: [PATCH 059/102] Reverted back to use of RepRap (Marlin/Sprinter) --- resources/definitions/anycubic_i3_mega.def.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/resources/definitions/anycubic_i3_mega.def.json b/resources/definitions/anycubic_i3_mega.def.json index 3c0925a2d5..01abeb2079 100644 --- a/resources/definitions/anycubic_i3_mega.def.json +++ b/resources/definitions/anycubic_i3_mega.def.json @@ -43,7 +43,7 @@ "default_value":0 }, "machine_gcode_flavor":{ - "default_value":"Marlin" + "default_value":"RepRap (Marlin/Sprinter)" }, "machine_start_gcode":{ "default_value":"G21 ;metric values\nG90 ;absolute positioning\nM82 ;set extruder to absolute mode\nM107 ;start with the fan off\nG28 X0 Y0 ;move X/Y to min endstops\nG28 Z0 ;move Z to min endstops\nG1 Z15.0 F{travel_speed} ;move the platform down 15mm\nG92 E0 ;zero the extruded length\nG1 F200 E3 ;extrude 3mm of feed stock\nG92 E0 ;zero the extruded length again\nG1 F{travel_speed}\nM117 Printing...\nG5" @@ -52,4 +52,4 @@ "default_value":"M104 S0 ; turn off extruder\nM140 S0 ; turn off bed\nM84 ; disable motors\nM107\nG91 ;relative positioning\nG1 E-1 F300 ;retract the filament a bit before lifting the nozzle\nto release some of the pressure\nG1 Z+0.5 E-5 ;X-20 Y-20 F{travel_speed} ;move Z up a bit and retract filament even more\nG28 X0 ;Y0 ;move X/Y to min endstops\nso the head is out of the way\nG1 Y180 F2000\nM84 ;steppers off\nG90\nM300 P300 S4000" } } -} \ No newline at end of file +} From 04589596f04f2b6c094674dd7ccfe8f8260111fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torbj=C3=B8rn?= Date: Sat, 30 Dec 2017 00:18:15 +0100 Subject: [PATCH 060/102] Reverted back to use of RepRap (Marlin/Sprinter) --- resources/definitions/tevo_blackwidow.def.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/definitions/tevo_blackwidow.def.json b/resources/definitions/tevo_blackwidow.def.json index f37ed9f24e..f31bbcff23 100644 --- a/resources/definitions/tevo_blackwidow.def.json +++ b/resources/definitions/tevo_blackwidow.def.json @@ -39,7 +39,7 @@ "default_value": 0 }, "machine_gcode_flavor": { - "default_value": "Marlin" + "default_value": "RepRap (Marlin/Sprinter)" }, "speed_travel": { "default_value": 70 From 5690aef3d55c08e9165e5e46328c4e4555b162f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torbj=C3=B8rn?= Date: Sat, 30 Dec 2017 01:58:22 +0100 Subject: [PATCH 061/102] Added 3D Platform for Anycubic i3 Mega --- resources/definitions/anycubic_i3_mega.def.json | 2 +- resources/meshes/anycubic_i3_mega_platform.stl | Bin 0 -> 2284 bytes 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 resources/meshes/anycubic_i3_mega_platform.stl diff --git a/resources/definitions/anycubic_i3_mega.def.json b/resources/definitions/anycubic_i3_mega.def.json index 01abeb2079..cdf29ef4c1 100644 --- a/resources/definitions/anycubic_i3_mega.def.json +++ b/resources/definitions/anycubic_i3_mega.def.json @@ -8,7 +8,7 @@ "manufacturer":"Anycubic", "file_formats":"text/x-gcode", "icon":"icon_ultimaker2", - "platform":"prusai3_platform.stl", + "platform":"anycubic_i3_mega_platform.stl", "has_materials": true, "has_machine_quality": true, "preferred_quality": "*normal*" diff --git a/resources/meshes/anycubic_i3_mega_platform.stl b/resources/meshes/anycubic_i3_mega_platform.stl new file mode 100644 index 0000000000000000000000000000000000000000..cc3651b9f3acd67fa5ba55233ca0af407b90e003 GIT binary patch literal 2284 zcma)-Jx&8b4235W2iXHqgzzV&LL*8Fq=2X+lp+NbQRq{0oD}Ja_5@K5!Wpoi?OA8m zB%w01^NruLJ(JhP^mG38(M(>R-WK!aY|%`n%jSC6JkH*m(eUcN8D5QVZpWj$bk^Tx zwQI26<&^gAAU$t6{{7yyDXq4Hv`5VAhlqW-NDn`b*w{(Dew^TZMqBQffGSmTl4x1G z`aldHYxX1l!W`K-r%I4>sR-69LeEkqmSaN|K^!>ugxh6AP+g~<4T3DIF8qHSR%2 zXlFxJ*%L0N3P^8y&iPAL=S94GD|?V__wpXJWG-W*p|(eXX!T5%4Wa8%T0H>}k`bt^ia zDDh!nxIT72*oV3e BxSs$3 literal 0 HcmV?d00001 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 062/102] 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 063/102] 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 064/102] 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 065/102] 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 948497c9a88bb23491d449d0c2231c56037da8dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torbj=C3=B8rn?= Date: Sun, 31 Dec 2017 03:23:19 +0100 Subject: [PATCH 066/102] Major update of Quality profiles and definitions Removed has_materials, quality over quantity --- .../definitions/anycubic_i3_mega.def.json | 4 +- .../definitions/tevo_blackwidow.def.json | 13 ++-- ...st.cfg => anycubic_i3_mega_draft.inst.cfg} | 21 +++---- ...bic_i3_mega_global_Coarse_Quality.inst.cfg | 43 -------------- ...cubic_i3_mega_global_High_Quality.inst.cfg | 43 -------------- ...bic_i3_mega_global_Normal_Quality.inst.cfg | 43 -------------- ...nst.cfg => anycubic_i3_mega_high.inst.cfg} | 17 +++--- ...t.cfg => anycubic_i3_mega_normal.inst.cfg} | 17 +++--- .../anycubic_i3_mega_petg_coarse.inst.cfg | 59 ------------------- .../petg/anycubic_i3_mega_petg_high.inst.cfg | 59 ------------------- .../anycubic_i3_mega_petg_normal.inst.cfg | 59 ------------------- .../tevo_blackwidow_draft.inst.cfg | 33 +++++++++++ .../tevo_blackwidow_high.inst.cfg | 33 +++++++++++ .../tevo_blackwidow_normal.inst.cfg | 33 +++++++++++ 14 files changed, 135 insertions(+), 342 deletions(-) rename resources/quality/anycubic_i3_mega/{pla/anycubic_i3_mega_pla_coarse.inst.cfg => anycubic_i3_mega_draft.inst.cfg} (83%) delete mode 100644 resources/quality/anycubic_i3_mega/anycubic_i3_mega_global_Coarse_Quality.inst.cfg delete mode 100644 resources/quality/anycubic_i3_mega/anycubic_i3_mega_global_High_Quality.inst.cfg delete mode 100644 resources/quality/anycubic_i3_mega/anycubic_i3_mega_global_Normal_Quality.inst.cfg rename resources/quality/anycubic_i3_mega/{pla/anycubic_i3_mega_pla_high.inst.cfg => anycubic_i3_mega_high.inst.cfg} (85%) rename resources/quality/anycubic_i3_mega/{pla/anycubic_i3_mega_pla_normal.inst.cfg => anycubic_i3_mega_normal.inst.cfg} (85%) delete mode 100644 resources/quality/anycubic_i3_mega/petg/anycubic_i3_mega_petg_coarse.inst.cfg delete mode 100644 resources/quality/anycubic_i3_mega/petg/anycubic_i3_mega_petg_high.inst.cfg delete mode 100644 resources/quality/anycubic_i3_mega/petg/anycubic_i3_mega_petg_normal.inst.cfg create mode 100644 resources/quality/tevo_blackwidow/tevo_blackwidow_draft.inst.cfg create mode 100644 resources/quality/tevo_blackwidow/tevo_blackwidow_high.inst.cfg create mode 100644 resources/quality/tevo_blackwidow/tevo_blackwidow_normal.inst.cfg diff --git a/resources/definitions/anycubic_i3_mega.def.json b/resources/definitions/anycubic_i3_mega.def.json index cdf29ef4c1..a0bd0efb7c 100644 --- a/resources/definitions/anycubic_i3_mega.def.json +++ b/resources/definitions/anycubic_i3_mega.def.json @@ -9,7 +9,7 @@ "file_formats":"text/x-gcode", "icon":"icon_ultimaker2", "platform":"anycubic_i3_mega_platform.stl", - "has_materials": true, + "has_materials": false, "has_machine_quality": true, "preferred_quality": "*normal*" }, @@ -40,7 +40,7 @@ "default_value":1.75 }, "gantry_height":{ - "default_value":0 + "default_value":0 }, "machine_gcode_flavor":{ "default_value":"RepRap (Marlin/Sprinter)" diff --git a/resources/definitions/tevo_blackwidow.def.json b/resources/definitions/tevo_blackwidow.def.json index f31bbcff23..19ef2a45e2 100644 --- a/resources/definitions/tevo_blackwidow.def.json +++ b/resources/definitions/tevo_blackwidow.def.json @@ -8,7 +8,10 @@ "manufacturer": "Tevo", "file_formats": "text/x-gcode", "icon": "icon_ultimaker2", - "platform": "prusai3_platform.stl" + "has_materials": false, + "has_machine_quality": true, + "platform": "prusai3_platform.stl", + "preferred_quality": "*normal*" }, "overrides": { "machine_name": { @@ -33,7 +36,7 @@ "default_value": 0.4 }, "material_diameter": { - "default_value": 1.75 + "default_value": 1.75 }, "gantry_height": { "default_value": 0 @@ -41,12 +44,6 @@ "machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" }, - "speed_travel": { - "default_value": 70 - }, - "speed_print": { - "default_value": 60 - }, "machine_start_gcode": { "default_value": "M280 P0 S160 ; release BLTouch alarm (OK to send for Non BLTouch)\M420 Z2 ; set fade leveling at 2mm for BLTouch (OK to send for Non BLTouch)\G28 ; home all\G29 ; probe bed\G92 E0 ;zero the extruded length\G1 X0.0 Y50.0 Z10.0 F3600\; perform wipe and prime\G1 Z0.0 F1000\G1 Z0.2 Y70.0 E9.0 F1000.0 ; prime\G1 Y100.0 E12.5 F1000.0 ; prime\G92 E0 ; zero extruder again\M117 Printing..." }, diff --git a/resources/quality/anycubic_i3_mega/pla/anycubic_i3_mega_pla_coarse.inst.cfg b/resources/quality/anycubic_i3_mega/anycubic_i3_mega_draft.inst.cfg similarity index 83% rename from resources/quality/anycubic_i3_mega/pla/anycubic_i3_mega_pla_coarse.inst.cfg rename to resources/quality/anycubic_i3_mega/anycubic_i3_mega_draft.inst.cfg index c4f6f5ecae..e46fb38e57 100644 --- a/resources/quality/anycubic_i3_mega/pla/anycubic_i3_mega_pla_coarse.inst.cfg +++ b/resources/quality/anycubic_i3_mega/anycubic_i3_mega_draft.inst.cfg @@ -1,12 +1,11 @@ [general] version = 2 -name = Coarse +name = Draft definition = anycubic_i3_mega [metadata] type = quality -quality_type = coarse -material = generic_pla_175 +quality_type = draft weight = 0 setting_version = 4 @@ -15,16 +14,19 @@ acceleration_enabled = True acceleration_print = 2000 acceleration_travel = 3500 adhesion_type = skirt +brim_width = 4.0 cool_fan_full_at_height = 0.5 cool_fan_speed = 100 cool_fan_speed_0 = 100 infill_overlap = 15 +infill_pattern = zigzag infill_sparse_density = 25 initial_layer_line_width_factor = 140 jerk_enabled = True jerk_print = 13 jerk_travel = 13 -layer_height_0 = 0.3 +layer_height = 0.4 +layer_height_0 = 0.4 material_bed_temperature = 60 material_diameter = 1.7 material_print_temperature = 200 @@ -47,13 +49,12 @@ speed_travel = 100 speed_wall = 60 speed_wall_x = 60 support_angle = 60 -support_enable = False -support_interface_enable = False +support_enable = True +support_interface_enable = True support_pattern = triangles -support_roof_enable = False +support_roof_enable = True support_type = everywhere +support_use_towers = False support_xy_distance = 0.7 top_bottom_thickness = 1.2 -wall_thickness = 1.2 -infill_pattern = zigzag -support_use_towers = False \ No newline at end of file +wall_thickness = 1.2 \ No newline at end of file diff --git a/resources/quality/anycubic_i3_mega/anycubic_i3_mega_global_Coarse_Quality.inst.cfg b/resources/quality/anycubic_i3_mega/anycubic_i3_mega_global_Coarse_Quality.inst.cfg deleted file mode 100644 index 721aa4f25b..0000000000 --- a/resources/quality/anycubic_i3_mega/anycubic_i3_mega_global_Coarse_Quality.inst.cfg +++ /dev/null @@ -1,43 +0,0 @@ -[general] -version = 2 -name = Coarse -definition = anycubic_i3_mega - -[metadata] -type = quality -quality_type = coarse -global_quality = True -weight = -3 -setting_version = 4 - -[values] -layer_height = 0.4 -layer_height_0 = =layer_height - -skin_angles = [0,90] - -infill_before_walls = False -infill_angles = [0,90] - -speed_slowdown_layers = 1 -acceleration_print = 2000 -acceleration_travel = 3000 -jerk_print = 13 -jerk_travel = 13 - -retraction_combing = off - -support_z_distance = 0 -support_xy_distance = 0.7 -support_join_distance = 10 -support_interface_enable = True -support_interface_pattern = triangles - -adhesion_type = skirt -skirt_gap = 1 -speed_infill = 50 -speed_print = 50 -speed_support = 30 -speed_topbottom = 20 -speed_travel = 100 -speed_wall = 50 \ No newline at end of file diff --git a/resources/quality/anycubic_i3_mega/anycubic_i3_mega_global_High_Quality.inst.cfg b/resources/quality/anycubic_i3_mega/anycubic_i3_mega_global_High_Quality.inst.cfg deleted file mode 100644 index e69d70828d..0000000000 --- a/resources/quality/anycubic_i3_mega/anycubic_i3_mega_global_High_Quality.inst.cfg +++ /dev/null @@ -1,43 +0,0 @@ -[general] -version = 2 -name = High -definition = anycubic_i3_mega - -[metadata] -type = quality -quality_type = high -global_quality = True -weight = 1 -setting_version = 4 - -[values] -layer_height = 0.1 -layer_height_0 = =0.2 if min(extruderValues('machine_nozzle_size')) < 0.3 else 0.3 - -skin_angles = [0,90] - -infill_before_walls = False -infill_angles = [0,90] - -speed_slowdown_layers = 1 -acceleration_print = 2000 -acceleration_travel = 3000 -jerk_print = 13 -jerk_travel = 13 - -retraction_combing = off - -support_z_distance = 0 -support_xy_distance = 0.7 -support_join_distance = 10 -support_interface_enable = True -support_interface_pattern = triangles - -adhesion_type = skirt -skirt_gap = 1 -speed_infill = 50 -speed_print = 50 -speed_support = 30 -speed_topbottom = 20 -speed_travel = 50 -speed_wall = 50 \ No newline at end of file diff --git a/resources/quality/anycubic_i3_mega/anycubic_i3_mega_global_Normal_Quality.inst.cfg b/resources/quality/anycubic_i3_mega/anycubic_i3_mega_global_Normal_Quality.inst.cfg deleted file mode 100644 index bab515eae4..0000000000 --- a/resources/quality/anycubic_i3_mega/anycubic_i3_mega_global_Normal_Quality.inst.cfg +++ /dev/null @@ -1,43 +0,0 @@ -[general] -version = 2 -name = Normal -definition = anycubic_i3_mega - -[metadata] -type = quality -quality_type = normal -global_quality = True -weight = 0 -setting_version = 4 - -[values] -layer_height = 0.2 -layer_height_0 = =0.2 if min(extruderValues('machine_nozzle_size')) < 0.3 else 0.3 - -skin_angles = [0,90] - -infill_before_walls = False -infill_angles = [0,90] - -speed_slowdown_layers = 1 -acceleration_print = 2000 -acceleration_travel = 3000 -jerk_print = 13 -jerk_travel = 13 - -retraction_combing = off - -support_z_distance = 0 -support_xy_distance = 0.7 -support_join_distance = 10 -support_interface_enable = True -support_interface_pattern = triangles - -adhesion_type = skirt -skirt_gap = 1 -speed_infill = 60 -speed_print = 60 -speed_support = 60 -speed_topbottom = 30 -speed_travel = 60 -speed_wall = 60 \ No newline at end of file diff --git a/resources/quality/anycubic_i3_mega/pla/anycubic_i3_mega_pla_high.inst.cfg b/resources/quality/anycubic_i3_mega/anycubic_i3_mega_high.inst.cfg similarity index 85% rename from resources/quality/anycubic_i3_mega/pla/anycubic_i3_mega_pla_high.inst.cfg rename to resources/quality/anycubic_i3_mega/anycubic_i3_mega_high.inst.cfg index 009bd89c16..0dcedf664e 100644 --- a/resources/quality/anycubic_i3_mega/pla/anycubic_i3_mega_pla_high.inst.cfg +++ b/resources/quality/anycubic_i3_mega/anycubic_i3_mega_high.inst.cfg @@ -6,7 +6,6 @@ definition = anycubic_i3_mega [metadata] type = quality quality_type = high -material = generic_pla_175 weight = 2 setting_version = 4 @@ -15,16 +14,19 @@ acceleration_enabled = True acceleration_print = 2000 acceleration_travel = 3500 adhesion_type = skirt +brim_width = 4.0 cool_fan_full_at_height = 0.5 cool_fan_speed = 100 cool_fan_speed_0 = 100 infill_overlap = 15 +infill_pattern = zigzag infill_sparse_density = 25 initial_layer_line_width_factor = 140 jerk_enabled = True jerk_print = 13 jerk_travel = 13 -layer_height_0 = 0.3 +layer_height = 0.1 +layer_height_0 = 0.1 material_bed_temperature = 60 material_diameter = 1.7 material_print_temperature = 200 @@ -47,13 +49,12 @@ speed_travel = 50 speed_wall = 50 speed_wall_x = 50 support_angle = 60 -support_enable = False -support_interface_enable = False +support_enable = True +support_interface_enable = True support_pattern = triangles -support_roof_enable = False +support_roof_enable = True support_type = everywhere +support_use_towers = False support_xy_distance = 0.7 top_bottom_thickness = 1.2 -wall_thickness = 1.2 -infill_pattern = zigzag -support_use_towers = False \ No newline at end of file +wall_thickness = 1.2 \ No newline at end of file diff --git a/resources/quality/anycubic_i3_mega/pla/anycubic_i3_mega_pla_normal.inst.cfg b/resources/quality/anycubic_i3_mega/anycubic_i3_mega_normal.inst.cfg similarity index 85% rename from resources/quality/anycubic_i3_mega/pla/anycubic_i3_mega_pla_normal.inst.cfg rename to resources/quality/anycubic_i3_mega/anycubic_i3_mega_normal.inst.cfg index 907b95fb71..d528e5f86f 100644 --- a/resources/quality/anycubic_i3_mega/pla/anycubic_i3_mega_pla_normal.inst.cfg +++ b/resources/quality/anycubic_i3_mega/anycubic_i3_mega_normal.inst.cfg @@ -6,7 +6,6 @@ definition = anycubic_i3_mega [metadata] type = quality quality_type = normal -material = generic_pla_175 weight = 1 setting_version = 4 @@ -15,16 +14,19 @@ acceleration_enabled = True acceleration_print = 2000 acceleration_travel = 3500 adhesion_type = skirt +brim_width = 4.0 cool_fan_full_at_height = 0.5 cool_fan_speed = 100 cool_fan_speed_0 = 100 infill_overlap = 15 +infill_pattern = zigzag infill_sparse_density = 25 initial_layer_line_width_factor = 140 jerk_enabled = True jerk_print = 13 jerk_travel = 13 -layer_height_0 = 0.3 +layer_height = 0.2 +layer_height_0 = 0.2 material_bed_temperature = 60 material_diameter = 1.7 material_print_temperature = 200 @@ -47,13 +49,12 @@ speed_travel = 100 speed_wall = 50 speed_wall_x = 50 support_angle = 60 -support_enable = False -support_interface_enable = False +support_enable = True +support_interface_enable = True support_pattern = triangles -support_roof_enable = False +support_roof_enable = True support_type = everywhere +support_use_towers = False support_xy_distance = 0.7 top_bottom_thickness = 1.2 -wall_thickness = 1.2 -infill_pattern = zigzag -support_use_towers = False \ No newline at end of file +wall_thickness = 1.2 \ No newline at end of file diff --git a/resources/quality/anycubic_i3_mega/petg/anycubic_i3_mega_petg_coarse.inst.cfg b/resources/quality/anycubic_i3_mega/petg/anycubic_i3_mega_petg_coarse.inst.cfg deleted file mode 100644 index 682e198f78..0000000000 --- a/resources/quality/anycubic_i3_mega/petg/anycubic_i3_mega_petg_coarse.inst.cfg +++ /dev/null @@ -1,59 +0,0 @@ -[general] -version = 2 -name = Coarse -definition = anycubic_i3_mega - -[metadata] -type = quality -quality_type = coarse -material = generic_petg_175 -weight = 1 -setting_version = 4 - -[values] -acceleration_enabled = True -acceleration_print = 2000 -acceleration_travel = 3500 -adhesion_type = skirt -cool_fan_full_at_height = 0.5 -cool_fan_speed = 50 -cool_fan_speed_0 = 50 -infill_overlap = 15 -infill_sparse_density = 25 -initial_layer_line_width_factor = 140 -jerk_enabled = True -jerk_print = 13 -jerk_travel = 13 -layer_height_0 = 0.2 -material_bed_temperature = 80 -material_diameter = 1.7 -material_print_temperature = 230 -material_print_temperature_layer_0 = 0 -retract_at_layer_change = False -retraction_amount = 4.5 -retraction_hop = 0.075 -retraction_hop_enabled = True -retraction_hop_only_when_collides = True -retraction_min_travel = 1.5 -retraction_speed = 60 -skirt_brim_speed = 40 -skirt_gap = 5 -skirt_line_count = 3 -speed_infill = 60 -speed_print = 60 -speed_support = 30 -speed_topbottom = 30 -speed_travel = 100 -speed_wall = 60 -speed_wall_x = 60 -support_angle = 60 -support_enable = False -support_interface_enable = False -support_pattern = triangles -support_roof_enable = False -support_type = everywhere -support_xy_distance = 0.7 -top_bottom_thickness = 1.2 -wall_thickness = 1.2 -infill_pattern = zigzag -support_use_towers = False \ No newline at end of file diff --git a/resources/quality/anycubic_i3_mega/petg/anycubic_i3_mega_petg_high.inst.cfg b/resources/quality/anycubic_i3_mega/petg/anycubic_i3_mega_petg_high.inst.cfg deleted file mode 100644 index 5a22a4c0b2..0000000000 --- a/resources/quality/anycubic_i3_mega/petg/anycubic_i3_mega_petg_high.inst.cfg +++ /dev/null @@ -1,59 +0,0 @@ -[general] -version = 2 -name = High -definition = anycubic_i3_mega - -[metadata] -type = quality -quality_type = high -material = generic_petg_175 -weight = 3 -setting_version = 4 - -[values] -acceleration_enabled = True -acceleration_print = 2000 -acceleration_travel = 3500 -adhesion_type = skirt -cool_fan_full_at_height = 0.5 -cool_fan_speed = 50 -cool_fan_speed_0 = 50 -infill_overlap = 15 -infill_sparse_density = 25 -initial_layer_line_width_factor = 140 -jerk_enabled = True -jerk_print = 13 -jerk_travel = 13 -layer_height_0 = 0.2 -material_bed_temperature = 80 -material_diameter = 1.7 -material_print_temperature = 230 -material_print_temperature_layer_0 = 0 -retract_at_layer_change = False -retraction_amount = 4.5 -retraction_hop = 0.075 -retraction_hop_enabled = True -retraction_hop_only_when_collides = True -retraction_min_travel = 1.5 -retraction_speed = 60 -skirt_brim_speed = 40 -skirt_gap = 5 -skirt_line_count = 3 -speed_infill = 50 -speed_print = 50 -speed_support = 30 -speed_topbottom = 20 -speed_travel = 50 -speed_wall = 50 -speed_wall_x = 50 -support_angle = 60 -support_enable = False -support_interface_enable = False -support_pattern = triangles -support_roof_enable = False -support_type = everywhere -support_xy_distance = 0.7 -top_bottom_thickness = 1.2 -wall_thickness = 1.2 -infill_pattern = zigzag -support_use_towers = False \ No newline at end of file diff --git a/resources/quality/anycubic_i3_mega/petg/anycubic_i3_mega_petg_normal.inst.cfg b/resources/quality/anycubic_i3_mega/petg/anycubic_i3_mega_petg_normal.inst.cfg deleted file mode 100644 index dfe39f87f2..0000000000 --- a/resources/quality/anycubic_i3_mega/petg/anycubic_i3_mega_petg_normal.inst.cfg +++ /dev/null @@ -1,59 +0,0 @@ -[general] -version = 2 -name = Normal -definition = anycubic_i3_mega - -[metadata] -type = quality -quality_type = normal -material = generic_petg_175 -weight = 2 -setting_version = 4 - -[values] -acceleration_enabled = True -acceleration_print = 2000 -acceleration_travel = 3500 -adhesion_type = skirt -cool_fan_full_at_height = 0.5 -cool_fan_speed = 50 -cool_fan_speed_0 = 50 -infill_overlap = 15 -infill_sparse_density = 25 -initial_layer_line_width_factor = 140 -jerk_enabled = True -jerk_print = 13 -jerk_travel = 13 -layer_height_0 = 0.2 -material_bed_temperature = 80 -material_diameter = 1.7 -material_print_temperature = 230 -material_print_temperature_layer_0 = 0 -retract_at_layer_change = False -retraction_amount = 4.5 -retraction_hop = 0.075 -retraction_hop_enabled = True -retraction_hop_only_when_collides = True -retraction_min_travel = 1.5 -retraction_speed = 60 -skirt_brim_speed = 40 -skirt_gap = 5 -skirt_line_count = 3 -speed_infill = 60 -speed_print = 60 -speed_support = 30 -speed_topbottom = 30 -speed_travel = 100 -speed_wall = 60 -speed_wall_x = 60 -support_angle = 60 -support_enable = False -support_interface_enable = False -support_pattern = triangles -support_roof_enable = False -support_type = everywhere -support_xy_distance = 0.7 -top_bottom_thickness = 1.2 -wall_thickness = 1.2 -infill_pattern = zigzag -support_use_towers = False \ No newline at end of file diff --git a/resources/quality/tevo_blackwidow/tevo_blackwidow_draft.inst.cfg b/resources/quality/tevo_blackwidow/tevo_blackwidow_draft.inst.cfg new file mode 100644 index 0000000000..21169e428b --- /dev/null +++ b/resources/quality/tevo_blackwidow/tevo_blackwidow_draft.inst.cfg @@ -0,0 +1,33 @@ +[general] +version = 2 +name = Draft +definition = tevo_blackwidow + +[metadata] +type = quality +quality_type = draft +weight = -2 +setting_version = 4 + +[values] +brim_width = 4.0 +infill_pattern = zigzag +layer_height = 0.4 +material_diameter = 1.7 +speed_infill = 50 +speed_print = 50 +speed_support = 30 +speed_topbottom = 20 +speed_travel = 100 +speed_wall = 50 +speed_wall_x = 50 +support_angle = 60 +support_enable = True +support_interface_enable = True +support_pattern = triangles +support_roof_enable = True +support_type = everywhere +support_use_towers = False +support_xy_distance = 0.7 +top_bottom_thickness = 1.2 +wall_thickness = 1.2 \ No newline at end of file diff --git a/resources/quality/tevo_blackwidow/tevo_blackwidow_high.inst.cfg b/resources/quality/tevo_blackwidow/tevo_blackwidow_high.inst.cfg new file mode 100644 index 0000000000..60f51b6826 --- /dev/null +++ b/resources/quality/tevo_blackwidow/tevo_blackwidow_high.inst.cfg @@ -0,0 +1,33 @@ +[general] +version = 2 +name = High +definition = tevo_blackwidow + +[metadata] +type = quality +quality_type = high +weight = 1 +setting_version = 4 + +[values] +brim_width = 4.0 +infill_pattern = zigzag +layer_height = 0.1 +material_diameter = 1.7 +speed_infill = 50 +speed_print = 50 +speed_support = 30 +speed_topbottom = 15 +speed_travel = 100 +speed_wall = 50 +speed_wall_x = 50 +support_angle = 60 +support_enable = True +support_interface_enable = True +support_pattern = triangles +support_roof_enable = True +support_type = everywhere +support_use_towers = False +support_xy_distance = 0.7 +top_bottom_thickness = 1.2 +wall_thickness = 1.2 \ No newline at end of file diff --git a/resources/quality/tevo_blackwidow/tevo_blackwidow_normal.inst.cfg b/resources/quality/tevo_blackwidow/tevo_blackwidow_normal.inst.cfg new file mode 100644 index 0000000000..51f5894885 --- /dev/null +++ b/resources/quality/tevo_blackwidow/tevo_blackwidow_normal.inst.cfg @@ -0,0 +1,33 @@ +[general] +version = 2 +name = Normal +definition = tevo_blackwidow + +[metadata] +type = quality +quality_type = normal +weight = 0 +setting_version = 4 + +[values] +brim_width = 4.0 +infill_pattern = zigzag +layer_height = 0.2 +material_diameter = 1.7 +speed_infill = 60 +speed_print = 50 +speed_support = 30 +speed_topbottom = 20 +speed_travel = 100 +speed_wall = 50 +speed_wall_x = 50 +support_angle = 60 +support_enable = True +support_interface_enable = True +support_pattern = triangles +support_roof_enable = True +support_type = everywhere +support_use_towers = False +support_xy_distance = 0.7 +top_bottom_thickness = 1.2 +wall_thickness = 1.2 \ No newline at end of file From 7a0b49ca2ffc435218e767a788ab603baa093cf9 Mon Sep 17 00:00:00 2001 From: fieldOfView Date: Sun, 31 Dec 2017 10:53:53 +0100 Subject: [PATCH 067/102] Allow specifying the extruder stack to use for each replacement pattern The replacement pattern is (optionally) extended with an extruder_nr: {setting_key,extruder_nr}. The extruder_nr can either be a number (-1 for the global stack, 0 or higher for an extruder), or a setting keyword such as support_extruder_nr etc. Contributes to #1296 --- plugins/CuraEngineBackend/StartSliceJob.py | 55 ++++++++++++++++++---- 1 file changed, 45 insertions(+), 10 deletions(-) diff --git a/plugins/CuraEngineBackend/StartSliceJob.py b/plugins/CuraEngineBackend/StartSliceJob.py index 21b3973bc6..22a0fc5e18 100644 --- a/plugins/CuraEngineBackend/StartSliceJob.py +++ b/plugins/CuraEngineBackend/StartSliceJob.py @@ -36,9 +36,32 @@ class StartJobResult(IntEnum): ## Formatter class that handles token expansion in start/end gcod class GcodeStartEndFormatter(Formatter): def get_value(self, key, args, kwargs): # [CodeStyle: get_value is an overridden function from the Formatter class] + # The kwargs dictionary contains a dictionary for each stack (with a string of the extruder_nr as their key), + # and a default_extruder_nr to use when no extruder_nr is specified + if isinstance(key, str): try: - return kwargs[key] + extruder_nr = kwargs["default_extruder_nr"] + except ValueError: + extruder_nr = -1 + + key_fragments = [fragment.strip() for fragment in key.split(',')] + if len(key_fragments) == 2: + try: + extruder_nr = int(key_fragments[1]) + except ValueError: + try: + extruder_nr = int(kwargs["-1"][key_fragments[1]]) # get extruder_nr values from the global stack + except (KeyError, ValueError): + # either the key does not exist, or the value is not an int + Logger.log("w", "Unable to determine stack nr '%s' for key '%s' in start/end gcode, using global stack", key_fragments[1], key_fragments[0]) + elif len(key_fragments) != 1: + Logger.log("w", "Incorrectly formatted placeholder '%s' in start/end gcode", key) + return "{" + str(key) + "}" + + key = key_fragments[0] + try: + return kwargs[str(extruder_nr)][key] except KeyError: Logger.log("w", "Unable to replace '%s' placeholder in start/end gcode", key) return "{" + key + "}" @@ -56,6 +79,8 @@ class StartSliceJob(Job): self._slice_message = slice_message self._is_cancelled = False + self._all_extruders_settings = None # cache for all setting values from all stacks (global & extruder) for the current machine + def getSliceMessage(self): return self._slice_message @@ -237,12 +262,21 @@ class StartSliceJob(Job): ## Replace setting tokens in a piece of g-code. # \param value A piece of g-code to replace tokens in. - # \param settings A dictionary of tokens to replace and their respective - # replacement strings. - def _expandGcodeTokens(self, value: str, settings: dict): + # \param default_extruder_nr Stack nr to use when no stack nr is specified, defaults to the global stack + def _expandGcodeTokens(self, value: str, default_extruder_nr: int = -1): + if not self._all_extruders_settings: + global_stack = Application.getInstance().getGlobalContainerStack() + self._all_extruders_settings = {} + # keys must be strings for the string formatter + self._all_extruders_settings["-1"] = self._buildReplacementTokens(global_stack) + for extruder_stack in ExtruderManager.getInstance().getMachineExtruders(global_stack.getId()): + extruder_nr = extruder_stack.getProperty("extruder_nr", "value") + self._all_extruders_settings[str(extruder_nr)] = self._buildReplacementTokens(extruder_stack) try: # any setting can be used as a token fmt = GcodeStartEndFormatter() + settings = self._all_extruders_settings.copy() + settings["default_extruder_nr"] = default_extruder_nr return str(fmt.format(value, **settings)) except: Logger.logException("w", "Unable to do token replacement on start/end gcode") @@ -259,8 +293,9 @@ class StartSliceJob(Job): settings["material_guid"] = stack.material.getMetaDataEntry("GUID", "") # Replace the setting tokens in start and end g-code. - settings["machine_extruder_start_code"] = self._expandGcodeTokens(settings["machine_extruder_start_code"], settings) - settings["machine_extruder_end_code"] = self._expandGcodeTokens(settings["machine_extruder_end_code"], settings) + extruder_nr = stack.getProperty("extruder_nr", "value") + settings["machine_extruder_start_code"] = self._expandGcodeTokens(settings["machine_extruder_start_code"], extruder_nr) + settings["machine_extruder_end_code"] = self._expandGcodeTokens(settings["machine_extruder_end_code"], extruder_nr) for key, value in settings.items(): # Do not send settings that are not settable_per_extruder. @@ -286,12 +321,12 @@ class StartSliceJob(Job): settings["material_print_temp_prepend"] = all(("{" + setting + "}" not in start_gcode for setting in print_temperature_settings)) # Find the correct temperatures from the first used extruder - extruder_stack = Application.getInstance().getExtruderManager().getUsedExtruderStacks()[0] - extruder_0_settings = self._buildReplacementTokens(extruder_stack) + initial_extruder_stack = Application.getInstance().getExtruderManager().getUsedExtruderStacks()[0] + initial_extruder_nr = initial_extruder_stack.getProperty("extruder_nr", "value") # Replace the setting tokens in start and end g-code. - settings["machine_start_gcode"] = self._expandGcodeTokens(settings["machine_start_gcode"], extruder_0_settings) - settings["machine_end_gcode"] = self._expandGcodeTokens(settings["machine_end_gcode"], extruder_0_settings) + settings["machine_start_gcode"] = self._expandGcodeTokens(settings["machine_start_gcode"], initial_extruder_nr) + settings["machine_end_gcode"] = self._expandGcodeTokens(settings["machine_end_gcode"], initial_extruder_nr) # Add all sub-messages for each individual setting. for key, value in settings.items(): From 308d220bf3ca1acd3ede6ca275f5e4e71fb5b206 Mon Sep 17 00:00:00 2001 From: fieldOfView Date: Sun, 31 Dec 2017 12:30:00 +0100 Subject: [PATCH 068/102] Add an "initial_extruder_nr" pattern --- plugins/CuraEngineBackend/StartSliceJob.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/plugins/CuraEngineBackend/StartSliceJob.py b/plugins/CuraEngineBackend/StartSliceJob.py index 22a0fc5e18..c5182cc753 100644 --- a/plugins/CuraEngineBackend/StartSliceJob.py +++ b/plugins/CuraEngineBackend/StartSliceJob.py @@ -258,6 +258,10 @@ class StartSliceJob(Job): result["date"] = time.strftime("%d-%m-%Y") result["day"] = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"][int(time.strftime("%w"))] + initial_extruder_stack = Application.getInstance().getExtruderManager().getUsedExtruderStacks()[0] + initial_extruder_nr = initial_extruder_stack.getProperty("extruder_nr", "value") + result["initial_extruder_nr"] = initial_extruder_nr + return result ## Replace setting tokens in a piece of g-code. @@ -266,9 +270,11 @@ class StartSliceJob(Job): def _expandGcodeTokens(self, value: str, default_extruder_nr: int = -1): if not self._all_extruders_settings: global_stack = Application.getInstance().getGlobalContainerStack() + self._all_extruders_settings = {} - # keys must be strings for the string formatter + # NB: keys must be strings for the string formatter self._all_extruders_settings["-1"] = self._buildReplacementTokens(global_stack) + for extruder_stack in ExtruderManager.getInstance().getMachineExtruders(global_stack.getId()): extruder_nr = extruder_stack.getProperty("extruder_nr", "value") self._all_extruders_settings[str(extruder_nr)] = self._buildReplacementTokens(extruder_stack) @@ -320,11 +326,11 @@ class StartSliceJob(Job): print_temperature_settings = {"material_print_temperature", "material_print_temperature_layer_0", "default_material_print_temperature", "material_initial_print_temperature", "material_final_print_temperature", "material_standby_temperature"} settings["material_print_temp_prepend"] = all(("{" + setting + "}" not in start_gcode for setting in print_temperature_settings)) - # Find the correct temperatures from the first used extruder + # Replace the setting tokens in start and end g-code. + # Use values from the first used extruder by default so we get the expected temperatures initial_extruder_stack = Application.getInstance().getExtruderManager().getUsedExtruderStacks()[0] initial_extruder_nr = initial_extruder_stack.getProperty("extruder_nr", "value") - # Replace the setting tokens in start and end g-code. settings["machine_start_gcode"] = self._expandGcodeTokens(settings["machine_start_gcode"], initial_extruder_nr) settings["machine_end_gcode"] = self._expandGcodeTokens(settings["machine_end_gcode"], initial_extruder_nr) From 5104a48bcc9a1655b756ba8aea54754ecf25d4e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torbj=C3=B8rn?= Date: Sun, 31 Dec 2017 23:15:00 +0100 Subject: [PATCH 069/102] Added 3D model for Tevo Black Widow + small fix Roel Versteeg (Rovex) has kindly agreed to let us use his model of the printer, https://www.thingiverse.com/thing:1933864 Since the model is a bit to detailed for our use I have spoken with Jon MC (security0051) that had already modified for better fit in editor. https://www.thingiverse.com/thing:2592417. He has also agreed to let us use his version. --- resources/meshes/tevo_blackwidow.stl | Bin 0 -> 4330684 bytes .../anycubic_i3_mega_draft.inst.cfg | 2 +- .../anycubic_i3_mega_high.inst.cfg | 2 +- .../anycubic_i3_mega_normal.inst.cfg | 2 +- .../tevo_blackwidow_draft.inst.cfg | 2 +- .../tevo_blackwidow_high.inst.cfg | 2 +- .../tevo_blackwidow_normal.inst.cfg | 2 +- 7 files changed, 6 insertions(+), 6 deletions(-) create mode 100644 resources/meshes/tevo_blackwidow.stl diff --git a/resources/meshes/tevo_blackwidow.stl b/resources/meshes/tevo_blackwidow.stl new file mode 100644 index 0000000000000000000000000000000000000000..ef45dd1621cd2a0c949e16410456820f4138c252 GIT binary patch literal 4330684 zcmb51dAwcI`Tw`n&=^ufM5q!J5fMWOa_>F+%FfiHF$AG%j(JXq@w#GGRa9eW&4j91 zC=vIhxd}0R&AtdF5(z?T4pPH!eb%!-Ykkf+EB(HH_mAXxt><~KXU)^zXYC=U9Dm%2 zV@Ds->(CRAJEqs5qemZm$mkO{+p6ET+x6-_=A?sqZLvxA|MfR=x243sy?W^{hIiif z^k;+aJK^l9<9iS9Y(M9dX+b{YQy(rs)?QUBr6Esz@l#J{S-&xN4lvGqP@}|q-wo?r zZM82-AJ>mu`X4Dmtsr+_>+{mbI&bYeiG*sDSoO(aoty6RW$9z9=hqFXQbMgD_ucD@ z(#IG3PTiV5RHMYwXAbLZKjW*?hgsv__No$U<>hm}EPZ^v-|pMchia6_dJXGbc*Ua9 z$J5RKcqm2GSUKX~*L+p_IDOTn0|Bd`k$A7Ye`x3ZmwsLPIBv!@AyrDK732s0yr}fi z_w>o3tW=}KBmIYVo^jMSr4P#k{%x-+p;lf#@$1sZ-oKm}>RdHSjK5<@=lL6cTl)B5 zlDX3XHu zAsa3(^U-tR?jco5s1@X)eZMX9anP#24?a|*#Fft%o!1;nA3r^8C-39OAJ3{Pp;nNu zJ%&E+d+wl6x~frPeDA{b5BkuuQbMh~d=7m~t{3k;s!`(cRr1b@ejsu2o)B2DX zsz!+`Cs#W6+mFQJT`u-MFfyn{i7kF#>FjeR3D!Ast{Np;_NjEf_D2$P_n8p#p&BK| z_pWrVIe`RyAXTbSqV2UoMQrU`9(7abA4;gz6N_3TRrG;;s78sGXS7Jp@A>C#p`WWp ziQ^`;Na;=eXO14?eIQk;QDSJ`BCUk^Kv}6qiP=3{5-kygYLuA1 zsCfykT{TLa_D1s(dX#FEIOU(siC&9TsYZ!j_ckwKWKfL~Q*Lfv!sw$KCC>b7vy5=N zoc(5hE8+I4YU+u<|2j1$f}p0JxNFyW)35@J^@p5;pr)SK^C1$?zdo`iRn#bP%7x8E z9O2#_@Nt;c;Ddx(oqT+A5l7L5pMDrxyAo=(&VJ2B9I206yid}HT20=yxrnpDM_0a- z^r2R#?buwTXB?WhmcDDn1_%|+wb4nj3b z4ElF-5y$p*=Knmb!d0Who;_QNIJV#X(wAXuSB(-!4{0gl*naUx&xWyGHA=iNwxvjq z?W$2?`fV*m9NPyjb#w5c8YS9ZYboN`zTT(_As?zyVqn*b_|O_ujS_taRwN(a{_5i3 zLp4fVaYRMR%FUc1AF5H}jtLd1j}3o&k@ta-S~W^co?4MQXFfovMu}eUR}$?Cgld#% z?wT*5?W#tJ^Eb+6WMHb$c2%Rqg_T@J1`YLuA0OD-b=3HVTr5`%x2%gCUFYLqzl z;Cu-qgKFxD_A^o=H3(|z369_~O~?lbYLwXN5EoN&^zo~ga$%39Zb;Aa3&hgCSe zpmfzrX{@4NpI|iY@qc?&HA-Nm*7w{Lp&BKy8a!ZhJ%LoIMhUDqKOIQo$GvU!id3ma z39M=_UWNp70w1bT!mpg4ct0_7szwRFIzO|XfDhFufgQkRqa(J)C%kQ z*guy4?VJZwgj!)eAN$A6JN_b>Dz(CTKK74Q*WLAjln=G?>-o?>j@kE=WUAE4ujfPm z*m3ZANgry3^?d9fcdz;N{i#%`m0!yJCP%EtG zWB=Ib?P1BBtCg-Fv+Vwjuh}A%Dz!RoLUZxW9;uN*HA*~jdUNs8QY21(`{Ynos!`&y zLz|0s+kaN{2QM;!8 z=h?l(>Q(DQOQG^`b205^=Dh8o-rF)&N~qOkvzm+V=99R8?%iQUri5C}?$T0RwjSq? zr`ncI5^8lxzn0>PT}eE4c{jg?t8Z6oHGAKdV$jJXZk+j0IA_pQsnsw4&{C}UM-u0~ zJ}Q|iwYsvSrMUPnB&?k9Z*6N=E3BOVZ$hmO|5S;7e;Js}xmwLyuOj(4>4x*d?oM;A zR%`E8k+M4EZ}%n%wK}oABK0xupmUR@t5$2@RgpShXX~Yt`B1B)U#UpDT6j>OWPPaB z)Nd-%cF!MwRWem-b#BjGMuru}OiL1KHK2bkBSW|KcSxp6t&Sa@%gC_Jyd#r7)asSJ zav2$B?Km98dkrb#QyI;N5^Ck;@KolSwsm9aBCb-S#KUuj6zQi+8kbsm zIXqpezPWkGhia6#`hcNDd`i~x=J_F2N~jg&_>`=7mn{OJ8YRAaZfFso_OYzcc9l>o z$l;k@cEqx4hkU3;i7tJIxt(R|sihKX<>m0ya>Emflu#?k z@#*U!tF0PFAJr%^=kLRc_!L=vD4|x6<5T40Pna9V64fYi$+N=>J|)kx$v-_Wq)G|3 zg3M>$S@!;}@A$Gp4XQ?ow%1S}sVDAAsFjz?=k+n)C|z9@;RKR97ObL{@5S|1WZJ80 zRZqvA*WGtt7s^WGQW|HZ&%8fxkewmV{Nq@^B16uVP%Eqkf7$U~xl8?g?|%g!s!;+b zx5WkYq4`ikt*}PjcYpf0?S#9$52Q*pO5i;C+CC{CN~jf9&i$65kM5gnANsj!l)$;~ z;FsSk%WCS^e-G_S3AMsXcKQ3~mSweSm)k>GsYVH$6yGwQKD4ZqP%Er`D~Hg>J};jX zQl%OtaJKyY_Vlsog=Z!SwZdw7*rVqhK2)OwPNPp=Jhv<>&4&_dh4uA`^X8Og zbs$%7!agDT*k}9rluR{B;N(8$W0&^_hO$yZt+2C* zWp%`exaw1l5;*IR_3`=fd1&oQs1^1ivCdn6`9EPSQH>IKI?&jzFdHbLR@lANwB3*@ z)hL1I3F-c!gj!+06Z>HGtLc6%iq@_gCGZ3y-OrU!E9{WsSaQQf140d|MhQH#h~w2Z zr=1ycu7p})PgOG}20}GT;3-FX+*LxYunVgh+e1E7qXeFd#QEdKrEOM2ohzYM*tf+w zs>deVhkmXaCGaFAJr63OR@mv)%(XrrsB_gQfoCu2`CJLL!rriE%@E2;HA>)VO=xFodfZh)tstMW6n$Lx zMqFR1MhQG`OV1xlsFjzW<(i>s-P1x@sYVGr1&s6HKmTW^&})@YE66wBL?7BpRHFo* zP5$qA659=oD>Bv86LAG_%%HfwQUWrq@WeE(OEgtVsFjzGXR5y6KCZ7+qXeE!rPo(V zsFjzGppP4y;`&N8O5kZ$Iv+}?m6t<4<_*0+%u%XQ0?)r#Zdvxb$D2c)E1_19Yicm` z57j7vCuXr-X?-Z6R*+-6>hkOO?zw7|z%#bkKNjC?Z5LyS5^Ck;&_8~^;*2m}sYVGr zl}q()UL3EqtdvkI$Z@>7W${U&pQ}a*Jo$^`Zqti4CSs&k zLaiWkbak!d!<+nm5T&acCGf1UasH?$)CzK(Kl<++*H@}h0#6sy^Pm!H<>fFBzSg-` zC@a+{f#;ENKL7m{--iC7gjzw4^ZC?I{uF$uMhQH@VmWUYm9 zeWe;D@Z^tYS$?$?)^JLw73BDg{(~b9#gsRv+BoTFkm*Zt!v6 z!S4khkj)2(9ZLc}Xr(k|^KswLM^yWq+M|kmv~Jv59DU!rKCVyqZ!J#QX^!_n*?in9 z1T~0DY0Bnf+hvZeetzZ@UsmwG(SGlHABSGrTC}h7f%ie#d?-N;;!>Kj`Pic02GxUG zhxmL9oR=5RZD9FWaBc3&ZMOHp@J1qKg_JPdQnl-5U8_rNILg1ra>lRnV*HE+J|D2! zXuk#C2gA+BZbGE2=mT_(51$Y9j(FR4uzWDQ#)l_TR*0A3=A$etpAV)A8kEmgb3gR? zV0cYgc_L+{wE6htx`EYgE1UaNvD~52mOnlr|sJyPsbD&5U7wEa32j$ z{`_d^o~0lz9XTnRj|QUdw~v7iPi3xibuo1Dc`fh(?|3FuZ>7GoObKe357Lau@-c7h zoQ@5z8SV4J()B*@tG4o)C&P_6^~5oYu~RT^@Zefo6o>P4rt=Ew(HBA#bL zqrakKxcN{bWu>(FK-?^0K5>VJ?HKVg+ik1DW}%e%J4jmb=`_O|3B*-zrL?6A?e=}we&K_wC1@Ic)#{!i8?lii=9h$8 zDNWf@)%?R79c$ilm@lgVpI3@o*Z9cCrE?#{ZKPHrWrdV5+){PlUk6q%&NufyFdIzR z^F!}LXCKOq1U2xkG-XTG2GfUiyyC`1lody6#Kkcfxn;QJ{M09gbv#rODJ!KdRexD~ zM0NhS9zGvfEnPVI1D_8~3FStD8l+cg%9f9Am$yIuc$@VPJXdKy$LeG1ww2#S!!*N9hji!WhBS8(kD^1x_wYFQmzJ7a~_rVo1;?k8K zW%Ho~HHb@T%I0H#w{CxOx6Jnsu8H32I=aG-dPgoU4z`Ze8SkpmecTM_g(}*?fTLTN2bD zE~P1(kID&iI##-Nv~Rn9R&&4TMqE0cGu-;eU1R2SjJd{$l$Fw!s&ZXobza^^0FBPb zlq2ERC7z%L-myl(TPU!iY^fSKuv>NZtdYK-b9RQ6j5p!U5NJTyV-5??W{@)-v3DD3P*4ybL!V-QF5m zy==Q~zN|PKc#W=#b+w!+!Bsd)QEAFny5$*wuR+W#cs~g~wALtFs>(BfnpT3il%{Mx zc677aj$`L|!h3h`Ss^a9qHI2tpeE#_q#2X>DBG2<58q1MtqO=s`vk)y;o6laQdUY^ zs*iC%l?<#jx0KBXhy^7O)+*ZezF+nSffxjA4*VzxRj=BKHRL9a~@o4 z-oS94)Z_bs;p~L6`A~uy#HBQ4^P%gjsjoM6a((s0TFsq21EAbUPy_EuQx2&L^ZD8X znmTbVhPZnErl}KWK(L~0K6E~(23AT_HXrURBj>r##~EwR!+=rVx;ScdLJoxBfs!~>nm*M6^&t6s2V|23{OUwtu&4-@7rmPSz z!)tu_whIl%62!~1SBBU4@I=ar`2cM`^h_Tk9P1gQ8rvAPBHSn%9WlNQN3J^vg5{OHC5oPnC;}tcCOKHmH!_|4t^Y-rD zoBbI(G}>MnZa!R{2O?#qwE58W)v|q>I=MoE%#{=6G@({X$Msd258q0VDz*lsozEs1 zUXu?`q^ytvAOHy=u*tPn55&BxvHkJO%Y0yu%yy+|XSn&;T8NYt;$^t`aIK_+?Fy|LZ3!Bkml$q7 zlt@`AZ9b;CHN(D#+B0FS05~$}%A2zJP=Xr7r8H&pp-+)@T+&rBsZ>(>k-I6X&haXj@{q`OtHpl$FxvL!Z%O zhs8O3vS zNZ32Win94of*M#UP1$^u``R358A|AShvDW!iIf%MWw`m!=LS~p)^@eMGTeM9k+MR( z3^yOHbUV0a&|RF4=L|O=N~Ek1FT>4;>roY+y>bNr4eFWCKNxO4lt@`AZ9eol4tf;F zK|S%H+(=LZ?@Cj)RJn1t%5fK~3C^!-McI7lQyFRym(rBYhrU^Zl?>m-Q7g*k!_DVa zt^lY(TuM_mANs_EI~K%+S%#}(%H~4}Y7m#wl+A}e|3J=pMuHULECW`Q&4)YvsPgoK z8dxb!*?c_mr}mbAl+V@JN)VT=ENt)0@J1qKrL?6=-;?2b5E>nwDI1~h$xs9DN>jE} zX^+B;gK-dXp{H`4$Z#Xvy1j$z_LP;`-I)w5a=)iSybL!VN~EmdkKvXNJ*QSp+qHQ( zXJEMb&~xgP72;*M`OrP5YV<6W;pU^FO+uJs|eDh?n8!Ly43X;$^t`aAz_(Pgr=WhPd>!jJ@-M2yC%ul%{SbI+eFusV3Ewe!>i zKJ@;^m$La#f*Qo7H02r}IZ_AW{Hy1BAF%q{S981%$~8VbK@H+knzH%OQ)jIy?Gp?) zA4;UG5HG{c$6@ZBr7ypG!#@-L)90<7KO6R5C@bWtK80EK+nWx{CoVI~6PjM7DVq;h zx>eRkzsH(EX2^TT_-4vyciDYRqC<^#lEOM)82r8H&p zarU?#)w%9{HTYOmY3}T@wvFvST+-Zm@E<<%`Cxb>k+MQc7;dS0(Vgvf+5GyNR)V+= zSb2xeGZw$^^F-NvxP0U;=boSjaj}iTin93_d&i=V8}~TC*9YdJd%L~s<3&pTdepnt z=gV;Op+w4x`2cM`+)lWK@7!r?(ET#Q&4=zLQdWqU;pW5b?sC3!ho`UntpuL9a{o!$ zeCWv?HHb@T%H~5?$m~&w3o=*Bl+8yyp;p}8F(&ijO1HxLSY~?e>i`;zM5r6Y%W(6d zM9NBO^WjFHD#v!Vc4)L0QEnutfp?`TTdLfdPxXHHUMl*>9p5x{F1l)gZw=Zf7#<0{ zX`wv|8d@PGq%BqMU4|U1WDuM=LF_ZCwX^GiHrG-%A4*VzxRj=BKJMN#>&V?m3LjX1 zTyWNGpAW2RCS5h#*9XJR$2~%%tPn55%|}^Q-Uo8{{ae;^kaOe%@iN?efWSE!QkAko zybL!Vc<+N{#ZgqP5bu%+YG9=_WlPm#?zzOH?)_S%>au=Koj+-@F=~8ocRu6pi-r|t zOBIMmN`e|#DNWgYAa3?5tnOGJS_ceoBvMvL3Bzm3stQlYIomFB%QYkAMuHl6SDLb= z>Hzno@9%Hrex%0C!tq>lOWAyYxU(dvL0n2xHXnMDinm*M_KLS@c=k%!h*38T%pYyG zH_54iccm#?s`PCttS0z-KJ0{eUPjq`y!yqseEMVd<}x*iOKHmH<52g^VB^nnKcA0T ze}~TR9-HUe5@tBg?Uc=jE34d3#rh4;>mNA9@kGi>Y4cIeQ8ffK7@fIp*O;=boTEIEvQpZ7lw+bN(Bin~ zz&MCCJkri^%SSmTdLm_oco}X!%8|N;fCl3^_va+cM>!jKB4wqt`6%Z>PcY}u=sKF= z=EJQSFb{enWu>(FaQpvioX>4P0FCw{%0^&sK!O^0=RN^elr2@|nT$^r)=@lx(7hAG z8;O(^d@$TnRqmbr2#1|8&y96dqufYP1Mf;xwp8g{`{lx>f@ez;Z*M9%*D^d3oNH57 zND0F&Rppx6=i|mt1{T=Os7hLbQ zt&on-3+ZL0n2xHXr34 z$JhC>D>W6E&k>i_8fEjL=ZVxHE~P1(k8f{TRC&vt#bG{Q+|*pK54K;{T=4vg;pRh$ zlojG-xcSiYtIKX`Ex12xKczL48|6lV8hBTlvZV?;Nba_=i(~)LmOK91}Gql+A|{)F3X@4Qa~eL!aaHUC>wxOFJh`Fn-3+ZL0n2xHXknMc&_IAAPK~!y@;~;P=Xr7r8MOlAAa-!!Dn}{ z;`0{DH9kB+4dPOoviT_M!}oLTou~t@;TUc{bPboXLc9z&A9`kqmdJ4st&iuTlp6_Z z;9Y6TmMW|=I2#=QVr!WD+Fo<_EtO}Ml+6bSo>@|ZxRj=BKFa-vuXFZV#HCi0%?AjM zKGYyCr74>aJ(HO*tfjzndBmlCg5gH!nM}$`X-iePSMznw83%D;Wx=&CW%Ho~H9p>Q zR)ZB|G9S8n#Ttia;W}q9+HJHy`DUQ!_Hqif1x9Vq}>Th^yX8Y4f4`!NU)$ z6xee>^V0N6=pPKXeCU2KWu>(FD9;&uK6F(Cn(vn|+#WGfhV{EfJR3H%8djy z@UApvOO-woUjCnXShwpMm*I^>$_goAxTQ+>YUs~wS3_@aDex==@iN?e=w2;lg?Jfm zKFYT1>zu6w8njow@56BOQMO%Aq^y)SA6SKR6y=+2eCFkQZORJqGCbr1?=yIUJqj9KWimYEBRr!|St)Hk%Ke~Ug=2Nc zvjyysxQ3@32|l%?2HusXY^l<-aJF{DrB;;9N4XZQNfqK!nsUrJpA{kJe14Ad!C4lp z7#<0pU!|;&5{8GIhv&6CVL@EFOQCE&%Ciig4{8vX(v;0dxn}UA4^{wN@955yaw9hD|ZEeqV=y|4RjFf^J%%8djy@UApvOVyjNiEzm1liu+8J)d(eB-n z(It_xLP{8Jsru3VN@(((_S;w7%zdc)HZe4~37lUxrrbzS1Mf;xwp9JZy@|WvRQpXe zZswlizGjTL)QYnCP=Xr7r8H&paj|=LzTc_#gqNv8Tw0=(&4&`yATFgTn~x`6n$26x zb3P?QTzvbFGJgk+HqO8HT&xe{sxnYZ6$*{)AL z$Zrqis!@VZ`^^W-3Z<)rT0zDyj*XbS-OV8%s!^i$89jZVK9o=^$o$1nmVNosK_Ta= zQG!qP8}p%rT0!P*8(DV!b$bUNs!^i$_XeN5_*>qLs zl)yJ_xcbPly=E^6{X;cM;Hxy4cg@H6omUR^p&BJ>-z1Nv)t)P%R`@~<=lN)loU29& zu4F7#i>6!=#uC*i!MD|om^fgr&j;#53AN&y$cUW}U(c5n2-PTo-;DBi8nyXQLan$0 zFdva=&sC#D?F!)j?)UMlB)Mvo(0d!Q%;h}fLkYFwD#}uI=9>#bovTI(u3n8eV$Pxb zR%5OjCG?h(m~Yg%5^BYjWn)>XMhULe8VS`X!L@`D$DQs z8Amns1ir^&`S^bATYTF^E74hvU$TQ0W(MAWmSu;1@HoFK<7YL-RZquMZTi(JTJdXe|J{dLVJ_kACt0?~^OyKOh&oq|68svR`MCVa z<}h9si5vYU+vk?i+6AW7t(^g*sOPGOaLorBkJZ zT4BD5W#w`ne5ghV%w6~*TW!wKc9l>o%s#PQo$%Zfq0UvK1ZKNf=j*?aq$Z)`Z`Bh zDWO)FyJA1*=u=Oq73PvS?vg;xRigxEJAC`hQgzZhtAsI83AMs(cdh%9nGtRjec1fe z`cNy(cK9xt5o^zE4yCI;)C#jt+933Ua58&psG(u7q0E-iy=i++PMCs!>933X1taYga<8^iG~yLN!X% z-Z~VS_FM_Ig3K>4M0=F3YLw6$^Oj7gRqZ`RpFc7o^g-1qQG5H|ujj>6H6_$a??}or zck29j{i!qBDEB)!t-~zAGwWI+Wu>&W_Ma|0t7C|}4FP4KI~MLN;Dh0II=Hs`O3ZrY zS7K6Dh?n8!qdY_QPXSURC*sx7&ix|OPMtkL4Xl)=Y^nON&j$ILh28$Gs~4_)V8w7F z7Hz&kzMx`6$_i;`xaGs0Q&)ISt-EdRiV-iv&4)XuuJD{XWrcVdZa&X`<(0Q zg=-)Bh+kNBXZnFiSs`AAn~zCfz0tAuZFYa6&X$~=;e+9pkL%qnf_ZrZf65B+GTeN) zlkJ>m;XJ=WTzbw#*?cHL4dPOovibO%`>xF38`}K4YN=TU@#R=E2Sx0 zs>)|9zCJXET>HR^;YO6tSUi!kLfRP~$_md7d_Gb$a(xQ3tbA@zlXF-pP1#bl>n}!B z7oKeQ(6dLuJJ$@bqHL*Bf*M#UP1$_>r2hu_=w^H7g`UGRJ@h+1yJNT!?wME4r(`KB zq=ey?s>r*;Ss`AAn-4c{_}YUHU0HDFjd&@i3G9(+#eFnm zvQ%w2>VSOs4R&Wgca6~Ko|Cc>&$-)MSG(5;YT#XI%9g6$TXd~%y}>A-7hU6O-)6Y^ zP$Ff8co}X!rv1m=r$5y0#^qT!;?h%Y%I4!#cbo3|#~DEl;!>Kj`EWU}GUsfG&}a*% zY{c`9Sfwm0YT#XI%9bkE+H>{~?#ZFi5~Xa!u{}rR6VJ3BMGd?wP1#cAX0_ZsOZD}^ znFVpF6=n0G1T~0DY0BoK97X-ez*d5|^t^B|KX44NziD^pqwUnPE}8{Ke{Ij?&}eJCX5{7SqkDpZSt81 zW%IG;-UsBLUu#d1sbN`>W=xjzvIc!#P=k0fg19&i!iuu_P=Xp*DNWgYxHVjbYdC#2 zq2nOK&4&^xE5yri^U?BY-f`l|c1OI#iGTeN)F)`;TnzBN?3^yOAxe;!?BX-JQ+wOjnp0NH zM|^hYO1H|=g?D@z9acIcQ?`7#8mzJgsbM}yGbT$_`G$}m+x2`;+bhG3DBnWzM9K;& zVYsF0_8uehHQMdn4~{;FOGg9B=EJ@Fk@Ia4Y7m#wl+A~$^PF|g*%@)^%A2zJc<1wR z`O{BZE1?E)DNWgYY~gNI`QI6~Zs&}HxU_{+HXm-KpL3;84dPOoviT_Y&c1YYl+ik1 zxcN{bWrcVdZa&Ht@E;SW+k}CDe*H zJ(!OZCd~<_=c-Yn_Luk3OM9+_T0!RTtD`+qr5Yt_e|aC7T0*TL^BveMyQ1gZaC)v9 zCG8eHvjQO{W zC-K|+M})FcjS{u@Ohhm3xe{uHHR|`<(}xnOQ3CV%$&2l-*(^KosagJgALK(dO4Q!y zKp&_|RxaZD6Kt^CXxQuXaO z-%c_=_AXBEQlmueeKMLVjZ3Ytn~0^m*Ru0Ns#K!{&f#JWw(ay`c(X<|O7PAa%ekgX z3AOU4AIWy58YM8#$JVYsRHFpe46#S8{q#PebXB7S?^|ljhZ1Uqle;)FXsT4B1kOw1 z=ri)c=R>MgqeSifCF(;7wen{*VN6s)HA-NY5y#!5PRh0gg^@uuN?_fd9@|x;1a<&% z#?e%%rk)si59cTnNR`fNn0;u4F_?D)&_2#lw5q2yRq@PHmbCeQlh1qV(2_#;>vo%Sml|L_ej>L=4P4*)k%1V8x6=u7~ zHnjUdvh1jjuL@(L5^Cl5J|~liNS^zrEKOD74n z!rXPy4O-wCm+)7uSvFzUr9;kDqXcHVPx{*(-&r>MjEBM;rG#2xw%cz%68B7s zPmz^SE6iPe&LolVctps#5^9Cnhc`TC+1=ys3aL_!5}55?`y+jHyP_@RTnV+pY`5kF z5?Z=SsFmI*nPq?bLtDs)YLvj-6;pN3;G;sSlu#?oKCuS3c<^sw6jhB9nC)Wej(F(7 zkSZnA3UgPiLCv`mYK6HZw)R!W-xX4&8YM8>#ddYW_n(CtR6?yV+r`%YpApt}(a)7o zE6iP8LXXmXD4|xEec~v3{>a!rRHFoDyM4pR@Ze`xh0;|*tuS}R(MMCIgj!){hv zew~O^DWO)7c@mao`u2`$l&HPouj-!gu5(>{!izBjr+~VWp=_svhq>ob^UCkIQ-glM zl?<#XTmR5!cO+n?>nqCULkVgSm(rBYhdz(u835wa-92UVp#(LEOKHkAKKyAdS4fCU z*H@Hle0YKy#HBQ4^Won8$lbdi6|^v(;vg=R0(TIU%?Hk@U!D<9wrQm_W%J?MlTQ(R z=s3uI0^+5dCa|KX6~|h}WT`6Odhz+t9Siq6u%aAtj<;SsK@F^wrffc3ORTabrsgGB z>FncvJs<=%uu__``FLrmS(P2iFWBpu3{P8N#c(5D5F%xT+%nv9UjKFiOIK@+viYcg zJApez?xSEu*?iPLMZVVUUtxuw%Kb8B^HKj4nO5j`q$!&Z*Q08Fh0UEiclU^waw9TXs*Ix#c(5Lyq#Bum0tl*Ss^71FU!i!H0T@n<31B{LFUes zviZOWZT3c}75WEh_LVHFf1=2<7i~*CH8dafPZU>n=R45Q3TY>8`8dXXO=rVX;;*n- zgIc1L8wqOQ1AT%tWlNPCscYT}<9d*5I9O3OA4*UIEA~fNQ8phJuQ4KjyDdIZL`tC1 z(V4OlF6TLOP7UJK7EakxRe#$8PX~D#iFnbj5NvIt7E3l$$KI-2bU_Zd9Mw+tusDFEhXGl5&P&T6e?H!DX@UAl%WlNPlOVzzB>HvFk zSTVejNLe8z47XI(KSjo=6XMd`QZ^s;Pm#I%;W`Lbl+8zK^nn%XfaONneAE+ag|Uk? z$FVG{f1{Bn*cdr+{tbe&n)#@Iqp{u!X(w&@aC2=3=UP44=9x9(Ww`m6XJ1VBJt}2| zco}X!T>q%L{^1Ed+1A;I;pRh$lojG-xcR7mlY=#=D%cotATVm&$9sufZ~+EP`2%MH>Fjjk*xHxksq2lE6g%9biuRyoT`_e;8BrQAqRgLsvuY^f?+ zyKh&TL!C1iZa&H$<%yIP;$^t`sQ>iK-q};Uk`A8s*eL2#rL9`) znc+sbJq|`{Po%8igW;B{a<$|MogvY}aW;*38E!u6-#n|gLcFBSM>$7%ALwg5kH)-& zc8qu#Za&I6$`dIo#LIB=QLd>y!BG?%v`U_xP;Mlsfp?`TTdK+xS&n{=l^36~a-|O| zh8y9=M6CKek+MQc7;dR5`?)93M)?dIwT8JJ@iN?el>OWjDJ#UwaPv`)qMkte!HxwQ zjJ4SBAYO)>4<%AoN}G>ze_lmdX-#1#gp+^7%W(5i?$14uvO>HJHy`EBtA>C^*U=-k7BtCAxQSc6GiW z;X?_vf*gOhtv6<=Mv3vGn~QjJ%i?=?2~U@lP^$-i-CVSv!`nz=`L^e(QR1bYn~QJe zrwG+3(Pyvb;;rGSJGNA##ASyz7ZYzMamfx3`&NRMs2U}nn9^L_y2eL|(p5sOo;ba^ zcxfs2!M@Yudwr@=;N zd$tsn-IF<&xYTNPmzLtP_1J4QAF5H}l72146}ytS`o23uuT_l_m2oXaFD^ZOSYu{Cow!7T*2ZwhDRing!&nrt98I(|~ zqhF~=A7rXfAF5Ge>Ngeb=QC!7{-GKr&iGX>BenWaLaom2nak+2=hth5_W)F*#DM;} zjBx5hHA);iJeP4-3Dqd^%3isQ?OVSb-#u525(}=)6Z0VITnV-6bD+z4a>h}O5<4A| z%dGaRou`MkTR*Gueixk|v+VLAclsN%kSfeFv{D+g-SWLS58n6u0b%q}Lai{{{j!5M zw|sfW)G#|Mp;nl?_T8TZ>!UtZYK560-o0~XTYGp505@n zqXcHV6X(q-*9=`g|19J~3AMu9b?ieVSRWV}lu#?oKJgYP_x@EFuT-N1=E083=%c0c zXQ8Z=P%F$`i^h?7VZ;%ktdvkIn|*j=*4yt*4&#+-l)!9v%2D*8IaflhFcbaXgj!)P ziDh;8uO@|@t40aTT`}i7KJ~MZb0yRYGf^yE&4&_dg}EfQs|$ae7gl7dQ37*UY$cPw zvv=;$Yn4zd%tWyzYO0h_E6gRapKo)iIM1;%%ewyl{ZJpOQ37*U982!|+TPzqs+3SG%v~IbvTWgMD~3^23AMu96-QAw z?uMCD3AMsZ6h~^U4<*zJvrpWseK;lyWu+P=Fn7iIqtDy}d_ItKCDf{RR?}1|p;icw zdrrM$O9{0aI4_r-@LO`nmJ(_OIqrn@jxE(F(YkT#5_a@Ts1@Y6qt`pORHMYF`?t!; zgx;~Ggjzw4Cld=U_+_X;)hKc3rS5xftEBb@N~jg&c*3GJs2U|cxW9D?Cq+uA73B0C zTdGmwy{B5kNmxu1W;G?$3Np{NvP|#TQjHReUu`YoshYl}r-WKT?zREfSNEKBdj9LI zwFBwn3JIrxy1t@pr-LANE(vOIzN0i{JNI$Fz^>vJe)!OFkfSK#Ww`lJB4vem8E!uC z9SEE}!v|Mkh)YvK*?cHL4dPOoa>z%HUzB?vat6TNJ>unQLdZuTQdWqU;pXFEcR$ME z?w%C*K$-B&g1Z;Q%W(6dM9K>BGTeN$yBh4ibgO^bhZ@8l0CAxdc%DSrd?-N;;!>Kj z`8asuqRN(g9^mV|W))Vh4G}NH&4&_P8>$uJWw`mkJz=c#)GPy9XND|Of*M#UP1#bl zxBKGM4b$wK#i=<1Rys3enG)2%N@>dG<2(0dm5$@h2YVDWx+|jGNKnK2z}yEb#$;vn z{yte{o&VTZ!1YXqr!62DZazK`B4vem8E!ss(*pas))e;!h?n8!Ly43X;$?X7fw9E* z4~zgjZ__@(@Zcj5DJ#UwaP#q!YgZd@bG`2$XeI0uXc;&?MZA(PqW7}KM&sl@eXfL81iOoua8hBTlvZc!1ELO!=b>JhlHblI-0(3VIJK~#?paxb- zQ?^t&A}7IpCN#QBrECQ5J7cP-L3)*@Z253^`&5^4cl;n9EL~`L+Jbl~M*?^JfS?9e zN>jE}oiwGb<7xN4GYCDo;|UwA7;eN^M?6y!DJ!Ie;g+h)-MgZ4G+=ja2Cjs}#C zxWW;)lms>Kt~6y!)gdQO>3G<^If;DK?1akw8LSv?#AruMDhckk)Qb6tySq0w9#ws{ zcUSL&tprxw8-S*4`A~uySSd}}QdN#u-iPjfxp#&Y!;L7%D^H}XkP?Pls_;%Y-f2Kt zsfK3&h?n8!Ly43X;$^t`xcir*@>e&rZ<+G>2jW7@=Q9t=<^#klB|#11Qkt^)*x$`j zD^9hsgfk8_Xfa`KuQ}`6&k-w>gjy+0*-~}PnNupexi?=>R+zW>)B?H1(*;;D+=ycx zv1>`BtdK&6TRsps_G$QEXBM8;BVLA^4<%Aoh?n8!<8*i9>6u$>;C-OQu@1OGLcEk4 z32I=aG-XTG9-EA+p1qOPIY%GFrB;;9$L@|8UlPJo}cqum$)WAw<%9bkJu!);C;X`+$I=?c!kw{q~B@DMzA#RR|I+AIh zV7U2EB4vem8D8VV=K~s^F6;ct@ERYUNLe9XhMSLa{_up(kf=4B=^|c+n~!q-@I=ZA z@iN?exLXQy+~A55;K~wlY3rkGK9ryaaVbsNe7L8M88e1PC?f*Qo7 zG-dPQ=BS)=6juO<3q6%@Jy13uN>IamV1|PgV=^CoZ(r2$?H<+#b=23r6T{7i5-BUh z%W(6tc;M#M|J-Qf6?YBLV7G-6bHvMV^YI@?d{YuBE2YgxIe+*%=O_w|wpWImk8=L- zM9NBO^YPlC&GW0Tu`?MhU5vFjpFz9~Hy=u*tPn55&Bq@eXsaCkrR_g-RfP2?-o-$? z3^yN_IO3R+NLe9XhMNz4_k8lyO2J?7+~Jn-3*YR*0A3=A-lt@`2UWS_wcUl{svG5Ds&_L!dula>;BX;@b-SCV>t(4|>k&VDuXn*aw z5^4oG{+j&z{&u$^&Z$+S1i#7L=tBv$f*kKQT=TYgx1nm3XdBQ}oPYJ)LFVJyuJLX| zCDaP?sR!`J6TRC|HA?h7vZ+YlZK#A=LB_YGEmeBAp=y+<{bD+61Es5kT0u_VZKxV0 z_>J|(`cOixAjexH9{qWIzeF`kEN*Hp;$0S+4<*zJa=iCL3DqcZ+K$Zye=(M2Q{qe9Mc3sHA<|rUvt6VzSk0}QR3v| zn+yK-B+I^jBEAEu8YND-u({yxU~7G-Mu};+H5dFHbe4VpV7%KxH;5s3CEE7d45=-StRZ6JUp6-nlzVTn1 zD%B`)^pKWGKA|+MKIK34C=vrb_QNR6?yVN5xd>-G-`B0^ht(*Ps$=g_$#!?pNQ< z3(tgAqXg#jScALm9Pc(%jS??SuPmXpE1_0cm!#X3YLvigDYo`lBW^4ajS{`yuSk#5 zyA4&NMB6&KjBx5h3AJkOn#;(bgld#Hf1_MRAHCa9HA-|DlP_U5P(rOPtmHB#YN}MD z#Oz&i8F%$=L)9oT_;>jd#&*>xaqhvn%s84V)zlO5*UP`2xyklMxi8DPxTvWo_`CGz z0i&qSgP5;qg;6`+;}sd3)o4{u$C-2I0r74_jZ1xCw&O2=-91H5#k&oaP%F%K{FR{l z9^~I!!|GKDwZd%2dmFOscTdK%y#@$QkJ><$ikaWN~jg)u6To)mX#7}h1nl)!8k@1WDW z4V6$U%y#_UZIC?Dxp@GyJC-uJ)}KXLai|S z#4%CtHdKugnC;@opm!T8p;nl?;^?EPQbMgT&c{8D-fgHFB{18?F;VX}R6?yV+r@EL z?>1CItuWigvHiVi)5EEO5^9CHi}Om%H^wU^)C%EoKd5&bDxp@(|1&SXe~Wvy=%v<& zT0xGxR3%iS#Hi(3i>?RGN$hcyP%FrBx2<;@sz!;I2DdKZ)IbTff*el`^ln4dDA9gO ztDJu5-G)l2736sOQFFJUXq33@rq*H!cN+?!R*>T-{s~s9r_x94wR+bJ;(`WNN>er;dIv;m{HUjEzaXh`DNWgYxG}_^ z2BY^fRVWk9EoCb!civM&pnMQlJGEil%{Mx^d3mGM4ss(g*dH)6=m~L-e2P11E2<0N>er;dUuQdUR_ z!!1>MKLht1h)ef4l+A|{)F3XUDVvY-UNxU{o{J(bJ@KS$KJ*?)Y7m#wl+B0UBB&>K zJd;Db3^yN2q^uAx!_9}@g`}ryS_cd_A4;UG5HG{chu-_4J0b3)5HG{chu-^jE}>79U>Wq6XJqXA_j%DL9} zC~DwcY08!=y*CP};uwXLu-qs&64b!E(v&S#dhej_Gr6xtybL!VN~Ek1FT>4;-uKE> zAufzWe1bvQd?-N;;!>Kj`6!>I=2$Zzy*!WR=`iyV@61#pWrcVdZa(xrWR7r%S4)(# z<)gem(bqXOh)Ze8=A&Gf_HJHy`C3)qy%kDe`tPJ+q{2KFT@D6VxCsr74?_a_02) z!Ip@)Fk5nbq-;KvpayX%P1$_tU16F-oiiA2KJ>1zlojG-xcP8nd-#$vPaT;Lo_KHt zU_O+f25~7(*?g4!!BGTeOVooC1)pJ(b?gyH5xiIf%MWw`lptJiRIJz4|rYs09$gaoTESUIUvVJ#LIB=p+w3G@iN?elyBB}A39p{i5cQ$xcMmGtnoz33h^@Be3bp8 zrUs!wpTILg#LF5qA7%gWM9NBO^HJ`jJfW*1UDYt$d?=B!Lc9z&A9`mdcN5U)>V>JJYmuM`nb{u zp=oEh`A{Ndr8ML$+vu9n`TVhS{3yEe$-|1idwnqtadqiC%-y~6<+SYe?H;FWJ~nj3 z`z1jQtdypV@GP7E@p&zi$Ji;$6>UXv?J?i_c-vkZer;r#>;P@=$lX6&UHg=Fr81pqaV; z;9|&zi~U%_aPy%=%1UYTap#yhl`*b_k&lu899-P==(pZS+g?M8^Edp~`(U{FxJ!tX z72;*M`S{?76Z275-dceV)YPWCeCgwz^Y>xJYO8(W{ZTd_AoeZ^Y7m#wl+DLKj`FLTByJg|s^Zc(GNg%Ga*Ie5@<5MfQ zQZ^q-sFl)`&BynjpVxA?^MkVTE$$4fbFF8Fn~xuaNLe9XhMSL1pYEMsbV{rD@$j4> z#TiF^nn`B)%C%1Y@PA3h(RIPq(rb{}uwZ+zMrUgN_P zDJ#UwaPu*5?3{`lukLB4wqt`Pk9*@f{t7cI8KzGrscmti6b` z`A~uy#HBQ4^HGjIJ|7r;hW52_7p)ItFydvn`A{Ndg?JfmJ`Qu^?y^nYa^wT8Vc`{v zd_FWKl+DNCj`(RwP=mOXrffdS@ygFp7y-Jk^|?BxD zscKbE<4z7E9{Tbh{%$I~#j0^B{r*}zbmHC*BM`s++4t!2YzrE-;+N))`0k>MRZ6H8zcg>eYqO?oNgt|FV$dnAowygr2rF6qYu}^C z8{^QZ6~8oZ#04XM?sJZOs78sF0j-_5->1=s5^BXS%^Pv~%D)SBt{Npi{wQ~KK0Dz< z3AN&PebKJe|>H1JYt?*S;yx(s5aCIJ1r5YukTFHGW zHngi{j@%`TB}%9jzHu7c?(26v9DJxoiE|%rUPAv+Laq2cP|JtwgTaStl;|m8#tkt}P@k$A`;`cz!$7VbKJe00#l$iQ@(-OvACDe-F12rFg z-<}fY57j8K@{LV0e{8yNt1y-*p;r7JsQGYnROsibQR12tnq(fl^uhx|&XrIreh<`q z{CuD7L#kAxM9<$eEnz-aLaq2cQ1fwX$Md1iRinh(1DckwE>S|Q_&reb@!?M%3HeZs z63g~!3Tv$_yY{UHXgRofBXD)Q_*@dk=Tt)U!ROm(Tg69Cwva zE2SZGSDa--yFV7jE7d6R-gm<~u?|kBigBqGWbW>>?Aq3UhWb#A601Hrtdr~Om^D8Y@R&Cu2U=n*UnJ2dsid;=T6%p`F}EXW4Nxu6cl|QbMgDV|Q;p9$9x-AXKBo zBmIYVo>A_1-O1g-=Z6|pLan@9o+f13KjvR`A5*0oCC1+|r1N~YkG53B(rV9@P%AIH zlc`2RHA?KY>X1&JYh~G6e|RR8u4?KD?7SO&C;^#P&x{$|i8DDP?p=QQP*$p`C%8k- zvekdKW~dJ(Ak*r~=Zj9BWyX@iDqIP*g3MDx_f}X(|KLM4N{sJaxc*`L_AFcDwc$P= z@S%iSdAU5L%Cf%qKez?!Ts2ByZy0xwF(>XzJVh2dV#MnW}8U{8hbm^2cqQ35+8e3hh;P>mAU@8BCFwFGjm8YQrM!R@WJ1aht# zC9oI4_djY0_)v`!*jeDa8I6Q$l)yd#-TMhRQPrwG+3QG2GZ zEzw(*t-7{V?%?L#`Gaaxg|bo~8ZTD;>3pb039RAMWu+P=up)1)50tKIl)(DBvCcuL zMhUEz)9p$%N?`5V*mmJVHA-M5o9-W~Q3C7IbRSfW5?E!X`?+eAz?!jfEJ2;CMhUC{ z8^c#jj`?F?`7J$yBKo zzS@&!+Us!;;xzWC*2 zErD50HA>(#8oyDjB{1WtMhTpe7Xu@azS@KC31Cs!udZ;E51^OJ>B#Raf*UMIcn81fEmjmtjVn zKCpi{Ra1=;c;1HJdDW&0^`ROi^f_K^RUmwOEnA$nF`Rg_Rc6_QRc83v8Tn8`t#E!F zTjFCwM&8R+h7xLp)9Ba|&p&fsSOF-ZRybQuw?rk>3Ma*}C2qU$v3pXfQY)PM#+I0W z`E)WLYK2qW*b;xa>MhB9s1?p+V@sU>lZnYxsTEFGV@n+M=?Y07YK8OC*b=`v`pRTJ z)C#Acu_aFKds)(lTH!1+w#4ms9G3Ks>BD2fNUelg@iqw~ zrj9u^tlO1PE8g2+#A)~M6?QC2s1@&2`0x2pE8dV`M6sZMGF58D+Y5~NPqAq-Rcgh1 z0*qK;zb;`O)O@HFf5ZRZ^PyJ!CA$%WdTruURX?_?6@O)J#DX>VP1c}V@i*f}oOsag z$$Y34e*td9Zr`*g%Sx^I+i)ZLufBBBhg$L1*+!h!{oZ6g)QZ2gHe#1sWlGlk^=W6A{!)a}0hrfmM_FBT;dqqlW-=?yW2mjWt0MrU{JVRb%so#Y9 zP>m9N$IEiwdEHK-tdvkI$Tg?up{!J+1mAiyADRy()CzKZ3b5TDp9%R;jS_t4uF;1Q zYUSndY+~MtSB0~1)hNMt2OE7Tp;lfF&sd(l_mYqg)hMBFQ^t})ohzYMweOLg*wvl_ zfKZJRcq1+S%u5Ni(s$V0Z9O|a66#zvO8B?;!n3jSB8#mA1PvmNeZyPF&bHDWaiRxXgcw4Nc%Drn4+OBGpz-eUq{X`|yinqm@kCF0z zqH2`D8EJe!@%I< z+&e73?V^>aMhTpkrr%FgLanfp#l1M@!@Y|W*1M`v0w=8L_Y;*+E8Z4sKHNJ+q0UvK z1iub!MC^s_xe{uH)iQ1!GD6=^RE-k+25_SfCDaP*>-dhBzMrTXCHQ?_^Re`i@%=<4 z)Cw!|ns?PgS*b<|ehIfRA4;ed*6{J2yIpRx_Y={sRHFpHYimCA{X`|y3akG3e&QKb zdp{9ARHKBQMyK9SR6?z=Pl!JB{Y2F$!Eerne1sWC3AMt`qNc3;JcxX#MhSjFwy{2x zP%G?3Vx9kC)%bp*YLws?WX*@ZpQwadVfPZ-?$n9#{Y2F$!7r~i=0gd!;+EH|F4y-Hg-|Qr>1D*6k@5XR)hNMloEo8H zyAo=}JH3q1_Y+m41ix|G=tBv$;+Dr74>aq#tW5{Hv$(+^ZvAhMNyql1N!u zp4{#}JS#fe{kHGJQ(CLwbbrSEAmU}X`A{Nd1s@D&KH@KnxuQp0TB4Mhk2<2wBK_1R)_BGQ?*jl>c!LlySWgPS4l5A9n6{<&0ju7>*~t+!E#Aup^(eAaO=h?e%^xk(vd9teK`X>dE65Bt!i`r|H(vRc z_{>2)i$86=g)gha_Uu{AzGZVSGdvP*yz;G`R*08YkQr`->mOD04`_ZE+cWfuF30rr zeFdpycqAS!dlapdhRkpyTzynnAD6Bh>)`e8Ru6Tl?1@=)ZWZuMf6r&~Ja*qqysFs}F`7G5p#qJ3e=WS|MIqK_+cP-+e!;44QGEZ@V0k zL4PrB_2SrrZER<_5&cR+tq?D*Ad@!YhNZX3hb^;>?@^T(xA)@*tR@d>DjvCOWnbr% zBQeww^;Sw#Hlm!Pd|4qSXI*Jy31*z<-Zq)xMwD}uFDqIxAD|&K+=%HNGao;EdYkvb zo`X`DdtvM!3^$^)B-9G=(h4$ZBmVLF!0H7*_VYd#e7i>R=`Nf3@_GB+HHzj1eZ9=^ zS^_?3g?MQNnc+sfa{We?YbTuHOZV7C!-{_IEbrsx2#1&$UQ0kjE5u7H$P724T$lJ> zi&X~tHmtC+V4tTP3H0-NE2SwLvD%I=SAMbi5x%T`xN7wg7t0 zzDM{vrxpCs3Npiun0Vy+)pOn*;(cr}bB$v8i>(fRylahO#ug?s+=v|yUBB96-VpDD zR*08YkQr{o7vGG{55E0MUsfy=SaC*1sZ%!M^hIOy8~<^oFDq(br8H$D+MhhII%D_G zJTYfj&*H%iY^>dR+n&WWxA*h)&u}B2?>w-2`GKGLRM85lq7`I@8*$<et%_4C~IbDs~U3N%-*@J-o>9bXxk4|1#IdMl+V8-dooM&Bbm!4VnpqP35| z&c=3z8`0f*lus3{;Ez_28E%AYB{^HkMpt(CZ3$K=AGR^dMr`@af%&&XtR+%|R4Gl_ z2saN_I1m1L*6LyI`{0Oh?iDK6|EpM+=wn)EmwW?;Jtl6KlHLS!klsb ziED(pgyBZG`J?J~MOFBq72>58WQH4Y-;9|pyOr|?S4E(?0)WhLBi#Jaf*D7x5HGDD zlQv?fL)XvU=;Q00yC2Z(QIHvK#E-|WpMUnRA->LOg?MQNnc+sbb$i9F+r5t;u39Rz zrH>w2s_6c_wJU}jamucfD!s2c&ikMh;-wX2h8t14=UhtmoJ+}`)549Y-E*21;$5l9 ztROEOW#LBD_K&5)dWWe(S$#3i!i}iyAC_~(ODo8vji?APe zE6tM;wdV|(oHJx{&S0_;wdV}cYVyQLQ#PWkLEk@6Q{0~+x7@ce+=#N3__j+cq@7kQ zE6_$Pyl>{?e|EcJXy#nlr?|Sg${yD)}mXL`}5xZJOFh*bZ3)|c;&6L^4Iz<>(2nFftAvfjrhu~cRyWv8=v#@ zALv>AJBFE*liqN>%%pSdWeyN)akrHa)LutxJls(FykqzD1at^xJPMPnI zpeY;C%k|oBH!S1N$f$vp(v(v^diy#sAJ*s1hsj19ZX-kKBU+)){kpQQ1SBQd7Bpt zdhYDYDt`F{M6aEqRXvRn6*1QmjH{kL|A8%wInVF-e-N|+jhL>vefI>hu;;dZY&Waz zihKUr)8}LNvj+NcK9#CyRZsu8(y9p`jH}+qtV^4Ut#;Vp{~%}u8Zn`yEmh0>(Dn!< zXn2n6eVn(0Yp<(XeK;BCGl_hNRSi9_@N|MGH4XmC^W^_d@Z8v^(8Yw3He#TAe)nGTStewaQHTA^DR}U3p;mfye2XC;VCQ0nGQNo8OoTi?reCB+3!o4d| zeQw&qZRvxWdSdeE;l=C=dpRE<4mxOK|NTsFRch*qp8p8tHCFqJA=fq1*y z@Zy`VkdGf6@zRF>Nv4WcARg*5ym(@%70UWJyYh0VLCra>Ktw6-50N=S(UGx14$+Dsqh;;`J zFW%hy|1tLF@qSh1z5gKtIDjH%az=_FArVADrsRC%ISgrqD>aq^DlLcz`a?v5Rz)~U zL9B{UnG|aQTjbWUh!qZ!< z^ImID-@TtTb5xrf;?_ey(|bRxf>^a??c|r=0P(*X;=^CPtG5iRARahy?c@vJ4RK#X zy!mZ6^_F23#6d4!JNfjFLj0&9wt3Uo{(bk{Du`VUTRVBg1_;jl!tsgTGOU8Q@MUY8 zUo8Z8aIfQj+xwJQ1#!+1O&Pz3c(5VXoOVI)nOg<%hnKIN{NbW)8{%sX@ufA-y`k?s ztb+LU(Q7C7c_GC28{+4mFOgaq;6?&B$4zw>{+PA(hFF0#eio0~?M=idqJ9B%;Hxk>P zwkq|EtBkWBzqu>Jo|?G&gjK0uU1iMKc7At1?5T-2HoHE&Vw=5s&fK1wSbuo4v+fyt z_7L{e#PngSQm^&wt7}h99CYZaRL9kM!10I5o|@S4kX6kce13COJc-NS`{&*7!*>cI z-ka&GR;Bibv9TXC#LGVZ*zPHbgjLY{+^{OuUiBM1<-~XOmSGjdyKi5W>bQC{{PFx} zclRTfVHL#1KX2|wGopa=otpWx>yPX1c_gfYn3%gdjXMxA^_w4d@AgPo1+o5_t5eNV z#5N1Q(!JXwVHL!7`>#&*Pu-8V|MJt_vl|JkAbxd3vwLqd;zDIS_sUCp&%-K+`Ag0!h+FulBe$yXz>OFI-AkKN?DEw-dU%R6BJgkB^{`^t< zW}u8O{cP9X^RNnH%O^(R?emJ`SM1|E7|+8hi09or3U9ctoOelY8CF5ub$7EXboUlL z^|a^po`+Qszj$cWzNtBnC;e@%O~j+J3S$55*R)>)h_Aov(%v$xg1CO?HSHG%VwYnM z=sgdsAP(7kP1hzfHS@{0zNz;PS_N^>!E4$mgEId4hiCO3l~oY0IebkUW$+}9zI1JG z8CF5udhD7u%Ak((p~s)yTZUB-b52?lqKv=Y`R?9(ZWY9q^=sNFgQL28>{Gqh$|{KI zx2_3M#&&1_L+?>p1+nssHEoo^dHnqFt-G&tyysRytUGf}8)a~H)2pX_`$WPj2-5po zKO$ij#Eyqdv~4n+c`U=8m@l?l6VMJHRiuwz#5g&krJ9H;=SvxGf9NN^JXhldo$vqs zJmQ&CUT#&J9Bfs~sz|#$9o0MU`egT9#eA*uQGM@UU(j>roGop7R{5xO=4<~O!YXKT z>Ticrd&wx3q4t@z**TuaB^& zCTM4R;5&VUJvBi)(^21mpe^I7m0#-WANJG)?M#=?n0V^Rx%I=InxLKOj?Y5W&y_tj zK|9l<|J-*T_S6LJOnYA3N7z#nv@^Z)Z~F*)YJzsAEpO-}?5PRbnQnYJ#E+V*d;BSL zy856!H9SY>4uL$yskNqMIZXR?#%6} z3EG+d`pmvE?5PRbnGXA_KEj@wpq=T{<9&oZH9p0;eT1yY`xxcY=;p>FWTd9ejj zo|-u2=w+d9!1?os%AT57fB3S&7D#z&;`+mug}Q-CP#N~rgvZa!{tenw6M1CK>=sDf zDTt*P=6f@J)w01B$V^xTokzXU3sAN|X2L26kFx1&fy{(e5EuWvxgTBKxom;VgjEm| zbC-wudD#M)39BID7?!D-vIQ~|Rzc)3EW8u{_fKLAWG1YFxbKMNZCeJlyKj6fwm@dW zDv0~vynL_)G80xoY`J9lU<+g>tb+LEb<0Bw6LXH=S99&VS5~iu5Q@^na7tz z;FY=O*#RS@f6uwt+UG80xoOs!in*aDde zt02yK!NEs&Y83gWK2SA@4{ z*#emfs~~>y(2Btp$V^xTvH$if2U{RBVHL#nJFg5akRN?{Y=O*#RS<{ny)v{w-t^Ac z0+|V`AnrMM5C%!E}C>&{#`&~oRuOjKc$ zKGXu4%diT9F>D&ER=?ZriTPqvFUcdFVtf?|t00Ks8EriKO>Ixi*F^uwvrAXa?;>Qz zB)jGA`g^w-Y){Opn(iN^=e#(QSO#OARb#2IRV1u}COy{;;19<-_g|}ZXDTmU-Ar#h@5uvCNhGX-CVgm>-cy@rR5SIa&wfht{_rThrwoqL%c?ye z4)ncGOSHb6@mfu{9*!gu#!IlYmYT}fm$3n~y-#+%##QMX>23scN zsR`yyu%gH8H=I2+!R!In1DXAXv!^CJ520^tljwKcnC zA`@0YFw28^uxgn&`^q>rDic;gF#jXBO#J(Wacop3tb&-FyH$wWzcF@K*Ng0DG^(&Y zcTM-BY?;VqSOwu(d%7QG%S0xug2;3GX17da!YT-6K@5$J%7j%A%%RX|5xyVg*r-fc z1(9bpa#Ur@L?*0)xM<^6gDn%8unOYNN45&}+OlOL6IMZ-_pCXCW1})*6~y@yb0(RO zH~aSy@3~bF*S~sB+cLqmddD;K*eH8qz9w?ZL^GPId#)mZ?Usq3oI7+>k+6y~PQOg& zrzf##lj+7Y*n=t(_kKKHtN6Z(gjLXveN{%;GLd8INL+T?oNx!rmWfPQMHzQ(nlsok zkqN6H&fQ_|V9P`%tb$nog1Lh&6Pd6IVrt#o!Ip_kSOsy;8|MzTOk~0;h~v+n8(JoQ z@Y6UpDic;gJo<^bp=IJDuZ?4)GGP_O^KPCS-f&<2`#3f#6IMa|@b0Vc}?`H`D)GRwxVSs6IMao zbMU;umWfPQ1@W50=Y=SvY?;V}RS>rvJ8!UMA`@0Y%sFXZh%(M!7{^9s!YYVI*Ut-4 z#sN=^W1})*6~y#g=Y=SvY?;V}RS+xBm^aumkqN6H)}1-8iNgEF6!|R^RoJ8twM^tP ztb*{2W4*898_u4XFE;g(p_Yj}$Jr_fV)*`=mpw6G6GOG_rCnlkZ&a1k2m{T+0#e#-;YROqk^UOsbBC=Cne?m8ABHjz?vTkRH z=iy_Apg)qi)?;JeXv*05|1Iy1${tjapg;1u8=u<{zi5aZF2A!oDtl^z{z%r7YIZAV zi1%H1MK@y0o|>RPl2xZ>-w%6gg8oR>NSaO9Qxo(@vXatl!k(I-Kaw@Q#>SX&xa&`M z@6N-XnxH?D)dckHp7PZzx~R{dnxH?DwFqV(l|3~cVCZ%%AT5_Ka!Q-W*?P3H9>zQYXyqf^}=^{M`ce<&>zW)g6*~1^&Q<&*;5nr zN3uSkh&jLCy^GuJsR{ZGS1sAOB{(+zP({Kj(y>{O5Z%hG#@Y3$;M#3s+`XlolRPvi}WdPfgGtskbQYyNgfzOm`mk z)CB#JdQ)@e_rLIS-TknqCg_jU*8pO2`i8CyduoFINPTf;wK}(+nxH>YUuVi_W@mOs zWlv4eAE^j{GMbp7J1To>g8oQF8I;k?&g{ytrzYr+R3yXK;GFsMyYHYqH9>!5f3##z zP0%0NACcKp6ZA(a%BY`2duoFINY)wAn<4(9?5T<2UQ4g_01?OBVGl*f8u14aX~y3T zMac5hgy-6F2IWW&d-{m}H+3YibA-HV;C?V$)@vX~f_b<7_uL+iDiX}?9g2|UsR`x} z4@JoG)C6;shazNoYJ$18LlLq(HNo6PUERBz2>JH6pAsVEJPSKsH|7uP*}bUwMLj$n zBjik2MS090*0Vc1Le7L$5P4>C{gn6&QTf=hnKL{TArE4WWO2e-=On?V9v1LyUa2kijebB zMS_{dLlJVmR*~?my}k%J6IOAA%o)yiFy3=}P(^|{!}%#GBV>7Mf;q!O5wbir!JOgz zw8x{erzV&)-2aQRrzV&)JQN|zQxnV?9*U6VsR`x`_rHDYsR`x`_rKxnsR`x`4@JoG z)C6;ehazNoYJxe#LlLq(HNl)=eR1mFhdnjHoZ%cHf9w4@Lbj(Sm@_;SA7t!~FWnSoEqbk4$((+o`uaG(n6DecUG=oVayk-@MeQinPa1%r3(o@{Pob*Z#37 zqpwXr5>`Qz-X9@H!YT;HO!VImdt$!WjK1i<=l0YDV?T0)97l`TQxl9Y$h`gYhN(-w%6gf{`Qr-za-(f{`ObZOHP}L|#*tw`kdhoY$(2 zXC7DCEYIAYx(u(;sdq^kA?LL}V;NpeSwz`}oL6a%1S3as>;uOiM`BNXRE!+S@l_ci z%Tp7K92ts`<*5lqj^xPlyg$S?WO-_W5gv+=>)(g-g0RYVj*!3iFS!jFm3O;|1S353 zX5gOdO6gif!YayO%Tp7K92ts`<*5lq zj`Y8M?5PPxj`Y9b?5PPxjwnK=UG!Ba=Qd<}YJ!m?LlLq(HNnV{p$J)?nqcI}P#dy5 zHNnV{93hu&$nw+#BS(fJWO-_Wks~?EDBF4o47DN4Qxl9F>5rD|sR>4o^had& z)C40(h9YEnYJ!m?LlLq(H8DKC#4`~f;^=7Xp*CcV&4!3HBc+GhkmacfW<=0;&zq|J za@x~J^hd~%h%+s`58muD?4gWEc&DA&ggrHp_uy%JGrIl{duk%@aKsm<9A%+hlxo6z zsPv7p$a}EF^N72vlvmfDx{L>RU(|jFXOFVboq~whE$>)3dz3{ctb+F5hZ?zDjyf%Tp8V^E1?jEKg0aH%tHb z!=9R82bcbDlsz?(_dc6F$|CQn7Oz#_Uu|}ToOfi4MBHnud=l-ckIFlB={HzL$ax2_ zSVr9EXKJR5kn{dQk?<}-vw!FI)JGNf?VFk@BjmgvU@Rl=+LNwTG0GzECKw6t`J z9A%OBpNj;$Fb=gLXTmDZ$@@0y%*#<0c|XWVoPL?#4E3AZd6BPG*m=LZ_RPC?qCGX? z-STGN4|{6j(p66haeFz+B41srpuH>R>@w^@6^Xcy;?ztTA?N)WBjH^bRYp0=BJX$_ ziS=Rk)AILWPkmHV>lP12$nw-g-lK|dR5{8b?|l`I$~#=mzE<|sWyJmN%JZ@w`BiM+=l&s90fBJZ6T&*K;E{)+l?mZL24&Wn-QfBPka5wbk>QC+|DlEDaBo|?#e z>Ty5H2s!W77mvz2^6AY`jVCou6Q2#v&th(cRb{&-I!$N z#P-L#QN^{2bpH%#=S6vuW=?E>6dnnyph@qaImzf~&wXXwbKb{f>EI0Mtg7kZG25J> zjwI6_#mqG=?>VEcO;`o((byu&eN0$=%QK{(n`Ysr@|tzLhW0VZDy`7f(#_2K{_|kA zy=PuWLMu=`u4nX4B&_17n34bAmtmEzo7V%VpTww&WiZ~SzYKfGw=|lJ_i3B5r z`pdAVE`xQv28hjr6>oz$yTZ0-N04**tBqwu zdiua!LK$&}bV0PLbX1MqKSMg!=&9*>uPtI^@K6hyo?)X&d2o7rcxcaO+~RnU3o-q|yxGhr1(-XoW>QRVItnXn2X z?!!AZv+c*?4Czc*1>wC@_4_DiNN2(-h`7UQy>?qBtb)khCH-;ggh}{6Ph8-d$*ZW-OaRc zUQvZjox1<1B4HH-b@kl#TF#Kp=Mf2N;rUu|#rTVPVOxdm*cV;Bdqj?kBS9@Z-@$T* zbSA8#4C?23kCAfsh)h@oLH%4$BF|O1dqgIzf}j>Yw0lG*tb(9^t~CcZ^K$oyOjrd$ z{XFmaQtlp+39BHeg@5yV`?k++IYT-VRzXk;XSa6Uk8*}|Cai*>7Jl9e6Xn`%nXn3i z`gvYwqFlQz6IMY`Ki66oT&r^Th)h@oLH+#44|?`;xqCz=tb(9^t}hN{lxw$T!YT;r z=R-53Ghr13^>alTlu_;;kqN6HsGnc=B;pcchH{2ey%8kGRn2vGGP@2weTEe zlxw$T!YT-A;fgZ&eU!ULWWp*4>gPGiC}&7#!YT;r=ZZ2o^K$oyOjrex>*t&~PcVOY z{FaF-r}y_2MFJZY1T}Bf&pC6Ipfc=<`C?Nq8JZ!jyrK%57+y86x(s{zi2i!iqql6D zV6QfaQyZIIBW?HZ$QD(RKJnW7C$vi?@zv9Q@Sbk2r9I>uiGTXmrU~sV$Ne~O&#!ee z^&(*v^wHnhG@;$=AXaYmp)RJ5gjEnLzq@HdJLGL@j_S9^e5xDK7zwK&9{c@G6WWE3 zSoFQ``qSR?unJ<+U7IGf(;rXbhX1{&m#_-r`}b~|&~Ad9$HKqQ>nFyevI=76zD>g zZA0|!^=nVe7yIp3{vnj{^wa;cdtXJuD$x&3^uKo_!FXX*5E@n7cT`bTl<}S|17)1r zdg8ICqiWJ~D`(j*$_jsK*<^h{9~E{cxbysxS5#@`z?N>-{pde)*7|V1k|?bY@UxYhKqz%(4@0JRzKmL zvm)UuBI2(f|HSHDqWzDb-hokzaqDpUV(ZoS(dv_(VhhvWfaZvxxC-&3? zaZvy6D)!U_agcU!`Tv`*!5z0O>~_1crzVJlv`b7Ki`r8Y#6jALroLA8)C6%*|86(- z)P&-oBYW<-JvBib)W2(wJvBibq@984^RTBTh=a8IP)*oV6U0H<;ix9;sR`mB?V?oQ z4|{5YI7mA+)r37YK^&yrplZUNnjj9+j#ETSdwl1@E?TmuCWwRjceS#oCWwQya~5UX z@YVNsk&HbxK^&yrx$3KHPfZX9X$LUM*lW%Ex-#sk3F08_GFD$JduoC>NIRKP#^)b; zZ+ETisR`ns{@v2-sR_kF?vHx-GymD`EN4$mC|>EG?L_3Iz38lhR*d2@c$e~rC#vEb zE~Tek__!Z2zH(kQ&3C20m&~4;_`lEEa<7$D(B#zLM<0(WmPg!`k1F5AB-~X=zM_)g7ry26{yqkGf?)YWT+9BPx?!!lZa^Pse2|LZy zsz}=wasThvk6!h$3pbFLXKg{pIbXI#yzPPYqsu>k;f7ijY1<;Mz4-LeyFa`%mEl=b z&~bj0Z4nzkaQf)-yO*Xi?BNI_ZCk``Up`~>iZ$Q35tY~OqKvpImu(U6`RW;?Z+`aX z8*5dhZHpK^W#QqiSa#VLM&K8=tXobn&9Y(jD|nB+9c2+vy@+_TRl;;=@KeJ$+$1Dtk~x+O~*8j^Amt=-vZI?~M zqp#m-wE2ezj-o2kJ`cAcH~Z?nZ1ebjUq2?5(YG5AIXPWrocF5D<7>ZiOe({>0gDZ;hcDl-V>!l};7X8Jw={M;0 z`cTEy{%mJrVMElaNZS@M)!gr|t=pWgm3Kvhj=OW&E{R$dY1<;^zv|lYA6|5Fx>kL? zh+HeDi};&Azjl1t2TxAd%Dsq`XBD>7MeOp>{2Mp@=b5Pt)(Z1#!*RbNr z7vx;v9Js8loRmMN=apGuf%^m6Y;W@{s z;=E+rB7U>$iK92X@{aWTu!kdwv~3Z;{=;sgCI6}W(YKyDw9`f0*AjUAM&_uj!gjid zZ#Qqy3y#^G&cpMBQTa&X5sKL3mSaW_9k@B2M^r`Hc5xmvE}fYOK6d6Y_-H*tq1jni z=P?sik;e9HV3pBEGU-X=>qV~~Dxw$q1j)&^h&EbEPrE&+B5hm5+nY${qo2Ppy|4TZ zrwpDx`qH3ni#V})+IPC-!t`#p2UVnPi)f#cR0dB8y?T_vm8MS++O~-HNlazfgDTRt zMLcG=ZAQ;O{>XGcJWCnEQ3kftMQqa&QN>YNg>72IY2RHs{^|=)Pi1&^FSNg$*iIMm z#oLySU(pazMZQ*Hn-(#4a*8ri8IFpedBXjSIbFny70IMBtRi2lu$?Yq&wspd`~?rM zPi6Q^PZ^#^jqP+1d$mMVk*`(QrbT@I&izL3dUUt+?0OGKRDO$+lWh?{YTmhzJZAS% zt%|g55$*RpJy%5AJg?AxGAP4#CYtYgdamq26=~Zd%HN0HqLg7(q(xAhIOb#iedPT= z{C0-6ErK`owd+qv?_HW2+ak)?M=MbHJec+A^Uw@X7>FGE zXq5|8TsLNxLfcju&-~$;qbL01{MD$uas#Tkdx&ij-)$m{|5&;8>RJ_P+aliG)L3r) z?9HhR=LJm-iC%Wfwk_gQUpZs+k#F3UgtxXw2#t;H))G-gzE)wIRvE87;*RmfD^E=K+%+udxWlT`MJ#yn z9plf~{ls+7tx~?)>lNGSBAT|J5f=ISx}(B&`;6_9=u>eAo$k@mP-PkPL0ILH>y+Vs zoJ{noBJJLcv9b31k*<|%4V+V~w>e$s(SASDwX%xxtipD>h!wBAcKm^hUB}U0xReq1 zuPv``S;x^{xa4b<%JUw%l;UWKd|4+k$5*RDd?i~)WrDm|C(%(@q-~36euLClW+14U zcs2($7T*u2i&&&u(F{jrRiv?{MEm02s~DC>{ekrUBn;T2mlW&k23ZYn!Cn#3ESx+ z+WJR&uB?hQw$nwF@viD;sQBGcr=kqonaJ^OR=M5=ZCga!ewAWT@6&+Fzf{VwT@tk_ z(zZp!_f=eH*-s*6IK3q7;i;xPt8C||y{%28JLvUkQF(P+a zhgIZj6}HnwyzOl#Y`D5@3-{`#S+^jW2miD#I%BwF=wmBCdMvPNTE# zK2Z0gU6YtH;=09NkyylUj@fB+_0JAWWmrYNR$)6`guiO!>sgJcupKklE{Q%>j^XlL z%S?&L@h6c*{?>XgQ|p_a-VsM-Riv?Zqk|SL z9M!5w+ZIvAiL2901oHi5vuZN)7_eD$**g}Fjg@htRFr2GwrQ2oJi9Y)Tk_hms(WY||p*JJDAW8ryX>rrd9bA|b!&P8!7Utk!J6*)GjZ4Ru zU3hwW60IU%tFWCeqKyDj8SKZx{2}snZw9v0MO>;VLr;6#V?w@GVVf55)eSe_c*0lD zNbeG_5ly~cVH(@%B7XImn{T|RA)<}f;>oI|rZT+tIJ6^6Y^RH$CcJ3niKz^$ z$k!@tr;E_PQ|Vg8SeW#OQTEqLMZQ*Hn-)=iYqiH2D)+KehHVk$H~{V2 zh06PRLE9G5)(z7A;41q4;b;lk=_1O0wf)lDfPAgOHZ7v;=UkP3+o;&Nz;lspmqe{% z{|DX-q}vwJehtzc^gaftybA*7VOxYp4%Dhh+ZNIGtEG6?yI?@ay&!Ch*!9J48GZcw zC$w#^d8ds?+ZNIM1~)VXtB1_7^F4_~*>@a&Ae_BNurd5VpgdyCjhRRO~>9$3beMR|6jI?c^hvv-0(#e;$ z(0Cr$nc(cBD$>}dMG)y<^)rnr@(2NF_VDwVBBzV^C)Fm>uhuH^wF=wmBHA94G{(z& z$)NIHGL&aq#0gEW%mGiDpT>CEgDTRtMKrad@upUkz8`Mcf^f8i?Q{`M&1<}=d8PBP ziled$+vy_8=PJhu{^C#uHt|DA*u$@ge66xQ6z^(JR#fi6ASc^h86n=?Iz+`Ko!c48 zejK%UQ3mf1Mp;mXZIw~><7Aav)u3&Q_^+mC>Ha;pNmtinhfujDL>abAqED=Mi@-^iGHztLaJuL0?&$U; zj)d5k@|<20c&s8{t9%|_31Muksh_WI>gTBpKh@B*{JTBC=_=zZEfH1ZYZbO>5zY9L znP&V|s!hb57vsK-P8ZR<6K9(7SES&g0?o z?%88wWqZ3+G|`jLt|qm(p79#%a;T*qN|VApHd_t$LzPFERC9cQNLF-c`uMZQ*HJ6*)(e}D4KiuD?$$Bwt|OXIEP zF{w@$(e%X4(67cBT1CEAVLM$!*`Ao6CB`Ir{BHS_l?|$+w+s&iB^%XRoG4!ai3bx z)BW(TlYDtQ`?unB5zY6U7W#BQtRi2lu$?ZVjr4WToBl!nK8W=FttHaWvxH1=Bvz5H zRoG5f8SUFAT`P`+y>_5IIsx11B@tCV4`^)DBFgb_x&50f>gTv@*)GS!NkzU^VVhPN zZBKQ&R_8Xmue-m_Pdi8JbP;WDc)A}}k*`(QP8U(mAJqP}sN4!n8MaHJR(VVS>9$3* zZIXDuuZFs zW*iwc;q?3PTc0uH3$j*zjPE~0r7XP6%qRguOv-FF@Q)K62t0 z(?hWJ$hOVVhPNW#9Jf7?(22T58$1tw@-Bt-^Nft1{Yt&J>Y(lpZSj(%i0L zI}>?)dsao-wuq~qy>RBjrX7HMi6+_Gg=42?%I;;@PA`e5iZr%q5$}9(x0&%DYrdMJ zRA^ds=;y+Ax`-xDoMFacRFSV$*rr9ec8ABkFVOxPU^~4eqAJqZrVApyOYpc|%q@4$ z$*YBqjkQOW&ciC_i^}EYxo$nSQii)d@Y=}EMTe67NEx(IrB|L6BT-&s#0Dz`Lqw6;aW`OfyB@)Hhi zTST0z?-6vU+!F(BTSPnVHTC1zgDTRtMYQkTbai>Zvg;FNIP!+JT@tk_(zZpkzrple zxkZS4UAx0}dPzhT*v>?rAEmkzsz}=wQT7k!K66L<&}DCU**~aS14m^QwrQ2o ze$UhIgRd}sEadBUV{E5qqWPYu--lJ?YZbQBMU>;=^1IfN3}uvW(Q-VTq9XFO3fr{G zDBmS&9VA~yY2|l`(nXZ-5~;|S@mH?nm=;0n;0bHDNu$;MG*E_H2eF+lqUlSe1u{KX zR#Apk*iIMGjG>=t=BuS&Eh=^x_GMe_1nPv@$6eoJ;PV)7>pV&?p(acz%@r-q=$k!@tr;GUUtB;&HubIJ& zhaE`W=Yh)KM5mX8j|5euT?XkQ%JC)ncjs1Taw>mO<@ge{Y?H55*rruR6N}#1%(T#X zG&>Nx?UkK^-S)~p!@2F%1f^S*&ZAXfJ6&Zs3diGpQR6+pcDe{h`cV~WY~LFZ&DbcS zzVsV(Zyz*KpWCUOF5(@EEYsK7D)O}o+vy_C`tAJHziF=(`#aayhw_{*V%0C_uYRB* z@c1f{uT|Ji7typv&3JvExO1;}1STh^i)hyOneqBQR*|n&*iIMGUfuLN=PEjG;~u!J z*XbhKJD7gwR*|n&*iIKg&*(KvcS*lNzb!d-*HW>aE}|J{Im3EOQANI1VVf4w^i9yR zo$h(uv)E@&PEHrm%+;T1Rvk+B+$!?53ft)-KJ&GkSHH9!BOLei_6h=&;dBw@cTjs_ zldo0SrbV><&h53zyXwY0dE-93V`B$ibo$JK8C@%@$k(cL9$~NFv9WSaT<#xYRy1uS zoJZO76X(QPMZQ*HJ6-3|_Efj;#M}?;NS`v?^DCn54Nt!htH{?XY^RH8TOiXtr=^j; zE%J438{6q3%K12|xs$I|*rr7^>r8C$Iumhka_^E(8BQ0mz9sNjMZQ*HJ6%NEyOgdK zsyt?5PFFW{x`=Yjgj6mA8k-%{a}BcW^P1C*1MpFCv~iF1RObxyakO8%^JNr)%kw_& zV`J?bF5Qo~AHAP;%5b{QqkW5}-=J0GYZbQBMYM0Ybgg)kxgDQhs@wOSE~0&lrsv8k z^0f-v=_2Mlf18=>U#0a+{I=xSy>~md(?ygqwf1p$8MJ<2n-&JqjV9?+B-9>Iz;JKaa6o_>9xdmx`?(tG2L@o0o`6g>!AB7oGzkmhf8HxMZQ*H zJ6%MxUdBwbUPh`Lcn@-p&^wr8J6*)zH8qyYr?*aZ1FOi_Dr~2VDCfTJ+U#oMc9>kJ zVpa<2BHGr$_Vr^6|weEhKE&W zd_Pz{$L}tumjtC-6=`gzi=Y>o_2KYPgYdd2Zqp?vr;E6v>8W16UMtF36=`gzizvsJ zs8^qSJ?aI!?A0&Fm*je_Rg_^`Wi;zX&3FaO{kLyos;)jbH|@$z8BQ1B8YG@yJR}wQ zT7~U&5oOzwezmAP)0doVmqe}d+kkZ2BHFrhs-F{Ccnlm*cy9Mmx`-3LcE-%qNpAO% zD&^bK*rr9aXP%y2&M?;p=XGPsoGzlhy6Jb$_3^3^R#Ar2MU>;n=5&3{d}SQN6OrXn zlb=@9m&&k;e67NEy2>cW8jQL=T1HCdu?9*PQI0i`ihP-sLJu#tX%Wr39~-=G)VVv% z?b-nR4d}fqFKpvrdi1|-49`O*mad)4n^ydX|)775Q3)?Q{|4n7g@Q%w3Kj_&SH4xF!Oa zewEe`igAKfl;L!hQO+xx+x0uHf5F@?E}dGZbP?seBB{vNDs0mt+I08LX+Of6ip1WrR+AS>DPA`e5B44YpO^YbU0W3@JK~#<`$jNp| z)GF2>+jN+s8rve8wGD|f(zPO*@HisZ?kL0QB8X(ZeaC+3TWb~NS%vL%5#`!DTXnIB zzkQU!N^IK04W?XsM_*3zwF=v`$|%=P$RnM6wv=I8M7ef?t`91YhoTJIBHCYVx>nS- z92>fw658n{fyXNHwF=wmBARtlH#F;{rZW6gL;LN6?Q{{Y-9;7oT7_*|gj*)?xEBeU zuYPXJP~VgYw|+!bq_ItlD1Ya9e1U6_a@oNH4j6bcS45zD%wk0*a+hbd(TZ+iZ=_1ihQlYcDjgW{@_fr9&(Bk-TFbkd<|B8N^9vkT?Aj8W-Zp#wqzCgT7~U&5oOy_ zZbNi`HszJAgH7+!jMtg4ihQlYcDl-d$YVK2U0wEhH;=kH)s{~vT|^nTOQn3JQh7=j zQI2n4(_Noik6qKn*KO!8RA&`? z2%EMo!Vxm1@4x+;5L1srOs({i;7wpB*?ZqKSn+ZIu_Cobvk0lOk{bt!}W z4!JiX%C=XjI4Y~KO^YDXKkFp-tIZ4jYPtQgtO>V$!fn5rROD-w%2T?^D90f;_qJWr zho>)(Lsq(oI1bq=@_o(WQeit?L^-c0KTE!Y@#!fEJXVpfpCxRkizwSg*K~bFhwQy3 z^c5++Bq+lw^1Xg%sj!_c!cjOLejj;0PA<>sB|#Z6U#ntyBHH?Sdbhi^ANrPK=Y{*B zK7>r(#$m8MkCL>>~uuY37`zF?e-$yQQ`mIVA zQT{%pB44Xwc_PZWeYuUqHAv2*Z2f53kXhY0)j6#qU#qa4t}@E`26+rM^JCm5Q;v=< z=Nm{xzE)wIRvBfSI4{JBxm|T4^#rGv z1f^RQX>6y9DBFETq1`9HyLh7xjRTO1e67OvyGv!XYu%@qntkrw5A3fcN9%MEO?`0W z`k+41QX%TT;hQD5v!CTGai<~Z^9G4*# z`C5f-T0}XwZ%wmTqsGasJY!AwZC`h$(nXYW`=laYtFTRrD8~UbyJUCccb80l_D?jH zm;Izk7g3G_kcxb*!oH{3*&12|E%aARYej3fG;*!nLXYiq5j(0EpdC{*FP*uLJ-1() z77_11-BFg(A6=hh3?Y1ltW&I<^pVS9D&bEv!%ld~@G}@pS}9#bIsQsd1Nm~Fz4oVR5zX4s8@zTjtz2#kb*ma>I9)`uc61`}SVb9DVLM$! zZ1-XB_T28XxckjJT|_%ZIDMnoAD%Y@`C5hTbP?sazWlo*%E)b&O3y?d*C!SE`gezI zT0|L(=Dq^AMsY>TUVx@HG2_~VRpe_Gw$oL{T8$h?F`QdW$v3v|J6%K@`=t80Rpe_G zw$nwl@5J=pb+0#NxYrWf=_1;9V!9tzk*`(QP8ZRhd3x`1hVFNCF92mYT||3z(|6D+ z^0f-v=_1Oyb8cJUSL?p1veh8govk8YtFWD}GRpDox!z9=!sq1n01@T*cB#nMDs0mt z$}y1neeUR$YgN9f%Q29Ogvr+`Y||>E+&5!k_m1+HlQPynQ|ThgeKYiRCSR+tO^Yb+ z$C9os5#<=+HC_DadJX5nQ<5XgxITkbYZYafRvG0u zfL!l)^hz17>5C}G0VqNyU#qZ9i*O`^$6tE#bxj!C=_L_Wk;XPHqMZAh$1wQnl2bW4 zp`81wJEddKV;fAXjIz&bVb`DS2!JxS+h6G-%Dqe#O;Cna*rr94@5II7ow&H`uRrIF zN*7VS6Qv?wt8`9E7g6?YtA!rbJ~u4r-tD$UlzZf6m0SLyZHs8W24PQD5vZoGTF`xW zZHp-PWX&ocNjyRk<^E9%x|;Aohc4*qhPFkNbHlT0$3rr0yC7080C{;vjaA%p+aj9! zIlEe=QF`{EinMJJ<=7~lIcK}{!Uf&C%eIK-4L53LbEG$%J(S@q8n3j7cE`e0E4tvU z1>Fj|(4PNcTSU7nVyb!BLm82_EutL1yC{s`UDT~vbk`=Oi)bUu^gX}qHmNvvtFWCe zqKT=){(}p`nt%(sHvOwlkS(IzUoERnIXcs}MU-K4CA@1u2d~we4vOx){#3h$i+4dzoexzX_r+Xxk#ny_XkuzX^7- z@|t(-K%7Ubo8UaGB44Ypovt#6!RcL*TJ0(%4S-QRV#yeFqcK+|BNsT3ZBr%3$@W zI1;DlqY|h6CQiSM)kyv%JxiCadQoRPU0M^mA5xL8RoJGbJ?F0ZtN+-}wVb~9;O_b? z`Srn*KmEbu^z63jB0li>`KxzmVnxcZDjj>P!gjid@_szG`%Ucm@NQjs(`PF^6Zw8f zmC9&U*rr81yZJSJy}g6e_wGFTsShtnS9IffyL8vec1e(zJ?Y5^v~v=nfAt$2-(0<~ z+IN@JOM-mkJIX4`c6vdiXLsXy`*+9w;O_bUJG~?*!z!JVXl$p8c*EFfqsP8Uv&nyb z^xDaNUbt<#R)% zw9gh=*U)>|cAU*6}+0nQJFM_{7KS{qdZ&lgB+vw$n?3W1ntSUETcYY?C7%oLJQ59+1BKA3Ko6&uT9jUnFIr%s7y_IVx7wu90Rz!TGnPc*W zrp<)Xt>W1Io4|Iui1ItQPxubzZ%O(6FhO4SP~P;tnYOJmnh1F&N66z{9PKD0(ak!- z#MdIWX?6zwQ5zv!mCmD8VLM&Km1plXI_eh9wY=&DYbQT+fUeK8_FFsogCk`-UBr`{ zT}l4x=URW)D)O}o+vy^{)g0AR+9=#ns?I$B=AB*=QANI1Vf&3CLjNjez|*}ynn$36*DOp=$w4n(JNfjF>ieN>gRYfr5%ZpX*yyKE z(CjmNC@<2sMcnqI{YJlkQ2U>+TC;ZY%WqH_4;;95@`dkK8MZ}SKE2=Q%4hAKo_2dE zBht1-H1FLMA*VBM-*D+{+ux(p`E8a&pNhAr)3HtPe|tX;+&|odeX`xAmqaSP`Au~9 zpjD+Z+H?`e?Q`w;kN-h?dix6r?Kd2@(?wkKp=-yFe$UD24q8RNR$)8cM-{GB6R~zj z)kd#6TE)R7q2rausz_s-;D2AMP_JprOLS4k5vRR`h@HE9Tb0X>WlW`Al#(a@CK}uI zHtGhMXzEdkNTs)`NZZc!sOEP*YJTVGP3;;lw4*R=r|S&bcVhY)SVg{8VLM&K-pyKi zpS@EvCmkW9ax_U9wo9T`McTHA!`2@;TDMsHw#ec{W98T1>pE#lsn9yxl#p;|r3 z9*!i^wnZHBz1>DHc~ol-_-zT{Un;iKMO?Mx?xRm%uQdm(;;5{`cDjf%zM2g2RcH@r z+5o7-l?0_1_5M~x8BRCB|Be}++QkWORUxN6A69xv;IWE)t-^M?h>vbKV|2^~-%K%_ zYZIs(g^`nO5x@G{8KdncwZfl0s3L7!MEQ-%^?uHl>jPcZ=uP0Uiled$+vz^@_$~== zxHbY%PKpLfLV3w!Rri}O-ic+*klWteQk3YT9j=TSa(&Qka+GaaM^(1At%B z-?lTP7+3i!dX=r{^{DRmA%bJKihQlYcDl-FuWmXIuHy0QCsbE!?!hbm;YG=Ix`_4; zrt{z)pdw$Zu$?ZV_?@5ql*u1I<}Xx6V|%~U={8+N`EHjg<=d)k=iSnZw$~J&kGik^ zbt?~S&uQ%>w#tC$+FqN;!Yak^qHT+4e^KdLP2c;p$zLovH068gs;A`Z)~1&P_rt1m z?5zsh=_P^Z`g^wtWz6r&aJqi-;MlDqU#qa4E~2P&Hqj)%4^;lul9TOBbal?~W|$7NZ4qsxpU#{w{h9}L zKZx#6-$CbLTSQx%NLSY$jwI5yMd)9BYt@=LO842nB50?VL^{LptFLS+>(lf-BUJ|Hy>-(KZt=P8HOM)`2iZr&Rt_{2H8b%?abD9{QGa2d#=Uw$sa_!t?ek|1iPXa)hVevbnRJUJ_9i zX>8LX-Zy#ehMO+angh$PKX#Lk}{*RxAheAr*wtsVJ}Ln`&th z?Hew&?>Y*Ha0@L*Xj?@47ENuI_MnQi?b+v%enlJCrhD#R6tvSzqVpW3Z=Y2hp=l8} z{>2^R|Jv-Bj)xYyNB>#(nVPBZxzj~_?~MpEf%v{i<1SlB4q5 z2Nf*{$F5X)wncnz{z0Rck84$6durM_iJ)G9g^HFfzI~K|-NhxXT@rn&NMn}-Wl&T6 z-oI*u2sV3iI=$GRGaVIW)T&5hyA1wUoJe%gYxEZTIy@Ia(rLt0>Pjw$oL{6>7OlchJ8m zRMg_XcYyA>Z4uv6>tH%6dnhl`w#)O-*^YO$34dQnw=JTr-K8?@scH7+AQ}{L==-i6 z|LObmjq+Ot!Zj~!r;C`k;@a`!F4s58D$d+0Y^RH8`ykV^OU?cAXXx4WSB5fdmjrp) zgDTRtMZDsQn^)h|u8m9Y%j>?UdqCgKXTLAo=_NtFR#Bc+*iILre-*3I+FJ7la98vOQKH|>0H}xTL)*o8E756@#TH* zlC}jh-4ClM&+ip%r|YQN9^UjDq=)yf&(v?wUjWX-wurVDIekCuK^1A+BAO?WHstiQ z`|He+s6|+@mTeKSU(FuMh_vm3NN4U^L%Py!jFRq0YnMc=inMJJ`nPSY<- zw#EVVw=MCN(f8ac$~LXsKk$X6qQ^#+d@ZO=T?*ghu_WgA(Jsr;3pyfRuU+sN`)&8k#J@r`PG zEz^1UsU}~y8eltJN7eR>rl-Uz^0f-v=_2&6-dFKSbfixiPA>^OR*|n&*iJVQ-dD{# zyn9Er?{jjZ)p_ow_UpQET&XKo^@(y_NHY||pzh-`$%kry;?1EPCur;BhqbyP(f+q8(b=O;ZSZdF6& zmK$=iEu!sRN@s2lsz}=w(bl}uJCW#)eqhR=wnZN_v~3Y>?Jk|UJ*XmWTg0!`W0GQO zN63`n2npJ@2zq6Xz2KW^9*aGwB5hkl88he&2f^3UPfYoSgUB(1R2-F6*rruRJAy8K zquerq%3m4Evn`?>rI)@@_MnQi?XfXG>9FJ*MEi> z{xYZx{^bvqJv9-(ALV)2(@Qk1ROH-4wCz{^hC{mrT2IMsUp}cjb9?GCsBJ5H<@fRR zmtM8E&%>UY$WaEw3m*5JefkKipmQVx@yx3pdwm~a6-11drbf>={#m_8WfeqhL!KJ_ z*YP*@9+g!Pv0ghhddZh>zOL`6tb%Z@7~Rz9^eaEuUEO%Ctb&N&!Ku*~UiqHx_Yn!J zAp8wh89)E_PQB-06@=TFL_F_JPuLeL<<;KXsKSoX($wg4(`$O~hgA@cwN%EQXWh_y z9#%oP_M#{8cc-lAJu0gpa(f9+$-(j^^4;^(OZU95N@l{9lY_hOM1(&3c}IH*x3C|87FOb#eN(gp7^v|MS6}) z9@7w8zxtXR`UtC>6D@^0bN=NI58oxvcJl6*q|_5sX#GG$ghCMaG&ZMl%I-9VkCgMJ$ zWf}I=gm)~})uklChkl+HJW+-^6pwi!Yb&v^ZV538~=Dj z_x*^3RSm>FM4+OhKqz%5EuWvxgX6cyE^kTUis19GOU7NcTca_J2l$sx3BCi z!zu{&0QEZCQ==Q7{FN>)iAQA>#CH3yPII5Ru1#Cz=DEFPSOxK`BUYywjxBNAUA^aF z6~z5-UY+Jgiumz0r**%mcvMzFY`J80nhh%Ahx?w{{h}ga6~r&ETiwnXO)HL+a?az+Ke)ELgZ9LHO?aQ5snJ3Ib!~T4k-$a;anHHh#hGKNe&=oJQH4#5 zj^3gWPk!$wyQ8wFCRqEG9bIRa5eciHY1z(Y{O(Psc4gRuDiW+y`R5_N!+vPmQj=c&F}3jD%GXtPsoGXO*$lj@$Q^VHE@` zp6vQk6GuG$2ZaosnLDcJfZiVTLt0uoyd7=^z2jj?0v4Rf{1H6 zO^tT{&SY;HRzY~3D&3CLArYM8=)wAY&s(bsy zGOU7Nl_Rea-^5p2zqI#hw+h1R1L{29@RwWnUMs60;%cGg8!jG|RS={zia_^+fBCb= zk)>6n$KH&o(W_3%Poh1h$rszL3FJI{RFRJDqRssXtvFHTd?~~253|dF@W=}1Tb>7Z z5RN||yU!fj^EoNcqt(mvh^ly{T^>0P6IS`C=bQocg%@zT$IO(Nhz?3L^NIznZX$bYBH@Q=_dv^NQ}hs}?A&0bvz{uc3amu{A0ZR;99= z77NdIs;{ojFsiU=XJX#Ij*5Tzi=LXGor&3?=%z-CPusVv*V1#QxkCfp|YnY zXlG)^F}m_R?5PRbnV6S6o3N)QXlG*f>1@KDnxLJDIm)vMduoDqCT23vChVyRTBDfT zDPsD?Cv9p>C*i#d!@!1o3N)QXlG(ogt4)^ z`KlfNhweP=sR`Pdn3p~__Fr4h9KGvLH*~F0_S6LJTApiJ-a*fOO+?SEz1ipC6+sfw z_77oeTu$Gc!JeAX82UcKo|>RsE-ZTOj2j-$-nG+OkRSZ%`hUJvDLl3Cq$7xVpNh&WkOO^3=pBM>l&0 z_O?LUQxoeCUpCkRDNjvYf7r56H{jU#LuF4*9CYZiwAy3Od$;w}#Eyq7OJhf86TVXr z@eaoQYwH%sFjMcUykBnIbFyxM%!E~x7k6H)TOc!G6-3^7k>6n10+|V`ASUK6A8dil zgjEpUCy={Pw?JmXDhTfrDB|nCh%JzrunHpXGuqUnULRW^Ghr3P{cm0#+Dpn7$V^xT zvE`EGp-rZ2fy{(e5Wl=`d1&`J_+zmJG80xoT(og{+qT60xO6hMKxV=!h&vxy9@?+U z7RXFk1##Z9v{SUMZrK8v39BIDp5En~AwKO^L3qZgejjBEq-L_ld`%3sKxTq`a|@*Q ziPU-UFMrO9_D}4%A7q^STDL&vGmk{vJ-a+}=S3M-VS5}1$1*i4TOhS2TupelZV_b* zWG1YFzH8I2gDsGmunOYb9ae-Vv220NgjEo6574Hkp=g23gjEpUK~(2awm@dWDu{F5 zxMHvcG80xo9Dn|b&^J-GKxV=!h`6ui)TnHM%!E}C-W5~NZrK8v39BI3TX?7iG80xo zumkZ>3uGp&f{6Rq)-8~kunNMv-|BwwFMoLaj7Amqp?j}Pu>`uQ(W>iW3uG?CDhT$q z^*Z!*3uGp&f?)sJ9A$jr&e#H(39BG(Id)};GIqZzwm@dWDu_8Jtqf5{*#emft01XlZWG1YFSb4_E5M`7tkeRRwV%?c5+bE;1-Nid-6$I%+Es(hk zs~{MKmdC1)P9$S5#pW!!sgHzo_>=`GT(9$DTeSk38df z$q7duO++lE(URK?=q@?q;Do5!lFY=wfH`5!>d-A|j;?g0k@=*ZIa$BJWBELrSV#D@Zme@fG;09#5pnkNFkuyCoO8`H{vXP)%14!- zc0GrB5~C`Xao>_Z87RXZ@~w&d`-o*gcr0fmSaTrX^GMiJm%)mwnTWMid-@2*@{)Ub zb^TOBTz~fbt_2!fPka3vEL81p0(#Gfw{D)EzIFzCQW=35-TtHj!k(Jo_t<|__Vf|` zEfcYfNb`Hlzw>xMB4HKf@q6qi>_Jr%{Vfx*j7U!(_~cN={4KdJ!F7%uu#W$Ws%i96c6dhFFF@HL?EivB8!Jd1~VN!^T3)5X-QqCJs7uEW`|vu%{+= zJY=km8S3Al?-WG5gVR@yrF}Zcy>6M%y@jv}d!HM|((WN5%CS+IunOYcw~vK*_nBA4 zu~C_@3gV)lH}|6(8};M^73w%;%S0xug1G<9TMf2MWWp+lEthOH*fNm`s~~=P-BzJK zShh@L!YYW1Hf}Z8GLZ?ZAlMx`kE|(MCNg0a1bay5@jhkCL?*0)IDcYJ+V?hTe@ysJ(6|`et5oOCnj;SNT-e>s^mMs&Ru!=I+xp`=8R3@x~VBhDV zu~C_@3WD9IhQ>x^!YYWkPu$d~Y?;V}RS@1~PS>g&8AYjiBB}bPs{uUz>=kNK=Q)k^UXU zxFvbWHxlm0)9)i5l|6k#|NV#rwnv`P6URPJv&*oDG9p2r9=pJch*7vbH9?Q!{PRq_ z>+z>_qx9^l3Hm0ld(sQrGU7}NduoE7(R(j|;7uKCEcVm{{dnx0Hv7!&sR{Z;bak04 z^MXU~?8Z#Qs~fKyeUt2or7~`L?DB5ZWF)MjJbEqJ*<8fwuN?0stb)kBmUWFjo`;Ve zf?iAZC~M=Z_5ZUQ^zVzrQ}?`;q0ji`Xkw;boNo%Qxo(@YS&PnL`vchl|3~=8>=p8vFS# z@=?9*Q!`!MZjV*<+OJ%psnOC0rn>tPiMT>6{gFD4`bo5hG9p2LWdF6YrzYGZprhhn z{!m52D$?nX?7xHdpo#?jk@+dP@m;ICGq==#SLfr+#+rsR{Zc``>W()CB#J zdW+UaWlv4eAKCw=wx=fOkIY|#BW~EgyMy-B1ihB};?zfFPfgGtnZM4*Ui^~op4(Fs z^hYWJpo}JF=#I*snxH>2M;ZEc==WhyP0$~iBbg@l=^_AoYJ&dA94*B%?5PR*BNdU& zdP-VPP0$~iql{RFJvBjpq@s+v40~$A{gLEe{yx0c14JBihdmS_Ys4Q!q#1uV6d~t5 zSR&!sxwDVTp1KUuha%)WPuMDG=EM#~$nv0y1oLk5J)gU69zkbMO)$4NKUZahEKf}^ ze>gw8WrQqGO)y7!C_9_xp(V!&elV`NR3yJ!TXm zP=<*5ng4Ckl4jF9E23FZtBMac5h z1apS_f3^111apS_-wgKD1apRmB4l}Lf;q$eZ#a8uf;q!O5wbir!JOg#H?=)A!JOgz zH7Fxwd1`_=!$T3WJT<|b;rw;}_WN^$Y)?%vXLu+=mZv6|Gn}K0_=dBmCYUpvBbg@l z=^_AoYJxe#Ia-Qk*i#eC86Jv|<*5ng4Cg2#mSIm#FlTruLYAi{JZD(%l2gO1->bGf zGU2(Xr{40=1Til3ai4gw*@wXMQa=z{grh3b9zUTn;(6FZzL8k*+CMgBc(&{iVHGqv z^+(9D467g*Gcgn)%M z%#M(ChNyh(*o+(*YD1Q%CKx%A--+>B*;5mY9O-}W+EWvZ9O-|z+fx&a9O?gl*i#dX z92ts`<*5lqjtsRS%Tp7K92sgumZv5dIWiO>%Tp7K9LX_586nG46O0_maY@;REKf}^ zawNw-@t)gL6O0_`kFV^h2}X|eM}79x1S3cKBTIW~f^i^TPrq5khdrnw!8nlqYh_POxbK#GSGM~^ z!YXJ+j`ZI_dr(D!kt6vjDI;WgYJ!m?`AIAzWO-_Wkt6wOFC%1mYJ!m?LlLq(HNnV{ zp$J)?nqcI}P=qW`O)zq#|LtQ>O)zq#{|#qPO)zq#|1D}yO)zq#|4nUAO)zpKe+|kA zS)Q6;e92IREKf}^awLD9%Qj?rYJ!m?LlLq(HNnV{9A(5eoIN$c$dMe$lx@iJ)C40( za+AWO-_W84()mTpyJ^eMEnR9Emv7V*TL@2JVMFlo5$jj$RP%c^M(gQxjL8 zupm5FWgD_QHL>k!3&OKowjs+?6BnGdU@$_KrzVzOxFGxn<8x(CO+2{!qJaoGUfp=z zu0L!+cy`NC7P_~TVHNg4hb|b1kYgEELF{@UcToU$tN`LY4#0+JGEKg1R^16i~E-52qd1~UKjSEBU z6Yse_HF4)73kTvWdurmmXDu3t`s}HR^CuP!wjs+?6VtC=G}wlm39F#7bA()uvXIBB z93lJ7z_a@|zsV7@^MW}2GO4hCa<0##e%kG+iF-djbgk^EiMW4l`BjUARnV8+wrJoE z+Jh<*cWqh}o{};`mZv7p-C=Qf63Yl#o|;(yg2mx!FC%1mYGP{L;=u@6o|-u4jf)2( zWO-`h`12PJM#%Ei#G{{BJn;6hrzW0v^WuRwoIN#h*WHT;-lF!@#4jFNJn*KrrzZB_ zeo6Qmlo7H#HF5pUO9mrkd1~U&y_bZqa~UDaQxo?byksy!mZv6ObNG@FWyCj}JvDL5 zu}eZEQ%1=0)Wn>VmV{_2mSIm#Y+1i#unk$BnwWm;k`QIYGVG~|m1is&jF9E2iFIc# z8JOqA+khw)V#hxF?9?20^HJwLbm;0C~ueuE8#3~A}-=Z!Z!YXXi^E}9M zhIF3$>OHn0827BBs?Q^;7+dX`vz`;nov8OQQC>O{?dgr}QOqLZ9dzkY<)a#!A-!93 zr#wUYxoH+|DlhDiSAGpx$1Bfw4sBmciI!>V*1 z#d-koT18bXgYiE7W!OW$H8C_pI`4K93Gb;m`wrSum*E{5MU*q7^InZb8SO4weP!sW zPS>ZI@7}G^+1UAMkJpM>@tvyuO+aggeE$q-X5MSfO#g~>PVCm*M`#B5Y=Ylo|54eK z&LbR^f5EfI*2Xd-?YR!KuT>A6N9uWl?O(#(C&XCCi)LA0uL zRE^y~Lps(6sp;hz(!{9!Go-UB($t;vsw%OzZ4XBh3F_y0Rh4+=_S6Jz03X=JdqKoj z1AA(Mc7~y~+vKSUYTiS;N61qX)V%ZDrFb6p)C4u}Ja;J)_S8hKpV!|HYS{jA#yd#; z{Hf2|t$mA@yGLZgD$1i4e%*~;VZ59noe8TTsDgTuJwW7UNy zQ3mz%p&8PdunL0ud43Yhwc9db6$JJ3{Ir*Aw`IaA2O{{(7h}1H1YGZrd*`g}a zCtiF1#I4=FmQ#o3{k-g{%loHqZJN0J8ArCikB5Kufo`;6B&>oy`a7E@K0R*YGbe7- zOIQW5^1GWR4*M$;=l|}YUcxGf$9{j)1beTm9<^Z2ynTJG;!#-zvFWZ&6E}RsWxQtI z>v{>RAijU^riuT<*n5EKRaITUmzqRSqtc{k1nD6Jgv=z8d54&wG>J+_C7^+T_z^>I z$sjfmzYjDNK||;Wia`RIKr(k`=+Z*(GBhDbNhqPif7ae-y?5<9Vv78yWGvqTaB73N&#{1vZUi3>gc+-x_74tN&&HN zv2@&tpQmSH?QKRk?_eo{Qb4@_sior%98Sa!Hv3KUo|hsh1;qcXv2@(S`ee#QG10pB|#OSe0$Nl^l)UnYI zw;8ZLC(-U_K~iI`&;U?vqQ282{G3%@-Fn=cBU}5GNe6bld~i z67l{KXAYPTN&&IyaZAU|E{RzFu-|qL)OINa#8#&+9k=ftM0{{pb=yf(MJXUo{^Qbd z%N7waY|X6(EGtR@G33gn<9_lm5m)d1_<;GK6cE?luyowDj}dX=+v^RegHk{oap%(1 zKZroC@du9PgHi}zb@E#Y@vS`ixV$6C(Re|hbkPT*SD3)f9pA z!jJ;OPZbZ8DwPU4e*3ZLP=Co0nWJg9RHg9h6~TmPjwSxWpZi7eJ|I&CxCx zcRvQsIo|qUyo&Jm?@)vF^@k!Tg?!+pkpFKTlmde9j35WmzpGNJ17}zU)^bP_OHG;&wo&LntAzCe8i>mF zQG`m>(N#V!mNWE>tFD75*AaWHK}ArCslxZMyj{J%YtbANf#8?36u}bdufxX@|9+HP zNUJt2r-8q4q*988<>X%_spo?nq+JoPgZ#@Ubp$ze1ni)Jzpg?~9RWMYzu;2ugXGi^ zu!H<7F?9qvbp-4n{}N3-ALP^#u!E|v-OPWhuQ?l#Q%ATRG|(4y$f+Y>2Mzqy9&+jk z*g@-FJdh4@>Im3DqfQ+NK~5b3JE;1?k@hHZ>Im3D1Aj${oH_z_kbkMEUW4S+5wL^& zYfwO}`=fK4^+8S@0Xt~mFHVtDN5Bs9uUgepMNS<7J80l9XOUA!zz!Pt>s;j25wL>> z{sI^|bp-67>MLW{-g$bntjMV&UPN0-geSdDS}c!yNyB}icl#X;ViuQ6~1-FzG7U6SJ9YPs=XrBK~5bJ zZ*BcI1f_sROat#=X{uBo?5-+R`o?cSWGT~;=z({zyi6K4%XnEi?WN#$B687D;(x>i zPXXrClQ%j3CVCA>bFQrrzd(*SU$K01cEC_ z& z5zAKGwp^0_fdh*SCpHi-`ygnBM}$f#8Z^<4SbgPf8~3lUt)&XP89bB7^Sg+Nv?JbM zZrjEygFIE_KuXc19r2|Rhm?uhlaJEXk$a}RW>l%hcs?Fj$B z!^%oig?(rEDG?LHBLW;sAzn&>X1F6-?jBPvT4l=yIJ8TEro{o8;f}cb=`rQI?~G`u zl%hcs?TA$84b(XhYI$Q6MXyCT>4-pFBvQvW$TB2-Gzo)1S8;pI; z4lOIJ=rLy?CG;9V2WdxKkjiR@mAoaAV|fxZV{*jHsbpEY^uqu_Uk_-8H&az!ookR% zNEM|(Gu#pWKgX-8y|Sl52k#|E1UQsJyp#gXa7Uc?qkYP+Z9T~PAZHe!=?e$V@Q6?; z#7imAM2A#a{|Ggh=JWqn=RkH?|3Djs6yhb?=p61k2BngHI@ch3EmFvPsh}C|2#!7~ zg?K3inrKI?vFyllhZ|Bz^DMcHd&RHr#)|~m=w8g9QZVvZUr8SPNQdP?0%~GT*9q(_y zv}@d52UuCrQv@`9K%g1!I^LMHwCjVL4zRMK6yl{6Xofq&|Mzx94+P?+X96_CBSNJR zFQq^eO+-~zSj)h#4m8&_r0H)5$`R!7el5|^LA2{g^Es>~%X!_;0N(;)!c0UzLs7uW zNaL=TZstHr(WLw5gEKu4Z0)4E(_lXLW}Qz6-#e1eVb+y@4l{tM6ycf=PCSijtV@dTScD1~?_1)AZG$Su)ya8-?X z(Gsz944UDN$gSOUPzv!<3N*tV;s1MCsnth|3_2Jd5#Ue?@lpyj!-=TuUEN)xHHnx= zJ3@UK}Qg5$g}$wsFgHT%T_y>+@<(EY32jJ zd5x2I+%#22%T63o920%V&C;Hw`sd>wUkO{C)3b$mX=Q+BxW_-rSKC(SltR3e0?qJd zimXS06XvD-r3L6eNYPVQVKM~9dXhZS1*6^#fhea9K_3!LG?M}#EeiWjTbc0j=<{f zo5{Wc0<$yMgMK5z#}d*Ng6lzY>S)H~i0@x``@&mqo^JWz$qFFowNq_4K8-#^EXs`sjND z&2Udu?`;Q^4}N#4t#K#?eUt*t@B#9Xts+Zdt{cl=rX3N-M6W?gRb!&sSJ!T}^1}O` zoZ)RZpKbwyr3;$pSzHGZDuq;03N+D<$ZO{YIG)>8te;~gjNMSg#PEm!hf<0L&2UGI z|NY_RYDdqt`k*%xXs#eZGdvQlJ^`h_}<4Gx?BB2XB@lUfu=;&2UHLod(lEDa1=D z&*(FR)ds6yp#gXaHa~s-mb6r|3)9TCz zPpf;1@IN{AGwqru>Tr~4Pag9s?fykzOKlF12;-z)3xuML&f!Ei6 z7de!oKE~vT2WM^6b>7)0TAjlx#>o>PbiQJ^BW}Kaqpn$JooIDVDd?jVXofRY`1N%Z zJk1=Vu)9Q>;Sqt9Pzv!<3N*tVk!^-H)1FV50SyZPXU8m0&68)q5TR0v22Hf<$UD_m zRv?I{RK`|vb>j*Sc zMVeu#CLU1r55@^so&%*GCP$|SqDbjquq=~Y!!VW0&K@SUJ zVmPJo>;5ZBAzn&>X1F8r&X1RFvhHY$6474=5gIR~U|AAP+I0-w@qw;0w>-q_JfHFe zg1Z@@qlcadm4ZG>fhO8@qcqs*%Xh&opndO5y1e(1TG{YT{ePmWvltR3e0?lwoWPhUR z;7Sqk(vktq@Q6?;#7imAL_2~jNN{Me01dmHHax=}k#|NdACyuwXomOK;j8#>SzE$x z4{ldLAHyR897-WxN`Yp$BQPp}0)l%&kmBl&;jl6tq5iA76xL2eSL-NR0IHoS#H|a` zyfFejmCbu?~WX#MA4)j z;s1L-=Li4HVoa_>&n@|gvys&S ztW4Ua40lAfeM--vOCeR1@;rGs^MPM4EA|I)^h}SK0w|5!th`eGkdzVs(mr|e^?g$-A zJh$tL_tfjg!t=>~plZI?#6hb1p_@L-Y$01ehb4>~-9WI{f@Zj^)29^DPASj~ zcZAvu9DNWkZ-aqmxFghNpcLYz6ljJ!f;mTA^u0lf781iTmqf%sQuF~ZCL-|bKAGT8 zQh!5rfmt=++1AWAh+A*g*4*SI`W1 z#PaD><_$mE$7VH3Azn&>W;jz-t)u82M7*Gz^I-4}s(+VKh?i*6YL`HlmleEc*nNWz z>;jNxI8)^am9l(fG-#q7aluxHltudk)~@*GD$sm06*R*g@y2F{lv983fVC@1Azn&> zX1F6Z|H0g@WoP?2GQJm#c=-}AXofptr60}hdg?4cM@A{cODWI{cf>9StzWM3!UU^x zzQ2oj`LZr(hCAYtbSm?dXC_#kQws4?3N*tVG5ohvx)$zsoax{T%7~Y*CWB_UBThJB zO4k(=k24*VLcEj$&2UHLy&@a0bWM(0!`rCP!Ei@pOW(#TN+DiKfo8ZP?!D=N^2`I4 zTAlM{Uc}291kG?qbfkUfTfVo{>YP%Dmr|e^?uf_!aAG;@nT<>b-@rw@e8Uzr!yWN> zLd;GGl|sCf0!_3dFn53ghpifD(73%$8hs@q$l)D#q8Sr!#RFC8fajlUC+-4RYIAsh z9h9=PXDQOvm^f{{)yuQjm}u>aqYUC@O9ahu*U?DlGS2zpL~B=+LcEj$&G2Tbn(HWx z8O%Ay59lBr5r~T%N-4T3t1s;QK-YTNU&7uA1a}lcGu(BomJuoieUt)Cv?IQG-psBy z-apdHiaiHtjtrm~?uczKnA!EUgitBOODWJqJEAY0s`=j$gG>kCx(1r99W=uuLZuKd zr9czyi2aH!%QqhxV>&p>0L^#3K{MPDuclj#Ydtx}$CCUmIO3%gXrdkQrR1Ui%mpi% zP0hEW5HDYv0?lwooR)S0X5X-~+0>Lmyp#gXa7P^FcN8rje1{(Ka)blTa7P@O5h{gv zDFvEnN8H?X``9Tr`*{X_NdRbmJpeSr9r5>DZXf&IgitBOODWJqJ3?)0-QlIb6)`b9 zBEX>(;-wU5hCAZ;a}O`q*ki7ZiJT#U<~!t|8D1e)PY9Jlyp#e>v?Kg~x2Z9zVUz(H zJ(x7ZBSNJRFQq^e?TCDD!s?us4A6XS7&OBx1kUfO6yl{6XrdkQ>oq5q>#w`I>EO-? z(Cks58SaSPzc8`<_$#ZM4oV?jN`Yp$Bj!Ciru_9MBTNT-4&vpm3}}W&gi0Y^N`WTY z5juaML^+4EbP*H7BZ3^%8seoC>1zI%l1{dr^3&U`pR;!Y%{S;kGu(CjHl3dP=e4(6 zKc^Jpr4(p}JK~hLR$BPRlkVR|3&$5V5HG)PVfu2oBc6VJrG;-Lgi2YwSqe1Kj!3po z^Lzv?H)C00jhc$W!;sEyIJ) z(h!KNE~V&dA195w3pwtxrVuYjYS0Y#RNa&jDg}L%0!_3dw)@XYW0&Q2#Ss~3ZDR~~ zL~2)K*{&#scqs*%;g0CJXQQ?YXZl$Ke!B)bI2(XwxFgaW)s}AFTic}+;-wU5hC3p+ z-4b!3C8D20igkl<(vHY&x2#JknzSS6p$CGydWcu;Qiex_N+}vN(T@1Z2S=70o-@vT?S@s?L#P;CK`ok4H!@l*{_K0`fyMHkn;h>A+!;Bc0 z5Gti;&_E-mq8R%A&L#3c=$f?~L(f>*@-cqVQ$6S2xss*ipogC}8VJxuv1LX)HD~RH zN+}vNQiYg`;wKN@*ajVQH~OE(?BA_u+Mk^}p||7mPud}M{#d7>19U{Fl%hccjhKq! z(_0;EW%aYZC)%dYz1ujQ$350F^3QjfzT-zc(t~j5KzKydr4TRCpn(ph+vvF9)pjez z&yVlz81{nYW0y(aFdE^YYY3H6bfTeSR*ET=QJSAnR$Hgr1ATivWcm2+>Cg2HJ^cYo z`!Bkm=|MPjAUq=KQizvm&_EZ(qMuIdf{qtEk8Mo6<=tF9uk>{6y3F)Vz1?Z(0G-sFb2XLkD6iiZQv)|Mv6~ zZQb`>Z>9L;g6(>{kNk(#&De9k-ivVL1K~yS^hj?dqn=5KniS$C8Z^*F@yKH{tUjLT zS!HbZ3746UO^(>Mx7gq^i+9wBZF&(79Twh1?9;o-*t!(rB^or)Me&8jPgwu>WW>RZ zzQs>lS&cg3<(@gSp0eD&_M^o{LkH-HP$@-&HXSLZqS!9g1M2*V#pkunzWPq%oPOVf zJ$;M+Y5KY+-`|69=sfg|@|HC)7X^&EUQO9W+vBN_* zhEypUG<0|$lsfN14T3ZBmf_8MKJ$XjoAr9oJ>NQI zOjC!qlE3DBoR>zrx)kCi8Z^*FvHtvHt*izeI<2ka@~bQ#eOr(2?QZ=}6%86_#8ecU zEPrH)c6G;7=d~5z^tl!-?uzFJ+bn~Y2)b&!t7pV^|2nTtr4$VsI=t=9d86IRs?pe_ z(LVAX(>|`Ry|?@4w^{jY^Pfg9!l47jgdldB%_p~ zL0fq7=lj#hmj3QZHqeqAUo-7vHodrK=+>`T+7D|u4Fu?-cot(}`b(o}sZxptjhrK< zqB!+UFWm`ko0KSB#5Lw;n>6cS^Ak62)(yf#eUz*zN+}vN!i(a7E2dkWUq0==kn`?e zUT*pxy>zQy&`1^NqBuAs&X}4IDwSsdln-YKFRS;Dxo;tI{_TXEbJv@e!&gSV+S4~- zsg>Jd$2kohpo>BgDy3-9$OmFdH*5aBwzu66c5cw>JGcAaJ;k_3OzP^E7mS7uql;@Z z;&Tb1Qi=u*9Trn@{Bx=ArN72g6g53ziVU2}(CwZhaoD~dgzcEsX@P$@-&h7QD3 z6!-0LqUGbAPy)X5`j_3?a0Y`$DV)T9uv)nEz-4Ro|D7wzz@mcU83_jtXGsf?Aq?*msv{Qy=J`82nSshPrcw4K<}0ZH&jZ|Y6lm^?2l5- zrN2G?y0(oz&~9UtjORKk6~$LG;+=%hQJ=kwXvE~R!Al>yj&J^L?J)W*+G~-O8?5^{ zUY(qEOiw!MQivC$8p1*Q+Td3|n`Z6mugS9P+x;^ZZ|jeD=+%~?EhgoBsv}^Fs+6KZ zLkD6iio^1X<#%(|F0o=kxlem`P7hZpXTS6hqY(}|tZ_<}QZ&~-h$&d%Wyk&xSv`+G zd!sO3abEG!M=bp?UMU(hQiYh3T{Z1K8$}OHV@Y!qO=HH$s}@^sF&cmd!bgTJj&Q`J zgit9(gGO2T=p$o$gCp|n|9jQOc1kI_DE4~R$M&1k%%gEBn&UiTN;c@*?IqgopTE9I zSV1m%dqt}o%w#NSp9c@mh_$!dq*0ebsvw1M&^`~Qm9Xi+O8BKUmp2a9$b$zjXF9O@ z1r3C+gwtx<5Lj)il%heSbbYm*>|H~^-c>7O(ofwMfyEl_l4S210`_iQ3MqjlgK*Gp z?>;+r6GQa9*N)()@W1uEyY>o}lHn&`Wi$|=(_AYEl~Ocll~OcllrCaQE%D#(1Gug@vgFErjomIa9{}S0;c1sN{Q;mOg5Cje6it5sVhSta zlC$$AV=rs2mtWrf^5!}kbWt4lqR+JlYWEIqHL>XpZxUsVJ^ZHHR^=Of{+PM}1k*e|1zwoRwOON-0{~n~e;n zBaJ0y^`Q=652~Lj`j&pywuvErln^Qfn~`X>AB*CWCEgOB{p$WDEt#XQ+@P2KGV71h zyV4%Re;l#Ld9q z%i@1OvQ~}Opsi0^rP+y1gi0wIG*avBYQsFj9rp5h!E2!Y0FHL<1CTK>cnvsm!neS& z()|oNmar6Ib8>uy*O7JO9!RM{^Kzn0z)>{o#;w=yjrCUY{kPJ*KKLmcchBzLu-V#S zy|A^rB_r+1tR<9*aRiN+5RRCv586Bkzo=ROoYmmva`MGZdj~1e6ehpuN{*P9 z5Sm^^H|?MlQ&H@fR;MVdv|26cJx9FF6@8LwuILT%n~%0I#Am*FVyRM!290|1vU)mM ztEGuK5%Shl4oaI4`d&ZuMO5rdv++@Td^V* zDb9&NbLR9lj_lo)Bj+^jw;>m=lOCcqYVlMzX-H5L|sU` z+Q&p$(Km+fzLJ#*=Aw5;uWV(7l_|oJ^X437^?_NfE`@lB2JP$GE6e29O@EIiPioUU zn0%~UZNq!Y)wX+5AHT;D_hxS`w1cB)&bKL7r!_x7OwBPOE@MQ~&QN70~BR=)oD{fL7t zAJ4q}L|AQiKI7vfc6dQUhwlk1LZx)A9@pm^zW%=T^KWmszj+Oy9sY#&$3C$V#mWLS z!hQYmVMYv12$fQAg!&(XW!ca%W63?wTYrSt5j67Q9!RlX8!Dw}9b;^d#ad$8W9b_F z+fP{=g~c*wlTTSY#>@#CI()88dn|@Xdn{clrD)K|x!XSClWB}x^n|4s^Td+ZpR#D`?wA8mCh#7i`2-z(yt@ORRl zFl{)jk-LB6>t&qYh-+seuqRxXLcBzS_OlA3lt|WI+V{Z7Fy)HrHu|8ZFlMOrqV`HrEPnR9HX!y| z?#Ob|t{+%U!5-8ZKxc+RcN%QQfey?QiUy5vw=9##%jz6HGOk83%5W_UOO~rww|5nx zQi|63F}+hP^LZ%uyf(BsJg@Esn9oH@(OOSM@xrriGaNheU>g}wA2w#_sximpbFHMx zR;efxa2PK~AB6kplU80O>H{l!T`zH@h84z<+AT8iCz{oVRDq*tt|oj|ll|H*`bBNb z$a}XK4d@qbjwO~Vj3wNor4;lL4cf<&*VE{Ue7yL|`&~NIb39+aG0!Xje4b{oB_ZYRoqlv#af4Y1qlXy|aO?}~YTE@R`L zPqWzo9E|#dAN9Ep7KhFfMG+7+DMf>JOXj7+{4~{DX(h~)P8i8_MW-vhbT;ZxM+{4= zZIx2A`b*O;S+e%fKQ7p4)rB~1h@8VypeGFVj8}@*Hl6n9f8sk>$EF#lxx18R99?1S$~)|m*@_-IFsmuLxr1e=6V%F} zjSFi+XG@($&7Wwcn|7CMc1GP|PE|B5WVcJ?d}8oS&~u9shyGn3ee|T0N~vFiXQSMg zkv#O4D){tSQ?M-5LS}6?efoxgProjOJP{4rZE9LF={(#*STf+Ky@Qsa7EX1(B%J{< zj~82F9gUd0UFq3DwQJ{$dC}~L<43&G0~#@bj%No|O3}d%#+cYZ|G=1tz76dd;n=q^ zs#7i`2_Y}$AM3=Ti?lfTLjBPi~&Q`jZo$FGF7cHE76FxiZ zUJ+{w^BwCM<0ES}TYa*-q*97z{rk)*r`t+RmCgon{!oNUDLUpucB;+yiZ%-GfSwlM z-nP#;icl%_x2hjDoej>r$g8FkbX<*M1W=obD^?#Frewq$58Y@M8Bzs{rH)43xFyq_ z*Usy`{6w^t^6oU^jXGrQ98$&BhdO5q^${-l!mTC37tWPC{CgauFdA@Fa?f@;e`N@q zzp6_i?L>q2u_Ud}ZT*4uId?!|33KNMYjy6J`Z<8KJ~sr`=PIRW-8T&TgQc!B)N903 zdi^{_rAjF}tV_b#sIUtl`xJ3+;*oqd>ZEjVBcH|H#gcMdnOl{NGXKmMZutZAH z%#)Xup6gq(-wI|^n>C?UvDn&a7g^8siIk#2BZY34h%daP2itsz^nb&*NWZvQOL~^G z=_OAbMbj_t9!Q-HZr^Z-sl@Mq5pi$ z>ciF|iG~heP3XE-r4+5T8P6KPvkmRAUauIroTVM(3TTA;YFp15sFb4BM;^~*w10LL zix-wx$H-MIURY$Hk&mVgXLBuVIF(W~Xr#(*IGxo{2Q2rs9voy+SUZ76xUZuWp;C(0 z+Kgw47VW;w${lCYv=?dbDhfSQq*96ojePj&HuZ%MyWutC*xBQ}r-Rm~t+FW87p`qo z(V&s@>n>kD?7M2fo_*f#o z+oyYwDy8UVx!I1Q`1%?Xzn1Rzq#U9Yn>kN=Ud^2MJBO@NiUwWPhpY!1^zXqR&DIXT z7+bsh$P}Scil%qaJ=@p4=R2dV>Ev0*KNed)Fd}P8G=)VWd#RRlrdQFR5$d7<~{I#wGP;tC!oxcAGzNW?Q8ct>aix zT=R_kUQbOYuywxE64jC}iZ5rx1qq>2iq`ot?W>7TMn?uMpE#DNPo^$~^1+Csr5^1o z`jcQAXi0;vN>_H`N|jPHy-{vuBp-l{qFB)n-DP>JTde4Hw$xcPo+(l(MT17F+~2O} z!nGf8&VV1EvxNKf6`@j!)_xQ2#C7Q?qcf+DO5q-4S6vEe#~2moTD?EWl^5(N?M2$V z?96r-R@-)eQ2Lspxw>|Ho=r>K9!TJaMyLBn#gJ{rh zGw6LamI+SX>b?=jcHb+~`)VqsXqLL4-_^6{w4E^;^gVsQ-DB}0z3m&`Yw=p1QaE%p^I>I$bI5fmln>FMJs-Lr45gcNKnksdG5M^f z>p^fRrD)Iy_xcbYa!JoG_HneQY7Y)48cUT@H2ulG@2vNoS?)O9!V<-bg(dB49I20n zN-3K4!xujL>uw3dXGuF6o&toUfB5bz5%7iArO;l92JL!%B$oG3$rjS8SC?T-R5Pb2$fPa*KIzZ>p4r*AZv=N zB6y0lX5%@_x|E_pyEjT!scl>d!DFg*6YE3IY^#)_xsGz*tL#mbwEEB*cuoR7E1ryS z|CQcjQ7J{!vh;SP?@VxHuz0i2!SrRXfg{9Pveu5C1CF9O`gp2>XZz8+Y%Vfy_O!cg z1~6}Sq7jpOwgW|O(oK6qP%Z5L~O9i!NG-3LGf-WI7#p?ru2?IWC?-_^AxEq(ad zY3aMaUC-~Tl%jPlTHwT%jk`GG#a$BA6nhuE5!_?(8dOAGiuH_e(C*97y;NF|NUzQS zIy2PvQu7KD^Ms;lmwL|i-Zobg@X&FU0y}{#8Mhf^J=jnwMRUdCzP@yd)yfLzUYT=@ zGAuXSo65V(z8|Fsl~Odz%Ev450ocrmQpC<^b9PQ%yyom|zCJzgqf$B}>l_?!J8|6y zt4K#R9ql4Qr4-GTrQ26xSqAHs)+A;%TA4l%Dng}bv10C{jq3BDp1c44mntdhKYpGI-ZrY{RO2TQ8Jcip2Xda!dz2;H7xtD7BuoEdNrRY57 z`(CQvMb;jrtt9qA@iR2)QYatv)Yz^@ef*f!;5ru{+!)#8ui2b^_TxRnevFg$&-Ctc zZMxf+XrMtCg(6f+(V&4wOhwVP*$~V5#T)Hik~4n&>w6Zx{l3Nf``^s#AsXQkQI|rz zM1uypC{FwHm>R?=u~Xww~XEaO4Bw=`?Xhd^;iPQl=xL zK?9xc>i>C+%0dTn0! z!$OMvT=%x=9iS9ag3*B91h=nxw%EXQbhS^2`H=cRsUuZhx>GV@@b(i*tq(1Qm~%li z$obT-9j4cNw_bTilSX)dgi0wIG|;I&wiwa??#Zw2UCy~4ccQ$f4*R*k6oIw` z8sWLu3PPn64H~+AWVmBy$5`mNe)^1(rTC}$*EY}p&;Gw_dsxy4PcP^Qg0}=Hg_IBt z8sW(^G01PM4?1!|+t6`dR(*He(^K5$^)ajEz8-`lRTdr)bt%M4G-#mHuFUr)S)IRr z^|CJ1AUIZ2S;uxKm!bZPVqr#1{QI&l>Y$XOK_k2<{`S@}rep5a)7x6l@_cMP?yit_ zgd-maj|k0S9St3x^WE0j&FcJ`T7-PqMPwU`o-({()Bg=!ITB>mGk+ zvwwJN-}ysF{9@apO{KJ~V(D)EK|Jy9o86Xw@BhRD=D%X6M|CFg~*1_$VrU zu))3tj-uJSe0E+gk3R1lwMK(2@!XRiXpT4-IXT84yeJf*<7*v_()DpS*$g&{!pi9W zg1@i;YeG|^DKsmiiBKs;gN6>bORmfPD9If4T+?o+@Bt%_`DbcYqy$>fhC)GAk|E}5+>6J9OIa!xNN?=(; zk8o=3HZr8v-Zkevyx!?EPRFj^Yp*!^<{pFt?K6%d>QagZ4K(I~4$}dOI?y{cUeexc z>j-MEqp7bbHlNjD_dhP2KBF;lFMq)b^S0kUdnVm0d#XA6fQ|^2QZ#7ja0_6IWye@P zzIM*^F65j!$#lGW>9Q`4qL?Ribml1P z^T*K{ad<-1r7Z0k4cflxLhN(-&Cjf`d{#;}1T|{BXbS9xe5v zSScfxB!o(7NypNCc}1Vqj+wC_)Q6&>gSyih$f`%Rv6W!n))vlI;`8~I8S!+Qaq3ct zmuS%5KhDW@{@NwW+BlzM>|@%^_Q~_PkBQQ*Y<5PEq7>pK8nn;OvUk@-Zv^(wxQ~a^ zBB0>|Xr3=A(Z_MeU8NLFUxx3*t)1Kxipw`|8qm9~YVP()oy(acj(jDDtJ zv%#jvoM2-+I2e)H&tX}zpSvx(UPf$|5GsY4foPp2!b;dyMJQd&=Uhi)4(Hmr-)h@d z^oSQ6uG@gt^_88!veLyFdiAiJafth2;B|~X8J@bw`K!7VQV7ot!a=*wl71iTM=>t! zBB|#_Jv#AjhDs@#srCIRy)CP$D%4}1eKJkotK}TtT9s0C%tu<++E{{>Fh?KrEyx;& zqmTOl(rVifSZ&i*!|JDwMm_neNbizqYcIr86#Iv~{n=HQLLFEy3ce*hhs@lyI=Wh7MdpGJ*s7<0l16>qf%xmYvk6d7@ zRK#UgMqV$QEh1~&h~S!&Qi=xcmdx2>+@@Y~%n^-Ai#E1=yxZQ^+kX3SOZ#PyjqOFa zAyRl+M`gQxLTXoaDWsif&_LJT-_1P-dvxq~cBUlvN8h`XKG;^5LcBzS_7f?|<7FcQ zJYF0bFgkN&fc3($#4Q;aeWLA?M<1Yd)mIcdKkjqX^yH1=%z~c7c?tF>XCk*n-}sj! z#wUbIDVp<@_d$I-fv54XhpjuVx)WRA^;R28(yJ=A!`s|Tl^t;1^DYW~@q{Ba{OUUT zARI9@_lishc9-f>r~{%w`*`)&+^$|p?TY;wYfH_omO@d;deBN2Ee>U(XwV4vRjR)G z!Sxc(KykH&6I)zg`PnFa_oFU_v=a^5Plct?$HrZZK3qFvl;K#5(TA(;Jo*%m8v-L- zT?%O@8nmxclUL1FMexJ1mC%!hl)#h5wU2w%6rp}NMYAQkwe;}Ud^Q+#+!0|VtSRIy z;i-}tC*(ud(Q)mZR(Ix4#OjWz!YYpIW%LQIsl9(FLZuYVocnrE=MRpr>wj)@8?R7S zxBh&y=GX-~?6H&>uPCKxj^KzX_$<4Mb-!UPZdUh}z3qc182ZF_(o4W895Eq0tyuC% z{YVr$v^qCp$FnEsrP44+QcE63NP*4eCg_SNfKy!Sl0snI}y4x>-0Qi|pXj+oMG z3-FPpKde|fKHS0b@uP>f>FwKn2h*|ES4Q>OIo8s?)4gMQ5srKyyoRVrAzq?E z10D81%3*JeHXT#`IJ~K2{oifTi*V>bcv0wn6jMSe#7i`2gq!!g+0Rjf;Gk~%j#Qv zV1=?uwhyFsym|Ac9Rxb;N0qRBD5dCFy1K{0w)?4Hf34YG*FJiiCXH~k^J-Uyt(sCO zQAK-e9|!?XT_4bnDDy7B@BcR4`Z+l0&+IF^e|_s_YxjOG`vzTgDMf<@x+ugVv+)WX zjAYukSx?^24;ke)+^pmmRVi9$91~IMJ|>#?Je3&yiS)6<3&xDckiGg>QYD{ z(V*P}nRbzF^udlI`Ug1ZYpmxLZ~A((cX=O_9@VHzDH=4;p?@^kKmIh++b*Qg!VwM{ z;Sr(zppHgadH;|Z$Lw8j%qkY^o+a(}uI}n{mVtH8*@tMvKa~~NLQI~=~ zqCxwZD7#A~`yl2btplCA!pvFLr4TRCpuGmA&TT#i2lF=3HY1BQ5ci7eQi=xMe?ISC z^l>*ila61$2PKN}1L2_iBkEF$2JNE{W{|f(nNe=O$C)=YPqC%5^38KgiPkgekWZ&G z6XKe+#*I-aMK{kz**Sg3_&lW?MKsUG1;l5!dAU^)D#i1Oe)|kM_#Jmes1(m!RtV08 z%25PQH~Q@w>iFBGf0?fcmE!5ohyYSKiqIQlki%a``Su%ov?@mtJdNvj`yh{;Klqb5 zEs6+I@-imm@z+t#-D$P?is1QO-Z(_N@*9UlY?da@aC1uHrT5G4U=e{|MW__d@&P4n?RGPZdYR-s`Q^svJeo&)_$`Rfi%}igynpV*k6}?Np8;c+=o--4_nEOmr*afQKZ>7}WvcM22$hOw zAQhn;MQ{}L6+ICZjv}zXgR$Mc&P3o>5kYF&zYO8KuS8tG z!Y-YKax`AuF>^qwb0ZWXQhg`*d#1iOK^%J|4BM9yl`TigguUxc!ry^A9jEA1I zeE4n#5nt?TnWr2@aG%Ogk`wWl1I}$#gi7_zb{z*@i0{`D@%T|4^OU0q-J5jzW{;A% zRH{39h*5()kph&Lu5t!K@MNa<+GjUDxrGRD6u}hw&M5PNUqz@COT zBJc3J_nZj)DuVR^Db}p-;}CK7U-zA-97U+F-{o0WiU?AiEk8z;9! z+bhT|-%s5WVZR!eNU^8+sTU$ruWbz+L9hq=c?Kd5A8~)PpCc}n;)vm=)rt6c){8C5 zQ3OXKKLJ4meiflo9Qk~wnut5rzHXFq6u~jrZ!Z&pUqz@C$7A2yR)lgC!CAuhCWttC zmrGleqX^DEzW)IP`=BCJinE>X8&Joz7cUs4oPdzq>n=|nil7C6T^Y{7eoBuz_BrY2 z^Od6r&hx(iK?Hu4qX^m(zQ;nu50~4olN?wq^*crweJX3|gJfl_{qX29DizRA`!@nA zy99mkteK~eR>V}1YM<(F*7Uba6rob>ulP$-m0bcI&ulrlGay82;*S2Za1s%V=dPu8s6w!CmM>bMdb_wfT5h@j5LSTL1S2>CpcJe2tBibe1OP^>_gi1}l z)Zbx>c1c}_O6j`|o+jk{>K~lasvJeUdx*d3RM{oWxgt~wuSoW{OIA4Hq*mnw#47$$ zNVH21TcNvC5rajFcmDkJj_0JKd}{fbEy_{EuwS{3XqNz~2$kaf!OAW{&OiR2zsyrk zKs@F;qFn+Vif9)pz2OQu{B@M0FFK_~If~e11%JV;zs;ZsmC{@Pt^qngDMt~cD=Xvw z4FM_Yj#fs>$2{d|yv$RyGLR}os1(aES{c9I?6OwnD57J5*T>mswoCl*_0v(D_DS9mY zvcw-5P1%V6zBHJE&<~4-WNtILZxUwM7soOQ-n&XRRcNv zb(B|L_g;%4REj4yVH5%l6k1dtk+O3}CIZ;Mbz9TB9$%PmACFXudZIqPqh(BtXv zWe|}(sjZ4oDSB8V;+9VjY5HEl35fjN6u%2V9r)F_=n;k#{k{<~^tRobK4fqdL7%nX zP*5EjmrBup9T8iec1hD0-tXo^IFm{p6ZZNjAn4P_$yNH{{S+$^2lp&DI&dUj?jiU~ z&_v)@5h}&~gowCx$sV1`Q3Q83{M886p$L`YPD+1-aumVc8h_bHbtp#>+y#n=Ll^w1 zQxPiF+?%rZ0REc}m1^!&^+PB}5zQSldqF^TC_<&0J9JINvNZ1g=)g0py}QIw1V>bV zg*NMG?7rv7ZCAW#SbFX0ncj8Q{6%laqg(ZW#;*RmKlrlUl|#78r*XFdN~IJ%`}d;^ z?dJff1HZ~qME3_{4B=;lA(`fn#+$v3R^=$7effqVeBYUf;U}CnS2>En+>ShjbyVY$ zqZ%#BQ3NawAi_Gza;_XjzzzbUS{1RZl%ojJk9JPYw&*)4=X=fg|1CXN@yNweQTF zD@PH1mrpQ+?`>1Z%lGd%S~-dsHvC(L@Dp@I;8!_{=vZqfL-=VCMJPuR#pIn0;U`iQ zp&UibUUe5k@cb1p-anKx5Q1mCytM;I1UQPIZa*^tN$OCJBA7ovv84#*D1v3^CsK&` z((T7~Dn}8lCqFYm1b&sH2(|@3I|#{tr`G<`lILzvjv`=RqeoR97UoZ+Sg?Np8;*n|D78WH$aPC(=y?C0Si$$W4G07nt* z!G5-uh`l=(v?@mt?B{+m6NryfKF**2?tJAa0&5Y}NARlIn5YPq8an<$LyQ_RIL{v_ zE9g>$O7V1Cl`7=?fkm6mS1Hwj)eBM;yn~Hpr{C482$jMb2Z-Q-Z2aZ@2a{j4O0P;` z^#VljayFjadY7O>r7+h55%z=|hpu_%{DEcz%m7%c0}(u4ja9mr8?79jGvGl0qViug zOIJ9GfF}fq;El5SP>v$tp8+EHmJFesfe^t{6cFGjg1Up>C!`7-MKI^VC({_Q+?t)r zQ3T5{cvu>p3qRAU97V96g1^L4r5r`jGN`;CsE<>g8Pus9MR2sMd>PFe%oYncieP^X zo(W5paumV75v$lS1LaPQ>C1M$UUm^8lcy1u+v{#*^9tY1p7+mHQ)%R97V84 z1+RhSLwhau*w9{Kg)zLcuc%`nDU4Cr3j?~p)u$ZB3j}tyfQXhQMmXgt0y|qkRI?gN z_b1<7vsF2Yz&;faaooM+#V>a%M-kX{0wRuyNR@IFfn6sc;+P18auk7GCm`aO2!wJJ z!5WNX;x9*?*&KIKQ(8CJm4%KtCSHHb{Vj~w>QU#F;8(!oO00H z1LoYMa=FDZ@!1)GfE4Q{j)|Xr_SAWrDwSftsm4Uq$33@B4?0we{U(ly$NzP+ zfKVy+n>Z#;`}fr`Rk`0miv1>ziR=F3lAuGS*l(&a5&3w2^`8VCD#d;i$HZ6OTcv3; zpe3pl`%N4Z&%WvNp(Uymd(?j)6QM(;bVNm8#a~C`mzQkZy5z=L+oM%uRIA@zLwM}9 zgEr{tj8YYvH|naf1S8zi&9`V(j_Tu0y*OTBgj0?pcy}?5iO7v|6cO*fLJ~R0|H@H> z-nE4s{yG|+(}uPxM-hCRs{j0<97X6m8m@t+sKz8o{xbLkm5TdaTEnqIU29t zGLNZJjw1BUk%&-^BJ@?Ah)~Wzh&YM@O9VKIpzb(|0-+p5Fn@6r1wuKBU>U|y6bR)g zg7p+fQ6Q9~2)3ST6h)7MWvLuRu!UBmDBG2C6v18)M^U6oIf`IUi=${`^5zQPtnSs~kndyJVUVU=REf>bWu z=ofut<;@2yUET&n4MxA{O$WX;O7p>bh7{|+@{6($21LGb3aR))6MNKZ@4YxmIT|lp zW%P?Kzx$s9LZ#UMqhIvUovv*OI`W-C-n&H3E59i6@xljd2Lwk6NU{G{eo-J^nlrLf zb*L2kfAouvSaj1oMW__}fAoufZqGlqDng~$|Dy*IrK|{*()YH!HrU#gqX^DE{r#fK zQ3Tgl6@slqbtpQ%Ey7lUU*#x5-!gIerjGmu87z85@O_T{J^t4wRpa_+s zg;QCtXjgmOHa+N2DUN*6dcFCo%>qKD*f*o~y48zUhg7K)`%Sc7;RDcos1*B6WxXOF zyC)xjB2 znP;p1&cML74_ZCPC|E^`9=82jrZ4V0Kk(Ue=PO4Mv$tH!bXQg%M;}F~RL7UUU^*h= zz|VeVv~m>D-SP#~fwK+OSaRZytIk)1N_A}f8PicAkg5@Dyf9BWikN-UXG}+b3t15= zHR-2AOh<*l2>19G?`u&`K&1)PAT?^S>4=C^AOG>ZLO202 z=nd0RtqoAR(|)!`t0D@K>i+kOrXwPds=yHh(Q!5L-w=>uOc618@j9J>lXXCfd8*bQ zY*&g1Qn^GT;=`7{7UmorMX+w-ipA?{aph%YmB&}arBWP^BVy*iA8C&5wm!?V z0cg%8ajga&8kb6OUWtfT?|-E^M}eaV&WUk#2OS!hN^yRSh`w_-ny(y1aBh$5LFiC~ zN^zc#h$HS^v1tK-qX^n4)d~`I{=e;yHmwXGREqXWg}}+0PX0d)F`6p?BDi*V-QUu0R6;deLn=WZQ>ty{MF;C;idi zPd)m4B2u}QC|yOU)TBMXU^@CEl%t5g-9KZ9)*n+x%6a*n@=vYGQABaRzj;_8m?}l6 zRQu#1reo}y)B(hGmu@;ga3tQ@r}+!G5%J^Oe$lE3l^S;7DAV!m+zHi5St~0=sMPG= ztvCSUmh{$(auiXl`*lN{KUQ@tNN>F;LZvz`|D+vt9uXbOb+rbL#M|+YhUs|sn(?)K zC_<&Wk6&gwB4W_Dr*E-g;4vB8tIJ8RC)i$4Oaz3vay$M-hEL*~L;75$I8h zP^n?<6AiKHt=o%^Izpv7_J7DyRUuGT%OAW+t8x_4{mA!B$GEqQYN)jskb z(@`Oy1F2GuBD#Nmn<2LOPebbCjpuf5RgNMijo8alRUuFx4^Cg9QxPiF-oCFP)_(~v zVOcHD`0Y$|Ex3QYm;N z(QB)q(HFdbvh!TX7-LlG(kFE?^ttx{PZ%25P7 z=|F^4YPm*w>qR*M@%tYc;?^m6i3EmGm#xF%xf^wx`V6j7`@*>v=6jTd66 z1HXz0QsLD)BJ8afBDeElV%p+8_J5zI0oN6n0NgR@Islh%3`uFM%V7zTpQO z;_U13{x1H2_+fhMMG-26Jss!>YtAygMlw%10dbA%*yM<9MF(^Rgh=r{!m#EnXKZ}( zJmvHWV$#1{$EXo_dD#Da^ihOLF&wYD4vYY2AVgTDmanI`UKkfRieL&SEXG@`1EmTG zm12p6Rcg6;S4)d>0wUMoqnB<~(-9CN#hR^Fsi^bUuiAH>a#({FZ*DPDC#ScnLp~J2 zmS|GBO@~!#X>YwKN8`;c|MX4q2Dbls4YIXcTq4Du7FMZc>b0$bqlnz+FMAU&C{sro z8JhhZaj~C6iX%o?rIv4`w_cQ^2#!P}Z^66H)PY|`s1!%Ouu3iQ){Al!!7=#E3-BJY z|K+uTyeh3y9FM~))n**!D1x&@SaX(Z?0RX7aumVYXR}}6y>LyHB2;J# zvoh|w(d-@AB5L7yF7VdNs&9-Q(;-rd##$8PZe^FGb#1w8dh10IDuvZH5dG~EMW__k z?Lb7kWWy1YI|D+b;7tG`+9k-5B2=pTzU!?NqFu7<--om+M-lLfKu6_0=RBwgmFhn7 zAEu+fU80iK`>=Nj>{-=ML7dRSk^2tI+v`b8f#wAi6LtMu}U#9H?9j_d; zeM{gdV(d$%V~5RY$p8Tzis%rj?h`IEL}mK`v1I7@PUR?~*uW9dlKJD`|J9-#MZn{Y zoJVU3sZxYWk&c$kjrWXi9S8v_rZ!qK|G4m!dCCd#=5mXc3=*XX_}-CrNU>(4C3DkH z|I!jTf?$iOEE(2EK;%{eDYmz0$sCn`_Qz<+K!+k!iv2%YGHER7R8BzT@hVy}rX!C_h>N2Sq&SX6OXj@vI*f7xB9D*J zlCiSNBQoORC<-Z#;QcKbrq^K!o2hf#z|ao6Fum#<&Xhv-l#?m+ZMC`S?87a2K0b)-F(PUR?q`z;Z1%Egdpg^^`;}Tg6v4eBNO2FTLZFqT{ix2sk$AZ`wXD0YLlG*)y|DfW63HSn$hI9MqXfi)lzz8=(XfCec=%j+jaG5I zGydg>2??Q6isqXNz7m!%hIHwP1f2IVefewyXt%HA>+)T7spjc%IX_|FcQz{@UpUee zA~@-Scwr$U9JJfJ`gN7M6m*!BoM*9b3EB7V(s%nB*lR{y@ET}twG<*kr4-FwYu_>1 zB7a$K5WWE_ImC$+=rcQ7$}N72t}caqn7y0NM!6NPUk1{15;&az9oBa9DLrqy`eh)M zQZ#6w-RhG%Z(}~NentI5%GS#{AHJ@YI&Z5>AsI`e)Wy50jVMaDIvmB zrC)thDMho5dCv8#?0gXjtr{;7A?@fz+6&@$-0M>86MVm@*#~XhO?|M`)`wGJ(1BHI zY>D#Kx3Vq;9cZt5rYwG=N;w=QFlT5?5mA?d4qH2iGk349_&+w595iD=8{c%oh{IM1 zzZk-iCm*lYSjiFRPG8Vgmx2zWLAzIN$G49$9UESnzB(HD0yuQ=kQ z4;}IJHq+ZwioMG`X}L$aR}Fn|;_(Zv!?&rVCV?9;;l6* zM-jNK07SSIUv7}T$D$lXbUx!H(s`VIT?J`Vgi7HK1$0#JmmnW^r#*V*C}Pr22V3d( z{~n7XR0=mcpd-AhVmViiB5->Ih;Z}1+&=BmD@PGmJnyOM|2-B(s1)wBKu37tuiP^2 z(JMz0#W#l-qW||;6cMEI_s_#!{qkabk3~5e?@ZSb-#teS282lA{txmI?njmQ9!uZ| zqV-PKQN4SPI>+}|6robMl>{B(MpcRLu_#9o$G+k^;`dmP4MnKbqZhi4b&tO@zn@4S zfN~VUFMWoWTWnWfIf^*<9Z%I^-@jen3rDIHp;8R5?s*|q_#TUL6hVFQrF7MSxKxTI z5^jd!1VoE+0wUL7d?_6|6v6s{6l*rzB`fhg7Ud|S$So$mdk!6n2vWIChudeqN3R@> zH@E!w?m2X@wOd>w#hw=KtD)Dn296-ugX6pB`=sx&C_<$;VuTxRZ6pQXKihojBX0SB@e$2KRsWToEe8@i^R~vvF5Bir_3!-J(NlpOU`Eq8vqV_Nm@I zXRlR+N^!Oe_wGu3k3~6(;Cx=adrlpSP$|yA;ig`R@3AOH5uE44O+70simx1FQu%27n|zaI^N!1p;7p;GOSePW3C zwN2EyB2;S5tf&49LOF`)JNOAh#IJ20aQp6^%2CAN!9F`j1isIy2$gzi&E?&`>i&0a zu2qCe4g1z(ma6{W=Twd&igAw^B7SYtzRxKfMZCNA3YMyfKs9PUR@#+&fpYd{p1(WdBfvO3mrJ z&vZn@?&D&b`|ZaXpCdU@1otcpVBl;(8D|6roZh|9qDr`mYC-qX@iN1s!oci0@!2 zLZ$F777%egh*T*;rDk7!ry=5caCSNyr5r`zwJzw0>p|#Hgi7@-{-+`0dT_Nh*6LJ_ zBJhS7bj0-_bSOflmh9#_;(8F@!BUPQ@Uj_n#PuL_C_<&CK68g5s`VgR;t$hzu#}?+ zytf7&aXknficqN~vs_194|ZL6N{ez7fmh(5Bd+d7+%vvY5h~UF8`sf)b*CIfkgisD z=(V?`b4vpuAVuAAb(iunPdOSd^AuNiRv)=c5SL1^4CCsqE1g?Xjv`n$adoHlfw)wP zZ6U7i7A&_`vt5Csh%^4+ZTE-!b=T%|jZ3B2rmNK*+ST=+bTs=1IEr99jw{I2qms4c z{QwA+V(*IULF8N!D#hL$*Ms;DmU0xqQ6jDfp+gZW#Zf7)2k{*&pmG$!F*vRV@f|Ehs1#?0YCXtVO%W=^nW$P107*P*a2|~7LF8N!D#dxe zS`RW+%25R8-D*9EmWc0Q1w@|1A;r19S`Pw&?_eoHrD#7?>%oCirBbwNVm>ZP-@#HH zDn(l>e$@(Pr3jUx-Blrw4jt5$bU*}GFYilCJl5%><4B2AaedVvp&UhUofyArm2UmEDn}7q8%6|Dr3jVc>NS4V>bJ{vrP;t&)!-Ev;#aMP-ujD9FKUmsE_#ETtQewD~iK%BGZB-8QQCCl1$pImp2bzi+G6j7Ig4(zh)esodD zPPLtxfD}$v5N+pu^u$FWJJnrvDMf?!GxX_fl;s1bshC4M?;)o*SRxi)C<6P=C@Y-a zsH367&wj}1gpy^2oqV21u#*G%q=KIcQ$$?~@e&OhXtXGQa}X3$f|}B_llB^{Bajc| zu#Scf&$-l~l`c3aMbq@VAXv>)jwPwdT-^Zmr0y=9V5q{a73 zPG4)>m_CtG^z6U*nZo|Bktio14)T*u5%Jd7UT#&yY?YeqXQryxNN6o7q7bQJSNR#p z3c(RBa0D^wC_lGWy+(q2cQ+NOJR7}eOiQ#p$0nE0sahzOLfB2;R2+xJaJe2rvjdcQ#=)-p@~%0>M@iID+6wKtExsh`#=)b}+tQvVJ-n6*z+E ze!SCC74Hdep58A}gi7%gqMw>XYB0i$PiLc)qln`6>r6+yCk&(_f>bz94M~*lES!x} zj>bFbTGJ8l2^&xmBE=Kt)jeV8I6s|@3LHVSUv`b@i1&mKNN1xIp;A1jAMXj{{SxH_ z#GmGvj(CR``3MM=(sR$2VdUe~^nMBN0>B<@7exCvTt~e1YfyuGzf}=IDz~wCPZ+usQK(dI)4s-Gs_exR z6I9!ugq;WU;sM+P7`GC+!B4A(f8 z=knEbno2o};P@Et2?M7HmEu^*+XJrSzVzZr;N&q8@p9Dee@|EuD#Z~z-V?S|$z2jf za9;6SDUd{u!iy)$Q3U7RcuyEOMW__#M?XUkN$A)!y?7Ehc^719 zS=&$cQwLr=QH~;L8C3U#kt!gSqX=3b@t!bVJRt`*PWKlNG@A<6i`qnD6hYd3WGr2r0~iPa zDe8{458f|PPKa0hjJ49urD$=96iYqYKKG_`0D&V2)@HP1piL1f#nuz;lGGCCDJLNE zy`pHBn2y}45f|Goq}U58y970e_e+$c2==bZE@4Ylgi5jhS9VDr89J2{5c%F^v`df= zMQ|*E6i20Kmta?4If~$D7wr=0P=rcxJnnCoC`S<-gQH!7_e&I^Qk)s0U4m38LZvtp zMY{y=mncUOoCl*_0v(D_DbDBp?GoiEg7a>)OYnY4K*()L&h3?5f>wg}OBA6}v>&2f zf_x}KrPQi{9R51WKcx3d6rob|0rh{4L=h@QpHqK?auh*NSoInSQibVkjlQyh}aqLmk37@ z^r}{`ksww3;r$Xps1!Y{5rI@GM-lWCSFe$vtnhw`auh*-a)oG?RrVo+qf+!=$Ja=H zz1!4Qv#+yK+qg-!D;wN^wN>_e<6p zv4QRI9@Rdf#7u_0M$C6Q4}wOx&$a250z(YmenP2Iiq<)?DAJ23U1;f7Ty$`Qt8LrW zm#<85h3u=l^s0&>*17oL1~|}eE4utL1<;5I;l8?)J>kaGON(A`aHjd)Lze5s-Yw1^ zBOJ7!byh@OO3|SGNwdA8sUD*JC&}j%~R<%R7%mHp~KH? zFZZS04DrrUYc%+McxcC$-2 zC!c3{_0nZ+bty%I_7m9heo0&32~SxL?cDUVe_7fgg>dA<&r>U+s7WDSqAMNC=bQJ% zj0Ii8ezm;i1Lt&^LY#F)ICS{=T}9NT5HHc7{iLkCEmE>w;k4?olRvSv<5Vfzm7ijL zEWbwb?er2tT?+9M4cgD7st(w=;J_*ly(`$%@_tF|gEcf_@?QJmHnZ&2p(l?$qR~Ee znWY^!D%xLp*Yx481Zb3%-pW>rIvP_Z=L$|o0fK*js=aJ`$<_vsFb2XBjysRpfopawNAwk6aWTaVYEzT>4* zidNnBT93_~m<{?)`p9Yu^8`i-Q3VnwBwctXh`Ai3TfUki3pWaG-$v1GWwZ@Ss9xib3(aj%~wnZT7#xUQ&<%1WyEF) zp;C$l4c*?ZZhgUDNqghy6H4vR9D}VLORFr3D>LHFgit9(YyU3_IRja08)YlOtpv6b zzoDQAl~S~}>7wY_!Y!GuWGB*M!R$qQ2l3LvaUEhUl`5rZ+Ce@KhPT4R0tj|cuzePO zZ<4k4iGN?#rc!D@fJU9WU6STnL*T72?0JD>Zz1JZvT#~}dtvT9mv@R9+`*!hqCxvv zgWcBItpR)Yn&Z|eX%AaRVhVt=5+s+ zSjb(lED;whNUdkJIE&)wY*Qb8>9Vf6l%hdce*^lWlZ5Gk=0WY`~+`P|N)Q%cdG5$>zh>CgH6@#!=h zV80d|cuZ+6p)Ju`@^&RJ%GnuuE2|`>Xx;g>_bhEJNhh$|+8^_Fg}b4ftgwQuYcP`` z95MNwQ9Z3*mqH4O2JQ2pv=Xyk!GRscwuCu~t;c7z<6CCg%sK7YBW&h`c5v91fMy$W zi|lWCESY=t^frtPObN#itnN5scs>+Smr^unUqL3HkChe1UgR8{|A(Q>NKu`i3~=SgECzDarxkJcw4L z2oJG%q-#K&W+rgsmvJs>bsTSfTjj*+%L$0%(7B{-{MQLSVzdUU! ze-c|^>Dyj?B~(jkS~9ltUi(4y4zSOF{mEX!yaxTQv!1i7>p4>`SOwfj;~Qo)ELIlu#|&44`Q<*oejbKKy7KzbKAU@XOI}px-9Tlu#|D z^_S+n2E`esIB}8QD6~u3I@23v?bR*?aib$rExaGn2wR&t?h_kr|6o+sjJFF3TC(Lg zm_>HNjSrUJ##*>b)){ftH?n5c;@3pH{DPJSzTo0-|LJb@II5+zrk&}&BJUkUu3&9z zX=(eI6)roG{JX+8M`>v}k>*>7PMfZ&t)?@T2!pU$%T=%2$m?l0j#4e9)wavByNl7p zsef40Ngu1XyriAy$imw86$SD5@7F}Vfzlk8m<=Z*ubd++v`cK^(BiO#v(`rm)l!<{ zHf!O;%E;M=qg~P-KzoKP({pQ8OKDmF*1}0E>PL5Y?-=*7t%Z+-t*iMNIP4{?#}U7%p9Mf%)IttPBW%5zdg!Ckop?Od6B3=d z>^&@q3$2XO2;;f6S0f9b{vBuc_9HJyFg}ZFN#VJ-(OpCoBVN=W_SB>ilhvzQVPE~v z?_66V-ZS5cNC5RH6j#Isg&x^FkUbQKFx_ry4~4J};Fh zfqNl9#JjeThDwyc-4h_8S%<{UptB}(8t z2oUurW~oF8oTUgNoPUMyG4tFD=c_~sobU)DJ~s;GP>B)@KhtqWI331Y$@+Hnz2W8? zq*1?XOC?I+b{!D)d$3fZ1a1ie5q4B@R$nDb;BH6|_4}h#q6BWN1QD;s#k*3861aI2 zME%-Yl_-JxKtY6culz-+LEQC2*H5(g^D;Srb(f5ycmbS55lwArd867s49Iw3a}k1nXN^ z(YV^ZtFe#GTc{Exa54$X5ueeBTq&Vi{1w!%XjF+3{H2A}hJ05lQG&nb`n7{9QGzW- zSV6}$RH6i1rFcCYO0E(m*z$$dZJ&HJyVif+>3>p*5;$Q6Z#SH>$y_O+TI}uO)osX? zN|a!aTEA9JB}%Z@u3vek5+!IE)UP8`i4wFv!m6+{Tuppo_7Cn=i4r&|2Jfo=oKz)L zi#AcbDh%&RB}&llir097P>B+>?ZS#J{05Kx`EwmAQG)hky#8vRt5-FtM2XUpEmu?V zcdim8a2pifm93^i{;`L5&|kkfS|v*0R2>lUNwwqmN~o62 zQ)sRZaJl;0Emz*FTABt<)j_Vp8NXP0_Vs7?9;1Y6;Zz+E;T&PStKa?jmIX?v7EZhY z5ua|{ec6tqlu#|4cmpCnrTMDs{ykp_)x!BTAaE))z6So1J`}b;6i4q)_gi{3B52{27j(y^@^mZIIv_mCIaC{X`#^bwEi4q*c z#pm4NU8zI~TAA^wb$z}uxJe~S(AJ92phFreQG)hEe4^an4;bE|5+&G+)}Ifj5+&F( z#HYP&`RM2-l_N|dd3d4d`1u1b_(+ioYA`FG@c1N^VO0Z!aRYk)C1pGTwZ+Mjo6_9uC! zS|eSLjI%WHJoW(~4V5rn5I9j1M7^IuB}(8#Nf5CwW6uGj{CVM&D1q}K@x0z&q7o%= z+9Qa1pNvYBz-f;l;?W&St`a41t|Ex~F^)=g{%wD1lQFLDXBXDp3L_7=nl` zG8984O5g-T5W!kPO}yoi*PB$L1Wp$O5nD@0LnTV!bU_fYwRF|6js49Ilqi9d|L{Dv zmX7&ypV2B&0w@20h^-~$N+nA07Zt3fk6g)XuYRkv6Y+Q-uY~4y@F6JoQ(}4SWBo^KbTW1Eo2a?MLM>YPC0mfWg5_8 zIbv&Rvo8!Esqad)_!eSoY1ps(M}%teO~=;Kw!b(mDu-(EYsS{n>7TqDl|!{yV}iAW zcXi?w{UbuPSSy3IgzqtR+=EfBREsTmu$Dj^_bqoOc`+u#_fRdi;IXxI?U<) zTktw-DJq9*u>}v-5_0wWlDnecplY!N57rWhiyj{xrJ-7E!DDM_=V9HWU#)7f1&^(z zB~Q)wAqdb_H{wmr6%-ah4?C|9agw&0Pq)c>o0h;pS`WeXlzOW&Sy zLX?JTv2AZ`E&2AU7%xLhZ7uW~_;Ws)yMEl%W8WL^Lrdl@q=i@`ZoQ1Hnb6TT2yp!( ztw2xO3oEnJUJZmwG`;pavEL-^Ip?3gwnHUK+%X1wOw!)@z9(L9Qi&3)9)8Ue!2BL z+tj2IC6>SZxF>=Y4g&Q`B}%lM|ClFYOCMtcl_+uPxJNw^X8V|iN|az2zcl0}%Z_om z>euIIW2*>gwe0+ePb0RkK&nLJy<_CVo`~%$5Gqk3JM-_Ji0vy7Dv5|^mU$w!uRI|V zB`!V5h}gaYp%Nu}>|#W)ukd!^jZ%pckM=Mk*jM;{z#F9!B^Xm|Um;g2QG&UR?JF$@ zBuZq(8;R{J5Gsj?;(NsQl_x}^1ix%-Ux84G60AMJzQViu#@|PGs6+|Y(Ad8Ewev=) zL<#V0&C=Uv;QN3AXvczCx~$hDwxRzY^>#5b#E+L<#m?v3-R!RH6j?$JoAt zH%cW+un&&yD|n++q6GW-*uFxhRH8&_OGNe+2$d*N+AEQL1wtiC(Dtdfue#mTZwdNs ztfpGJ^CmuwK7-FgZ@@2Dr3Lzoi#GOj+(#i-Dq*}J`aZdlCqh4nG#Q_^#L&wdP%WIifi%LJJJu4FD1mb{K!kOD>QL;Jq_)t-D$)aqbUt6;^Cv_VvGK<_ncjEu2OKB3`jI zVbkuTl~665cmyJ>*h0z2v<{94)xvpFAmSBU-EQ7zfu^BaIOPgNSh0mK_>09;nv_s2 zoYn;*Ua@um?x#eAYT*nq5Mjj@(%AUk&QY3%YT;xv5b=tw36FiFLkZQw32h+4iY=sZ z)*a8!S3ac*R!j?AJyrp;}BM ztk`00S0d6nrkihf{FYRP%VD{c*WM&c3&QqL$z4P!ip`vD@{YSR(%b7%+lG6B}?{gQi&3* z`SFUa+wb|{9wk(Zzpk)i3%UB^COda1p<4U}$1Aq>-YAc9rCMwy!ip`V(J|w(C|9b* zmME;)!tditA8Z=sO10S9g%w+TyIKy_>TwWuJEp#j&)u~C9+fD;UOQf~^`&JujZ#9j z*lWitw(e@WYNQgX#a=tC*h0yBEbrN*gle%rk5_C>S#w;65~{^sJFM6`>r?0D{BDnN zN~qSYyW^ zQ9lQ%5+yGE2Tli4PbzB3oX4+Upb{k>{puP|ggHp8hg&oE?9nPwV%6W@_eA|1q)L?F zI4aCR-ssXe_4Xt0rNxTzl8%t3|Ix-&!AFL2Jip5~Mk}FOcMRIpfAioY1M%aBpBbfu zYHj>uBZ7|%#GY%;?@&UuHh#v4*hjX-G21moglM&VZZn^&*hjWm`!}OBRI7b=BVr%f zs9EGpN#T>>yvO`||MU;kW@m<9}vZWuy zDWiM;MIrj(Q>F3zh>+sJIT#KDxq4eF~LWMZ@zfQR#C}Si?uTLk*z)8+9(ax z;pXcGY6fQ12t__w~N}p!edfcnD)m zUOzskEy_L|T1w;mOvYrrGrk}~Dp3Mwbb^RI6R%&;b%9Ehm^x(}pWB$|_|;KON~qTI zuWspy;4fi0l!&z4d8Wu!Ox$_t=j)Z1zTC+Je51kU2c z^VoCucH8A0Dp6wbd24*GVgmI_3Dv@x!bl_d6Y)KEdh?l)Dp8{S`geR9fx!0|@bo_O zl~Aqrek(mu;pLRnRSTynBUdpoWZce8Dp4Za_(h*a@V%lOM?U|j4kc6z=SU-sK%g9B z-@Rf~B$0UAkNJmBqrxLBaj6#0!$ul0anh!@+^rHNT6TZfrx84NtnEsu7Eb9#8Zog| zkF!RpM2W@U`>RhQ_VwNQ)mu80P%WG`jx=Io%V#GvsU#wfxzDE&yo2~2j}QH2hY~HK zg>%-CMj%*nl_-JRbwC7vBGMT2@#&*fqD1?$dws3~fiyNd;G&37t;LVs&7X6?aF3Xf4iv z5cwK5$ed z5rXN}dxVuxE#@{RT7PhGhf0*-+l@WKS`NgeT72sjMDcAQQ6ekqLhM7{cF^ZKRH6jG ze@qPi{%a#5qNuOXVr>szXMA&%Ly1VMsMCSKH+R3N`TTuAq6B|kv7g$fA#te|f6Xz` zZP52dsU#wbmMHdYPwaO^hZ1akyjIaF#e{3&%JvEpCD`)Co^98PmTe*=O0Y$ZiA{cd zZQ1U6qG->(R?&aNzVPoKaM66W?T~1^>=|O>gtezfgle((iM{9kdr0c4#ojI^`u+KX zQ7Tb_{ch}UM;c0~7W?2ppeD9{@Po2Hha@5jyCit%+3spwv@)PYTOuYpJ8mDLl87km zt9qZl610|}MVqLeP>B+>?P8z4v-;+%LKDMf*C;8}NHXL}9D*z7e$Tfj~Lh-+JaA+U<~NytMk`nFiD=B~*)} zjF@=7_3|c_L_{%;3Ud=IhY}p)c&%cz6ceAEHM)u8C`gpxxGl_0FbySCi(|Mz;9Ye* zeeD93D8aF4Je#rp!Y_|ji4q)t#>6SzzSg0HYH=JL=0A`td=Dietzr}&h_d7&QGz4= zc*ewe4LVe!1U(2b;XD(gl~AqHOHt0TupCOLR_PTf36?`8O3?EXW@WGfV#q$j7pg=F zdU1@HdP)1D`(_orbN0cwOMdvKUwfWy+`qH^0)z*$-3|4N1l-R(^a$Q9<5#Z{@a%K z|_>Mcv-g`ei1ypFJow+tg!5m8EBBGQyEv3sa(%9kO=j6}bGRw;G{DZY& zbBnxd?JL7|L@9BpD_w?>tDXLpH-F8Y=;+Jg>S*~pFTcNww|tH?BBD|Y@v@d69G(8{ z&-ZYrqr3CM`|Z=$|59<5Gs5_t*Pj=zTGmDxjWB-ac3${*MqJnYfV+#um&4Vc|2dey zoQ-Q!Pbq#~<#Uwd+e*0n)@xZg>^Z`6!%?l}jt|`Ub;T0g``G^Ex)$Wb-!bE!BW(9U zDv@d_jj-MB_)fRed>Kw~ckpD7yyert`Lv5~dC$k|@3M5yk%paHD`$Uprdo)XG{SZh zrrwW(TrqWRQ8l+&Cg(ubQZ1zswwAhRMeX=BK`AtLzu+>Aa%iqVs8(rTY5B7MzJ5%;U|dmm_qerYb=Q^9y-};XF5WVXl1D@- zaau~3VapYA=GRo`p~Z1=mG+#4%iNl}|JR*)uUchGYiG+9gB7)6a)7I zD4|*|T-v4CM$7gJ?@A>~lwVNG;YLPzri5y_u-U;NhW@T~e)+CcqC{DHK&<%a*pMqF zRLh0SRwBD|?w3LuDpA6yB+l8RZC- zC^7GE&1Rj~rJ;msxp1ggFTC@mkcLW>nAsx_zmF~cv1Lb@DjNe4_WKc`94b*lEw%7D@CB7nEf)^$)uzWZg_5g8iOA|>BK~)- zglf5PXm>XlApM|9lyGC`(0^RG?5>b2B~&XKZ7;iIfNy<#-BpPaI;LhZ-2d)fDWO^j zm;K;wbM_AHl}eO|#^)gsmxdCm<-(yq?>nj^q@fZeoYiL|q`KdS5~>y1i5EXQH@qvA zD4~{GCy1aQ8Xy$A4YuMyU8JOYST$&0!gaMHUgI#FbF#GK`WJHnoi)%bd8l zv>as^X+%URad9bKhLJ|UJ+JFL#NC4F%TcxrF0P~{3a!u1N>pkoja=>S?kqme-M{10 zD1T8-lKg_huQnnowUkC0;jcaC&bcr)h{p*W8<1(wbv&T7g^l)ppU%=#RF)j6OJ7nx z$J=$DqCiw?DQ)F&HIRR5h3mM#3?mKSP6=Tay^AZM%dv>l4Qbd~M;raWf-}7*WIxC{ei{1Dr>uoE9pf;&-s=k zen6s9OKIfl!tD>qfBCK6_O2?&98OEe2{BPhoR-pM7-6ar5OC$805usX2 zmtmw)c($!gL~H3i%}%2IU>U9>N{M^#N|#}LkD~6{yDG;VE-tN0<#P~4-8G_8OKIfF zdA4h%XS?hToJ4z{GF(TL5|_HtWf-~o*W{`BWw=KOe>#FJN31U1GF(TL5~rnf8Ah(0 zH>x@KuQ=v#5*-`pSR^JYwUkC0ZvLaQoG~eDyOWgtmCJki9Oa0JN-d?4MlsuGU$7i= zKq6y<@;TBdX8Vk&)KVJZ<2E`ifB($FW+>mTi>vffIIS{_G$NvuI4z~iFw!VIca|&n z%PIXyT3^fONFyRDwOqXAbEFae+TGn};asiI?ryw9dxoIzd!Dl0rIz{R!iY6ZLnWFX zeSOwPopjj^wwitDUNFt*A)z%RriHP#otc2NFYz;PE z5)sbo3$tWVIYbf>u2l*%bP*wvh;S{Ojp#L3{ud>Zh;X)qjnC@{kwk>EOUf1_WD548 zNFu^nIOW_+Oo${R%09R*S0agsvUjc{L=q9M9}IOjWXqL9BoR@LmXO9Jhi+N63}LjD zeDiV~1>%SQ+}gK3zLtn2O2a)@E1daCeuJeKkLhu4g8F8^(+kK}w9s;`osHFytNV{U zB9ucUQM=+=JF~(;Y&4_<$#E2+I#ZIdnJA?RZ>%XgWrCOzJ2jY#vyOeJ?N<+0uI}yZdV;(4bwTMtH z9g$`K9(7xFu2icW-64$~2A^6@s8%^n1o8G&W6GX0%9U!lw$f&oK+OHl)75FH7TQYh z>jUx4`+rhe08tvMRgNY=e0S@wSLaH#%5e#Zn=fBh{dQHWVVfA`O0?`bZN_`YUe~$! zoMP3B^tBipls@+IIqco}j#xsXQp@GNe2#KBuR&+&XHZGm@49%)=SU+WDz#j^<#VLr z)~e;@>bA0lb8$)A6~ag(B2-K1GK@5aeRz%^7tH;EyREsn`5mhe+W%y?z0aL{f3&tC z%YN(DU!j?6x!&C&En2*d7`Kb_PF}lde7L)T_}zCexciG&%<5Dvr8VtxBy1yk?S;#p z+Lg8pqa4N9*@#l&w3IHxcvrecqy7vHKq+vT0CXYAb$PZd-s-?81onH=Y5^}Y}ko4oEroQ*6HgxMF``$?H>5j+eVCa zglZ|RClF;>=l(POyE^lo-8!+O3UOiI)#A(U^x>`_@9w_2?FO`6Tdx+x_HP=2{SlC0 z{}^cO5{vhe^`AJicK4UQF>=4xcI#9vjWPEPM7PBldFy*M(9`X@v1S%Z_#L2w(75Z@G8o_F6%Ly`kJi<@ch>&QQ05 zqae0_^ZDjfOKF5{C#$UG%(-gvfJeqG!AekQEn7UgTnUQj(R$H5)k0}WBMdsem7OKW zideok+{DgzRdFkO@pd6mT368GEjfF=_|sK|T&uY05B7>yH`Ws*Iu1yI{;5z7DUv$Jd1X@S)5aeFYLJrwTLDLl7*6PLea#8OA7meRUs z!<|Qd=40cL#<91~%FA=L+-aIPl?(CW{0g4XWoKFJc9s!S9iduEBkXhQ&*l8ps&&5g zd1b&czAf?b{&uG&dafG6cy9Zn+TSwbs{@azsg|};+A6vEk5@MH<#^!P**Qz@PY02l zXb#<|Xo(R|J3{lTG{VT0o&7m-{j3aQu??U2t;8iX}HcJAMhC z`(KxPo@E2F=R9%iO(*85meL4=&N5jYopbjI?w#j~X#8rq2HNhUm(|g}W$^J9TF41$ zpDW)o;CtI2y&pECSYH$EIkoYBd#+kG5{~C1t+t=N^D+K6c=@}ouhPAiZWlgsh#jD8 z`E1YVdj;|O+v_?Zp_bAJN+S$9UWXjD zGR11_ua0$lpNrMl*81o=WUjiV7INjaiWS&+o@HBn`%GU;_Urg|4d>?}b?h0_)Ata@ zbK9?W(Kn5_-4Uv#w4TK0#^-F29dfzQ68?&9c=!jQF=B^gE|CVzO`Eqst7R#@AkQxpRA}A;I|t z+ER0Oww-IR-sK-P_wSBKwUkEK+IF$}a@uM*Lxh$d&McvAXXlqFp;}7Q0<_aeu9z}4 zN3P!e)tYAR=0GpZJroaL(-igXS*Ap)g?dFAVbIae7jMa+gs@n+kL4G0Vml}%QZ1zs z1|8+f@BcvR*yllu13OWeTigF3<>*Yclt$S0u{^bQH(z&0?myG_IIt7Z7qPbE{3F(O zI}2$*mtmfGZoiqiYH3fVeV1#g-Pjr5Z$qkgc) zo)Z$K5eAKzvP^mdZy`hCE#aaq!5K2_Kg>dw9;caY3AL0)*iN8%eedghEqTH1++ynJ zg=ynrJir`U@4U$eExi+}?R;`BTf})Uhm^{hATI z9D!Z&)KXeU`dKDB^_tPXqLuNjzO+$ncda*&oqE27LmFtwQW`N?3%7LLfxhncykk3G zOHgvuA8ie^mB_Lu)*3P8kK6gy2Wj}$M^2ZD>Ra|-uU_rn)qWey$ho^8=fGi4J!qUe z$Nlwo2Hh+FG~(`TMy^^)BMjP3l$$qnlN{gU_?-{)tq)3w)&~|Kw6Is3)}Za%K6aQ9 zhYmQ*?+vFGt$Vg`cy2A+pZBzuVK29ylP!ZEFH5V&w!~UEX-j-7int(&Xc<#SV;n!a z1A%d0Ij(VI!*V3!_v*_Sr>0sQ*MR1D$3~D{AG_CokEy%3F?3NA;VI(Vg>A^UYj)x( zPZ}}LjiFUbX+7y7%Y^W?9rX&o3C4@B#+d92Dxq48m%k{y5j_(SU%kDitpUg6VSLWf zHgxT;y{1}9vn8^7Gj4FBY!G+tviTxCJqc$oAtyM;NzY-*G7_5%bcAXZCqm&QCBy{U zPH38T>nxwfEoVNqi0!WTizy+eDrMP;1##&aj!3i+FX@nmd%M0L#23^tfcp2;@0Vq+ zmUsfSM75OGF+*fub#niyAN}ZVVi{9qYG3)i$jGnXbF5=0N8{IQdyzjm!Hpu^Uu%yk zzUM@}^8Ks$Le)p==8BY1Eja;E`{2lP=SQhX!;fDJ-%|Z~OX3~uq<0Wnv|cz8M)_W_A__UeTJhk4Hg-U+o3FKLAF+`ZjBZ0+vvUVgqAHxxhu zJBs%kz<m85k`8}JF5?%rR4}Ofe)a4lcRjR7{%i`(y%kO)CZ7iAzso5n-3r_d;m=^UfoHr ztUo_Z>^6?{?OZkS0eGtqsl)0^X{2GNy-6*pu{OXbqi5u>_So4wQWI;cr8Mi9od|UI z8XK$qa?Bty{`Ya{?c3$JR|Ijv>eJr@?;EiZWje_o|hhM=Ut{H~`*;HLgQ}&p-caJ!6usZ#i3x6Ik?#uMR&Q6~yRvWo)M_K# zfoHW;3ppW;uzhp!(EFAF5`0@d1qxw2w=XEO05#Rp7DwBd*q?|~vJe-1lX}J$!gyZq zPgE_X^}H=-SA~(VpG!qt_#PZDqX%H`Y`uYuwri@z@v{G##c9DdU%Rs#MWFxq#+%MN zD0fle_93JPA0lreGJj%IL9Bb@>Sona8e!1pPt;yb^GjO-)h-tMD4ILattQT4amWJ32 zovD`62%GJ*+yf_DJ-Qb7w|1Kv?(eukw5@km!ksFvLNg_uB_pF#Tb z8hdB-EbQCS9W(f6b?J5?+C{zcujZ!Y##PHV|~ISX6M`)3OK%6d-q_0b}OL}`TauFMt{ zpG>Xau_L_%Z8)ty-_93SpUp>!Po}0?N+XPSXuW~@mS_(mS5t@mw@=U84=xPCYzFl$ zsg}}OJ~!qJvj8=E`_bQVt^igTX9vt8lbHrT6X#Qh)mO}hgXSDUVfzFNxkhi4eQQd)PVGUZ>G86+E9;gb553MV(E>D|en(eZ8#Qdh5z!2m`uF4cDCcMJ zbr*hy^gck;4BvLit$*In;0gE{qBg3y;}HG}#01)W8Ll7ngd3mxS$#-+-&fqj>U%X8 z#&he{lt}MwBdzNLvJA8N_zgaP-)7^PI?n8_x<}E@@+NV(TMv+GAq~<9+sWLnuk~rT z^(CF`_0e-`pBVRpuCMh3`dZaenl^)tSnl|jS$%mvD2LUD)bVX;8{#)XYtX*A*ooc> z=PxIv5tIF*q#S-k4+%!@%oVH`mcvH$Zk>!T2iD1?T1q2qwvV(WIa>hu^mNq77Ng$3 zt6EC4T`}*VvlD%;+>A*LwFIgA`cvEp>@7X9=d;Y&iJow?GTze1yYiN$&|2TJOvjuz z{LgXwAPxVezHq#6qtKq?IbyOe7>zj-Eu|5*-ayv@;EY#D&@QP}tk$w0(R)7})&Z!N z(t28K+$QQ6K(&<4GHnx8OKBZ5I6r&gf!yMokBz4X62Bt)FVTm`b4B8_93N>F{!336 zeo_0?>L^vm;pOPgjd#k?o%fe0p;}5unEVJ*3Dsh}^hV*! zA{;!z*ALu$y!wji1!l>Sww0Vda8DeG%HR?6!5mF)*cjcg@s1nGL5 zl29$Bqw#L`zn_>7VE^B3S5wb*)lyn*?JN`fDjIpwT7soV`^v^@ zVqZn03EEoF0*&uscB1;o*bDo1Nj-w%XLMgMSODGwiMZfBQ<{CdwQz2x+P___jiT=r zqaPhj=xE8$hI;~Qqf#xTM;c)pf4JYEC-56&?~LCa`*zeNjz7$%cE3SSxc=PtoUCyv zjWnz#x;c90s+qZh1<5kOZ_IL(bM&5YC6Bz$N+XOk%ocT)j3;2pu=ZgE4QnO(KGsBA zStE7V_nasPwGc09gstbCT#V=sc;jksg@ZtgtUWS&J8Rp;2jDFL#03d!A86JwYuj&q zbDj6SUg}mf>R4Y#5Yf0q*M<8L3vz{VhSKUA$aF5%&%_~Du(nwfVNJ3o*4yo>#W^<6 zoQX5LU42VB*Qi#pTFcQ2Q*VW%9I&00*11X7;}kaByGu4(1d9yifaS%y3u{s>wP5w_ zci(1_^_tR%$!t+w5s%aAA;IWQPsc|X&uw(4E8a?u{6kF7tj2E<&Mi^<>dLOkJ=vRkrQ2I-pWl{P|>Z}aaQkvd+ zvogen%W11YLQ4<*6>U44`H``6u3Add0<<(_ZX(z5`QoQ1d#f02EuQ0D+4w`(s-;?Z zKhVN+gsr94Spa<}^gzMCPoGo$EP!e$t?$t7$d#4L^pT)8EWhX&pA+=82%{Y4vy`=J zovNiYJuFtQWUk21t069LGZZs4c%%9?-D#mRYZ-l8ov)J_I=3&i@b7N;k9(UrV!@cK z{qAW#?-#A0K$=>_pGN2FT#2BZ^Pqh#)X@t#YkU5sToJ(=P zXZ;oFuPe)>ul2uL#D$unbU8!gTLzi`$d{jTkpIqTmpFfp7Kiia*80dCORickrhJT zXNg>SiO`t~MyFsxowQL`MZOS!e5&C`s7#Z=TZ@umlVG{??WtpkLFKQtB)mz z$E*F$+~>smkX_h+S!dfty8&yer8M8J%@wH?&YldmGj7g8y!hSm7Oi?KT(y*DKWJ9C zj_8;F(LC|6Kh#?vd+2pUA89G=!pNanGP)0vCG`6si}&OAK^E_=VjrYvDb4q0HBo9w zo?Y^({{|z^fAhW`dwlG3^1w-N`7pjL!tq)))lwQ^lmjt&!uw>fno4It)izX{F8J9)=fcb7f2oD{tHLf3Ev4x@vz8%R#j5YU_(l13cEvBs*4#y_SVfEV zm|qa@%D$k?pL=Tw?;ZKY4Pem1SdF)V+2~FQ)#43czO-U@Mc*Umnl$(gxuOku=NdLE zhpdOoRZD5EbTbcRv@50Pqu^U$&*1ylqK`7qgm?#i?~IaD3neFwu=UO|ua+;Lu-ez% zZ=Cy%JAwaQU;A$OnS~J(!ddq9M{EVeBW^sUT1q2~G!Rpk-M!Y@oAi~ z^zHlZSoXfxdVAzMK8!RF&N68ebJbEBVWfeW;+6f81yHOILW>jI3}TTr)25;p;zg@Q z`^wrYnK#HeKY$iMYq-{YzY@@o)%@DQ!V8Swfzk*gJ!?y%-OFNSu(iXC3EM=Q;gxyL zPSwhUM%ceAH$R+Z=e=rsuyVILntQF_L(;BuK7uK()Uo*@8_Z!yket~ zZOP)}ACKA(JO_d2p_Xjm2yJCj8tGZF8UX?{VoUZe4c z*v=fw!kXk5*DOmVREzJ8RyfLG)+^@+u`5M;wW%-JXbYZngz>IyJp&2sN>MGP5k?x; z50b#FrN%`qKQ@$+p6kzxy)u}!R4t`7?JU#PZQA2-y$`&=aUZ3t+fps$9X%OW2$>IA zeuFuGMesE07vwL>JdnDwCe=b3q!G4nE;9{&G=cYyFQu)4wh~$P;>zcJ>$7C|iN5tg zT)y>jC-;!nafy4oVGh!-zXIWBc+?xAUW#}Xl4xoHwi4fxo6v~3r8(!fBM|Erh9v~E&p(o z-wnzz^t0^HZ6@WPez8}cYAMaI5$9iddfxNUdCl0*b?fw=ZQU<%D}-Dco1fjYtz)Z^ zJ`ILrBGpowVI#Wixlz90xWj#}wiw&1?ZKx;`*`0utXJE%UmWAZd~U?X!#2wIJmGL( za%v$xY9Y+$MjV+9&)Jt z;wKNx${)OI>39(P9o)0+j1%|r?`pxMo^9v9zn4#sVIzKj|EzrLbxX%1E=p3GF-628 zXo1*%$sRrpXbt+WJ$)JsN4Z*rG$=`F#$-g7$>-*qO`hHft#2OPvu)h(oz39r8B=<; z?Kf%CXfcTlt!4(jri`J)0@w7 zrHACs_4~Ko^qQ69xeX__HNS0PK932cK`o^b=5r%vZQCn9W!p(Uji-iAZ0o(pWU}ND=SGZQ(=-3go|F9VgIb7}S_t#G5lbE(*m>ienf_f}^KkFBj%)4xth}vv z+d~&wn9q$k`^kZw$2$V$pcdk#7Q%dPMDttS$FF(8-R15i3y<&JcESvc_tMthZP~dN z=5r%ney{uZ4;+CssHHT*d~SqmuWGKn@-^|HWBa!Ke3#w*yE<`7-?rty9PYz>9ur7| zT8Nig2=loSTYUN4+PoQ7+t<(NTmB}xoZ8p_RuB`P8{vLYHU6Tgg?OojFrORottSUI z_RN>D+7G44(#THRzXC^=`X;k$n$7 zj|tU6ywpONv=PIPT;1IA=V>`4Y>`2~e@?Hq(~h&YozG)JwUkDfv=KMBHCX#~AK`0z z^JAlZ`vI+m6UMf6+}^`~bB1Fg)l!;aBZ?l!zboW-_8e^f!a6tEB4L#+=x>Sd!o7b(3AYTq88Gl7Q%dPM0R@r+Nu{P z_%wE3+NW*PAK5qf?Djrwf8O1~d~U=+C-krNUOB<1K`q2fErj{ph?72^k@vr1j(=Bt zC(vS#jJM9P5i{2~&&T{Zz7?eeT1qo)#O@DGtF4)^+7qwr-?#0qovf`rcvRoEt8N+Q zzdxTF@%a7IYL`u0?Q=yfJInRw&Vq$x#tyyOp7_4mZM6E3Lq0cR%U-?m ztG{6VAhnc6n9q&4;nfLw&*}Yh#6{Z~T0eZOXWOk`H=B`RBi6n?A^*#<{e7+|NomGp z#0P^<%Fj6JiDqcgc19YPUC^^_`oYVe z>s9uBZ*}x4?L15QOD%*+8{t}?yywaZ{+o031Dd}(g!$Zv zn@{eaU$A0=|K`*}ywpON&yCpdxOvUbUw*nzWBnByly&K?jt$y+x^o$k2A>;o-k0Y! z54!4fp9ZxMFSQWnb0au{gk+1c8_1Y*0~vGL^O!*D?;K`YN+ZnYM#R654N7~5xk60u zpJUIBh<_hea>Pq5gh?B5*7m*f%X_m;+(6pIP^K9>*mEQHaifVV+-L%+v*d`ES_t#G z5wV{k6F);Heg+F05&Ic}*20?u&9D*07xcdmd?}94P+E@L_}qx1miXTwwUBpe@m+y7 zqOh-gy?W*1!EINL8|&-R%G(CF{e75)`P>Ni`+!B}-xakGFSQWnb0hxo!tDI1p&NQ1 zK)-_qIa}1Nz;#;t9X!bU1Mt=vHe&jVv-7sCx_ci0CD2luVI%rDTlW!nrZ==Mx^t7Z zdsc4i)9825hHaB(@8ZkEun}vVg}llU$O$DW&6teX@8t>Zd=&PBgZy^}{lmuwNk3>| zBjSEAXf@p%Xoig_+AIG(F4-}BgG*b(x8ZXmu3NTr{P^N~Pz$-D7Q%dPL^1yGCC9Ib zb{l@FwBh+YCh&f!g?OojFrORIQv9MInX$vJ@*CW>Y*+Z)i1;^XT1q3l#aMf8MByna z{63lZeKPU;SlEcd8&&vyg4Tjbfo9kUH#W#IHbBWQeN!iGaM7CmeLFxQT%F)GzR%^V6^?_Ee#7BQM3&Hd+_%R zE&S%;xdY9x5zeO0olWiS#LF(oyln_AyoJxUF#j&YMikbPw-YHr8cH*4L_Ed`Z7pj% zXtu6K#A6)$MIl$zLYTA>#TWFgD02lZd^Py2kp{y?6t%>+43t1iX@>pXvVK)RSZG~2 zZa3#!YAxEqVQmvfHd`7ihqt}i_h8=}wAW7SGT7hs1ESwSK`W)vq9SJ7Ilwd)7ICHY zMR)Ge_R1p%{vQOjKqIEBZkb#`ywi7-Z`)0)sqOc_=nJBy&D1hx1aZ`z3N>(~2Rbs(XK)~9jdKCbR=ZQsL% z;h(7}hiFCg$~I3|5QU^Jy~3aTp9%VneGXkrc+=Gczkw3_{Ci*5u6&__pv2-0p6$1< z+^+#aNhNW_z=||H;Up>1yxOJV33n@3?cpV-`g@U}MM+95Jbq%^@{9YqG(hzH!BOS! zgOZf!`|kd2uRXtMk*lSDnbv`~=Cz8r5T+Kw>i21{b*|jGlAsm{_4~Bf7Iqy~nJa36 zQ15wr?bD(6`J2Wd(Q;4=&tKYdV%tamMmbROe)~RCnJa36xV!hnw!dt!SyA%)pFU_r zRmrIZV#*E^+phW?2&6IVm($8$l;()ncO>BFy_vS^t`teU@kFKg$)B^GD z(G%O6Mv}Pa#DgmdYJoUv+QhbrQ$VbDHSsHNE?7{N2DL!!d)&mfH@*b|b@!8tzF(OJ zwLskXb@z+90>med=<@M^F;!_$3&af9VoX{9;!{T~p1j_Fy;@0Wo{JeTS zK}kxSdGxrpBR3jRQF2OBV#btlZC{zScLhO7N-Uf-&d*xc=Zcb)*ze$RevDiHb}31T zeg}NtCfdTmYiB3)?YE+d-N;~{EI(Gv>epJ^S3(2d%qv_+G|&x{=>@e zK`jt-pBvxy_J_FJ3Bz?79QW+cI37DxLl##ePsVTq^~uJ#!F()eNYY%zy0zZ zWjPp^Y9ai}#hNRW27lB->Z*nC%xkn2ee~R5!%>nFD{s?xWhq!1N>B^*mE-m)T55d3 zL%;pgvgDLNONnb9Zk8{&^vaDZ32K3UX;rh-l2b1pUrA64#Kl|ZMNP!p)pBUAs0Cui zUU^a5K`i{|`{nmgf?6QjC+Ed43MK!`$2V2xidrBpIy0AF?XL4~D{WCtgIXX?xHOlR z;j&@v<=8+8YJpgPdoHcdktYnPB&Y>q_ocbCa08~iT3K>xfp}>}F0JTUXWvno2DL!E zxi*)UddA2RmG6pLAjbA+k>22Yzd5-wSJVQrU_eXJ2Ue`aC` zACVV*ZJH~@<>Pg}tmPXYT81r+w3aMXts*C&&HHskML8(ZyjvK4rYgdGR!3M)Bn`fW zs<&%#Azo@B%(w8L32K4hJ2bmwyRYn7{-QKj)bizUqq~lw6Dmrs1jc~S0s%kMUC&mP zoDz)}VfdL&d8&$_BqiWyTJvZXK}kx$&veA!st8I_0)D0&Y9w|&eZO*4L`h1(&-BDy zAkun8NlL)a^x3bOhSpt5QUZRaz2{aDl%xdwOyB!{6+uZ#z|XY)j4FbXlz^XU(buX7 zN>T!Trlt#HS&ItzxaJ z?UbYh=BBFqK}xEK>Nzh>Lut%SRriBRP|MP5YLKgiD@_8elnAqZ+QMlXN@I<1DEUU8 zt}pwjh$ystu3Q*>dwoCn+$Fn+2Xc^jAO|<}Kn5+PFS}rnj19CLlprTcY<~7285<}; zNlM&0eUOX|l%OOfzIpT@85<};NlMI^GN_>k(j+OdVA3EN8)zDoqy*Q`)c*!4NeRxx zBlgq-X` z1hqiCf6lHAJ&=K*7Krs%?Ap)+83<~Dc&lSq@j(9dEcHMJf?6Ohe{R>pw}iI+`2E!b z83<~Dc;=H`#eWrhAOk@y5M1?SwIudH27+23!rCb0D)vAIf?6OJ9zVFD2ht=OFNsDT z$Uq=oXo28ry82%&Q&%m7XI^8uH6r#vhH@}o5V}e)9zilL)k2u-K}o1gz}M1Hlg2Qm=U0&&8nLmGM@13@hi>u(>@&;uC=YJu2&=@4n*Vh>~>s0HGs6+@&I zjXjWopcaTX*A8jufeZw-K#c7%w4nzw5Yz&(V8BrEK>qS;>VXUdwLly^YN&W17yeQ` zkb$5Uh*$O>Dpp49feZw-K%6*bs8|`FdrLi#fuI(MhmIX8R>tWQ)B_m^YJuo->QJ#V zVh>~>s0CvEjG+xZkb$5Uh=u136)Pk5Kn8+ZAcoEw+Ry_T2x@_tJbP#Z&mCJC)j}B0 z8+jl@8q@-THEgz4EgelzqVXb(aY89sd3NQv z?xlr{HOchcEm*mc_!Hw*dO<6tt5@kUE-O=@vDVo}Ea|&af?A;QJd6$Sp700BJAFSV ztMq!vD!r{6uF?xyDP8@pCeOCG?Cl2nxl6W@S`x3)3k0=5BPP6Q_qq)mdL~Tb(-0zmY^w$YB`Ja5W3|_S zk}9IwGofiHjo)K+$(5iM(p$K)M+1TqXr)B8XF}6Zdf|j^Bn|aUL`0$GbLGO-o{77+ z|Ex8vjS4HtKOEkrp=Tm!DXlBXW1E^1XCRl&qm=!XznyeG@p*1F^>?rz9n?djRKw)VFYyq=fEJNIetwr9f~MJi=Tl zZ)wD9qXI!K5KZ@nU0bPVA`sL9fn6Th2Wut2_$FN&6$om9!2XZmnYiwBT^kh$YJq6$ zx`Ej3f6HFF2dP2AI;vU-bMKnvD)vl-G^hnacetgVi9k>bgzoKYuf?8;Ku`+=c0u5b z1N$EF+NeNK3k3F1VCSrr1OMU=5-mBk@LYE_w%20ML`Z{LATEDygNB}oKu`Z zY5Q6lv1cOK)Jk0Qa2NT4v1cL>)Iu6Bt?JUyGZ6@Cfw*|rU3SQGuWq zh~1ZVl@@N7BXw<5AgBf6#T8wp6&-zsu8j%=wLrYNwyU(%@!F_BPz%J^9^D#xCIUe% z5DNx$Yv`E>1hqgMJgS?sUPl!zTDLS5Huq5|}r{IXv|QB`JZq zNu1(SPf(H)nE$kMKhkk6B`JYTp9Uo<@!@dHQ(zzDZ{3W^OQ(H#ELduB9Hs9K zbCWog&(b*cjcv-+JNgBwg_v~LZ+mV3qdH5QK?!Psh-WR468<33axm|Bj`>LJwT50i zVxa_DN?<;+W6^FE1SKhf`AD26Ri6eWDS`P&oH}L1pgX#h`-&(@3Cu_0jHLQBC`k#- zN8%)5_jk`kDY3@u#Ok-L>8rz9mX9~oLvEjcAAf%(YlmYR~3z( zU_R1%oV0hQBqcB(X}xnwP?8dukL1Z;ahpgT#zk=51` zB`JaV$ZCs>l9a%FWUw;yn^Te!n2*FcBlRr_77LrT}n~{dz2el$Rj*fZS7LN-ZCU^j3h3po(f0*!DZ3)v*p3KlY3hSXYOTp+Lm80`nb*o)lALJql7 z0y}`iyV7q?NtyB?l_6%2lK}w*d1ojM9*Ahxn0(*uVS;!_y3G5jTwLP|w zO_CDWGaP!G!+uyH|u{q_%AmpxatFIBaa=K6{HG$=v5N(?#qQjSUJ+jLN-ZCVC6_73)v(oft4eT zEM$|U1XhkTvXD)Z5?DD>-TF|H5?DDBTDU95s1MmBDS?$E)fO@(DS?$EjVxr7qy$!u zRQCpyqy$!uH1Z*vBqgwNq>&HVBq@QFBaJL%lcWSzj#OJ2l%xb!jx_QinR=|(Sje#tIS{(jLT|{6#|D%j4JCNfPJLfXNlNG)JaHP7q=epZ z6cd!B1n*F(?+qwP3B6qg&gki((l2Wy6S&} zl%#3sJwI`6rz9nKOHh3pl%#~-+ZU%nNlNIgJ?*vFLJqeHYRP%$kNwW$RTkm?IVEsc zVg|s0wRn|9xDQf^nb)voNIfi!3-MA5VZHCpms~95kSis4TVDP5pd?M> z%5mEk?NwS6m7o@A-ileD1|`r^Lhn(Gzd0o-!CM&X)1V|JX2|WQ?X}p49PUfiT(wW` z)6haTNt%Y9X;6};@n&(q zV*U4^Bqhf7=-Z$-pd=+04Cvd?LN-ZCggf=px=Tq)yi(lfS6>cFQbO-bjo%d|DZ$%T z>#Yn*QbO-bjnkkcC3xFveK{yeiG}C&ZD=8zBqfH<>f6vlHc3iMp53>wGScsX+Q${9 z{SMl$TycRtvBBPrcSr}Vl&;<(&A5;&O#^#ktF3S)s0A9&t9MRfbu`vyo7Mo?Aw96+ z4(Xtk(v8<_ql9T1T*YkPJl-K~se_;v!d#7QM7%>9r*CnG^lp9^u20XM*45}9lb~fM zbQQGQd0$-)?8)cOYbERis!c0a?)S8CU*!vzzt~;b7qR{fWa^dP7()12M3nM+=wFTSPyawqvS1qM6LdK1*_2r-h zX(*w$xW>I2B`JZCe)mhN?t-8sCE!h{zCD7Hl)%Wl(d`i?NePU+8|{!bNlIYk-Droj zNm3#npU1aH*p~vK-v;Az+&E@+H{Kx~2x@`Wn|sq8(t)5B2)!e>y%wL{76@vA;BC8B zOTP3S-60(aYJuS0sYb**qys@M5PHLEdUjhNs0BjrMNW4}2ZCB4Fbd!Hi`=~&?~o1z zwLtLRU;7^M4(UKp3xwVd9REJ}>r^d-F$%}6vG%Uw9nv8UYJtEg+-{G+?>s)cEfCZK zfl+v)+am%&Ef5%=GOTp4$T!@!i2-Eh3 zZhCt}u&I^6C_H?@c!zW#sD(5z3J-UT#J5KTf?6Oj3b&e=_8-izY9WmAxt#|9BECH$ zq(LnZ7@ymj11NcXdqg0p1p=e+@T-l_ZVLppKwuR9;8UZEx*PA14g|G8U=)tq+UQK76^>O8|{z|1hqh56dtUM`0TboPzwY`;T>DiE{S(Y2ZCB4 zFbWS=M!Z8h5Yz&JQFyR2;cAU?O%)#aX1C8!1Z=tozz+U<29R&BC%B|$9^L!VsL zYB%KJU43%q{gt_*7KlxrUDay0@PX+4*M}?9pcaT#FRf|~H~sB)=;`EfA;mUfmjQkbL;!@ugj&X;2Hqt^HTG z+AWp%=1mJHR(=m^fw*S)>ej3G#k;~6Y}xOG%3M(k#OU#>TYK-pw>$Q8A5;?50&&)X zt6Rg3p6j>Yp|Tv*@@X8gy47wCML9NDx7FQMZ+CQ|1>*dZR=3*Cq$tNzeU7dyIkiCS zdhY60yZsbt%sAxG%6dgD5PSS^b!+q6^hWhs)~hlNYJvFfRjXTXdJP29c;LF{D&G~g zKy32c)vd!`Ch?bVH&v!VEf9AvT;2Lwc^hr>%UvqVK`jtxJ+#{WK9~mbhCfKOUQr9r zH$VOZM^xSQONqvd@ON(dxIr39P|N7Gt<~+W5?C(`EfBVz?c+Ln)5L*DMrD`1tfNQ+wG!3~!XT>WCR8h>LpiiwF|ITXu3Wb-c<Kl$!OKI3a)whyRg1jpM zJE;2R6G~D7c2M>0DwL!I>>#_r1@{TR^-!RWp#NeS3Nb~8}gmQa!su!HROp_HH`C13|t z-*7}pO27`XTa;ikyu95_WnW84O27`Xo0>rAZ;+CdfE{GFL8SyGDFHjE`o<|rQUZ2R z^{rNvqy+4saC6q;2YyzToRXA)9b~t2p&V=Wyri@;C`k#}L3RTeh%qfcEz_VRC13~H zEo14sq9i3?2iZ+#ApW%WCuJIxqy+4s>f6#NNeQ!qs^+68NeQ!8s&_lV^0K?=s0G?= zl&UmTOItYq+~2~N{yrEN;#C^`N|-Csx=Tq){O4U;oVB7BXv7re=rs+^m8J)~E96RN zup*++@@cqm^$eE1lYzdMv3F%*dkbbKX4%@;C**%Qwto$Aad%Do)91G7-W-Ol1UI}o zA@4c8e=XHgnqec}|7b=&?Up&6NQ1k!Kmh7{D;37 z=+odXD$u$=ieV$3{rSxNx)lR`8k8W1N;7Q4Pac?+KX}*DMbP5eT}VSuadDqX`4_*?%jb#`@bbgS}jhOu3^P0DGrB^MaM=gX&8?o!!?u%BvFx#hr)5Un&u-;e1=SIBz zUiU>GI09)<3-MA5VLmtF!)_yLtGbQwX>dmcXx%r#=SKAIKBD%BBUB6VQVU_yMjV+9 z&)PLcQO&&}t}nC|NpCD1~jff)?Y3|ku4 z?{QN8S^k9oeQ?h)v~*uG!$y2C_@w-dqn_}66eUPQX@-q>@8e;4-xutARGp^|n$L}R zw;&*4i;P@R3t>Jt;&IpJUN&vDF9-JtLyI}l92&9vL(}p#6IT0jsFuLCrhY0L?NX4r_LCi*le zftJz?8?o`Qjq*KDINW~^-HS{s12mt<1SHf#uBe4DpBwS5CkHkkKWC;-gS&e{v*$#Z z&yBe6;epLJIzqJ&FSQURZ3L{0RWDBPY0xSHjT+86#^*-BlIgv2f=`25h?iOj^SKct zubbo!W=#Hr&xZNB%R3;U#a0wCF>J(wf=IQL zX4r_LKlk+t);8)ZXx0p*!Ej8ZT1qoq5Yg|$+E>ujLK+Mk@qvvdirN3KHz8gchxP&yzc+Sr%DFYbn*j8^z92 zJZIR_*x|+5`R3PmACI_ras#yV_7H|+BGpowVIzt$j!%PefyM|4v+PKlVIzKj|EzrL zbxX&mT1qo)MA4SyAgb>DL>hb^6OgE_PA$a5=SCExJ70I1UudyMMobJFQH&scy`n@* ztK~Do*;hI2D`@fdGH78&0PAV-oM9uJeU-z$O0|?`*oc8Ij>#Wh$KSd2OQ6|1BMpX) z(BC;F&|-fDnqeb`AGx}@<<0oIq4*Db3l8EGzmC|E@S{K$$o`LzvI4922je)4Xck4F9gE zh4iR}FrOQ-eEPiR`{rWj@&HU@8t>k z)KmNWT;VjtU|)?B`^v(WtJuB@T1qo)L?0Wm)Q~zxCfxsl5evTupBu5pMnyH0kXlM3 z%;!eXr)ZL}LqYd9aOXlySQ@rJLTQG>H;=~#cBVbFIQm6Q3|kuU*uc)shZfJh2hDJq zEBSrw;oB%^VP{A9eT19eL0N6D(h9#1i^~Z??P4@VLmsa@Z$Jy z&J!X*>nW0a9uumCc&UXjX(NiUb5XCxNWBW*ALq+*)-ucDdSzOOms$wNwIuFq2l+K= z(1J%W^tIvs^DHBgYQgJ>6>WIVa8dFlv+~1R{#Nwo<4P@@tjaVPHbT>&1n&(etA;cz zY{ZK9x{r6B3IDG2R7ajj37XH1aJ~#rKte6#omvR@!W)+Dh(|?-I!q`bZ&wYpOfNDYM-8*Pn~5tK4(h?LeJvm zb4#Q6MfopCEyPPLg!$YE=MnC79%28k^bAuy0hP~Jt;{9p; z^PB&d<8wQc80FA&i+Lik5jUUQKfhpwjnAotc&UXjpBuqm4e@eUBeW2v&A@O>RA~hp zF6^}olo7%Hgk=%>THa+!eK&8LBUjW?8eu*+{XczvQa+(~FHhhG7pyUd7Vc(&t%aBv zHlmpM@vSH&&{CRVBVu3pc)t??#9QvvWb9)=7$+<9#=~BpY=7vUW0SUDbFSQWnb0d1XQR?=?Px5K#3FEXZ z5fh&qaf*$EeHzq4ywpON&yBEu+x_=YTOHP9XiH+d-LGKw?}}Q8mo&nBZm}2hIKCWg zEs=Nj$O!Yf5yd=?F9)>{FSQWnb0awW3JH1{+HEK;_A4O`K931VsHHT*d~QVC*V-Lt z(BdpRVq(|`?Q8!ZV`lLUIhR}lQK5-4G=m~IFo=js z0MQ6n5E@!VkRT371Fb+iwIB*y%smkS!ytmOQBfhF>275(K?Irq`fAm?YgL_nx__RB zoAuOMZ>`$Hsl94d?OkYO#eQC*k&P(l)oiy55kyOpb#`;lkj4h_dSIn`v64)=`S?_r zrM_i<<~etdzinA*=K|hEMmD0H=gd~x|3N*2Xk;VGbpW=HfvngCLC1k?M0(=Hy9AA_ z*y}(vvJqrbWyLNSvhsUDAeTgKx7Y<+FBo_pG(N24{gc!#bVvS(~kN-gr_YTdVYox+=ug@~&Tw-egm~`bFtI zILVY7aafvt^;Vvi3~fX?KF`l^?OdQY8C6sHbUyz4#dA)0-f~M=sa~w2zeJl4f6bYf zl@-4t`9Lm-+RD?&M(i3gsozbRRGz7-S3MlhbIOefzriM3izCb zNi`uGvBE}oeRrb9ZJHSsjm&Y_J2T$9>Qye(ABW^j=;*zbrzJxhk;VqGRjd#Ytv&o$ zQ$)EDX>1VtU940uR+1?<;+QbUGQ8nBag7&y$;gVmWaJOoi2n>x%ze|=T~b?l8rg_) zEzY*h?~Z6mKFW+&xfaJFGWo+wGPL<9@2eaq@WhdiG6H}=qhFEg#R@q;)dJDv6WPU8 zR?J}7xmq{IzD=uKylWb)a=dH1yBbl><5(_CKGc6`m4#?zBg%Q4Y(-X0G_n!@74k|? z>@+UkC9EBi6(b?}KrV^e%G1b3q`9K_j8ZSd@0{pfJ}5V0M(E+b7jo5hex}Dvqx@kd z8QO@nPA1NI=?ST|DzYNup_-75DAyWThDBDMMmB=GMD?-~NCY`{WQ})90u9$0nwoNM zsaykTy9|kDL@&9_OkDMviQNk~W(}le4OA~ylA&pp@2@OFuX=TMbAOe;Yy?GrWmc+J zzYqFgXtOTIQM27RYK|L6S-BDAILfT#L(dG2!X)d7!BSJng5;{VxR4-Q1huamg(+Pb^FRb{DGrZbUkN!iu<&g`g z+cvVjDU-(UTr+=sb*R%R*E*Y(>cvVjwE1ABK^ngU zvERR#awC|{&~aepX~~ouk?!62JJ+v>TqsX9)kJwZ^82?MQzjK3Jj1cVhsuoz*P|C^ zGolae4$Qbl`~H#xpxlUXJ$hlrB>KQg^LuCybx<{;!l zdp(m+q}+&<_lf5UE7gmYWXg?5F?F1;RqU+wd$J+}C4b09q?kJP3}|HKX=EeHIbqvj zRX*6cRWz~@DLWW_ppg~(nu!Hkzc2N;Q)>$&;CE=}9FIJMFjd* z>lCftncoWKMqFwc`glFCQoUG7rrd}tEz-AZ9`-Ed_n}CiXRRXr{Fcxj_C{6oftBjT zN;2iev9-O;5$|2BI1bU0DL0~A50~@bI-}gjWoElv z4`)`Y7c0ro<|ABl&27hXbxzoQo%uTMb{z-hMub&iV_Fp^4OXfbE6J1_QNBNDJKM^N zEU;=qHX^MGi)R;&tXLBu8rg`HfsBOTVU;^kH04GRAxndm>cvVj*hS84*&aPz2OTt@uS~9c|DH|2n`;e!S6{~kt6S5I0 z;}zHMqLG!Sk&P(lAZ?X}eCTNN9Hhxclyi{TiZvRdk&OuN_PKHG_HlnDwMxD7b}9Bz zw9LLs^|;ooR4-PNq0L7c3CHU}uP+}&;rQcQdd+A%{ywmxURmKUuPF+-@LqVgFZR@a zA9qF*@w^H(=Ut4y;w=6+=y^r^?2J!k%d;l zt6m~x$&?!r?yDYeRAHrhv64)A+i`5)JO_yl?KrHwB&5O0j>D|%IJRqcGV65GdboIY z8I6i2dX-GM`6%bMEfQ9}SV@L9!skUErDG^xE^ z)OL+bwR@Rl%8dwlxE^^ptkf#3BvWogn0M~+{vc7R>QzRE`7g?i2ytR0yp`(3N;0$& zjP9gi_C+*L1Id(^gtzjvWaxs3*IXL%Vr1^9iLZr*HT3C?T)ZDsfo#OjZKZ6?exQ++r;&|Fy=XkU>P5Bd zlY9_)i$*pg_0;hSqKQ5nO-)9Gcvruucwdnb62a(BGUY~ucvrvL_>96zt-?w&h!FtUOx3H*jaK}|7N#7j5qsTsT5p%Fm&GUpE7c1vnQ|l2TF&@XBaV_4BO&=f zE{WR8)5u1oTt+-s%zCR{B7Mn}8w*Tdz$mPkfE%3c&g8mv?=R+1?f zDEkt#QoUG7)*3JN8SQjZb}-&o+zqOi9HL~(%}2^W#`_8@)r*y6%8f{OV*J(0N;?y( zUfqe>*AO4JW1*OIw_DGUtneW#$ZRnA*`wW(fa8YEM0L>LwI_^Jw4 zsuwHClpB%Wu8BU##H(I1cakYLBE7*AdmpS+FIJK%HzMRRl-Z8=F4-E@%bh5hawEcf z^va&cdlxI!iwbFX=SPWJtj z55J>lrxV^-@A1YuR;m{($&{Oqhu(ik?{nduXKAzpDRUmO;+aT!Nys}^p2i2?b?$V^ z^(FatN7h+2mA|NReTikZRWDYOp;N2US0iFe!rsK>UbRy&xmWEo+@5>I%F~i5Hy>r( zZu_G8Yap3jQH?0$cDsVA7c0qJ8zWMj7=Itk_NiV)edMVrHzLJ}@%Mq1>cvVjg5Xpk|{T$ zd=A=P*s2#R$-XgK`|x%;^DkP|o6xhbSz)Dmv5Lpx_WF(44}IAvo-1Z} z)ONiUtsIGD%B@xD>q+tVftBjTN;2g}q`B?XC+2xzB7ONNXLuo`!AkXFC7E*bkus3+ zIFxDB+?Hr%xyV^lZbZs*#^bYzSQt@m%>G(`gkovB!EGbGr9&Y`=E-fW{yD zxOX~ptcQy}{C@P@?eamnwdzdkMdS6rO7&tTnQ|jev>q;=EA?dL@%2k3zfZXlevE^a z>cvVj9kO~( z<{h;Qe9p;Oxe?*pJ3W1MNZzqhtDq%QZbZrs#%r!DAioJ^2brg!+=!Hcj6SeZy;w=6 z+=%eKj9&O&MjRWk2f13v4(5_6H{#qd>vQSox^ZlPmFmSxGUY~;@4jvqcD1p&B1T2= zdW5%CRBptV?ai0;`>>Ih>eag|vXTsKgq~`AOOLx+^>TJ4Q*K09_ZnxBy_M?4N;0$& z={tAvdg!Y&Tn~LchrWyQl8_IqR4-PNDK{d`JI9zoBM82WLbg^lQC$TdzhBAwm%JJ&Vt@=9=}C zVT_}QEU%jUo<)7p2Ue;VE6J3bk8-U+x0$2WO3A#|z{-sXYjN~eO7wx1>ec%un&Fj9 zxe?*JA7gws>YR<%YT_N9&bsE58^NrMG+3!#tRz!zMEH_tFMP=}{?0jzq8ZCdrrd~f zU7wAFRWDYOp^XUNTk7#;yfu$syUCF$l4Wj!awB|>3@g=(m1N3|DA(Mr<<{Kg_(4zS zJQJ59fOtK8oPd>lP;NfbHIIGC$o^|J^NtJOyjByJQf@@~UXfX;UaTZTH^DgR&yBkPl=d%5?x1i^xjfAX~M-q8el)!nX|-WyI^DXo7V_dXkX?pxlUM7RmHf zFIH+5R+1?n-~abuu{EPNv7O6t~A;rHY5WnnsOu3ir?5Otkf#3BvWq0y6?Si?6(*3?S%ZBp!boF z@@_B3YSzQ4UaTZTn~yS=k>{ZF)X%vLD>tIdWtf%fWe!R*v=Qa+Jg+Zc1gYaFR}PfF za~q|qUaTZTn~(CHhWy+1Yc9)QZCbY!uLoAD7pv$ay!oVAS@Yq?AFS+E+leeCQ*K1L zZYjr~Sjh*p5h;@zb4z47W4$iVM7a^nD0(Z^iuI2`?@6ZIi1fsX zvrAa1UaTZjZbW#OOsgj2?}IF$>Sd-{GUZ03m^xk$tW+;nk|{T$T+7*Q#o#Mm z7r$-gMwDwg&C2REEAwaNMx>m6jH%Z=eyBM=cfDt*iLWU)!mn?~O7&tTnQ|k_cd920 z@3re2WAvi^eVJoHHsXU{Sk&ES?X6?0(CCb64`FCzBhoBDydJxaA968u*TvLUZbTVV zo0ZxQE&0#SSh*3OdU|?qw-xsMc;KO~dwz7A=Lh9RlsROxQoUG7*45P0$B6Q~I1{1| zS!u6dJ=Js;kd4^dzVH{19F45B*RP&%qLGaVXSc`M)xL&Y1MP~avn!f%BgjBXgO%#V zN;2g}q)0!_tF7(k)pGu_90`~6YG$Q+u`+*FZayym!U?@?7P1aGT-)?bAKiU<9kP`h z!OCSF2Ue>0=!48kGUY~G_|UB0gr|6~DBnw5LDf{=CFOfXc9*DLtRzF5kFXA)$7-q@ zUpLgu745U@kee&AawB|R6f4yWEtzs7h{C1O9nRPZLdQY55xl`84OX7^{*2)4N<+3^ z^qucn+g%TvLnsMv$p`&P*(z(vTFux%(JO1V6}{%M zL5h&$^}x#0b{s~V53-!nXyi^Fj(T-QC^sTy4WbXMJnj7%k$Ru_#8EHv<*O`jtX_g~ z0_8@e9xh&UtW+;nk|{T$%=>g*-Y556>QQsvr(6eMR;m{($z>1czgeSw?imB}wA8tx z+*(z>W0Ie*Sjh*p5$V0Vc<(ant$H=v!#fR>8ep%1c5m!AkXFC7E&~ z%5?x?m+WT!?v&y0zt-0BYCma}8&R$UFe}xImE?!R&eo!hNE!OHrYPqr${(11rgt8{zXl+PgjHeI_@*dCHAQ^HH(C(*E%38B{M;k|{TW45T#ta@0b_A~|Pi zzceFQ3FxgnEg9N~@*Vd)S3ovOHI=gf`}}fNZ;z0}k_Ic)i~Yl4=QoUG7rrdm#>)Z3VUn2;P ziF|+&XM|DeoE0{gik0fcN;2g}F!GXy9$Dvy7*{goCE=|+Eg9N~w6-?J3=21(*z{36 zIaL$oMwI(z*wb0{VkH^ci1K<&X>u8NzGsTN9#(Ed*bAb^&T?3(-ZhUmE6J26ANKBR z%uH~l)OL+`cwSLn65h({wYx+zv=Qanj~uHrQ>~iHD7;+zVYA_?7c0ro<|C~OkJp1< zU-j|@Ov#iRk=9Ja-yl}17c0q>8$qNm&5f^{(!_?lji1uwXDBy<(S*EXBrKY2 zlw`_{D9=?Gf25ThSg9sxBhs@rUUNMmS=Ytvl6+8J64GF$da;sBxe;k?RP1+&Qbn^? zNiyX|q_t69Z>4&%k_>HxUk9LwmA+P^Eq;TP8<8?aF~5tI>cvVjv8IHxPd^ zVo_@;H-c5g(qN@}v64)=5oNra+YX_c%2t)}uC>ay-TN~iX}xH?9{P2%HcG$Ryf(_p zjY#ic#p{8U>V=j}xe;ltbG)yVmCxhBoDZP9By@y++>e!fP;NvyU)y!_wfUIz1)@A( z3n3rA?O6F^G9Tr7hWy(mdR0y3uNFcYtW+;nk|{SI(C9cma(JeZjR?Q<9>4RKzCF1a8yt21%V!N58b!@Lh*)73a*OeE+6d4&@~wA6Thg=td5-5ibv4n|?5S z!Bxc5J7|CB*Ty?ht7&$h@;aNNPjX49E^p;&WFsyMKK4pJ=G^=G@H~Ho`Ixu$@D1M{ zZ$6S-648gV@-(s$_ID&+4~|^Nw8!7}4F24?YK|PjTlw=N8M^S%m1fab?Ocie((Z4F z=S?!@CE=|+Eg8BX;&F_w91hQI`?mJzS$kwTm6wEkV5NGYqnv0X!WVmce3M)R*I=h- z=f-P8O)4)5X|SSRSxKgxR^@LlkESaai6A$}l;o0Vv%&{8LFixGZ(`9`^)-^$#(U{Y zyYJD+l$V5E53`a#tRzDlanbeb%-$$`Ydf}T<=)NtnezDF!+-qkE9~A)ou0LFBc_Jm->urZ(}$Ol$-Oh!wl+=vr8Cw0f2Y;Ti4e)#<18M~|(&(*t*oIgDOp!MQ4M>b;g zk%iq;U$i&Y(a4{tk;_)qXP2H+G-tge>^O2yjg=jTl^gNsXBKr|bNSXWhTHSK^N0U* zvK`0e@0&mT_lxZ~kP~t7qVBq<+n0yY$e*W?X;uE6Pu*v3^Yw4ZH?L)Lx5y=-_M(xG zn$F+Z-fa4@-H+|JJRZl{2hSfq`0uZb*WUX=EezTCr^QOJP@Nd8bDf@u8>o9-jW7U31Ef`1q@DpS^b=yp^XV zLmRQtTb9qcAbtDu2b1Ox-?m11omCU%B_WN!&REF@R40i^GhPu<(>wfMmFO1@W#k!$eD=Xu2#MGO`AVF z>5b)Y#fVu8#&sWCa7er!Sb179~r7$-cQ!Br!!WbmQ1-3|8~}v-9zuR@9$pu=J~^4+0)L?7PICL z|Mn1*DK}zb_#X1R{$$_Z#Y**JC7E&~?hePXNjeUqR6Fwgo2R@ayp`(3N-{l$5%$+& z25Fl9BSbQdoXSfg`bbvPDdweTGKwHJ+i zcpBLV#k!K>k*9tz9&P$PQm)@-Nwit17o}V>g#Jy}W8QA=8qCOYDlduXJ^Ut`Ymls> zk5q2N$g$VWxgzc9%@a~IJ)C69OTt^JUaTZT(<*naLX_IHDn+c;T8o2A!rE&ZtUN6l zLjQ8E+_)zBi*z-{F`}>DWQA|g#-{;Ro|a6x5i{O)YWJF7TW*O6Syn`o@_}r`cMm(Y`^1u?V{QqJ ztUQfu#M>7h(%pZu?T^E+Rz4OVpqRmagUCkw*EApRDAAatQrP%<$?aP9UqI zns$2D%1c5TtW+;nk|{Uh-^Nbs9)7_cF@|F_AuFOV)r4%sM{*hxi7Jrj35Gtgv-5= zPl|M%hl^2$G+23BGUeu@%=OuL*@zsY=b2StR4-PNDYx2F3>S|> zXYr_ob8V~^uE9IMwnvmHHzHlZ6d{|H>cvX3@};7UD1PT>Z8E&#We1v%AhTcUXeuv> zcsC@gSZ}gI7Hve4dyP?ew|VN{Fl}BsruoB?OTyY~8u_zG-)Lkb(l08WtI?JJF#P8! z`^I{|wEHIcyruGzP`y}1f5}QRy#bj@X@EEmUwToSdFr;&}A{i`FpznrpqOh>K^#L$vMq7Qre91_nPa!JSsnwq92 zBhv3YUJrehhx_&E9oEd}DwP{CY2BT>_pW7oxM3xK(2^-nt$J!g_o_G9nhA{{Ui`5A z?ljsu<}7j0z6fowz?O~kW{MlJC)vJv*zp0$?E?8fWNuShiIB@vI%{c5p_ z$Ct_rBDTt&!q#?sI-5*+NyrCQcHT5Yb7(x%l$V68)a%nHYE+C&c}d6zR-Tqjxe=eb z_Lw;*?rU?Y^!lQ&eR1#Mr|z-ipu8l!RjfBXaU?^Rt&--GS3EaYM=ScoJ6AU{* zJS`d8h|dpSH+I`s?VAJJp1OK2&%sX|yL#^O@0&l$jo9>^*Nts;vCVU0rFyZFOt}#$ zLXLfjBIN&=WB0D2;sx)vz69Bb6orqeE;KqOPa_*qKBL?ml$$qV)~O^^FSASXhZS-j zf22M!<}8WAWkrToH6fc1h}z22$YrZU#9z_<^W!z=7bPE*mqepE)Si7_soaP(n-PEK%EaGvsr}A*>dPN;NvJL~vhp;t5ydqRPs=>x>T*CSqf-*G zy-5>~yrT2({5H$b$2E7Bp+7j@R~qTffBxWj&5_N=yTUBMj19-dxBJmVAAz{*exs?$ z2p{|CUSbaF@JX86Zkvw^aeFu9UgPz^O2-5(nR4@ya($8DwYh)xlp%8`xO?48%m(Gy1+dKuNr$V)QiMucZn zB)pZUB|{tWNSIL^ce;HcRwMVzHnV$|r;KVsHsY}`YdQ6D`z8k(S$P`Sh{G>mHv6{p zZCuU19Cx2x1I^uh|2HO6Zp1!EFPpt6d?QZvVx_iYC7E&~?61XeML!ts_CbB3n31l0 zDCU%v>V=MSD!1Cpanx`#=Aie9HHExJ?nNP_!ODD?m1N4zM_OwTuQ?;$SZ~M_GXA8z zB)paC#VYzsv=R03KatNOn-J@x{qKw90kabKYVaH)s z)^@W(E_~$YVCZo)Mvhjg_lY$nx$)6Fqv)5g@^l_;r+i{x&!8OQlEd2i5(w3cm0Cr= zBAIe)Rhkoy&kxQ09&x(;26+OgCghS(U1((GX=Ee9ov0jgyxVz(i?+P6#ahTl_<1!n z^5JRZf{4FbMh)^oj3OGjBx);9BO76VQ%*mw>#=KKtD8(7P30va?^u~XtrlV&rKb4m$PNX$V4=~k7UZt#}^aftvoFm+K4+2UU&9bS}#gZCYrWOrrd}hym8&x z_XfgSsa~ukLmNTHOB$l0NT(-`WXg>otLCjd9epI)hzT}p8P64WwP>;ik|{SrGouIJ zIWHauR;m{($&?#mf33grcOsF#d{ABz(qN@}v64(VgzK+DAKvs)sXtdu$~qUlPfskG z97mg#e2B><2`fm8Wy7(i)a{Jv2v8jLV26wlRrHsv zBvWogipaXs5P6AKZ=mR2GUZ03sITdL7!P2jnxKtXX){0ZE+MNXD>66ofo#NrFuU}Q z$+lxU8d-T7*@!e&i>*?0r+Hxc&}d6@(4vt`qPFrhvJsjwdByOu7*i7=izY&n4`d@W zD|6%pcf^<)jjTM4Y(yC|SWhNG&sy#)dcKnIR%#VilA(=AE9l}gip+$pc*>|IWFyil zy_m~DBP&lMcRDY^6G?|@K!a=D0QU!%rl?c6(7_kf1W=3 z+BXjWaOEa3E*a@=aOQWeZzHgZ=gO^s80r4vna?%EV^ek=e)#8aYa&Z}iTzKX701zb zwxzgB=#lNn^Yh&IyZt`620SfA^JM7vfu{E1pC6?UG_6F+Mzs(r zf8|?62D<J`^c;Uu20xQuul97*NetC2& zft83HE&VkRcOG-)tTrE5iO4zRCj+tSfUk|V5m<@H<9O@#+qC+?N<_|={4V&oWZ}zpYdgDG ziO5;b=L7NLpJulDz)A$qc{`4;cBi)zSc%9Hz~6$8*$ckVN?;{|{9LE=`#@ZH!P>3I zft3hGWS!2_fw=3I&$jx&N(9fxPUnY#_~iq0TYX?9B0o7V4a9G!y!)oMvx}7oay6aK zRe^ZR3kS3kScxF|=yY~`{`BsyKi+ZoHXm4t$Z^T5o(h@4YtQ>p8-bMwM&Z$}=-c&N z;%z7PxD=tRn#%k8L~rG3zk7Ds@1jw?p78rYmIRub@Ow^{1e%)A&ZPPZvHha9UVG9k z&J~)P(9Wd#E^Gg}LQ@ldpV6{aXljBTOFNyX!d&J56?g^|!xT)(kD-CVo~2JtVH;|mq)tY z2Zmb-tVH-di$kP;(&ep3j+F>@JnsJu`c`2jBCpueaV(zvp{7-6e7z9t^E1-@;Ojr+ zq6}O8<*g(?e2(qn+}|qi11k~A`&cik9K%OGe0eisLF4O{tZ%=vCu`Z4cmgXC%4}yJ z`#ic?a~x=Vy^{5vD)tN;>Hcaf2H|F`Bq^if-iL0ar7=dztsm;BKRhxJ)=z)FO^6l1-p z?yCcie|@VDtVHO0GWw#qwd&*BKXXId*~LnP|C-fEccaJ8ZfzA-BKQ`T`FM2x#;rcE z65+qlG}8U!=l5&9f>?>*Yfa|k`nzAzdgNG%$lr9*6`axeNb7N6C4%o%*`?kXgY&^zXgj-Bm+HkzGH2m`C$JL1IqV;K`Bq^Sk0WHGc-yHy zySY^w1MRuF0O(@T#_Z9nFg{CGf&(ubssR`wo^nQJ(b744+ zW507;a~x=DLU|^=h2P&QG&P|-lfJ3Y>AW`hc>bKL8y{$DLU|^Ad7;y};KkFsdms4g zCbxv9CX{E=_YV47g{CHyXVO;@I-R%t{q*i<4*x`xjY3ls$}{P`^nM>`YQnNnZ3OSW zMxy1dJ@ZjM4eSlTNTm58$+j-1t-nH36aG!_vKK{D6PlaK&nUG`|H%qX8)0)^_1*4$ zcv^E)?LIt#mHEqWRF%h}RUtfUYa+)bb`*9T-iN0(f1X=)>+D_=krhO;imeJVYaq*3 z`7d{{N2&sGW1O-<~z?>6ykk8K%9)6~S& zeYS~fM=eKIW+3x-Sp2og``7koATxoL{N+6-l}{`)keR?r1iLU=tI7;yCa@BbcV6tz zKxP6f5p&ntc3=iF6Ih902SCemmKn%QU?qZm0_|>p`>%WkG80&dUFv#oJ^U4%mh{<9=Ty#m-jjG7N3F41Xdz0x_{f0TT-9+ z;-fwTnF*{!{QCKAUH+=fKxP6f5$A1TJ4M^MDl?Foz)FPQ)4Tjd(Jy%`$$SOQu3(vg zw6Dmu5rZ<2nNYp#G|oo%gyKxP6f(GRTJZeRv76Ih8jXQS=iomgfdGl7)|zX#|@x6D9h0xJ>hAZo`^ zW*{?xm58%Hy8XZmWG1i@an$+Sr@4v#3}hy-65;o?9O;%B$V^}*f?YA&GLV_TN`&?n z9+ZL11Xd!n1M#2?WG1i@;rFktGmx3UN(8&#+V$9CPoIIz1Xd#U-E~@6ZD_ltjdZ_u zvClwe0xJ>PnU)=nM!IDNG80&dI6CZpo1=`SukabjOkgGA&i71nQO4=(_zYwwuoAK6 z@zYY2p=pbTX8ft3iYLd$E_bg$??ukrOt*0_WfrX$^pPx@GsDWWcKC0Q}N zR;1a};PV?_(B!Ysv=Qwq&-C6lbM#a9S+~h2>P>Hp+w0MUx2oxU3#W(yh_g#Scz779vhUa^j_sw>5Y$PRK)(LZ!~a~UbcE{N=dh$E9$bdo9X+{ z+t}SDcE#Mbk#KXC}N4PwV%Xf9KwZC$N&g(Us!|5NKpo6YZG^ z@59rh^EP%qK0POACJG{1#a0EmJu~rx&0d;Izq{4qPPmt*$Jq>h1Hxw9>wec;dHRAg zJ1%DM=L(Hl;)(T6>bRJ}6KHDU>SH=CX7B`>n)t}!oq?GN)6~SmgE|8<6Q-$&8y9p2 zW+qHi6MOC38JL+cO-)SQr;}oa{cvrE{O`q{=qcVY&h>QLd&U&*p>f?_NH#vRoIBz9+c&#;3W#vi)d%gjV3uoCgu!E3m+QDtT#6IhA(>nUpt%uHkg zD-kbVyvD%HL?*Bj@yHEpxba|_naBiIA}+drje(hoOkgEKdr0S%HDzWZ6IhAR9@2Te zPnns>1Xd!>pSxz<_n<#7>hBV)MCki9e9da4`>DUI@!f=$eOIM)TzKgk&-k zem}_S$(g*XUaTZ9`l=nDdaAf8tcj4()CBua8sU35PhcgQ*w=_MGm&FzPiXJ6dI?U zl?kjw9CiL$u4mZiLBBRC6Ih9O>Dz0i-beS<`d9e1QJKI>#E#3>NS(*XxygpfN05iH1X#>o@@GcZ{=x?;c}$E+^yI`qk28TJf8hNzVg|pn^vJ|Bl7jw z?}%-hl}?_JEGyBPiPJt$mKXJNcW7kg3C-zg7kF!xzk+CLLi2{}oF_tY;#sd;-K-r% zQxlq-ykWy#T700X3C(}5yg-D0QNC4ZYC`jP?3PyE?PzL3^CEV36^rh;@4?Ml9DjEG zdDGmacGT*0{uGGq_gUUbU?qQ=wY2@u^)A4v@0!y}U?n2YTIz21NA8bOBs`N$QMcT24@dn3@)gytiEHoc8NQxlrC{L=0sbavPL`+qcj zBAS}eyrF%IwZ0ynz)G~_H|;^IKJndN)3>9+itjD)?bmpQir=6ouoA8LNIQ=D7llSv zp3r<``?*3>6U+$ox5^V(iPn5%`xQhZD^F-XGT$Xj{&{wDC!(nd%}3@t@r|F`rMVN) z)P&|E^WE<6D>OBs`AGXk)n^w?O=v#Sezkf=9sd1qHOGObCNv*uJ%fm6{^y&`aiFOQ z%|}}AqdRfSqp}Y)HKF-P>)~`9Ywhx##s`|3(0ruzqVUEQ`N;Mt15Hh6KGGtY+6S7N z(0rstOUm5cGG$WpR6|n}nvb-ItnRPS)P&|EEy}1{g{CGnA8ApB-p)MdptGB&8k(9Y zXD!PJ*}nB4!mqiLJSal86@Mc5QiNo!zZ(=G=RH_F!MnEB!<7+oe(Sd;21Ur3P`x=q z-rYsW{{33LEvqY~wtGVF-L^-_Xlg?5_6~}WO;Zzkf4KeLMN<=cM|n_$Y?_+TySDAW zK{Pd?cNgvKDk9tI*9SHC6<11xKW}<}*zVm&0{_vm(ITKik$Zr5@-*uw`ui(1s@D_Sf8d4SqwQ^3PhcflXpF=iHO=uNK`@M^%CbUvzP=sunn$U`i_TM0yn#jAW z)H!5-b~&S>wZ0@r$mcA`5wa(+5~1}a?Gdskuo98im(&rNKMvY1LMulGMaZU+l_#`v zWKe``nwrqck@kKUO-*QhiS_Nzgc$CBli5z^|-Zjcr#)_QxjS_GAKee zO-*R!NRE)p9I|O@LMulG<&aHN6IwYkC_*+(O=#svjv2}b*)%nwl_NPWDRaoCsR^wd z$+3@*OVHGWR*tmCS7>TND@WR+J~TCG&P}> zBi1u$5Qf(v~pxnglw9c(8`haC<9GRXyr(Igp8&p zv~t9vC1obU9KFjSo2DkTa>OFCy1znG6IwYkC_*+(O=#uFpa|JCHBqiFDRamhxm6an z>RPl`N)O5*XDhwmKzyy0(t~oyrcu3~&>Io9)>-GO%psemjmSN9xym9F{!NR82Td3l zA)7`%Jn@mkCk%{`O;ZzBA2Y#4$mJ>v)6~RzCrub|@1m)R3(lM{FhVv>O>DJz!hqi( znwofehe-ohS>&_J85Mowf(hx~?O$b)39LlyweN%h5i)m!w~{<{p9yINcKwU;$3fdg zj9ximV1#TMS$Sf{O%n!2$fl`@bMKunpx;GP6JPvOxO2E@glw9cc)Hcd^uc=1FRGn5gsX=>t; z8z#EAq>PYFQxg~6KhecLJ}yC16Tg0b;(+)HO--D)#iRjIADWstf9|9dSt@2IS6P^* zCPv>sY2Yf0OkgEia*mM8RTiefDzCDjXQ+RJ)FookSItWDAI{-8Y64A7to+uXbA_fR z{Qk9NX4?~3iT>){lLlNtG_vx<1FI&vyQGYeO;Z!+Y&6;3iDiUrnwnVn=E?4E_je+i zni$!C^1uk$G&OPdM<)-AkWEt)N1Z=;V1#U%nt18klLtn~rm2Y?mrWj+LpDuKJn+!u z0TD8qn)vfGlLz$FXli1&@lysy$fl`@8(%kNV1#U%n%H;ODFdF)Xlml&y{8O}kWEt) zM;|n0K$L-|ChmOClz|blX=-B4oO%OAsUoKC^J*9G{=>jGq_b5`=M~uHJ|1bu3-6w zbl$76@R4@WGQuA@cXd2J;jQ@Q8=XPUcYFEmHfNQ76Qb>X_x3lW_2xa_<+NXs9g}wJ zZX@gs@_s_U$J{D^9BATkxK{BC?q7%OeR!I89s19eC$KVquN%-R{hs~X70A3D@xS}< zwBCKsM_zur&CX(MNwPw2e?!`j2Q|{mZ%8XfZQng2TX|Yz=loR_e?8EsC7#eIJbzWi z6KHBeIe-hd)?N^Gyo;tLlxN7hNBH+Y(A0!R-h+0JFilNpX|14p{Mr15f-(g}09c98_}q4n=zl{x6IhAR_5Lxl?aW`?K||k=H(mGnZQbf#^>8L-?}fq-IfWgL}+}T-x)2x-IfWg zL}+}T-%Bmukj?~FA~XuOcVBhn<+s~1ft3i2!t?vJG(PW~ zx?Q*)^)JfbC0L2j2-)6{)^U{IZZnOq7b1VVExc3Rydh0p-b%8@)YdBbP}}q$R`Twx zBx|gmbFbmu@Mg^fnwrpsI9+3&GL}+|&PaF~D8`7D;N`yw?gTCFC39LkDe4e9>@(t-sU?oDM z@Em27Z%AhXD-jx>=P09mLpl>!iO~4mq6}U0^4o2hz)FP1=lKok^4o2hz)FP1=Y!sm z&IDE>G(NW|L-$p=dqgI%5|PK}x`Mv)=iUbzU$111 zOY$4i<+t0cE^j4SF?=3*mEUeNO&ifZ@_OmcRdeS*e{k&EPYg2qpG&^${)1bdQQpea z$6oi>xp&2VE$;}|W1D|{ee+%_8nwz3U;o*vxtDErNbsQ@^4|Z=e`!|lcmgZYhu^bm z?tjb?@kAglxb*AIT&gFq5;5(UtL83vH$Fah=b~00Sc!P~Z&uCK-s=`8KKRj>wGvo~ zSoOfFxi?)ZBF4L4IJdP`Sc&+}%2jiRmWa@ste<~;i&h_4iReA1>mfpS`-}5_+Pt;p zj~puzUwSI|cv^(^I9&a3-ha>&Scy2avwH5LjmS(~_r3A0KClw;>?>B!ea|!zYSrfV zEN>;S67iu)tLNUgCq7=a!Ll3UlRapBtFRJr^_HvWE;$V1Ln|L>-ir4GRwBN-!|J&& zeprOg?#r&5)_Qia5;1f3>bYlp8XxN}`fTfQU?t+jx2>M5U9~MPx#kxiX>Ao&(Z`{y z=f3m}h|M;=u=U7iCMyx2ICk~i<==-m^`Gx+C9o2)?WwEhUe*(#6?7Y1est@RVh&DC>{yHAAfl51}HNh^Vs zh#!oup8NgZ;Nyy)eW&&8VkP3lJ6DI_2ZZl;{au2Ui1pt8WFY3JE9eO{zFx_nyy7|M zjB-~DJma(xkmdOcy^zta`0#~+@+O2?ruh5X+>uo6*z zjl>^^xAH!;hNayH8r549`THf_hY0fDp3th7b{}YJANq=5Cj2!=(?+ykLBD$3uRWLC zzEczTsC?+IWEMa~j(vVR>%tj2`r4|d^KtldMO`(`%Jo=t5yN=`E72;~{#bTj{bk=y z)BB*2l_xkO{XVQOvHhbgLRznhoZ5Fd@>ZT!9AvwaEDn9*?>={26D^@pt307N$aX%d zqgOOFp*X00cNH`>p*YBPaH)TTXlg=nknIvv6KHBeaggmq^M`QcQ$F`(^Ta_@6N-au zx10LN(bR;+L2Wzgps5MPLAGnpW1&@x*1Dx>6`Gn*9JJ}bwfR6(6N-a&Ik$~KQxl4V z+IKiYQxl4V+ILYxQxl4VY^Nsev3~!uOPZJgO-(2cvfZHSYmTNS6bH5MIEAJr6bIR^ zR((E_rX~~z+0I#t!gs#;^UW1RQxl4VYsosZg6)lNG zh_7<1{5O6JB3VJS&tTa(>Bgswohy^=ELfZvpHsc~H?)^8bN~HaTg)Z5fXuTt6KHsb zL#tKLcFZR~H@$c6?`HL+VYDThv6^JcOTt@uS~9c|{6?%*`RnM!L6jHA5u*TWufV9X(c5sPHXjX3w0TaCSc@uHr$l0U2@L-!wtkHRG@3R6wU zC84^|V5Os_JRkYe1DB6oGws-T9E<@)FoKj!x%ucN!dt0ctRzDlapbEO^v>9NV)Vhd zUo=?*$&?$h_G=dO9^PPLJXct$UaTZjZp2e-@7()K_+J`DWLgWZdif1Xro1G)m8T^` z8!>6!oxAt0wR3Eh=08}I$ogH?glxp~YwX;8bey#cjjTM4Y{X{MkL`VIzvW}{PUc1g zc^}D?8?pKB$M!DYaQT?G^0Z`VBkb=;JXgL|ns-*7QZ-Rt64GF$da;sBxe+sdHmi5f zD|hHhLtG-7h(j{vM%?}2tlrEshBG%0SM)CM zvU=@}Gs%>5Dn$K+^gYKR_Z zmpqIJay^nMZ(7yk3Sy;JVI`SzBkV8zRlZ;OrOF3y8JC1KSgBsDBvWq0CGS0?_vSZ^ zi@!mhETYMUOQzh2uO-4;sa~ukLl>=zzmMVyhUfX9Yc6sm{yub%%1ZS@M>&<7kC%r# z{lRtUOY*tmEmO6YU$YVPKGI;Nda;sBxe*heTG-ojba8w}F@qtR`47pI8*xJCq~5rb z7sqE5R;m{($&?!r?%jBoNW;!Bs#pCAu@B`X;jKI^8QO@qJ~XfQ$OpEJ*Idsc%|VDJ z%8*RC5$FGPUhf+RY#IARtW+;nk|{Uh*HP`1x9B zto5%w2gz)!UNX>8PI>W?@K$Oebd+5#Jk);dbz@g7J|XrcWF|zDbC68A`B=5!y0JaJ zd_wF?uu{EPNv6DPl{BohR=w;i6y>mDQ@v72cq>mwIjp(#gp04zy6H&!=WZ&;hY{W? z)|;%5vyZ(<=RIzduI-&Cny=|f zZtoeqmFmSxGPKox=!skQ4!?h1?Aw_K7ES&_GUY~0JaWt4yZ$sUK0mNhy;w=6+=z51 zMjwo-Rj=+u%^XXn+=z6yM;}ojpvH&nP{RV$&{Cbw^F@WNrpD!_UYq#qwhZ?`rwx%nw1=qDK}!IJFa)&VTZ)) zftBjTN;2g}oVLlt-f^2Oh(6G$UU~-a&xlVZ!dv-zB|{r=S@?bI#qT3Lg&7aB|Db9@ zE(z6zMplXdpplI@{PJZ>ZoB2QcpR*(5J8qxGUY}r`1G&cinx+55?7SI039qd55^_a>QgYt@f`dSvh3cdU+M z9IVuKtRz$3avUitk`-q(9$z}sCDCS;`$QjKUH8Uym)!fi)9v0(t6NkrXIC=oS#p^*f zQ}r@}luUU^cq`S5m1Jlm{C#CnSUF3gnqqlc?;|STS7;imu!>PWsL6aB_QJ9ySN!C( zc&>C;YmQEY&ZuVJVr$*pU8nQ$SKq#5??8B~*!E;48JgpWEsNKj40hA1@U20~l$V6J zQoUF;$C18N*y*HsoOm2$WkoA`(af=A%FPFaw^F@WNrpBejh&+pMkb=wJ8S+_GUX-V ztyC{olA(=wI*d72g?>>Q-YgZ(`=gR6H$s_-?*+nJd0H~G5j(syj3#ci@dxkAi{?#u z$&{Cbw^F@WNrpBejkaT}G}`9-k{YY?+(kAbjp*Z%qme&PBO76VEl$)JK(mt~l#OcS zR9+I^N^OUZa-xk$GbZskG`qmtPReHM?UC5R<~4ao zqVkv%E43XfLC zD_hsdsk|iQ11r@F9pywr&;4PBUtAP_wOGj?R+1^FRr=S)QOY#aM`?BmneviQOR!SCSV^Ybh!iu- ziQdx+Gtr6ww00~WQ?v3+41~Axv}9=Wk!Gsnxguf_tt_zCbxEe&h%_4>&lOg&?I~K4 zOt}&74Ds8{4add4#O_^dJN<`zP;SJ9zdybAy(MeMz62}Pid%8f{~0CT*R>cvVjv=Q{8v_xwiecO>)11T!^yT0v`WkpSQ-M?PSKtA)|^Ln?v zXUlj!^rn`+NT_=Gl8R)?tyP!(VP0>-F^D!j5x#H7O7&tTnQ|lSul>%^$cJT$%m?Kq;jMhV zlA)=6T<@U64vEL1v9neciq>db>jfoKZp0lnqL0@cE7gmYWXj7{Nuz8(eH8C}$p_^n zAq`fZmP|QBent^NislO>$gGYQm46>tsa|Mg<$duHsd%n51IlrbVUZ8YOF|l~R4-PN zDK~=1QiNhdVo`{G9}vFYnx-c6vC&(Wk6p0Cv3AYVT22wnW=JkG^bp=k{;-k^Z9dY> zsQo@%&Wb0FYSPRoyH0mHY4$bVS6HcDtRz!zJ|n-BYIzjLBH(Tsj2Q(h9@ zO7&tT8QO@HBa6qu5sKzlE17a5QjRR1E38y6R+1?*R4-PN zp^XT4yVj~jA4Dvo6}J<^Q*K0>8I8w*mFmSxGUfd~Y!p8~-bLQ%%4;>h zWXg?5s}tfi$4d2LC7E&~{M;Q+NLgvtfpIOe5q|CtjauSqWFzda{m$tDL@>iAnevkG zR%#VilA$5;eMPG{j%G|%jiYiNPK3AOzM>}cks_I%>a`wct9T8FEY(`dOTvyY$Ddf) zFcvVjPrrd~>*^Y4{R;m{( z$&?$hIE*H)U9xtJcZpI}uSMh*?^15WyTXWN#)ji!yo;6U#Y!^eM)BU-?<`Tz0oa#U#(=y%}0vDa)hFF8?me9 zOJaY;Xj}E_s_EOPk|{Srk$#w6iv1NOt}#| z-g#v2sd=m8HOETzVkMb!BYtz?qTZzsZ54g+4P4dB*KH+JZo~(_u&B4q+FM5-SgBsD zBvWpLo*j~;;jUJ_lJ)jFa{KxctUQg(Tk)~>#)mThjGdSTh{u%5%T}Su{b2rvEwm9= zzGh6xpHeC?!E3DLZtRz$3w5l0Lsn6i;e)ZNCpOnFIoE7gmYWN0HE3hQt_H+@|6!MCnObGJ*T+=%}=@{ryWJB^FSftBjT zN;2g}{3X1jIOTVs z_wf#28&*w}mxMG}sa~ukQ*Ok88!za+@S2Iy2Qwq0`9(>l+=z1~FX+8y(~0pnh?VNa zN;2g}Z1wwDy}O^C9)0l3QN7H{NT%F~8-G2k_s=ic`-51iUaTZjZbbcz;u+30kPpdx z_gqxYw_~Mxu|m!<^=HFcxI4aYb4C0*RWIM5lT5j_>ew*5G;;j1ICjQL^b(TC82yYeZO;(bjjhGzX=J1HEk!zPJ$&?$B&TgFN#ESEyovb8NZp4~lUhS3p z+q@b(2B=;l8Of9zvHsgn?OnIf=GCxLy;w=6+=y_OG|zJ#A*=2=TKPaO3Dt!LD^KTn zoNI1fw&WeD-{ne)pr@8hx%mkF?h^IX-b((kk_>IcLw{Lk_LJ$pqDL0(?=i}a2=~=& z?klWRFIJK%HzGWv=7hK6^!I4Kd{O7&tT8QO@j#!Gi%(~Ii&EGw>! zYC<+*lHKjS+Di8^G_nz7=tVHAr+R%{N_k0mD^E*?HsY`0J+dROS{$EIJXu6@CrYN= zh(+N|z00m&9OHJZR4-PNDK{d;CGj`NFGuwfWk{yHB)paC#Y!@Cr}KtyEt@Uw%Fr)P zJ^ryhrvB^w!`HrfyPLna#iM(SocYkro9$_`$|ZL?H~!d&BLd;AJS|zYYU*^J`_)!+ zCD<>-FO@ihB$83O^?UA zc9|aPbuIBNED3MrX~{Yc)zs;1c+N5LI35k_+kJcQIqy%=>Z50Ece7+2hvZIY?@t=> zxdo^8yp^Z@@pU@;yf8hEq3*qZR_}-v&&Rr6F=O<{_dN1k^s(mtH%3`LB$tG@^0Z_f zhid9{?)dGj=wt5l(+eL*-1w|ez@Ju zmreNZ=wrfalSN1lGfRgV@urJU=y@woOIE8?Q>W9rWO4Ly{<90?6;xfiw%*FqCE>07 zo#F2V9kc!$>75z&C%DBorJ=Al*g-$<|f z%S(6lR-W$cx%$T<_B!(Qj(F!4Ph9T_Z*|1)pNNF~Wgn8fcTXSi$qi$xemY^YBX0Qn z4%d6aTix@a(AW1JhkPu({^00+*C)r{+&SmtQU1V@8{bU1WZCJzk>0f*{=kejE72eR z=4Tq(?1>Y-hI&QpIQ^(b~7Y zmM;j@#}PHjN38d${bH-``RTCpapN zjVF$nxp5>8J`O@YbUnPr6P;g;kHpSfLCD8t+aGYF*LY&;IU7V`_h0SquAqE)jVC($ ztrv;gPJ^ITUgL=)roSQ*Z`urkBlj9lAaA|q&aPDtY<~2O{=V|pe`>nNcA3sKUmecX zcIRC;+U7&`9@q(M#itu&OrK)UzFE)0$CA` z5jwBut@_msZG^12PRnNDgWsUn6!oTi;fjmjShcF-GzF3Fw*#KGoto4#%PnyyN>dQ& zZvV`o5F9yoyELBQck|?rcW_58PhR7R{M&?Rd^Er39SR@({-69;?V@D=*>QM{_dy@C zY;sL_jVI{G-ugxDyX1X%O+lnybe&E62&eG`{qe}ZPpf=*O+ln5&a5s3=ZdF+G@jtu zb>;81i;_PMuki%W#~sh|#HZhIz)Y|41kd0ZyLck{O3!U+Ji&9`Ml8NnUgHU(3>&eC zP_*>rU!6bGYdk@`Vxv@u&))LyO(Y|YCy0q`d|tFF#Zl6Dg1F1F1|oDlE?W8WSzhA_ zp6!-35D~ug-}}&MZ*QVLX*`i50FBk`KfBw##uLO6W$z=>Ydq0Ov2Pv~abJ1DTM=td zo%s)`RS@2)@R1^!a;$b-7^``L$XixRM_(T!fc{n$-hJECIAO}FO{#NM5YCG7a^$6R zRcIW+7^fr--{@t{m{TK@JT`pm&1+w=K^zb6UyO>*JpKo}cq_)7q8a0sqlx!F{KH+n z#uJQd%TduIx4z{DPZU;Z>|Bm<{wa)cJi*vmR`-nmMZ6wmt8}hB;jMQ3+g~D4j&U9g zV;ryX#L}xCk3|0%$7?*X}YlPW(+6<9LlHR!n*{66F}@<}k+b8cz(}_vc9T zk8!-l6W_b!Pm#!D9GO?{xOc%c%t*fgOSK% zoTlG(8c&Qrz=%A?f$$nnEWQ1K=%as(<241bzY+aooTX0ViIFFMAAR(XalFP8AHLFv za*Q)MjB&ii6Dv+IqJNCzHJ<3~XGA&1IagyGr}4!1ZdjhK2V)%0t|z?J_&v=>{}{(> zJV8z67$>yqdav;WEu7as#!1Jay1W%W(s+X3P5&6jYdn#EwTy8%4zKY9zyJO*j@NjCKBj++ z<29b3AL}3Ecuhg1UbKIVLoX_gC+Ls+$2eY75b252KgQu{AdM$@cJ+^Oyv7qeAImY$ zv@pi;8c*;H?jPfLjVE}{_m6SB#uLO6{bL-j@dWWo9^Hfro<3sBb0blXSgyYOi5b2wPmg?aYU58e+vsl2@jv*XxAOI_IOU{B^p8Kh z#uLcpXhOc)2w73yPkia=b?0)fK6c}pQP#O)hPVG*c`Hv(xn#pgmostS3+Kw$<>{dV zS5@aqJ>2{Edv+IZSxrHb=bp6)!hOQiFCB_Hp-;)xslSk}`=9B4B? zd0Z>v=i$EcRzx> zXdE&0#J8f4UB1=l!`0=jmTvLG=wpL|`0nDb&-9vtxZ|7A$7L7bLw);+XB;!?iKWhJ z=A0KE49r?JzQPhYU$12k3LRo2({|01K&E!YdkS@ zz}3;mwMXG2?2FX<=!st(^+aLyscWN;qZ;CcKpb{YcUH$~3gTr~MIVa~#K)>Y{N=)H zMm^DSRzo{o6Mb|WBJ6C{yYFXTn^kBWvGm$+L?0jD8z0I)2Yo&I_}K3FxIYlDo3q|cp72&fXM8vMnA8x;a^CUQ17>-RCzd{WMf7pW zPWWh!!_`$-P5n;vu}edIEBJWuOKjY;!p1AC`X_3eoFMhRN39CRFI+d;M#$>2U+o%w z^yja<#@D-a>C8y<=dZk`ApT{yNc88gmO70mR=jz3B>MALUgL?WqjMtBpTF`NPjogN zibT#|@jLe#PptT-JtEPczw#PSjC^ozB>MALUQ-YU4@V;Buef(doW>KKf7mk;{rM}e z@x;{c8&T%3G)M0>o*0@sFZ$@uUwMruI`1)}FMoBt*LY&&yn~~U{%n*dyw!?R%tt@r zHJ+fRGJo}(SB9)wYOge&poJ}S^p5aWoROTr;=b}4PayZ_ui6M%ah>|}S6)-po9>dF zzv8~)E|JC)+;2I51>rRXk?!{X{1tb*G@jsh)1SZc8c*ckCiyE``;|ZSH{rM}e@dS}UfBwpAJVEr)pTF`NPY~hs=dZlR6GTxt zf2AuJ=jc=9C5(-r(!?Rzve%9iJa%t9~9nJZG@~S&npKw zS6<`mB{P}V0W?I)o=W2hu75eJA6DI8@9XkbT>oSy4$7k#L)eA zU*(kpI*$8(efN#NE^l>2cS^j1{=EO+kag<_)vpU_Gp72(eZMJbF z@;FMw_{X;_TIH>dxMX}J%5l_jZ#n&X@55USZM#7v@;FL9u6gL&#c_D66}P=I66HAR z9bf+R4c>>hT5-zDBTZ{r{07Qff7>#ibgtBA^1biX=i3EeI~HajhV>p;`q+OM)v=Wm@yJVCID5LH)ztZ**@(wc{~dpBi%Rsm9Ur~d1M%3t=Z=gB(IOp> zypXGiNONUcX&sDb4t)EDU9)EeNp#)xDU^@A_|ENGswEzdJt5?$^utd^Wlz_k-mjD2qjL`#caC;Q zwUk~oq<{J~d_Vc32tu!=G{2?C{x0V4Dxq5S>G$(ESMUDuycU%x!7uUUUbsq>=$P@e zc`|XXa33mBf@{WOFMNZSo@!M>wYXwE_QFFc8L5P7acy|+g`@1=5WH|DREsN%V=w&M z!3$SHwYWw(_QHQ1yl^E{iz}yNFZ?^pZj0_iwHn`CZcjJ%!oLx`aJ8XY-SgivqTCBt zLbV#Nebb283qLq`;Yz4h<=>VWk$d4R?MkQ?e>dL_g(LiV{m}QUrG(`z_rkvjZ}7hR zCb#Le)JEk6Z&{jd||Ubqsf)ja%}^nGytF7Bh>zUQ{6M2YVCZX@^G@y?e9FFYbdi*&gc z9uaBYp~c+B-#@ktUbss1x_k<`7mi$^?kb^L{2e_i^zheI`oX88vZo7)5_~tY7v3j$ z;d(9A;`@)i@HxQ?S3?5HwP~~BGNixT4`M=_rjH6je=HQ zAJq$A61;FFREu>!_QH<|UbqsGR@$zVd*MnXqQw?2_QIbFUbqsf#r84x!tr$R<|86) zYoW!KI`_gsyk9>#x^vZHJ0E-Dp^u90T(#I=m3!fuE7fA37<=JUf)}oYYO&vqz3?}K z7p{bAv2TyP@Zd8M_Ya3xfWeo(m=u7qmQ*UG(c zFlJNP18SD1SlS$oxk z7ChFoDPg{kN|fk0Y={xLPo33sktosJv7-^W-=57|5{VKW zJM3UYJ~lw?b?D54s#T&yzFw7kS%7%(w#jYOLTS)a(((2vvr+CRMucc}Ev_*l_Y?7S zCq6Z@#P0?_QEjMJ zwN4dwgx{@iAXDLSIYfFCD{5vi!EHapQwat zv3)G}6C)yRYoW!Ky4+7xLbce=$9^KBwGoke1JGhWU+yO=p<0z`KOg&ve+qtLM2Hsq z`PfhF-E~`(E7f8@ANz@j)~XHFVn1K*Cn}*@?B`=Yar@vWDxq5R0LuMDB~*(ZK<+1^ zMj=|Ogle&$&;3M3Yn4!~+yhWQ@x8tq-p9QRn*a9pLhgz%ZPKR;xv$<0Mf-Cse|KgR@2HxO959T`|K%xX!39i1K1Z>>#e7+L`Bua24 z;@kt2z*AO<5?t*#=Y^N$>4H#+5?oPv`~f6zAFu3^?}Pw}5?r-;+8r;YHn5uGuYbR! zS|v&}ZTz7s6+{_gWl(Y=ZiMdJs==aqWkMN>{+#sEfOkGf~&K~|M|Jp21+~b zLnTUd4R#y5Ruu`AD8V)3E2sava33mBqHao;-N)wJl3=b>q6Am6Pn+~?Y6C6YY2V(k zS|v(!wJtRqv)4Q$ciwo@1+6Mkg6r#7?nVMOHlFlJl}ePDxvkq6^T^`DovTC%uKIuQ z8%07TN>p6+y4}a93!awyus0|YCAb&Cu8%!c$dyWzSUlKmtR1h!q^-|rRf!VZA>oog zKUuJ$5+xd+_MIu#tbL+Ds3aoNJvsLKVHqJ3CF=j;Hg3N2@q!JND6#ltCtB99g~K~P zfBj3VRH8)3QBKU5L;~$D-iJz*;657r-TJ8HO85PML<#P;F>TVKlt8Y=-E~u|UQ4yQ z_VHX*u16cFQU6@tT%{5vxF1Mv1NTvP`8q8sQGz)_DUtR0irQ2 ziH&_pu#~7IBGNKF^EVGlt`6S&``HdOkSNid)~Erk4+w$xp%NunH}@GX{K{69C_!(@_quncsr2vr-x{eBCAw3O?7>s8XFm!2SBVnz?R=MiXl740-J8Zv z5|H+zJM}EzIS(fZ_@6&3m8cE+sDAc<5-L%mZmE07y=S)+Y^X#D`r4=bp-8AiiH>wM zvGLM*1sf_+g5#0{<`)T-C{ekIkBYt+SR_=U1jknm{Yc<_gt1z-lMWw364d-H%*B!uB}pu5*!IH>qi3j5q1&GcG7`F368d(YM)!kl}eQ0 zh`xFT3HS`UlMWJoXkDveffhv_KQMtR@ znE0j=C}B#dRztVj`1lPHxbtOaY}l$2C7Q1~-tObHCzOB|8Wv{=l2iV zyjmqnboFr?Z{1CT??VaIn)xTU(Rh~e7L-~>8hkBqI}&Q2}qP+S_#~DQ*BR#X{G!97Kz{|rui*um7kR|b!}*=KYMfj znxnQzXAe*6tUJG-rI&`5bND@;MjMRWB+05!690MpMb)aMbYrJqX~hr{zX?Rk@6X*+ z3DufD*=@X&V^8;>U=2{ZWl}ePTzs8B1KOlkn(f)&9wyH#lmi@P~`?&j6B~V(FP_5yoxs3@g zlfcvc-Y;LRQi&3aZgCs?wUYQG5NFQ+SDO;5HRUI6qvb&otmi6GqH=^2uimD_M-zKh zt3-(-*4^6f{OP}u;L}w?wHh~f8%t*u36&@@b4_2f@p{(6;Xdwr@WqiTQDV(eo~x4@ ziZ+x`t*&=_n~k`IoA{p}x2QykBkpk<6L(S@@BHYvkxHmm-*vxhHlFI9n6@Q&R@3KH zM1*Q}9PC8DyGY>98#}g$2-WI;wG)RWX})y!|MxlivywPsds zWA`!k`3Z6#hd;e(WJ9$ok91`V%c`L$!v_bYjF%CEh#b!iZ3 z)$2RF8|O;2D&BRX_i0Kr9DjIZL$#)_AI`-NbK_QSrNoEL_eC~T>*m2ubk1jAi>Eu` z=q+0H&Q)uAofAtZD1o*_3Dx57+7C9B_8Wa{mMchhz%&k8nF3#UHfS&bM77~ys(LBlTW6lx05A+7RUU6@$5~|gF zgcBbRBZ2pE@6nf6MTBUrImn6g*HdDnwq4>}iPp{IotV9JAGwdVJ>QQA)mk*li8ET1 zxN(agNB5yxM+|jh$SfsZ7BRcW$4VXC=EWsZu2ie# zMkj_mLIUsnk#!c&(`ThxYc6+hDKCkvgYVqr*P1YEKvu#JxPD+K38Ybv@aJ(j+JK}d zI^TsBHuib)?LA09q6AC+k_p@W4;vs8%#qh zUm3WK)8C^bGT_wCOh>9^^8c{x5T_sA)-1-Y6^4aRl zl}eOocz=x%<+IgQqQv66J~JYot=<@BtE)tb;lEsML_S*`HOkIo5s4CALsl7)&sJw0 zREZMxU7r|HK3iQSN_5Tgb6?A6tE)r_MpDaHHBt+uLEnGZuh&|x%4e%bglIKR`L7ZA zY<0XrtZGz3wOR%yo$!6iXR9j_X>;xCwxoY*@ ze;vzJJX`(6pN`7T`UMebUFAeRTOD_fRgF=uL~GDeC-T|qAh4=Y3Dp|3WiQKBJX;;B z8Y4oq7VYOm`D}G1RBK726Y*^I&ak(L5~@{sffMm;b*ySsLbYaG?L_%(btP1*d+K`W z`{1fZ)TlB2&TUbN5`C|C8}V%Q{@*%xq!Ow{I-jl1)<+4|Vs8I5Nl#u}dF!s(vw}nk zK81X?I&J8+RExit&sJB75_~uDY;~+^R6@1*{^Qx|zgqr$RuW-dwOA7K+3L8DX_IGU z^#g=zu^h*<)v>Bka}{Z&btRsyesPn~<>wG?29p!35n60iv zq?NWS<+Ih5VCw@dwq513)s;{!wvXkr)s;{!w$$ab)s;{!w)639b*yTPh}36*7W?_~ z+3HHD7W?^lwmMcdDxq5J=i}Mxmxfi1N~jk5`FOVa$}n493DsghUp`x13Du$p5YJY} zszxPLi~W50Y;`46i~W2)TOBnDs~VM1E%x*IY;}}ftZGz3wQ>(YXRAMT^1|p@sTRM) z#;wo#7yRx%wV_%Se|_0JfO!8zc-AUWqNj7*-3wP6N^^dDysP7>IH4k)(+-Ieb7uRw zeQ~bN>c884s--z;oPDR=#{t`KC}W&IUH+?iDp7)8WpFkf ztMMw`-fTga_6GeoPIxlcq|FLkCRH5MR%@R{QCZ2HHi-c zvCq5nqWe%S&Ix#DR}%P|asOA>N4Zih&Q#blD_6=hyaoNCS7t7K*Oq7$_wK6B>Td#FSSUa5Svt%PbVe&l|$QBJ5zN>7<04|znFY^RYZtZ#Uv+wyRi}@=Is*a zO0?#jBQU}l^9)j$w(zstMVZy zwtj7el#(CMIv^rcYtH*lymbi)v_5z5v?h91s@1*u_4dw>IFJPHW8#n*kqy;q-p7eW z>ytpOJ?|&0qB~cu=F^-w?McRDkgG>tSQ6z*wPxP!#C;c$K&}vh)Muqy6^m!veZ(aZ zHHwm6<8NO`dfKF`vowB(9{%DU2U<#Z-Q~IZ`M?{5c=d$mvu6cDwJLw(MDOMQ5~BBm z^CLpFDn~o{{CF&dH;ieLVN9QNspf`#0l+FBSN(* z&UB*xx=Orr`4w@lM62UACl20A?*ng8a}{Z&bED3=?AK|o@CJ{Za@M>=BuZ4g?KVDb zYLfeS{v!3cH2Mvr?^wntz#%#mlEl zuFh#ZAhMxaiyv{Kq2qUA?@9u5gg4&o z=hcx7(W*=5`)$2736$Nx@07HuM6cU;+s&4%85jI2y${Td`q$bss+CZ!`g9KDv|CBA zuT_Z>jp@wHim^%@``0JtsYHpHQ*NPY|Il=eAm<(27Glq!O-TXaXw+$OTX@O>>uzdZwN_brmj1=ap;+ZRzD8Wc!zVe=g zN|a!vuzYpDN|a!vFy27`dk&~X2}TO@T?+6%!YRj9Dp7)w!gwbHd%EejMo5%kq%hxY z0V9^MHls}?N-$EG@92Pb7yDnSL_^L<1_`b801jB>}T z;`NInY^W9^={>A*-?OiMMFJ6Nr7`_{#X54OUlgrWix$5K#Ou%Xiy{cs;#Y@!H92hT z+K_)y1QBVaUpDf!;UH$UmTrerBVeXU_@}C1@{RiyZDe`~Cq!wfGdu z*9oh2)#C4`L~D`HSUD=o6(maV-NfsJzkg8vMG=H*@%_iEelL47|Dp&&wOA74HN5&o z5rk^79LFni^^2kr=~s5sO6y9#z7}s#zbJy>7e#30^-)*L>K8>2s>M1VuYFxDUlc(^ zT4}oyuVmG-Yq=6Fwq5bMRP2+g?^dxQ`u^+U$!W2-Tto5Uz|{pppOw=5Zg^qmY$5cEA|y)ii(;Is_fOn?gla`Ok+>FWH~zx8;nf$<(}15a<^9#2N(?;x@oYw;5$U{OXmP&qvS}nxuI@ViC)pff5URyF$%pSq0?%rr zwtUtk2-V`e=WUiUS_|U5emg{Wu3DU1ecmNX)bIP>Y_2nGs21mMFB_-C&MTWELbW(Y z{G87MoUQ)gElRXK^1J9+sTOC%uQ@`AZ%nx^dV{LP`SjD*Q(}v=wv2M6 zTAa~(&Ar7KGD{+!m1;44QWitT`#_oOiGUW@A(Y3ERifAB@8uC;l_-q6F81oE^oGkN!qwwqgW?YH_{EDNzi0ll!Meglch3%hpj0dGgU)RPjDw zL$$cl=I|(neD5QFpQnUs%}7_D9U8@ue|B+2l}eQ0`k&QN4Ed6W#SE|MJSks~y@{YHTZ&4en#Wi2e zQ4IOa(L?r7LbbTA?71w4j9i`l%L5`Cs>QWy$3!vYkCxvQJuB7X`nWiTyxZf4L^f25 zYw+S2^4lSXtoNZ>T;~_ZkS{u@d887m#kGV$vKX>Tl&GJa=4uRM$cW<9JzlC( zi4t4~yP_$8C%%iy^B-iJM#7z{AH(lXz_a}AIr+I{MS^ER#JlN&Rf*c*ITUfOK&V6so;{JrUXd$3mkifZEuL?Y z$9M5`^;|L#s>L%j@)$CRFpD)iH^Xc^|K46$k6}COUihx1^Efq#Fs{u`^8mrqJfOw1 zK;l@qo=XNowRql09B=qEuIV(N6+cN53ke=qE%u4!@pdIti~VjMZ@1DO;_XVP7W?)%-u|Z$Z&yOK=s%Rl+m%o)`Y7e` zb|qAc-cotIT?y5quT>szS3Q8bb!5Hk4)#<9Pd=>sF3bi4t|`dBSn7EhD&ciOG~VsR z71!$wQxGaqqV8cQ&UoqUf(?}@QTetLTW(w=RH8)1X4l$%9PlH~Foj2kT&YBfx^o^k zqW?u2VJQ--HRnLLvEnZ}!xV%{l<2z5iA(;WGfY9KM2Y(MoM_yIGfa6ODp6wQzRh+Y z$)lWM%2J{dCF~o!O`xtTRk;A1YB|_-rSh>*fqo=1L_>)bDn^ z*;w+Z&M<`ul_;_J5hrHet20bNs6>h6n17m$LHFtmQxGaqqQ39HjOcijGfWYaS@8Y; zwyH#lu6vxQ|CHql#9y}Guv#TbR33YS*?3}i5_nc8PQIl@B}z2y?Pd42&6U7yD4|-z zx4F@5B!6S%4mP@<+@(q-N;G}-m=iZDvF>4|kr5$UbMAJcxmF3}N(t4ff5mgvoRC0C z-2A#;ttwHX;TLXW>$h~CC2T06T63M@(V`M1ny0yquQn%vIl}$7{&lqys?{~<7PB!Y zn_-HQxcAbBT2-RN%+1`!iuX7(^Zh{VG5hH@B_gerZe!DIz9?*beeB?HDoHL;qGG`! z%hf55)5g1j_-goT5usWgM?2Ax%@_UNny|;#UB4ftHdL!)#v^7Uj`iVvbkCoiOC*Oq z6BnPjdp15dk7eB@Mx)p7sBN<}z8m7o`19U5QLPzIo0g3e=6`7E*vmNe`d_sup&m!` zfDbZzZhtc`ne7Tp=FyQt)zvI31;k!J4FaJiL^q_^itsLb2$2NnwYK#4cN_brm zbN=JK+M!GJYdG#mB@r>(i9WN+2$3k!c#0EO*A)qsC{a1aiKh4UYxwc6-BP6zB`UUb zV&KIjP};YiH@j6ON;Iu@PbL{jf^SeI5%H1}=e^8t+kCoBB2l8@0VhVDPJ%X6qD19f zCuVM0BvhgVy}=Dyi{H;x(i8E2dzMN>W!j26?);?>HoK2Da4psP-=$p%)nYpKkWtTd zE)GwxLp{$=%VRx9t{R`aW)Ia;y64$DldfMmPYKm(c+GcDiboRFClM{W$7h49EC^7c}C+0+RabQCwN+g##u{xTI141QA+;+7SyG|&! z3@TA#PO}qj(OevuP>B+~uXo~|vbi`a>4}Kv;w&Dq_&ySlD53QRdGT{hZvSAj5lX05 z&ov695~{^?+?MS0*1j!05zy-1rH|E*m?+v%Ev7N@h93Uh%TODtb^kT~bmQ4O;8dbS z*CkHGvv)Rpe0-HklxRA~iG21>)<=m%i8&`a5zpR1u2iB#*XVxstjfpdN~l&-z1xUq z@4$vil<2>U6Zz~N+{ZdQ{H01IN?iR7C*s*VyN|r6RV7M{dd}P6c=ir*r4l6uUF$?+ zG?%**oya-u_9_rV=H3U++Xddk1^=f8M=ewMvv|*w=}8 z_Rg~x-qNBHB|3iUWp_?CK8KAzT)1PK5~}sw2V2{HWPV^P?dIra3* zcY;hRV znk%+&J=wr@Nyqy-pLOX&nP-Xosupd;`#L|o^y)p-hH86)p0TBp-+S7GM+~U8!Ay^&0$W&^T+_GM2X73I}y(#1EG?Lc)^Ky9+?p$ zQKF;II(8rNJTed}QDV`~PQ>%bK&V8C{^Om9=aGR>i4sjmq&A{+s_$R_&3P(OqIvs1 z>HFY0)qI0WsMeaJ+(tf+j5SInO7KeYtgw))JyfCua~RJ&!<{RkT6`kq^T<@91k>?M z4t=_~mTK`m#q-EOs6+{tg?Jtr2$d*NnU=SB9vKLgL_}KJ^Lb=^A1v*VD8YIY&m)5k zl_-(dO`S&uLM2MD{^#?^m@Abi!8WFR9+^s%U^^DiBSWTC5)o-Dn$II+X=f`6i4ts& z<9TGTp^}J5`;UAc8Sk9E0VGPWCyM8h!G=ndU~d=CBilKgs;d$u*w@DM$jnCC*FvHM zd+m5083>gqLC+wbM}|{%RiXsFk9-~(o)u2jRf!VxaN>Dn$dyWzpcj?TBTGH9YLzHK zPc5HEhMij;_`^Y&4+n`7x!0%j$dIe1*88o8#4fG*m!D6wua>b-jnSQIDa~)Jxi5;c zdwQ6$rG#p6wpcv6oBP}~**9U6h`-DG$k%2R{au_y!smmtGDzg7U=;mbXz^Kr=2Oql z=3pIEi4uIX@%bM(F+?Rwu=K=djC6)mNmQZ)OK5(M33H_qC0Gl}&q`5=60C#qc`Q%t zbZDzelwfTxKl4Q;O0dPq&y`{8qY@?9D(xE1u|bK&pGOT;q6E|VX*WfG7uQlPww2{4 zpQuC$w#V_wC&-&hA|mx_%TGRGZvcrB>{sHGPhdkOO0e&WPd)*m5+&F_#wVYEP>B-k zgY%P5_y$#?1pE2;X!1ijk$B+G-PDs$K&V6s*8lwE z6V?xvD8V+S{NxjrD8Y6tKKTThQb|Ol{%-lnCu~I_QG)GpeDVows3am%e>Xq*gztm> z2P8_cCyGx#fen=?!QL)D`9%F)NR(iY8lQY(Hd22V5+&Gc$0whFP>B-s4Dypt;QL(p zV(#xkq6EE<{NxintFTjH=9fUC1U;Pi@H2}qQvTz0hCn6;cIZ6H^>w=5r_5+yk6t^C{!l_)HEU9qlo^DmCE zT&;PSxk725an=#lDp8{8V<(=PO@dEXB}!DD`wO!%@}eT45+ypeJ=TaLP9w1@%*zZ^pS*}E)MDwx7nT?$fBk^{yaa_OGs#T&yjv{x zqC`WqN4a=a?W@ z_x-g`wMvv|de4c?Zzh2_!>_)zNt;TPXz1%Rmp?s(1Z>PXbU?LAl$f)V6KmEXfqFjn z{N3ABqD1|nPE5bM_(f4AN>rZh#NuBR36&_Zc&-zNZe1i)qQvkOP8|FKPd;HOQHc^2 z>HPMsFCl@Fc*eq~=cz=A?r}b!J}*~nOOhD_7UFx&4qxuwnXEq0(u*JYVP{9%4p|zd zDa@h@Pj}EeH|?3My1ov?(48iA*0tT*f%LMSCv`Uc?K=DYpNiP-Bn{9k6{;O$B9K9o?cy0h*u8;4ht_&nJ7?C-yBQ;8DE zJvW$*gZh&|o4EU5zO|!V) znT?U_kw9sGb=$q#B8d=nhu&;9w*36a!dwF-BCRv;HXB>4CIK6bt^2nnB2l8_(p${N z2FpqCeJG(?O&#}`jrEr)@!#zZ8>tc{lE-J8jiFDGVEs@+wK`VKH5)@7CxNzP=apZz zMiRMh-O5|d#ual(@II7?w7z?v*|_8`C7!+ZxYk4@5z+5{T%`QHc^8-C;IfI8_O=p@eFUYB3v6|CR)v?$`}>+apnl5KS|mG8=DA{fT(t z=RS4CJS9}CZuSzhv2jEoS1M70>0VzRDmMNX0j;Lgh7xw)iAtjDelWsv^?wtIYE@j? zBhgf=T56-?qx0=q6>Y?XYBk+9po~aYZK-w5Rhr&^`yUmaRnh}tTIuhHPW$oyAWS0H zt=sKAyL0pm{#02%B8d_|Tx0~k2>frNPPMcrB4YoWU%SuxB72JIuCPe+Y#x2O>9Z0o zrJ3&GS@l4eR{HxP<v%<(ph@AmTGY>UT%Z$LnTUZ7NYg@ z>C^RR#nOj&uBDH^mp|Q}w3LpY?)TF2I93w)St22>i z(er&4gOoH!R3DwHRSDAl>^CqfFhqb9hiRN^D z?e*IgZ788y9QEb?)u+M6hdW+dtr8{Xr0ay6H!s>yLbW&+Jvj5P(4SA9^Inxolt?-s zwKw>uzO?aPATIvSk~Sq&t0^5j=l&IJeD8r$RV2~trmL{0e8!%W?;|2aizE8}k$-j0 zqx-i-5+S(id(xYbWYFD8aS*%kM7QP(rmD(wNMw$iG_uqM0o!QG$B|%)hK?BO=nB382-KMv9J& z{HyxCD@LkBugg6SwwqqGp+uyWMya02{3|@&EjJ7Pl}MD}9w5V}sDEW`gb=F5_}tJk zLM2Kt-9y`+#tm^T)#8wXaHeE2@NQ@%OmLLB3R? z1k-VU{$}W-dLm3KjrHdJ2i{<7=%bWi1R7e5c*lJd`twL4*Jac>wy|UAqm)oB#;oH$ zYDCx(NJsPyhi$u%eP86M;Sq&Df4bV=HP5cJw}zZ_E#EIoyFSK)uZ=mhZTx4xq5}OL z*HEk&GO4p~x^5!x2QOKBW@+7{m&{i!rH@G0W-QJ6!G*!b{=5HRPbE}q<_&K9m8@6e zeJG(?Tzj%{)~mq-*yV#Ovvn+xDDl1DyNzK3*nhyrul~71m0nA=>JD?_jVx-wTq&Vi zTy=9#h1#e(@0e@_4r*H<*h1FV){h4v1AqrgrVwPub=bCvZtxbp=sZkVm@gLT#7y26th zXal+G-21?=7TH%8LZSrM!48jloQ?i;LzNP$#np}zcTyV@cD<@qB}#Bb^5!hNVDCfr8sEvXG$iv+Z|9&5zV{lvyy z)thAden6rG*OKJ~pOxlHugmlaEqjTLVy;wcTDk{Ba#-=sRiebrfA`gAmklZsDp8{4 zVkerv+NY2!l_+uB3@46wh6MVLQ#anQS|v)%Jk5#KHg684U*y!PcEVx|-Kl*J4xr187YrW$>m z69>K(h;)x|(^5L!U)E<+y}0dWX5;lu>r2>27T3b8DehHk_JmFnB~(jk?nvwNuU;Fr zp4r&&7ZXa@c@{P>n@Y8mP7)od0YJo4ijJgc)Fnq0zOwXlKtSE{9Sl01F5 z6L&p4*>Z(ZisedZ?t1HUygohf-)3W-p;JrP-4-@5mrJ$Oc9MJ|glZ|xeR6$P*ycM; zwP*F*q<^<#XJ**2d5G!G%$Q-w9h-fA;s!fAalsM)Zs*R-)KVI0pP#tF!;{U%un8YW z1a@hL)`+3QI=N#r(n&JyAt(NNq{OE? zu2(8*F<1EAYy>(q4o!j`$%hhJ%_OFLV1ox!I49eKX zcVBbj#V-Pp?nzCpELY)oqT9r+C~7H z$X=2t!MU~5Cb^cuskNL*idD*(2?{N&aptU0U++A6eZtm;tE4`I~ zgjz}?jo*DW`NQ?6+I^gG>XdfO@`eQK9XUrFt0g)6+t)!VQPffzXM0?zpL^Kq0=Ev1nL?Yk5leXM&jy_S!yrI&&A@@##OceXx$ z9}$syMW&VdJ4UCTjIX@kbARv8HwiV0y)fz;`*74E_S#;fuK1A?sI{u4H2Ze1wbFCe zuphLQ>2fLw`$1o^t_1s6tV}P`cvik*{p4o{T3d4ZC1=!f&Ng;#&?l--I!WGs!ioC= zp;}5K4I91(L}(dm@yd~VogtGgV zJrk5Tj-9Xr2}eu58;KICr8GxHUUpC3c|E(2U5}ek%e6ANmX>fW`AMRLYAKC0o`UD< z#0hh2PzP_h{N!5o4YcLd7BxwfP%Wj^mk8s){GGSc$3ZK@w+26fZ_|ASB~(jkmIZIG zWCUrw0m>-)34Nmaq?2Ub2|niBB8IYk7)B~PAgc8m+KdT=ZQPje9Nh9s`W8>F64nBR}x(nDQVz&;i zeZ*cLY!iJK4<(9PxGrhG59}=>qlsFMChTt0u?TjZ;rPRMpizP&7D$xlD8rxbt*@SG zcmDcmeHP$cDq7cbsr0<6B#8()m#Rqfo|5G3Wj=zOHg!NPN07x+*f<_^UsOh^wH#;S zK8iGK_?-tY!|Hh$(br(a0*QGO*|_G}g&fJam!U*Hj&d!fk#(N z!gzoy+vP&d8ZmH3r;mdFVtN^4u0BpemN_ra(L1pJby zWr+4j3BHd#UHCplEv1q6wnRoOHT3AQj}O}@)FOKQzQ2zWMJ-&HG}2xNgSTY4g15wX zj$WT5J=_!DxqC~&BQpXXSy2nuC5^OsYDpLs)uL_3I7&SLEw8c9Kmy~aq86@eUPc;i z@zTEarDvFpZ66p|gEQ5jWq14b%ho5tL*iL${;ZVXxoy-^8fo{hSZlXAtNzDzXyMF8h{M%t zORZz_xNQ%us1ayIi(0sIw1YZUPm(iw^%;$_`(9|{IlBeB?BP5w5E#qyY%d?zDxq3R zBMsX3>kA`cvw^X*UJIv;K?|c_o;ccX|)|iIjuL~-O^jOo=nc_jESO_(nxzh z7)C5s2QkLc8Wq)*w71K~I2oZ@N+S&$UI))iV|@<|4}NbJhkG{aowX-Q5+$?`FVgva ze4O6Lk1k%cfb|)k1#^O!40DKdlE|GeP%Wi-f9}cbkhWL5bq;J-f^C$=uhO>5ZAg37 zUerR~p~aTZ<5wHam}0ed#et{RYJJvGypHaZL9dIs-?8XgTlUs>DU?XLnB`58*+r4y$`GBp(L7TiFOyyy-4G^`TLMqMvbifq2 zE(yd%BdrkEfIYOej5&C_D}Aj+Qehnu_OEEE*`t;dMJ=U~c8@H)!5Xwz_RgPw&vL?3 zprM8KT%)S?&ND(|tUMJFG}53w?z72{PqkY6yR*Z0-6yP z-+k}7jr&;J{>H0kme?X=54yZP_cU@fZ4&mN`?nCPr8L`l-{(#|nG!t~NLUiFe;!Ms z@1>`NYAH=WD7BG);jK+BO6)GCa>>0kVbq!f%*TSxcs-<)&yF#dz(n!OG@1GdHG+0RtUm8mK zZrMgbi>;Cq;cJEw;cG@owUpMf5P4*yD=+Z(ftFKi6n;mpyxkQaZgf!#Pn0y$-W%w* z3A{l_>`h(e?;ImxeY4S6tvxAdDUGy`wx#uHN9zL#`a8B!XoJ}*mG^^1Ev1q6eo!Js zC6;P@i*Fg|b;5Q!P3w(+qnBt@si=kPl1AG1N#%$>!~nAS43Kc#j~!4s(vOJ{1IXqY zP>a`PG{JXPjb=KfU-hidNM}7^H&uRV@SRm7Lba4mzZH6qQ@w?c2bYF6u_Bx?fSjQ1 z>zd_fk)g#w8ozt%ql9WHjWkN4x1v$4O}~1hb~3V!y3NRTc|BJx`g7Jwge&!2&$X`6 zHza}kC~p~5OKGi}QE9JXX@{4}x&j}U^&|6l&9e;As2bH$8foOp{oOY)4h(-MgmEFG z=h&ZCdwul=l0*sBQkoHZ-|6=KBmLXNu9u%&(&w(drS_spqJ(NGt?wzEceay%V|nhl z2_;59;IZ(#3Ub0PDV{4OR7+__Slsss-ckwA3iJ9HNkOSrEv2KFjO7aD2iH=X@foil zQqOA}r~KDSHKKKBCGge|tz(PfkvkHI^{JN9NQ3q-itITtheb;X`&WEvh|3iTjMa)- zxUQANwAc2p88X_gVY>_8Q2PwFyY7W6QPhGB(nx!cqhBri?(d}<-!tip;7cWb_m%;( zkd!ED;ku-e_V1kH$z(I=Op?wvv-UiV`*_=~1m~nd!Wa-}esyvi@`bn5_3O3vrqI6f z4Wf1C8}yc13Dr^>Y23ND)GQ_FKUhl8PbkfDRo;ITweWmMBVFEqbTxi$_kmKaInf*j zFI?u6&~u_)0d4Jyv=Y%*%aUp-jWlTQ&()LB z`m9UheB(>8BpFb$lR!sYALP$O8jk`ZM*pfGFE5X z?mmNzSfUYqk;eP*@wtvU>$^U&_kp^mBU2r*hB+)U=2R`Ek;eNdk4)$oK(&+(ZF~OZ zr=(g+>zE-)G$u2A)kk(87-#4RLPr*HOh&boMjH3wBbG3u(P|VTMfz^F7HRDYt!Fw9 zIn0{0T8nF;t|_f$!Fo>fMX@S{Gn&xTt2e1$W`U5?E+RUeC*?kaj=b_O4I#D=zTNR| zHENV3N~o678rRArcbNOpQ{)a`7kZBMfnc10S}3oG4l>r~-zLOcs->5KS*-M_;1$!u zaSvGu)l!5`7%R+w$J$S@Cx<3rPvp zQks5{NAC2y8sk3rCPZHyF%o*`<=@qcTF5(Tq&>o-vvD<7>^U(q#qTI%JWDR(M`j~oSVv2(v_^-m^|APF`0i|826BRyOe3@!xs3_cQtw6m zl_(BprQM!ls1y1Qv=-RcJ{!^FYhO`IX{7xPN`KytJ{%H6w%CUwlFGi_BVI}rwUkEM zqqS0_vb8d3Wuo|1ItR9VjH6l_f#MukZ?6_@b+omK+wHrersB}0*0!URbhR$E)_L}t zXBOgjyjhQajN00XBgd_%DQY3_q>%=lB>$Olkhi;=Y*MNp@`l;ycjo;IyRYxE>tZZ| z-(ds4$3#&J*Cma#j|VHa{+Zc$WWz5lSDE#do_CaX&289|`nyhyT>s0Oq@blV(q5w) z9-nA7mc7%v76c`AQ~W+Q-}c`N^-4*yG9^~M-MhA^r8Lq;C#ygDjoCPE`wMHDR=#F7 z;N2}A{JK4#wd0>!h~M$7-0Rz++lg%lTv$`o!gWa_4LbI(D#pBRHq5^|;T^lK`Bxzg zq6hyt1-zt_5$qYx5PRg;5I9u;C*X_1jfTX{2Gp{r0Jc9d6HR!q?xj zr;BUhDYC?%b&j5Ta{u8@)PMP{+M<@yNPF9^BQMSG@S{GkoM04&G>G!CnrbPn_m?CG ztlG=&`C#HO7$C7F(jWlxQ{b2C=vUa!Q zrVmYmc2~VH_0HmUSGANz8o6>`^hXVS?LIEM@rY8>j{h+m7&TOG;w9sYfu2ULkWLaM zR7+{3VZ+BCy^h}8Y&^2lfu-T!S#CBkuIX4A&J+$>8!w$_Y1lwINd_O|#K%JpEUA{# zNQ3rx$+CYOU^X^ivPG%lSZ|l$muTA+w^vH2meNQgR~|1})8AXs_YPUnUf1Sr$=Ri_ z8Zd2ZG5W>t$Q6E1l9RS@V#kA5v=_B-UD8PV*m-oviFP0FELqUr@u;^S_*PVZ)$5j% z|LnBT(y)PalC+kbnEuLwcGXfEY1r`ZgF1GebM?C>ffuedRcmlOc2+H=kw&h3?0oCE z@7jI5@YTMhx}|TKjo!0c7V2Bmx0xib?C-=SpYLm>gzr{qr13khlq828Gu&)^b4FFE zdD}P52Kv=dBMp1*m;8O` zbhB~scBi+qkAjcW{IvH=16m)*`Y88(lqhQ9x}=c?9p(}}a=O`=`n{_5#v8pKgeTni z7q`*a_o0RO9rxiLazqrga9z?!gHDo37mqL-oB#R;@jHLh+u#RJX2aNCEj=a0S%}~5S%u$2?<_=73)jUM5WgdBbn@70w{ibrf4*NO6=VFm z7(qr?iin~XuZ!Q2_IXR&{Mgs4y*Kv#(H%$mb!SWpX9$O91ucBR;1lt$8A_;@(ny2G zm6GI${-@ddxPA7-c9cX&P~x;KX$g&qqL$J~dr4ff!acH2MqU`zDEe(E?Wk#ZA6^G< zNr~#}3#~>$LM>buT3XYRq~Df)AM^h*v4*+A*Ph1op4P1OG_HhnPPBngt+W;y9n!Gp zUzctex{f`ozP*nsp?8J^{kD2~>H#K+5~`)N_VY;+#eKx*)E+>4hB)q{T1`SDjXQVm z_0&0yb|3Sn+!6O`(mtZM1L6Ik650+%ePYxmzIcF_-Sw||e*sG(YUkp#9A9|k!&%w& zTHBQpd;dKU1uZ;j(ny0&l4W;#9b7(rztLT3?W|lc%*;B_>k4Lw;CI}I{hqv$62nj5 zZ*)-$*Cma#&o9~LQEzvr^{c9>Pur`T?|eL~A1E349X9ZL*kdUr?p(hrDv3qfYy>(< zzTR(?y^psVcPXJ2g~Zxg@qM**jS2N}i!`p}{_ePK{8{b&{4Mr$A+e{JJ}b0v`qYy| z2|g=oDUGzp$evC6!OCq;w;F|Kg1W|)NOj1x%fm?4acrXFuLrak&(4LxC4pSi93 z>SG>R9Nkk)6t$Rl{Ejr}BzZWEWlaC}m+g5xq20y<(1NEQj}0E$>Sva#4LABS8cisj zM=UU!(C>pfe$^43j`Wg5zYnUG(mLJ^qq}{5w7qP@^-CCSBkzdTG^g>BZLSRaut*Fj zNmh+>;=_&BFBP?vMjCXI+&|gh$E+1kws)sb@vZJs_6{&g!S8sp_&p|AuBe6Ul1AFc zIDhNh-k$E*hsKnKZ|dU@M9*{tp(Bg1{$rsNgC8DaBNkY<5sT2c5`OnM+*Y4?d-a=7 z&Ksp(k+$dRMTPxjQewrY=Zz|AA@A_1qFy2yowkVwF1f{e18AYuS8s_epZ5kN>H|^K zQW|OZuSOm)#Gciv?Q2UI6+wcrlisa9!z58cwUpNJRg&EOq{rblS>D@932azt$f9`d zQ5j2;0V(m{Kxmyn8B-c*U)_Ju%46+5E_nM@8*STtgfY36B^`w)$;BT#@sIajwUWpZ z2Q8(M_LBJ1JKZmN{-iss6@>(?rM83Gx+aMdMJ=U~_EvQDJD#h5Ztz--wld5+qP6%P zx%JjZiJ}&+3oYK0M}%elN2%kmA$GSo#j#=8&URg#^oTTQKM!);?|sJaU&9Ot)lwR1 z@R%3jK?~|3S-ey8fn<@z1s$+YfS!f z-Ki_=qy?Psi{C-`>A*@9wUkEMPX}&Y=yAA)@cpCd!0%dqaY|*w zd)r!0aQ-CHApDfdU2b*a#z3f+(nup$eiCNbAI`p|Vt+W?Ij)6g(onUDX<>&qr187& z_7?Vs%Lvs{TAyL`g}1hOGv6s2=bvK-ZCn?pq$7=7`HAV1miwx$FT$!V)lwR1(6~|* zDXMLLcxSs7&LD3(WQb|u1aqWe!%s8+=y0FOv0d2nMYWVh8aDhi^Pdm#Igrz*OsGxn z`hi^wCyICd?)#>N^T?5g4L_S)3Dr^>Y1r_y$-j8fXOh>2l`jpo{q0&f6TWWtW~PPH z-jRk4Klxo|4%Dia(n!OGpDr)+ENh#e+1;*X=bUR!HM85p;}5K4I8*p@GNzW$@DL+y}}9abtkN` zHpYAGGkuTRmJ;^iIJ-SAS4tGM za9xx>dIo;-yYvR78oR<)GY_Bf2_-(Pn$+V;=V-Wk_Izg_q8mSzJjD$@AfduN%qRI6Ir>uW!s zM0;{n4qL~ri`KI4v9K)V9=WY7HUfLfs+Q8)KSnc`tyjZ+puelzW?gGn;ISf& z-`#ta+0nJCg+7tA_K#tnOulz?ElUHuqP)CTW#!ntrH79XqloZ#$H4V!i&}UGq>&ym zv?`QcuG{{{>3yvAfds8g$4Bp_bt0tGe$ZQ=+d~Tt8`n(_L_teww-H*qfJ!31b86qc9Tg*kK2|7RJb0i?nvx*uV&kwpB}Mr1AcJv@QF$Th9rJdt|wXq<&ZE zox{#$cpqWMck{^b+|47C9$EX~{GErD_Y3d_`KI`u;qU01&52M-%v(aPsHHU0?k$zB z_If@u>_4c!TE{N^?QRi=K^la|WRy@XrPa4f64}4KCU4tAsg^!NYeBSsdreWx@55=N zy~mMxukGxk(BI|P4g11J{h;Kky{Lujl6HI8RbC?7wK^u#QKOC~lO*&8)?Q&muUbm$ z7%qHW$|GJjqQ@JwG2nMMvG&Twh9QmLeRQWpvuJ6gKw|^(-c(&b7;V?Wh_2)OJx!@dExmxx5yoyqDAh6#+C59$1KB2 zJ$qJRy+N(U6Ev!#(U!0a`!AdbCv8|12X~I%E21SzVZF1pKIqR;N?3k0s-n@Bm{2XH zwY*u`wbG7gt+p9@xB3jDJ)P|7@|h^DZH(P{Em~3Bx%S(2{l8(Q4{;czaV3w*$U4Z{ zNK1Ns?dOA+k)I1tTiI4)*F}%4r5(S+hWF=66t(bfNF(j_L*{H-u9#mP@5EyqB~(lA zR_`xKu1WjzpI#mI5!U#H#H`uRdz@PO^C+?%(P=;Lv5XK^W6x=$JKP7xeHwMtXk^qo zTa**e#G;%sYSeLJ6oD)?4DDxi&`yKV(XWiDV?xKsN+XTj`nfXVAx9%f`q%c>q8OPH zszv`A?G=4$Z$;II<0=~XYFvXeV(4z2TyIeB!xgpg+(;u0I%?ZXYx1(@idwiXX{3Er6h?PO;LMkM6C~aaX(n{Mwqtj?D()O&ZEkUow)p_=&(zShf=lC7> z;cqZ{=LId~oix&3&-JVnmIgdg)@_`2!V=@}L(fVnYT>%1k@mAv<{s^5jI6)wdbP>c zb@tpbYS6YTZm;$WCmW#^Ju{qiq*_WN4I4iG2$2aR5Sh?7*mT4X%^t=B@jDOE4#UF(WkxGrg=-A@eBTFVvUyT}zJXvy@t z%&oU@BoN;%YAH>7(KyO>bf6a3`Jk=k${x3&Ep<^#X{5cS)@T%0A|V2$?MmF1Xv9mk zltvmhJmRHeHGWsY=qHcdc^X9dSWUH*=2saXM@iJVgz*xtg|Dm}ZQmFon;dN;9iO!o zX(^q?to?iKOTiyOX&*d&N=@ZGW6XwqW!-9wm0dhh{Em9=Utg6-3R=h^X{7yqXe^wO z34AkU^uuD|>G#MUV&Uo6Nl27t^uxctO8;T&IgwxX8ORAnbbRMNx+8%RB;PqC+Ls^= z+WQarf>q*|Dzq~6EZK^J@K!XO)MQT=CpD>-()8!Oz0y_K{AyuuD*fhR-{sS<96fxa z7cHgvEyUlseCM>@0Qt3kBK@{$WhwpU>E%iZexrp%dl~Ilk|ea$cIPjIQ>~)AO~*B8 zspC68C7ex#l8BSDv==VY$gTGVQWD!)5)oBlImVX;mRuMuTz(C;k8!AA0^dN znqv`f8FYM}f8iODeILSG)3+Iq&-L9Zt^G>;m5j3~P;0d{&{iTQR7+{C|K)pyp){a= za33f0Mbeei?q%rrkD`{+NV_M)ugKgt3Z)tn_zBR0pAh>DB)D%>rj_pMXmq;spWBc( zn61^v7+LE|TtAdhEw0rE&9(YI+SV`b^epg|mHSkojp9mnZ?BY4Ev4y~lz*>Pf}Rsv zwb+J!uPtifxgjU`9cgb9!${a#IK;x~Cz_XRW3m zWr=I`y%m)xXSQn{N?ehK4KIlrt>xDjv_AZHgBFKhYrOSQLba4uuO|Nf!5t3}@zA_; zR|Joj==YDJ7V=ISX}@!co|hOUhi||byZMab0mkR0Mq26DaHG@MyL%b(HN3>H-tfF& z5A~4*a^-}cm#SJy^IN+6aB`AaiIHE6C#G|l&^l|YU5F=&mePzTdpt3k*C&3IdXws9 zMqlDes>N?s*>Yp69UbSV2{aqR3WcxFq z%~0PrZcDgp_K21+>+t7e%`1Y3-1WP$_Rh^K4!`65yH8Cb?99EOsD+Y2+RJY7yPCE# zY|qhtXsZ;BAlr*txGq{B_6*+o$gHrE)@LmlT4LhZt7<8&^*^jPc)-^#ef;sF1$CAF ztgJQb+O6!<9np>OgDU1BFuSI=~??e3dnxYoo0coVYo@=a+yZXUz<8FT# zw{cHEkI5*ZT1s7_wk3!XRwn5@Dw3YntLAl`;f0P zQLYftK~4}!V|2%(YC3~XwRnbtUDv z^{1!@Tp^DV&UN%&+I5bwYAMZCtzM&|(OtUV62^nvX~>>*y5Ew&4<%HKyS3P8GTm

    yhkuAT>f-yqe4 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

    (ko7(vw2M$zj@I@qRR_ai0|Hh_$w|S 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�H;7tL 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%0AmoLwkE=(!HcT{+serv03wizUkuVc2hx_Rh5|pG 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

    3vuv{p4;X+5eZanr+tudNkaU%E|>K^ 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�Z(WJCA6duzx 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

    X!~& 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

    Y1f$><7eedn5h_zym|*cxoh?tWQZSl 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 P{Nj|& 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%0A>0hOM)N{Hiq*Cs-aM9vLi}?f^JFe;Ob)sG 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 b%6p*e49UK=9{Q?%WT%|XND^KDrcUR7;Z8EB literal 0 HcmV?d00001 diff --git a/resources/quality/anycubic_i3_mega/anycubic_i3_mega_draft.inst.cfg b/resources/quality/anycubic_i3_mega/anycubic_i3_mega_draft.inst.cfg index e46fb38e57..ee77117a6b 100644 --- a/resources/quality/anycubic_i3_mega/anycubic_i3_mega_draft.inst.cfg +++ b/resources/quality/anycubic_i3_mega/anycubic_i3_mega_draft.inst.cfg @@ -28,7 +28,7 @@ jerk_travel = 13 layer_height = 0.4 layer_height_0 = 0.4 material_bed_temperature = 60 -material_diameter = 1.7 +material_diameter = 1.75 material_print_temperature = 200 material_print_temperature_layer_0 = 0 retract_at_layer_change = False diff --git a/resources/quality/anycubic_i3_mega/anycubic_i3_mega_high.inst.cfg b/resources/quality/anycubic_i3_mega/anycubic_i3_mega_high.inst.cfg index 0dcedf664e..884ed5b3f9 100644 --- a/resources/quality/anycubic_i3_mega/anycubic_i3_mega_high.inst.cfg +++ b/resources/quality/anycubic_i3_mega/anycubic_i3_mega_high.inst.cfg @@ -28,7 +28,7 @@ jerk_travel = 13 layer_height = 0.1 layer_height_0 = 0.1 material_bed_temperature = 60 -material_diameter = 1.7 +material_diameter = 1.75 material_print_temperature = 200 material_print_temperature_layer_0 = 0 retract_at_layer_change = False diff --git a/resources/quality/anycubic_i3_mega/anycubic_i3_mega_normal.inst.cfg b/resources/quality/anycubic_i3_mega/anycubic_i3_mega_normal.inst.cfg index d528e5f86f..1ecfe49c71 100644 --- a/resources/quality/anycubic_i3_mega/anycubic_i3_mega_normal.inst.cfg +++ b/resources/quality/anycubic_i3_mega/anycubic_i3_mega_normal.inst.cfg @@ -28,7 +28,7 @@ jerk_travel = 13 layer_height = 0.2 layer_height_0 = 0.2 material_bed_temperature = 60 -material_diameter = 1.7 +material_diameter = 1.75 material_print_temperature = 200 material_print_temperature_layer_0 = 0 retract_at_layer_change = False diff --git a/resources/quality/tevo_blackwidow/tevo_blackwidow_draft.inst.cfg b/resources/quality/tevo_blackwidow/tevo_blackwidow_draft.inst.cfg index 21169e428b..88805021eb 100644 --- a/resources/quality/tevo_blackwidow/tevo_blackwidow_draft.inst.cfg +++ b/resources/quality/tevo_blackwidow/tevo_blackwidow_draft.inst.cfg @@ -13,7 +13,7 @@ setting_version = 4 brim_width = 4.0 infill_pattern = zigzag layer_height = 0.4 -material_diameter = 1.7 +material_diameter = 1.75 speed_infill = 50 speed_print = 50 speed_support = 30 diff --git a/resources/quality/tevo_blackwidow/tevo_blackwidow_high.inst.cfg b/resources/quality/tevo_blackwidow/tevo_blackwidow_high.inst.cfg index 60f51b6826..79d020463f 100644 --- a/resources/quality/tevo_blackwidow/tevo_blackwidow_high.inst.cfg +++ b/resources/quality/tevo_blackwidow/tevo_blackwidow_high.inst.cfg @@ -13,7 +13,7 @@ setting_version = 4 brim_width = 4.0 infill_pattern = zigzag layer_height = 0.1 -material_diameter = 1.7 +material_diameter = 1.75 speed_infill = 50 speed_print = 50 speed_support = 30 diff --git a/resources/quality/tevo_blackwidow/tevo_blackwidow_normal.inst.cfg b/resources/quality/tevo_blackwidow/tevo_blackwidow_normal.inst.cfg index 51f5894885..2982c44d3d 100644 --- a/resources/quality/tevo_blackwidow/tevo_blackwidow_normal.inst.cfg +++ b/resources/quality/tevo_blackwidow/tevo_blackwidow_normal.inst.cfg @@ -13,7 +13,7 @@ setting_version = 4 brim_width = 4.0 infill_pattern = zigzag layer_height = 0.2 -material_diameter = 1.7 +material_diameter = 1.75 speed_infill = 60 speed_print = 50 speed_support = 30 From a87465186e6ac4622d373112422ccc4bff368b12 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Tue, 2 Jan 2018 08:19:31 +0100 Subject: [PATCH 070/102] 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 071/102] 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 072/102] 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 073/102] 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 074/102] 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 075/102] 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 076/102] 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 077/102] 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 078/102] 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.']) + } } } From c8243a0dddd1fdc07edea8240c0de990a979fb26 Mon Sep 17 00:00:00 2001 From: Jack Ha Date: Wed, 3 Jan 2018 12:47:09 +0100 Subject: [PATCH 079/102] CURA-4525 fix convex hull, changed size of object list --- cura/ConvexHullNode.py | 4 ++-- resources/themes/cura-light/theme.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/cura/ConvexHullNode.py b/cura/ConvexHullNode.py index cec9d3d698..02d8ed833c 100644 --- a/cura/ConvexHullNode.py +++ b/cura/ConvexHullNode.py @@ -64,8 +64,8 @@ class ConvexHullNode(SceneNode): ConvexHullNode.shader.setUniformValue("u_diffuseColor", self._color) ConvexHullNode.shader.setUniformValue("u_opacity", 0.6) - if self.getParent() and self.getParent().callDecoration("getBuildPlateNumber") == Application.getInstance().getBuildPlateModel().activeBuildPlate: - if self.getMeshData(): + if self.getParent(): + if self.getMeshData() and issubclass(type(self._node), SceneNode) and self._node.callDecoration("getBuildPlateNumber") == Application.getInstance().getBuildPlateModel().activeBuildPlate: renderer.queueNode(self, transparent = True, shader = ConvexHullNode.shader, backface_cull = True, sort = -8) if self._convex_hull_head_mesh: renderer.queueNode(self, shader = ConvexHullNode.shader, transparent = True, mesh = self._convex_hull_head_mesh, backface_cull = True, sort = -8) diff --git a/resources/themes/cura-light/theme.json b/resources/themes/cura-light/theme.json index 18f2650e77..5b3e2f019a 100644 --- a/resources/themes/cura-light/theme.json +++ b/resources/themes/cura-light/theme.json @@ -394,7 +394,7 @@ "jobspecs_line": [2.0, 2.0], "objects_menu_size": [20, 40], - "objects_menu_size_collapsed": [15, 15], + "objects_menu_size_collapsed": [15, 17], "build_plate_selection_size": [15, 5], "objects_menu_button": [0.3, 2.7] } From cb1484ee63f9cba6f2210bdc3232b7af5e31f9bd Mon Sep 17 00:00:00 2001 From: Jack Ha Date: Wed, 3 Jan 2018 12:52:32 +0100 Subject: [PATCH 080/102] CURA-4525 update size and margins of objects list --- resources/qml/Cura.qml | 4 ---- resources/themes/cura-light/theme.json | 2 +- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/resources/qml/Cura.qml b/resources/qml/Cura.qml index ec9773679a..39834b88b3 100644 --- a/resources/qml/Cura.qml +++ b/resources/qml/Cura.qml @@ -383,10 +383,6 @@ UM.MainWindow { bottom: parent.bottom; left: parent.left; - leftMargin: UM.Theme.getSize("default_margin").width; - rightMargin: UM.Theme.getSize("default_margin").width; - topMargin: UM.Theme.getSize("default_margin").height; - bottomMargin: UM.Theme.getSize("default_margin").height; } } diff --git a/resources/themes/cura-light/theme.json b/resources/themes/cura-light/theme.json index 5b3e2f019a..53bef1e7d9 100644 --- a/resources/themes/cura-light/theme.json +++ b/resources/themes/cura-light/theme.json @@ -394,7 +394,7 @@ "jobspecs_line": [2.0, 2.0], "objects_menu_size": [20, 40], - "objects_menu_size_collapsed": [15, 17], + "objects_menu_size_collapsed": [20, 17], "build_plate_selection_size": [15, 5], "objects_menu_button": [0.3, 2.7] } From dd989a1a51be0854a47515500d016c13bda39ae6 Mon Sep 17 00:00:00 2001 From: Jack Ha Date: Wed, 3 Jan 2018 13:43:09 +0100 Subject: [PATCH 081/102] CURA-4525 refresh objects list of all items after changing build plate --- cura/Scene/BuildPlateDecorator.py | 9 +++------ cura/Scene/CuraSceneNode.py | 3 +++ 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/cura/Scene/BuildPlateDecorator.py b/cura/Scene/BuildPlateDecorator.py index 36b89c5e5d..44372976f0 100644 --- a/cura/Scene/BuildPlateDecorator.py +++ b/cura/Scene/BuildPlateDecorator.py @@ -1,5 +1,5 @@ from UM.Scene.SceneNodeDecorator import SceneNodeDecorator -from UM.Scene.SceneNode import SceneNode +from cura.Scene.CuraSceneNode import CuraSceneNode ## Make a SceneNode build plate aware CuraSceneNode objects all have this decorator. @@ -13,14 +13,11 @@ class BuildPlateDecorator(SceneNodeDecorator): # Make sure that groups are set correctly # setBuildPlateForSelection in CuraActions makes sure that no single childs are set. self._build_plate_number = nr - # if issubclass(type(self._node), SceneNode): # TODO: Crashes on ArrangeObjectsAllBuildPlatesJob - # self._node.transformationChanged.emit() - #self._node.transformationChanged.emit() + if issubclass(type(self._node), CuraSceneNode): + self._node.transformChanged() # trigger refresh node without introducing a new signal if self._node and self._node.callDecoration("isGroup"): for child in self._node.getChildren(): child.callDecoration("setBuildPlateNumber", nr) - # if issubclass(type(child), SceneNode): - # child.transformationChanged.emit() def getBuildPlateNumber(self): return self._build_plate_number diff --git a/cura/Scene/CuraSceneNode.py b/cura/Scene/CuraSceneNode.py index e68405daf6..9df2931f0b 100644 --- a/cura/Scene/CuraSceneNode.py +++ b/cura/Scene/CuraSceneNode.py @@ -38,3 +38,6 @@ class CuraSceneNode(SceneNode): copy.addChild(deepcopy(child, memo)) self.calculateBoundingBoxMesh() return copy + + def transformChanged(self) -> None: + self._transformChanged() From 7eb507484b326f23cb4e81d10e1313ac75d37b66 Mon Sep 17 00:00:00 2001 From: ChrisTerBeke Date: Wed, 3 Jan 2018 14:12:45 +0100 Subject: [PATCH 082/102] hide sidebar header when in monitoring mode --- resources/qml/Sidebar.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/qml/Sidebar.qml b/resources/qml/Sidebar.qml index db7851a101..c18bc072a3 100644 --- a/resources/qml/Sidebar.qml +++ b/resources/qml/Sidebar.qml @@ -97,7 +97,7 @@ Rectangle SidebarHeader { id: header width: parent.width - visible: machineExtruderCount.properties.value > 1 || Cura.MachineManager.hasMaterials || Cura.MachineManager.hasVariants + visible: (machineExtruderCount.properties.value > 1 || Cura.MachineManager.hasMaterials || Cura.MachineManager.hasVariants) && !monitoringPrint anchors.top: machineSelection.bottom onShowTooltip: base.showTooltip(item, location, text) From 2f965cc05338625cfbd4326d2bfb5978e9d3e3db Mon Sep 17 00:00:00 2001 From: Jack Ha Date: Wed, 3 Jan 2018 14:18:40 +0100 Subject: [PATCH 083/102] CURA-4525 switch locations of build plates and objects list --- resources/qml/ObjectsList.qml | 128 +++++++++++++++++----------------- 1 file changed, 65 insertions(+), 63 deletions(-) diff --git a/resources/qml/ObjectsList.qml b/resources/qml/ObjectsList.qml index 761ff6d3f5..a924959581 100644 --- a/resources/qml/ObjectsList.qml +++ b/resources/qml/ObjectsList.qml @@ -62,6 +62,70 @@ Rectangle } } + Component { + id: buildPlateDelegate + Rectangle + { + height: childrenRect.height + color: Cura.BuildPlateModel.getItem(index).buildPlateNumber == Cura.BuildPlateModel.activeBuildPlate ? palette.highlight : index % 2 ? palette.base : palette.alternateBase + width: parent.width + Label + { + id: buildPlateNameLabel + anchors.left: parent.left + anchors.leftMargin: UM.Theme.getSize("default_margin").width + width: parent.width - 2 * UM.Theme.getSize("default_margin").width - 30 + text: Cura.BuildPlateModel.getItem(index) ? Cura.BuildPlateModel.getItem(index).name : ""; + color: Cura.BuildPlateModel.activeBuildPlate == index ? palette.highlightedText : palette.text + elide: Text.ElideRight + } + + MouseArea + { + anchors.fill: parent; + onClicked: + { + Cura.BuildPlateModel.setActiveBuildPlate(index); + } + } + } + } + + ScrollView + { + id: buildPlateSelection + frameVisible: true + height: UM.Theme.getSize("build_plate_selection_size").height + width: parent.width - 2 * UM.Theme.getSize("default_margin").height + style: UM.Theme.styles.scrollview + + anchors + { + top: collapseButton.bottom; + topMargin: UM.Theme.getSize("default_margin").height; + left: parent.left; + leftMargin: UM.Theme.getSize("default_margin").height; + //bottom: objectsList.top; + bottomMargin: UM.Theme.getSize("default_margin").height; + } + + Rectangle + { + parent: viewport + anchors.fill: parent + color: palette.light + } + + ListView + { + id: buildPlateListView + model: Cura.BuildPlateModel + width: parent.width + delegate: buildPlateDelegate + } + } + + Component { id: objectDelegate Rectangle @@ -113,7 +177,7 @@ Rectangle anchors { - top: collapseButton.bottom; + top: buildPlateSelection.bottom; topMargin: UM.Theme.getSize("default_margin").height; left: parent.left; leftMargin: UM.Theme.getSize("default_margin").height; @@ -154,69 +218,7 @@ Rectangle topMargin: UM.Theme.getSize("default_margin").height; bottomMargin: UM.Theme.getSize("default_margin").height; leftMargin: UM.Theme.getSize("default_margin").height; - bottom: buildPlateSelection.top; - } - } - - Component { - id: buildPlateDelegate - Rectangle - { - height: childrenRect.height - color: Cura.BuildPlateModel.getItem(index).buildPlateNumber == Cura.BuildPlateModel.activeBuildPlate ? palette.highlight : index % 2 ? palette.base : palette.alternateBase - width: parent.width - Label - { - id: buildPlateNameLabel - anchors.left: parent.left - anchors.leftMargin: UM.Theme.getSize("default_margin").width - width: parent.width - 2 * UM.Theme.getSize("default_margin").width - 30 - text: Cura.BuildPlateModel.getItem(index) ? Cura.BuildPlateModel.getItem(index).name : ""; - color: Cura.BuildPlateModel.activeBuildPlate == index ? palette.highlightedText : palette.text - elide: Text.ElideRight - } - - MouseArea - { - anchors.fill: parent; - onClicked: - { - Cura.BuildPlateModel.setActiveBuildPlate(index); - } - } - } - } - - ScrollView - { - id: buildPlateSelection - frameVisible: true - height: UM.Theme.getSize("build_plate_selection_size").height - width: parent.width - 2 * UM.Theme.getSize("default_margin").height - style: UM.Theme.styles.scrollview - - anchors - { - topMargin: UM.Theme.getSize("default_margin").height; - left: parent.left; - leftMargin: UM.Theme.getSize("default_margin").height; bottom: arrangeAllBuildPlatesButton.top; - bottomMargin: UM.Theme.getSize("default_margin").height; - } - - Rectangle - { - parent: viewport - anchors.fill: parent - color: palette.light - } - - ListView - { - id: buildPlateListView - model: Cura.BuildPlateModel - width: parent.width - delegate: buildPlateDelegate } } From a5630e5c54ef65e5dcd47d9a99cd1bb92da1acc6 Mon Sep 17 00:00:00 2001 From: ChrisTerBeke Date: Wed, 3 Jan 2018 15:05:06 +0100 Subject: [PATCH 084/102] Move all arranging related code into a subfolder --- cura/{ => Arranging}/Arrange.py | 0 .../ArrangeObjectsAllBuildPlatesJob.py | 4 +--- cura/{ => Arranging}/ArrangeObjectsJob.py | 3 +-- cura/Arranging/__init__.py | 0 cura/CuraApplication.py | 10 +++------- cura/MultiplyObjectsJob.py | 12 +----------- tests/TestArrange.py | 4 +--- 7 files changed, 7 insertions(+), 26 deletions(-) rename cura/{ => Arranging}/Arrange.py (100%) mode change 100755 => 100644 rename cura/{ => Arranging}/ArrangeObjectsAllBuildPlatesJob.py (97%) rename cura/{ => Arranging}/ArrangeObjectsJob.py (97%) mode change 100755 => 100644 create mode 100644 cura/Arranging/__init__.py diff --git a/cura/Arrange.py b/cura/Arranging/Arrange.py old mode 100755 new mode 100644 similarity index 100% rename from cura/Arrange.py rename to cura/Arranging/Arrange.py diff --git a/cura/ArrangeObjectsAllBuildPlatesJob.py b/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py similarity index 97% rename from cura/ArrangeObjectsAllBuildPlatesJob.py rename to cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py index f062c2b23b..6409146ca8 100644 --- a/cura/ArrangeObjectsAllBuildPlatesJob.py +++ b/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py @@ -4,16 +4,14 @@ from UM.Job import Job from UM.Scene.SceneNode import SceneNode from UM.Math.Vector import Vector -from UM.Operations.SetTransformOperation import SetTransformOperation from UM.Operations.TranslateOperation import TranslateOperation from UM.Operations.GroupedOperation import GroupedOperation -from UM.Logger import Logger from UM.Message import Message from UM.i18n import i18nCatalog i18n_catalog = i18nCatalog("cura") from cura.ZOffsetDecorator import ZOffsetDecorator -from cura.Arrange import Arrange +from cura.Arranging.Arrange import Arrange from cura.ShapeArray import ShapeArray from typing import List diff --git a/cura/ArrangeObjectsJob.py b/cura/Arranging/ArrangeObjectsJob.py old mode 100755 new mode 100644 similarity index 97% rename from cura/ArrangeObjectsJob.py rename to cura/Arranging/ArrangeObjectsJob.py index d650fd7f57..24db529fc1 --- a/cura/ArrangeObjectsJob.py +++ b/cura/Arranging/ArrangeObjectsJob.py @@ -4,7 +4,6 @@ from UM.Job import Job from UM.Scene.SceneNode import SceneNode from UM.Math.Vector import Vector -from UM.Operations.SetTransformOperation import SetTransformOperation from UM.Operations.TranslateOperation import TranslateOperation from UM.Operations.GroupedOperation import GroupedOperation from UM.Logger import Logger @@ -13,7 +12,7 @@ from UM.i18n import i18nCatalog i18n_catalog = i18nCatalog("cura") from cura.ZOffsetDecorator import ZOffsetDecorator -from cura.Arrange import Arrange +from cura.Arranging.Arrange import Arrange from cura.ShapeArray import ShapeArray from typing import List diff --git a/cura/Arranging/__init__.py b/cura/Arranging/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/cura/CuraApplication.py b/cura/CuraApplication.py index 68213cfdca..51ec131b4a 100755 --- a/cura/CuraApplication.py +++ b/cura/CuraApplication.py @@ -17,7 +17,6 @@ from UM.Scene.Iterator.DepthFirstIterator import DepthFirstIterator from UM.Mesh.ReadMeshJob import ReadMeshJob from UM.Logger import Logger from UM.Preferences import Preferences -from UM.SaveFile import SaveFile from UM.Scene.Selection import Selection from UM.Scene.GroupDecorator import GroupDecorator from UM.Settings.ContainerStack import ContainerStack @@ -33,7 +32,7 @@ from UM.Operations.RemoveSceneNodeOperation import RemoveSceneNodeOperation from UM.Operations.GroupedOperation import GroupedOperation from UM.Operations.SetTransformOperation import SetTransformOperation -from cura.Arrange import Arrange +from cura.Arranging.Arrange import Arrange from cura.ShapeArray import ShapeArray from cura.ConvexHullDecorator import ConvexHullDecorator from cura.SetParentOperation import SetParentOperation @@ -42,8 +41,8 @@ from cura.BlockSlicingDecorator import BlockSlicingDecorator from cura.Scene.BuildPlateDecorator import BuildPlateDecorator from cura.Scene.CuraSceneNode import CuraSceneNode -from cura.ArrangeObjectsJob import ArrangeObjectsJob -from cura.ArrangeObjectsAllBuildPlatesJob import ArrangeObjectsAllBuildPlatesJob +from cura.Arranging.ArrangeObjectsJob import ArrangeObjectsJob +from cura.Arranging.ArrangeObjectsAllBuildPlatesJob import ArrangeObjectsAllBuildPlatesJob from cura.MultiplyObjectsJob import MultiplyObjectsJob from UM.Settings.SettingDefinition import SettingDefinition, DefinitionPropertyType @@ -77,8 +76,6 @@ from cura.Settings.ContainerSettingsModel import ContainerSettingsModel from cura.Settings.MaterialSettingsVisibilityHandler import MaterialSettingsVisibilityHandler from cura.Settings.QualitySettingsModel import QualitySettingsModel from cura.Settings.ContainerManager import ContainerManager -from cura.Settings.GlobalStack import GlobalStack -from cura.Settings.ExtruderStack import ExtruderStack from cura.ObjectManager import ObjectManager from cura.BuildPlateModel import BuildPlateModel @@ -93,7 +90,6 @@ import sys import os.path import numpy import copy -import urllib.parse import os import argparse import json diff --git a/cura/MultiplyObjectsJob.py b/cura/MultiplyObjectsJob.py index 63a38993a2..f724c90c62 100644 --- a/cura/MultiplyObjectsJob.py +++ b/cura/MultiplyObjectsJob.py @@ -2,25 +2,15 @@ # Cura is released under the terms of the LGPLv3 or higher. from UM.Job import Job -from UM.Scene.SceneNode import SceneNode -from UM.Math.Vector import Vector -from UM.Operations.SetTransformOperation import SetTransformOperation -from UM.Operations.TranslateOperation import TranslateOperation from UM.Operations.GroupedOperation import GroupedOperation -from UM.Logger import Logger from UM.Message import Message from UM.i18n import i18nCatalog i18n_catalog = i18nCatalog("cura") -from cura.ZOffsetDecorator import ZOffsetDecorator -from cura.Scene.BuildPlateDecorator import BuildPlateDecorator -from cura.Arrange import Arrange +from cura.Arranging.Arrange import Arrange from cura.ShapeArray import ShapeArray -from typing import List - from UM.Application import Application -from UM.Scene.Selection import Selection from UM.Operations.AddSceneNodeOperation import AddSceneNodeOperation diff --git a/tests/TestArrange.py b/tests/TestArrange.py index f3612c1ac7..1da8ff7ba8 100755 --- a/tests/TestArrange.py +++ b/tests/TestArrange.py @@ -1,8 +1,6 @@ -import pytest import numpy -import time -from cura.Arrange import Arrange +from cura.Arranging.Arrange import Arrange from cura.ShapeArray import ShapeArray From 62b06b063b8e0228d4b2ce28fe7823400c1bd101 Mon Sep 17 00:00:00 2001 From: ChrisTerBeke Date: Wed, 3 Jan 2018 15:06:20 +0100 Subject: [PATCH 085/102] Also move other operations into operations subfolder --- cura/CuraActions.py | 2 +- cura/CuraApplication.py | 2 +- cura/{ => Operations}/PlatformPhysicsOperation.py | 0 cura/{ => Operations}/SetParentOperation.py | 0 cura/Operations/__init__.py | 0 cura/PlatformPhysics.py | 2 +- 6 files changed, 3 insertions(+), 3 deletions(-) rename cura/{ => Operations}/PlatformPhysicsOperation.py (100%) rename cura/{ => Operations}/SetParentOperation.py (100%) create mode 100644 cura/Operations/__init__.py diff --git a/cura/CuraActions.py b/cura/CuraActions.py index dbcd31f646..28e13e96b7 100644 --- a/cura/CuraActions.py +++ b/cura/CuraActions.py @@ -14,7 +14,7 @@ from UM.Operations.GroupedOperation import GroupedOperation from UM.Operations.RemoveSceneNodeOperation import RemoveSceneNodeOperation from UM.Operations.SetTransformOperation import SetTransformOperation -from cura.SetParentOperation import SetParentOperation +from cura.Operations.SetParentOperation import SetParentOperation from cura.MultiplyObjectsJob import MultiplyObjectsJob from cura.Settings.SetObjectExtruderOperation import SetObjectExtruderOperation from cura.Settings.ExtruderManager import ExtruderManager diff --git a/cura/CuraApplication.py b/cura/CuraApplication.py index 51ec131b4a..4790f655f7 100755 --- a/cura/CuraApplication.py +++ b/cura/CuraApplication.py @@ -35,7 +35,7 @@ from UM.Operations.SetTransformOperation import SetTransformOperation from cura.Arranging.Arrange import Arrange from cura.ShapeArray import ShapeArray from cura.ConvexHullDecorator import ConvexHullDecorator -from cura.SetParentOperation import SetParentOperation +from cura.Operations.SetParentOperation import SetParentOperation from cura.SliceableObjectDecorator import SliceableObjectDecorator from cura.BlockSlicingDecorator import BlockSlicingDecorator from cura.Scene.BuildPlateDecorator import BuildPlateDecorator diff --git a/cura/PlatformPhysicsOperation.py b/cura/Operations/PlatformPhysicsOperation.py similarity index 100% rename from cura/PlatformPhysicsOperation.py rename to cura/Operations/PlatformPhysicsOperation.py diff --git a/cura/SetParentOperation.py b/cura/Operations/SetParentOperation.py similarity index 100% rename from cura/SetParentOperation.py rename to cura/Operations/SetParentOperation.py diff --git a/cura/Operations/__init__.py b/cura/Operations/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/cura/PlatformPhysics.py b/cura/PlatformPhysics.py index 7aec519e6f..933d7c8608 100755 --- a/cura/PlatformPhysics.py +++ b/cura/PlatformPhysics.py @@ -12,7 +12,7 @@ from UM.Preferences import Preferences from cura.ConvexHullDecorator import ConvexHullDecorator -from . import PlatformPhysicsOperation +from cura.Operations import PlatformPhysicsOperation from . import ZOffsetDecorator import random # used for list shuffling From 08322d0a5ead26cfdc57d4ba168adf30b252b8aa Mon Sep 17 00:00:00 2001 From: ChrisTerBeke Date: Wed, 3 Jan 2018 15:09:19 +0100 Subject: [PATCH 086/102] Move all decorators in the scene subfolder --- cura/Arranging/Arrange.py | 4 ++-- cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py | 4 ++-- cura/Arranging/ArrangeObjectsJob.py | 4 ++-- cura/{ => Arranging}/ShapeArray.py | 0 cura/CuraApplication.py | 10 +++++----- cura/MultiplyObjectsJob.py | 2 +- cura/PlatformPhysics.py | 4 ++-- cura/{ => Scene}/BlockSlicingDecorator.py | 0 cura/{ => Scene}/ConvexHullDecorator.py | 2 +- cura/{ => Scene}/ConvexHullNode.py | 0 cura/{ => Scene}/GCodeListDecorator.py | 0 cura/{ => Scene}/SliceableObjectDecorator.py | 0 cura/{ => Scene}/ZOffsetDecorator.py | 0 cura/Scene/__init__.py | 0 plugins/3MFReader/ThreeMFReader.py | 5 ++--- plugins/GCodeReader/FlavorParser.py | 2 +- plugins/SimulationView/SimulationView.py | 2 +- tests/TestArrange.py | 2 +- 18 files changed, 20 insertions(+), 21 deletions(-) rename cura/{ => Arranging}/ShapeArray.py (100%) mode change 100755 => 100644 rename cura/{ => Scene}/BlockSlicingDecorator.py (100%) rename cura/{ => Scene}/ConvexHullDecorator.py (99%) rename cura/{ => Scene}/ConvexHullNode.py (100%) rename cura/{ => Scene}/GCodeListDecorator.py (100%) rename cura/{ => Scene}/SliceableObjectDecorator.py (100%) rename cura/{ => Scene}/ZOffsetDecorator.py (100%) create mode 100644 cura/Scene/__init__.py diff --git a/cura/Arranging/Arrange.py b/cura/Arranging/Arrange.py index 7691853f95..5ac0c09dc4 100644 --- a/cura/Arranging/Arrange.py +++ b/cura/Arranging/Arrange.py @@ -1,8 +1,8 @@ from UM.Scene.Iterator.DepthFirstIterator import DepthFirstIterator from UM.Logger import Logger from UM.Math.Vector import Vector -from cura.ShapeArray import ShapeArray -from cura import ZOffsetDecorator +from cura.Arranging.ShapeArray import ShapeArray +from cura.Scene import ZOffsetDecorator from collections import namedtuple diff --git a/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py b/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py index 6409146ca8..859ad481d6 100644 --- a/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py +++ b/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py @@ -10,9 +10,9 @@ from UM.Message import Message from UM.i18n import i18nCatalog i18n_catalog = i18nCatalog("cura") -from cura.ZOffsetDecorator import ZOffsetDecorator +from cura.Scene.ZOffsetDecorator import ZOffsetDecorator from cura.Arranging.Arrange import Arrange -from cura.ShapeArray import ShapeArray +from cura.Arranging.ShapeArray import ShapeArray from typing import List diff --git a/cura/Arranging/ArrangeObjectsJob.py b/cura/Arranging/ArrangeObjectsJob.py index 24db529fc1..f529543779 100644 --- a/cura/Arranging/ArrangeObjectsJob.py +++ b/cura/Arranging/ArrangeObjectsJob.py @@ -11,9 +11,9 @@ from UM.Message import Message from UM.i18n import i18nCatalog i18n_catalog = i18nCatalog("cura") -from cura.ZOffsetDecorator import ZOffsetDecorator +from cura.Scene.ZOffsetDecorator import ZOffsetDecorator from cura.Arranging.Arrange import Arrange -from cura.ShapeArray import ShapeArray +from cura.Arranging.ShapeArray import ShapeArray from typing import List diff --git a/cura/ShapeArray.py b/cura/Arranging/ShapeArray.py old mode 100755 new mode 100644 similarity index 100% rename from cura/ShapeArray.py rename to cura/Arranging/ShapeArray.py diff --git a/cura/CuraApplication.py b/cura/CuraApplication.py index 4790f655f7..42bd70fdc8 100755 --- a/cura/CuraApplication.py +++ b/cura/CuraApplication.py @@ -33,11 +33,11 @@ from UM.Operations.GroupedOperation import GroupedOperation from UM.Operations.SetTransformOperation import SetTransformOperation from cura.Arranging.Arrange import Arrange -from cura.ShapeArray import ShapeArray -from cura.ConvexHullDecorator import ConvexHullDecorator +from cura.Arranging.ShapeArray import ShapeArray +from cura.Scene.ConvexHullDecorator import ConvexHullDecorator from cura.Operations.SetParentOperation import SetParentOperation -from cura.SliceableObjectDecorator import SliceableObjectDecorator -from cura.BlockSlicingDecorator import BlockSlicingDecorator +from cura.Scene.SliceableObjectDecorator import SliceableObjectDecorator +from cura.Scene.BlockSlicingDecorator import BlockSlicingDecorator from cura.Scene.BuildPlateDecorator import BuildPlateDecorator from cura.Scene.CuraSceneNode import CuraSceneNode @@ -62,7 +62,7 @@ from . import BuildVolume from . import CameraAnimation from . import PrintInformation from . import CuraActions -from . import ZOffsetDecorator +from cura.Scene import ZOffsetDecorator from . import CuraSplashScreen from . import CameraImageProvider from . import MachineActionManager diff --git a/cura/MultiplyObjectsJob.py b/cura/MultiplyObjectsJob.py index f724c90c62..441d4c96c3 100644 --- a/cura/MultiplyObjectsJob.py +++ b/cura/MultiplyObjectsJob.py @@ -8,7 +8,7 @@ from UM.i18n import i18nCatalog i18n_catalog = i18nCatalog("cura") from cura.Arranging.Arrange import Arrange -from cura.ShapeArray import ShapeArray +from cura.Arranging.ShapeArray import ShapeArray from UM.Application import Application from UM.Operations.AddSceneNodeOperation import AddSceneNodeOperation diff --git a/cura/PlatformPhysics.py b/cura/PlatformPhysics.py index 933d7c8608..06d796eed5 100755 --- a/cura/PlatformPhysics.py +++ b/cura/PlatformPhysics.py @@ -10,10 +10,10 @@ from UM.Math.Vector import Vector from UM.Scene.Selection import Selection from UM.Preferences import Preferences -from cura.ConvexHullDecorator import ConvexHullDecorator +from cura.Scene.ConvexHullDecorator import ConvexHullDecorator from cura.Operations import PlatformPhysicsOperation -from . import ZOffsetDecorator +from cura.Scene import ZOffsetDecorator import random # used for list shuffling diff --git a/cura/BlockSlicingDecorator.py b/cura/Scene/BlockSlicingDecorator.py similarity index 100% rename from cura/BlockSlicingDecorator.py rename to cura/Scene/BlockSlicingDecorator.py diff --git a/cura/ConvexHullDecorator.py b/cura/Scene/ConvexHullDecorator.py similarity index 99% rename from cura/ConvexHullDecorator.py rename to cura/Scene/ConvexHullDecorator.py index 50fa8ce7f6..3a563c2764 100644 --- a/cura/ConvexHullDecorator.py +++ b/cura/Scene/ConvexHullDecorator.py @@ -7,7 +7,7 @@ from UM.Scene.SceneNodeDecorator import SceneNodeDecorator from UM.Settings.ContainerRegistry import ContainerRegistry from cura.Settings.ExtruderManager import ExtruderManager -from . import ConvexHullNode +from cura.Scene import ConvexHullNode import numpy diff --git a/cura/ConvexHullNode.py b/cura/Scene/ConvexHullNode.py similarity index 100% rename from cura/ConvexHullNode.py rename to cura/Scene/ConvexHullNode.py diff --git a/cura/GCodeListDecorator.py b/cura/Scene/GCodeListDecorator.py similarity index 100% rename from cura/GCodeListDecorator.py rename to cura/Scene/GCodeListDecorator.py diff --git a/cura/SliceableObjectDecorator.py b/cura/Scene/SliceableObjectDecorator.py similarity index 100% rename from cura/SliceableObjectDecorator.py rename to cura/Scene/SliceableObjectDecorator.py diff --git a/cura/ZOffsetDecorator.py b/cura/Scene/ZOffsetDecorator.py similarity index 100% rename from cura/ZOffsetDecorator.py rename to cura/Scene/ZOffsetDecorator.py diff --git a/cura/Scene/__init__.py b/cura/Scene/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/plugins/3MFReader/ThreeMFReader.py b/plugins/3MFReader/ThreeMFReader.py index 30b62b59aa..727bce2112 100755 --- a/plugins/3MFReader/ThreeMFReader.py +++ b/plugins/3MFReader/ThreeMFReader.py @@ -4,7 +4,6 @@ import os.path import zipfile -from UM.Job import Job from UM.Logger import Logger from UM.Math.Matrix import Matrix from UM.Math.Vector import Vector @@ -17,8 +16,8 @@ from cura.Settings.ExtruderManager import ExtruderManager from cura.QualityManager import QualityManager from cura.Scene.CuraSceneNode import CuraSceneNode from cura.Scene.BuildPlateDecorator import BuildPlateDecorator -from cura.SliceableObjectDecorator import SliceableObjectDecorator -from cura.ZOffsetDecorator import ZOffsetDecorator +from cura.Scene.SliceableObjectDecorator import SliceableObjectDecorator +from cura.Scene.ZOffsetDecorator import ZOffsetDecorator MYPY = False diff --git a/plugins/GCodeReader/FlavorParser.py b/plugins/GCodeReader/FlavorParser.py index cd317027ee..fa5d6da243 100644 --- a/plugins/GCodeReader/FlavorParser.py +++ b/plugins/GCodeReader/FlavorParser.py @@ -17,7 +17,7 @@ catalog = i18nCatalog("cura") from cura import LayerDataBuilder from cura import LayerDataDecorator from cura.LayerPolygon import LayerPolygon -from cura.GCodeListDecorator import GCodeListDecorator +from cura.Scene.GCodeListDecorator import GCodeListDecorator from cura.Settings.ExtruderManager import ExtruderManager import numpy diff --git a/plugins/SimulationView/SimulationView.py b/plugins/SimulationView/SimulationView.py index 6fc362725e..7a716d3b2b 100644 --- a/plugins/SimulationView/SimulationView.py +++ b/plugins/SimulationView/SimulationView.py @@ -25,7 +25,7 @@ from UM.View.GL.OpenGL import OpenGL 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.Scene.ConvexHullNode import ConvexHullNode from cura.CuraApplication import CuraApplication from .NozzleNode import NozzleNode diff --git a/tests/TestArrange.py b/tests/TestArrange.py index 1da8ff7ba8..737305f638 100755 --- a/tests/TestArrange.py +++ b/tests/TestArrange.py @@ -1,7 +1,7 @@ import numpy from cura.Arranging.Arrange import Arrange -from cura.ShapeArray import ShapeArray +from cura.Arranging.ShapeArray import ShapeArray def gimmeShapeArray(): From e0c2a9e4c7780addc043859369edad400b63a1b0 Mon Sep 17 00:00:00 2001 From: Ian Date: Wed, 3 Jan 2018 15:13:56 +0100 Subject: [PATCH 087/102] Fix for CURA-4111 When centering a scene node, TranslateOperation is used in lieu of SetTransformOperation, to avoid combinations of mirror operations behaving like rotation operations. Instead, any given node is simply translated to 0,0,0. --- cura/CuraActions.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/cura/CuraActions.py b/cura/CuraActions.py index b51728f028..7343eef156 100644 --- a/cura/CuraActions.py +++ b/cura/CuraActions.py @@ -13,6 +13,7 @@ from UM.Scene.Iterator.BreadthFirstIterator import BreadthFirstIterator from UM.Operations.GroupedOperation import GroupedOperation from UM.Operations.RemoveSceneNodeOperation import RemoveSceneNodeOperation from UM.Operations.SetTransformOperation import SetTransformOperation +from UM.Operations.TranslateOperation import TranslateOperation from cura.SetParentOperation import SetParentOperation from cura.MultiplyObjectsJob import MultiplyObjectsJob @@ -54,7 +55,11 @@ class CuraActions(QObject): while current_node.getParent() and current_node.getParent().callDecoration("isGroup"): current_node = current_node.getParent() - center_operation = SetTransformOperation(current_node, Vector()) + # This was formerly done with SetTransformOperation but because of + # unpredictable matrix deconstruction it was possible that mirrors + # could manifest as rotations. Centering is therefore done by + # moving the node to negative whatever its position is: + center_operation = TranslateOperation(current_node, -current_node._position) operation.addOperation(center_operation) operation.push() From e7e5729006c244a3cc1fec88bb1f659eeeabc8e9 Mon Sep 17 00:00:00 2001 From: Jack Ha Date: Wed, 3 Jan 2018 15:21:56 +0100 Subject: [PATCH 088/102] CURA-4525 deselect after move to build plate and build plate change --- cura/BuildPlateModel.py | 1 + cura/CuraActions.py | 2 ++ 2 files changed, 3 insertions(+) diff --git a/cura/BuildPlateModel.py b/cura/BuildPlateModel.py index 118a5ce271..2d558a91b9 100644 --- a/cura/BuildPlateModel.py +++ b/cura/BuildPlateModel.py @@ -28,6 +28,7 @@ class BuildPlateModel(ListModel): return Logger.log("d", "Select build plate: %s" % nr) self._active_build_plate = nr + Selection.clear() self.activeBuildPlateChanged.emit() diff --git a/cura/CuraActions.py b/cura/CuraActions.py index dbcd31f646..a55ef66e01 100644 --- a/cura/CuraActions.py +++ b/cura/CuraActions.py @@ -153,5 +153,7 @@ class CuraActions(QObject): operation.addOperation(SetBuildPlateNumberOperation(node, build_plate_nr)) operation.push() + Selection.clear() + def _openUrl(self, url): QDesktopServices.openUrl(url) From 62487e8ea2dc3603bffaa76989b79179342d46ee Mon Sep 17 00:00:00 2001 From: Jack Ha Date: Wed, 3 Jan 2018 15:41:08 +0100 Subject: [PATCH 089/102] CURA-4525 cleanups and change comment and added new-lines --- cura/Operations/SetBuildPlateNumberOperation.py | 2 +- plugins/CuraEngineBackend/CuraEngineBackend.py | 13 ------------- plugins/CuraEngineBackend/ProcessSlicedLayersJob.py | 2 -- plugins/CuraEngineBackend/StartSliceJob.py | 1 - plugins/ImageReader/ImageReader.py | 1 - plugins/X3DReader/X3DReader.py | 1 - resources/qml/Menus/ContextMenu.qml | 2 ++ 7 files changed, 3 insertions(+), 19 deletions(-) diff --git a/cura/Operations/SetBuildPlateNumberOperation.py b/cura/Operations/SetBuildPlateNumberOperation.py index bbef4caf84..c14d737f93 100644 --- a/cura/Operations/SetBuildPlateNumberOperation.py +++ b/cura/Operations/SetBuildPlateNumberOperation.py @@ -6,7 +6,7 @@ from UM.Operations.Operation import Operation from cura.Settings.SettingOverrideDecorator import SettingOverrideDecorator -## Simple operation to set the extruder a certain object should be printed with. +## Simple operation to set the buildplate number of a scenenode. class SetBuildPlateNumberOperation(Operation): def __init__(self, node: SceneNode, build_plate_nr: int) -> None: self._node = node diff --git a/plugins/CuraEngineBackend/CuraEngineBackend.py b/plugins/CuraEngineBackend/CuraEngineBackend.py index 473dbee31a..74dd515951 100755 --- a/plugins/CuraEngineBackend/CuraEngineBackend.py +++ b/plugins/CuraEngineBackend/CuraEngineBackend.py @@ -357,19 +357,6 @@ class CuraEngineBackend(QObject, Backend): else: self.backendStateChange.emit(BackendState.NotStarted) - # Doesn't occur anymore, is handled in slice() - # if job.getResult() == StartSliceJob.StartJobResult.NothingToSlice: - # if Application.getInstance().platformActivity: - # self._error_message = Message(catalog.i18nc("@info:status", "Nothing to slice because none of the models fit the build volume. Please scale or rotate models to fit."), - # title = catalog.i18nc("@info:title", "Unable to slice")) - # self._error_message.show() - # #self.backendStateChange.emit(BackendState.Error) - # else: - # #self.backendStateChange.emit(BackendState.NotStarted) - # pass - # self._invokeSlice() - # return - # Preparation completed, send it to the backend. self._socket.sendMessage(job.getSliceMessage()) diff --git a/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py b/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py index 5f632768ec..be9c3f73f0 100644 --- a/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py +++ b/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py @@ -4,7 +4,6 @@ import gc from UM.Job import Job -from UM.Scene.Iterator.DepthFirstIterator import DepthFirstIterator from UM.Scene.SceneNode import SceneNode from UM.Application import Application from UM.Mesh.MeshData import MeshData @@ -22,7 +21,6 @@ from cura.Settings.ExtruderManager import ExtruderManager from cura import LayerDataBuilder from cura import LayerDataDecorator from cura import LayerPolygon -# from cura.Scene.CuraSceneNode import CuraSceneNode import numpy from time import time diff --git a/plugins/CuraEngineBackend/StartSliceJob.py b/plugins/CuraEngineBackend/StartSliceJob.py index 9a61c4c8a2..a9618c5472 100644 --- a/plugins/CuraEngineBackend/StartSliceJob.py +++ b/plugins/CuraEngineBackend/StartSliceJob.py @@ -10,7 +10,6 @@ from UM.Job import Job from UM.Application import Application from UM.Logger import Logger -#from UM.Scene.SceneNode import SceneNode from UM.Scene.Iterator.DepthFirstIterator import DepthFirstIterator from UM.Settings.Validator import ValidatorState diff --git a/plugins/ImageReader/ImageReader.py b/plugins/ImageReader/ImageReader.py index 2529abf2d8..3a98abccf5 100644 --- a/plugins/ImageReader/ImageReader.py +++ b/plugins/ImageReader/ImageReader.py @@ -8,7 +8,6 @@ from PyQt5.QtCore import Qt from UM.Mesh.MeshReader import MeshReader from UM.Mesh.MeshBuilder import MeshBuilder -#from UM.Scene.SceneNode import SceneNode from UM.Math.Vector import Vector from UM.Job import Job from UM.Logger import Logger diff --git a/plugins/X3DReader/X3DReader.py b/plugins/X3DReader/X3DReader.py index 883ed7b0b6..b0b9e00a5b 100644 --- a/plugins/X3DReader/X3DReader.py +++ b/plugins/X3DReader/X3DReader.py @@ -11,7 +11,6 @@ from UM.Math.Matrix import Matrix from UM.Math.Vector import Vector from UM.Mesh.MeshBuilder import MeshBuilder from UM.Mesh.MeshReader import MeshReader -#from UM.Scene.SceneNode import SceneNode from cura.Scene.CuraSceneNode import CuraSceneNode as SceneNode MYPY = False diff --git a/resources/qml/Menus/ContextMenu.qml b/resources/qml/Menus/ContextMenu.qml index 910f0a951a..1a4b421572 100644 --- a/resources/qml/Menus/ContextMenu.qml +++ b/resources/qml/Menus/ContextMenu.qml @@ -42,6 +42,7 @@ Menu MenuSeparator { visible: UM.Preferences.getValue("cura/use_multi_build_plate") } + Instantiator { model: Cura.BuildPlateModel @@ -55,6 +56,7 @@ Menu onObjectAdded: base.insertItem(index, object); onObjectRemoved: base.removeItem(object); } + MenuItem { text: "New build plate"; onTriggered: { From 9e5f0e10b968daedfc2ec2e96e9292c55f095cd2 Mon Sep 17 00:00:00 2001 From: Jack Ha Date: Wed, 3 Jan 2018 15:49:31 +0100 Subject: [PATCH 090/102] CURA-4525 add comment and type hint --- cura/Arranging/Arrange.py | 1 + cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/cura/Arranging/Arrange.py b/cura/Arranging/Arrange.py index 5ac0c09dc4..a90a97c3c2 100644 --- a/cura/Arranging/Arrange.py +++ b/cura/Arranging/Arrange.py @@ -169,6 +169,7 @@ class Arrange: # \param x x-coordinate # \param y y-coordinate # \param shape_arr ShapeArray object + # \param update_empty updates the _is_empty, used when adding disallowed areas def place(self, x, y, shape_arr, update_empty = True): x = int(self._scale * x) y = int(self._scale * y) diff --git a/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py b/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py index 859ad481d6..3f23b0dbe7 100644 --- a/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py +++ b/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py @@ -18,7 +18,7 @@ from typing import List class ArrangeArray: - def __init__(self, x, y, fixed_nodes): + def __init__(self, x: int, y: int, fixed_nodes: List[SceneNode]): self._x = x self._y = y self._fixed_nodes = fixed_nodes From 392be23281c03406a37de0addc09cc8359e15246 Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Wed, 3 Jan 2018 15:58:30 +0100 Subject: [PATCH 091/102] Fix SettingView stakc ID binding CURA-4708 --- resources/qml/Settings/SettingView.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/qml/Settings/SettingView.qml b/resources/qml/Settings/SettingView.qml index 1d4e1016bc..5d39572647 100644 --- a/resources/qml/Settings/SettingView.qml +++ b/resources/qml/Settings/SettingView.qml @@ -372,7 +372,7 @@ Item { id: provider - containerStackId: Cura.ExtruderManager.activeExtruderStackId + containerStackId: Cura.MachineManager.activeMachineId key: model.key ? model.key : "" watchedProperties: [ "value", "enabled", "state", "validationState", "settable_per_extruder", "resolve" ] storeIndex: 0 From 5a9e3a8efd0a9e1a69fbcd0c8e4873906bcbcca2 Mon Sep 17 00:00:00 2001 From: ChrisTerBeke Date: Wed, 3 Jan 2018 16:18:31 +0100 Subject: [PATCH 092/102] Fix front view button rotation, cleanup view buttons onClicked --- resources/qml/Topbar.qml | 31 ++++++++++++------------------- 1 file changed, 12 insertions(+), 19 deletions(-) diff --git a/resources/qml/Topbar.qml b/resources/qml/Topbar.qml index c016c155a5..bea0a7d2e3 100644 --- a/resources/qml/Topbar.qml +++ b/resources/qml/Topbar.qml @@ -115,10 +115,8 @@ Rectangle iconSource: UM.Theme.getIcon("view_3d") style: UM.Theme.styles.small_tool_button anchors.verticalCenter: viewOrientationControl.verticalCenter - onClicked:{ - UM.Controller.rotateView("3d", 0); - } - visible: base.width - allItemsWidth - 4 * this.width > 0; + onClicked:UM.Controller.rotateView("3d", 0) + visible: base.width - allItemsWidth - 4 * this.width > 0 } // #2 Front view @@ -127,10 +125,11 @@ Rectangle iconSource: UM.Theme.getIcon("view_front") style: UM.Theme.styles.small_tool_button anchors.verticalCenter: viewOrientationControl.verticalCenter - onClicked:{ - UM.Controller.rotateView("home", 0); + onClicked: { + UM.Controller.rotateView("x", 0) + UM.Controller.rotateView("y", 0) } - visible: base.width - allItemsWidth - 3 * this.width > 0; + visible: base.width - allItemsWidth - 3 * this.width > 0 } // #3 Top view @@ -139,10 +138,8 @@ Rectangle iconSource: UM.Theme.getIcon("view_top") style: UM.Theme.styles.small_tool_button anchors.verticalCenter: viewOrientationControl.verticalCenter - onClicked:{ - UM.Controller.rotateView("y", 90); - } - visible: base.width - allItemsWidth - 2 * this.width > 0; + onClicked: UM.Controller.rotateView("y", 90) + visible: base.width - allItemsWidth - 2 * this.width > 0 } // #4 Left view @@ -151,10 +148,8 @@ Rectangle iconSource: UM.Theme.getIcon("view_left") style: UM.Theme.styles.small_tool_button anchors.verticalCenter: viewOrientationControl.verticalCenter - onClicked:{ - UM.Controller.rotateView("x", 90); - } - visible: base.width - allItemsWidth - 1 * this.width > 0; + onClicked: UM.Controller.rotateView("x", 90) + visible: base.width - allItemsWidth - 1 * this.width > 0 } // #5 Left view @@ -163,10 +158,8 @@ Rectangle iconSource: UM.Theme.getIcon("view_right") style: UM.Theme.styles.small_tool_button anchors.verticalCenter: viewOrientationControl.verticalCenter - onClicked:{ - UM.Controller.rotateView("x", -90); - } - visible: base.width - allItemsWidth > 0; + onClicked: UM.Controller.rotateView("x", -90) + visible: base.width - allItemsWidth > 0 } } From b181860f1c108ac6b9a3e6c677c6811a50e4820e Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Wed, 3 Jan 2018 16:27:21 +0100 Subject: [PATCH 093/102] Fix afterOnEditingFinished() CURA-4708 --- plugins/MachineSettingsAction/MachineSettingsAction.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/MachineSettingsAction/MachineSettingsAction.qml b/plugins/MachineSettingsAction/MachineSettingsAction.qml index f89ca8473c..b815d71acc 100644 --- a/plugins/MachineSettingsAction/MachineSettingsAction.qml +++ b/plugins/MachineSettingsAction/MachineSettingsAction.qml @@ -393,7 +393,7 @@ Cura.MachineAction 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: + function afterOnEditingFinished() { if (settingsTabs.currentIndex > 0) { From 47a12b4128c297715d8ed06644dc1a6486115766 Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Wed, 3 Jan 2018 16:28:36 +0100 Subject: [PATCH 094/102] Prefer materials from the same brand in auto-update CURA-4708 --- plugins/MachineSettingsAction/MachineSettingsAction.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/plugins/MachineSettingsAction/MachineSettingsAction.py b/plugins/MachineSettingsAction/MachineSettingsAction.py index aacedbfbdf..17bb4e5161 100755 --- a/plugins/MachineSettingsAction/MachineSettingsAction.py +++ b/plugins/MachineSettingsAction/MachineSettingsAction.py @@ -241,6 +241,7 @@ class MachineSettingsAction(MachineAction): "type": "material", "approximate_diameter": machine_approximate_diameter, "material": old_material.getMetaDataEntry("material", "value"), + "brand": old_material.getMetaDataEntry("brand", "value"), "supplier": old_material.getMetaDataEntry("supplier", "value"), "color_name": old_material.getMetaDataEntry("color_name", "value"), "definition": materials_definition @@ -251,6 +252,7 @@ class MachineSettingsAction(MachineAction): if old_material == self._empty_container: search_criteria.pop("material", None) search_criteria.pop("supplier", None) + search_criteria.pop("brand", None) search_criteria.pop("definition", None) search_criteria["id"] = extruder_stack.getMetaDataEntry("preferred_material") From cbf6f55fd85156e6f1e0f8f579ad7bee48fd0c61 Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Wed, 3 Jan 2018 16:42:00 +0100 Subject: [PATCH 095/102] Fix perfered material search in auto-update CURA-4708 --- plugins/MachineSettingsAction/MachineSettingsAction.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/plugins/MachineSettingsAction/MachineSettingsAction.py b/plugins/MachineSettingsAction/MachineSettingsAction.py index 17bb4e5161..ad5957e625 100755 --- a/plugins/MachineSettingsAction/MachineSettingsAction.py +++ b/plugins/MachineSettingsAction/MachineSettingsAction.py @@ -260,6 +260,7 @@ class MachineSettingsAction(MachineAction): if not materials: # Same material with new diameter is not found, search for generic version of the same material type search_criteria.pop("supplier", None) + search_criteria.pop("brand", None) search_criteria["color_name"] = "Generic" materials = self._container_registry.findInstanceContainers(**search_criteria) if not materials: @@ -276,6 +277,6 @@ class MachineSettingsAction(MachineAction): # 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()) extruder_stack.material = materials[0] From 49ae0783966e388ca3af0d55853169bf201464c6 Mon Sep 17 00:00:00 2001 From: Aleksei S Date: Wed, 3 Jan 2018 16:45:26 +0100 Subject: [PATCH 096/102] Adjust 3d view and add Camera View to the menu bar CURA-4642 --- resources/qml/Actions.qml | 41 ++++++++++++++++++++++++++++---- resources/qml/Menus/ViewMenu.qml | 10 +++++++- resources/qml/Topbar.qml | 5 +--- 3 files changed, 47 insertions(+), 9 deletions(-) diff --git a/resources/qml/Actions.qml b/resources/qml/Actions.qml index aa185f8615..53900da4a7 100644 --- a/resources/qml/Actions.qml +++ b/resources/qml/Actions.qml @@ -17,7 +17,12 @@ Item property alias undo: undoAction; property alias redo: redoAction; - property alias homeCamera: homeCameraAction; + property alias view3DCamera: view3DCameraAction; + property alias viewFrontCamera: viewFrontCameraAction; + property alias viewTopCamera: viewTopCameraAction; + property alias viewLeftSideCamera: viewLeftSideCameraAction; + property alias viewRightSideCamera: viewRightSideCameraAction; + property alias expandSidebar: expandSidebarAction; property alias deleteSelection: deleteSelectionAction; @@ -104,9 +109,37 @@ Item Action { - id: homeCameraAction; - text: catalog.i18nc("@action:inmenu menubar:view","&Reset camera position"); - onTriggered: CuraActions.homeCamera(); + id: view3DCameraAction; + text: catalog.i18nc("@action:inmenu menubar:view","&3D View"); + onTriggered: UM.Controller.rotateView("3d", 0); + } + + Action + { + id: viewFrontCameraAction; + text: catalog.i18nc("@action:inmenu menubar:view","&Front View"); + onTriggered: UM.Controller.rotateView("home", 0); + } + + Action + { + id: viewTopCameraAction; + text: catalog.i18nc("@action:inmenu menubar:view","&Top View"); + onTriggered: UM.Controller.rotateView("y", 90); + } + + Action + { + id: viewLeftSideCameraAction; + text: catalog.i18nc("@action:inmenu menubar:view","&Left Side View"); + onTriggered: UM.Controller.rotateView("x", 90); + } + + Action + { + id: viewRightSideCameraAction; + text: catalog.i18nc("@action:inmenu menubar:view","&Right Side View"); + onTriggered: UM.Controller.rotateView("x", -90); } Action diff --git a/resources/qml/Menus/ViewMenu.qml b/resources/qml/Menus/ViewMenu.qml index c8243ad2ed..eca8abd68f 100644 --- a/resources/qml/Menus/ViewMenu.qml +++ b/resources/qml/Menus/ViewMenu.qml @@ -31,6 +31,14 @@ Menu ExclusiveGroup { id: group } MenuSeparator {} - MenuItem { action: Cura.Actions.homeCamera; } + Menu + { + title: catalog.i18nc("@action:inmenu menubar:view","&Camera position"); + MenuItem { action: Cura.Actions.view3DCamera; } + MenuItem { action: Cura.Actions.viewFrontCamera; } + MenuItem { action: Cura.Actions.viewTopCamera; } + MenuItem { action: Cura.Actions.viewLeftSideCamera; } + MenuItem { action: Cura.Actions.viewRightSideCamera; } + } MenuItem { action: Cura.Actions.expandSidebar; } } diff --git a/resources/qml/Topbar.qml b/resources/qml/Topbar.qml index bea0a7d2e3..e3dfb85c49 100644 --- a/resources/qml/Topbar.qml +++ b/resources/qml/Topbar.qml @@ -125,10 +125,7 @@ Rectangle iconSource: UM.Theme.getIcon("view_front") style: UM.Theme.styles.small_tool_button anchors.verticalCenter: viewOrientationControl.verticalCenter - onClicked: { - UM.Controller.rotateView("x", 0) - UM.Controller.rotateView("y", 0) - } + onClicked: UM.Controller.rotateView("home", 0); visible: base.width - allItemsWidth - 3 * this.width > 0 } From 7c4a122767ffa08dc037d35f706c699fd108421a Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Wed, 3 Jan 2018 17:04:07 +0100 Subject: [PATCH 097/102] Fix container_index for MachineSettingsAction CURA-4708 --- plugins/MachineSettingsAction/MachineSettingsAction.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/plugins/MachineSettingsAction/MachineSettingsAction.py b/plugins/MachineSettingsAction/MachineSettingsAction.py index ad5957e625..a939d033fc 100755 --- a/plugins/MachineSettingsAction/MachineSettingsAction.py +++ b/plugins/MachineSettingsAction/MachineSettingsAction.py @@ -27,7 +27,9 @@ class MachineSettingsAction(MachineAction): self._qml_url = "MachineSettingsAction.qml" self._global_container_stack = None - self._container_index = 0 + + from cura.Settings.CuraContainerStack import _ContainerIndexes + self._container_index = _ContainerIndexes.DefinitionChanges self._container_registry = ContainerRegistry.getInstance() self._container_registry.containerAdded.connect(self._onContainerAdded) From 8c7a0d4a8e70ddb722943b709c2d2fc9d0dccc2d Mon Sep 17 00:00:00 2001 From: Jack Ha Date: Thu, 4 Jan 2018 09:26:15 +0100 Subject: [PATCH 098/102] CURA-4525 created CuraSceneController and took out logic from ObjectsModel and BuildPlateModel --- cura/BuildPlateModel.py | 52 ++++------------- cura/CuraApplication.py | 27 ++++++--- cura/CuraSceneController.py | 101 ++++++++++++++++++++++++++++++++++ cura/ObjectManager.py | 87 ----------------------------- cura/ObjectsModel.py | 49 +++++++++++++++++ resources/qml/ObjectsList.qml | 16 +++--- 6 files changed, 187 insertions(+), 145 deletions(-) create mode 100644 cura/CuraSceneController.py delete mode 100644 cura/ObjectManager.py create mode 100644 cura/ObjectsModel.py diff --git a/cura/BuildPlateModel.py b/cura/BuildPlateModel.py index 2d558a91b9..73f61202c6 100644 --- a/cura/BuildPlateModel.py +++ b/cura/BuildPlateModel.py @@ -1,7 +1,6 @@ -from UM.Qt.ListModel import ListModel from PyQt5.QtCore import pyqtSignal, pyqtProperty, pyqtSlot -from UM.Scene.Iterator.DepthFirstIterator import DepthFirstIterator -from UM.Scene.SceneNode import SceneNode + +from UM.Qt.ListModel import ListModel from UM.Scene.Selection import Selection from UM.Logger import Logger from UM.Application import Application @@ -14,7 +13,6 @@ class BuildPlateModel(ListModel): def __init__(self): super().__init__() - Application.getInstance().getController().getScene().sceneChanged.connect(self.updateMaxBuildPlate) # it may be a bit inefficient when changing a lot simultaneously Application.getInstance().getController().getScene().sceneChanged.connect(self._updateSelectedObjectBuildPlateNumbers) Selection.selectionChanged.connect(self._updateSelectedObjectBuildPlateNumbers) @@ -22,50 +20,22 @@ class BuildPlateModel(ListModel): self._active_build_plate = -1 self._selection_build_plates = [] - @pyqtSlot(int) - def setActiveBuildPlate(self, nr): - if nr == self._active_build_plate: - return - Logger.log("d", "Select build plate: %s" % nr) - self._active_build_plate = nr - Selection.clear() - - self.activeBuildPlateChanged.emit() - - @pyqtProperty(int, notify = activeBuildPlateChanged) - def activeBuildPlate(self): - return self._active_build_plate + def setMaxBuildPlate(self, max_build_plate): + self._max_build_plate = max_build_plate + self.maxBuildPlateChanged.emit() ## Return the highest build plate number @pyqtProperty(int, notify = maxBuildPlateChanged) def maxBuildPlate(self): return self._max_build_plate - def updateMaxBuildPlate(self, *args): - if args: - source = args[0] - else: - source = None - if not issubclass(type(source), SceneNode): - return - max_build_plate = self._calcMaxBuildPlate() - changed = False - if max_build_plate != self._max_build_plate: - self._max_build_plate = max_build_plate - changed = True - if changed: - self.maxBuildPlateChanged.emit() - build_plates = [{"name": "Build Plate %d" % (i + 1), "buildPlateNumber": i} for i in range(self._max_build_plate + 1)] - self.setItems(build_plates) - self.itemsChanged.emit() + def setActiveBuildPlate(self, nr): + self._active_build_plate = nr + self.activeBuildPlateChanged.emit() - def _calcMaxBuildPlate(self): - max_build_plate = 0 - for node in DepthFirstIterator(Application.getInstance().getController().getScene().getRoot()): - if node.callDecoration("isSliceable"): - build_plate_number = node.callDecoration("getBuildPlateNumber") - max_build_plate = max(build_plate_number, max_build_plate) - return max_build_plate + @pyqtProperty(int, notify = activeBuildPlateChanged) + def activeBuildPlate(self): + return self._active_build_plate @staticmethod def createBuildPlateModel(): diff --git a/cura/CuraApplication.py b/cura/CuraApplication.py index 42bd70fdc8..1e10b6a40c 100755 --- a/cura/CuraApplication.py +++ b/cura/CuraApplication.py @@ -33,7 +33,10 @@ from UM.Operations.GroupedOperation import GroupedOperation from UM.Operations.SetTransformOperation import SetTransformOperation from cura.Arranging.Arrange import Arrange +from cura.Arranging.ArrangeObjectsJob import ArrangeObjectsJob +from cura.Arranging.ArrangeObjectsAllBuildPlatesJob import ArrangeObjectsAllBuildPlatesJob from cura.Arranging.ShapeArray import ShapeArray +from cura.MultiplyObjectsJob import MultiplyObjectsJob from cura.Scene.ConvexHullDecorator import ConvexHullDecorator from cura.Operations.SetParentOperation import SetParentOperation from cura.Scene.SliceableObjectDecorator import SliceableObjectDecorator @@ -41,9 +44,7 @@ from cura.Scene.BlockSlicingDecorator import BlockSlicingDecorator from cura.Scene.BuildPlateDecorator import BuildPlateDecorator from cura.Scene.CuraSceneNode import CuraSceneNode -from cura.Arranging.ArrangeObjectsJob import ArrangeObjectsJob -from cura.Arranging.ArrangeObjectsAllBuildPlatesJob import ArrangeObjectsAllBuildPlatesJob -from cura.MultiplyObjectsJob import MultiplyObjectsJob +from cura.CuraSceneController import CuraSceneController from UM.Settings.SettingDefinition import SettingDefinition, DefinitionPropertyType from UM.Settings.ContainerRegistry import ContainerRegistry @@ -77,7 +78,7 @@ from cura.Settings.MaterialSettingsVisibilityHandler import MaterialSettingsVisi from cura.Settings.QualitySettingsModel import QualitySettingsModel from cura.Settings.ContainerManager import ContainerManager -from cura.ObjectManager import ObjectManager +from cura.ObjectsModel import ObjectsModel from cura.BuildPlateModel import BuildPlateModel from PyQt5.QtCore import QUrl, pyqtSignal, pyqtProperty, QEvent, Q_ENUMS @@ -211,6 +212,7 @@ class CuraApplication(QtApplication): self._build_plate_model = None self._setting_inheritance_manager = None self._simple_mode_settings_manager = None + self._cura_scene_controller = None self._additional_components = {} # Components to add to certain areas in the interface @@ -398,6 +400,8 @@ class CuraApplication(QtApplication): self._plugin_registry.addSupportedPluginExtension("curaplugin", "Cura Plugin") + self.getCuraSceneController().setActiveBuildPlate(0) # Initialize + def _onEngineCreated(self): self._engine.addImageProvider("camera", CameraImageProvider.CameraImageProvider()) @@ -699,8 +703,9 @@ class CuraApplication(QtApplication): qmlRegisterSingletonType(SimpleModeSettingsManager, "Cura", 1, 2, "SimpleModeSettingsManager", self.getSimpleModeSettingsManager) - qmlRegisterSingletonType(ObjectManager, "Cura", 1, 2, "ObjectManager", self.getObjectManager) + qmlRegisterSingletonType(ObjectsModel, "Cura", 1, 2, "ObjectsModel", self.getObjectsModel) qmlRegisterSingletonType(BuildPlateModel, "Cura", 1, 2, "BuildPlateModel", self.getBuildPlateModel) + qmlRegisterSingletonType(CuraSceneController, "Cura", 1, 2, "SceneController", self.getCuraSceneController) qmlRegisterSingletonType(MachineActionManager.MachineActionManager, "Cura", 1, 0, "MachineActionManager", self.getMachineActionManager) @@ -739,18 +744,22 @@ class CuraApplication(QtApplication): self._material_manager = MaterialManager.createMaterialManager() return self._material_manager - def getObjectManager(self, *args): + def getObjectsModel(self, *args): if self._object_manager is None: - self._object_manager = ObjectManager.createObjectManager() + self._object_manager = ObjectsModel.createObjectsModel() return self._object_manager def getBuildPlateModel(self, *args): if self._build_plate_model is None: self._build_plate_model = BuildPlateModel.createBuildPlateModel() - self._build_plate_model.setActiveBuildPlate(0) # default value return self._build_plate_model + def getCuraSceneController(self, *args): + if self._cura_scene_controller is None: + self._cura_scene_controller = CuraSceneController.createCuraSceneController() + return self._cura_scene_controller + def getSettingInheritanceManager(self, *args): if self._setting_inheritance_manager is None: self._setting_inheritance_manager = SettingInheritanceManager.createSettingInheritanceManager() @@ -1115,7 +1124,7 @@ class CuraApplication(QtApplication): nodes.append(node) job = ArrangeObjectsAllBuildPlatesJob(nodes) job.start() - self.getBuildPlateModel().setActiveBuildPlate(0) + self.getCuraSceneController().setActiveBuildPlate(0) # Initialize # Single build plate @pyqtSlot() diff --git a/cura/CuraSceneController.py b/cura/CuraSceneController.py new file mode 100644 index 0000000000..65723db52c --- /dev/null +++ b/cura/CuraSceneController.py @@ -0,0 +1,101 @@ +from UM.Logger import Logger + +from PyQt5.QtCore import Qt, pyqtSlot, QObject +from PyQt5.QtWidgets import QApplication + +from cura.ObjectsModel import ObjectsModel +from cura.BuildPlateModel import BuildPlateModel + +from UM.Application import Application +from UM.Scene.Iterator.DepthFirstIterator import DepthFirstIterator +from UM.Scene.SceneNode import SceneNode +from UM.Scene.Selection import Selection + + +class CuraSceneController(QObject): + def __init__(self, objects_model: ObjectsModel, build_plate_model: BuildPlateModel): + super().__init__() + + self._objects_model = objects_model + self._build_plate_model = build_plate_model + self._active_build_plate = -1 + + self._last_selected_index = 0 + self._max_build_plate = 1 # default + + Application.getInstance().getController().getScene().sceneChanged.connect(self.updateMaxBuildPlate) # it may be a bit inefficient when changing a lot simultaneously + + def updateMaxBuildPlate(self, *args): + if args: + source = args[0] + else: + source = None + if not issubclass(type(source), SceneNode): + return + max_build_plate = self._calcMaxBuildPlate() + changed = False + if max_build_plate != self._max_build_plate: + self._max_build_plate = max_build_plate + changed = True + if changed: + self._build_plate_model.setMaxBuildPlate(self._max_build_plate) + build_plates = [{"name": "Build Plate %d" % (i + 1), "buildPlateNumber": i} for i in range(self._max_build_plate + 1)] + self._build_plate_model.setItems(build_plates) + # self.buildPlateItemsChanged.emit() # TODO: necessary after setItems? + + def _calcMaxBuildPlate(self): + max_build_plate = 0 + for node in DepthFirstIterator(Application.getInstance().getController().getScene().getRoot()): + if node.callDecoration("isSliceable"): + build_plate_number = node.callDecoration("getBuildPlateNumber") + max_build_plate = max(build_plate_number, max_build_plate) + return max_build_plate + + ## Either select or deselect an item + @pyqtSlot(int) + def changeSelection(self, index): + modifiers = QApplication.keyboardModifiers() + ctrl_is_active = modifiers & Qt.ControlModifier + shift_is_active = modifiers & Qt.ShiftModifier + + if ctrl_is_active: + item = self._objects_model.getItem(index) + node = item["node"] + if Selection.isSelected(node): + Selection.remove(node) + else: + Selection.add(node) + elif shift_is_active: + polarity = 1 if index + 1 > self._last_selected_index else -1 + for i in range(self._last_selected_index, index + polarity, polarity): + item = self._objects_model.getItem(i) + node = item["node"] + Selection.add(node) + else: + # Single select + item = self._objects_model.getItem(index) + node = item["node"] + Selection.clear() + Selection.add(node) + build_plate_number = node.callDecoration("getBuildPlateNumber") + if build_plate_number is not None and build_plate_number != -1: + self._build_plate_model.setActiveBuildPlate(build_plate_number) + + self._last_selected_index = index + + @pyqtSlot(int) + def setActiveBuildPlate(self, nr): + if nr == self._active_build_plate: + return + Logger.log("d", "Select build plate: %s" % nr) + self._active_build_plate = nr + Selection.clear() + + self._build_plate_model.setActiveBuildPlate(nr) + self._objects_model.setActiveBuildPlate(nr) + + @staticmethod + def createCuraSceneController(): + objects_model = Application.getInstance().getObjectsModel() + build_plate_model = Application.getInstance().getBuildPlateModel() + return CuraSceneController(objects_model = objects_model, build_plate_model = build_plate_model) diff --git a/cura/ObjectManager.py b/cura/ObjectManager.py deleted file mode 100644 index 413f43ed73..0000000000 --- a/cura/ObjectManager.py +++ /dev/null @@ -1,87 +0,0 @@ -from UM.Logger import Logger -from PyQt5.QtCore import pyqtSignal, pyqtProperty, pyqtSlot -from UM.Application import Application -from UM.Qt.ListModel import ListModel -from UM.Scene.Iterator.DepthFirstIterator import DepthFirstIterator -from UM.Scene.SceneNode import SceneNode -from UM.Scene.Selection import Selection -from PyQt5.QtCore import Qt -from PyQt5.QtWidgets import QApplication -#from cura.Scene.CuraSceneNode import CuraSceneNode -from UM.Preferences import Preferences - - -## Keep track of all objects in the project -class ObjectManager(ListModel): - def __init__(self): - super().__init__() - self._last_selected_index = 0 - self._build_plate_model = Application.getInstance().getBuildPlateModel() - Application.getInstance().getController().getScene().sceneChanged.connect(self._update) - Preferences.getInstance().preferenceChanged.connect(self._update) - self._build_plate_model.activeBuildPlateChanged.connect(self._update) - - def _update(self, *args): - nodes = [] - filter_current_build_plate = Preferences.getInstance().getValue("view/filter_current_build_plate") - active_build_plate_number = self._build_plate_model.activeBuildPlate - for node in DepthFirstIterator(Application.getInstance().getController().getScene().getRoot()): - if not issubclass(type(node), SceneNode) or (not node.getMeshData() and not node.callDecoration("getLayerData")): - continue - if not node.callDecoration("isSliceable"): - continue - node_build_plate_number = node.callDecoration("getBuildPlateNumber") - if filter_current_build_plate and node_build_plate_number != active_build_plate_number: - continue - nodes.append({ - "name": node.getName(), - "isSelected": Selection.isSelected(node), - "isOutsideBuildArea": node.isOutsideBuildArea(), - "buildPlateNumber": node_build_plate_number, - "node": node - }) - nodes = sorted(nodes, key=lambda n: n["name"]) - self.setItems(nodes) - - self.itemsChanged.emit() - - ## Either select or deselect an item - @pyqtSlot(int) - def changeSelection(self, index): - modifiers = QApplication.keyboardModifiers() - ctrl_is_active = modifiers & Qt.ControlModifier - shift_is_active = modifiers & Qt.ShiftModifier - - if ctrl_is_active: - item = self.getItem(index) - node = item["node"] - if Selection.isSelected(node): - Selection.remove(node) - else: - Selection.add(node) - elif shift_is_active: - polarity = 1 if index + 1 > self._last_selected_index else -1 - for i in range(self._last_selected_index, index + polarity, polarity): - item = self.getItem(i) - node = item["node"] - Selection.add(node) - else: - # Single select - item = self.getItem(index) - node = item["node"] - Selection.clear() - Selection.add(node) - build_plate_number = node.callDecoration("getBuildPlateNumber") - if build_plate_number is not None and build_plate_number != -1: - self._build_plate_model.setActiveBuildPlate(build_plate_number) - - self._last_selected_index = index - - # testing - for node in DepthFirstIterator(Application.getInstance().getController().getScene().getRoot()): - if node.callDecoration("getLayerData"): - Logger.log("d", " ##### NODE: %s", node) - - @staticmethod - def createObjectManager(): - return ObjectManager() diff --git a/cura/ObjectsModel.py b/cura/ObjectsModel.py new file mode 100644 index 0000000000..2e83ee9033 --- /dev/null +++ b/cura/ObjectsModel.py @@ -0,0 +1,49 @@ +from UM.Application import Application +from UM.Qt.ListModel import ListModel +from UM.Scene.Iterator.DepthFirstIterator import DepthFirstIterator +from UM.Scene.SceneNode import SceneNode +from UM.Scene.Selection import Selection +from UM.Preferences import Preferences + + +## Keep track of all objects in the project +class ObjectsModel(ListModel): + def __init__(self): + super().__init__() + + Application.getInstance().getController().getScene().sceneChanged.connect(self._update) + Preferences.getInstance().preferenceChanged.connect(self._update) + + self._build_plate_number = -1 + + def setActiveBuildPlate(self, nr): + self._build_plate_number = nr + self._update() + + def _update(self, *args): + nodes = [] + filter_current_build_plate = Preferences.getInstance().getValue("view/filter_current_build_plate") + active_build_plate_number = self._build_plate_number + for node in DepthFirstIterator(Application.getInstance().getController().getScene().getRoot()): + if not issubclass(type(node), SceneNode) or (not node.getMeshData() and not node.callDecoration("getLayerData")): + continue + if not node.callDecoration("isSliceable"): + continue + node_build_plate_number = node.callDecoration("getBuildPlateNumber") + if filter_current_build_plate and node_build_plate_number != active_build_plate_number: + continue + nodes.append({ + "name": node.getName(), + "isSelected": Selection.isSelected(node), + "isOutsideBuildArea": node.isOutsideBuildArea(), + "buildPlateNumber": node_build_plate_number, + "node": node + }) + nodes = sorted(nodes, key=lambda n: n["name"]) + self.setItems(nodes) + + self.itemsChanged.emit() + + @staticmethod + def createObjectsModel(): + return ObjectsModel() diff --git a/resources/qml/ObjectsList.qml b/resources/qml/ObjectsList.qml index a924959581..04afbe2fb0 100644 --- a/resources/qml/ObjectsList.qml +++ b/resources/qml/ObjectsList.qml @@ -85,7 +85,7 @@ Rectangle anchors.fill: parent; onClicked: { - Cura.BuildPlateModel.setActiveBuildPlate(index); + Cura.SceneController.setActiveBuildPlate(index); } } } @@ -131,7 +131,7 @@ Rectangle Rectangle { height: childrenRect.height - color: Cura.ObjectManager.getItem(index).isSelected ? palette.highlight : index % 2 ? palette.base : palette.alternateBase + color: Cura.ObjectsModel.getItem(index).isSelected ? palette.highlight : index % 2 ? palette.base : palette.alternateBase width: parent.width Label { @@ -139,8 +139,8 @@ Rectangle anchors.left: parent.left anchors.leftMargin: UM.Theme.getSize("default_margin").width width: parent.width - 2 * UM.Theme.getSize("default_margin").width - 30 - text: Cura.ObjectManager.getItem(index) ? Cura.ObjectManager.getItem(index).name : ""; - color: Cura.ObjectManager.getItem(index).isSelected ? palette.highlightedText : (Cura.ObjectManager.getItem(index).isOutsideBuildArea ? palette.mid : palette.text) + text: Cura.ObjectsModel.getItem(index) ? Cura.ObjectsModel.getItem(index).name : ""; + color: Cura.ObjectsModel.getItem(index).isSelected ? palette.highlightedText : (Cura.ObjectsModel.getItem(index).isOutsideBuildArea ? palette.mid : palette.text) elide: Text.ElideRight } @@ -151,8 +151,8 @@ Rectangle anchors.left: nodeNameLabel.right anchors.leftMargin: UM.Theme.getSize("default_margin").width anchors.right: parent.right - text: Cura.ObjectManager.getItem(index).buildPlateNumber != -1 ? Cura.ObjectManager.getItem(index).buildPlateNumber + 1 : ""; - color: Cura.ObjectManager.getItem(index).isSelected ? palette.highlightedText : palette.text + text: Cura.ObjectsModel.getItem(index).buildPlateNumber != -1 ? Cura.ObjectsModel.getItem(index).buildPlateNumber + 1 : ""; + color: Cura.ObjectsModel.getItem(index).isSelected ? palette.highlightedText : palette.text elide: Text.ElideRight } @@ -161,7 +161,7 @@ Rectangle anchors.fill: parent; onClicked: { - Cura.ObjectManager.changeSelection(index); + Cura.SceneController.changeSelection(index); } } } @@ -195,7 +195,7 @@ Rectangle ListView { id: listview - model: Cura.ObjectManager + model: Cura.ObjectsModel width: parent.width delegate: objectDelegate } From 840eedbb3dfe46836f8bc2b711be0fe2f17bd046 Mon Sep 17 00:00:00 2001 From: Jack Ha Date: Thu, 4 Jan 2018 09:35:23 +0100 Subject: [PATCH 099/102] CURA-4525 switch back to build plate 0 when deleting all objects --- cura/CuraApplication.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/cura/CuraApplication.py b/cura/CuraApplication.py index 1e10b6a40c..bf9e0016cb 100755 --- a/cura/CuraApplication.py +++ b/cura/CuraApplication.py @@ -1050,6 +1050,8 @@ class CuraApplication(QtApplication): op.push() Selection.clear() + self.getCuraSceneController().setActiveBuildPlate(0) # Select first build plate + ## Reset all translation on nodes with mesh data. @pyqtSlot() def resetAllTranslation(self): @@ -1124,7 +1126,7 @@ class CuraApplication(QtApplication): nodes.append(node) job = ArrangeObjectsAllBuildPlatesJob(nodes) job.start() - self.getCuraSceneController().setActiveBuildPlate(0) # Initialize + self.getCuraSceneController().setActiveBuildPlate(0) # Select first build plate # Single build plate @pyqtSlot() From 46827b9295594725d6b5218e4ce1dbe25a19b8fb Mon Sep 17 00:00:00 2001 From: ChrisTerBeke Date: Thu, 4 Jan 2018 10:14:55 +0100 Subject: [PATCH 100/102] Fix tevo blackwidow json file --- plugins/CuraEngineBackend/StartSliceJob.py | 6 ++++-- resources/definitions/tevo_blackwidow.def.json | 4 ++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/plugins/CuraEngineBackend/StartSliceJob.py b/plugins/CuraEngineBackend/StartSliceJob.py index c5182cc753..746a23dc84 100644 --- a/plugins/CuraEngineBackend/StartSliceJob.py +++ b/plugins/CuraEngineBackend/StartSliceJob.py @@ -271,13 +271,15 @@ class StartSliceJob(Job): if not self._all_extruders_settings: global_stack = Application.getInstance().getGlobalContainerStack() - self._all_extruders_settings = {} # NB: keys must be strings for the string formatter - self._all_extruders_settings["-1"] = self._buildReplacementTokens(global_stack) + self._all_extruders_settings = { + "-1": self._buildReplacementTokens(global_stack) + } for extruder_stack in ExtruderManager.getInstance().getMachineExtruders(global_stack.getId()): extruder_nr = extruder_stack.getProperty("extruder_nr", "value") self._all_extruders_settings[str(extruder_nr)] = self._buildReplacementTokens(extruder_stack) + try: # any setting can be used as a token fmt = GcodeStartEndFormatter() diff --git a/resources/definitions/tevo_blackwidow.def.json b/resources/definitions/tevo_blackwidow.def.json index 19ef2a45e2..9d7166f4a2 100644 --- a/resources/definitions/tevo_blackwidow.def.json +++ b/resources/definitions/tevo_blackwidow.def.json @@ -45,10 +45,10 @@ "default_value": "RepRap (Marlin/Sprinter)" }, "machine_start_gcode": { - "default_value": "M280 P0 S160 ; release BLTouch alarm (OK to send for Non BLTouch)\M420 Z2 ; set fade leveling at 2mm for BLTouch (OK to send for Non BLTouch)\G28 ; home all\G29 ; probe bed\G92 E0 ;zero the extruded length\G1 X0.0 Y50.0 Z10.0 F3600\; perform wipe and prime\G1 Z0.0 F1000\G1 Z0.2 Y70.0 E9.0 F1000.0 ; prime\G1 Y100.0 E12.5 F1000.0 ; prime\G92 E0 ; zero extruder again\M117 Printing..." + "default_value": "M280 P0 S160 ; release BLTouch alarm (OK to send for Non BLTouch)\nM420 Z2 ; set fade leveling at 2mm for BLTouch (OK to send for Non BLTouch)\nG28 ; home all\nG29 ; probe bed\nG92 E0 ;zero the extruded length\nG1 X0.0 Y50.0 Z10.0 F3600\n; perform wipe and prime\nG1 Z0.0 F1000\nG1 Z0.2 Y70.0 E9.0 F1000.0 ; prime\nG1 Y100.0 E12.5 F1000.0 ; prime\nG92 E0 ; zero extruder again\nM117 Printing..." }, "machine_end_gcode": { - "default_value": "G92 E0 ; zero the extruded length again\G1 E-1.5 F500 ; retract the filament to release some of the pressure\M104 S0 ; turn off extruder\M140 S0 ; turn off bed\G28 X0 ; home X axis\G1 Y245 ; move Y axis to end position\M84 ; disable motors\M107 ; turn off fan" + "default_value": "G92 E0 ; zero the extruded length again\nG1 E-1.5 F500 ; retract the filament to release some of the pressure\nM104 S0 ; turn off extruder\nM140 S0 ; turn off bed\nG28 X0 ; home X axis\nG1 Y245 ; move Y axis to end position\nM84 ; disable motors\nM107 ; turn off fan" } } } From a5d9aac91bee910d4b6ef13c57b5916b723e7bbb Mon Sep 17 00:00:00 2001 From: Jack Ha Date: Thu, 4 Jan 2018 10:32:54 +0100 Subject: [PATCH 101/102] CURA-4525 placed view menu items in Build Plate submenu --- resources/qml/Menus/ViewMenu.qml | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/resources/qml/Menus/ViewMenu.qml b/resources/qml/Menus/ViewMenu.qml index 84722e81bf..72bc42bfb0 100644 --- a/resources/qml/Menus/ViewMenu.qml +++ b/resources/qml/Menus/ViewMenu.qml @@ -46,21 +46,26 @@ Menu visible: UM.Preferences.getValue("cura/use_multi_build_plate") } - Instantiator + Menu { - model: Cura.BuildPlateModel - MenuItem { - text: Cura.BuildPlateModel.getItem(index).name; - onTriggered: Cura.BuildPlateModel.setActiveBuildPlate(Cura.BuildPlateModel.getItem(index).buildPlateNumber); - checkable: true; - checked: Cura.BuildPlateModel.getItem(index).buildPlateNumber == Cura.BuildPlateModel.activeBuildPlate; - exclusiveGroup: buildPlateGroup; - visible: UM.Preferences.getValue("cura/use_multi_build_plate") + id: buildPlateMenu; + title: catalog.i18nc("@action:inmenu menubar:view","&Build plate"); + Instantiator + { + model: Cura.BuildPlateModel + MenuItem { + text: Cura.BuildPlateModel.getItem(index).name; + onTriggered: Cura.SceneController.setActiveBuildPlate(Cura.BuildPlateModel.getItem(index).buildPlateNumber); + checkable: true; + checked: Cura.BuildPlateModel.getItem(index).buildPlateNumber == Cura.BuildPlateModel.activeBuildPlate; + exclusiveGroup: buildPlateGroup; + visible: UM.Preferences.getValue("cura/use_multi_build_plate") + } + onObjectAdded: buildPlateMenu.insertItem(index, object); + onObjectRemoved: buildPlateMenu.removeItem(object) } - onObjectAdded: base.insertItem(index, object); - onObjectRemoved: base.removeItem(object) + ExclusiveGroup { id: buildPlateGroup; } } - ExclusiveGroup { id: buildPlateGroup; } MenuSeparator {} From 11a484593157819f44170803640de826f499fb1f Mon Sep 17 00:00:00 2001 From: ChrisTerBeke Date: Thu, 4 Jan 2018 10:41:25 +0100 Subject: [PATCH 102/102] Move CuraSceneController together with rest of scene related code --- cura/CuraApplication.py | 2 +- cura/{ => Scene}/CuraSceneController.py | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename cura/{ => Scene}/CuraSceneController.py (100%) diff --git a/cura/CuraApplication.py b/cura/CuraApplication.py index bf9e0016cb..476b5d3708 100755 --- a/cura/CuraApplication.py +++ b/cura/CuraApplication.py @@ -44,7 +44,7 @@ from cura.Scene.BlockSlicingDecorator import BlockSlicingDecorator from cura.Scene.BuildPlateDecorator import BuildPlateDecorator from cura.Scene.CuraSceneNode import CuraSceneNode -from cura.CuraSceneController import CuraSceneController +from cura.Scene.CuraSceneController import CuraSceneController from UM.Settings.SettingDefinition import SettingDefinition, DefinitionPropertyType from UM.Settings.ContainerRegistry import ContainerRegistry diff --git a/cura/CuraSceneController.py b/cura/Scene/CuraSceneController.py similarity index 100% rename from cura/CuraSceneController.py rename to cura/Scene/CuraSceneController.py

    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 qJRynJUBL0Al=Gumj))$}1% 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 UUdK{kDjs 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