Add core compatibility check for Factor4 machine

A new function has been added to the MachineManager class to check for core compatibility in the Factor4 machine. This function ensures the selected core is compatible for use with the Factor4 machine and if not, it displays a warning icon with an appropriate message.

CURA-11851
This commit is contained in:
Saumya Jain 2024-04-22 14:00:56 +02:00
parent 4b47a6df85
commit 21e4f99b9d
4 changed files with 27 additions and 5 deletions

View File

@ -847,6 +847,24 @@ class MachineManager(QObject):
return result return result
@pyqtProperty(bool, notify = activeMaterialChanged)
def variantCoreUsableForFactor4(self) -> bool:
"""The selected core is usable if it is in second extruder of Factor4
"""
result = True
if not self._global_container_stack:
return result
if self.activeMachine.id != "UltiMaker Factor 4":
return result
for extruder_container in self._global_container_stack.extruderList:
if( extruder_container.id.startswith("ultimaker_factor4_extruder_right")):
if extruder_container.material == empty_material_container:
return True
if extruder_container.variant.id.startswith("ultimaker_factor4_bb"):
return False
return True
@pyqtSlot(str, result = str) @pyqtSlot(str, result = str)
def getDefinitionByMachineId(self, machine_id: str) -> Optional[str]: def getDefinitionByMachineId(self, machine_id: str) -> Optional[str]:
"""Get the Definition ID of a machine (specified by ID) """Get the Definition ID of a machine (specified by ID)

View File

@ -311,10 +311,11 @@ Item
{ {
id: warnings id: warnings
height: visible ? childrenRect.height : 0 height: visible ? childrenRect.height : 0
visible: buildplateCompatibilityError || buildplateCompatibilityWarning visible: buildplateCompatibilityError || buildplateCompatibilityWarning || coreCompatibilityWarning
property bool buildplateCompatibilityError: !Cura.MachineManager.variantBuildplateCompatible && !Cura.MachineManager.variantBuildplateUsable property bool buildplateCompatibilityError: !Cura.MachineManager.variantBuildplateCompatible && !Cura.MachineManager.variantBuildplateUsable
property bool buildplateCompatibilityWarning: Cura.MachineManager.variantBuildplateUsable property bool buildplateCompatibilityWarning: Cura.MachineManager.variantBuildplateUsable
property bool coreCompatibilityWarning: !Cura.MachineManager.variantCoreUsableForFactor4
// This is a space holder aligning the warning messages. // This is a space holder aligning the warning messages.
UM.Label UM.Label
@ -335,8 +336,8 @@ Item
source: UM.Theme.getIcon("Warning") source: UM.Theme.getIcon("Warning")
width: UM.Theme.getSize("section_icon").width width: UM.Theme.getSize("section_icon").width
height: UM.Theme.getSize("section_icon").height height: UM.Theme.getSize("section_icon").height
color: UM.Theme.getColor("material_compatibility_warning") color: warnings.coreCompatibilityWarning? UM.Theme.getColor("core_compatibility_warning"): UM.Theme.getColor("material_compatibility_warning")
visible: !Cura.MachineManager.isCurrentSetupSupported || warnings.buildplateCompatibilityError || warnings.buildplateCompatibilityWarning visible: !Cura.MachineManager.isCurrentSetupSupported || warnings.buildplateCompatibilityError || warnings.buildplateCompatibilityWarning || warnings.coreCompatibilityWarning
} }
UM.Label UM.Label
@ -345,8 +346,8 @@ Item
anchors.left: warningImage.right anchors.left: warningImage.right
anchors.leftMargin: UM.Theme.getSize("default_margin").width anchors.leftMargin: UM.Theme.getSize("default_margin").width
width: selectors.controlWidth - warningImage.width - UM.Theme.getSize("default_margin").width width: selectors.controlWidth - warningImage.width - UM.Theme.getSize("default_margin").width
text: catalog.i18nc("@label", "Use glue for better adhesion with this material combination.") text:warnings.coreCompatibilityWarning? catalog.i18nc("@label", "Combination not recommended. Load PVA in the left print-core for better reliability."): catalog.i18nc("@label", "Use glue for better adhesion with this material combination.")
visible: CuraSDKVersion == "dev" ? false : warnings.buildplateCompatibilityError || warnings.buildplateCompatibilityWarning visible: CuraSDKVersion == "dev" ? false : warnings.buildplateCompatibilityError || warnings.buildplateCompatibilityWarning|| warnings.coreCompatibilityWarning
wrapMode: Text.WordWrap wrapMode: Text.WordWrap
} }
} }

View File

@ -179,6 +179,8 @@
"material_compatibility_warning": [255, 255, 255, 255], "material_compatibility_warning": [255, 255, 255, 255],
"core_compatibility_warning": [255, 255, 255, 255],
"quality_slider_available": [255, 255, 255, 255], "quality_slider_available": [255, 255, 255, 255],
"monitor_printer_family_tag": [86, 86, 106, 255], "monitor_printer_family_tag": [86, 86, 106, 255],

View File

@ -349,6 +349,7 @@
"setting_validation_ok": "background_2", "setting_validation_ok": "background_2",
"material_compatibility_warning": [243, 166, 59, 255], "material_compatibility_warning": [243, 166, 59, 255],
"core_compatibility_warning": [243, 166, 59, 255],
"progressbar_background": [245, 245, 245, 255], "progressbar_background": [245, 245, 245, 255],
"progressbar_control": [50, 130, 255, 255], "progressbar_control": [50, 130, 255, 255],