Browse Source

modified some code to fix the multiple extrusion issues - CURA-4379

Diego Prado Gesto 7 years ago
parent
commit
e3edc79a3e

+ 5 - 2
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

+ 1 - 1
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]

+ 1 - 1
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()

+ 2 - 2
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);
                 }
             }