mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-07-07 15:07:28 -06:00
Add function to send material profiles to cluster
This only works for cluster. Contributes to issue CURA-5034.
This commit is contained in:
parent
4c1149643f
commit
82a34b49eb
1 changed files with 25 additions and 1 deletions
|
@ -25,7 +25,7 @@ from PyQt5.QtNetwork import QNetworkRequest, QNetworkReply
|
||||||
from PyQt5.QtGui import QDesktopServices
|
from PyQt5.QtGui import QDesktopServices
|
||||||
from PyQt5.QtCore import pyqtSlot, QUrl, pyqtSignal, pyqtProperty, QObject
|
from PyQt5.QtCore import pyqtSlot, QUrl, pyqtSignal, pyqtProperty, QObject
|
||||||
|
|
||||||
from time import time, sleep
|
from time import time
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from typing import Optional, Dict, List
|
from typing import Optional, Dict, List
|
||||||
|
|
||||||
|
@ -91,6 +91,8 @@ class ClusterUM3OutputDevice(NetworkedPrinterOutputDevice):
|
||||||
def requestWrite(self, nodes: List[SceneNode], file_name=None, filter_by_machine=False, file_handler=None, **kwargs):
|
def requestWrite(self, nodes: List[SceneNode], file_name=None, filter_by_machine=False, file_handler=None, **kwargs):
|
||||||
self.writeStarted.emit(self)
|
self.writeStarted.emit(self)
|
||||||
|
|
||||||
|
self.sendMaterialProfiles()
|
||||||
|
|
||||||
#Formats supported by this application (file types that we can actually write).
|
#Formats supported by this application (file types that we can actually write).
|
||||||
if file_handler:
|
if file_handler:
|
||||||
file_formats = file_handler.getSupportedFileTypesWrite()
|
file_formats = file_handler.getSupportedFileTypesWrite()
|
||||||
|
@ -533,6 +535,28 @@ class ClusterUM3OutputDevice(NetworkedPrinterOutputDevice):
|
||||||
self._active_printer = None
|
self._active_printer = None
|
||||||
self.activePrinterChanged.emit()
|
self.activePrinterChanged.emit()
|
||||||
|
|
||||||
|
## Sync the material profiles in Cura with the printer.
|
||||||
|
#
|
||||||
|
# This gets called when connecting to a printer as well as when sending a
|
||||||
|
# print.
|
||||||
|
#
|
||||||
|
# TODO: For now we send all material profiles that are fully loaded. See
|
||||||
|
# if that has any performance impact. If not, we can try sending ALL
|
||||||
|
# profiles. If it has, we may need to limit it to the profiles that are
|
||||||
|
# active in the current machine.
|
||||||
|
def sendMaterialProfiles(self):
|
||||||
|
container_registry = ContainerRegistry.getInstance()
|
||||||
|
|
||||||
|
base_files = set()
|
||||||
|
for material_metadata in container_registry.findContainersMetadata(type = "material"):
|
||||||
|
if container_registry.isLoaded(material_metadata["id"]):
|
||||||
|
if "base_file" not in material_metadata:
|
||||||
|
continue #If there's no base file then there was no file for it (such as empty_material).
|
||||||
|
base_files.add(material_metadata["base_file"])
|
||||||
|
|
||||||
|
for file in base_files:
|
||||||
|
Logger.log("d", "Syncing material profile with printer: {file}".format(file = file))
|
||||||
|
#TODO Call API to send profile.
|
||||||
|
|
||||||
def loadJsonFromReply(reply):
|
def loadJsonFromReply(reply):
|
||||||
try:
|
try:
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue