diff --git a/cura/Settings/MachineManager.py b/cura/Settings/MachineManager.py index dec433e8f8..35f3268cce 100755 --- a/cura/Settings/MachineManager.py +++ b/cura/Settings/MachineManager.py @@ -1322,7 +1322,8 @@ class MachineManager(QObject): # changed. # \param position The extruder stack to update. If provided with None, all # extruder stacks will be updated. - def updateMaterialWithVariant(self, position: Optional[str]) -> None: + @pyqtSlot() + def updateMaterialWithVariant(self, position: Optional[str] = None) -> None: if self._global_container_stack is None: return if position is None: @@ -1353,10 +1354,9 @@ class MachineManager(QObject): self._setMaterial(position_item, new_material) else: # The current material is not available, find the preferred one. - if position is not None: - approximate_material_diameter = int(self._global_container_stack.extruderList[int(position_item)].getApproximateMaterialDiameter()) - material_node = nozzle_node.preferredMaterial(approximate_material_diameter) - self._setMaterial(position_item, material_node) + approximate_material_diameter = int(self._global_container_stack.extruderList[int(position_item)].getApproximateMaterialDiameter()) + material_node = nozzle_node.preferredMaterial(approximate_material_diameter) + self._setMaterial(position_item, material_node) ## Given a printer definition name, select the right machine instance. In case it doesn't exist, create a new # instance with the same network key. diff --git a/resources/qml/Preferences/Materials/MaterialsView.qml b/resources/qml/Preferences/Materials/MaterialsView.qml index 6d5a8119c5..8a5ec79d53 100644 --- a/resources/qml/Preferences/Materials/MaterialsView.qml +++ b/resources/qml/Preferences/Materials/MaterialsView.qml @@ -111,6 +111,8 @@ TabView { base.setMetaDataEntry("approximate_diameter", old_approximate_diameter_value, getApproximateDiameter(new_diameter_value).toString()); base.setMetaDataEntry("properties/diameter", properties.diameter, new_diameter_value); + // CURA-6868 Make sure to update the extruder to user a diameter-compatible material. + Cura.MachineManager.updateMaterialWithVariant() base.resetSelectedMaterial() }