From 244444cab9c15a57af4f8e4bbdc4110f891fad5f Mon Sep 17 00:00:00 2001 From: Tim Kuipers Date: Wed, 28 Feb 2018 10:44:13 +0100 Subject: [PATCH 01/14] setting to disable omitting retractions in support Some users report that omitting the retractions causes print failures. It might be machine/material dependant, so we need a user setting for this. Omitting retractions was implemented somewhere in 2.5 or something, but it was never a setting. We've since gotten some critique on this. --- resources/definitions/fdmprinter.def.json | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index d282eeae0a..c8f3a3bb83 100644 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -2169,6 +2169,16 @@ "settable_per_mesh": false, "settable_per_extruder": true }, + "limit_support_retractions": + { + "label": "Limit Support Retractions", + "description": "Omit retraction when moving from support to support in a straight line. Enabling this setting saves print time, but can lead to excesive stringing within the support structure.", + "type": "bool", + "default_value": true, + "enabled": "retraction_enable and support_enable", + "settable_per_mesh": false, + "settable_per_extruder": true + }, "material_standby_temperature": { "label": "Standby Temperature", From f1e33f0cba05a8828c1a1b48079efea238cdf56e Mon Sep 17 00:00:00 2001 From: Diego Prado Gesto Date: Thu, 29 Mar 2018 17:08:59 +0200 Subject: [PATCH 02/14] CURA-5175 Remove version upgrade of the quality instance containers since they never get updated. --- plugins/VersionUpgrade/VersionUpgrade25to26/__init__.py | 1 - plugins/VersionUpgrade/VersionUpgrade26to27/__init__.py | 1 - plugins/VersionUpgrade/VersionUpgrade27to30/__init__.py | 1 - plugins/VersionUpgrade/VersionUpgrade30to31/__init__.py | 5 ----- plugins/VersionUpgrade/VersionUpgrade32to33/__init__.py | 5 ----- 5 files changed, 13 deletions(-) diff --git a/plugins/VersionUpgrade/VersionUpgrade25to26/__init__.py b/plugins/VersionUpgrade/VersionUpgrade25to26/__init__.py index 3014eca4a2..1419325cc1 100644 --- a/plugins/VersionUpgrade/VersionUpgrade25to26/__init__.py +++ b/plugins/VersionUpgrade/VersionUpgrade25to26/__init__.py @@ -17,7 +17,6 @@ def getMetaData(): # if any is updated. ("quality_changes", 2000000): ("quality_changes", 2000001, upgrade.upgradeInstanceContainer), ("user", 2000000): ("user", 2000001, upgrade.upgradeInstanceContainer), - ("quality", 2000000): ("quality", 2000001, upgrade.upgradeInstanceContainer), ("definition_changes", 2000000): ("definition_changes", 2000001, upgrade.upgradeInstanceContainer), ("machine_stack", 3000000): ("machine_stack", 3000001, upgrade.upgradeMachineStack), }, diff --git a/plugins/VersionUpgrade/VersionUpgrade26to27/__init__.py b/plugins/VersionUpgrade/VersionUpgrade26to27/__init__.py index 699faacab6..79ed5e8b68 100644 --- a/plugins/VersionUpgrade/VersionUpgrade26to27/__init__.py +++ b/plugins/VersionUpgrade/VersionUpgrade26to27/__init__.py @@ -27,7 +27,6 @@ def getMetaData(): # if any is updated. ("quality_changes", 2000001): ("quality_changes", 2000002, upgrade.upgradeOtherContainer), ("user", 2000001): ("user", 2000002, upgrade.upgradeOtherContainer), - ("quality", 2000001): ("quality", 2000002, upgrade.upgradeOtherContainer), ("definition_changes", 2000001): ("definition_changes", 2000002, upgrade.upgradeOtherContainer), ("variant", 2000000): ("variant", 2000002, upgrade.upgradeOtherContainer) }, diff --git a/plugins/VersionUpgrade/VersionUpgrade27to30/__init__.py b/plugins/VersionUpgrade/VersionUpgrade27to30/__init__.py index 396ce4abe0..4da7257b1c 100644 --- a/plugins/VersionUpgrade/VersionUpgrade27to30/__init__.py +++ b/plugins/VersionUpgrade/VersionUpgrade27to30/__init__.py @@ -16,7 +16,6 @@ def getMetaData(): ("quality_changes", 2000002): ("quality_changes", 2000003, upgrade.upgradeQualityChangesContainer), ("user", 2000002): ("user", 2000003, upgrade.upgradeOtherContainer), - ("quality", 2000002): ("quality", 2000003, upgrade.upgradeOtherContainer), ("definition_changes", 2000002): ("definition_changes", 2000003, upgrade.upgradeOtherContainer), ("variant", 2000002): ("variant", 2000003, upgrade.upgradeOtherContainer) }, diff --git a/plugins/VersionUpgrade/VersionUpgrade30to31/__init__.py b/plugins/VersionUpgrade/VersionUpgrade30to31/__init__.py index c853e2b93b..23c972df8b 100644 --- a/plugins/VersionUpgrade/VersionUpgrade30to31/__init__.py +++ b/plugins/VersionUpgrade/VersionUpgrade30to31/__init__.py @@ -16,7 +16,6 @@ def getMetaData(): ("quality_changes", 2000003): ("quality_changes", 2000004, upgrade.upgradeInstanceContainer), ("user", 2000003): ("user", 2000004, upgrade.upgradeInstanceContainer), - ("quality", 2000003): ("quality", 2000004, upgrade.upgradeInstanceContainer), ("definition_changes", 2000003): ("definition_changes", 2000004, upgrade.upgradeInstanceContainer), ("variant", 2000003): ("variant", 2000004, upgrade.upgradeInstanceContainer) }, @@ -33,10 +32,6 @@ def getMetaData(): "get_version": upgrade.getCfgVersion, "location": {"./extruders"} }, - "quality": { - "get_version": upgrade.getCfgVersion, - "location": {"./quality"} - }, "quality_changes": { "get_version": upgrade.getCfgVersion, "location": {"./quality"} diff --git a/plugins/VersionUpgrade/VersionUpgrade32to33/__init__.py b/plugins/VersionUpgrade/VersionUpgrade32to33/__init__.py index 36e0036bec..ae4bf7b2f9 100644 --- a/plugins/VersionUpgrade/VersionUpgrade32to33/__init__.py +++ b/plugins/VersionUpgrade/VersionUpgrade32to33/__init__.py @@ -13,7 +13,6 @@ def getMetaData(): ("extruder_train", 3000004): ("extruder_train", 4000004, upgrade.upgradeStack), ("definition_changes", 2000004): ("definition_changes", 3000004, upgrade.upgradeInstanceContainer), - ("quality", 2000004): ("quality", 3000004, upgrade.upgradeInstanceContainer), ("quality_changes", 2000004): ("quality_changes", 3000004, upgrade.upgradeQualityChanges), ("user", 2000004): ("user", 3000004, upgrade.upgradeInstanceContainer), ("variant", 2000004): ("variant", 3000004, upgrade.upgradeVariants) @@ -31,10 +30,6 @@ def getMetaData(): "get_version": upgrade.getCfgVersion, "location": {"./definition_changes"} }, - "quality": { - "get_version": upgrade.getCfgVersion, - "location": {"./quality"} - }, "quality_changes": { "get_version": upgrade.getCfgVersion, "location": {"./quality"} From 60a217fc843991f7f35b33784a1aa46326fcfc57 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Fri, 30 Mar 2018 14:30:40 +0200 Subject: [PATCH 03/14] Rename expandAll to expandRecursive Because it doesn't expand all settings, just a category. --- plugins/PerObjectSettingsTool/PerObjectCategory.qml | 2 +- resources/qml/Settings/SettingCategory.qml | 8 +++----- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/plugins/PerObjectSettingsTool/PerObjectCategory.qml b/plugins/PerObjectSettingsTool/PerObjectCategory.qml index 2dc4ba6326..2be716fd39 100644 --- a/plugins/PerObjectSettingsTool/PerObjectCategory.qml +++ b/plugins/PerObjectSettingsTool/PerObjectCategory.qml @@ -58,5 +58,5 @@ Button { checkable: true checked: definition.expanded - onClicked: definition.expanded ? settingDefinitionsModel.collapse(definition.key) : settingDefinitionsModel.expandAll(definition.key) + onClicked: definition.expanded ? settingDefinitionsModel.collapse(definition.key) : settingDefinitionsModel.expandRecursive(definition.key) } diff --git a/resources/qml/Settings/SettingCategory.qml b/resources/qml/Settings/SettingCategory.qml index 3612c4cf29..419285d893 100644 --- a/resources/qml/Settings/SettingCategory.qml +++ b/resources/qml/Settings/SettingCategory.qml @@ -1,4 +1,4 @@ -// Copyright (c) 2017 Ultimaker B.V. +// Copyright (c) 2018 Ultimaker B.V. // Cura is released under the terms of the LGPLv3 or higher. import QtQuick 2.7 @@ -63,8 +63,6 @@ Button property var focusItem: base - //text: definition.label - contentItem: Item { anchors.fill: parent anchors.left: parent.left @@ -160,7 +158,7 @@ Button if (definition.expanded) { settingDefinitionsModel.collapse(definition.key); } else { - settingDefinitionsModel.expandAll(definition.key); + settingDefinitionsModel.expandRecursive(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. @@ -237,7 +235,7 @@ Button onClicked: { - settingDefinitionsModel.expandAll(definition.key); + settingDefinitionsModel.expandRecursive(definition.key); base.checked = true; base.showAllHiddenInheritedSettings(definition.key); } From 6d10ac993e5e918c17e74af544477f99818d5f28 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Fri, 30 Mar 2018 14:45:45 +0200 Subject: [PATCH 04/14] Add option to collapse or expand all setting categories Sadly it doesn't display on the category headers themselves, but it works just as well. --- resources/qml/Settings/SettingView.qml | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/resources/qml/Settings/SettingView.qml b/resources/qml/Settings/SettingView.qml index 4a919ab9bd..c7f9580ebd 100644 --- a/resources/qml/Settings/SettingView.qml +++ b/resources/qml/Settings/SettingView.qml @@ -601,6 +601,17 @@ Item onTriggered: Cura.Actions.configureSettingVisibility.trigger(contextMenu); } + MenuSeparator {} + MenuItem + { + text: catalog.i18nc("@action:inmenu", "Collapse All") + onTriggered: definitionsModel.collapseAll() + } + MenuItem + { + text: catalog.i18nc("@action:inmenu", "Expand All") + onTriggered: definitionsModel.expandAll() + } } UM.SettingPropertyProvider From 4ad986759103e9ec246b6bb63860f8e8a4fe7911 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Tue, 3 Apr 2018 16:36:37 +0200 Subject: [PATCH 05/14] Add setting to try multiple line thicknesses Engine implementation pending. This setting is intended for debugging problems with interrupted walls. It should probably not be published in a final release. Contributes to issue CURA-5189. --- resources/definitions/fdmprinter.def.json | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index d7d9698439..43402dea77 100644 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -6585,6 +6585,14 @@ "type": "float", "enabled": "bridge_settings_enabled and bridge_enable_more_layers", "settable_per_mesh": true + }, + "wall_try_line_thickness": + { + "label": "Try Multiple Line Thicknesses", + "description": "When creating inner walls, try various line thicknesses to fit the wall lines better in narrow spaces. This reduces or increases the inner wall line width by up to 0.01mm.", + "default_value": false, + "type": "bool", + "settable_per_mesh": true } } }, From 43e535ea545768466d996499b1bf571f5feaa59a Mon Sep 17 00:00:00 2001 From: Aleksei S Date: Wed, 4 Apr 2018 11:04:54 +0200 Subject: [PATCH 06/14] Rename expandAll to expandRecursive CURA-5190 --- 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 c7f9580ebd..272569daea 100644 --- a/resources/qml/Settings/SettingView.qml +++ b/resources/qml/Settings/SettingView.qml @@ -610,7 +610,7 @@ Item MenuItem { text: catalog.i18nc("@action:inmenu", "Expand All") - onTriggered: definitionsModel.expandAll() + onTriggered: definitionsModel.expandRecursive() } } From 79a66b43abd6a937bfa52b07e39f84d5839cb410 Mon Sep 17 00:00:00 2001 From: Diego Prado Gesto Date: Wed, 4 Apr 2018 14:43:20 +0200 Subject: [PATCH 07/14] CURA-5175 Add the get_version function to the version upgrade. --- plugins/VersionUpgrade/VersionUpgrade30to31/__init__.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/plugins/VersionUpgrade/VersionUpgrade30to31/__init__.py b/plugins/VersionUpgrade/VersionUpgrade30to31/__init__.py index 23c972df8b..7b2c213a31 100644 --- a/plugins/VersionUpgrade/VersionUpgrade30to31/__init__.py +++ b/plugins/VersionUpgrade/VersionUpgrade30to31/__init__.py @@ -32,6 +32,10 @@ def getMetaData(): "get_version": upgrade.getCfgVersion, "location": {"./extruders"} }, + "quality": { + "get_version": upgrade.getCfgVersion, + "location": {"./quality"} + }, "quality_changes": { "get_version": upgrade.getCfgVersion, "location": {"./quality"} From 18551a4a72cb037e83f105e4838349d981463e70 Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Wed, 4 Apr 2018 17:39:22 +0200 Subject: [PATCH 08/14] Ensure that the "Slice info message disable button" actually disables the sending of info. --- plugins/SliceInfoPlugin/SliceInfo.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/SliceInfoPlugin/SliceInfo.py b/plugins/SliceInfoPlugin/SliceInfo.py index e1c990c596..d618f63b53 100755 --- a/plugins/SliceInfoPlugin/SliceInfo.py +++ b/plugins/SliceInfoPlugin/SliceInfo.py @@ -57,7 +57,7 @@ class SliceInfo(Extension): def messageActionTriggered(self, message_id, action_id): Preferences.getInstance().setValue("info/asked_send_slice_info", True) if action_id == "Disable": - CuraApplication.getInstance().showPreferences() + Preferences.getInstance().addPreference("info/send_slice_info", False) self.send_slice_info_message.hide() def _onWriteStarted(self, output_device): From 8c4c52f915c77038456d574f99864ed53d741f06 Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Thu, 5 Apr 2018 15:13:22 +0200 Subject: [PATCH 09/14] Remove unused functions in PluginBrowser --- plugins/PluginBrowser/PluginBrowser.py | 27 -------------------------- 1 file changed, 27 deletions(-) diff --git a/plugins/PluginBrowser/PluginBrowser.py b/plugins/PluginBrowser/PluginBrowser.py index 8912a7a202..b8004ff7ee 100644 --- a/plugins/PluginBrowser/PluginBrowser.py +++ b/plugins/PluginBrowser/PluginBrowser.py @@ -301,10 +301,7 @@ class PluginBrowser(QObject, Extension): return self._plugins_model - - def _checkCanUpgrade(self, id, version): - # TODO: This could maybe be done more efficiently using a dictionary... # Scan plugin server data for plugin with the given id: @@ -317,30 +314,6 @@ class PluginBrowser(QObject, Extension): return True return False - def _checkAlreadyInstalled(self, id): - metadata = self._plugin_registry.getMetaData(id) - # We already installed this plugin, but the registry just doesn't know it yet. - if id in self._newly_installed_plugin_ids: - return True - # We already uninstalled this plugin, but the registry just doesn't know it yet: - elif id in self._newly_uninstalled_plugin_ids: - return False - elif metadata != {}: - return True - else: - return False - - def _checkInstallStatus(self, plugin_id): - if plugin_id in self._plugin_registry.getInstalledPlugins(): - return "installed" - else: - return "uninstalled" - - def _checkEnabled(self, id): - if id in self._plugin_registry.getActivePlugins(): - return True - return False - def _onRequestFinished(self, reply): reply_url = reply.url().toString() if reply.error() == QNetworkReply.TimeoutError: From 877d700180e140abf623f41dd6d701e06911de03 Mon Sep 17 00:00:00 2001 From: Diego Prado Gesto Date: Thu, 5 Apr 2018 15:27:05 +0200 Subject: [PATCH 10/14] CURA-5197 Add log output with number of models in the buildplate after slice. --- plugins/CuraEngineBackend/CuraEngineBackend.py | 1 + 1 file changed, 1 insertion(+) diff --git a/plugins/CuraEngineBackend/CuraEngineBackend.py b/plugins/CuraEngineBackend/CuraEngineBackend.py index 9873d91c05..314983404c 100755 --- a/plugins/CuraEngineBackend/CuraEngineBackend.py +++ b/plugins/CuraEngineBackend/CuraEngineBackend.py @@ -609,6 +609,7 @@ class CuraEngineBackend(QObject, Backend): self._slicing = False Logger.log("d", "Slicing took %s seconds", time() - self._slice_start_time ) + Logger.log("d", "Number of models per buildplate: %s", dict(self._numObjectsPerBuildPlate())) # See if we need to process the sliced layers job. active_build_plate = Application.getInstance().getMultiBuildPlateModel().activeBuildPlate From 8c0d58c227224e959cbeb166ef0acd521e9316db Mon Sep 17 00:00:00 2001 From: Diego Prado Gesto Date: Thu, 5 Apr 2018 15:28:44 +0200 Subject: [PATCH 11/14] CURA-5197 Add Cura booting time to the logs. --- cura/CuraApplication.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/cura/CuraApplication.py b/cura/CuraApplication.py index 67a57bd0cb..4d8fc42d57 100755 --- a/cura/CuraApplication.py +++ b/cura/CuraApplication.py @@ -106,6 +106,7 @@ import copy import os import argparse import json +import time numpy.seterr(all="ignore") @@ -143,6 +144,7 @@ class CuraApplication(QtApplication): Q_ENUMS(ResourceTypes) def __init__(self, **kwargs): + self._boot_loading_time = time.time() # this list of dir names will be used by UM to detect an old cura directory for dir_name in ["extruders", "machine_instances", "materials", "plugins", "quality", "user", "variants"]: Resources.addExpectedDirNameInData(dir_name) @@ -697,6 +699,7 @@ class CuraApplication(QtApplication): self.started = True self.initializationFinished.emit() + Logger.log("d", "Booting Cura took %s seconds", time.time() - self._boot_loading_time) self.exec_() initializationFinished = pyqtSignal() From 19937d1be07eb919ae1f6f791216c95fc2ffcdbc Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Fri, 6 Apr 2018 10:34:53 +0200 Subject: [PATCH 12/14] Fix version comparison in plugin browser CURA-5202 It was comparing with itself so there's never a version upgrade. --- plugins/PluginBrowser/PluginBrowser.py | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/plugins/PluginBrowser/PluginBrowser.py b/plugins/PluginBrowser/PluginBrowser.py index 8912a7a202..518528f776 100644 --- a/plugins/PluginBrowser/PluginBrowser.py +++ b/plugins/PluginBrowser/PluginBrowser.py @@ -301,19 +301,18 @@ class PluginBrowser(QObject, Extension): return self._plugins_model + def _checkCanUpgrade(self, plugin_id, version): + if plugin_id not in self._plugin_registry.getInstalledPlugins(): + return False - - def _checkCanUpgrade(self, id, version): - - # TODO: This could maybe be done more efficiently using a dictionary... - + plugin_object = self._plugin_registry.getPluginObject(plugin_id) # Scan plugin server data for plugin with the given id: for plugin in self._plugins_metadata: - if id == plugin["id"]: - reg_version = Version(version) + if plugin_id == plugin["id"]: + reg_version = Version(plugin_object.getVersion()) new_version = Version(plugin["version"]) if new_version > reg_version: - Logger.log("i", "%s has an update availible: %s", plugin["id"], plugin["version"]) + Logger.log("i", "%s has an update available: %s", plugin["id"], plugin["version"]) return True return False From cadb2c62b7e1c4396f72562a16604afd68361d33 Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Fri, 6 Apr 2018 11:52:58 +0200 Subject: [PATCH 13/14] Fix open file with Cura CURA-5203 When open a file that's associated with Cura, dialogs that need to pop up may not work because QML is still in the middle of initialization, so we need to wait for QML to finish before doing anything else such as opening files. --- cura/CuraApplication.py | 28 ++++++++++++++++++++++------ resources/qml/Cura.qml | 10 ++++++++++ 2 files changed, 32 insertions(+), 6 deletions(-) diff --git a/cura/CuraApplication.py b/cura/CuraApplication.py index 296c9b75dd..205f918ec4 100755 --- a/cura/CuraApplication.py +++ b/cura/CuraApplication.py @@ -689,16 +689,26 @@ class CuraApplication(QtApplication): else: self.runWithGUI() - # Pre-load files if requested - for file_name in self.getCommandLineOption("file", []): - self._openFile(file_name) - for file_name in self._open_file_queue: # Open all the files that were queued up while plug-ins were loading. - self._openFile(file_name) - self.started = True self.initializationFinished.emit() + + # For now use a timer to postpone some things that need to be done after the application and GUI are + # initialized, for example opening files because they may show dialogs which can be closed due to incomplete + # GUI initialization. + self._post_start_timer = QTimer(self) + self._post_start_timer.setInterval(700) + self._post_start_timer.setSingleShot(True) + self._post_start_timer.timeout.connect(self._onPostStart) + self._post_start_timer.start() + self.exec_() + def _onPostStart(self): + for file_name in self.getCommandLineOption("file", []): + self.callLater(self._openFile, file_name) + for file_name in self._open_file_queue: # Open all the files that were queued up while plug-ins were loading. + self.callLater(self._openFile, file_name) + initializationFinished = pyqtSignal() ## Run Cura without GUI elements and interaction (server mode). @@ -1545,6 +1555,8 @@ class CuraApplication(QtApplication): def log(self, msg): Logger.log("d", msg) + openProjectFile = pyqtSignal(QUrl, arguments = ["project_file"]) # Emitted when a project file is about to open. + @pyqtSlot(QUrl) def readLocalFile(self, file): if not file.isValid(): @@ -1557,6 +1569,10 @@ class CuraApplication(QtApplication): self.deleteAll() break + if self.checkIsValidProjectFile(file): + self.callLater(self.openProjectFile.emit, file) + return + f = file.toLocalFile() extension = os.path.splitext(f)[1] filename = os.path.basename(f) diff --git a/resources/qml/Cura.qml b/resources/qml/Cura.qml index c4ebb790e8..005cb17220 100644 --- a/resources/qml/Cura.qml +++ b/resources/qml/Cura.qml @@ -855,6 +855,16 @@ UM.MainWindow id: askOpenAsProjectOrModelsDialog } + Connections + { + target: CuraApplication + onOpenProjectFile: + { + askOpenAsProjectOrModelsDialog.fileUrl = project_file; + askOpenAsProjectOrModelsDialog.show(); + } + } + EngineLog { id: engineLog; From 10ebabb7f6316e317b02b71b0c87e02ce3ed5b21 Mon Sep 17 00:00:00 2001 From: Aleksei S Date: Mon, 9 Apr 2018 13:13:52 +0200 Subject: [PATCH 14/14] Home head only by X- and Y axis, do extra bedHome (G28 Z) CURA-4844 --- cura/PrinterOutput/GenericOutputController.py | 1 - plugins/UltimakerMachineActions/BedLevelMachineAction.py | 2 ++ 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/cura/PrinterOutput/GenericOutputController.py b/cura/PrinterOutput/GenericOutputController.py index 7f24595edf..470848c208 100644 --- a/cura/PrinterOutput/GenericOutputController.py +++ b/cura/PrinterOutput/GenericOutputController.py @@ -60,7 +60,6 @@ class GenericOutputController(PrinterOutputController): def homeHead(self, printer): self._output_device.sendCommand("G28 X") self._output_device.sendCommand("G28 Y") - self._output_device.sendCommand("G28 Z") def homeBed(self, printer): self._output_device.sendCommand("G28 Z") diff --git a/plugins/UltimakerMachineActions/BedLevelMachineAction.py b/plugins/UltimakerMachineActions/BedLevelMachineAction.py index 6a8a337d8c..d6de21c89b 100644 --- a/plugins/UltimakerMachineActions/BedLevelMachineAction.py +++ b/plugins/UltimakerMachineActions/BedLevelMachineAction.py @@ -42,6 +42,7 @@ class BedLevelMachineAction(MachineAction): printer.homeBed() printer.moveHead(0, 0, 3) printer.homeHead() + printer.homeBed() def _getPrinterOutputDevices(self) -> List[PrinterOutputDevice]: return [printer_output_device for printer_output_device in Application.getInstance().getOutputDeviceManager().getOutputDevices() if isinstance(printer_output_device, PrinterOutputDevice)] @@ -60,6 +61,7 @@ class BedLevelMachineAction(MachineAction): printer.moveHead(0, 0, 3) printer.moveHead(Application.getInstance().getGlobalContainerStack().getProperty("machine_width", "value") - 10, 0, 0) printer.moveHead(0, 0, -3) + printer.homeBed() self._bed_level_position += 1 elif self._bed_level_position == 1: printer.moveHead(0, 0, 3)