mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-07-10 08:17:49 -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
|
return self._buildplate_configuration
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
info = "Printer type: " + self.printerType + "\n"
|
info = "Printer type: " + self._printer_type + "\n"
|
||||||
info += "Extruders: [\n"
|
info += "Extruders: [\n"
|
||||||
for configuration in self.extruderConfigurations:
|
for configuration in self._extruder_configurations:
|
||||||
info += " " + str(configuration) + "\n"
|
info += " " + str(configuration) + "\n"
|
||||||
info += "]"
|
info += "]"
|
||||||
|
if self._buildplate_configuration is not None:
|
||||||
|
info += "\nBuildplate: " + self._buildplate_configuration
|
||||||
return info
|
return info
|
||||||
|
|
||||||
def __eq__(self, other):
|
def __eq__(self, other):
|
||||||
|
@ -54,7 +56,7 @@ class ConfigurationModel(QObject):
|
||||||
def __hash__(self):
|
def __hash__(self):
|
||||||
extruder_hash = hash(0)
|
extruder_hash = hash(0)
|
||||||
first_extruder = None
|
first_extruder = None
|
||||||
for configuration in self.extruderConfigurations:
|
for configuration in self._extruder_configurations:
|
||||||
extruder_hash ^= hash(configuration)
|
extruder_hash ^= hash(configuration)
|
||||||
if configuration.position == 0:
|
if configuration.position == 0:
|
||||||
first_extruder = configuration
|
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
|
# 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
|
# unique within a set
|
||||||
def __hash__(self):
|
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()
|
headPositionChanged = pyqtSignal()
|
||||||
keyChanged = pyqtSignal()
|
keyChanged = pyqtSignal()
|
||||||
typeChanged = pyqtSignal()
|
typeChanged = pyqtSignal()
|
||||||
|
buildplateChanged = pyqtSignal()
|
||||||
cameraChanged = pyqtSignal()
|
cameraChanged = pyqtSignal()
|
||||||
configurationChanged = pyqtSignal()
|
configurationChanged = pyqtSignal()
|
||||||
|
|
||||||
|
@ -41,6 +42,7 @@ class PrinterOutputModel(QObject):
|
||||||
self._printer_state = "unknown"
|
self._printer_state = "unknown"
|
||||||
self._is_preheating = False
|
self._is_preheating = False
|
||||||
self._type = ""
|
self._type = ""
|
||||||
|
self._buildplate_name = None
|
||||||
# Update the printer configuration every time any of the extruders changes its configuration
|
# Update the printer configuration every time any of the extruders changes its configuration
|
||||||
for extruder in self._extruders:
|
for extruder in self._extruders:
|
||||||
extruder.extruderConfigurationChanged.connect(self._updatePrinterConfiguration)
|
extruder.extruderConfigurationChanged.connect(self._updatePrinterConfiguration)
|
||||||
|
@ -78,6 +80,15 @@ class PrinterOutputModel(QObject):
|
||||||
self._type = type
|
self._type = type
|
||||||
self.typeChanged.emit()
|
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)
|
@pyqtProperty(str, notify=keyChanged)
|
||||||
def key(self):
|
def key(self):
|
||||||
return self._key
|
return self._key
|
||||||
|
@ -252,5 +263,5 @@ class PrinterOutputModel(QObject):
|
||||||
def _updatePrinterConfiguration(self):
|
def _updatePrinterConfiguration(self):
|
||||||
self._printer_configuration.printerType = self._type
|
self._printer_configuration.printerType = self._type
|
||||||
self._printer_configuration.extruderConfigurations = [extruder.extruderConfiguration for extruder in self._extruders]
|
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()
|
self.configurationChanged.emit()
|
||||||
|
|
|
@ -24,6 +24,7 @@ from UM.Settings.SettingFunction import SettingFunction
|
||||||
from UM.Signal import postponeSignals, CompressTechnique
|
from UM.Signal import postponeSignals, CompressTechnique
|
||||||
|
|
||||||
from cura.Machines.QualityManager import getMachineDefinitionIDForQualitySearch
|
from cura.Machines.QualityManager import getMachineDefinitionIDForQualitySearch
|
||||||
|
from cura.Machines.VariantManager import VariantType
|
||||||
from cura.PrinterOutputDevice import PrinterOutputDevice
|
from cura.PrinterOutputDevice import PrinterOutputDevice
|
||||||
from cura.PrinterOutput.ConfigurationModel import ConfigurationModel
|
from cura.PrinterOutput.ConfigurationModel import ConfigurationModel
|
||||||
from cura.PrinterOutput.ExtruderConfigurationModel import ExtruderConfigurationModel
|
from cura.PrinterOutput.ExtruderConfigurationModel import ExtruderConfigurationModel
|
||||||
|
@ -205,11 +206,6 @@ class MachineManager(QObject):
|
||||||
# print("%%%%%%%%", configuration == self._current_printer_configuration)
|
# print("%%%%%%%%", configuration == self._current_printer_configuration)
|
||||||
return self._current_printer_configuration == 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)
|
@pyqtProperty("QVariantList", notify = outputDevicesChanged)
|
||||||
def printerOutputDevices(self):
|
def printerOutputDevices(self):
|
||||||
return self._printer_output_devices
|
return self._printer_output_devices
|
||||||
|
@ -1028,6 +1024,29 @@ class MachineManager(QObject):
|
||||||
self._setMaterial(position, new_material)
|
self._setMaterial(position, new_material)
|
||||||
continue
|
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")
|
@pyqtSlot("QVariant")
|
||||||
def setGlobalVariant(self, container_node):
|
def setGlobalVariant(self, container_node):
|
||||||
self.blurSettings.emit()
|
self.blurSettings.emit()
|
||||||
|
@ -1036,16 +1055,6 @@ class MachineManager(QObject):
|
||||||
self._updateMaterialWithVariant(None) # Update all materials
|
self._updateMaterialWithVariant(None) # Update all materials
|
||||||
self._updateQualityWithMaterial()
|
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")
|
@pyqtSlot(str, "QVariant")
|
||||||
def setMaterial(self, position, container_node):
|
def setMaterial(self, position, container_node):
|
||||||
position = str(position)
|
position = str(position)
|
||||||
|
|
|
@ -380,6 +380,8 @@ class ClusterUM3OutputDevice(NetworkedPrinterOutputDevice):
|
||||||
printer.updateName(data["friendly_name"])
|
printer.updateName(data["friendly_name"])
|
||||||
printer.updateKey(data["uuid"])
|
printer.updateKey(data["uuid"])
|
||||||
printer.updateType(data["machine_variant"])
|
printer.updateType(data["machine_variant"])
|
||||||
|
if "build_plate" in data:
|
||||||
|
printer.updateBuildplate(data["build_plate"]["name"])
|
||||||
if not data["enabled"]:
|
if not data["enabled"]:
|
||||||
printer.updateState("disabled")
|
printer.updateState("disabled")
|
||||||
else:
|
else:
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue