mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-07-07 15:07:28 -06:00
Merge branch 'master' into CURA-8609_sync_materials_to_printer
Conflicts: cura/Machines/Models/MaterialManagementModel.py -> Both master and my branch added an __init__ function. I merged the two __init__s to do both things that need to be done.
This commit is contained in:
commit
b98da6b538
21 changed files with 4567 additions and 89 deletions
|
@ -2,7 +2,8 @@
|
|||
# Cura is released under the terms of the LGPLv3 or higher.
|
||||
|
||||
import copy # To duplicate materials.
|
||||
from PyQt5.QtCore import pyqtProperty, pyqtSignal, pyqtSlot, QObject, QUrl
|
||||
from PyQt5.QtCore import pyqtSignal, pyqtSlot, QObject, QUrl
|
||||
from PyQt5.QtGui import QDesktopServices
|
||||
from typing import Any, Dict, Optional, TYPE_CHECKING
|
||||
import uuid # To generate new GUIDs for new materials.
|
||||
import zipfile # To export all materials in a .zip archive.
|
||||
|
@ -22,6 +23,7 @@ if TYPE_CHECKING:
|
|||
|
||||
catalog = i18nCatalog("cura")
|
||||
|
||||
|
||||
class MaterialManagementModel(QObject):
|
||||
favoritesChanged = pyqtSignal(str)
|
||||
"""Triggered when a favorite is added or removed.
|
||||
|
@ -32,6 +34,60 @@ class MaterialManagementModel(QObject):
|
|||
def __init__(self, parent: QObject = None):
|
||||
super().__init__(parent)
|
||||
self._sync_all_dialog = None # type: Optional[QObject]
|
||||
self._checkIfNewMaterialsWereInstalled()
|
||||
|
||||
def _checkIfNewMaterialsWereInstalled(self) -> None:
|
||||
"""
|
||||
Checks whether new material packages were installed in the latest startup. If there were, then it shows
|
||||
a message prompting the user to sync the materials with their printers.
|
||||
"""
|
||||
application = cura.CuraApplication.CuraApplication.getInstance()
|
||||
for package_id, package_data in application.getPackageManager().getPackagesInstalledOnStartup().items():
|
||||
if package_data["package_info"]["package_type"] == "material":
|
||||
# At least one new material was installed
|
||||
self._showSyncNewMaterialsMessage()
|
||||
break
|
||||
|
||||
def _showSyncNewMaterialsMessage(self) -> None:
|
||||
sync_materials_message = Message(
|
||||
text = catalog.i18nc("@action:button",
|
||||
"Please sync the material profiles with your printers before starting to print."),
|
||||
title = catalog.i18nc("@action:button", "New materials installed"),
|
||||
message_type = Message.MessageType.WARNING,
|
||||
lifetime = 0
|
||||
)
|
||||
|
||||
sync_materials_message.addAction(
|
||||
"sync",
|
||||
name = catalog.i18nc("@action:button", "Sync materials with printers"),
|
||||
icon = "",
|
||||
description = "Sync your newly installed materials with your printers.",
|
||||
button_align = Message.ActionButtonAlignment.ALIGN_RIGHT
|
||||
)
|
||||
|
||||
sync_materials_message.addAction(
|
||||
"learn_more",
|
||||
name = catalog.i18nc("@action:button", "Learn more"),
|
||||
icon = "",
|
||||
description = "Learn more about syncing your newly installed materials with your printers.",
|
||||
button_align = Message.ActionButtonAlignment.ALIGN_LEFT,
|
||||
button_style = Message.ActionButtonStyle.LINK
|
||||
)
|
||||
sync_materials_message.actionTriggered.connect(self._onSyncMaterialsMessageActionTriggered)
|
||||
|
||||
# Show the message only if there are printers that support material export
|
||||
container_registry = cura.CuraApplication.CuraApplication.getInstance().getContainerRegistry()
|
||||
global_stacks = container_registry.findContainerStacks(type = "machine")
|
||||
if any([stack.supportsMaterialExport for stack in global_stacks]):
|
||||
sync_materials_message.show()
|
||||
|
||||
def _onSyncMaterialsMessageActionTriggered(self, sync_message: Message, sync_message_action: str):
|
||||
if sync_message_action == "sync":
|
||||
QDesktopServices.openUrl(QUrl("https://example.com/openSyncAllWindow"))
|
||||
# self.openSyncAllWindow()
|
||||
sync_message.hide()
|
||||
elif sync_message_action == "learn_more":
|
||||
QDesktopServices.openUrl(QUrl("https://support.ultimaker.com/hc/en-us/articles/360013137919?utm_source=cura&utm_medium=software&utm_campaign=sync-material-printer-message"))
|
||||
|
||||
@pyqtSlot("QVariant", result = bool)
|
||||
def canMaterialBeRemoved(self, material_node: "MaterialNode") -> bool:
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
# Copyright (c) 2021 Ultimaker B.V.
|
||||
# Cura is released under the terms of the LGPLv3 or higher.
|
||||
|
||||
import os
|
||||
from collections import OrderedDict
|
||||
from typing import Dict, Optional, List, Any
|
||||
|
@ -95,7 +98,11 @@ class LicensePresenter(QObject):
|
|||
|
||||
for package_id, item in packages.items():
|
||||
item["package_id"] = package_id
|
||||
try:
|
||||
item["licence_content"] = self._package_manager.getPackageLicense(item["package_path"])
|
||||
except EnvironmentError as e:
|
||||
Logger.error(f"Could not open downloaded package {package_id} to read license file! {type(e)} - {e}")
|
||||
continue # Skip this package.
|
||||
if item["licence_content"] is None:
|
||||
# Implicitly accept when there is no license
|
||||
item["accepted"] = True
|
||||
|
|
|
@ -682,9 +682,13 @@ class Toolbox(QObject, Extension):
|
|||
if not package_info:
|
||||
Logger.log("w", "Package file [%s] was not a valid CuraPackage.", file_path)
|
||||
return
|
||||
|
||||
license_content = self._package_manager.getPackageLicense(file_path)
|
||||
package_id = package_info["package_id"]
|
||||
|
||||
try:
|
||||
license_content = self._package_manager.getPackageLicense(file_path)
|
||||
except EnvironmentError as e:
|
||||
Logger.error(f"Could not open downloaded package {package_id} to read license file! {type(e)} - {e}")
|
||||
return
|
||||
if license_content is not None:
|
||||
# get the icon url for package_id, make sure the result is a string, never None
|
||||
icon_url = next((x["icon_url"] for x in self.packagesModel.items if x["id"] == package_id), None) or ""
|
||||
|
|
353
plugins/UM3NetworkPrinting/resources/svg/CloudPlatform.svg
Normal file
353
plugins/UM3NetworkPrinting/resources/svg/CloudPlatform.svg
Normal file
|
@ -0,0 +1,353 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
viewBox="0 0 274.75 126.24"
|
||||
version="1.1"
|
||||
id="svg425"
|
||||
sodipodi:docname="CloudPlatform.svg"
|
||||
width="274.75"
|
||||
height="126.24"
|
||||
inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)">
|
||||
<metadata
|
||||
id="metadata429">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<sodipodi:namedview
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1"
|
||||
objecttolerance="10"
|
||||
gridtolerance="10"
|
||||
guidetolerance="10"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1200"
|
||||
id="namedview427"
|
||||
showgrid="false"
|
||||
fit-margin-left="1"
|
||||
fit-margin-bottom="1"
|
||||
fit-margin-top="1"
|
||||
fit-margin-right="1"
|
||||
inkscape:zoom="2.593819"
|
||||
inkscape:cx="115.77157"
|
||||
inkscape:cy="14.444977"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg425" />
|
||||
<defs
|
||||
id="defs332">
|
||||
<style
|
||||
id="style330">.cls-1{fill:#f3f8fe;}.cls-2{fill:none;stroke:#061884;stroke-miterlimit:10;}.cls-3{fill:#061884;}.cls-4,.cls-6{fill:#fff;}.cls-4{fill-rule:evenodd;}.cls-5{fill:#dde9fd;}.cls-7{fill:#c5dbfb;}</style>
|
||||
</defs>
|
||||
<g
|
||||
id="Layer_2"
|
||||
data-name="Layer 2"
|
||||
transform="translate(-28.84,-11.189998)">
|
||||
<path
|
||||
class="cls-1"
|
||||
d="M 71.93,79.82 H 49.62 a 4.12,4.12 0 0 0 -4.13,4.11 v 47.55 a 4.13,4.13 0 0 0 4.13,4.12 h 22.31 a 4.13,4.13 0 0 0 4.13,-4.12 V 83.93 a 4.12,4.12 0 0 0 -4.13,-4.11 z m 2.18,51 a 2.82,2.82 0 0 1 -2.82,2.82 h -21 a 2.83,2.83 0 0 1 -2.82,-2.82 V 84.58 a 2.84,2.84 0 0 1 2.82,-2.83 h 5.92 a 1.45,1.45 0 0 0 1.45,1.46 h 6.3 a 1.46,1.46 0 0 0 1.46,-1.46 h 5.91 a 2.83,2.83 0 0 1 2.82,2.83 z"
|
||||
id="path334"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#f3f8fe" />
|
||||
<path
|
||||
class="cls-2"
|
||||
d="M 71.93,79.82 H 49.62 a 4.12,4.12 0 0 0 -4.13,4.11 v 47.55 a 4.13,4.13 0 0 0 4.13,4.12 h 22.31 a 4.13,4.13 0 0 0 4.13,-4.12 V 83.93 a 4.12,4.12 0 0 0 -4.13,-4.11 z"
|
||||
id="path336"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:none;stroke:#061884;stroke-miterlimit:10" />
|
||||
<path
|
||||
class="cls-3"
|
||||
d="m 63.2,81 h -4.85 a 0.5,0.5 0 1 0 0,1 h 4.85 a 0.5,0.5 0 0 0 0,-1 z"
|
||||
id="path338"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#061884" />
|
||||
<path
|
||||
class="cls-4"
|
||||
d="m 74.11,84.58 v 46.26 a 2.82,2.82 0 0 1 -2.82,2.82 h -21 a 2.83,2.83 0 0 1 -2.82,-2.82 V 84.58 a 2.84,2.84 0 0 1 2.82,-2.83 h 5.92 a 1.45,1.45 0 0 0 1.45,1.46 h 6.3 a 1.46,1.46 0 0 0 1.46,-1.46 h 5.91 a 2.83,2.83 0 0 1 2.78,2.83 z"
|
||||
id="path340"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#ffffff;fill-rule:evenodd" />
|
||||
<rect
|
||||
class="cls-5"
|
||||
x="50.32"
|
||||
y="125.88"
|
||||
width="19.91"
|
||||
height="4.7399998"
|
||||
id="rect342"
|
||||
style="fill:#dde9fd" />
|
||||
<rect
|
||||
class="cls-5"
|
||||
x="50.32"
|
||||
y="85.959999"
|
||||
width="19.91"
|
||||
height="1.9"
|
||||
rx="0.94999999"
|
||||
id="rect344"
|
||||
style="fill:#dde9fd" />
|
||||
<rect
|
||||
class="cls-5"
|
||||
x="50.32"
|
||||
y="114.4"
|
||||
width="10.43"
|
||||
height="1.9"
|
||||
rx="0.94999999"
|
||||
id="rect346"
|
||||
style="fill:#dde9fd" />
|
||||
<rect
|
||||
class="cls-5"
|
||||
x="50.32"
|
||||
y="117.25"
|
||||
width="10.43"
|
||||
height="1.9"
|
||||
rx="0.94999999"
|
||||
id="rect348"
|
||||
style="fill:#dde9fd" />
|
||||
<path
|
||||
class="cls-1"
|
||||
d="m 291.5,135.38 a 5.12,5.12 0 0 0 5.11,-5.11 v -0.38 a 0.38,0.38 0 0 0 -0.37,-0.37 h -103.9 a 0.37,0.37 0 0 0 -0.36,0.37 v 0.38 a 5.11,5.11 0 0 0 5.1,5.11 z"
|
||||
id="path350"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#f3f8fe" />
|
||||
<path
|
||||
class="cls-3"
|
||||
d="m 296.24,129.89 h -103.9 v 0.38 0 a 4.74,4.74 0 0 0 4.74,4.74 h 94.42 a 4.74,4.74 0 0 0 4.74,-4.74 v -0.38 m 0,-0.73 a 0.73,0.73 0 0 1 0.73,0.73 v 0.38 a 5.47,5.47 0 0 1 -5.47,5.47 h -94.42 a 5.47,5.47 0 0 1 -5.47,-5.47 v -0.38 a 0.73,0.73 0 0 1 0.73,-0.73 z"
|
||||
id="path352"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#061884" />
|
||||
<path
|
||||
class="cls-3"
|
||||
d="m 235.51,129.16 a 2.93,2.93 0 0 0 2.93,2.93 h 11.71 a 2.93,2.93 0 0 0 2.92,-2.93 z"
|
||||
id="path354"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#061884" />
|
||||
<path
|
||||
class="cls-1"
|
||||
d="M 287.83,129.52 V 71.36 a 2.56,2.56 0 0 0 -2.56,-2.56 h -81.95 a 2.56,2.56 0 0 0 -2.56,2.56 v 58.16 z"
|
||||
id="path356"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#f3f8fe" />
|
||||
<path
|
||||
class="cls-2"
|
||||
d="M 287.83,129.52 V 71.36 a 2.56,2.56 0 0 0 -2.56,-2.56 h -81.95 a 2.56,2.56 0 0 0 -2.56,2.56 v 58.16"
|
||||
id="path358"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:none;stroke:#061884;stroke-miterlimit:10" />
|
||||
<path
|
||||
class="cls-6"
|
||||
d="m 284.17,128.79 v -56 a 0.36,0.36 0 0 0 -0.37,-0.36 h -79 a 0.36,0.36 0 0 0 -0.36,0.36 v 56 z"
|
||||
id="path360"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#ffffff" />
|
||||
<path
|
||||
class="cls-1"
|
||||
d="m 283.8,72.82 h -79 v 55.61 h 79 V 72.82 m 0.74,0 v 56.34 H 204.05 V 72.82 a 0.73,0.73 0 0 1 0.73,-0.73 h 79 a 0.74,0.74 0 0 1 0.76,0.73 z"
|
||||
id="path362"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#f3f8fe" />
|
||||
<path
|
||||
class="cls-2"
|
||||
d="M 204.11,129.57 V 73.86 a 1.64,1.64 0 0 1 1.64,-1.64 H 283 a 1.64,1.64 0 0 1 1.64,1.64 v 55.71"
|
||||
id="path364"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:none;stroke:#061884;stroke-miterlimit:10" />
|
||||
<path
|
||||
class="cls-2"
|
||||
d="m 291.5,135.38 a 5.12,5.12 0 0 0 5.11,-5.11 v -0.38 a 0.38,0.38 0 0 0 -0.37,-0.37 h -103.9 a 0.37,0.37 0 0 0 -0.36,0.37 v 0.38 a 5.11,5.11 0 0 0 5.1,5.11 z"
|
||||
id="path366"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:none;stroke:#061884;stroke-miterlimit:10" />
|
||||
<path
|
||||
class="cls-3"
|
||||
d="m 131.73,12.19 c -3.87,0 -8.7,5.75 -14.75,17.5 -4.63,9 -8.26,18.32 -8.3,18.41 a 0.86443623,0.86443623 0 0 0 1.61,0.63 c 5.46,-14.09 16.24,-36 21.88,-34.77 5.64,1.23 5.35,21.35 3.87,33.76 a 0.86142324,0.86142324 0 1 0 1.71,0.21 c 0.41,-3.45 3.75,-33.71 -5.22,-35.65 a 3.57,3.57 0 0 0 -0.8,-0.09 z"
|
||||
id="path368"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#061884" />
|
||||
<path
|
||||
class="cls-3"
|
||||
d="m 143.87,17.34 a 3.56,3.56 0 0 0 -0.8,0.08 c -9,1.94 -5.63,32.2 -5.22,35.65 a 0.86142324,0.86142324 0 1 0 1.71,-0.21 c -1.48,-12.41 -1.74,-32.55 3.87,-33.76 5.61,-1.21 16.42,20.68 21.88,34.77 a 0.86443623,0.86443623 0 1 0 1.61,-0.63 c 0,-0.09 -3.67,-9.42 -8.3,-18.41 -6.05,-11.75 -10.88,-17.49 -14.75,-17.49 z"
|
||||
id="path370"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#061884" />
|
||||
<path
|
||||
class="cls-1"
|
||||
d="m 178,135.58 a 2.25,2.25 0 0 0 2.24,-2.24 v -84 A 2.3,2.3 0 0 0 178,47 H 94.81 a 2.29,2.29 0 0 0 -2.24,2.29 v 84 a 2.24,2.24 0 0 0 2.24,2.24 h 6 l 0.69,-0.38 c 3.56,-2 3.94,-2.2 8.66,-2.2 h 51.59 c 4.72,0 5.09,0.21 8.66,2.2 l 0.69,0.38 z"
|
||||
id="path372"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#f3f8fe" />
|
||||
<path
|
||||
class="cls-3"
|
||||
d="M 178,47.45 H 94.81 A 1.85,1.85 0 0 0 93,49.31 v 84 0 a 1.81,1.81 0 0 0 1.81,1.81 h 5.93 c 4.15,-2.3 4.37,-2.58 9.46,-2.58 h 51.59 c 5.08,0 5.31,0.28 9.46,2.58 H 178 a 1.81,1.81 0 0 0 1.81,-1.81 v -84 A 1.85,1.85 0 0 0 178,47.45 m 2.67,1.86 v 84 A 2.68,2.68 0 0 1 178,136 h -7 l -0.19,-0.11 -0.59,-0.33 c -3.55,-2 -3.84,-2.14 -8.45,-2.14 H 110.2 c -4.61,0 -4.9,0.16 -8.45,2.14 l -0.59,0.33 -0.2,0.11 h -6.15 a 2.66,2.66 0 0 1 -2.67,-2.67 v -84 a 2.69,2.69 0 0 1 2.67,-2.72 H 178 a 2.7,2.7 0 0 1 2.71,2.7 z"
|
||||
id="path374"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#061884" />
|
||||
<rect
|
||||
class="cls-3"
|
||||
x="111.92"
|
||||
y="126.55"
|
||||
width="3.4400001"
|
||||
height="0.86000001"
|
||||
id="rect376"
|
||||
style="fill:#061884" />
|
||||
<circle
|
||||
class="cls-3"
|
||||
cx="102.46"
|
||||
cy="50.029999"
|
||||
r="0.86000001"
|
||||
id="circle378"
|
||||
style="fill:#061884" />
|
||||
<circle
|
||||
class="cls-3"
|
||||
cx="124.81"
|
||||
cy="50.029999"
|
||||
r="0.86000001"
|
||||
id="circle380"
|
||||
style="fill:#061884" />
|
||||
<circle
|
||||
class="cls-3"
|
||||
cx="147.17"
|
||||
cy="50.029999"
|
||||
r="0.86000001"
|
||||
id="circle382"
|
||||
style="fill:#061884" />
|
||||
<circle
|
||||
class="cls-3"
|
||||
cx="169.53"
|
||||
cy="50.029999"
|
||||
r="0.86000001"
|
||||
id="circle384"
|
||||
style="fill:#061884" />
|
||||
<circle
|
||||
class="cls-3"
|
||||
cx="102.46"
|
||||
cy="126.55"
|
||||
r="0.86000001"
|
||||
id="circle386"
|
||||
style="fill:#061884" />
|
||||
<circle
|
||||
class="cls-3"
|
||||
cx="169.53"
|
||||
cy="126.55"
|
||||
r="0.86000001"
|
||||
id="circle388"
|
||||
style="fill:#061884" />
|
||||
<path
|
||||
class="cls-6"
|
||||
d="m 168.52,121.82 a 6.6,6.6 0 0 0 6.6,-6.59 V 60.42 A 3.1,3.1 0 0 0 172,57.34 h -71.19 a 3.08,3.08 0 0 0 -3.08,3.08 v 54.81 a 6.59,6.59 0 0 0 6.6,6.59 z"
|
||||
id="path390"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#ffffff" />
|
||||
<path
|
||||
class="cls-1"
|
||||
d="m 172,57.77 h -71.19 a 2.65,2.65 0 0 0 -2.65,2.65 v 54.81 a 6.16,6.16 0 0 0 6.17,6.16 h 64.19 a 6.18,6.18 0 0 0 6.17,-6.16 V 60.42 A 2.66,2.66 0 0 0 172,57.77 m 3.52,2.65 v 54.81 0 a 7,7 0 0 1 -7,7 h -64.19 a 7,7 0 0 1 -7,-7 V 60.42 a 3.51,3.51 0 0 1 3.51,-3.51 H 172 a 3.52,3.52 0 0 1 3.55,3.51 z"
|
||||
id="path392"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#f3f8fe" />
|
||||
<path
|
||||
class="cls-3"
|
||||
d="m 172,56.91 h -71.19 a 3.51,3.51 0 0 0 -3.51,3.51 v 54.81 a 7,7 0 0 0 7,7 h 64.19 a 7,7 0 0 0 7,-7 V 60.42 A 3.52,3.52 0 0 0 172,56.91 m 4.38,3.51 v 54.81 a 7.9,7.9 0 0 1 -7.89,7.88 h -64.16 a 7.88,7.88 0 0 1 -7.89,-7.88 V 60.42 a 4.37,4.37 0 0 1 4.37,-4.37 H 172 a 4.38,4.38 0 0 1 4.41,4.37 z"
|
||||
id="path394"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#061884" />
|
||||
<path
|
||||
class="cls-7"
|
||||
d="m 146.31,118 h -20.64 v 10.32 h 20.64 V 118 m 0,-0.85 v 0 a 0.83,0.83 0 0 1 0.84,0.83 v 10.32 0 a 0.83,0.83 0 0 1 -0.84,0.83 h -20.66 a 0.84,0.84 0 0 1 -0.84,-0.83 v -10.37 a 0.84,0.84 0 0 1 0.84,-0.83 z"
|
||||
id="path396"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#c5dbfb" />
|
||||
<path
|
||||
class="cls-6"
|
||||
d="m 142.1,65.93 a 1.35,1.35 0 0 0 1.29,-1 L 145,58.77 v -2.29 h -18 v 2.29 l 1.6,6.23 a 1.34,1.34 0 0 0 1.28,1 z"
|
||||
id="path398"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#ffffff" />
|
||||
<path
|
||||
class="cls-3"
|
||||
d="m 144.59,56.91 h -17.2 v 1.8 l 1.61,6.14 a 0.9,0.9 0 0 0 0.87,0.65 h 12.23 a 0.89,0.89 0 0 0 0.87,-0.65 l 1.62,-6.14 v -1.8 m 0.86,-0.86 v 2.78 0.1 l -1.62,6.16 a 1.77,1.77 0 0 1 -1.7,1.27 h -12.25 a 1.78,1.78 0 0 1 -1.7,-1.29 l -1.62,-6.14 v -0.1 -2.78 z"
|
||||
id="path400"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#061884" />
|
||||
<path
|
||||
class="cls-6"
|
||||
d="m 140.19,67.65 h 0.15 a 1.34,1.34 0 0 0 1.17,-1.48 l -0.84,-7.11 h -9.36 l -0.84,7.11 v 0.15 a 1.32,1.32 0 0 0 1.33,1.33 z"
|
||||
id="path402"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#ffffff" />
|
||||
<path
|
||||
class="cls-3"
|
||||
d="m 140.29,59.49 h -8.6 l -0.79,6.73 v 0.1 a 0.9,0.9 0 0 0 0.9,0.9 h 8.49 a 0.9,0.9 0 0 0 0.79,-1 l -0.79,-6.73 m 0.77,-0.86 0.09,0.76 0.79,6.74 a 1.21,1.21 0 0 1 0,0.19 1.76,1.76 0 0 1 -1.76,1.76 h -8.58 a 1.76,1.76 0 0 1 -1.55,-1.95 l 0.79,-6.73 0.09,-0.76 z"
|
||||
id="path404"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#061884" />
|
||||
<path
|
||||
class="cls-6"
|
||||
d="m 147,59.06 a 2.59,2.59 0 0 0 0,-5.16 h -22 a 2.59,2.59 0 0 0 0,5.16 z"
|
||||
id="path406"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#ffffff" />
|
||||
<path
|
||||
class="cls-3"
|
||||
d="m 147,54.33 h -22 a 2,2 0 0 0 -1.92,2.13 2.07,2.07 0 0 0 1.92,2.17 h 22 a 2.07,2.07 0 0 0 1.92,-2.17 2,2 0 0 0 -1.92,-2.13 m 2.78,2.13 a 2.92,2.92 0 0 1 -2.78,3 h -22 a 3,3 0 0 1 0,-6 h 22 a 2.9,2.9 0 0 1 2.75,3 z"
|
||||
id="path408"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#061884" />
|
||||
<rect
|
||||
class="cls-3"
|
||||
x="135.56"
|
||||
y="54.330002"
|
||||
width="0.86000001"
|
||||
height="4.3699999"
|
||||
id="rect410"
|
||||
style="fill:#061884" />
|
||||
<line
|
||||
class="cls-2"
|
||||
x1="29.84"
|
||||
y1="135.92999"
|
||||
x2="302.59"
|
||||
y2="135.92999"
|
||||
id="line412"
|
||||
style="fill:none;stroke:#061884;stroke-miterlimit:10" />
|
||||
<polygon
|
||||
class="cls-5"
|
||||
points="112.35,101.51 124.06,121.81 147.5,121.81 159.22,101.51 147.5,81.22 124.06,81.22 "
|
||||
id="polygon414"
|
||||
style="fill:#dde9fd" />
|
||||
<polygon
|
||||
class="cls-5"
|
||||
points="224.57,103.51 234.68,121.01 254.89,121.01 264.99,103.51 254.89,86.01 234.68,86.01 "
|
||||
id="polygon416"
|
||||
style="fill:#dde9fd" />
|
||||
<path
|
||||
class="cls-6"
|
||||
d="m 125.65,117.53 a 0.41,0.41 0 0 0 -0.41,0.4 v 10.37 0 a 0.41,0.41 0 0 0 0.41,0.4 h 20.68 a 0.4,0.4 0 0 0 0.41,-0.4 v -10.37 0 a 0.4,0.4 0 0 0 -0.41,-0.4 z"
|
||||
id="path418"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#ffffff" />
|
||||
<path
|
||||
class="cls-3"
|
||||
d="m 146.33,117.1 h -20.68 a 0.84,0.84 0 0 0 -0.84,0.83 v 10.37 a 0.84,0.84 0 0 0 0.84,0.83 h 20.68 a 0.83,0.83 0 0 0 0.84,-0.83 v -10.37 0 a 0.83,0.83 0 0 0 -0.84,-0.83 m 1.7,0.83 v 10.37 a 1.7,1.7 0 0 1 -1.7,1.69 h -20.68 a 1.7,1.7 0 0 1 -1.7,-1.69 v -10.37 a 1.7,1.7 0 0 1 1.7,-1.69 h 20.68 a 1.7,1.7 0 0 1 1.67,1.69 z"
|
||||
id="path420"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#061884" />
|
||||
<polygon
|
||||
class="cls-5"
|
||||
points="50.22,101.67 55.22,110.33 65.22,110.33 70.22,101.67 65.22,93.01 55.22,93.01 "
|
||||
id="polygon422"
|
||||
style="fill:#dde9fd" />
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 14 KiB |
|
@ -1,13 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="186px" height="57px" viewBox="0 0 186 57" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<!-- Generator: Sketch 52.6 (67491) - http://www.bohemiancoding.com/sketch -->
|
||||
<title>Cloud_connection-icon</title>
|
||||
<desc>Created with Sketch.</desc>
|
||||
<g id="Cloud_connection-icon" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<path d="M38.6261428,52.7109865 L7.48755878,52.7109865 C6.85100215,52.7676651 6.21444551,52.994379 5.75149524,53.3911284 L5.40428251,53.7311992 C5.05706981,54.2979841 4.36264439,54.4113411 3.66821896,54.4113411 L0.543304569,54.4113411 C0.369698215,54.4113411 0.196091859,54.2413055 0.196091859,54.0712703 L0.196091859,0.623463283 C0.196091859,0.453427843 0.369698215,0.283392401 0.543304569,0.283392401 L48.3429212,0.283392401 C48.5165273,0.283392401 48.6901338,0.453427843 48.6901338,0.623463283 L48.6901338,26.0155943 C48.4613867,26.0052354 48.2313048,26 48,26 C46.4042274,26 44.8666558,26.2491876 43.4240742,26.7107738 L43.4240742,6.23463283 C43.4240742,5.61116956 42.9032553,5.15774169 42.3245675,5.15774169 L6.50378945,5.15774169 C5.86723281,5.15774169 5.40428251,5.66784803 5.40428251,6.23463283 L5.40428251,41.3186122 C5.40428251,42.9056095 6.73526457,44.2092147 8.35559054,44.2092147 L33.3440862,44.2092147 C34.087979,47.6221969 35.9937272,50.6011835 38.6261428,52.7109865 Z" id="Combined-Shape" fill="#08073F" fill-rule="nonzero"></path>
|
||||
<path d="M158.961954,52.7109865 L131.487559,52.7109865 C130.851002,52.7676651 130.214446,52.994379 129.751495,53.3911284 L129.404283,53.7311992 C129.05707,54.2979841 128.362644,54.4113411 127.668219,54.4113411 L124.543305,54.4113411 C124.369698,54.4113411 124.196092,54.2413055 124.196092,54.0712703 L124.196092,0.623463283 C124.196092,0.453427843 124.369698,0.283392401 124.543305,0.283392401 L172.342921,0.283392401 C172.516527,0.283392401 172.690134,0.453427843 172.690134,0.623463283 L172.690134,27.0854877 C172.13468,27.0289729 171.570805,27 171,27 C169.770934,27 168.574002,27.1343278 167.424074,27.3886981 L167.424074,6.23463283 C167.424074,5.61116956 166.903255,5.15774169 166.324567,5.15774169 L130.503789,5.15774169 C129.867233,5.15774169 129.404283,5.66784803 129.404283,6.23463283 L129.404283,41.3186122 C129.404283,42.9056095 130.735265,44.2092147 132.355591,44.2092147 L155.096113,44.2092147 C155.462794,47.4493334 156.859805,50.3873861 158.961954,52.7109865 Z" id="Combined-Shape" fill="#08073F" fill-rule="nonzero"></path>
|
||||
<path d="M171,56 C163.26057,56 157,49.9481159 157,42.5 C157,35.0518841 163.26057,29 171,29 C178.73943,29 185,35.0518841 185,42.5 C185,49.9481159 178.73943,56 171,56 Z M177.416667,40.7546296 C177.233333,39.1569444 175.858333,37.9351852 174.208333,37.9351852 C173.75,37.9351852 173.383333,38.0291667 173.016667,38.2171296 C172.191667,36.9013889 170.725,36.0555556 169.166667,36.0555556 C166.6,36.0555556 164.583333,38.1231482 164.583333,40.7546296 C164.583333,40.7546296 164.583333,40.7546296 164.583333,40.8486111 C163.025,41.0365741 161.833333,42.4462963 161.833333,44.0439815 C161.833333,45.8296296 163.3,47.3333333 165.041667,47.3333333 C166.416667,47.3333333 175.308333,47.3333333 176.958333,47.3333333 C178.7,47.3333333 180.166667,45.8296296 180.166667,44.0439815 C180.166667,42.3523148 178.975,41.0365741 177.416667,40.7546296 Z" id="Combined-Shape" fill="#3282FF" fill-rule="nonzero"></path>
|
||||
<path d="M48,54 C40.8202983,54 35,48.1797017 35,41 C35,33.8202983 40.8202983,28 48,28 C55.1797017,28 61,33.8202983 61,41 C61,48.1797017 55.1797017,54 48,54 Z M46.862511,41.4631428 L43.8629783,38.6111022 L41.1067187,41.5099007 L47.0308248,47.1427085 L55.8527121,37.698579 L52.9296286,34.9680877 L46.862511,41.4631428 Z" id="Combined-Shape" fill="#3282FF" fill-rule="nonzero"></path>
|
||||
<path d="M54.5,25 C53.6715729,25 53,24.3284271 53,23.5 C53,22.6715729 53.6715729,22 54.5,22 C55.3284271,22 56,22.6715729 56,23.5 C56,24.3284271 55.3284271,25 54.5,25 Z M78.5,25 C77.6715729,25 77,24.3284271 77,23.5 C77,22.6715729 77.6715729,22 78.5,22 C79.3284271,22 80,22.6715729 80,23.5 C80,24.3284271 79.3284271,25 78.5,25 Z M102.5,25 C101.671573,25 101,24.3284271 101,23.5 C101,22.6715729 101.671573,22 102.5,22 C103.328427,22 104,22.6715729 104,23.5 C104,24.3284271 103.328427,25 102.5,25 Z M62.5,25 C61.6715729,25 61,24.3284271 61,23.5 C61,22.6715729 61.6715729,22 62.5,22 C63.3284271,22 64,22.6715729 64,23.5 C64,24.3284271 63.3284271,25 62.5,25 Z M86.5,25 C85.6715729,25 85,24.3284271 85,23.5 C85,22.6715729 85.6715729,22 86.5,22 C87.3284271,22 88,22.6715729 88,23.5 C88,24.3284271 87.3284271,25 86.5,25 Z M110.5,25 C109.671573,25 109,24.3284271 109,23.5 C109,22.6715729 109.671573,22 110.5,22 C111.328427,22 112,22.6715729 112,23.5 C112,24.3284271 111.328427,25 110.5,25 Z M70.5,25 C69.6715729,25 69,24.3284271 69,23.5 C69,22.6715729 69.6715729,22 70.5,22 C71.3284271,22 72,22.6715729 72,23.5 C72,24.3284271 71.3284271,25 70.5,25 Z M94.5,25 C93.6715729,25 93,24.3284271 93,23.5 C93,22.6715729 93.6715729,22 94.5,22 C95.3284271,22 96,22.6715729 96,23.5 C96,24.3284271 95.3284271,25 94.5,25 Z M118.5,25 C117.671573,25 117,24.3284271 117,23.5 C117,22.6715729 117.671573,22 118.5,22 C119.328427,22 120,22.6715729 120,23.5 C120,24.3284271 119.328427,25 118.5,25 Z" id="Combined-Shape" fill="#3282FF" fill-rule="nonzero"></path>
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 5.3 KiB |
|
@ -15,27 +15,26 @@ I18N_CATALOG = i18nCatalog("cura")
|
|||
|
||||
class CloudFlowMessage(Message):
|
||||
|
||||
def __init__(self, address: str) -> None:
|
||||
|
||||
def __init__(self, printer_name: str) -> None:
|
||||
image_path = os.path.join(
|
||||
CuraApplication.getInstance().getPluginRegistry().getPluginPath("UM3NetworkPrinting") or "",
|
||||
"resources", "svg", "cloud-flow-start.svg"
|
||||
"resources", "svg", "CloudPlatform.svg"
|
||||
)
|
||||
|
||||
super().__init__(
|
||||
text=I18N_CATALOG.i18nc("@info:status",
|
||||
"Send and monitor print jobs from anywhere using your Ultimaker account."),
|
||||
lifetime=0,
|
||||
dismissable=True,
|
||||
option_state=False,
|
||||
image_source=QUrl.fromLocalFile(image_path),
|
||||
image_caption=I18N_CATALOG.i18nc("@info:status Ultimaker Cloud should not be translated.",
|
||||
"Connect to Ultimaker Digital Factory"),
|
||||
text = I18N_CATALOG.i18nc("@info:status",
|
||||
f"Your printer <b>{printer_name}</b> could be connected via cloud.\n Manage your print queue and monitor your prints from anywhere connecting your printer to Digital Factory"),
|
||||
title = I18N_CATALOG.i18nc("@info:title", "Are you ready for cloud printing?"),
|
||||
image_source = QUrl.fromLocalFile(image_path)
|
||||
)
|
||||
self._address = address
|
||||
self.addAction("", I18N_CATALOG.i18nc("@action", "Get started"), "", "")
|
||||
self._printer_name = printer_name
|
||||
self.addAction("get_started", I18N_CATALOG.i18nc("@action", "Get started"), "", "")
|
||||
self.addAction("learn_more", I18N_CATALOG.i18nc("@action", "Learn more"), "", "", button_style = Message.ActionButtonStyle.LINK, button_align = Message.ActionButtonAlignment.ALIGN_LEFT)
|
||||
|
||||
self.actionTriggered.connect(self._onCloudFlowStarted)
|
||||
|
||||
def _onCloudFlowStarted(self, messageId: str, actionId: str) -> None:
|
||||
QDesktopServices.openUrl(QUrl("http://{}/cloud_connect".format(self._address)))
|
||||
def _onCloudFlowStarted(self, message_id: str, action_id: str) -> None:
|
||||
if action_id == "get_started":
|
||||
QDesktopServices.openUrl(QUrl("https://digitalfactory.ultimaker.com/app/printers?add_printer=true&utm_source=cura&utm_medium=software&utm_campaign=message-networkprinter-added"))
|
||||
self.hide()
|
||||
else:
|
||||
QDesktopServices.openUrl(QUrl("https://support.ultimaker.com/hc/en-us/articles/360012019239?utm_source=cura&utm_medium=software&utm_campaign=add-cloud-printer"))
|
||||
|
|
|
@ -52,7 +52,6 @@ class LocalClusterOutputDeviceManager:
|
|||
|
||||
def start(self) -> None:
|
||||
"""Start the network discovery."""
|
||||
|
||||
self._zero_conf_client.start()
|
||||
for address in self._getStoredManualAddresses():
|
||||
self.addManualDevice(address)
|
||||
|
@ -292,4 +291,4 @@ class LocalClusterOutputDeviceManager:
|
|||
if not CuraApplication.getInstance().getCuraAPI().account.isLoggedIn:
|
||||
# Do not show the message if the user is not signed in.
|
||||
return
|
||||
CloudFlowMessage(device.ipAddress).show()
|
||||
CloudFlowMessage(device.name).show()
|
||||
|
|
49
resources/definitions/3di_base.def.json
Normal file
49
resources/definitions/3di_base.def.json
Normal file
|
@ -0,0 +1,49 @@
|
|||
{
|
||||
"version": 2,
|
||||
"name": "3DI Base Printer",
|
||||
"inherits": "fdmprinter",
|
||||
"metadata": {
|
||||
"visible": false,
|
||||
"author": "Vaibhav Jain",
|
||||
"manufacturer": "3Deometry Innovations",
|
||||
"file_formats": "text/x-gcode",
|
||||
"machine_extruder_trains":
|
||||
{
|
||||
"0": "3di_base_extruder_0"
|
||||
}
|
||||
},
|
||||
|
||||
"overrides": {
|
||||
"machine_name":{
|
||||
"default_value": "3DI Base Printer"
|
||||
},
|
||||
"machine_heated_bed": {
|
||||
"default_value": true
|
||||
},
|
||||
"machine_width": {
|
||||
"default_value": 220
|
||||
},
|
||||
"machine_height": {
|
||||
"default_value": 220
|
||||
},
|
||||
"machine_depth": {
|
||||
"default_value": 220
|
||||
},
|
||||
"machine_center_is_zero": {
|
||||
"default_value": true
|
||||
},
|
||||
"machine_gcode_flavor": {
|
||||
"default_value": "RepRap (Marlin/Sprinter)"
|
||||
},
|
||||
"machine_start_gcode": {
|
||||
"default_value": "G21 ;metric values\nG90 ;absolute positioning\nM82 ;set extruder to absolute mode\nM107 ;start with the fan off\nG28 ;Home all axes (max endstops)\nG1 Z15.0 F9000 ;move the platform down 15mm\nG92 E0 ;zero the extruded length\nG1 F200 E3 ;extrude 3mm of feed stock\nG92 E0 ;zero the extruded length again\nG1 F9000\n;Put printing message on LCD screen\nM117 Printing..."
|
||||
},
|
||||
"machine_end_gcode": {
|
||||
"default_value": "M104 S0 ;extruder heater off\nM140 S0 ;heated bed heater off (if you have it)\nG91 ;relative positioning\nG1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\nG28 ;Home all axes (max endstops)\nM84 ;steppers off\nG90 ;absolute positioning"
|
||||
},
|
||||
"machine_shape": {
|
||||
"default_value": "elliptic"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
26
resources/definitions/3di_d300.def.json
Normal file
26
resources/definitions/3di_d300.def.json
Normal file
|
@ -0,0 +1,26 @@
|
|||
{
|
||||
"version": 2,
|
||||
"name": "3DI D300",
|
||||
"inherits": "3di_base",
|
||||
"metadata": {
|
||||
"visible": true,
|
||||
"platform": "3di_d300_platform.STL",
|
||||
"platform_offset": [-200, -5, 173.205]
|
||||
},
|
||||
|
||||
"overrides": {
|
||||
"machine_name": {
|
||||
"default_value": "3DI D300"
|
||||
},
|
||||
"machine_width": {
|
||||
"default_value": 300
|
||||
},
|
||||
"machine_height": {
|
||||
"default_value": 300
|
||||
},
|
||||
"machine_depth": {
|
||||
"default_value": 300
|
||||
}
|
||||
}
|
||||
}
|
||||
|
58
resources/definitions/cremaker_common.def.json
Normal file
58
resources/definitions/cremaker_common.def.json
Normal file
|
@ -0,0 +1,58 @@
|
|||
{
|
||||
"version": 2,
|
||||
"name": "cremaker common",
|
||||
"inherits": "fdmprinter",
|
||||
"metadata": {
|
||||
"visible": false,
|
||||
"author": "Joyplace",
|
||||
"manufacturer": "JOYPLACE CO., LTD.",
|
||||
"file_formats": "text/x-gcode",
|
||||
"icon": "icon_ultimaker2",
|
||||
"has_materials": true,
|
||||
"machine_extruder_trains": {
|
||||
"0": "cremaker_extruder_0"
|
||||
}
|
||||
},
|
||||
|
||||
"overrides": {
|
||||
"machine_heated_bed": { "default_value": true },
|
||||
"material_diameter": { "default_value": 1.75 },
|
||||
"machine_nozzle_size": { "default_value": 0.4 },
|
||||
"layer_height": { "value": 0.2 },
|
||||
"layer_height_0": { "value": 0.3 },
|
||||
"optimize_wall_printing_order": { "value": true },
|
||||
"xy_offset": { "value": 0.1 },
|
||||
"xy_offset_layer_0": { "value": -0.1 },
|
||||
"hole_xy_offset": { "value": 0.15 },
|
||||
"material_print_temperature": { "value": 200 },
|
||||
"speed_travel": { "value": 100 },
|
||||
"speed_layer_0": { "value": 25 },
|
||||
"acceleration_enabled": { "value": true },
|
||||
"acceleration_print": { "value": 1250 },
|
||||
"acceleration_infill": { "value": 1250 },
|
||||
"acceleration_wall": { "value": 800 },
|
||||
"acceleration_wall_0": { "value": 800 },
|
||||
"acceleration_wall_x": { "value": 800 },
|
||||
"acceleration_travel": { "value": 1250 },
|
||||
"acceleration_layer_0": { "value": 1000 },
|
||||
"acceleration_print_layer_0": { "value": 1000 },
|
||||
"acceleration_travel_layer_0": { "value": 1000 },
|
||||
"retraction_amount": { "value": 1.2 },
|
||||
"retraction_speed": { "value": 40 },
|
||||
"retraction_combing": { "value": "'infill'" },
|
||||
"retraction_hop_enabled": { "value": true },
|
||||
"retraction_hop_only_when_collides": { "value": true },
|
||||
"retraction_hop": { "value": 0.3 },
|
||||
"adhesion_type": { "value": "'skirt'" },
|
||||
"relative_extrusion": { "value": true },
|
||||
"gantry_height": { "value": 28 },
|
||||
"machine_max_feedrate_z": { "value": 12 },
|
||||
"machine_max_feedrate_e": { "value": 120 },
|
||||
"machine_max_acceleration_z": { "value": 10 },
|
||||
"machine_acceleration": { "value": 1250 },
|
||||
"machine_max_jerk_xy": { "value": 10 },
|
||||
"machine_max_jerk_z": { "value": 0.3 },
|
||||
"machine_max_jerk_e": { "value": 5.0 },
|
||||
"machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" }
|
||||
}
|
||||
}
|
40
resources/definitions/cremaker_m_v1.def.json
Normal file
40
resources/definitions/cremaker_m_v1.def.json
Normal file
|
@ -0,0 +1,40 @@
|
|||
{
|
||||
"version": 2,
|
||||
"name": "Cremaker M V1",
|
||||
"inherits": "cremaker_common",
|
||||
"metadata": {
|
||||
"visible": true,
|
||||
"platform": "cremaker_platform_200.obj"
|
||||
},
|
||||
|
||||
"overrides": {
|
||||
"machine_name": { "default_value": "Cremaker M V1" },
|
||||
"machine_width": { "default_value": 200 },
|
||||
"machine_depth": { "default_value": 200 },
|
||||
"machine_height": { "default_value": 260 },
|
||||
"initial_layer_line_width_factor": { "default_value": 110.0 },
|
||||
"machine_head_with_fans_polygon": {
|
||||
"default_value": [
|
||||
[ -35, 48 ],
|
||||
[ 54, 48 ],
|
||||
[ 54, -67 ],
|
||||
[ -35, -67 ]
|
||||
]
|
||||
},
|
||||
"machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" },
|
||||
"machine_start_gcode": {
|
||||
"default_value": "G28\nG1 Z5.0 F6000\nG1 X2 Y5 F3000\nG1 Z0.3\nG92 E0\nG1 Y100 E10 F600\nG92 E0"
|
||||
},
|
||||
"machine_end_gcode": {
|
||||
"default_value": "M104 S0\nM140 S0\nG92 E1\nG1 E-1 F300\nG28 X0 Y180\nM84"
|
||||
},
|
||||
"jerk_enabled": { "value": true },
|
||||
"jerk_print": { "value": 8 },
|
||||
"jerk_infill": { "value": 8 },
|
||||
"jerk_wall": { "value": 8 },
|
||||
"jerk_wall_0": { "value": 8 },
|
||||
"jerk_wall_x": { "value": 8 },
|
||||
"jerk_travel": { "value": 10 },
|
||||
"jerk_layer_0": { "value": 8 }
|
||||
}
|
||||
}
|
38
resources/definitions/cremaker_m_v2.def.json
Normal file
38
resources/definitions/cremaker_m_v2.def.json
Normal file
|
@ -0,0 +1,38 @@
|
|||
{
|
||||
"version": 2,
|
||||
"name": "Cremaker M V2",
|
||||
"inherits": "cremaker_common",
|
||||
"metadata": {
|
||||
"visible": true,
|
||||
"platform": "cremaker_platform_220.obj"
|
||||
},
|
||||
|
||||
"overrides": {
|
||||
"machine_name": { "default_value": "Cremaker M V2" },
|
||||
"machine_width": { "default_value": 220 },
|
||||
"machine_depth": { "default_value": 220 },
|
||||
"machine_height": { "default_value": 260 },
|
||||
"initial_layer_line_width_factor": { "default_value": 100.0 },
|
||||
"machine_head_with_fans_polygon": {
|
||||
"default_value": [
|
||||
[ -35, 48 ],
|
||||
[ 54, 48 ],
|
||||
[ 54, -67 ],
|
||||
[ -35, -67 ]
|
||||
]
|
||||
},
|
||||
"machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" },
|
||||
"machine_start_gcode": {
|
||||
"default_value": "G28\nG29\nG1 Z5.0 F6000\nG1 X2 Y5 Z0.3 F3000\nG92 E0\nG1 Y100 E10 F1500\nG0 X2.3 F3000\nG1 Y20 E8.5 F1500\nG92 E0\nG1 F2400 E-2"
|
||||
},
|
||||
"machine_end_gcode": {
|
||||
"default_value": "M104 S0\nM140 S0\nG92 E1\nG1 E-1 F300\nG28 X0 Y200\nM84"
|
||||
},
|
||||
|
||||
"cool_fan_speed": { "value": 50 },
|
||||
"coasting_enable": { "value": true },
|
||||
"coasting_volume": { "value": 0.05 },
|
||||
"coasting_min_volume": { "value": 1.0 },
|
||||
"jerk_enabled": { "value": false }
|
||||
}
|
||||
}
|
32
resources/definitions/cremaker_s_v1.def.json
Normal file
32
resources/definitions/cremaker_s_v1.def.json
Normal file
|
@ -0,0 +1,32 @@
|
|||
{
|
||||
"version": 2,
|
||||
"name": "Cremaker S V1",
|
||||
"inherits": "cremaker_common",
|
||||
"metadata": {
|
||||
"visible": true,
|
||||
"platform": "cremaker_platform_200.obj"
|
||||
},
|
||||
|
||||
"overrides": {
|
||||
"machine_name": { "default_value": "Cremaker S V1" },
|
||||
"machine_width": { "default_value": 200 },
|
||||
"machine_depth": { "default_value": 200 },
|
||||
"machine_height": { "default_value": 160 },
|
||||
"initial_layer_line_width_factor": { "default_value": 110.0 },
|
||||
"machine_head_with_fans_polygon": {
|
||||
"default_value": [
|
||||
[ -39, 45 ],
|
||||
[ 23, 45 ],
|
||||
[ 23, -33 ],
|
||||
[ -39, -33 ]
|
||||
]
|
||||
},
|
||||
"machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" },
|
||||
"machine_start_gcode": {
|
||||
"default_value": "G28\nG1 Z5.0 F6000\nG1 X2 Y5 F3000\nG1 Z0.3\nG92 E0\nG1 Y100 E10 F600\nG92 E0"
|
||||
},
|
||||
"machine_end_gcode": {
|
||||
"default_value": "M104 S0 ; turn off extruder\nM140 S0 ; turn off heatbed\nG92 E1\nG1 E-1 F300\nG28 X0 Y180\nM84"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1881,7 +1881,7 @@
|
|||
"default_value": 2,
|
||||
"minimum_value": "0",
|
||||
"minimum_value_warning": "infill_line_width",
|
||||
"value": "0 if infill_sparse_density == 0 else (infill_line_width * 100) / infill_sparse_density * (2 if infill_pattern == 'grid' else (3 if infill_pattern == 'triangles' or infill_pattern == 'trihexagon' or infill_pattern == 'cubic' or infill_pattern == 'cubicsubdiv' else (2 if infill_pattern == 'tetrahedral' or infill_pattern == 'quarter_cubic' else (1 if infill_pattern == 'cross' or infill_pattern == 'cross_3d' else 1))))",
|
||||
"value": "0 if infill_sparse_density == 0 else (infill_line_width * 100) / infill_sparse_density * (2 if infill_pattern == 'grid' else (3 if infill_pattern == 'triangles' or infill_pattern == 'trihexagon' or infill_pattern == 'cubic' or infill_pattern == 'cubicsubdiv' else (2 if infill_pattern == 'tetrahedral' or infill_pattern == 'quarter_cubic' else (1 if infill_pattern == 'cross' or infill_pattern == 'cross_3d' else (1.6 if infill_pattern == 'lightning' else 1)))))",
|
||||
"limit_to_extruder": "infill_extruder_nr",
|
||||
"settable_per_mesh": true
|
||||
}
|
||||
|
@ -1906,7 +1906,8 @@
|
|||
"zigzag": "Zig Zag",
|
||||
"cross": "Cross",
|
||||
"cross_3d": "Cross 3D",
|
||||
"gyroid": "Gyroid"
|
||||
"gyroid": "Gyroid",
|
||||
"lightning": "Lightning"
|
||||
},
|
||||
"default_value": "grid",
|
||||
"enabled": "infill_line_distance > 0",
|
||||
|
@ -1932,7 +1933,7 @@
|
|||
"type": "bool",
|
||||
"default_value": true,
|
||||
"value": "(infill_pattern == 'cross' or infill_pattern == 'cross_3d' or infill_multiplier % 2 == 0) and infill_wall_line_count > 0",
|
||||
"enabled": "infill_pattern == 'cross' or infill_pattern == 'cross_3d' or infill_pattern == 'concentric' or infill_multiplier % 2 == 0 or infill_wall_line_count > 1",
|
||||
"enabled": "infill_pattern != 'lightning' and infill_pattern == 'cross' or infill_pattern == 'cross_3d' or infill_pattern == 'concentric' or infill_multiplier % 2 == 0 or infill_wall_line_count > 1",
|
||||
"limit_to_extruder": "infill_extruder_nr",
|
||||
"settable_per_mesh": true
|
||||
},
|
||||
|
@ -1942,7 +1943,7 @@
|
|||
"description": "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the traditional default angles (45 and 135 degrees for the lines and zig zag patterns and 45 degrees for all other patterns).",
|
||||
"type": "[int]",
|
||||
"default_value": "[ ]",
|
||||
"enabled": "infill_pattern != 'concentric' and infill_sparse_density > 0",
|
||||
"enabled": "infill_pattern != 'lightning' and infill_pattern != 'concentric' and infill_sparse_density > 0",
|
||||
"limit_to_extruder": "infill_extruder_nr",
|
||||
"settable_per_mesh": true
|
||||
},
|
||||
|
@ -1953,7 +1954,7 @@
|
|||
"unit": "mm",
|
||||
"type": "float",
|
||||
"default_value": 0,
|
||||
"enabled": "infill_pattern == 'grid' or infill_pattern == 'lines' or infill_pattern == 'triangles' or infill_pattern == 'cubic' or infill_pattern == 'tetrahedral' or infill_pattern == 'quarter_cubic' or infill_pattern == 'zigzag'",
|
||||
"enabled": "infill_pattern != 'lightning' and infill_pattern == 'grid' or infill_pattern == 'lines' or infill_pattern == 'triangles' or infill_pattern == 'cubic' or infill_pattern == 'tetrahedral' or infill_pattern == 'quarter_cubic' or infill_pattern == 'zigzag'",
|
||||
"limit_to_extruder": "infill_extruder_nr",
|
||||
"settable_per_mesh": true
|
||||
},
|
||||
|
@ -1964,7 +1965,7 @@
|
|||
"unit": "mm",
|
||||
"type": "float",
|
||||
"default_value": 0,
|
||||
"enabled": "infill_pattern == 'grid' or infill_pattern == 'lines' or infill_pattern == 'triangles' or infill_pattern == 'cubic' or infill_pattern == 'tetrahedral' or infill_pattern == 'quarter_cubic' or infill_pattern == 'zigzag'",
|
||||
"enabled": "infill_pattern != 'lightning' and infill_pattern == 'grid' or infill_pattern == 'lines' or infill_pattern == 'triangles' or infill_pattern == 'cubic' or infill_pattern == 'tetrahedral' or infill_pattern == 'quarter_cubic' or infill_pattern == 'zigzag'",
|
||||
"limit_to_extruder": "infill_extruder_nr",
|
||||
"settable_per_mesh": true
|
||||
},
|
||||
|
@ -1975,7 +1976,7 @@
|
|||
"type": "bool",
|
||||
"default_value": false,
|
||||
"warning_value": "True if infill_pattern not in ('grid', 'triangles', 'trihexagon', 'cubic', 'cubicsubdiv', 'tetrahedral', 'quarter_cubic') else None",
|
||||
"enabled": "not ((infill_pattern == 'cross' and connect_infill_polygons) or infill_pattern == 'concentric')",
|
||||
"enabled": "not (infill_pattern == 'lightning' or (infill_pattern == 'cross' and connect_infill_polygons) or infill_pattern == 'concentric')",
|
||||
"limit_to_extruder": "infill_extruder_nr",
|
||||
"settable_per_mesh": true
|
||||
},
|
||||
|
@ -2084,7 +2085,7 @@
|
|||
"minimum_value": "0",
|
||||
"maximum_value_warning": "1 if (infill_pattern == 'cross' or infill_pattern == 'cross_3d' or support_pattern == 'concentric') else 5",
|
||||
"maximum_value": "999999 if infill_line_distance == 0 else (20 - math.log(infill_line_distance) / math.log(2))",
|
||||
"enabled": "infill_sparse_density > 0 and infill_pattern != 'cubicsubdiv'",
|
||||
"enabled": "infill_pattern != 'lightning' and infill_sparse_density > 0 and infill_pattern != 'cubicsubdiv'",
|
||||
"limit_to_extruder": "infill_extruder_nr",
|
||||
"settable_per_mesh": true
|
||||
},
|
||||
|
@ -2097,7 +2098,7 @@
|
|||
"default_value": 1.5,
|
||||
"minimum_value": "0.0001",
|
||||
"minimum_value_warning": "3 * resolveOrValue('layer_height')",
|
||||
"enabled": "infill_sparse_density > 0 and gradual_infill_steps > 0 and infill_pattern != 'cubicsubdiv'",
|
||||
"enabled": "infill_pattern != 'lightning' and infill_sparse_density > 0 and gradual_infill_steps > 0 and infill_pattern != 'cubicsubdiv'",
|
||||
"limit_to_extruder": "infill_extruder_nr",
|
||||
"settable_per_mesh": true
|
||||
},
|
||||
|
@ -2127,7 +2128,7 @@
|
|||
"description": "Print infill structures only where tops of the model should be supported. Enabling this reduces print time and material usage, but leads to ununiform object strength.",
|
||||
"type": "bool",
|
||||
"default_value": false,
|
||||
"enabled": "infill_sparse_density > 0",
|
||||
"enabled": "infill_pattern != 'lightning' and infill_sparse_density > 0",
|
||||
"limit_to_extruder": "infill_extruder_nr",
|
||||
"settable_per_mesh": true
|
||||
},
|
||||
|
@ -2141,7 +2142,7 @@
|
|||
"minimum_value_warning": "2",
|
||||
"maximum_value": "90",
|
||||
"default_value": 40,
|
||||
"enabled": "infill_sparse_density > 0 and infill_support_enabled",
|
||||
"enabled": "infill_pattern != 'lightning' and infill_sparse_density > 0 and infill_support_enabled",
|
||||
"limit_to_extruder": "infill_extruder_nr",
|
||||
"settable_per_mesh": true
|
||||
},
|
||||
|
@ -2175,6 +2176,72 @@
|
|||
"settable_per_mesh": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"lightning_infill_support_angle":
|
||||
{
|
||||
"label": "Lightning Infill Support Angle",
|
||||
"description": "Determines when a lightning infill layer has to support anything above it. Measured in the angle given the thickness of a layer.",
|
||||
"unit": "°",
|
||||
"type": "float",
|
||||
"minimum_value": "0",
|
||||
"maximum_value": "90",
|
||||
"maximum_value_warning": "75",
|
||||
"default_value": 40,
|
||||
"limit_to_extruder": "infill_extruder_nr",
|
||||
"enabled": "infill_pattern == 'lightning'",
|
||||
"settable_per_mesh": false,
|
||||
"settable_per_extruder": true,
|
||||
"children":
|
||||
{
|
||||
"lightning_infill_overhang_angle":
|
||||
{
|
||||
"label": "Lightning Infill Overhang Angle",
|
||||
"description": "Determines when a lightning infill layer has to support the model above it. Measured in the angle given the thickness.",
|
||||
"unit": "°",
|
||||
"type": "float",
|
||||
"minimum_value": "0",
|
||||
"maximum_value": "90",
|
||||
"maximum_value_warning": "75",
|
||||
"default_value": 40,
|
||||
"limit_to_extruder": "infill_extruder_nr",
|
||||
"enabled": "infill_pattern == 'lightning'",
|
||||
"settable_per_mesh": false,
|
||||
"settable_per_extruder": true,
|
||||
"value": "lightning_infill_support_angle"
|
||||
},
|
||||
"lightning_infill_prune_angle":
|
||||
{
|
||||
"label": "Lightning Infill Prune Angle",
|
||||
"description": "The difference a lightning infill layer can have with the one immediately above w.r.t the pruning of the outer extremities of trees. Measured in the angle given the thickness.",
|
||||
"unit": "°",
|
||||
"type": "float",
|
||||
"minimum_value": "0",
|
||||
"maximum_value": "90",
|
||||
"maximum_value_warning": "75",
|
||||
"default_value": 40,
|
||||
"limit_to_extruder": "infill_extruder_nr",
|
||||
"enabled": "infill_pattern == 'lightning'",
|
||||
"settable_per_mesh": false,
|
||||
"settable_per_extruder": true,
|
||||
"value": "lightning_infill_support_angle"
|
||||
},
|
||||
"lightning_infill_straightening_angle":
|
||||
{
|
||||
"label": "Lightning Infill Straightening Angle",
|
||||
"description": "The difference a lightning infill layer can have with the one immediately above w.r.t the smoothing of trees. Measured in the angle given the thickness.",
|
||||
"unit": "°",
|
||||
"type": "float",
|
||||
"minimum_value": "0",
|
||||
"maximum_value": "90",
|
||||
"maximum_value_warning": "75",
|
||||
"default_value": 40,
|
||||
"limit_to_extruder": "infill_extruder_nr",
|
||||
"enabled": "infill_pattern == 'lightning'",
|
||||
"settable_per_mesh": false,
|
||||
"settable_per_extruder": true,
|
||||
"value": "lightning_infill_support_angle"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
|
|
15
resources/extruders/3di_base_extruder_0.def.json
Normal file
15
resources/extruders/3di_base_extruder_0.def.json
Normal file
|
@ -0,0 +1,15 @@
|
|||
{
|
||||
"version": 2,
|
||||
"name": "Extruder 1",
|
||||
"inherits": "fdmextruder",
|
||||
"metadata": {
|
||||
"machine": "3di_base",
|
||||
"position": "0"
|
||||
},
|
||||
|
||||
"overrides": {
|
||||
"extruder_nr": { "default_value": 0 },
|
||||
"machine_nozzle_size": { "default_value": 0.4 },
|
||||
"material_diameter": { "default_value": 1.75 }
|
||||
}
|
||||
}
|
15
resources/extruders/cremaker_extruder_0.def.json
Normal file
15
resources/extruders/cremaker_extruder_0.def.json
Normal file
|
@ -0,0 +1,15 @@
|
|||
{
|
||||
"version": 2,
|
||||
"name": "Extruder 1",
|
||||
"inherits": "fdmextruder",
|
||||
"metadata": {
|
||||
"machine": "cremaker_common",
|
||||
"position": "0"
|
||||
},
|
||||
|
||||
"overrides": {
|
||||
"extruder_nr": { "default_value": 0 },
|
||||
"machine_nozzle_size": { "default_value": 0.4 },
|
||||
"material_diameter": { "default_value": 1.75 }
|
||||
}
|
||||
}
|
BIN
resources/meshes/3di_d300_platform.STL
Normal file
BIN
resources/meshes/3di_d300_platform.STL
Normal file
Binary file not shown.
1870
resources/meshes/cremaker_platform_200.obj
Normal file
1870
resources/meshes/cremaker_platform_200.obj
Normal file
File diff suppressed because it is too large
Load diff
1870
resources/meshes/cremaker_platform_220.obj
Normal file
1870
resources/meshes/cremaker_platform_220.obj
Normal file
File diff suppressed because it is too large
Load diff
|
@ -190,12 +190,38 @@ Item
|
|||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Skip button
|
||||
Cura.TertiaryButton
|
||||
{
|
||||
id: skipButton
|
||||
anchors.left: parent.left
|
||||
anchors.bottom: parent.bottom
|
||||
text: catalog.i18nc("@button", "Skip")
|
||||
onClicked: base.showNextPage()
|
||||
}
|
||||
|
||||
// Create an account button
|
||||
Cura.SecondaryButton
|
||||
{
|
||||
id: createAccountButton
|
||||
anchors.right: signInButton.left
|
||||
anchors.rightMargin: UM.Theme.getSize("default_margin").width
|
||||
anchors.bottom: parent.bottom
|
||||
|
||||
text: catalog.i18nc("@text", "Create a free Ultimaker Account")
|
||||
onClicked: Qt.openUrlExternally("https://ultimaker.com/app/ultimaker-cura-account-sign-up?utm_source=cura&utm_medium=software&utm_campaign=onboarding-signup")
|
||||
}
|
||||
|
||||
// Sign in Button
|
||||
Cura.PrimaryButton
|
||||
{
|
||||
id: signInButton
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
anchors.right: parent.right
|
||||
anchors.bottom: parent.bottom
|
||||
|
||||
text: catalog.i18nc("@button", "Sign in")
|
||||
onClicked: Cura.API.account.login()
|
||||
// Content Item is used in order to align the text inside the button. Without it, when resizing the
|
||||
|
@ -208,37 +234,4 @@ Item
|
|||
verticalAlignment: Text.AlignVCenter
|
||||
}
|
||||
}
|
||||
|
||||
// Create an account button
|
||||
Cura.TertiaryButton
|
||||
{
|
||||
id: createAccountButton
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
text: catalog.i18nc("@text", "Create a free Ultimaker Account")
|
||||
onClicked: Qt.openUrlExternally("https://ultimaker.com/app/ultimaker-cura-account-sign-up?utm_source=cura&utm_medium=software&utm_campaign=onboarding-signup")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// The "Skip" button exists on the bottom right
|
||||
Label
|
||||
{
|
||||
id: skipButton
|
||||
anchors.right: parent.right
|
||||
anchors.bottom: parent.bottom
|
||||
anchors.leftMargin: UM.Theme.getSize("default_margin").width
|
||||
text: catalog.i18nc("@button", "Skip")
|
||||
color: UM.Theme.getColor("secondary_button_text")
|
||||
font: UM.Theme.getFont("medium")
|
||||
renderType: Text.NativeRendering
|
||||
|
||||
MouseArea
|
||||
{
|
||||
anchors.fill: parent
|
||||
hoverEnabled: true
|
||||
onClicked: base.showNextPage()
|
||||
onEntered: parent.font.underline = true
|
||||
onExited: parent.font.underline = false
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -627,7 +627,7 @@
|
|||
"message_close": [1, 1],
|
||||
"message_radius": [0.25, 0.25],
|
||||
"message_action_button": [0, 2.5],
|
||||
"message_image": [15.0, 5.0],
|
||||
"message_image": [15.0, 10.0],
|
||||
"message_type_icon": [2, 2],
|
||||
|
||||
"infill_button_margin": [0.5, 0.5],
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue