diff --git a/cura/QualityManager.py b/cura/QualityManager.py index 9d7eac8a05..1ef79f2b86 100644 --- a/cura/QualityManager.py +++ b/cura/QualityManager.py @@ -83,7 +83,7 @@ class QualityManager: filter_by_material = machine_definition.getMetaDataEntry("has_materials") # Stick the material IDs in a set - if material_containers is None: + if material_containers is None or len(material_containers) == 0: filter_by_material = False else: material_ids = set() diff --git a/cura/Settings/ContainerManager.py b/cura/Settings/ContainerManager.py index a0648587c2..0ef2660549 100644 --- a/cura/Settings/ContainerManager.py +++ b/cura/Settings/ContainerManager.py @@ -587,24 +587,17 @@ class ContainerManager(QObject): def _duplicateQualityOrQualityChangesForMachineType(self, quality_name, base_name, machine_definition, material_instances): UM.Logger.log("d", "Attempting to duplicate the quality %s", quality_name) - # Try Quality + if base_name is None: + base_name = quality_name + + # Try to find a Quality with the name. containers = QualityManager.getInstance().findQualityByName(quality_name, machine_definition, material_instances) if containers: container = containers[0] - if base_name is None: - base_name = quality_name return self._duplicateQualityForMachineType(container, base_name, machine_definition) - # Try quality changes. - containers = QualityManager.getInstance().findQualityChangesByName(quality_name, machine_definition, material_instances) - if containers: - container = containers[0] - if base_name is None: - base_name = quality_name - return self._duplicateQualityChangesForMachineType(container, base_name, machine_definition) - else: - UM.Logger.log("d", "Unable to duplicate the quality %s, because it doesn't exist.", quality_name) - return "" + # Assume it is a quality changes. + return self._duplicateQualityChangesForMachineType(quality_name, base_name, machine_definition) # Duplicate a quality profile def _duplicateQualityForMachineType(self, quality_container, base_name, machine_definition): @@ -631,10 +624,10 @@ class ContainerManager(QObject): return new_change_instances # Duplicate a quality changes container - def _duplicateQualityChangesForMachineType(self, quality_changes_container, base_name, machine_definition): + def _duplicateQualityChangesForMachineType(self, quality_changes_name, base_name, machine_definition): new_change_instances = [] - for container in QualityManager.getInstance().findQualityChangesByName(quality_changes_container.getName(), - machine_definition, None): + for container in QualityManager.getInstance().findQualityChangesByName(quality_changes_name, + machine_definition, []): new_unique_id = self._createUniqueId(container.getId(), base_name) new_container = container.duplicate(new_unique_id, base_name) new_change_instances.append(new_container)