mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-07-09 07:56:22 -06:00
CURA-4870 Add information about the buildplate in the printer output
model so it can be used to show the buildplate name in the configuration list.
This commit is contained in:
parent
0beee79c3a
commit
97740123fa
5 changed files with 44 additions and 20 deletions
|
@ -41,11 +41,13 @@ class ConfigurationModel(QObject):
|
|||
return self._buildplate_configuration
|
||||
|
||||
def __str__(self):
|
||||
info = "Printer type: " + self.printerType + "\n"
|
||||
info = "Printer type: " + self._printer_type + "\n"
|
||||
info += "Extruders: [\n"
|
||||
for configuration in self.extruderConfigurations:
|
||||
for configuration in self._extruder_configurations:
|
||||
info += " " + str(configuration) + "\n"
|
||||
info += "]"
|
||||
if self._buildplate_configuration is not None:
|
||||
info += "\nBuildplate: " + self._buildplate_configuration
|
||||
return info
|
||||
|
||||
def __eq__(self, other):
|
||||
|
@ -54,7 +56,7 @@ class ConfigurationModel(QObject):
|
|||
def __hash__(self):
|
||||
extruder_hash = hash(0)
|
||||
first_extruder = None
|
||||
for configuration in self.extruderConfigurations:
|
||||
for configuration in self._extruder_configurations:
|
||||
extruder_hash ^= hash(configuration)
|
||||
if configuration.position == 0:
|
||||
first_extruder = configuration
|
||||
|
|
|
@ -46,4 +46,4 @@ class ExtruderConfigurationModel(QObject):
|
|||
# Calculating a hash function using the position of the extruder, the material GUID and the hotend id to check if is
|
||||
# unique within a set
|
||||
def __hash__(self):
|
||||
return hash(self._position) ^ (hash(self._material.guid) if self.material is not None else hash(0)) ^ hash(self._hotend_id)
|
||||
return hash(self._position) ^ (hash(self._material.guid) if self._material is not None else hash(0)) ^ hash(self._hotend_id)
|
|
@ -23,6 +23,7 @@ class PrinterOutputModel(QObject):
|
|||
headPositionChanged = pyqtSignal()
|
||||
keyChanged = pyqtSignal()
|
||||
typeChanged = pyqtSignal()
|
||||
buildplateChanged = pyqtSignal()
|
||||
cameraChanged = pyqtSignal()
|
||||
configurationChanged = pyqtSignal()
|
||||
|
||||
|
@ -41,6 +42,7 @@ class PrinterOutputModel(QObject):
|
|||
self._printer_state = "unknown"
|
||||
self._is_preheating = False
|
||||
self._type = ""
|
||||
self._buildplate_name = None
|
||||
# Update the printer configuration every time any of the extruders changes its configuration
|
||||
for extruder in self._extruders:
|
||||
extruder.extruderConfigurationChanged.connect(self._updatePrinterConfiguration)
|
||||
|
@ -78,6 +80,15 @@ class PrinterOutputModel(QObject):
|
|||
self._type = type
|
||||
self.typeChanged.emit()
|
||||
|
||||
@pyqtProperty(str, notify = buildplateChanged)
|
||||
def buildplate(self):
|
||||
return self._buildplate_name
|
||||
|
||||
def updateBuildplate(self, buildplate_name):
|
||||
if self._buildplate_name != buildplate_name:
|
||||
self._buildplate_name = buildplate_name
|
||||
self.buildplateChanged.emit()
|
||||
|
||||
@pyqtProperty(str, notify=keyChanged)
|
||||
def key(self):
|
||||
return self._key
|
||||
|
@ -252,5 +263,5 @@ class PrinterOutputModel(QObject):
|
|||
def _updatePrinterConfiguration(self):
|
||||
self._printer_configuration.printerType = self._type
|
||||
self._printer_configuration.extruderConfigurations = [extruder.extruderConfiguration for extruder in self._extruders]
|
||||
self._printer_configuration.buildplateConfiguration = None # TODO Add the buildplate information
|
||||
self._printer_configuration.buildplateConfiguration = self._buildplate_name
|
||||
self.configurationChanged.emit()
|
||||
|
|
|
@ -24,6 +24,7 @@ from UM.Settings.SettingFunction import SettingFunction
|
|||
from UM.Signal import postponeSignals, CompressTechnique
|
||||
|
||||
from cura.Machines.QualityManager import getMachineDefinitionIDForQualitySearch
|
||||
from cura.Machines.VariantManager import VariantType
|
||||
from cura.PrinterOutputDevice import PrinterOutputDevice
|
||||
from cura.PrinterOutput.ConfigurationModel import ConfigurationModel
|
||||
from cura.PrinterOutput.ExtruderConfigurationModel import ExtruderConfigurationModel
|
||||
|
@ -205,11 +206,6 @@ class MachineManager(QObject):
|
|||
# print("%%%%%%%%", configuration == self._current_printer_configuration)
|
||||
return self._current_printer_configuration == configuration
|
||||
|
||||
@pyqtSlot(QObject)
|
||||
def applyRemoteConfiguration(self, configuration: ConfigurationModel):
|
||||
for extruder_configuration in configuration.extruderConfigurations:
|
||||
self.setConfiguration(extruder_configuration.position, extruder_configuration.hotendID, extruder_configuration.material.guid)
|
||||
|
||||
@pyqtProperty("QVariantList", notify = outputDevicesChanged)
|
||||
def printerOutputDevices(self):
|
||||
return self._printer_output_devices
|
||||
|
@ -1028,6 +1024,29 @@ class MachineManager(QObject):
|
|||
self._setMaterial(position, new_material)
|
||||
continue
|
||||
|
||||
@pyqtSlot(QObject)
|
||||
def applyRemoteConfiguration(self, configuration: ConfigurationModel):
|
||||
self.blurSettings.emit()
|
||||
with postponeSignals(*self._getContainerChangedSignals(),
|
||||
compress=CompressTechnique.CompressPerParameterValue):
|
||||
for extruder_configuration in configuration.extruderConfigurations:
|
||||
position = str(extruder_configuration.position)
|
||||
variant_container_node = self._variant_manager.getVariantNode(
|
||||
self._global_container_stack.definition.getId(), extruder_configuration.hotendID)
|
||||
material_container_node = self._material_manager.getMaterialNodeByType(
|
||||
self._global_container_stack, extruder_configuration.hotendID,
|
||||
extruder_configuration.material.guid)
|
||||
self._setVariantNode(position, variant_container_node)
|
||||
self._setMaterial(position, material_container_node)
|
||||
self._updateMaterialWithVariant(position)
|
||||
|
||||
if configuration.buildplateConfiguration is not None:
|
||||
global_variant_container_node = self._variant_manager.getVariantNode(
|
||||
self._global_container_stack.definition.getId(), configuration.buildplateConfiguration,
|
||||
variant_type=VariantType.BUILD_PLATE)
|
||||
self._setGlobalVariant(global_variant_container_node)
|
||||
self._updateQualityWithMaterial()
|
||||
|
||||
@pyqtSlot("QVariant")
|
||||
def setGlobalVariant(self, container_node):
|
||||
self.blurSettings.emit()
|
||||
|
@ -1036,16 +1055,6 @@ class MachineManager(QObject):
|
|||
self._updateMaterialWithVariant(None) # Update all materials
|
||||
self._updateQualityWithMaterial()
|
||||
|
||||
def setConfiguration(self, position, variant_name, material_guid):
|
||||
position = str(position)
|
||||
variant_container_node = self._variant_manager.getVariantNode(self._global_container_stack.definition.getId(), variant_name)
|
||||
material_container_node = self._material_manager.getMaterialNodeByType(self._global_container_stack, variant_name, material_guid)
|
||||
with postponeSignals(*self._getContainerChangedSignals(), compress = CompressTechnique.CompressPerParameterValue):
|
||||
self._setVariantNode(position, variant_container_node)
|
||||
self._setMaterial(position, material_container_node)
|
||||
self._updateMaterialWithVariant(position)
|
||||
self._updateQualityWithMaterial()
|
||||
|
||||
@pyqtSlot(str, "QVariant")
|
||||
def setMaterial(self, position, container_node):
|
||||
position = str(position)
|
||||
|
|
|
@ -380,6 +380,8 @@ class ClusterUM3OutputDevice(NetworkedPrinterOutputDevice):
|
|||
printer.updateName(data["friendly_name"])
|
||||
printer.updateKey(data["uuid"])
|
||||
printer.updateType(data["machine_variant"])
|
||||
if "build_plate" in data:
|
||||
printer.updateBuildplate(data["build_plate"]["name"])
|
||||
if not data["enabled"]:
|
||||
printer.updateState("disabled")
|
||||
else:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue