mirror of
https://git.mirrors.martin98.com/https://github.com/Ultimaker/Cura
synced 2025-08-15 01:26:01 +08:00
Add getDefaultMaterial() in MaterialManager
This commit is contained in:
parent
86e12fc437
commit
6db26eaca5
@ -4,17 +4,22 @@
|
|||||||
from collections import defaultdict, OrderedDict
|
from collections import defaultdict, OrderedDict
|
||||||
import copy
|
import copy
|
||||||
import uuid
|
import uuid
|
||||||
from typing import Optional
|
from typing import Optional, TYPE_CHECKING
|
||||||
|
|
||||||
from PyQt5.Qt import QTimer, QObject, pyqtSignal, pyqtSlot
|
from PyQt5.Qt import QTimer, QObject, pyqtSignal, pyqtSlot
|
||||||
|
|
||||||
from UM.Application import Application
|
from UM.Application import Application
|
||||||
from UM.Logger import Logger
|
from UM.Logger import Logger
|
||||||
from UM.Settings import ContainerRegistry
|
from UM.Settings.ContainerRegistry import ContainerRegistry
|
||||||
|
from UM.Settings.SettingFunction import SettingFunction
|
||||||
|
from UM.Util import parseBool
|
||||||
|
|
||||||
from .MaterialNode import MaterialNode
|
from .MaterialNode import MaterialNode
|
||||||
from .MaterialGroup import MaterialGroup
|
from .MaterialGroup import MaterialGroup
|
||||||
|
|
||||||
|
if TYPE_CHECKING:
|
||||||
|
from cura.Settings.GlobalStack import GlobalStack
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# MaterialManager maintains a number of maps and trees for material lookup.
|
# MaterialManager maintains a number of maps and trees for material lookup.
|
||||||
@ -344,6 +349,20 @@ class MaterialManager(QObject):
|
|||||||
else:
|
else:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
def getDefaultMaterial(self, global_stack: "GlobalStack", extruder_variant_name: str) -> Optional["MaterialNode"]:
|
||||||
|
node = None
|
||||||
|
machine_definition = global_stack.definition
|
||||||
|
if parseBool(machine_definition.getMetaDataEntry("has_materials", False)):
|
||||||
|
material_diameter = machine_definition.getProperty("material_diameter", "value")
|
||||||
|
if isinstance(material_diameter, SettingFunction):
|
||||||
|
material_diameter = material_diameter(global_stack)
|
||||||
|
approximate_material_diameter = str(round(material_diameter))
|
||||||
|
root_material_id = machine_definition.getMetaDataEntry("preferred_material")
|
||||||
|
root_material_id = self.getRootMaterialIDForDiameter(root_material_id, approximate_material_diameter)
|
||||||
|
node = self.getMaterialNode(machine_definition.getId(), extruder_variant_name,
|
||||||
|
material_diameter, root_material_id)
|
||||||
|
return node
|
||||||
|
|
||||||
#
|
#
|
||||||
# Methods for GUI
|
# Methods for GUI
|
||||||
#
|
#
|
||||||
|
@ -71,19 +71,8 @@ class CuraStackBuilder:
|
|||||||
|
|
||||||
# get material container for extruders
|
# get material container for extruders
|
||||||
material_container = application.empty_material_container
|
material_container = application.empty_material_container
|
||||||
# Only look for the preferred material if this machine has materials
|
material_node = material_manager.getDefaultMaterial(new_global_stack, extruder_variant_name)
|
||||||
if parseBool(machine_definition.getMetaDataEntry("has_materials", False)):
|
if material_node:
|
||||||
material_diameter = machine_definition.getProperty("material_diameter", "value")
|
|
||||||
if isinstance(material_diameter, SettingFunction):
|
|
||||||
material_diameter = material_diameter(new_global_stack)
|
|
||||||
approximate_material_diameter = str(round(material_diameter))
|
|
||||||
root_material_id = machine_definition.getMetaDataEntry("preferred_material")
|
|
||||||
root_material_id = material_manager.getRootMaterialIDForDiameter(root_material_id, approximate_material_diameter)
|
|
||||||
material_node = material_manager.getMaterialNode(definition_id, extruder_variant_name, material_diameter, root_material_id)
|
|
||||||
# Sanity check. If you see this error, the related definition files should be fixed.
|
|
||||||
if not material_node:
|
|
||||||
raise RuntimeError("Cannot find material with definition [%s], extruder_variant_name [%s], and root_material_id [%s]" %
|
|
||||||
(definition_id, extruder_variant_name, root_material_id))
|
|
||||||
material_container = material_node.getContainer()
|
material_container = material_node.getContainer()
|
||||||
|
|
||||||
# Create ExtruderStacks
|
# Create ExtruderStacks
|
||||||
|
Loading…
x
Reference in New Issue
Block a user