From e3edc79a3ecd3cd4a5806b7133a0996367b8049e Mon Sep 17 00:00:00 2001 From: Diego Prado Gesto Date: Thu, 28 Sep 2017 13:21:03 +0200 Subject: [PATCH] modified some code to fix the multiple extrusion issues - CURA-4379 --- cura/Settings/QualityAndUserProfilesModel.py | 7 +++++-- cura/Settings/UserProfilesModel.py | 2 +- plugins/MachineSettingsAction/MachineSettingsAction.py | 2 +- resources/qml/SidebarHeader.qml | 4 ++-- 4 files changed, 9 insertions(+), 6 deletions(-) diff --git a/cura/Settings/QualityAndUserProfilesModel.py b/cura/Settings/QualityAndUserProfilesModel.py index d0d0f2cae2..6289bf15f1 100644 --- a/cura/Settings/QualityAndUserProfilesModel.py +++ b/cura/Settings/QualityAndUserProfilesModel.py @@ -52,9 +52,12 @@ class QualityAndUserProfilesModel(ProfilesModel): if multiple_extrusion: # If the printer has multiple extruders then quality changes related to the current extruder are kept - filtered_quality_changes = [qc for qc in quality_changes_list if qc.getMetaDataEntry("quality_type") in quality_type_set and qc.getMetaDataEntry("extruder") == active_extruder.definition.getId()] + filtered_quality_changes = [qc for qc in quality_changes_list if qc.getMetaDataEntry("quality_type") in quality_type_set and + qc.getMetaDataEntry("extruder") == active_extruder.definition.getMetaDataEntry("quality_definition") or + qc.getMetaDataEntry("extruder") == active_extruder.definition.getId()] else: # If not, the quality changes of the global stack are selected - filtered_quality_changes = [qc for qc in quality_changes_list if qc.getMetaDataEntry("quality_type") in quality_type_set and qc.getMetaDataEntry("extruder") is None] + filtered_quality_changes = [qc for qc in quality_changes_list if qc.getMetaDataEntry("quality_type") in quality_type_set and + qc.getMetaDataEntry("extruder") is None] return quality_list + filtered_quality_changes diff --git a/cura/Settings/UserProfilesModel.py b/cura/Settings/UserProfilesModel.py index b9c9bef89f..6df100fb09 100644 --- a/cura/Settings/UserProfilesModel.py +++ b/cura/Settings/UserProfilesModel.py @@ -52,7 +52,7 @@ class UserProfilesModel(ProfilesModel): if multiple_extrusion: # If the printer has multiple extruders then quality changes related to the current extruder are kept - filtered_quality_changes = [qc for qc in quality_changes_list if qc.getMetaDataEntry("quality_type") in quality_type_set and qc.getMetaDataEntry("extruder") == active_extruder.definition.getId()] + filtered_quality_changes = [qc for qc in quality_changes_list if qc.getMetaDataEntry("quality_type") in quality_type_set and qc.getMetaDataEntry("extruder") == active_extruder.definition.getMetaDataEntry("quality_definition")] else: # If not, the quality changes of the global stack are selected filtered_quality_changes = [qc for qc in quality_changes_list if qc.getMetaDataEntry("quality_type") in quality_type_set and qc.getMetaDataEntry("extruder") is None] diff --git a/plugins/MachineSettingsAction/MachineSettingsAction.py b/plugins/MachineSettingsAction/MachineSettingsAction.py index 3672066678..9f9c25c1a3 100755 --- a/plugins/MachineSettingsAction/MachineSettingsAction.py +++ b/plugins/MachineSettingsAction/MachineSettingsAction.py @@ -176,7 +176,6 @@ class MachineSettingsAction(MachineAction): node.callDecoration("setActiveExtruder", extruder_manager.getExtruderStack(extruder_count - 1).getId()) definition_changes_container.setProperty("machine_extruder_count", "value", extruder_count) - self.forceUpdate() if extruder_count > 1: # Multiextrusion @@ -220,6 +219,7 @@ class MachineSettingsAction(MachineAction): machine_manager.setActiveVariant(extruder_variant_id) preferences.setValue("cura/choice_on_profile_override", choice_on_profile_override) + self.forceUpdate() @pyqtSlot() diff --git a/resources/qml/SidebarHeader.qml b/resources/qml/SidebarHeader.qml index a17c896ad6..c6ec190dad 100644 --- a/resources/qml/SidebarHeader.qml +++ b/resources/qml/SidebarHeader.qml @@ -94,8 +94,8 @@ Column onGlobalContainerChanged: { forceActiveFocus() // Changing focus applies the currently-being-typed values so it can change the displayed setting values. - var extruder_index = (machineExtruderCount.properties.value == 1) ? -1 : 0 - ExtruderManager.setActiveExtruderIndex(extruder_index); +// var extruder_index = (machineExtruderCount.properties.value == 1) ? -1 : 0 +// ExtruderManager.setActiveExtruderIndex(extruder_index); } }