Browse Source

Detecting whether the profile is created for multiple extrusion printers or not - CURA-4327

Diego Prado Gesto 7 years ago
parent
commit
e73e218c4e
2 changed files with 12 additions and 5 deletions
  1. 1 3
      cura/QualityManager.py
  2. 11 2
      cura/Settings/QualityAndUserProfilesModel.py

+ 1 - 3
cura/QualityManager.py

@@ -61,8 +61,6 @@ class QualityManager:
             machine_definition = global_stack.definition
             machine_definition = global_stack.definition
 
 
         result = self.findAllQualityChangesForMachine(machine_definition)
         result = self.findAllQualityChangesForMachine(machine_definition)
-        for extruder in self.findAllExtruderDefinitionsForMachine(machine_definition):
-            result.extend(self.findAllQualityChangesForExtruder(extruder))
         result = [quality_change for quality_change in result if quality_change.getName() == quality_changes_name]
         result = [quality_change for quality_change in result if quality_change.getName() == quality_changes_name]
         return result
         return result
 
 
@@ -151,7 +149,7 @@ class QualityManager:
         else:
         else:
             definition_id = "fdmprinter"
             definition_id = "fdmprinter"
 
 
-        filter_dict = { "type": "quality_changes", "extruder": None, "definition": definition_id }
+        filter_dict = { "type": "quality_changes", "definition": definition_id }
         quality_changes_list = ContainerRegistry.getInstance().findInstanceContainers(**filter_dict)
         quality_changes_list = ContainerRegistry.getInstance().findInstanceContainers(**filter_dict)
         return quality_changes_list
         return quality_changes_list
 
 

+ 11 - 2
cura/Settings/QualityAndUserProfilesModel.py

@@ -25,21 +25,30 @@ class QualityAndUserProfilesModel(ProfilesModel):
         machine_definition = quality_manager.getParentMachineDefinition(global_container_stack.getBottom())
         machine_definition = quality_manager.getParentMachineDefinition(global_container_stack.getBottom())
         quality_changes_list = quality_manager.findAllQualityChangesForMachine(machine_definition)
         quality_changes_list = quality_manager.findAllQualityChangesForMachine(machine_definition)
 
 
+        # Detecting if the machine has multiple extrusion
+        multiple_extrusion = False
         # Get the  list of extruders and place the selected extruder at the front of the list.
         # Get the  list of extruders and place the selected extruder at the front of the list.
         extruder_manager = ExtruderManager.getInstance()
         extruder_manager = ExtruderManager.getInstance()
         active_extruder = extruder_manager.getActiveExtruderStack()
         active_extruder = extruder_manager.getActiveExtruderStack()
         extruder_stacks = extruder_manager.getActiveExtruderStacks()
         extruder_stacks = extruder_manager.getActiveExtruderStacks()
         if active_extruder in extruder_stacks:
         if active_extruder in extruder_stacks:
+            multiple_extrusion = True
             extruder_stacks.remove(active_extruder)
             extruder_stacks.remove(active_extruder)
             extruder_stacks = [active_extruder] + extruder_stacks
             extruder_stacks = [active_extruder] + extruder_stacks
 
 
         # Fetch the list of useable qualities across all extruders.
         # Fetch the list of useable qualities across all extruders.
         # The actual list of quality profiles come from the first extruder in the extruder list.
         # The actual list of quality profiles come from the first extruder in the extruder list.
-        quality_list =  QualityManager.getInstance().findAllUsableQualitiesForMachineAndExtruders(global_container_stack,
+        quality_list = quality_manager.findAllUsableQualitiesForMachineAndExtruders(global_container_stack,
                                                                                                   extruder_stacks)
                                                                                                   extruder_stacks)
 
 
         # Filter the quality_change by the list of available quality_types
         # Filter the quality_change by the list of available quality_types
         quality_type_set = set([x.getMetaDataEntry("quality_type") for x in quality_list])
         quality_type_set = set([x.getMetaDataEntry("quality_type") for x in quality_list])
-        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]
+
+        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()]
+        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]
 
 
         return quality_list + filtered_quality_changes
         return quality_list + filtered_quality_changes