mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-07-23 14:44:13 -06:00
STAR-322: Improving configuration models interface
This commit is contained in:
parent
a1c252d3a2
commit
4f82a2759a
7 changed files with 278 additions and 183 deletions
|
@ -1,7 +1,8 @@
|
|||
# Copyright (c) 2018 Ultimaker B.V.
|
||||
# Cura is released under the terms of the LGPLv3 or higher.
|
||||
from typing import List, Optional
|
||||
from typing import List
|
||||
|
||||
from cura.PrinterOutput.ConfigurationModel import ConfigurationModel
|
||||
from plugins.UM3NetworkPrinting.src.Cloud.CloudOutputController import CloudOutputController
|
||||
from .CloudClusterPrinterConfiguration import CloudClusterPrinterConfiguration
|
||||
from .CloudClusterPrintJobConstraint import CloudClusterPrintJobConstraint
|
||||
|
@ -31,20 +32,33 @@ class CloudClusterPrintJob(BaseModel):
|
|||
self.time_total = None # type: str
|
||||
self.uuid = None # type: str
|
||||
super().__init__(**kwargs)
|
||||
self.printers = [CloudClusterPrinterConfiguration(**c) if isinstance(c, dict) else c
|
||||
for c in self.configuration]
|
||||
self.print_jobs = [CloudClusterPrintJobConstraint(**p) if isinstance(p, dict) else p
|
||||
for p in self.constraints]
|
||||
self.configuration = [CloudClusterPrinterConfiguration(**c) if isinstance(c, dict) else c
|
||||
for c in self.configuration]
|
||||
self.constraints = [CloudClusterPrintJobConstraint(**p) if isinstance(p, dict) else p
|
||||
for p in self.constraints]
|
||||
|
||||
## Creates an UM3 print job output model based on this cloud cluster print job.
|
||||
# \param printer: The output model of the printer
|
||||
def createOutputModel(self, controller: CloudOutputController) -> UM3PrintJobOutputModel:
|
||||
model = UM3PrintJobOutputModel(controller, self.uuid, self.name)
|
||||
self.updateOutputModel(model)
|
||||
|
||||
return model
|
||||
|
||||
## Creates a new configuration model
|
||||
def _createConfigurationModel(self) -> ConfigurationModel:
|
||||
extruders = [extruder.createConfigurationModel() for extruder in self.configuration or ()]
|
||||
configuration = ConfigurationModel()
|
||||
configuration.setExtruderConfigurations(extruders)
|
||||
return configuration
|
||||
|
||||
## Updates an UM3 print job output model based on this cloud cluster print job.
|
||||
# \param model: The model to update.
|
||||
def updateOutputModel(self, model: UM3PrintJobOutputModel) -> None:
|
||||
# TODO: Add `compatible_machine_families` to the cloud, than add model.setCompatibleMachineFamilies()
|
||||
# TODO: Add `impediments_to_printing` to the cloud, see ClusterUM3OutputDevice._updatePrintJob
|
||||
# TODO: Use model.updateConfigurationChanges, see ClusterUM3OutputDevice#_createConfigurationChanges
|
||||
model.updateConfiguration(self._createConfigurationModel())
|
||||
model.updateTimeTotal(self.time_total)
|
||||
model.updateTimeElapsed(self.time_elapsed)
|
||||
model.updateOwner(self.owner)
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
# Cura is released under the terms of the LGPLv3 or higher.
|
||||
from typing import List
|
||||
|
||||
from cura.PrinterOutput.ConfigurationModel import ConfigurationModel
|
||||
from cura.PrinterOutput.PrinterOutputController import PrinterOutputController
|
||||
from cura.PrinterOutput.PrinterOutputModel import PrinterOutputModel
|
||||
from .CloudClusterPrinterConfiguration import CloudClusterPrinterConfiguration
|
||||
|
@ -40,5 +41,9 @@ class CloudClusterPrinter(BaseModel):
|
|||
model.updateType(self.machine_variant)
|
||||
model.updateState(self.status if self.enabled else "disabled")
|
||||
|
||||
for configuration, extruder in zip(self.configuration, model.extruders):
|
||||
configuration.updateOutputModel(extruder)
|
||||
for configuration, extruder_output, extruder_config in \
|
||||
zip(self.configuration, model.extruders, model.printerConfiguration.extruderConfigurations):
|
||||
configuration.updateOutputModel(extruder_output)
|
||||
configuration.updateConfigurationModel(extruder_config)
|
||||
|
||||
pass
|
||||
|
|
|
@ -1,5 +1,9 @@
|
|||
# Copyright (c) 2018 Ultimaker B.V.
|
||||
# Cura is released under the terms of the LGPLv3 or higher.
|
||||
from typing import List, Optional
|
||||
|
||||
from cura.PrinterOutput.ConfigurationModel import ConfigurationModel
|
||||
from cura.PrinterOutput.ExtruderConfigurationModel import ExtruderConfigurationModel
|
||||
from cura.PrinterOutput.ExtruderOutputModel import ExtruderOutputModel
|
||||
from .CloudClusterPrinterConfigurationMaterial import CloudClusterPrinterConfigurationMaterial
|
||||
from ...Models import BaseModel
|
||||
|
@ -8,7 +12,7 @@ from ...Models import BaseModel
|
|||
## Class representing a cloud cluster printer configuration
|
||||
class CloudClusterPrinterConfiguration(BaseModel):
|
||||
def __init__(self, **kwargs) -> None:
|
||||
self.extruder_index = None # type: str
|
||||
self.extruder_index = None # type: int
|
||||
self.material = None # type: CloudClusterPrinterConfigurationMaterial
|
||||
self.nozzle_diameter = None # type: str
|
||||
self.print_core_id = None # type: str
|
||||
|
@ -25,3 +29,16 @@ class CloudClusterPrinterConfiguration(BaseModel):
|
|||
if model.activeMaterial is None or model.activeMaterial.guid != self.material.guid:
|
||||
material = self.material.createOutputModel()
|
||||
model.updateActiveMaterial(material)
|
||||
|
||||
## Creates a configuration model
|
||||
def createConfigurationModel(self) -> ExtruderConfigurationModel:
|
||||
model = ExtruderConfigurationModel(position = self.extruder_index)
|
||||
self.updateConfigurationModel(model)
|
||||
return model
|
||||
|
||||
## Creates a configuration model
|
||||
def updateConfigurationModel(self, model: ExtruderConfigurationModel) -> ExtruderConfigurationModel:
|
||||
model.setHotendID(self.print_core_id)
|
||||
if self.material:
|
||||
model.setMaterial(self.material.createOutputModel())
|
||||
return model
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue