diff --git a/cura/Machines/VariantManager.py b/cura/Machines/VariantManager.py index 969fed670e..0d497de51e 100644 --- a/cura/Machines/VariantManager.py +++ b/cura/Machines/VariantManager.py @@ -115,17 +115,24 @@ class VariantManager: # # Gets the default variant for the given machine definition. + # If the optional GlobalStack is given, the metadata information will be fetched from the GlobalStack instead of + # the DefinitionContainer. Because for machines such as UM2, you can enable Olsson Block, which will set + # "has_variants" to True in the GlobalStack. In those cases, we need to fetch metadata from the GlobalStack or + # it may not be correct. # def getDefaultVariantNode(self, machine_definition: "DefinitionContainer", - variant_type: VariantType) -> Optional["ContainerNode"]: + variant_type: "VariantType", + global_stack: Optional["GlobalStack"] = None) -> Optional["ContainerNode"]: machine_definition_id = machine_definition.getId() + container_for_metadata_fetching = global_stack if global_stack is not None else machine_definition + preferred_variant_name = None if variant_type == VariantType.BUILD_PLATE: - if parseBool(machine_definition.getMetaDataEntry("has_variant_buildplates", False)): - preferred_variant_name = machine_definition.getMetaDataEntry("preferred_variant_buildplate_name") + if parseBool(container_for_metadata_fetching.getMetaDataEntry("has_variant_buildplates", False)): + preferred_variant_name = container_for_metadata_fetching.getMetaDataEntry("preferred_variant_buildplate_name") else: - if parseBool(machine_definition.getMetaDataEntry("has_variants", False)): - preferred_variant_name = machine_definition.getMetaDataEntry("preferred_variant_name") + if parseBool(container_for_metadata_fetching.getMetaDataEntry("has_variants", False)): + preferred_variant_name = container_for_metadata_fetching.getMetaDataEntry("preferred_variant_name") node = None if preferred_variant_name: diff --git a/cura/Settings/CuraStackBuilder.py b/cura/Settings/CuraStackBuilder.py index 6374e6056c..58109d3a8d 100644 --- a/cura/Settings/CuraStackBuilder.py +++ b/cura/Settings/CuraStackBuilder.py @@ -114,7 +114,8 @@ class CuraStackBuilder: # get variant container for extruders extruder_variant_container = application.empty_variant_container - extruder_variant_node = variant_manager.getDefaultVariantNode(global_stack.definition, VariantType.NOZZLE) + extruder_variant_node = variant_manager.getDefaultVariantNode(global_stack.definition, VariantType.NOZZLE, + global_stack = global_stack) extruder_variant_name = None if extruder_variant_node: extruder_variant_container = extruder_variant_node.getContainer() diff --git a/resources/definitions/ultimaker2.def.json b/resources/definitions/ultimaker2.def.json index aa684946c2..a91d2332b0 100644 --- a/resources/definitions/ultimaker2.def.json +++ b/resources/definitions/ultimaker2.def.json @@ -14,6 +14,7 @@ "platform_offset": [9, 0, 0], "has_materials": false, "has_machine_quality": true, + "preferred_variant_name": "0.4 mm", "exclude_materials": ["generic_hips", "generic_petg", "generic_bam", "ultimaker_bam", "generic_pva", "ultimaker_pva", "generic_tough_pla", "ultimaker_tough_pla_black", "ultimaker_tough_pla_green", "ultimaker_tough_pla_red", "ultimaker_tough_pla_white"], "first_start_actions": ["UM2UpgradeSelection"], "supported_actions":["UM2UpgradeSelection", "UpgradeFirmware"],