diff --git a/cura/PrinterOutput/Models/MaterialOutputModel.py b/cura/PrinterOutput/Models/MaterialOutputModel.py index 7a17ef3cce..3714824a89 100644 --- a/cura/PrinterOutput/Models/MaterialOutputModel.py +++ b/cura/PrinterOutput/Models/MaterialOutputModel.py @@ -34,3 +34,11 @@ class MaterialOutputModel(QObject): @pyqtProperty(str, constant = True) def name(self) -> str: return self._name + + def __eq__(self, other): + if self is other: + return True + if type(other) is not MaterialOutputModel: + return False + + return self.guid == other.guid and self.type == other.type and self.brand == other.brand and self.color == other.color and self.name == other.name diff --git a/cura/Settings/MachineManager.py b/cura/Settings/MachineManager.py index 3fb55c0e70..19ba83032b 100755 --- a/cura/Settings/MachineManager.py +++ b/cura/Settings/MachineManager.py @@ -182,9 +182,11 @@ class MachineManager(QObject): # Create the configuration model with the current data in Cura self._current_printer_configuration.printerType = self._global_container_stack.definition.getName() - self._current_printer_configuration.extruderConfigurations = [] - for extruder in self._global_container_stack.extruderList: - extruder_configuration = ExtruderConfigurationModel() + + if len(self._current_printer_configuration.extruderConfigurations) != len(self._global_container_stack.extruderList): + self._current_printer_configuration.extruderConfigurations = [ExtruderConfigurationModel() for extruder in self._global_container_stack.extruderList] + + for extruder, extruder_configuration in zip(self._global_container_stack.extruderList, self._current_printer_configuration.extruderConfigurations): # For compare just the GUID is needed at this moment mat_type = extruder.material.getMetaDataEntry("material") if extruder.material != empty_material_container else None mat_guid = extruder.material.getMetaDataEntry("GUID") if extruder.material != empty_material_container else None @@ -196,7 +198,6 @@ class MachineManager(QObject): extruder_configuration.position = int(extruder.getMetaDataEntry("position")) extruder_configuration.material = material_model extruder_configuration.hotendID = extruder.variant.getName() if extruder.variant != empty_variant_container else None - self._current_printer_configuration.extruderConfigurations.append(extruder_configuration) # An empty build plate configuration from the network printer is presented as an empty string, so use "" for an # empty build plate.