Welcome to mirror list, hosted at ThFree Co, Russian Federation.

ExportFileJob.py « src « UM3NetworkPrinting « plugins - github.com/Ultimaker/Cura.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 56d15bc83548367a0d8d842a539062d23e00f233 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
from typing import List, Optional

from UM.FileHandler.FileHandler import FileHandler
from UM.FileHandler.WriteFileJob import WriteFileJob
from UM.Logger import Logger
from UM.Scene.SceneNode import SceneNode
from cura.CuraApplication import CuraApplication

from .MeshFormatHandler import MeshFormatHandler


## Job that exports the build plate to the correct file format for the target cluster.
class ExportFileJob(WriteFileJob):

    def __init__(self, file_handler: Optional[FileHandler], nodes: List[SceneNode], firmware_version: str) -> None:

        self._mesh_format_handler = MeshFormatHandler(file_handler, firmware_version)
        if not self._mesh_format_handler.is_valid:
            Logger.log("e", "Missing file or mesh writer!")
            return

        super().__init__(self._mesh_format_handler.writer, self._mesh_format_handler.createStream(), nodes,
                         self._mesh_format_handler.file_mode)

        # Determine the filename.
        job_name = CuraApplication.getInstance().getPrintInformation().jobName
        extension = self._mesh_format_handler.preferred_format.get("extension", "")
        self.setFileName("{}.{}".format(job_name, extension))

    ## Get the mime type of the selected export file type.
    def getMimeType(self) -> str:
        return self._mesh_format_handler.mime_type

    ## Get the job result as bytes as that is what we need to upload to the cluster.
    def getOutput(self) -> bytes:
        output = self.getStream().getvalue()
        if isinstance(output, str):
            output = output.encode("utf-8")
        return output