mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-07-21 05:37:50 -06:00
Add getDefaultVariantNode() in VariantManager
This commit is contained in:
parent
5d5932547c
commit
86e12fc437
2 changed files with 31 additions and 20 deletions
|
@ -3,14 +3,18 @@
|
||||||
|
|
||||||
from enum import Enum
|
from enum import Enum
|
||||||
from collections import OrderedDict
|
from collections import OrderedDict
|
||||||
from typing import Optional
|
from typing import Optional, TYPE_CHECKING
|
||||||
|
|
||||||
from UM.Logger import Logger
|
from UM.Logger import Logger
|
||||||
from UM.Settings.ContainerRegistry import ContainerRegistry
|
from UM.Settings.ContainerRegistry import ContainerRegistry
|
||||||
|
from UM.Util import parseBool
|
||||||
|
|
||||||
from cura.Machines.ContainerNode import ContainerNode
|
from cura.Machines.ContainerNode import ContainerNode
|
||||||
from cura.Settings.GlobalStack import GlobalStack
|
from cura.Settings.GlobalStack import GlobalStack
|
||||||
|
|
||||||
|
if TYPE_CHECKING:
|
||||||
|
from UM.Settings.DefinitionContainer import DefinitionContainer
|
||||||
|
|
||||||
|
|
||||||
class VariantType(Enum):
|
class VariantType(Enum):
|
||||||
BUILD_PLATE = "buildplate"
|
BUILD_PLATE = "buildplate"
|
||||||
|
@ -86,3 +90,22 @@ class VariantManager:
|
||||||
variant_type: Optional["VariantType"] = VariantType.NOZZLE) -> dict:
|
variant_type: Optional["VariantType"] = VariantType.NOZZLE) -> dict:
|
||||||
machine_definition_id = machine.definition.getId()
|
machine_definition_id = machine.definition.getId()
|
||||||
return self._machine_to_variant_dict_map.get(machine_definition_id, {}).get(variant_type, {})
|
return self._machine_to_variant_dict_map.get(machine_definition_id, {}).get(variant_type, {})
|
||||||
|
|
||||||
|
#
|
||||||
|
# Gets the default variant for the given machine definition.
|
||||||
|
#
|
||||||
|
def getDefaultVariantNode(self, machine_definition: "DefinitionContainer",
|
||||||
|
variant_type: VariantType) -> Optional["ContainerNode"]:
|
||||||
|
machine_definition_id = machine_definition.getId()
|
||||||
|
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")
|
||||||
|
else:
|
||||||
|
if parseBool(machine_definition.getMetaDataEntry("has_variants", False)):
|
||||||
|
preferred_variant_name = machine_definition.getMetaDataEntry("preferred_variant_name")
|
||||||
|
|
||||||
|
node = None
|
||||||
|
if preferred_variant_name:
|
||||||
|
node = self.getVariantNode(machine_definition_id, preferred_variant_name, variant_type)
|
||||||
|
return node
|
||||||
|
|
|
@ -41,29 +41,17 @@ class CuraStackBuilder:
|
||||||
|
|
||||||
# get variant container for the global stack
|
# get variant container for the global stack
|
||||||
global_variant_container = application.empty_variant_container
|
global_variant_container = application.empty_variant_container
|
||||||
if parseBool(machine_definition.getMetaDataEntry("has_variant_buildplates", False)):
|
global_variant_node = variant_manager.getDefaultVariantNode(machine_definition, VariantType.BUILD_PLATE)
|
||||||
global_variant_name = machine_definition.getMetaDataEntry("preferred_variant_buildplate_name")
|
if global_variant_node:
|
||||||
if global_variant_name:
|
global_variant_container = global_variant_node.getContainer()
|
||||||
variant_node = variant_manager.getVariantNode(definition_id, global_variant_name,
|
|
||||||
variant_type = VariantType.BUILD_PLATE)
|
|
||||||
if variant_node is None:
|
|
||||||
raise RuntimeError("Cannot find buildplate variant with definition [%s] and variant name [%s]" %
|
|
||||||
(definition_id, global_variant_name))
|
|
||||||
global_variant_container = variant_node.getContainer()
|
|
||||||
|
|
||||||
# get variant container for extruders
|
# get variant container for extruders
|
||||||
extruder_variant_container = application.empty_variant_container
|
extruder_variant_container = application.empty_variant_container
|
||||||
# Only look for the preferred variant if this machine has variants
|
extruder_variant_node = variant_manager.getDefaultVariantNode(machine_definition, VariantType.NOZZLE)
|
||||||
extruder_variant_name = None
|
extruder_variant_name = None
|
||||||
if parseBool(machine_definition.getMetaDataEntry("has_variants", False)):
|
if extruder_variant_node:
|
||||||
extruder_variant_name = machine_definition.getMetaDataEntry("preferred_variant_name")
|
extruder_variant_container = extruder_variant_node.getContainer()
|
||||||
if extruder_variant_name:
|
extruder_variant_name = extruder_variant_container.getName()
|
||||||
variant_node = variant_manager.getVariantNode(definition_id, extruder_variant_name)
|
|
||||||
# Sanity check. If you see this error, the related definition files should be fixed.
|
|
||||||
if variant_node is None:
|
|
||||||
raise RuntimeError("Cannot find extruder variant with definition [%s] and variant name [%s]" %
|
|
||||||
(definition_id, extruder_variant_name))
|
|
||||||
extruder_variant_container = variant_node.getContainer()
|
|
||||||
|
|
||||||
generated_name = registry.createUniqueName("machine", "", name, machine_definition.getName())
|
generated_name = registry.createUniqueName("machine", "", name, machine_definition.getName())
|
||||||
# Make sure the new name does not collide with any definition or (quality) profile
|
# Make sure the new name does not collide with any definition or (quality) profile
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue