mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-07-11 08:47:50 -06:00
Merge branch 'master' into libArachne_rebased
This commit is contained in:
commit
6c08bbfc9d
122 changed files with 2907 additions and 524 deletions
|
@ -215,7 +215,7 @@ class ExtrudersModel(ListModel):
|
||||||
"id": "",
|
"id": "",
|
||||||
"name": catalog.i18nc("@menuitem", "Not overridden"),
|
"name": catalog.i18nc("@menuitem", "Not overridden"),
|
||||||
"enabled": True,
|
"enabled": True,
|
||||||
"color": "#ffffff",
|
"color": "transparent",
|
||||||
"index": -1,
|
"index": -1,
|
||||||
"definition": "",
|
"definition": "",
|
||||||
"material": "",
|
"material": "",
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
# Copyright (c) 2019 Ultimaker B.V.
|
# Copyright (c) 2021 Ultimaker B.V.
|
||||||
# Cura is released under the terms of the LGPLv3 or higher.
|
# Cura is released under the terms of the LGPLv3 or higher.
|
||||||
|
|
||||||
import collections
|
import collections
|
||||||
|
@ -6,9 +6,11 @@ from typing import Optional, Dict, List, cast
|
||||||
|
|
||||||
from PyQt5.QtCore import QObject, pyqtSlot
|
from PyQt5.QtCore import QObject, pyqtSlot
|
||||||
|
|
||||||
|
from UM.i18n import i18nCatalog
|
||||||
from UM.Resources import Resources
|
from UM.Resources import Resources
|
||||||
from UM.Version import Version
|
from UM.Version import Version
|
||||||
|
|
||||||
|
catalog = i18nCatalog("cura")
|
||||||
|
|
||||||
#
|
#
|
||||||
# This manager provides means to load texts to QML.
|
# This manager provides means to load texts to QML.
|
||||||
|
@ -30,32 +32,35 @@ class TextManager(QObject):
|
||||||
# Load change log texts and organize them with a dict
|
# Load change log texts and organize them with a dict
|
||||||
try:
|
try:
|
||||||
file_path = Resources.getPath(Resources.Texts, "change_log.txt")
|
file_path = Resources.getPath(Resources.Texts, "change_log.txt")
|
||||||
except FileNotFoundError:
|
except FileNotFoundError as e:
|
||||||
# I have no idea how / when this happens, but we're getting crash reports about it.
|
# I have no idea how / when this happens, but we're getting crash reports about it.
|
||||||
return ""
|
return catalog.i18nc("@text:window", "The release notes could not be opened.") + "<br>" + str(e)
|
||||||
change_logs_dict = {} # type: Dict[Version, Dict[str, List[str]]]
|
change_logs_dict = {} # type: Dict[Version, Dict[str, List[str]]]
|
||||||
with open(file_path, "r", encoding = "utf-8") as f:
|
try:
|
||||||
open_version = None # type: Optional[Version]
|
with open(file_path, "r", encoding = "utf-8") as f:
|
||||||
open_header = "" # Initialise to an empty header in case there is no "*" in the first line of the changelog
|
open_version = None # type: Optional[Version]
|
||||||
for line in f:
|
open_header = "" # Initialise to an empty header in case there is no "*" in the first line of the changelog
|
||||||
line = line.replace("\n", "")
|
for line in f:
|
||||||
if "[" in line and "]" in line:
|
line = line.replace("\n", "")
|
||||||
line = line.replace("[", "")
|
if "[" in line and "]" in line:
|
||||||
line = line.replace("]", "")
|
line = line.replace("[", "")
|
||||||
open_version = Version(line)
|
line = line.replace("]", "")
|
||||||
if open_version < Version([0, 0, 1]): # Something went wrong with parsing, assume non-numerical alternate version that should be on top.
|
open_version = Version(line)
|
||||||
open_version = Version([99, 99, 99])
|
if open_version < Version([0, 0, 1]): # Something went wrong with parsing, assume non-numerical alternate version that should be on top.
|
||||||
if Version([14, 99, 99]) < open_version < Version([16, 0, 0]): # Bit of a hack: We released the 15.x.x versions before 2.x
|
open_version = Version([99, 99, 99])
|
||||||
open_version = Version([0, open_version.getMinor(), open_version.getRevision(), open_version.getPostfixVersion()])
|
if Version([14, 99, 99]) < open_version < Version([16, 0, 0]): # Bit of a hack: We released the 15.x.x versions before 2.x
|
||||||
open_header = ""
|
open_version = Version([0, open_version.getMinor(), open_version.getRevision(), open_version.getPostfixVersion()])
|
||||||
change_logs_dict[open_version] = collections.OrderedDict()
|
open_header = ""
|
||||||
elif line.startswith("*"):
|
change_logs_dict[open_version] = collections.OrderedDict()
|
||||||
open_header = line.replace("*", "")
|
elif line.startswith("*"):
|
||||||
change_logs_dict[cast(Version, open_version)][open_header] = []
|
open_header = line.replace("*", "")
|
||||||
elif line != "":
|
|
||||||
if open_header not in change_logs_dict[cast(Version, open_version)]:
|
|
||||||
change_logs_dict[cast(Version, open_version)][open_header] = []
|
change_logs_dict[cast(Version, open_version)][open_header] = []
|
||||||
change_logs_dict[cast(Version, open_version)][open_header].append(line)
|
elif line != "":
|
||||||
|
if open_header not in change_logs_dict[cast(Version, open_version)]:
|
||||||
|
change_logs_dict[cast(Version, open_version)][open_header] = []
|
||||||
|
change_logs_dict[cast(Version, open_version)][open_header].append(line)
|
||||||
|
except EnvironmentError as e:
|
||||||
|
return catalog.i18nc("@text:window", "The release notes could not be opened.") + "<br>" + str(e)
|
||||||
|
|
||||||
# Format changelog text
|
# Format changelog text
|
||||||
content = ""
|
content = ""
|
||||||
|
|
|
@ -4,12 +4,12 @@
|
||||||
import argparse #To run the engine in debug mode if the front-end is in debug mode.
|
import argparse #To run the engine in debug mode if the front-end is in debug mode.
|
||||||
from collections import defaultdict
|
from collections import defaultdict
|
||||||
import os
|
import os
|
||||||
from PyQt5.QtCore import QObject, QTimer, pyqtSlot
|
from PyQt5.QtCore import QObject, QTimer, QUrl, pyqtSlot
|
||||||
import sys
|
import sys
|
||||||
from time import time
|
from time import time
|
||||||
from typing import Any, cast, Dict, List, Optional, Set, TYPE_CHECKING
|
from typing import Any, cast, Dict, List, Optional, Set, TYPE_CHECKING
|
||||||
|
|
||||||
from PyQt5.QtGui import QImage
|
from PyQt5.QtGui import QDesktopServices, QImage
|
||||||
|
|
||||||
from UM.Backend.Backend import Backend, BackendState
|
from UM.Backend.Backend import Backend, BackendState
|
||||||
from UM.Scene.SceneNode import SceneNode
|
from UM.Scene.SceneNode import SceneNode
|
||||||
|
@ -157,6 +157,18 @@ class CuraEngineBackend(QObject, Backend):
|
||||||
self.determineAutoSlicing()
|
self.determineAutoSlicing()
|
||||||
application.getPreferences().preferenceChanged.connect(self._onPreferencesChanged)
|
application.getPreferences().preferenceChanged.connect(self._onPreferencesChanged)
|
||||||
|
|
||||||
|
self._slicing_error_message = Message(
|
||||||
|
text = catalog.i18nc("@message", "Slicing failed with an unexpected error. Please consider reporting a bug on our issue tracker."),
|
||||||
|
title = catalog.i18nc("@message:title", "Slicing failed")
|
||||||
|
)
|
||||||
|
self._slicing_error_message.addAction(
|
||||||
|
action_id = "report_bug",
|
||||||
|
name = catalog.i18nc("@message:button", "Report a bug"),
|
||||||
|
description = catalog.i18nc("@message:description", "Report a bug on Ultimaker Cura's issue tracker."),
|
||||||
|
icon = "[no_icon]"
|
||||||
|
)
|
||||||
|
self._slicing_error_message.actionTriggered.connect(self._reportBackendError)
|
||||||
|
|
||||||
self._snapshot = None #type: Optional[QImage]
|
self._snapshot = None #type: Optional[QImage]
|
||||||
|
|
||||||
application.initializationFinished.connect(self.initialize)
|
application.initializationFinished.connect(self.initialize)
|
||||||
|
@ -598,10 +610,15 @@ class CuraEngineBackend(QObject, Backend):
|
||||||
|
|
||||||
if error.getErrorCode() not in [Arcus.ErrorCode.BindFailedError, Arcus.ErrorCode.ConnectionResetError, Arcus.ErrorCode.Debug]:
|
if error.getErrorCode() not in [Arcus.ErrorCode.BindFailedError, Arcus.ErrorCode.ConnectionResetError, Arcus.ErrorCode.Debug]:
|
||||||
Logger.log("w", "A socket error caused the connection to be reset")
|
Logger.log("w", "A socket error caused the connection to be reset")
|
||||||
|
elif error.getErrorCode() == Arcus.ErrorCode.ConnectionResetError:
|
||||||
|
Logger.error("CuraEngine crashed abnormally! The socket connection was reset unexpectedly.")
|
||||||
|
self._slicing_error_message.show()
|
||||||
|
self.setState(BackendState.Error)
|
||||||
|
self.stopSlicing()
|
||||||
|
|
||||||
# _terminate()' function sets the job status to 'cancel', after reconnecting to another Port the job status
|
# _terminate()' function sets the job status to 'cancel', after reconnecting to another Port the job status
|
||||||
# needs to be updated. Otherwise backendState is "Unable To Slice"
|
# needs to be updated. Otherwise backendState is "Unable To Slice"
|
||||||
if error.getErrorCode() == Arcus.ErrorCode.BindFailedError and self._start_slice_job is not None:
|
elif error.getErrorCode() == Arcus.ErrorCode.BindFailedError and self._start_slice_job is not None:
|
||||||
self._start_slice_job.setIsCancelled(False)
|
self._start_slice_job.setIsCancelled(False)
|
||||||
|
|
||||||
# Check if there's any slicable object in the scene.
|
# Check if there's any slicable object in the scene.
|
||||||
|
@ -922,9 +939,22 @@ class CuraEngineBackend(QObject, Backend):
|
||||||
|
|
||||||
if not self._restart:
|
if not self._restart:
|
||||||
if self._process: # type: ignore
|
if self._process: # type: ignore
|
||||||
Logger.log("d", "Backend quit with return code %s. Resetting process and socket.", self._process.wait()) # type: ignore
|
return_code = self._process.wait()
|
||||||
|
if return_code != 0:
|
||||||
|
Logger.log("e", f"Backend exited abnormally with return code {return_code}!")
|
||||||
|
self._slicing_error_message.show()
|
||||||
|
self.setState(BackendState.Error)
|
||||||
|
self.stopSlicing()
|
||||||
|
else:
|
||||||
|
Logger.log("d", "Backend finished slicing. Resetting process and socket.")
|
||||||
self._process = None # type: ignore
|
self._process = None # type: ignore
|
||||||
|
|
||||||
|
def _reportBackendError(self, _message_id: str, _action_id: str) -> None:
|
||||||
|
"""
|
||||||
|
Triggered when the user wants to report an error in the back-end.
|
||||||
|
"""
|
||||||
|
QDesktopServices.openUrl(QUrl("https://github.com/Ultimaker/Cura/issues/new/choose"))
|
||||||
|
|
||||||
def _onGlobalStackChanged(self) -> None:
|
def _onGlobalStackChanged(self) -> None:
|
||||||
"""Called when the global container stack changes"""
|
"""Called when the global container stack changes"""
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,62 @@
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 378.13 348.13">
|
||||||
|
<defs>
|
||||||
|
<style>
|
||||||
|
.cls-2,.cls-6{fill:#c5dbfb;}
|
||||||
|
.cls-3,.cls-5,.cls-8{fill:#fff;}
|
||||||
|
.cls-3{stroke:#c5dbfb;}
|
||||||
|
.cls-10,.cls-3,.cls-4,.cls-6,.cls-7,.cls-8{stroke-miterlimit:10;stroke-width:2px;}
|
||||||
|
.cls-4,.cls-7{fill:#f3f8fe;}
|
||||||
|
.cls-4{stroke:#f3f8fe;}
|
||||||
|
.cls-6,.cls-7,.cls-8{stroke:#061884;}
|
||||||
|
.cls-10{fill:#196ef0;stroke:#196ef0;}
|
||||||
|
.cls-11{fill:#061884;}
|
||||||
|
</style>
|
||||||
|
<clipPath id="clip-path">
|
||||||
|
<circle fill="none" cx="155" cy="125" r="80" />
|
||||||
|
</clipPath>
|
||||||
|
</defs>
|
||||||
|
<path class="cls-2" d="M43,17V3H83a2,2,0,0,1,2,2V17Z" />
|
||||||
|
<path class="cls-3" d="M3,1H40L56,17H87a2,2,0,0,1,2,2V67a2,2,0,0,1-2,2H3a2,2,0,0,1-2-2V3A2,2,0,0,1,3,1Z" />
|
||||||
|
<path class="cls-2" d="M153,17V3h40a2,2,0,0,1,2,2V17Z" />
|
||||||
|
<path class="cls-3" d="M113,1h37l16,16h31a2,2,0,0,1,2,2V67a2,2,0,0,1-2,2H113a2,2,0,0,1-2-2V3A2,2,0,0,1,113,1Z" />
|
||||||
|
<path class="cls-2" d="M263,17V3h40a2,2,0,0,1,2,2V17Z" />
|
||||||
|
<path class="cls-3" d="M223,1h37l16,16h31a2,2,0,0,1,2,2V67a2,2,0,0,1-2,2H223a2,2,0,0,1-2-2V3A2,2,0,0,1,223,1Z" />
|
||||||
|
<path class="cls-2" d="M43,107V93H83a2,2,0,0,1,2,2v12Z" />
|
||||||
|
<path class="cls-3" d="M3,91H40l16,16H87a2,2,0,0,1,2,2v48a2,2,0,0,1-2,2H3a2,2,0,0,1-2-2V93A2,2,0,0,1,3,91Z" />
|
||||||
|
<path class="cls-4" d="M153,107V93h40a2,2,0,0,1,2,2v12Z" />
|
||||||
|
<path class="cls-3" d="M113,91h37l16,16h31a2,2,0,0,1,2,2v48a2,2,0,0,1-2,2H113a2,2,0,0,1-2-2V93A2,2,0,0,1,113,91Z" />
|
||||||
|
<path class="cls-2" d="M263,107V93h40a2,2,0,0,1,2,2v12Z" />
|
||||||
|
<path class="cls-3" d="M223,91h37l16,16h31a2,2,0,0,1,2,2v48a2,2,0,0,1-2,2H223a2,2,0,0,1-2-2V93A2,2,0,0,1,223,91Z" />
|
||||||
|
<path class="cls-2" d="M43,197V183H83a2,2,0,0,1,2,2v12Z" />
|
||||||
|
<path class="cls-3" d="M3,181H40l16,16H87a2,2,0,0,1,2,2v48a2,2,0,0,1-2,2H3a2,2,0,0,1-2-2V183A2,2,0,0,1,3,181Z" />
|
||||||
|
<path class="cls-4" d="M153,197V183h40a2,2,0,0,1,2,2v12Z" />
|
||||||
|
<path class="cls-3" d="M113,181h37l16,16h31a2,2,0,0,1,2,2v48a2,2,0,0,1-2,2H113a2,2,0,0,1-2-2V183A2,2,0,0,1,113,181Z" />
|
||||||
|
<path class="cls-2" d="M263,197V183h40a2,2,0,0,1,2,2v12Z" />
|
||||||
|
<path class="cls-3" d="M223,181h37l16,16h31a2,2,0,0,1,2,2v48a2,2,0,0,1-2,2H223a2,2,0,0,1-2-2V183A2,2,0,0,1,223,181Z" />
|
||||||
|
<circle class="cls-5" cx="155" cy="125" r="100" />
|
||||||
|
<path class="cls-6" d="M351.12,322.62h20a10,10,0,0,1,10,10v7a0,0,0,0,1,0,0h-40a0,0,0,0,1,0,0v-7A10,10,0,0,1,351.12,322.62Z" transform="translate(850.61 309.91) rotate(135)" />
|
||||||
|
<rect class="cls-7" x="293.75" y="225.25" width="40" height="117" transform="translate(-108.74 304.96) rotate(-45)" />
|
||||||
|
<polyline class="cls-7" points="213.69 199.25 252.58 238.14 267.43 223.29 228.54 184.4" />
|
||||||
|
<circle class="cls-8" cx="155" cy="125" r="95" />
|
||||||
|
<circle class="cls-8" cx="155" cy="125" r="85" />
|
||||||
|
<path class="cls-6" d="M256.37,227.87h20a10,10,0,0,1,10,10v7a0,0,0,0,1,0,0h-40a0,0,0,0,1,0,0v-7a10,10,0,0,1,10-10Z" transform="translate(-89.12 257.58) rotate(-45)" />
|
||||||
|
<g clip-path="url(#clip-path)">
|
||||||
|
<path class="cls-10" d="M43,17V3H83a2,2,0,0,1,2,2V17Z" />
|
||||||
|
<path class="cls-8" d="M3,1H40L56,17H87a2,2,0,0,1,2,2V67a2,2,0,0,1-2,2H3a2,2,0,0,1-2-2V3A2,2,0,0,1,3,1Z" />
|
||||||
|
<path class="cls-10" d="M153,17V3h40a2,2,0,0,1,2,2V17Z" />
|
||||||
|
<path class="cls-8" d="M113,1h37l16,16h31a2,2,0,0,1,2,2V67a2,2,0,0,1-2,2H113a2,2,0,0,1-2-2V3A2,2,0,0,1,113,1Z" />
|
||||||
|
<path class="cls-10" d="M263,17V3h40a2,2,0,0,1,2,2V17Z" />
|
||||||
|
<path class="cls-8" d="M223,1h37l16,16h31a2,2,0,0,1,2,2V67a2,2,0,0,1-2,2H223a2,2,0,0,1-2-2V3A2,2,0,0,1,223,1Z" />
|
||||||
|
<path class="cls-10" d="M43,107V93H83a2,2,0,0,1,2,2v12Z" />
|
||||||
|
<path class="cls-8" d="M3,91H40l16,16H87a2,2,0,0,1,2,2v48a2,2,0,0,1-2,2H3a2,2,0,0,1-2-2V93A2,2,0,0,1,3,91Z" />
|
||||||
|
<path class="cls-10" d="M263,107V93h40a2,2,0,0,1,2,2v12Z" />
|
||||||
|
<path class="cls-8" d="M223,91h37l16,16h31a2,2,0,0,1,2,2v48a2,2,0,0,1-2,2H223a2,2,0,0,1-2-2V93A2,2,0,0,1,223,91Z" />
|
||||||
|
<path class="cls-10" d="M43,197V183H83a2,2,0,0,1,2,2v12Z" />
|
||||||
|
<path class="cls-8" d="M3,181H40l16,16H87a2,2,0,0,1,2,2v48a2,2,0,0,1-2,2H3a2,2,0,0,1-2-2V183A2,2,0,0,1,3,181Z" />
|
||||||
|
<path class="cls-10" d="M153,197V183h40a2,2,0,0,1,2,2v12Z" />
|
||||||
|
<path class="cls-8" d="M113,181h37l16,16h31a2,2,0,0,1,2,2v48a2,2,0,0,1-2,2H113a2,2,0,0,1-2-2V183A2,2,0,0,1,113,181Z" />
|
||||||
|
<path class="cls-10" d="M263,197V183h40a2,2,0,0,1,2,2v12Z" />
|
||||||
|
<path class="cls-8" d="M223,181h37l16,16h31a2,2,0,0,1,2,2v48a2,2,0,0,1-2,2H223a2,2,0,0,1-2-2V183A2,2,0,0,1,223,181Z" />
|
||||||
|
<path class="cls-11" d="M149.18,133.69v-3.48a14.36,14.36,0,0,1,1.74-7.25,20.17,20.17,0,0,1,6.4-6.17A25.87,25.87,0,0,0,163,112a7,7,0,0,0,1.48-4.34,4.13,4.13,0,0,0-1.93-3.62,9,9,0,0,0-5.14-1.3,24.94,24.94,0,0,0-7.34,1.16,45.2,45.2,0,0,0-7.78,3.31l-5.37-10.64a48.41,48.41,0,0,1,9.89-4.21,40.25,40.25,0,0,1,11.67-1.61q9.57,0,14.9,4.43a14.16,14.16,0,0,1,5.32,11.41,15.41,15.41,0,0,1-2.55,9,30.38,30.38,0,0,1-7.92,7.34A32.11,32.11,0,0,0,163,127.3a5.91,5.91,0,0,0-1.34,4v2.41Zm-1.61,15.12q0-4.38,2.46-6.12a10,10,0,0,1,5.95-1.75,9.69,9.69,0,0,1,5.77,1.75q2.46,1.74,2.46,6.12,0,4.22-2.46,6a9.42,9.42,0,0,1-5.77,1.84,9.69,9.69,0,0,1-5.95-1.84Q147.57,153,147.57,148.81Z" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 5.1 KiB |
|
@ -1,10 +1,12 @@
|
||||||
// Copyright (C) 2021 Ultimaker B.V.
|
// Copyright (C) 2021 Ultimaker B.V.
|
||||||
|
// Cura is released under the terms of the LGPLv3 or higher.
|
||||||
|
|
||||||
import QtQuick 2.10
|
import QtQuick 2.10
|
||||||
import QtQuick.Window 2.2
|
import QtQuick.Window 2.2
|
||||||
import QtQuick.Controls 1.4 as OldControls // TableView doesn't exist in the QtQuick Controls 2.x in 5.10, so use the old one
|
import QtQuick.Controls 1.4 as OldControls // TableView doesn't exist in the QtQuick Controls 2.x in 5.10, so use the old one
|
||||||
import QtQuick.Controls 2.3
|
import QtQuick.Controls 2.3
|
||||||
import QtQuick.Controls.Styles 1.4
|
import QtQuick.Controls.Styles 1.4
|
||||||
|
import QtQuick.Layouts 1.1
|
||||||
|
|
||||||
import UM 1.2 as UM
|
import UM 1.2 as UM
|
||||||
import Cura 1.6 as Cura
|
import Cura 1.6 as Cura
|
||||||
|
@ -29,31 +31,43 @@ Item
|
||||||
margins: UM.Theme.getSize("default_margin").width
|
margins: UM.Theme.getSize("default_margin").width
|
||||||
}
|
}
|
||||||
|
|
||||||
Label
|
RowLayout
|
||||||
{
|
{
|
||||||
id: selectProjectLabel
|
id: headerRow
|
||||||
|
|
||||||
text: "Select Project"
|
anchors
|
||||||
font: UM.Theme.getFont("medium")
|
|
||||||
color: UM.Theme.getColor("small_button_text")
|
|
||||||
anchors.top: parent.top
|
|
||||||
anchors.left: parent.left
|
|
||||||
visible: projectListContainer.visible
|
|
||||||
}
|
|
||||||
|
|
||||||
Cura.SecondaryButton
|
|
||||||
{
|
|
||||||
id: createNewProjectButton
|
|
||||||
|
|
||||||
anchors.verticalCenter: selectProjectLabel.verticalCenter
|
|
||||||
anchors.right: parent.right
|
|
||||||
text: "New Library project"
|
|
||||||
|
|
||||||
onClicked:
|
|
||||||
{
|
{
|
||||||
createNewProjectPopup.open()
|
top: parent.top
|
||||||
|
left: parent.left
|
||||||
|
right: parent.right
|
||||||
|
}
|
||||||
|
height: childrenRect.height
|
||||||
|
spacing: UM.Theme.getSize("default_margin").width
|
||||||
|
|
||||||
|
Cura.TextField
|
||||||
|
{
|
||||||
|
id: searchBar
|
||||||
|
Layout.fillWidth: true
|
||||||
|
implicitHeight: createNewProjectButton.height
|
||||||
|
|
||||||
|
onTextEdited: manager.projectFilter = text //Update the search filter when editing this text field.
|
||||||
|
|
||||||
|
leftIcon: UM.Theme.getIcon("Magnifier")
|
||||||
|
placeholderText: "Search"
|
||||||
|
}
|
||||||
|
|
||||||
|
Cura.SecondaryButton
|
||||||
|
{
|
||||||
|
id: createNewProjectButton
|
||||||
|
|
||||||
|
text: "New Library project"
|
||||||
|
|
||||||
|
onClicked:
|
||||||
|
{
|
||||||
|
createNewProjectPopup.open()
|
||||||
|
}
|
||||||
|
busy: manager.creatingNewProjectStatus == DF.RetrievalStatus.InProgress
|
||||||
}
|
}
|
||||||
busy: manager.creatingNewProjectStatus == DF.RetrievalStatus.InProgress
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Item
|
Item
|
||||||
|
@ -76,19 +90,18 @@ Item
|
||||||
{
|
{
|
||||||
id: digitalFactoryImage
|
id: digitalFactoryImage
|
||||||
anchors.horizontalCenter: parent.horizontalCenter
|
anchors.horizontalCenter: parent.horizontalCenter
|
||||||
source: "../images/digital_factory.svg"
|
source: searchBar.text === "" ? "../images/digital_factory.svg" : "../images/projects_not_found.svg"
|
||||||
fillMode: Image.PreserveAspectFit
|
fillMode: Image.PreserveAspectFit
|
||||||
width: parent.width - 2 * UM.Theme.getSize("thick_margin").width
|
width: parent.width - 2 * UM.Theme.getSize("thick_margin").width
|
||||||
sourceSize.width: width
|
|
||||||
sourceSize.height: height
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Label
|
Label
|
||||||
{
|
{
|
||||||
id: noLibraryProjectsLabel
|
id: noLibraryProjectsLabel
|
||||||
anchors.horizontalCenter: parent.horizontalCenter
|
anchors.horizontalCenter: parent.horizontalCenter
|
||||||
text: "It appears that you don't have any projects in the Library yet."
|
text: searchBar.text === "" ? "It appears that you don't have any projects in the Library yet." : "No projects found that match the search query."
|
||||||
font: UM.Theme.getFont("medium")
|
font: UM.Theme.getFont("medium")
|
||||||
|
color: UM.Theme.getColor("text")
|
||||||
}
|
}
|
||||||
|
|
||||||
Cura.TertiaryButton
|
Cura.TertiaryButton
|
||||||
|
@ -97,6 +110,7 @@ Item
|
||||||
anchors.horizontalCenter: parent.horizontalCenter
|
anchors.horizontalCenter: parent.horizontalCenter
|
||||||
text: "Visit Digital Library"
|
text: "Visit Digital Library"
|
||||||
onClicked: Qt.openUrlExternally(CuraApplication.ultimakerDigitalFactoryUrl + "/app/library")
|
onClicked: Qt.openUrlExternally(CuraApplication.ultimakerDigitalFactoryUrl + "/app/library")
|
||||||
|
visible: searchBar.text === "" //Show the link to Digital Library when there are no projects in the user's Library.
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -106,7 +120,7 @@ Item
|
||||||
id: projectListContainer
|
id: projectListContainer
|
||||||
anchors
|
anchors
|
||||||
{
|
{
|
||||||
top: selectProjectLabel.bottom
|
top: headerRow.bottom
|
||||||
topMargin: UM.Theme.getSize("default_margin").height
|
topMargin: UM.Theme.getSize("default_margin").height
|
||||||
bottom: parent.bottom
|
bottom: parent.bottom
|
||||||
left: parent.left
|
left: parent.left
|
||||||
|
|
|
@ -22,6 +22,7 @@ from .DFFileUploader import DFFileUploader
|
||||||
from .DFLibraryFileUploadRequest import DFLibraryFileUploadRequest
|
from .DFLibraryFileUploadRequest import DFLibraryFileUploadRequest
|
||||||
from .DFLibraryFileUploadResponse import DFLibraryFileUploadResponse
|
from .DFLibraryFileUploadResponse import DFLibraryFileUploadResponse
|
||||||
from .DFPrintJobUploadRequest import DFPrintJobUploadRequest
|
from .DFPrintJobUploadRequest import DFPrintJobUploadRequest
|
||||||
|
from .DigitalFactoryFeatureBudgetResponse import DigitalFactoryFeatureBudgetResponse
|
||||||
from .DigitalFactoryFileResponse import DigitalFactoryFileResponse
|
from .DigitalFactoryFileResponse import DigitalFactoryFileResponse
|
||||||
from .DigitalFactoryProjectResponse import DigitalFactoryProjectResponse
|
from .DigitalFactoryProjectResponse import DigitalFactoryProjectResponse
|
||||||
from .PaginationLinks import PaginationLinks
|
from .PaginationLinks import PaginationLinks
|
||||||
|
@ -57,6 +58,27 @@ class DigitalFactoryApiClient:
|
||||||
|
|
||||||
self._projects_pagination_mgr = PaginationManager(limit = projects_limit_per_page) if projects_limit_per_page else None # type: Optional[PaginationManager]
|
self._projects_pagination_mgr = PaginationManager(limit = projects_limit_per_page) if projects_limit_per_page else None # type: Optional[PaginationManager]
|
||||||
|
|
||||||
|
def checkUserHasAccess(self, callback: Callable) -> None:
|
||||||
|
"""Checks if the user has any sort of access to the digital library.
|
||||||
|
A user is considered to have access if the max-# of private projects is greater then 0 (or -1 for unlimited).
|
||||||
|
"""
|
||||||
|
|
||||||
|
def callbackWrap(response: Optional[Any] = None, *args, **kwargs) -> None:
|
||||||
|
if (response is not None and isinstance(response, DigitalFactoryFeatureBudgetResponse) and
|
||||||
|
response.library_max_private_projects is not None):
|
||||||
|
callback(
|
||||||
|
response.library_max_private_projects == -1 or # Note: -1 is unlimited
|
||||||
|
response.library_max_private_projects > 0)
|
||||||
|
else:
|
||||||
|
Logger.warning(f"Digital Factory: Response is not a feature budget, likely an error: {str(response)}")
|
||||||
|
callback(False)
|
||||||
|
|
||||||
|
self._http.get(f"{self.CURA_API_ROOT}/feature_budgets",
|
||||||
|
scope = self._scope,
|
||||||
|
callback = self._parseCallback(callbackWrap, DigitalFactoryFeatureBudgetResponse, callbackWrap),
|
||||||
|
error_callback = callbackWrap,
|
||||||
|
timeout = self.DEFAULT_REQUEST_TIMEOUT)
|
||||||
|
|
||||||
def getProject(self, library_project_id: str, on_finished: Callable[[DigitalFactoryProjectResponse], Any], failed: Callable) -> None:
|
def getProject(self, library_project_id: str, on_finished: Callable[[DigitalFactoryProjectResponse], Any], failed: Callable) -> None:
|
||||||
"""
|
"""
|
||||||
Retrieves a digital factory project by its library project id.
|
Retrieves a digital factory project by its library project id.
|
||||||
|
@ -73,7 +95,7 @@ class DigitalFactoryApiClient:
|
||||||
error_callback = failed,
|
error_callback = failed,
|
||||||
timeout = self.DEFAULT_REQUEST_TIMEOUT)
|
timeout = self.DEFAULT_REQUEST_TIMEOUT)
|
||||||
|
|
||||||
def getProjectsFirstPage(self, on_finished: Callable[[List[DigitalFactoryProjectResponse]], Any], failed: Callable) -> None:
|
def getProjectsFirstPage(self, search_filter: str, on_finished: Callable[[List[DigitalFactoryProjectResponse]], Any], failed: Callable) -> None:
|
||||||
"""
|
"""
|
||||||
Retrieves digital factory projects for the user that is currently logged in.
|
Retrieves digital factory projects for the user that is currently logged in.
|
||||||
|
|
||||||
|
@ -81,13 +103,18 @@ class DigitalFactoryApiClient:
|
||||||
according to the limit set in the pagination manager. If there is no projects pagination manager, this function
|
according to the limit set in the pagination manager. If there is no projects pagination manager, this function
|
||||||
leaves the project limit to the default set on the server side (999999).
|
leaves the project limit to the default set on the server side (999999).
|
||||||
|
|
||||||
|
:param search_filter: Text to filter the search results. If given an empty string, results are not filtered.
|
||||||
:param on_finished: The function to be called after the result is parsed.
|
:param on_finished: The function to be called after the result is parsed.
|
||||||
:param failed: The function to be called if the request fails.
|
:param failed: The function to be called if the request fails.
|
||||||
"""
|
"""
|
||||||
url = "{}/projects".format(self.CURA_API_ROOT)
|
url = f"{self.CURA_API_ROOT}/projects"
|
||||||
|
query_character = "?"
|
||||||
if self._projects_pagination_mgr:
|
if self._projects_pagination_mgr:
|
||||||
self._projects_pagination_mgr.reset() # reset to clear all the links and response metadata
|
self._projects_pagination_mgr.reset() # reset to clear all the links and response metadata
|
||||||
url += "?limit={}".format(self._projects_pagination_mgr.limit)
|
url += f"{query_character}limit={self._projects_pagination_mgr.limit}"
|
||||||
|
query_character = "&"
|
||||||
|
if search_filter != "":
|
||||||
|
url += f"{query_character}search={search_filter}"
|
||||||
|
|
||||||
self._http.get(url,
|
self._http.get(url,
|
||||||
scope = self._scope,
|
scope = self._scope,
|
||||||
|
|
|
@ -1,4 +1,6 @@
|
||||||
# Copyright (c) 2021 Ultimaker B.V.
|
# Copyright (c) 2021 Ultimaker B.V.
|
||||||
|
# Cura is released under the terms of the LGPLv3 or higher.
|
||||||
|
|
||||||
import json
|
import json
|
||||||
import math
|
import math
|
||||||
import os
|
import os
|
||||||
|
@ -8,7 +10,7 @@ from enum import IntEnum
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from typing import Optional, List, Dict, Any, cast
|
from typing import Optional, List, Dict, Any, cast
|
||||||
|
|
||||||
from PyQt5.QtCore import pyqtSignal, QObject, pyqtSlot, pyqtProperty, Q_ENUMS, QUrl
|
from PyQt5.QtCore import pyqtSignal, QObject, pyqtSlot, pyqtProperty, Q_ENUMS, QTimer, QUrl
|
||||||
from PyQt5.QtNetwork import QNetworkReply
|
from PyQt5.QtNetwork import QNetworkReply
|
||||||
from PyQt5.QtQml import qmlRegisterType, qmlRegisterUncreatableType
|
from PyQt5.QtQml import qmlRegisterType, qmlRegisterUncreatableType
|
||||||
|
|
||||||
|
@ -89,6 +91,9 @@ class DigitalFactoryController(QObject):
|
||||||
uploadFileError = Signal()
|
uploadFileError = Signal()
|
||||||
uploadFileFinished = Signal()
|
uploadFileFinished = Signal()
|
||||||
|
|
||||||
|
"""Signal to inform about the state of user access."""
|
||||||
|
userAccessStateChanged = pyqtSignal(bool)
|
||||||
|
|
||||||
def __init__(self, application: CuraApplication) -> None:
|
def __init__(self, application: CuraApplication) -> None:
|
||||||
super().__init__(parent = None)
|
super().__init__(parent = None)
|
||||||
|
|
||||||
|
@ -106,12 +111,18 @@ class DigitalFactoryController(QObject):
|
||||||
self._has_more_projects_to_load = False
|
self._has_more_projects_to_load = False
|
||||||
|
|
||||||
self._account = self._application.getInstance().getCuraAPI().account # type: Account
|
self._account = self._application.getInstance().getCuraAPI().account # type: Account
|
||||||
|
self._account.loginStateChanged.connect(self._onLoginStateChanged)
|
||||||
self._current_workspace_information = CuraApplication.getInstance().getCurrentWorkspaceInformation()
|
self._current_workspace_information = CuraApplication.getInstance().getCurrentWorkspaceInformation()
|
||||||
|
|
||||||
# Initialize the project model
|
# Initialize the project model
|
||||||
self._project_model = DigitalFactoryProjectModel()
|
self._project_model = DigitalFactoryProjectModel()
|
||||||
self._selected_project_idx = -1
|
self._selected_project_idx = -1
|
||||||
self._project_creation_error_text = "Something went wrong while creating a new project. Please try again."
|
self._project_creation_error_text = "Something went wrong while creating a new project. Please try again."
|
||||||
|
self._project_filter = ""
|
||||||
|
self._project_filter_change_timer = QTimer()
|
||||||
|
self._project_filter_change_timer.setInterval(200)
|
||||||
|
self._project_filter_change_timer.setSingleShot(True)
|
||||||
|
self._project_filter_change_timer.timeout.connect(self._applyProjectFilter)
|
||||||
|
|
||||||
# Initialize the file model
|
# Initialize the file model
|
||||||
self._file_model = DigitalFactoryFileModel()
|
self._file_model = DigitalFactoryFileModel()
|
||||||
|
@ -131,6 +142,8 @@ class DigitalFactoryController(QObject):
|
||||||
self._application.engineCreatedSignal.connect(self._onEngineCreated)
|
self._application.engineCreatedSignal.connect(self._onEngineCreated)
|
||||||
self._application.initializationFinished.connect(self._applicationInitializationFinished)
|
self._application.initializationFinished.connect(self._applicationInitializationFinished)
|
||||||
|
|
||||||
|
self._user_has_access = False
|
||||||
|
|
||||||
def clear(self) -> None:
|
def clear(self) -> None:
|
||||||
self._project_model.clearProjects()
|
self._project_model.clearProjects()
|
||||||
self._api.clear()
|
self._api.clear()
|
||||||
|
@ -143,16 +156,24 @@ class DigitalFactoryController(QObject):
|
||||||
|
|
||||||
self.setSelectedProjectIndex(-1)
|
self.setSelectedProjectIndex(-1)
|
||||||
|
|
||||||
|
def _onLoginStateChanged(self, logged_in: bool) -> None:
|
||||||
|
def callback(has_access, **kwargs):
|
||||||
|
self._user_has_access = has_access
|
||||||
|
self.userAccessStateChanged.emit(logged_in)
|
||||||
|
|
||||||
|
self._api.checkUserHasAccess(callback)
|
||||||
|
|
||||||
def userAccountHasLibraryAccess(self) -> bool:
|
def userAccountHasLibraryAccess(self) -> bool:
|
||||||
"""
|
"""
|
||||||
Checks whether the currently logged in user account has access to the Digital Library
|
Checks whether the currently logged in user account has access to the Digital Library
|
||||||
|
|
||||||
:return: True if the user account has Digital Library access, else False
|
:return: True if the user account has Digital Library access, else False
|
||||||
"""
|
"""
|
||||||
subscriptions = [] # type: List[Dict[str, Any]]
|
|
||||||
if self._account.userProfile:
|
if self._account.userProfile:
|
||||||
subscriptions = self._account.userProfile.get("subscriptions", [])
|
subscriptions = self._account.userProfile.get("subscriptions", [])
|
||||||
return len(subscriptions) > 0
|
if len(subscriptions) > 0:
|
||||||
|
return True
|
||||||
|
return self._user_has_access
|
||||||
|
|
||||||
def initialize(self, preselected_project_id: Optional[str] = None) -> None:
|
def initialize(self, preselected_project_id: Optional[str] = None) -> None:
|
||||||
self.clear()
|
self.clear()
|
||||||
|
@ -162,7 +183,7 @@ class DigitalFactoryController(QObject):
|
||||||
if preselected_project_id:
|
if preselected_project_id:
|
||||||
self._api.getProject(preselected_project_id, on_finished = self.setProjectAsPreselected, failed = self._onGetProjectFailed)
|
self._api.getProject(preselected_project_id, on_finished = self.setProjectAsPreselected, failed = self._onGetProjectFailed)
|
||||||
else:
|
else:
|
||||||
self._api.getProjectsFirstPage(on_finished = self._onGetProjectsFirstPageFinished, failed = self._onGetProjectsFailed)
|
self._api.getProjectsFirstPage(search_filter = self._project_filter, on_finished = self._onGetProjectsFirstPageFinished, failed = self._onGetProjectsFailed)
|
||||||
|
|
||||||
def setProjectAsPreselected(self, df_project: DigitalFactoryProjectResponse) -> None:
|
def setProjectAsPreselected(self, df_project: DigitalFactoryProjectResponse) -> None:
|
||||||
"""
|
"""
|
||||||
|
@ -288,6 +309,38 @@ class DigitalFactoryController(QObject):
|
||||||
self._selected_file_indices = file_indices
|
self._selected_file_indices = file_indices
|
||||||
self.selectedFileIndicesChanged.emit(file_indices)
|
self.selectedFileIndicesChanged.emit(file_indices)
|
||||||
|
|
||||||
|
def setProjectFilter(self, new_filter: str) -> None:
|
||||||
|
"""
|
||||||
|
Called when the user wants to change the search filter for projects.
|
||||||
|
|
||||||
|
The filter is not immediately applied. There is some delay to allow the user to finish typing.
|
||||||
|
:param new_filter: The new filter that the user wants to apply.
|
||||||
|
"""
|
||||||
|
self._project_filter = new_filter
|
||||||
|
self._project_filter_change_timer.start()
|
||||||
|
|
||||||
|
"""
|
||||||
|
Signal to notify Qt that the applied filter has changed.
|
||||||
|
"""
|
||||||
|
projectFilterChanged = pyqtSignal()
|
||||||
|
|
||||||
|
@pyqtProperty(str, notify = projectFilterChanged, fset = setProjectFilter)
|
||||||
|
def projectFilter(self) -> str:
|
||||||
|
"""
|
||||||
|
The current search filter being applied to the project list.
|
||||||
|
:return: The current search filter being applied to the project list.
|
||||||
|
"""
|
||||||
|
return self._project_filter
|
||||||
|
|
||||||
|
def _applyProjectFilter(self) -> None:
|
||||||
|
"""
|
||||||
|
Actually apply the current filter to search for projects with the user-defined search string.
|
||||||
|
:return:
|
||||||
|
"""
|
||||||
|
self.clear()
|
||||||
|
self.projectFilterChanged.emit()
|
||||||
|
self._api.getProjectsFirstPage(search_filter = self._project_filter, on_finished = self._onGetProjectsFirstPageFinished, failed = self._onGetProjectsFailed)
|
||||||
|
|
||||||
@pyqtProperty(QObject, constant = True)
|
@pyqtProperty(QObject, constant = True)
|
||||||
def digitalFactoryProjectModel(self) -> "DigitalFactoryProjectModel":
|
def digitalFactoryProjectModel(self) -> "DigitalFactoryProjectModel":
|
||||||
return self._project_model
|
return self._project_model
|
||||||
|
@ -502,7 +555,7 @@ class DigitalFactoryController(QObject):
|
||||||
# false, we also need to clean it from the projects model
|
# false, we also need to clean it from the projects model
|
||||||
self._project_model.clearProjects()
|
self._project_model.clearProjects()
|
||||||
self.setSelectedProjectIndex(-1)
|
self.setSelectedProjectIndex(-1)
|
||||||
self._api.getProjectsFirstPage(on_finished = self._onGetProjectsFirstPageFinished, failed = self._onGetProjectsFailed)
|
self._api.getProjectsFirstPage(search_filter = self._project_filter, on_finished = self._onGetProjectsFirstPageFinished, failed = self._onGetProjectsFailed)
|
||||||
self.setRetrievingProjectsStatus(RetrievalStatus.InProgress)
|
self.setRetrievingProjectsStatus(RetrievalStatus.InProgress)
|
||||||
self._has_preselected_project = new_has_preselected_project
|
self._has_preselected_project = new_has_preselected_project
|
||||||
self.preselectedProjectChanged.emit()
|
self.preselectedProjectChanged.emit()
|
||||||
|
|
|
@ -0,0 +1,43 @@
|
||||||
|
# Copyright (c) 2021 Ultimaker B.V.
|
||||||
|
# Cura is released under the terms of the LGPLv3 or higher.
|
||||||
|
|
||||||
|
from .BaseModel import BaseModel
|
||||||
|
from typing import Optional
|
||||||
|
|
||||||
|
|
||||||
|
class DigitalFactoryFeatureBudgetResponse(BaseModel):
|
||||||
|
"""Class representing the capabilities of a user account for Digital Library.
|
||||||
|
NOTE: For each max_..._projects fields, '-1' means unlimited!
|
||||||
|
"""
|
||||||
|
|
||||||
|
def __init__(self,
|
||||||
|
library_can_use_business_value: Optional[bool] = False,
|
||||||
|
library_can_use_comments: Optional[bool] = False,
|
||||||
|
library_can_use_status: Optional[bool] = False,
|
||||||
|
library_can_use_tags: Optional[bool] = False,
|
||||||
|
library_can_use_technical_requirements: Optional[bool] = False,
|
||||||
|
library_max_organization_shared_projects: Optional[int] = False, # -1 means unlimited
|
||||||
|
library_max_private_projects: Optional[int] = False, # -1 means unlimited
|
||||||
|
library_max_team_shared_projects: Optional[int] = False, # -1 means unlimited
|
||||||
|
**kwargs) -> None:
|
||||||
|
|
||||||
|
self.library_can_use_business_value = library_can_use_business_value
|
||||||
|
self.library_can_use_comments = library_can_use_comments
|
||||||
|
self.library_can_use_status = library_can_use_status
|
||||||
|
self.library_can_use_tags = library_can_use_tags
|
||||||
|
self.library_can_use_technical_requirements = library_can_use_technical_requirements
|
||||||
|
self.library_max_organization_shared_projects = library_max_organization_shared_projects # -1 means unlimited
|
||||||
|
self.library_max_private_projects = library_max_private_projects # -1 means unlimited
|
||||||
|
self.library_max_team_shared_projects = library_max_team_shared_projects # -1 means unlimited
|
||||||
|
super().__init__(**kwargs)
|
||||||
|
|
||||||
|
def __repr__(self) -> str:
|
||||||
|
return "max private: {}, max org: {}, max team: {}".format(
|
||||||
|
self.library_max_private_projects,
|
||||||
|
self.library_max_organization_shared_projects,
|
||||||
|
self.library_max_team_shared_projects)
|
||||||
|
|
||||||
|
# Validates the model, raising an exception if the model is invalid.
|
||||||
|
def validate(self) -> None:
|
||||||
|
super().validate()
|
||||||
|
# No validation for now, as the response can be "data: []", which should be interpreted as all False and 0's
|
|
@ -22,7 +22,7 @@ class DigitalFactoryFileProvider(FileProvider):
|
||||||
self._dialog = None
|
self._dialog = None
|
||||||
|
|
||||||
self._account = CuraApplication.getInstance().getCuraAPI().account # type: Account
|
self._account = CuraApplication.getInstance().getCuraAPI().account # type: Account
|
||||||
self._account.loginStateChanged.connect(self._onLoginStateChanged)
|
self._controller.userAccessStateChanged.connect(self._onUserAccessStateChanged)
|
||||||
self.enabled = self._account.isLoggedIn and self._controller.userAccountHasLibraryAccess()
|
self.enabled = self._account.isLoggedIn and self._controller.userAccountHasLibraryAccess()
|
||||||
self.priority = 10
|
self.priority = 10
|
||||||
|
|
||||||
|
@ -53,7 +53,7 @@ class DigitalFactoryFileProvider(FileProvider):
|
||||||
if not self._dialog:
|
if not self._dialog:
|
||||||
Logger.log("e", "Unable to create the Digital Library Open dialog.")
|
Logger.log("e", "Unable to create the Digital Library Open dialog.")
|
||||||
|
|
||||||
def _onLoginStateChanged(self, logged_in: bool) -> None:
|
def _onUserAccessStateChanged(self, logged_in: bool) -> None:
|
||||||
"""
|
"""
|
||||||
Sets the enabled status of the DigitalFactoryFileProvider according to the account's login status
|
Sets the enabled status of the DigitalFactoryFileProvider according to the account's login status
|
||||||
:param logged_in: The new login status
|
:param logged_in: The new login status
|
||||||
|
|
|
@ -45,7 +45,7 @@ class DigitalFactoryOutputDevice(ProjectOutputDevice):
|
||||||
self._writing = False
|
self._writing = False
|
||||||
|
|
||||||
self._account = CuraApplication.getInstance().getCuraAPI().account # type: Account
|
self._account = CuraApplication.getInstance().getCuraAPI().account # type: Account
|
||||||
self._account.loginStateChanged.connect(self._onLoginStateChanged)
|
self._controller.userAccessStateChanged.connect(self._onUserAccessStateChanged)
|
||||||
self.enabled = self._account.isLoggedIn and self._controller.userAccountHasLibraryAccess()
|
self.enabled = self._account.isLoggedIn and self._controller.userAccountHasLibraryAccess()
|
||||||
|
|
||||||
self._current_workspace_information = CuraApplication.getInstance().getCurrentWorkspaceInformation()
|
self._current_workspace_information = CuraApplication.getInstance().getCurrentWorkspaceInformation()
|
||||||
|
@ -97,7 +97,7 @@ class DigitalFactoryOutputDevice(ProjectOutputDevice):
|
||||||
if not self._dialog:
|
if not self._dialog:
|
||||||
Logger.log("e", "Unable to create the Digital Library Save dialog.")
|
Logger.log("e", "Unable to create the Digital Library Save dialog.")
|
||||||
|
|
||||||
def _onLoginStateChanged(self, logged_in: bool) -> None:
|
def _onUserAccessStateChanged(self, logged_in: bool) -> None:
|
||||||
"""
|
"""
|
||||||
Sets the enabled status of the DigitalFactoryOutputDevice according to the account's login status
|
Sets the enabled status of the DigitalFactoryOutputDevice according to the account's login status
|
||||||
:param logged_in: The new login status
|
:param logged_in: The new login status
|
||||||
|
|
|
@ -1,3 +1,6 @@
|
||||||
|
# Copyright (c) 2021 Ultimaker B.V.
|
||||||
|
# Cura is released under the terms of the LGPLv3 or higher.
|
||||||
|
|
||||||
from unittest.mock import MagicMock
|
from unittest.mock import MagicMock
|
||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
|
@ -37,7 +40,7 @@ def test_getProjectsFirstPage(api_client):
|
||||||
failed_callback = MagicMock()
|
failed_callback = MagicMock()
|
||||||
|
|
||||||
# Call
|
# Call
|
||||||
api_client.getProjectsFirstPage(on_finished = finished_callback, failed = failed_callback)
|
api_client.getProjectsFirstPage(search_filter = "filter", on_finished = finished_callback, failed = failed_callback)
|
||||||
|
|
||||||
# Asserts
|
# Asserts
|
||||||
pagination_manager.reset.assert_called_once() # Should be called since we asked for new set of projects
|
pagination_manager.reset.assert_called_once() # Should be called since we asked for new set of projects
|
||||||
|
@ -45,16 +48,16 @@ def test_getProjectsFirstPage(api_client):
|
||||||
args = http_manager.get.call_args_list[0]
|
args = http_manager.get.call_args_list[0]
|
||||||
|
|
||||||
# Ensure that it's called with the right limit
|
# Ensure that it's called with the right limit
|
||||||
assert args[0][0] == "https://api.ultimaker.com/cura/v1/projects?limit=20"
|
assert args[0][0] == "https://api.ultimaker.com/cura/v1/projects?limit=20&search=filter"
|
||||||
|
|
||||||
# Change the limit & try again
|
# Change the limit & try again
|
||||||
http_manager.get.reset_mock()
|
http_manager.get.reset_mock()
|
||||||
pagination_manager.limit = 80
|
pagination_manager.limit = 80
|
||||||
api_client.getProjectsFirstPage(on_finished = finished_callback, failed = failed_callback)
|
api_client.getProjectsFirstPage(search_filter = "filter", on_finished = finished_callback, failed = failed_callback)
|
||||||
args = http_manager.get.call_args_list[0]
|
args = http_manager.get.call_args_list[0]
|
||||||
|
|
||||||
# Ensure that it's called with the right limit
|
# Ensure that it's called with the right limit
|
||||||
assert args[0][0] == "https://api.ultimaker.com/cura/v1/projects?limit=80"
|
assert args[0][0] == "https://api.ultimaker.com/cura/v1/projects?limit=80&search=filter"
|
||||||
|
|
||||||
|
|
||||||
def test_getMoreProjects_noNewProjects(api_client):
|
def test_getMoreProjects_noNewProjects(api_client):
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
# Copyright (c) 2020 Ultimaker B.V.
|
# Copyright (c) 2021 Ultimaker B.V.
|
||||||
# Cura is released under the terms of the LGPLv3 or higher.
|
# Cura is released under the terms of the LGPLv3 or higher.
|
||||||
|
|
||||||
from UM.Logger import Logger
|
from UM.Logger import Logger
|
||||||
|
@ -103,20 +103,27 @@ class PerObjectSettingsTool(Tool):
|
||||||
new_instance.resetState() # Ensure that the state is not seen as a user state.
|
new_instance.resetState() # Ensure that the state is not seen as a user state.
|
||||||
settings.addInstance(new_instance)
|
settings.addInstance(new_instance)
|
||||||
|
|
||||||
for property_key in ["top_bottom_thickness", "wall_thickness", "wall_line_count"]:
|
# Override some settings to ensure that the infill mesh by default adds no skin or walls. Or remove them if not an infill mesh.
|
||||||
|
specialized_settings = {
|
||||||
|
"top_bottom_thickness": 0,
|
||||||
|
"top_thickness": "=top_bottom_thickness",
|
||||||
|
"bottom_thickness": "=top_bottom_thickness",
|
||||||
|
"top_layers": "=0 if infill_sparse_density == 100 else math.ceil(round(top_thickness / resolveOrValue('layer_height'), 4))",
|
||||||
|
"bottom_layers": "=0 if infill_sparse_density == 100 else math.ceil(round(bottom_thickness / resolveOrValue('layer_height'), 4))",
|
||||||
|
"wall_thickness": 0,
|
||||||
|
"wall_line_count": "=max(1, round((wall_thickness - wall_line_width_0) / wall_line_width_x) + 1) if wall_thickness != 0 else 0"
|
||||||
|
}
|
||||||
|
for property_key in specialized_settings:
|
||||||
if mesh_type == "infill_mesh":
|
if mesh_type == "infill_mesh":
|
||||||
if settings.getInstance(property_key) is None:
|
if settings.getInstance(property_key) is None:
|
||||||
definition = stack.getSettingDefinition(property_key)
|
definition = stack.getSettingDefinition(property_key)
|
||||||
new_instance = SettingInstance(definition, settings)
|
new_instance = SettingInstance(definition, settings)
|
||||||
# We just want the wall_line count to be there in case it was overriden in the global stack.
|
new_instance.setProperty("value", specialized_settings[property_key])
|
||||||
# as such, we don't need to set a value.
|
|
||||||
if property_key != "wall_line_count":
|
|
||||||
new_instance.setProperty("value", 0)
|
|
||||||
new_instance.resetState() # Ensure that the state is not seen as a user state.
|
new_instance.resetState() # Ensure that the state is not seen as a user state.
|
||||||
settings.addInstance(new_instance)
|
settings.addInstance(new_instance)
|
||||||
settings_visibility_changed = True
|
settings_visibility_changed = True
|
||||||
|
|
||||||
elif old_mesh_type == "infill_mesh" and settings.getInstance(property_key) and (settings.getProperty(property_key, "value") == 0 or property_key == "wall_line_count"):
|
elif old_mesh_type == "infill_mesh" and settings.getInstance(property_key) and property_key in specialized_settings:
|
||||||
settings.removeInstance(property_key)
|
settings.removeInstance(property_key)
|
||||||
settings_visibility_changed = True
|
settings_visibility_changed = True
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
// Copyright (c) 2018 Ultimaker B.V.
|
// Copyright (c) 2021 Ultimaker B.V.
|
||||||
// Cura is released under the terms of the LGPLv3 or higher.
|
// Cura is released under the terms of the LGPLv3 or higher.
|
||||||
|
|
||||||
import QtQuick 2.7
|
import QtQuick 2.9
|
||||||
import QtQuick.Layouts 1.1
|
import QtQuick.Layouts 1.1
|
||||||
import QtQuick.Controls 2.3
|
import QtQuick.Controls 2.3
|
||||||
|
|
||||||
|
@ -13,6 +13,8 @@ Item
|
||||||
{
|
{
|
||||||
id: prepareMenu
|
id: prepareMenu
|
||||||
|
|
||||||
|
property var fileProviderModel: CuraApplication.getFileProviderModel()
|
||||||
|
|
||||||
UM.I18nCatalog
|
UM.I18nCatalog
|
||||||
{
|
{
|
||||||
id: catalog
|
id: catalog
|
||||||
|
@ -23,24 +25,22 @@ Item
|
||||||
{
|
{
|
||||||
left: parent.left
|
left: parent.left
|
||||||
right: parent.right
|
right: parent.right
|
||||||
leftMargin: UM.Theme.getSize("wide_margin").width
|
leftMargin: UM.Theme.getSize("wide_margin").width * 2
|
||||||
rightMargin: UM.Theme.getSize("wide_margin").width
|
rightMargin: UM.Theme.getSize("wide_margin").width * 2
|
||||||
}
|
}
|
||||||
|
|
||||||
// Item to ensure that all of the buttons are nicely centered.
|
// Item to ensure that all of the buttons are nicely centered.
|
||||||
Item
|
Item
|
||||||
{
|
{
|
||||||
anchors.horizontalCenter: parent.horizontalCenter
|
anchors.fill: parent
|
||||||
width: parent.width - 2 * UM.Theme.getSize("wide_margin").width
|
|
||||||
height: parent.height
|
|
||||||
|
|
||||||
RowLayout
|
RowLayout
|
||||||
{
|
{
|
||||||
id: itemRow
|
id: itemRow
|
||||||
|
|
||||||
anchors.left: openFileButton.right
|
anchors.left: parent.left
|
||||||
anchors.right: parent.right
|
anchors.right: parent.right
|
||||||
anchors.leftMargin: UM.Theme.getSize("default_margin").width
|
anchors.leftMargin: UM.Theme.getSize("default_margin").width + openFileButton.width + openFileMenu.width
|
||||||
property int machineSelectorWidth: Math.round((width - printSetupSelectorItem.width) / 3)
|
property int machineSelectorWidth: Math.round((width - printSetupSelectorItem.width) / 3)
|
||||||
|
|
||||||
height: parent.height
|
height: parent.height
|
||||||
|
@ -52,9 +52,6 @@ Item
|
||||||
{
|
{
|
||||||
id: machineSelection
|
id: machineSelection
|
||||||
headerCornerSide: Cura.RoundedRectangle.Direction.Left
|
headerCornerSide: Cura.RoundedRectangle.Direction.Left
|
||||||
headerBackgroundBorder.width: UM.Theme.getSize("default_lining").width
|
|
||||||
headerBackgroundBorder.color: UM.Theme.getColor("lining")
|
|
||||||
enableHeaderShadow: false
|
|
||||||
Layout.preferredWidth: parent.machineSelectorWidth
|
Layout.preferredWidth: parent.machineSelectorWidth
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
Layout.fillHeight: true
|
Layout.fillHeight: true
|
||||||
|
@ -63,9 +60,6 @@ Item
|
||||||
Cura.ConfigurationMenu
|
Cura.ConfigurationMenu
|
||||||
{
|
{
|
||||||
id: printerSetup
|
id: printerSetup
|
||||||
enableHeaderShadow: false
|
|
||||||
headerBackgroundBorder.width: UM.Theme.getSize("default_lining").width
|
|
||||||
headerBackgroundBorder.color: UM.Theme.getColor("lining")
|
|
||||||
Layout.fillHeight: true
|
Layout.fillHeight: true
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
Layout.preferredWidth: parent.machineSelectorWidth * 2
|
Layout.preferredWidth: parent.machineSelectorWidth * 2
|
||||||
|
@ -82,22 +76,129 @@ Item
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Pop-up shown when there are multiple items to select from.
|
||||||
|
Cura.ExpandablePopup
|
||||||
|
{
|
||||||
|
id: openFileMenu
|
||||||
|
visible: prepareMenu.fileProviderModel.count > 1
|
||||||
|
|
||||||
|
contentAlignment: Cura.ExpandablePopup.ContentAlignment.AlignLeft
|
||||||
|
headerCornerSide: Cura.RoundedRectangle.Direction.All
|
||||||
|
headerPadding: Math.round((parent.height - UM.Theme.getSize("button_icon").height) / 2)
|
||||||
|
contentPadding: UM.Theme.getSize("default_lining").width
|
||||||
|
enabled: visible
|
||||||
|
|
||||||
|
height: parent.height
|
||||||
|
width: visible ? (headerPadding * 3 + UM.Theme.getSize("button_icon").height + iconSize) : 0
|
||||||
|
|
||||||
|
headerItem: UM.RecolorImage
|
||||||
|
{
|
||||||
|
id: menuIcon
|
||||||
|
source: UM.Theme.getIcon("Folder", "medium")
|
||||||
|
color: UM.Theme.getColor("icon")
|
||||||
|
|
||||||
|
sourceSize.height: height
|
||||||
|
}
|
||||||
|
|
||||||
|
contentItem: Item
|
||||||
|
{
|
||||||
|
id: popup
|
||||||
|
|
||||||
|
Column
|
||||||
|
{
|
||||||
|
id: openProviderColumn
|
||||||
|
|
||||||
|
//The column doesn't automatically listen to its children rect if the children change internally, so we need to explicitly update the size.
|
||||||
|
onChildrenRectChanged:
|
||||||
|
{
|
||||||
|
popup.height = childrenRect.height
|
||||||
|
popup.width = childrenRect.width
|
||||||
|
}
|
||||||
|
onPositioningComplete:
|
||||||
|
{
|
||||||
|
popup.height = childrenRect.height
|
||||||
|
popup.width = childrenRect.width
|
||||||
|
}
|
||||||
|
|
||||||
|
Label
|
||||||
|
{
|
||||||
|
text: catalog.i18nc("@menu:header", "Open file")
|
||||||
|
color: UM.Theme.getColor("text_medium")
|
||||||
|
font: UM.Theme.getFont("medium")
|
||||||
|
renderType: Text.NativeRendering
|
||||||
|
verticalAlignment: Text.AlignVCenter
|
||||||
|
|
||||||
|
width: contentWidth
|
||||||
|
height: UM.Theme.getSize("action_button").height
|
||||||
|
leftPadding: UM.Theme.getSize("default_margin").width
|
||||||
|
}
|
||||||
|
|
||||||
|
Repeater
|
||||||
|
{
|
||||||
|
model: prepareMenu.fileProviderModel
|
||||||
|
delegate: Button
|
||||||
|
{
|
||||||
|
leftPadding: UM.Theme.getSize("default_margin").width
|
||||||
|
rightPadding: UM.Theme.getSize("default_margin").width
|
||||||
|
width: contentItem.width + leftPadding + rightPadding
|
||||||
|
height: UM.Theme.getSize("action_button").height
|
||||||
|
hoverEnabled: true
|
||||||
|
|
||||||
|
contentItem: Label
|
||||||
|
{
|
||||||
|
text: model.displayText
|
||||||
|
color: UM.Theme.getColor("text")
|
||||||
|
font: UM.Theme.getFont("medium")
|
||||||
|
renderType: Text.NativeRendering
|
||||||
|
verticalAlignment: Text.AlignVCenter
|
||||||
|
|
||||||
|
width: contentWidth
|
||||||
|
height: parent.height
|
||||||
|
}
|
||||||
|
|
||||||
|
onClicked:
|
||||||
|
{
|
||||||
|
if(model.index == 0) //The 0th element is the "From Disk" option, which should activate the open local file dialog.
|
||||||
|
{
|
||||||
|
Cura.Actions.open.trigger();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
prepareMenu.fileProviderModel.trigger(model.name);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
background: Rectangle
|
||||||
|
{
|
||||||
|
color: parent.hovered ? UM.Theme.getColor("action_button_hovered") : "transparent"
|
||||||
|
radius: UM.Theme.getSize("action_button_radius").width
|
||||||
|
width: popup.width
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//If there is just a single item, show a button instead that directly chooses the one option.
|
||||||
Button
|
Button
|
||||||
{
|
{
|
||||||
id: openFileButton
|
id: openFileButton
|
||||||
height: UM.Theme.getSize("stage_menu").height
|
visible: prepareMenu.fileProviderModel.count <= 1
|
||||||
width: UM.Theme.getSize("stage_menu").height
|
|
||||||
|
height: parent.height
|
||||||
|
width: visible ? height : 0 //Square button (and don't take up space if invisible).
|
||||||
onClicked: Cura.Actions.open.trigger()
|
onClicked: Cura.Actions.open.trigger()
|
||||||
|
enabled: visible && prepareMenu.fileProviderModel.count > 0
|
||||||
hoverEnabled: true
|
hoverEnabled: true
|
||||||
|
|
||||||
contentItem: Item
|
contentItem: Item
|
||||||
{
|
{
|
||||||
anchors.fill: parent
|
|
||||||
UM.RecolorImage
|
UM.RecolorImage
|
||||||
{
|
{
|
||||||
id: buttonIcon
|
id: buttonIcon
|
||||||
|
source: UM.Theme.getIcon("Folder", "medium")
|
||||||
anchors.centerIn: parent
|
anchors.centerIn: parent
|
||||||
source: UM.Theme.getIcon("Folder")
|
|
||||||
width: UM.Theme.getSize("button_icon").width
|
width: UM.Theme.getSize("button_icon").width
|
||||||
height: UM.Theme.getSize("button_icon").height
|
height: UM.Theme.getSize("button_icon").height
|
||||||
color: UM.Theme.getColor("icon")
|
color: UM.Theme.getColor("icon")
|
||||||
|
@ -109,8 +210,8 @@ Item
|
||||||
background: Rectangle
|
background: Rectangle
|
||||||
{
|
{
|
||||||
id: background
|
id: background
|
||||||
height: UM.Theme.getSize("stage_menu").height
|
height: parent.height
|
||||||
width: UM.Theme.getSize("stage_menu").height
|
width: parent.width
|
||||||
border.color: UM.Theme.getColor("lining")
|
border.color: UM.Theme.getColor("lining")
|
||||||
border.width: UM.Theme.getSize("default_lining").width
|
border.width: UM.Theme.getSize("default_lining").width
|
||||||
|
|
||||||
|
|
|
@ -24,54 +24,36 @@ Item
|
||||||
{
|
{
|
||||||
left: parent.left
|
left: parent.left
|
||||||
right: parent.right
|
right: parent.right
|
||||||
leftMargin: UM.Theme.getSize("wide_margin").width
|
leftMargin: UM.Theme.getSize("wide_margin").width * 2
|
||||||
rightMargin: UM.Theme.getSize("wide_margin").width
|
rightMargin: UM.Theme.getSize("wide_margin").width * 2
|
||||||
}
|
}
|
||||||
|
|
||||||
Row
|
Row
|
||||||
{
|
{
|
||||||
id: stageMenuRow
|
id: stageMenuRow
|
||||||
|
|
||||||
anchors.horizontalCenter: parent.horizontalCenter
|
anchors.fill: parent
|
||||||
width: parent.width - 2 * UM.Theme.getSize("wide_margin").width
|
// This is a trick to make sure that the borders of the two adjacent buttons' borders overlap. Otherwise
|
||||||
height: parent.height
|
// there will be double border (one from each button)
|
||||||
|
spacing: -UM.Theme.getSize("default_lining").width
|
||||||
|
|
||||||
Cura.ViewsSelector
|
Cura.ViewsSelector
|
||||||
{
|
{
|
||||||
id: viewsSelector
|
id: viewsSelector
|
||||||
height: parent.height
|
height: parent.height
|
||||||
width: UM.Theme.getSize("views_selector").width
|
width: Math.max(Math.round((parent.width - printSetupSelectorItem.width) / 3), UM.Theme.getSize("views_selector").width)
|
||||||
headerCornerSide: Cura.RoundedRectangle.Direction.Left
|
headerCornerSide: Cura.RoundedRectangle.Direction.Left
|
||||||
}
|
}
|
||||||
|
|
||||||
// Separator line
|
|
||||||
Rectangle
|
|
||||||
{
|
|
||||||
height: parent.height
|
|
||||||
// If there is no viewPanel, we only need a single spacer, so hide this one.
|
|
||||||
visible: viewPanel.source != ""
|
|
||||||
width: visible ? UM.Theme.getSize("default_lining").width : 0
|
|
||||||
|
|
||||||
color: UM.Theme.getColor("lining")
|
|
||||||
}
|
|
||||||
|
|
||||||
// This component will grow freely up to complete the width of the row.
|
// This component will grow freely up to complete the width of the row.
|
||||||
Loader
|
Loader
|
||||||
{
|
{
|
||||||
id: viewPanel
|
id: viewPanel
|
||||||
height: parent.height
|
height: parent.height
|
||||||
width: source != "" ? (previewMenu.width - viewsSelector.width - printSetupSelectorItem.width - 2 * (UM.Theme.getSize("wide_margin").width + UM.Theme.getSize("default_lining").width)) : 0
|
width: source != "" ? (parent.width - viewsSelector.width - printSetupSelectorItem.width) : 0
|
||||||
source: UM.Controller.activeView != null && UM.Controller.activeView.stageMenuComponent != null ? UM.Controller.activeView.stageMenuComponent : ""
|
source: UM.Controller.activeView != null && UM.Controller.activeView.stageMenuComponent != null ? UM.Controller.activeView.stageMenuComponent : ""
|
||||||
}
|
}
|
||||||
|
|
||||||
// Separator line
|
|
||||||
Rectangle
|
|
||||||
{
|
|
||||||
height: parent.height
|
|
||||||
width: UM.Theme.getSize("default_lining").width
|
|
||||||
color: UM.Theme.getColor("lining")
|
|
||||||
}
|
|
||||||
|
|
||||||
Item
|
Item
|
||||||
{
|
{
|
||||||
id: printSetupSelectorItem
|
id: printSetupSelectorItem
|
||||||
|
|
|
@ -203,16 +203,16 @@ Cura.ExpandableComponent
|
||||||
|
|
||||||
style: UM.Theme.styles.checkbox
|
style: UM.Theme.styles.checkbox
|
||||||
|
|
||||||
|
Rectangle
|
||||||
UM.RecolorImage
|
|
||||||
{
|
{
|
||||||
id: swatch
|
id: swatch
|
||||||
anchors.verticalCenter: parent.verticalCenter
|
anchors.verticalCenter: parent.verticalCenter
|
||||||
anchors.right: extrudersModelCheckBox.right
|
anchors.right: extrudersModelCheckBox.right
|
||||||
width: UM.Theme.getSize("layerview_legend_size").width
|
width: UM.Theme.getSize("layerview_legend_size").width
|
||||||
height: UM.Theme.getSize("layerview_legend_size").height
|
height: UM.Theme.getSize("layerview_legend_size").height
|
||||||
source: UM.Theme.getIcon("Extruder", "medium")
|
|
||||||
color: model.color
|
color: model.color
|
||||||
|
border.width: UM.Theme.getSize("default_lining").width
|
||||||
|
border.color: UM.Theme.getColor("lining")
|
||||||
}
|
}
|
||||||
|
|
||||||
Label
|
Label
|
||||||
|
|
|
@ -1,23 +1,26 @@
|
||||||
// Copyright (c) 2019 Ultimaker B.V.
|
// Copyright (c) 2021 Ultimaker B.V.
|
||||||
// Cura is released under the terms of the LGPLv3 or higher.
|
// Cura is released under the terms of the LGPLv3 or higher.
|
||||||
|
|
||||||
import QtQuick 2.3
|
import QtQuick 2.3
|
||||||
import QtQuick.Controls 1.4
|
import QtQuick.Controls 2.4
|
||||||
import QtQuick.Controls.Styles 1.3
|
import QtQuick.Controls.Styles 1.3
|
||||||
import UM 1.3 as UM
|
import UM 1.3 as UM
|
||||||
import Cura 1.0 as Cura
|
import Cura 1.0 as Cura
|
||||||
|
|
||||||
Rectangle
|
Button
|
||||||
{
|
{
|
||||||
id: base
|
|
||||||
|
|
||||||
property var enabled: true
|
|
||||||
|
|
||||||
property var iconSource: null
|
property var iconSource: null
|
||||||
color: enabled ? UM.Theme.getColor("monitor_icon_primary") : UM.Theme.getColor("monitor_icon_disabled")
|
width: UM.Theme.getSize("button").width * 0.75 //Matching the size of the content of tool buttons.
|
||||||
height: width
|
height: UM.Theme.getSize("button").height * 0.75
|
||||||
radius: Math.round(0.5 * width)
|
|
||||||
width: 24 * screenScaleFactor
|
hoverEnabled: true
|
||||||
|
|
||||||
|
background: Rectangle
|
||||||
|
{
|
||||||
|
anchors.fill: parent
|
||||||
|
radius: 0.5 * width
|
||||||
|
color: parent.enabled ? (parent.hovered ? UM.Theme.getColor("monitor_secondary_button_hover") : "transparent") : UM.Theme.getColor("monitor_icon_disabled")
|
||||||
|
}
|
||||||
|
|
||||||
UM.RecolorImage
|
UM.RecolorImage
|
||||||
{
|
{
|
||||||
|
@ -27,30 +30,21 @@ Rectangle
|
||||||
horizontalCenter: parent.horizontalCenter
|
horizontalCenter: parent.horizontalCenter
|
||||||
verticalCenter: parent.verticalCenter
|
verticalCenter: parent.verticalCenter
|
||||||
}
|
}
|
||||||
color: UM.Theme.getColor("monitor_icon_accent")
|
color: UM.Theme.getColor("primary")
|
||||||
height: width
|
height: width
|
||||||
source: iconSource
|
source: iconSource
|
||||||
width: Math.round(parent.width / 2)
|
width: Math.round(parent.width / 2)
|
||||||
}
|
}
|
||||||
|
|
||||||
MouseArea
|
onClicked:
|
||||||
{
|
{
|
||||||
id: clickArea
|
if (OutputDevice.activeCameraUrl != "")
|
||||||
anchors.fill: parent
|
|
||||||
hoverEnabled: base.enabled
|
|
||||||
onClicked:
|
|
||||||
{
|
{
|
||||||
if (base.enabled)
|
OutputDevice.setActiveCameraUrl("")
|
||||||
{
|
}
|
||||||
if (OutputDevice.activeCameraUrl != "")
|
else
|
||||||
{
|
{
|
||||||
OutputDevice.setActiveCameraUrl("")
|
OutputDevice.setActiveCameraUrl(modelData.cameraUrl)
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
OutputDevice.setActiveCameraUrl(modelData.cameraUrl)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -50,7 +50,7 @@ Item
|
||||||
id: buildplateIcon
|
id: buildplateIcon
|
||||||
anchors.centerIn: parent
|
anchors.centerIn: parent
|
||||||
color: UM.Theme.getColor("monitor_icon_primary")
|
color: UM.Theme.getColor("monitor_icon_primary")
|
||||||
height: parent.height
|
height: UM.Theme.getSize("medium_button_icon").width
|
||||||
source: "../svg/icons/Buildplate.svg"
|
source: "../svg/icons/Buildplate.svg"
|
||||||
width: height
|
width: height
|
||||||
visible: buildplate
|
visible: buildplate
|
||||||
|
|
|
@ -5,6 +5,8 @@ import QtQuick 2.2
|
||||||
import QtQuick.Controls 2.0
|
import QtQuick.Controls 2.0
|
||||||
import UM 1.3 as UM
|
import UM 1.3 as UM
|
||||||
|
|
||||||
|
import Cura 1.6 as Cura
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This component comprises a colored extruder icon, the material name, and the
|
* This component comprises a colored extruder icon, the material name, and the
|
||||||
* print core name. It is used by the MonitorPrinterConfiguration component with
|
* print core name. It is used by the MonitorPrinterConfiguration component with
|
||||||
|
@ -18,10 +20,10 @@ import UM 1.3 as UM
|
||||||
Item
|
Item
|
||||||
{
|
{
|
||||||
// The material color
|
// The material color
|
||||||
property alias color: extruderIcon.color
|
property alias color: extruderIcon.materialColor
|
||||||
|
|
||||||
// The extruder position; NOTE: Decent human beings count from 0
|
// The extruder position
|
||||||
property alias position: extruderIcon.position
|
property int position
|
||||||
|
|
||||||
// The material name
|
// The material name
|
||||||
property alias material: materialLabel.text
|
property alias material: materialLabel.text
|
||||||
|
@ -32,12 +34,13 @@ Item
|
||||||
// Height is 2 x 18px labels, plus 4px spacing between them
|
// Height is 2 x 18px labels, plus 4px spacing between them
|
||||||
height: 40 * screenScaleFactor // TODO: Theme!
|
height: 40 * screenScaleFactor // TODO: Theme!
|
||||||
width: childrenRect.width
|
width: childrenRect.width
|
||||||
|
opacity: material != "" && material != "Empty" && position >= 0 ? 1 : 0.4
|
||||||
|
|
||||||
MonitorIconExtruder
|
Cura.ExtruderIcon
|
||||||
{
|
{
|
||||||
id: extruderIcon
|
id: extruderIcon
|
||||||
color: UM.Theme.getColor("monitor_skeleton_loading")
|
materialColor: UM.Theme.getColor("monitor_skeleton_loading")
|
||||||
position: 0
|
anchors.verticalCenter: parent.verticalCenter
|
||||||
}
|
}
|
||||||
|
|
||||||
Rectangle
|
Rectangle
|
||||||
|
@ -46,16 +49,18 @@ Item
|
||||||
anchors
|
anchors
|
||||||
{
|
{
|
||||||
left: extruderIcon.right
|
left: extruderIcon.right
|
||||||
leftMargin: 12 * screenScaleFactor // TODO: Theme!
|
leftMargin: UM.Theme.getSize("default_margin").width
|
||||||
|
verticalCenter: extruderIcon.verticalCenter
|
||||||
}
|
}
|
||||||
color: materialLabel.visible > 0 ? "transparent" : UM.Theme.getColor("monitor_skeleton_loading")
|
color: materialLabel.visible > 0 ? "transparent" : UM.Theme.getColor("monitor_skeleton_loading")
|
||||||
height: 18 * screenScaleFactor // TODO: Theme!
|
height: childrenRect.height
|
||||||
width: Math.max(materialLabel.contentWidth, 60 * screenScaleFactor) // TODO: Theme!
|
width: Math.max(materialLabel.contentWidth, 60 * screenScaleFactor) // TODO: Theme!
|
||||||
radius: 2 * screenScaleFactor // TODO: Theme!
|
radius: 2 * screenScaleFactor // TODO: Theme!
|
||||||
|
|
||||||
Label
|
Label
|
||||||
{
|
{
|
||||||
id: materialLabel
|
id: materialLabel
|
||||||
|
anchors.top: parent.top
|
||||||
|
|
||||||
color: UM.Theme.getColor("text")
|
color: UM.Theme.getColor("text")
|
||||||
elide: Text.ElideRight
|
elide: Text.ElideRight
|
||||||
|
@ -63,29 +68,13 @@ Item
|
||||||
text: ""
|
text: ""
|
||||||
visible: text !== ""
|
visible: text !== ""
|
||||||
|
|
||||||
// FIXED-LINE-HEIGHT:
|
|
||||||
height: parent.height
|
|
||||||
verticalAlignment: Text.AlignVCenter
|
|
||||||
renderType: Text.NativeRendering
|
renderType: Text.NativeRendering
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
Rectangle
|
|
||||||
{
|
|
||||||
id: printCoreLabelWrapper
|
|
||||||
anchors
|
|
||||||
{
|
|
||||||
left: materialLabelWrapper.left
|
|
||||||
bottom: parent.bottom
|
|
||||||
}
|
|
||||||
color: printCoreLabel.visible > 0 ? "transparent" : UM.Theme.getColor("monitor_skeleton_loading")
|
|
||||||
height: 18 * screenScaleFactor // TODO: Theme!
|
|
||||||
width: Math.max(printCoreLabel.contentWidth, 36 * screenScaleFactor) // TODO: Theme!
|
|
||||||
radius: 2 * screenScaleFactor // TODO: Theme!
|
|
||||||
|
|
||||||
Label
|
Label
|
||||||
{
|
{
|
||||||
id: printCoreLabel
|
id: printCoreLabel
|
||||||
|
anchors.top: materialLabel.bottom
|
||||||
|
|
||||||
color: UM.Theme.getColor("text")
|
color: UM.Theme.getColor("text")
|
||||||
elide: Text.ElideRight
|
elide: Text.ElideRight
|
||||||
|
@ -93,9 +82,6 @@ Item
|
||||||
text: ""
|
text: ""
|
||||||
visible: text !== ""
|
visible: text !== ""
|
||||||
|
|
||||||
// FIXED-LINE-HEIGHT:
|
|
||||||
height: parent.height
|
|
||||||
verticalAlignment: Text.AlignVCenter
|
|
||||||
renderType: Text.NativeRendering
|
renderType: Text.NativeRendering
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -38,6 +38,7 @@ Item
|
||||||
Label
|
Label
|
||||||
{
|
{
|
||||||
id: positionLabel
|
id: positionLabel
|
||||||
|
anchors.centerIn: icon
|
||||||
font: UM.Theme.getFont("small")
|
font: UM.Theme.getFont("small")
|
||||||
color: UM.Theme.getColor("text")
|
color: UM.Theme.getColor("text")
|
||||||
height: Math.round(size / 2)
|
height: Math.round(size / 2)
|
||||||
|
@ -45,8 +46,6 @@ Item
|
||||||
text: position + 1
|
text: position + 1
|
||||||
verticalAlignment: Text.AlignVCenter
|
verticalAlignment: Text.AlignVCenter
|
||||||
width: Math.round(size / 2)
|
width: Math.round(size / 2)
|
||||||
x: Math.round(size * 0.25)
|
|
||||||
y: Math.round(size * 0.15625)
|
|
||||||
visible: position >= 0
|
visible: position >= 0
|
||||||
renderType: Text.NativeRendering
|
renderType: Text.NativeRendering
|
||||||
}
|
}
|
||||||
|
|
|
@ -256,7 +256,16 @@ class CloudOutputDevice(UltimakerNetworkedPrinterOutputDevice):
|
||||||
"""
|
"""
|
||||||
self._uploaded_print_job = self._pre_upload_print_job
|
self._uploaded_print_job = self._pre_upload_print_job
|
||||||
self._progress.hide()
|
self._progress.hide()
|
||||||
PrintJobUploadSuccessMessage().show()
|
message = PrintJobUploadSuccessMessage()
|
||||||
|
message.addAction("monitor print",
|
||||||
|
name=I18N_CATALOG.i18nc("@action:button", "Monitor print"),
|
||||||
|
icon="",
|
||||||
|
description=I18N_CATALOG.i18nc("@action:tooltip", "Track the print in Ultimaker Digital Factory"),
|
||||||
|
button_align=message.ActionButtonAlignment.ALIGN_RIGHT)
|
||||||
|
df_url = f"https://digitalfactory.ultimaker.com/app/jobs/{self._cluster.cluster_id}?utm_source=cura&utm_medium=software&utm_campaign=monitor-button"
|
||||||
|
message.pyQtActionTriggered.connect(lambda message, action: (QDesktopServices.openUrl(QUrl(df_url)), message.hide()))
|
||||||
|
|
||||||
|
message.show()
|
||||||
self.writeFinished.emit()
|
self.writeFinished.emit()
|
||||||
|
|
||||||
def _onPrintUploadSpecificError(self, reply: "QNetworkReply", _: "QNetworkReply.NetworkError"):
|
def _onPrintUploadSpecificError(self, reply: "QNetworkReply", _: "QNetworkReply.NetworkError"):
|
||||||
|
|
|
@ -13,6 +13,5 @@ class PrintJobUploadSuccessMessage(Message):
|
||||||
def __init__(self) -> None:
|
def __init__(self) -> None:
|
||||||
super().__init__(
|
super().__init__(
|
||||||
text = I18N_CATALOG.i18nc("@info:status", "Print job was successfully sent to the printer."),
|
text = I18N_CATALOG.i18nc("@info:status", "Print job was successfully sent to the printer."),
|
||||||
title = I18N_CATALOG.i18nc("@info:title", "Data Sent"),
|
title = I18N_CATALOG.i18nc("@info:title", "Data Sent")
|
||||||
lifetime = 5
|
|
||||||
)
|
)
|
||||||
|
|
35
resources/definitions/atom2.def.json
Normal file
35
resources/definitions/atom2.def.json
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
{
|
||||||
|
"name": "Atom 2",
|
||||||
|
"version": 2,
|
||||||
|
"inherits": "fdmprinter",
|
||||||
|
"metadata": {
|
||||||
|
"visible": true,
|
||||||
|
"author": "Victor (Yu Chieh) Lin",
|
||||||
|
"manufacturer": "Layer One",
|
||||||
|
"file_formats": "text/x-gcode",
|
||||||
|
"platform_offset": [0,0,0],
|
||||||
|
"machine_extruder_trains": { "0": "atom2_extruder_0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
"overrides": {
|
||||||
|
"machine_name": { "default_value": "Atom 2" },
|
||||||
|
"machine_shape": { "default_value": "elliptic" },
|
||||||
|
"machine_width": { "default_value": 210 },
|
||||||
|
"machine_depth": { "default_value": 210 },
|
||||||
|
"machine_height": { "default_value": 320 },
|
||||||
|
"machine_extruder_count": { "default_value": 1 },
|
||||||
|
"machine_heated_bed": { "default_value": false },
|
||||||
|
"machine_center_is_zero": { "default_value": true },
|
||||||
|
|
||||||
|
"machine_start_gcode": { "default_value": "G21\nG90 \nM107\nG28\nG92 E0\nG1 F200 E3\nG92 E0" },
|
||||||
|
"machine_end_gcode": { "default_value": "M104 S0\nG28\nG91\nG1 E-6 F300\nM84\nG90" },
|
||||||
|
|
||||||
|
"layer_height": { "default_value": 0.2 },
|
||||||
|
"default_material_print_temperature": { "default_value": 210 },
|
||||||
|
"speed_print": { "default_value": 32 },
|
||||||
|
"optimize_wall_printing_order": { "value": "True" },
|
||||||
|
"infill_sparse_density": { "default_value": 10 },
|
||||||
|
"brim_width": { "default_value": 4 }
|
||||||
|
}
|
||||||
|
}
|
32
resources/definitions/creasee_cs20.def.json
Normal file
32
resources/definitions/creasee_cs20.def.json
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
{
|
||||||
|
"version": 2,
|
||||||
|
"name": "Creasee CS20",
|
||||||
|
"inherits": "fdmprinter",
|
||||||
|
"metadata": {
|
||||||
|
"visible": true,
|
||||||
|
"manufacturer": "Creasee",
|
||||||
|
"machine_extruder_trains":
|
||||||
|
{
|
||||||
|
"0": "creasee_extruder_0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
"overrides": {
|
||||||
|
"machine_name": { "default_value": "Creasee CS20" },
|
||||||
|
"machine_width": {
|
||||||
|
"default_value": 220
|
||||||
|
},
|
||||||
|
"machine_depth": {
|
||||||
|
"default_value": 220
|
||||||
|
},
|
||||||
|
"machine_height": {
|
||||||
|
"default_value": 250
|
||||||
|
},
|
||||||
|
"machine_start_gcode": {
|
||||||
|
"default_value": "G28 ;Home\nG1 Z15.0 F2000 ;Move the platform"
|
||||||
|
},
|
||||||
|
"machine_end_gcode": {
|
||||||
|
"default_value": "M104 S0\nM140 S0\nG92 E0\nG1 E-10 F2000\nG28 X0 Y0\nM84"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
32
resources/definitions/creasee_cs30.def.json
Normal file
32
resources/definitions/creasee_cs30.def.json
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
{
|
||||||
|
"version": 2,
|
||||||
|
"name": "Creasee CS30",
|
||||||
|
"inherits": "fdmprinter",
|
||||||
|
"metadata": {
|
||||||
|
"visible": true,
|
||||||
|
"manufacturer": "Creasee",
|
||||||
|
"machine_extruder_trains":
|
||||||
|
{
|
||||||
|
"0": "creasee_extruder_1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
"overrides": {
|
||||||
|
"machine_name": { "default_value": "Creasee CS30" },
|
||||||
|
"machine_width": {
|
||||||
|
"default_value": 300
|
||||||
|
},
|
||||||
|
"machine_depth": {
|
||||||
|
"default_value": 300
|
||||||
|
},
|
||||||
|
"machine_height": {
|
||||||
|
"default_value": 400
|
||||||
|
},
|
||||||
|
"machine_start_gcode": {
|
||||||
|
"default_value": "G28 ;Home\nG1 Z15.0 F2000 ;Move the platform"
|
||||||
|
},
|
||||||
|
"machine_end_gcode": {
|
||||||
|
"default_value": "M104 S0\nM140 S0\nG92 E0\nG1 E-10 F2000\nG28 X0 Y0\nM84"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -73,6 +73,7 @@
|
||||||
"machine_steps_per_mm_x": { "default_value": 80 },
|
"machine_steps_per_mm_x": { "default_value": 80 },
|
||||||
"machine_steps_per_mm_y": { "default_value": 80 },
|
"machine_steps_per_mm_y": { "default_value": 80 },
|
||||||
"machine_steps_per_mm_z": { "default_value": 2560 },
|
"machine_steps_per_mm_z": { "default_value": 2560 },
|
||||||
"machine_steps_per_mm_e": { "default_value": 98 }
|
"machine_steps_per_mm_e": { "default_value": 98 },
|
||||||
|
"speed_z_hop": {"default_value": 4}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
"inherits": "fdmprinter",
|
"inherits": "fdmprinter",
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"author": "William & Cataldo URSO",
|
"author": "William & Cataldo URSO",
|
||||||
"manufacturer": "Shenzhen Geeetech Technology",
|
"manufacturer": "Geeetech",
|
||||||
"file_formats": "text/x-gcode",
|
"file_formats": "text/x-gcode",
|
||||||
"visible": true,
|
"visible": true,
|
||||||
"has_materials": true,
|
"has_materials": true,
|
||||||
|
|
|
@ -92,7 +92,6 @@
|
||||||
"speed_travel": {"value": 150},
|
"speed_travel": {"value": 150},
|
||||||
"speed_layer_0": {"value": 10},
|
"speed_layer_0": {"value": 10},
|
||||||
"speed_travel_layer_0": {"value": 50},
|
"speed_travel_layer_0": {"value": 50},
|
||||||
"machine_max_feedrate_z": {"value": 0},
|
|
||||||
"speed_slowdown_layers": {"value": 2},
|
"speed_slowdown_layers": {"value": 2},
|
||||||
"speed_equalize_flow_enabled": {"value": false },
|
"speed_equalize_flow_enabled": {"value": false },
|
||||||
"acceleration_enabled": {"value": false },
|
"acceleration_enabled": {"value": false },
|
||||||
|
|
|
@ -80,6 +80,7 @@
|
||||||
"retraction_amount" : { "default_value": 4.5},
|
"retraction_amount" : { "default_value": 4.5},
|
||||||
"retraction_speed" : { "default_value": 40},
|
"retraction_speed" : { "default_value": 40},
|
||||||
"coasting_enable": { "default_value": true },
|
"coasting_enable": { "default_value": true },
|
||||||
"prime_tower_enable": { "default_value": false}
|
"prime_tower_enable": { "default_value": false},
|
||||||
|
"speed_z_hop": {"default_value": 1.5}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
45
resources/definitions/pbr3d_g1.def.json
Normal file
45
resources/definitions/pbr3d_g1.def.json
Normal file
|
@ -0,0 +1,45 @@
|
||||||
|
{
|
||||||
|
"version": 2,
|
||||||
|
"name": "PBR 3D Gen-I",
|
||||||
|
"inherits": "fdmprinter",
|
||||||
|
"metadata": {
|
||||||
|
"visible": true,
|
||||||
|
"author": "Kapil H. Sonone, Prof. Bahubali P. Fuladi",
|
||||||
|
"manufacturer": "PBR Research",
|
||||||
|
"file_formats": "text/x-gcode",
|
||||||
|
"platform": "pbr3d_g1_buildplate.stl",
|
||||||
|
"platform_offset": [0, -5, 0],
|
||||||
|
"machine_extruder_trains":
|
||||||
|
{
|
||||||
|
"0": "pbr3d_g1_extruder_0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
"overrides": {
|
||||||
|
"machine_name": { "default_value": "PBR 3D Gen-I" },
|
||||||
|
"machine_heated_bed": {
|
||||||
|
"default_value": true
|
||||||
|
},
|
||||||
|
"machine_width": {
|
||||||
|
"default_value": 200
|
||||||
|
},
|
||||||
|
"machine_height": {
|
||||||
|
"default_value": 200
|
||||||
|
},
|
||||||
|
"machine_depth": {
|
||||||
|
"default_value": 200
|
||||||
|
},
|
||||||
|
"machine_center_is_zero": {
|
||||||
|
"default_value": false
|
||||||
|
},
|
||||||
|
"gantry_height": {
|
||||||
|
"value": "200"
|
||||||
|
},
|
||||||
|
"machine_start_gcode": {
|
||||||
|
"default_value": "G28 ;Home\nG1 Z15.0 F6000 ;Move the Platform down 15mm\n;Prime the extruder\nG92 E0\nG1 F200 E3\nG92 E0"
|
||||||
|
},
|
||||||
|
"machine_end_gcode": {
|
||||||
|
"default_value": "M104 S0\nM140 S0\n;Retract the Filament\nG92 E1\nG1 E-1 F300\nG28 X0 Y0\nM84"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -45,6 +45,7 @@
|
||||||
},
|
},
|
||||||
"machine_end_gcode": {
|
"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\nG1 Z+0.5 E-5 X-20 Y-20 F9000 ;move Z up a bit and retract filament even more\nG28 X0 Y0 ;move X/Y to min endstops, so the head is out of the way\nM84 ;steppers off\nG90 ;absolute positioning"
|
"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\nG1 Z+0.5 E-5 X-20 Y-20 F9000 ;move Z up a bit and retract filament even more\nG28 X0 Y0 ;move X/Y to min endstops, so the head is out of the way\nM84 ;steppers off\nG90 ;absolute positioning"
|
||||||
}
|
},
|
||||||
|
"speed_z_hop": {"default_value": 5}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -143,7 +143,8 @@
|
||||||
"adaptive_layer_height_variation_step": { "value": 0.04 },
|
"adaptive_layer_height_variation_step": { "value": 0.04 },
|
||||||
|
|
||||||
"top_bottom_thickness": {"value": "layer_height_0 + layer_height * 3" },
|
"top_bottom_thickness": {"value": "layer_height_0 + layer_height * 3" },
|
||||||
"wall_thickness": {"value": "line_width * 2" }
|
"wall_thickness": {"value": "line_width * 2" },
|
||||||
|
"speed_z_hop": {"default_value": 8}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -15,14 +15,14 @@
|
||||||
"preferred_material": "emotiontech_pla",
|
"preferred_material": "emotiontech_pla",
|
||||||
"preferred_quality_type": "c",
|
"preferred_quality_type": "c",
|
||||||
"variants_name": "Print Head",
|
"variants_name": "Print Head",
|
||||||
"machine_extruder_trains":
|
"machine_extruder_trains":
|
||||||
{
|
{
|
||||||
"0": "strateo3d_right_extruder",
|
"0": "strateo3d_right_extruder",
|
||||||
"1": "strateo3d_left_extruder"
|
"1": "strateo3d_left_extruder"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
"overrides":
|
"overrides":
|
||||||
{
|
{
|
||||||
"machine_name": { "default_value": "Strateo3D" },
|
"machine_name": { "default_value": "Strateo3D" },
|
||||||
"machine_width": { "default_value": 600 },
|
"machine_width": { "default_value": 600 },
|
||||||
|
@ -35,28 +35,43 @@
|
||||||
"gantry_height": { "value": "40" },
|
"gantry_height": { "value": "40" },
|
||||||
"machine_extruder_count": { "default_value": 2 },
|
"machine_extruder_count": { "default_value": 2 },
|
||||||
"machine_gcode_flavor": { "default_value": "Marlin" },
|
"machine_gcode_flavor": { "default_value": "Marlin" },
|
||||||
"machine_start_gcode": { "default_value": "G28 \nG90 G1 X300 Y210 Z15 F6000 \nG92 E0" },
|
"machine_start_gcode": { "default_value": ";M104 T0 S{material_standby_temperature, 0} \n;M104 T1 S{material_standby_temperature, 1} \n;M140 S{material_bed_temperature_layer_0} \n;M141 S{build_volume_temperature} \nG28 \nG90 \nT{initial_extruder_nr} \nG1 X0 Y0 Z15 F6000 \n;M190 S{material_bed_temperature_layer_0} \n;M109 S{material_print_temperature_layer_0, initial_extruder_nr} \nG1 Z0.3 \nG92 E0 \nG1 F300 X45 E18 \n;G1 F1500 E17 \nG1 F600 X25 \nG1 F600 Z3" },
|
||||||
"machine_end_gcode": { "default_value": "T1 \nM104 S0 \nT0 \nM104 S0 \nM140 S0 \nM141 S0 \nG91 \nG0 z1 \nG90 \nG28 \nM801.0 \nM84 \nM192" },
|
"machine_end_gcode": { "default_value": "T1 \nM104 S0 \nT0 \nM104 S0 \nM140 S0 \nM141 S0 \nG91 \nG0 z1 \nG90 \nG28 \nM801.0 \nM84 \nM192" },
|
||||||
"extruder_prime_pos_y": {"minimum_value": "0", "maximum_value": "machine_depth"},
|
"extruder_prime_pos_y": {"minimum_value": "0", "maximum_value": "machine_depth"},
|
||||||
"extruder_prime_pos_x": {"minimum_value": "0", "maximum_value": "machine_width"},
|
"extruder_prime_pos_x": {"minimum_value": "0", "maximum_value": "machine_width"},
|
||||||
"machine_heat_zone_length": { "default_value": 7 },
|
"machine_heat_zone_length": { "default_value": 7 },
|
||||||
"default_material_print_temperature": { "maximum_value_warning": "350" },
|
"default_material_print_temperature": { "maximum_value_warning": "400", "maximum_value": "415" },
|
||||||
"material_print_temperature": { "maximum_value_warning": "350" },
|
"material_print_temperature": { "maximum_value_warning": "400", "maximum_value": "415" },
|
||||||
"material_print_temperature_layer_0": { "maximum_value_warning": "350" },
|
"material_print_temperature_layer_0": { "maximum_value_warning": "400", "maximum_value": "415" },
|
||||||
"material_bed_temperature": { "maximum_value": "130" },
|
"material_initial_print_temperature": { "maximum_value_warning": "400", "maximum_value": "415" },
|
||||||
"material_bed_temperature_layer_0": { "maximum_value": "130" },
|
"material_final_print_temperature": { "maximum_value_warning": "400", "maximum_value": "415" },
|
||||||
|
"material_standby_temperature": { "maximum_value_warning": "material_print_temperature - 40", "maximum_value": "material_print_temperature" },
|
||||||
|
"material_bed_temperature": { "maximum_value_warning": "140", "maximum_value": "140" },
|
||||||
|
"material_bed_temperature_layer_0": { "maximum_value_warning": "140", "maximum_value": "140" },
|
||||||
"extruder_prime_pos_abs": { "default_value": true },
|
"extruder_prime_pos_abs": { "default_value": true },
|
||||||
"machine_acceleration": { "default_value": 1500 },
|
"machine_acceleration": { "default_value": 1500 },
|
||||||
|
"machine_max_jerk_xy": { "default_value": 0.01 },
|
||||||
|
"machine_max_jerk_z": { "default_value": 0},
|
||||||
|
|
||||||
"acceleration_enabled": { "value": false },
|
"acceleration_enabled": { "value": false },
|
||||||
"acceleration_print": { "value": "machine_acceleration" },
|
"acceleration_print": { "value": "machine_acceleration", "maximum_value_warning": "1500" },
|
||||||
"acceleration_wall": { "value": "math.ceil(acceleration_print * 1250 / acceleration_print)" },
|
"acceleration_infill": { "maximum_value_warning": "1500" },
|
||||||
"acceleration_wall_0": { "value": "math.ceil(acceleration_print * 1000 / acceleration_print)" },
|
"acceleration_wall": { "value": "math.ceil(acceleration_print * 1250 / acceleration_print)", "maximum_value_warning": "1500" },
|
||||||
"acceleration_topbottom": { "value": "math.ceil(acceleration_print * 1250 / acceleration_print)" },
|
"acceleration_wall_0": { "value": "math.ceil(acceleration_print * 1000 / acceleration_print)", "maximum_value_warning": "1500" },
|
||||||
"acceleration_support": { "value": "acceleration_print" },
|
"acceleration_wall_x": { "maximum_value_warning": "1500" },
|
||||||
"acceleration_support_interface": { "value": "acceleration_topbottom" },
|
"acceleration_topbottom": { "value": "math.ceil(acceleration_print * 1250 / acceleration_print)", "maximum_value_warning": "1500" },
|
||||||
"acceleration_travel": { "value": "acceleration_print" },
|
"acceleration_support": { "value": "acceleration_print", "maximum_value_warning": "1500" },
|
||||||
"acceleration_layer_0": { "value": "acceleration_topbottom" },
|
"acceleration_support_infill": { "maximum_value_warning": "1500" },
|
||||||
|
"acceleration_support_interface": { "value": "acceleration_topbottom", "maximum_value_warning": "1500" },
|
||||||
|
"acceleration_support_roof": { "maximum_value_warning": "1500" },
|
||||||
|
"acceleration_support_bottom": { "maximum_value_warning": "1500" },
|
||||||
|
"acceleration_prime_tower": { "maximum_value_warning": "1500" },
|
||||||
|
"acceleration_travel": { "value": "acceleration_print", "maximum_value_warning": "1500" },
|
||||||
|
"acceleration_layer_0": { "value": "acceleration_topbottom", "maximum_value_warning": "1500" },
|
||||||
|
"acceleration_print_layer_0": { "maximum_value_warning": "1500" },
|
||||||
|
"acceleration_travel_layer_0": { "maximum_value_warning": "1500" },
|
||||||
|
"acceleration_skirt_brim": { "maximum_value_warning": "1500" },
|
||||||
|
|
||||||
"adaptive_layer_height_variation": { "default_value": 0.1 },
|
"adaptive_layer_height_variation": { "default_value": 0.1 },
|
||||||
"adaptive_layer_height_variation_step": { "default_value": 0.05 },
|
"adaptive_layer_height_variation_step": { "default_value": 0.05 },
|
||||||
"adhesion_type": { "default_value": "skirt" },
|
"adhesion_type": { "default_value": "skirt" },
|
||||||
|
@ -66,30 +81,39 @@
|
||||||
"infill_before_walls": { "default_value": false },
|
"infill_before_walls": { "default_value": false },
|
||||||
"infill_overlap": { "value": "0" },
|
"infill_overlap": { "value": "0" },
|
||||||
"infill_wipe_dist": { "value": "0" },
|
"infill_wipe_dist": { "value": "0" },
|
||||||
"jerk_enabled": { "value": "False" },
|
|
||||||
"jerk_layer_0": { "value": "jerk_topbottom" },
|
"jerk_enabled": { "value": "False", "maximum_value_warning": "0.01" },
|
||||||
"jerk_prime_tower": { "value": "math.ceil(jerk_print * 15 / 25)" },
|
"jerk_print": { "value": "0.01", "maximum_value_warning": "0.01" },
|
||||||
"jerk_print": { "value": "25" },
|
"jerk_infill": { "value": "0.01", "maximum_value_warning": "0.01" },
|
||||||
"jerk_support": { "value": "math.ceil(jerk_print * 15 / 25)" },
|
"jerk_layer_0": { "value": "jerk_topbottom", "maximum_value_warning": "0.01" },
|
||||||
"jerk_support_interface": { "value": "jerk_topbottom" },
|
"jerk_print_layer_0": { "maximum_value_warning": "0.01" },
|
||||||
"jerk_topbottom": { "value": "math.ceil(jerk_print * 5 / 25)" },
|
"jerk_travel_layer_0": { "maximum_value_warning": "0.01" },
|
||||||
"jerk_wall": { "value": "math.ceil(jerk_print * 10 / 25)" },
|
"jerk_skirt_brim": { "maximum_value_warning": "0.01" },
|
||||||
"jerk_wall_0": { "value": "math.ceil(jerk_wall * 5 / 10)" },
|
"jerk_prime_tower": { "value": "jerk_print * 15 / 25", "maximum_value_warning": "0.01" },
|
||||||
|
"jerk_support": { "value": "jerk_print * 15 / 25", "maximum_value_warning": "0.01" },
|
||||||
|
"jerk_support_infill": { "maximum_value_warning": "0.01" },
|
||||||
|
"jerk_support_interface": { "value": "jerk_topbottom", "maximum_value_warning": "0.01" },
|
||||||
|
"jerk_support_roof": { "maximum_value_warning": "0.01" },
|
||||||
|
"jerk_support_bottom": { "maximum_value_warning": "0.01" },
|
||||||
|
"jerk_topbottom": { "value": "jerk_print * 5 / 25", "maximum_value_warning": "0.01" },
|
||||||
|
"jerk_wall": { "value": "jerk_print * 5 / 25", "maximum_value_warning": "0.01" },
|
||||||
|
"jerk_wall_0": { "value": "jerk_wall * 5 / 10", "maximum_value_warning": "0.01" },
|
||||||
|
"jerk_wall_x": { "maximum_value_warning": "0.01" },
|
||||||
|
"jerk_travel": { "value": "machine_max_jerk_xy", "maximum_value_warning": "0.01" },
|
||||||
|
|
||||||
"layer_start_x": { "value": "sum(extruderValues('machine_extruder_start_pos_x')) / len(extruderValues('machine_extruder_start_pos_x'))" },
|
"layer_start_x": { "value": "sum(extruderValues('machine_extruder_start_pos_x')) / len(extruderValues('machine_extruder_start_pos_x'))" },
|
||||||
"layer_start_y": { "value": "sum(extruderValues('machine_extruder_start_pos_y')) / len(extruderValues('machine_extruder_start_pos_y'))" },
|
"layer_start_y": { "value": "sum(extruderValues('machine_extruder_start_pos_y')) / len(extruderValues('machine_extruder_start_pos_y'))" },
|
||||||
"machine_min_cool_heat_time_window": { "value": "15" },
|
"machine_min_cool_heat_time_window": { "value": "15" },
|
||||||
"machine_nozzle_cool_down_speed": { "default_value": 0.50 },
|
"machine_nozzle_cool_down_speed": { "default_value": 0.50 },
|
||||||
"machine_nozzle_heat_up_speed": { "default_value": 2.25 },
|
"machine_nozzle_heat_up_speed": { "default_value": 2.25 },
|
||||||
"material_final_print_temperature": { "value": "material_print_temperature - 10" },
|
|
||||||
"material_flow": { "default_value": 93 },
|
"material_flow": { "default_value": 93 },
|
||||||
"material_flow_layer_0": { "value": "math.ceil(material_flow*1)" },
|
"material_flow_layer_0": { "value": "math.ceil(material_flow*1)" },
|
||||||
"material_initial_print_temperature": { "value": "material_print_temperature - 5" },
|
|
||||||
"meshfix_maximum_resolution": { "value": "0.5" },
|
"meshfix_maximum_resolution": { "value": "0.5" },
|
||||||
"meshfix_maximum_deviation": { "default_value": 0.04 },
|
"meshfix_maximum_deviation": { "default_value": 0.04 },
|
||||||
"optimize_wall_printing_order": { "value": "True" },
|
"optimize_wall_printing_order": { "value": "True" },
|
||||||
"prime_blob_enable": { "enabled": false, "default_value": false },
|
"prime_blob_enable": { "enabled": false, "default_value": false },
|
||||||
"prime_tower_min_volume": { "default_value": 35 },
|
"prime_tower_min_volume": { "default_value": 35 },
|
||||||
"prime_tower_position_x": { "value": "machine_width/2 - max(extruderValue(adhesion_extruder_nr, 'brim_width') * extruderValue(adhesion_extruder_nr, 'initial_layer_line_width_factor') / 100 if adhesion_type == 'brim' else (extruderValue(adhesion_extruder_nr, 'raft_margin') if adhesion_type == 'raft' else (extruderValue(adhesion_extruder_nr, 'skirt_gap') if adhesion_type == 'skirt' else 0)), max(extruderValues('travel_avoid_distance'))) - max(extruderValues('support_offset')) - sum(extruderValues('skirt_brim_line_width')) * extruderValue(adhesion_extruder_nr, 'initial_layer_line_width_factor') / 100 - (resolveOrValue('draft_shield_dist') if resolveOrValue('draft_shield_enabled') else 0) - 1" },
|
"prime_tower_position_x": { "value": "machine_width/2 + prime_tower_size/2" },
|
||||||
"prime_tower_position_y": { "value": "machine_depth - prime_tower_size - max(extruderValue(adhesion_extruder_nr, 'brim_width') * extruderValue(adhesion_extruder_nr, 'initial_layer_line_width_factor') / 100 if adhesion_type == 'brim' else (extruderValue(adhesion_extruder_nr, 'raft_margin') if adhesion_type == 'raft' else (extruderValue(adhesion_extruder_nr, 'skirt_gap') if adhesion_type == 'skirt' else 0)), max(extruderValues('travel_avoid_distance'))) - max(extruderValues('support_offset')) - sum(extruderValues('skirt_brim_line_width')) * extruderValue(adhesion_extruder_nr, 'initial_layer_line_width_factor') / 100 - (resolveOrValue('draft_shield_dist') if resolveOrValue('draft_shield_enabled') else 0) - 1" },
|
"prime_tower_position_y": { "value": "machine_depth - prime_tower_size - max(extruderValue(adhesion_extruder_nr, 'brim_width') * extruderValue(adhesion_extruder_nr, 'initial_layer_line_width_factor') / 100 if adhesion_type == 'brim' else (extruderValue(adhesion_extruder_nr, 'raft_margin') if adhesion_type == 'raft' else (extruderValue(adhesion_extruder_nr, 'skirt_gap') if adhesion_type == 'skirt' else 0)), max(extruderValues('travel_avoid_distance'))) - max(extruderValues('support_offset')) - sum(extruderValues('skirt_brim_line_width')) * extruderValue(adhesion_extruder_nr, 'initial_layer_line_width_factor') / 100 - (resolveOrValue('draft_shield_dist') if resolveOrValue('draft_shield_enabled') else 0) - 1" },
|
||||||
"retraction_amount": { "default_value": 1.5 },
|
"retraction_amount": { "default_value": 1.5 },
|
||||||
"retraction_combing": { "default_value": "all" },
|
"retraction_combing": { "default_value": "all" },
|
||||||
|
@ -135,4 +159,4 @@
|
||||||
"travel_avoid_distance": { "value": "3 if extruders_enabled_count > 1 else machine_nozzle_tip_outer_diameter / 2 * 1.5" },
|
"travel_avoid_distance": { "value": "3 if extruders_enabled_count > 1 else machine_nozzle_tip_outer_diameter / 2 * 1.5" },
|
||||||
"wall_thickness": { "value": "wall_line_width_0 + wall_line_width_x" }
|
"wall_thickness": { "value": "wall_line_width_0 + wall_line_width_x" }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -47,6 +47,7 @@
|
||||||
"machine_max_acceleration_y": { "default_value": 2650 },
|
"machine_max_acceleration_y": { "default_value": 2650 },
|
||||||
"acceleration_print": { "default_value": 2650 },
|
"acceleration_print": { "default_value": 2650 },
|
||||||
"machine_start_gcode": { "default_value": "G21 ;metric values\nG90 ;absolute positioning\nM82 ;set extruder to absolute mode\nM107 ;start with the fan off\nG28 X0 Y0 ;move X/Y to min endstops\nG28 Z0 ;move Z to min 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_start_gcode": { "default_value": "G21 ;metric values\nG90 ;absolute positioning\nM82 ;set extruder to absolute mode\nM107 ;start with the fan off\nG28 X0 Y0 ;move X/Y to min endstops\nG28 Z0 ;move Z to min 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\nG1 Z+0.5 E-5 X-20 Y-20 F9000 ;move Z up a bit and retract filament even more\nG90 ;absolute positioning\nG1 X0 Y200 F3600 ;move extruder out of the way by moving the baseplate to the front for easier access to printed object\nM84 ;steppers off" }
|
"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\nG1 Z+0.5 E-5 X-20 Y-20 F9000 ;move Z up a bit and retract filament even more\nG90 ;absolute positioning\nG1 X0 Y200 F3600 ;move extruder out of the way by moving the baseplate to the front for easier access to printed object\nM84 ;steppers off" },
|
||||||
|
"speed_z_hop": {"default_value": 3}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"name": "Voron V0",
|
"name": "Voron 0",
|
||||||
"version": 2,
|
"version": 2,
|
||||||
"inherits": "voron2_base",
|
"inherits": "voron2_base",
|
||||||
"metadata":
|
"metadata":
|
||||||
|
@ -10,7 +10,7 @@
|
||||||
},
|
},
|
||||||
"overrides":
|
"overrides":
|
||||||
{
|
{
|
||||||
"machine_name": { "default_value": "VORON V0" },
|
"machine_name": { "default_value": "VORON 0" },
|
||||||
"machine_width": { "default_value": 120 },
|
"machine_width": { "default_value": 120 },
|
||||||
"machine_depth": { "default_value": 120 },
|
"machine_depth": { "default_value": 120 },
|
||||||
"machine_height": { "default_value": 120 }
|
"machine_height": { "default_value": 120 }
|
||||||
|
|
15
resources/extruders/atom2_extruder_0.def.json
Normal file
15
resources/extruders/atom2_extruder_0.def.json
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
{
|
||||||
|
"version": 2,
|
||||||
|
"name": "Extruder 1",
|
||||||
|
"inherits": "fdmextruder",
|
||||||
|
"metadata": {
|
||||||
|
"machine": "atom2",
|
||||||
|
"position": "0"
|
||||||
|
},
|
||||||
|
|
||||||
|
"overrides": {
|
||||||
|
"extruder_nr": { "default_value": 0 },
|
||||||
|
"machine_nozzle_size": { "default_value": 0.4 },
|
||||||
|
"material_diameter": { "default_value": 1.75 }
|
||||||
|
}
|
||||||
|
}
|
15
resources/extruders/creasee_extruder_0.def.json
Normal file
15
resources/extruders/creasee_extruder_0.def.json
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
{
|
||||||
|
"version": 2,
|
||||||
|
"name": "Extruder 1",
|
||||||
|
"inherits": "fdmextruder",
|
||||||
|
"metadata": {
|
||||||
|
"machine": "creasee_cs20",
|
||||||
|
"position": "0"
|
||||||
|
},
|
||||||
|
|
||||||
|
"overrides": {
|
||||||
|
"extruder_nr": { "default_value": 0 },
|
||||||
|
"machine_nozzle_size": { "default_value": 0.4 },
|
||||||
|
"material_diameter": { "default_value": 1.75 }
|
||||||
|
}
|
||||||
|
}
|
15
resources/extruders/creasee_extruder_1.def.json
Normal file
15
resources/extruders/creasee_extruder_1.def.json
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
{
|
||||||
|
"version": 2,
|
||||||
|
"name": "Extruder 1",
|
||||||
|
"inherits": "fdmextruder",
|
||||||
|
"metadata": {
|
||||||
|
"machine": "creasee_cs30",
|
||||||
|
"position": "0"
|
||||||
|
},
|
||||||
|
|
||||||
|
"overrides": {
|
||||||
|
"extruder_nr": { "default_value": 0 },
|
||||||
|
"machine_nozzle_size": { "default_value": 0.4 },
|
||||||
|
"material_diameter": { "default_value": 1.75 }
|
||||||
|
}
|
||||||
|
}
|
15
resources/extruders/pbr3d_g1_extruder_0.def.json
Normal file
15
resources/extruders/pbr3d_g1_extruder_0.def.json
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
{
|
||||||
|
"version": 2,
|
||||||
|
"name": "Extruder 1",
|
||||||
|
"inherits": "fdmextruder",
|
||||||
|
"metadata": {
|
||||||
|
"machine": "pbr3d_g1",
|
||||||
|
"position": "0"
|
||||||
|
},
|
||||||
|
|
||||||
|
"overrides": {
|
||||||
|
"extruder_nr": { "default_value": 0 },
|
||||||
|
"machine_nozzle_size": { "default_value": 0.4 },
|
||||||
|
"material_diameter": { "default_value": 1.75 }
|
||||||
|
}
|
||||||
|
}
|
|
@ -1177,7 +1177,7 @@ msgstr "Hinten links"
|
||||||
#: fdmprinter.def.json
|
#: fdmprinter.def.json
|
||||||
msgctxt "z_seam_position option back"
|
msgctxt "z_seam_position option back"
|
||||||
msgid "Back"
|
msgid "Back"
|
||||||
msgstr "Zurück"
|
msgstr "Hinten"
|
||||||
|
|
||||||
#: fdmprinter.def.json
|
#: fdmprinter.def.json
|
||||||
msgctxt "z_seam_position option backright"
|
msgctxt "z_seam_position option backright"
|
||||||
|
|
BIN
resources/meshes/pbr3d_g1_buildplate.stl
Normal file
BIN
resources/meshes/pbr3d_g1_buildplate.stl
Normal file
Binary file not shown.
|
@ -54,9 +54,10 @@ Item
|
||||||
id: accountWidget
|
id: accountWidget
|
||||||
|
|
||||||
anchors.verticalCenter: parent.verticalCenter
|
anchors.verticalCenter: parent.verticalCenter
|
||||||
|
anchors.horizontalCenter: signInButton.horizontalCenter
|
||||||
|
|
||||||
implicitHeight: UM.Theme.getSize("main_window_header").height
|
implicitHeight: Math.round(0.5 * UM.Theme.getSize("main_window_header").height)
|
||||||
implicitWidth: UM.Theme.getSize("main_window_header").height
|
implicitWidth: Math.round(0.5 * UM.Theme.getSize("main_window_header").height)
|
||||||
|
|
||||||
hoverEnabled: true
|
hoverEnabled: true
|
||||||
|
|
||||||
|
@ -68,8 +69,8 @@ Item
|
||||||
{
|
{
|
||||||
id: avatar
|
id: avatar
|
||||||
|
|
||||||
width: Math.round(0.8 * accountWidget.width)
|
width: accountWidget.width
|
||||||
height: Math.round(0.8 * accountWidget.height)
|
height: accountWidget.height
|
||||||
anchors.verticalCenter: accountWidget.verticalCenter
|
anchors.verticalCenter: accountWidget.verticalCenter
|
||||||
anchors.horizontalCenter: accountWidget.horizontalCenter
|
anchors.horizontalCenter: accountWidget.horizontalCenter
|
||||||
|
|
||||||
|
@ -86,7 +87,7 @@ Item
|
||||||
{
|
{
|
||||||
id: initialCircle
|
id: initialCircle
|
||||||
anchors.centerIn: parent
|
anchors.centerIn: parent
|
||||||
width: Math.min(parent.width, parent.height)
|
width: Math.min(accountWidget.width, accountWidget.height)
|
||||||
height: width
|
height: width
|
||||||
radius: width
|
radius: width
|
||||||
color: accountWidget.hovered ? UM.Theme.getColor("primary_text") : "transparent"
|
color: accountWidget.hovered ? UM.Theme.getColor("primary_text") : "transparent"
|
||||||
|
@ -141,7 +142,7 @@ Item
|
||||||
borderColor: UM.Theme.getColor("lining")
|
borderColor: UM.Theme.getColor("lining")
|
||||||
borderWidth: UM.Theme.getSize("default_lining").width
|
borderWidth: UM.Theme.getSize("default_lining").width
|
||||||
|
|
||||||
target: Qt.point(width - (accountWidget.width / 2), -10)
|
target: Qt.point(width - (signInButton.width / 2), -10)
|
||||||
|
|
||||||
arrowSize: UM.Theme.getSize("default_arrow").width
|
arrowSize: UM.Theme.getSize("default_arrow").width
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,7 +9,7 @@ import Cura 1.1 as Cura
|
||||||
|
|
||||||
Column
|
Column
|
||||||
{
|
{
|
||||||
spacing: UM.Theme.getSize("narrow_margin").height
|
spacing: UM.Theme.getSize("default_margin").height
|
||||||
topPadding: UM.Theme.getSize("default_margin").height
|
topPadding: UM.Theme.getSize("default_margin").height
|
||||||
bottomPadding: UM.Theme.getSize("default_margin").height
|
bottomPadding: UM.Theme.getSize("default_margin").height
|
||||||
width: childrenRect.width
|
width: childrenRect.width
|
||||||
|
@ -18,7 +18,7 @@ Column
|
||||||
{
|
{
|
||||||
id: accountInfo
|
id: accountInfo
|
||||||
width: childrenRect.width
|
width: childrenRect.width
|
||||||
height: childrenRect.height
|
height: accountSyncDetailsColumn.height
|
||||||
anchors.left: parent.left
|
anchors.left: parent.left
|
||||||
anchors.leftMargin: UM.Theme.getSize("default_margin").width
|
anchors.leftMargin: UM.Theme.getSize("default_margin").width
|
||||||
AvatarImage
|
AvatarImage
|
||||||
|
@ -56,6 +56,7 @@ Column
|
||||||
|
|
||||||
Column
|
Column
|
||||||
{
|
{
|
||||||
|
id: accountSyncDetailsColumn
|
||||||
anchors.left: avatar.right
|
anchors.left: avatar.right
|
||||||
anchors.leftMargin: UM.Theme.getSize("default_margin").width
|
anchors.leftMargin: UM.Theme.getSize("default_margin").width
|
||||||
spacing: UM.Theme.getSize("narrow_margin").height
|
spacing: UM.Theme.getSize("narrow_margin").height
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright (c) 2020 Ultimaker B.V.
|
// Copyright (c) 2021 Ultimaker B.V.
|
||||||
// Cura is released under the terms of the LGPLv3 or higher.
|
// Cura is released under the terms of the LGPLv3 or higher.
|
||||||
|
|
||||||
import QtQuick 2.7
|
import QtQuick 2.7
|
||||||
|
@ -18,19 +18,16 @@ Button
|
||||||
property alias textFont: buttonText.font
|
property alias textFont: buttonText.font
|
||||||
property alias cornerRadius: backgroundRect.radius
|
property alias cornerRadius: backgroundRect.radius
|
||||||
property alias tooltip: tooltip.tooltipText
|
property alias tooltip: tooltip.tooltipText
|
||||||
property alias cornerSide: backgroundRect.cornerSide
|
|
||||||
|
|
||||||
property color color: UM.Theme.getColor("primary")
|
property color color: UM.Theme.getColor("primary")
|
||||||
property color hoverColor: UM.Theme.getColor("primary_hover")
|
property color hoverColor: UM.Theme.getColor("primary_hover")
|
||||||
property color disabledColor: color
|
property color disabledColor: color
|
||||||
property color textColor: UM.Theme.getColor("button_text")
|
property color textColor: UM.Theme.getColor("button_text")
|
||||||
property color textHoverColor: textColor
|
property color textHoverColor: textColor
|
||||||
property color textDisabledColor: textColor
|
property color textDisabledColor: disabledColor
|
||||||
property color outlineColor: color
|
property color outlineColor: color
|
||||||
property color outlineHoverColor: hoverColor
|
property color outlineHoverColor: outlineColor
|
||||||
property color outlineDisabledColor: outlineColor
|
property color outlineDisabledColor: disabledColor
|
||||||
property alias shadowColor: shadow.color
|
|
||||||
property alias shadowEnabled: shadow.visible
|
|
||||||
property alias busy: busyIndicator.visible
|
property alias busy: busyIndicator.visible
|
||||||
|
|
||||||
property bool underlineTextOnHover: false
|
property bool underlineTextOnHover: false
|
||||||
|
@ -46,6 +43,49 @@ Button
|
||||||
// but it can exceed a maximum, then this value have to be set.
|
// but it can exceed a maximum, then this value have to be set.
|
||||||
property int maximumWidth: 0
|
property int maximumWidth: 0
|
||||||
|
|
||||||
|
// These properties are deprecated.
|
||||||
|
// To (maybe) prevent a major SDK upgrade, mark them as deprecated instead of just outright removing them.
|
||||||
|
// Note, if you still want rounded corners, use (something based on) Cura.RoundedRectangle.
|
||||||
|
property alias cornerSide: deprecatedProperties.cornerSide
|
||||||
|
property alias shadowColor: deprecatedProperties.shadowColor
|
||||||
|
property alias shadowEnabled: deprecatedProperties.shadowEnabled
|
||||||
|
|
||||||
|
Item
|
||||||
|
{
|
||||||
|
id: deprecatedProperties
|
||||||
|
|
||||||
|
visible: false
|
||||||
|
enabled: false
|
||||||
|
width: 0
|
||||||
|
height: 0
|
||||||
|
|
||||||
|
property var cornerSide: null
|
||||||
|
property var shadowColor: null
|
||||||
|
property var shadowEnabled: null
|
||||||
|
|
||||||
|
onCornerSideChanged:
|
||||||
|
{
|
||||||
|
if (cornerSide != null)
|
||||||
|
{
|
||||||
|
CuraApplication.writeToLog("w", "'ActionButton.cornerSide' is deprecated since 4.11. Rounded corners can still be made with 'Cura.RoundedRectangle'.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
onShadowColorChanged:
|
||||||
|
{
|
||||||
|
if (shadowColor != null)
|
||||||
|
{
|
||||||
|
CuraApplication.writeToLog("w", "'ActionButton.shadowColor' is deprecated since 4.11.")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
onShadowEnabledChanged:
|
||||||
|
{
|
||||||
|
if (shadowEnabled != null)
|
||||||
|
{
|
||||||
|
CuraApplication.writeToLog("w", "'ActionButton.shadowEnabled' is deprecated since 4.11.")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
leftPadding: UM.Theme.getSize("default_margin").width
|
leftPadding: UM.Theme.getSize("default_margin").width
|
||||||
rightPadding: UM.Theme.getSize("default_margin").width
|
rightPadding: UM.Theme.getSize("default_margin").width
|
||||||
height: UM.Theme.getSize("action_button").height
|
height: UM.Theme.getSize("action_button").height
|
||||||
|
@ -130,24 +170,13 @@ Button
|
||||||
background: Cura.RoundedRectangle
|
background: Cura.RoundedRectangle
|
||||||
{
|
{
|
||||||
id: backgroundRect
|
id: backgroundRect
|
||||||
cornerSide: Cura.RoundedRectangle.Direction.All
|
|
||||||
color: button.enabled ? (button.hovered ? button.hoverColor : button.color) : button.disabledColor
|
color: button.enabled ? (button.hovered ? button.hoverColor : button.color) : button.disabledColor
|
||||||
radius: UM.Theme.getSize("action_button_radius").width
|
|
||||||
border.width: UM.Theme.getSize("default_lining").width
|
border.width: UM.Theme.getSize("default_lining").width
|
||||||
border.color: button.enabled ? (button.hovered ? button.outlineHoverColor : button.outlineColor) : button.outlineDisabledColor
|
border.color: button.enabled ? (button.hovered ? button.outlineHoverColor : button.outlineColor) : button.outlineDisabledColor
|
||||||
}
|
|
||||||
|
|
||||||
DropShadow
|
// Disable the rounded-ness of this rectangle. We can't use a normal Rectangle here yet, as the API/SDK has only just been deprecated.
|
||||||
{
|
|
||||||
id: shadow
|
|
||||||
// Don't blur the shadow
|
|
||||||
radius: 0
|
radius: 0
|
||||||
anchors.fill: backgroundRect
|
cornerSide: Cura.RoundedRectangle.Direction.None
|
||||||
source: backgroundRect
|
|
||||||
verticalOffset: 2
|
|
||||||
visible: false
|
|
||||||
// Should always be drawn behind the background.
|
|
||||||
z: backgroundRect.z - 1
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Cura.ToolTip
|
Cura.ToolTip
|
||||||
|
@ -189,4 +218,4 @@ Button
|
||||||
duration: 2500
|
duration: 2500
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright (c) 2018 Ultimaker B.V.
|
// Copyright (c) 2021 Ultimaker B.V.
|
||||||
// Cura is released under the terms of the LGPLv3 or higher.
|
// Cura is released under the terms of the LGPLv3 or higher.
|
||||||
|
|
||||||
import QtQuick 2.7
|
import QtQuick 2.7
|
||||||
|
@ -23,7 +23,6 @@ Item
|
||||||
id: saveToButton
|
id: saveToButton
|
||||||
height: parent.height
|
height: parent.height
|
||||||
fixedWidthMode: true
|
fixedWidthMode: true
|
||||||
cornerSide: deviceSelectionMenu.visible ? Cura.RoundedRectangle.Direction.Left : Cura.RoundedRectangle.Direction.All
|
|
||||||
|
|
||||||
anchors
|
anchors
|
||||||
{
|
{
|
||||||
|
@ -43,15 +42,11 @@ Item
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Cura.ActionButton
|
Cura.PrimaryButton
|
||||||
{
|
{
|
||||||
id: deviceSelectionMenu
|
id: deviceSelectionMenu
|
||||||
height: parent.height
|
height: parent.height
|
||||||
|
|
||||||
shadowEnabled: true
|
|
||||||
shadowColor: UM.Theme.getColor("primary_shadow")
|
|
||||||
cornerSide: Cura.RoundedRectangle.Direction.Right
|
|
||||||
|
|
||||||
anchors
|
anchors
|
||||||
{
|
{
|
||||||
top: parent.top
|
top: parent.top
|
||||||
|
@ -61,7 +56,7 @@ Item
|
||||||
leftPadding: UM.Theme.getSize("narrow_margin").width //Need more space than usual here for wide text.
|
leftPadding: UM.Theme.getSize("narrow_margin").width //Need more space than usual here for wide text.
|
||||||
rightPadding: UM.Theme.getSize("narrow_margin").width
|
rightPadding: UM.Theme.getSize("narrow_margin").width
|
||||||
iconSource: popup.opened ? UM.Theme.getIcon("ChevronSingleUp") : UM.Theme.getIcon("ChevronSingleDown")
|
iconSource: popup.opened ? UM.Theme.getIcon("ChevronSingleUp") : UM.Theme.getIcon("ChevronSingleDown")
|
||||||
color: UM.Theme.getColor("action_panel_secondary")
|
color: popup.opened ? hoverColor : UM.Theme.getColor("action_panel_secondary")
|
||||||
visible: (devicesModel.deviceCount > 1)
|
visible: (devicesModel.deviceCount > 1)
|
||||||
|
|
||||||
onClicked: popup.opened ? popup.close() : popup.open()
|
onClicked: popup.opened ? popup.close() : popup.open()
|
||||||
|
@ -70,6 +65,7 @@ Item
|
||||||
{
|
{
|
||||||
id: popup
|
id: popup
|
||||||
padding: 0
|
padding: 0
|
||||||
|
spacing: 0
|
||||||
|
|
||||||
y: -height
|
y: -height
|
||||||
x: parent.width - width
|
x: parent.width - width
|
||||||
|
@ -78,17 +74,16 @@ Item
|
||||||
|
|
||||||
contentItem: ColumnLayout
|
contentItem: ColumnLayout
|
||||||
{
|
{
|
||||||
|
spacing: 0
|
||||||
|
|
||||||
Repeater
|
Repeater
|
||||||
{
|
{
|
||||||
model: devicesModel
|
model: devicesModel
|
||||||
|
|
||||||
delegate: Cura.ActionButton
|
delegate: Cura.PrimaryButton
|
||||||
{
|
{
|
||||||
text: model.description
|
text: model.description
|
||||||
visible: model.id != UM.OutputDeviceManager.activeDevice // Don't show the active device in the list
|
visible: model.id != UM.OutputDeviceManager.activeDevice // Don't show the active device in the list
|
||||||
color: "transparent"
|
|
||||||
cornerRadius: 0
|
|
||||||
hoverColor: UM.Theme.getColor("primary")
|
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
// The total width of the popup should be defined by the largest button. By stating that each
|
// The total width of the popup should be defined by the largest button. By stating that each
|
||||||
// button should be minimally the size of it's content (aka; implicitWidth) we can ensure that.
|
// button should be minimally the size of it's content (aka; implicitWidth) we can ensure that.
|
||||||
|
@ -102,13 +97,6 @@ Item
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
background: Rectangle
|
|
||||||
{
|
|
||||||
opacity: visible ? 1 : 0
|
|
||||||
Behavior on opacity { NumberAnimation { duration: 100 } }
|
|
||||||
color: UM.Theme.getColor("action_panel_secondary")
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -429,6 +429,14 @@ UM.MainWindow
|
||||||
height: UM.Theme.getSize("message_action_button").height
|
height: UM.Theme.getSize("message_action_button").height
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
link: Component
|
||||||
|
{
|
||||||
|
Cura.TertiaryButton
|
||||||
|
{
|
||||||
|
text: model.name
|
||||||
|
height: UM.Theme.getSize("message_action_button").height
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -7,8 +7,6 @@ import QtQuick.Controls 2.3
|
||||||
import UM 1.2 as UM
|
import UM 1.2 as UM
|
||||||
import Cura 1.0 as Cura
|
import Cura 1.0 as Cura
|
||||||
|
|
||||||
import QtGraphicalEffects 1.0 // For the dropshadow
|
|
||||||
|
|
||||||
// The expandable component has 2 major sub components:
|
// The expandable component has 2 major sub components:
|
||||||
// * The headerItem; Always visible and should hold some info about what happens if the component is expanded
|
// * The headerItem; Always visible and should hold some info about what happens if the component is expanded
|
||||||
// * The contentItem; The content that needs to be shown if the component is expanded.
|
// * The contentItem; The content that needs to be shown if the component is expanded.
|
||||||
|
@ -58,6 +56,9 @@ Item
|
||||||
|
|
||||||
property alias headerBackgroundBorder: background.border
|
property alias headerBackgroundBorder: background.border
|
||||||
|
|
||||||
|
// Whether or not to show the background border
|
||||||
|
property bool enableHeaderBackgroundBorder: true
|
||||||
|
|
||||||
// What icon should be displayed on the right.
|
// What icon should be displayed on the right.
|
||||||
property alias iconSource: collapseButton.source
|
property alias iconSource: collapseButton.source
|
||||||
|
|
||||||
|
@ -75,11 +76,7 @@ Item
|
||||||
// On what side should the header corners be shown? 1 is down, 2 is left, 3 is up and 4 is right.
|
// On what side should the header corners be shown? 1 is down, 2 is left, 3 is up and 4 is right.
|
||||||
property alias headerCornerSide: background.cornerSide
|
property alias headerCornerSide: background.cornerSide
|
||||||
|
|
||||||
property alias headerShadowColor: shadow.color
|
property int popupOffset: 2
|
||||||
|
|
||||||
property alias enableHeaderShadow: shadow.visible
|
|
||||||
|
|
||||||
property int shadowOffset: 2
|
|
||||||
|
|
||||||
// Prefix used for the dragged position preferences. Preferences not used if empty. Don't translate!
|
// Prefix used for the dragged position preferences. Preferences not used if empty. Don't translate!
|
||||||
property string dragPreferencesNamePrefix: ""
|
property string dragPreferencesNamePrefix: ""
|
||||||
|
@ -122,6 +119,9 @@ Item
|
||||||
id: background
|
id: background
|
||||||
property real padding: UM.Theme.getSize("default_margin").width
|
property real padding: UM.Theme.getSize("default_margin").width
|
||||||
|
|
||||||
|
border.width: base.enableHeaderBackgroundBorder ? UM.Theme.getSize("default_lining").width : 0
|
||||||
|
border.color: UM.Theme.getColor("lining")
|
||||||
|
|
||||||
color: base.enabled ? (base.expanded ? headerActiveColor : headerBackgroundColor) : UM.Theme.getColor("disabled")
|
color: base.enabled ? (base.expanded ? headerActiveColor : headerBackgroundColor) : UM.Theme.getColor("disabled")
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
|
|
||||||
|
@ -167,7 +167,7 @@ Item
|
||||||
verticalCenter: parent.verticalCenter
|
verticalCenter: parent.verticalCenter
|
||||||
margins: background.padding
|
margins: background.padding
|
||||||
}
|
}
|
||||||
source: UM.Theme.getIcon("Pen")
|
source: UM.Theme.getIcon("ChevronSingleDown")
|
||||||
visible: source != ""
|
visible: source != ""
|
||||||
width: UM.Theme.getSize("standard_arrow").width
|
width: UM.Theme.getSize("standard_arrow").width
|
||||||
height: UM.Theme.getSize("standard_arrow").height
|
height: UM.Theme.getSize("standard_arrow").height
|
||||||
|
@ -186,20 +186,6 @@ Item
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
DropShadow
|
|
||||||
{
|
|
||||||
id: shadow
|
|
||||||
// Don't blur the shadow
|
|
||||||
radius: 0
|
|
||||||
anchors.fill: background
|
|
||||||
source: background
|
|
||||||
verticalOffset: base.shadowOffset
|
|
||||||
visible: true
|
|
||||||
color: UM.Theme.getColor("action_button_shadow")
|
|
||||||
// Should always be drawn behind the background.
|
|
||||||
z: background.z - 1
|
|
||||||
}
|
|
||||||
|
|
||||||
Cura.RoundedRectangle
|
Cura.RoundedRectangle
|
||||||
{
|
{
|
||||||
id: contentContainer
|
id: contentContainer
|
||||||
|
@ -211,7 +197,7 @@ Item
|
||||||
height: childrenRect.height
|
height: childrenRect.height
|
||||||
|
|
||||||
// Ensure that the content is located directly below the headerItem
|
// Ensure that the content is located directly below the headerItem
|
||||||
y: dragPreferencesNamePrefix === "" ? (background.height + base.shadowOffset + base.contentSpacingY) : UM.Preferences.getValue(dragPreferencesNamePrefix + dragPreferencesNameY)
|
y: dragPreferencesNamePrefix === "" ? (background.height + base.popupOffset + base.contentSpacingY) : UM.Preferences.getValue(dragPreferencesNamePrefix + dragPreferencesNameY)
|
||||||
|
|
||||||
// Make the content aligned with the rest, using the property contentAlignment to decide whether is right or left.
|
// Make the content aligned with the rest, using the property contentAlignment to decide whether is right or left.
|
||||||
// In case of right alignment, the 3x padding is due to left, right and padding between the button & text.
|
// In case of right alignment, the 3x padding is due to left, right and padding between the button & text.
|
||||||
|
@ -230,7 +216,7 @@ Item
|
||||||
var maxPt = base.mapFromItem(null,
|
var maxPt = base.mapFromItem(null,
|
||||||
CuraApplication.appWidth() - (contentContainer.width + margin.width),
|
CuraApplication.appWidth() - (contentContainer.width + margin.width),
|
||||||
CuraApplication.appHeight() - (contentContainer.height + margin.height));
|
CuraApplication.appHeight() - (contentContainer.height + margin.height));
|
||||||
var initialY = background.height + base.shadowOffset + margin.height;
|
var initialY = background.height + base.popupOffset + margin.height;
|
||||||
|
|
||||||
contentContainer.x = Math.max(minPt.x, Math.min(maxPt.x, posNewX));
|
contentContainer.x = Math.max(minPt.x, Math.min(maxPt.x, posNewX));
|
||||||
contentContainer.y = Math.max(initialY, Math.min(maxPt.y, posNewY));
|
contentContainer.y = Math.max(initialY, Math.min(maxPt.y, posNewY));
|
||||||
|
|
|
@ -7,8 +7,6 @@ import QtQuick.Controls 2.3
|
||||||
import UM 1.2 as UM
|
import UM 1.2 as UM
|
||||||
import Cura 1.0 as Cura
|
import Cura 1.0 as Cura
|
||||||
|
|
||||||
import QtGraphicalEffects 1.0 // For the dropshadow
|
|
||||||
|
|
||||||
// The expandable component has 2 major sub components:
|
// The expandable component has 2 major sub components:
|
||||||
// * The headerItem; Always visible and should hold some info about what happens if the component is expanded
|
// * The headerItem; Always visible and should hold some info about what happens if the component is expanded
|
||||||
// * The contentItem; The content that needs to be shown if the component is expanded.
|
// * The contentItem; The content that needs to be shown if the component is expanded.
|
||||||
|
@ -52,6 +50,9 @@ Item
|
||||||
|
|
||||||
property alias headerBackgroundBorder: background.border
|
property alias headerBackgroundBorder: background.border
|
||||||
|
|
||||||
|
// Whether or not to show the background border
|
||||||
|
property bool enableHeaderBackgroundBorder: true
|
||||||
|
|
||||||
// What icon should be displayed on the right.
|
// What icon should be displayed on the right.
|
||||||
property alias iconSource: collapseButton.source
|
property alias iconSource: collapseButton.source
|
||||||
|
|
||||||
|
@ -74,11 +75,7 @@ Item
|
||||||
// Change the contentItem close behaviour
|
// Change the contentItem close behaviour
|
||||||
property alias contentClosePolicy : content.closePolicy
|
property alias contentClosePolicy : content.closePolicy
|
||||||
|
|
||||||
property alias headerShadowColor: shadow.color
|
property int popupOffset: 2
|
||||||
|
|
||||||
property alias enableHeaderShadow: shadow.visible
|
|
||||||
|
|
||||||
property int shadowOffset: 2
|
|
||||||
|
|
||||||
onEnabledChanged:
|
onEnabledChanged:
|
||||||
{
|
{
|
||||||
|
@ -116,6 +113,9 @@ Item
|
||||||
id: background
|
id: background
|
||||||
property real padding: UM.Theme.getSize("default_margin").width
|
property real padding: UM.Theme.getSize("default_margin").width
|
||||||
|
|
||||||
|
border.width: base.enableHeaderBackgroundBorder ? UM.Theme.getSize("default_lining").width : 0
|
||||||
|
border.color: UM.Theme.getColor("lining")
|
||||||
|
|
||||||
color: base.enabled ? headerBackgroundColor : UM.Theme.getColor("disabled")
|
color: base.enabled ? headerBackgroundColor : UM.Theme.getColor("disabled")
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
|
|
||||||
|
@ -180,7 +180,7 @@ Item
|
||||||
verticalCenter: parent.verticalCenter
|
verticalCenter: parent.verticalCenter
|
||||||
margins: background.padding
|
margins: background.padding
|
||||||
}
|
}
|
||||||
source: expanded ? UM.Theme.getIcon("ChevronSingleDown") : UM.Theme.getIcon("ChevronSingleLeft")
|
source: UM.Theme.getIcon("ChevronSingleDown")
|
||||||
visible: source != ""
|
visible: source != ""
|
||||||
width: UM.Theme.getSize("standard_arrow").width
|
width: UM.Theme.getSize("standard_arrow").width
|
||||||
height: UM.Theme.getSize("standard_arrow").height
|
height: UM.Theme.getSize("standard_arrow").height
|
||||||
|
@ -190,26 +190,12 @@ Item
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
DropShadow
|
|
||||||
{
|
|
||||||
id: shadow
|
|
||||||
// Don't blur the shadow
|
|
||||||
radius: 0
|
|
||||||
anchors.fill: background
|
|
||||||
source: background
|
|
||||||
verticalOffset: base.shadowOffset
|
|
||||||
visible: true
|
|
||||||
color: UM.Theme.getColor("action_button_shadow")
|
|
||||||
// Should always be drawn behind the background.
|
|
||||||
z: background.z - 1
|
|
||||||
}
|
|
||||||
|
|
||||||
Popup
|
Popup
|
||||||
{
|
{
|
||||||
id: content
|
id: content
|
||||||
|
|
||||||
// Ensure that the content is located directly below the headerItem
|
// Ensure that the content is located directly below the headerItem
|
||||||
y: background.height + base.shadowOffset
|
y: background.height + base.popupOffset
|
||||||
|
|
||||||
// Make the content aligned with the rest, using the property contentAlignment to decide whether is right or left.
|
// Make the content aligned with the rest, using the property contentAlignment to decide whether is right or left.
|
||||||
// In case of right alignment, the 3x padding is due to left, right and padding between the button & text.
|
// In case of right alignment, the 3x padding is due to left, right and padding between the button & text.
|
||||||
|
|
|
@ -22,6 +22,7 @@ Cura.ToolbarButton
|
||||||
{
|
{
|
||||||
materialColor: extruder.color
|
materialColor: extruder.color
|
||||||
extruderEnabled: extruder.stack.isEnabled
|
extruderEnabled: extruder.stack.isEnabled
|
||||||
|
iconVariant: "default"
|
||||||
property int index: extruder.index
|
property int index: extruder.index
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
// Copyright (c) 2018 Ultimaker B.V.
|
// Copyright (c) 2021 Ultimaker B.V.
|
||||||
// Cura is released under the terms of the LGPLv3 or higher.
|
// Cura is released under the terms of the LGPLv3 or higher.
|
||||||
|
|
||||||
import QtQuick 2.7
|
import QtQuick 2.11
|
||||||
import QtQuick.Controls 1.1
|
import QtQuick.Controls 1.1
|
||||||
import UM 1.2 as UM
|
import UM 1.2 as UM
|
||||||
|
|
||||||
|
@ -16,30 +16,30 @@ Item
|
||||||
property color materialColor
|
property color materialColor
|
||||||
property alias textColor: extruderNumberText.color
|
property alias textColor: extruderNumberText.color
|
||||||
property bool extruderEnabled: true
|
property bool extruderEnabled: true
|
||||||
|
property alias iconSize: mainIcon.sourceSize
|
||||||
|
property string iconVariant: "medium"
|
||||||
|
|
||||||
UM.RecolorImage
|
Item
|
||||||
{
|
{
|
||||||
id: mainIcon
|
opacity: extruderEnabled ? 1 : UM.Theme.getColor("extruder_disabled").a
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
|
|
||||||
source: UM.Theme.getIcon("Extruder", "medium")
|
UM.RecolorImage
|
||||||
color: extruderEnabled ? materialColor: UM.Theme.getColor("disabled")
|
|
||||||
}
|
|
||||||
|
|
||||||
Rectangle
|
|
||||||
{
|
|
||||||
id: extruderNumberCircle
|
|
||||||
|
|
||||||
width: height
|
|
||||||
height: Math.round(parent.height / 2)
|
|
||||||
radius: Math.round(width)
|
|
||||||
color: UM.Theme.getColor("toolbar_background")
|
|
||||||
|
|
||||||
anchors
|
|
||||||
{
|
{
|
||||||
horizontalCenter: parent.horizontalCenter
|
anchors.fill: parent
|
||||||
top: parent.top
|
sourceSize: mainIcon.sourceSize
|
||||||
topMargin: (parent.height - height) / 2
|
|
||||||
|
source: UM.Theme.getIcon("ExtruderColor", iconVariant)
|
||||||
|
color: materialColor
|
||||||
|
}
|
||||||
|
UM.RecolorImage
|
||||||
|
{
|
||||||
|
id: mainIcon
|
||||||
|
anchors.fill: parent
|
||||||
|
sourceSize: UM.Theme.getSize("extruder_icon")
|
||||||
|
|
||||||
|
source: UM.Theme.getIcon("Extruder", iconVariant)
|
||||||
|
color: extruderNumberText.color
|
||||||
}
|
}
|
||||||
|
|
||||||
Label
|
Label
|
||||||
|
@ -47,25 +47,13 @@ Item
|
||||||
id: extruderNumberText
|
id: extruderNumberText
|
||||||
anchors.centerIn: parent
|
anchors.centerIn: parent
|
||||||
text: index + 1
|
text: index + 1
|
||||||
font: UM.Theme.getFont("small")
|
font: UM.Theme.getFont("small_emphasis")
|
||||||
color: UM.Theme.getColor("text")
|
color: UM.Theme.getColor("text")
|
||||||
width: contentWidth
|
width: contentWidth
|
||||||
height: contentHeight
|
height: contentHeight
|
||||||
visible: extruderEnabled
|
|
||||||
renderType: Text.NativeRendering
|
renderType: Text.NativeRendering
|
||||||
horizontalAlignment: Text.AlignHCenter
|
horizontalAlignment: Text.AlignHCenter
|
||||||
verticalAlignment: Text.AlignVCenter
|
verticalAlignment: Text.AlignVCenter
|
||||||
}
|
}
|
||||||
|
|
||||||
UM.RecolorImage
|
|
||||||
{
|
|
||||||
id: disabledIcon
|
|
||||||
anchors.fill: parent
|
|
||||||
anchors.margins: UM.Theme.getSize("thick_lining").width
|
|
||||||
sourceSize.height: width
|
|
||||||
source: UM.Theme.getIcon("Cancel")
|
|
||||||
visible: !extruderEnabled
|
|
||||||
color: UM.Theme.getColor("text")
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -62,7 +62,7 @@ Item
|
||||||
anchors.verticalCenter: parent.verticalCenter
|
anchors.verticalCenter: parent.verticalCenter
|
||||||
exclusiveGroup: mainWindowHeaderMenuGroup
|
exclusiveGroup: mainWindowHeaderMenuGroup
|
||||||
style: UM.Theme.styles.main_window_header_tab
|
style: UM.Theme.styles.main_window_header_tab
|
||||||
height: UM.Theme.getSize("main_window_header_button").height
|
height: Math.round(0.5 * UM.Theme.getSize("main_window_header").height)
|
||||||
iconSource: model.stage.iconSource
|
iconSource: model.stage.iconSource
|
||||||
|
|
||||||
property color overlayColor: "transparent"
|
property color overlayColor: "transparent"
|
||||||
|
|
|
@ -56,13 +56,13 @@ Cura.ExpandablePopup
|
||||||
id: extruderIcon
|
id: extruderIcon
|
||||||
materialColor: model.color
|
materialColor: model.color
|
||||||
extruderEnabled: model.enabled
|
extruderEnabled: model.enabled
|
||||||
width: UM.Theme.getSize("button_icon").width
|
|
||||||
anchors.verticalCenter: parent.verticalCenter
|
anchors.verticalCenter: parent.verticalCenter
|
||||||
}
|
}
|
||||||
|
|
||||||
Item
|
ColumnLayout
|
||||||
{
|
{
|
||||||
height: childrenRect.height
|
opacity: model.enabled ? 1 : UM.Theme.getColor("extruder_disabled").a
|
||||||
|
spacing: 0
|
||||||
anchors
|
anchors
|
||||||
{
|
{
|
||||||
left: extruderIcon.right
|
left: extruderIcon.right
|
||||||
|
@ -81,13 +81,8 @@ Cura.ExpandablePopup
|
||||||
font: UM.Theme.getFont("default")
|
font: UM.Theme.getFont("default")
|
||||||
color: UM.Theme.getColor("text")
|
color: UM.Theme.getColor("text")
|
||||||
renderType: Text.NativeRendering
|
renderType: Text.NativeRendering
|
||||||
|
width: parent.width
|
||||||
|
|
||||||
anchors
|
|
||||||
{
|
|
||||||
top: parent.top
|
|
||||||
left: parent.left
|
|
||||||
right: parent.right
|
|
||||||
}
|
|
||||||
visible: !truncated
|
visible: !truncated
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -100,13 +95,7 @@ Cura.ExpandablePopup
|
||||||
font: UM.Theme.getFont("default")
|
font: UM.Theme.getFont("default")
|
||||||
color: UM.Theme.getColor("text")
|
color: UM.Theme.getColor("text")
|
||||||
renderType: Text.NativeRendering
|
renderType: Text.NativeRendering
|
||||||
|
width: parent.width
|
||||||
anchors
|
|
||||||
{
|
|
||||||
top: parent.top
|
|
||||||
left: parent.left
|
|
||||||
right: parent.right
|
|
||||||
}
|
|
||||||
|
|
||||||
visible: !materialBrandColorTypeLabel.visible && !truncated
|
visible: !materialBrandColorTypeLabel.visible && !truncated
|
||||||
}
|
}
|
||||||
|
@ -120,13 +109,7 @@ Cura.ExpandablePopup
|
||||||
font: UM.Theme.getFont("default")
|
font: UM.Theme.getFont("default")
|
||||||
color: UM.Theme.getColor("text")
|
color: UM.Theme.getColor("text")
|
||||||
renderType: Text.NativeRendering
|
renderType: Text.NativeRendering
|
||||||
|
width: parent.width
|
||||||
anchors
|
|
||||||
{
|
|
||||||
top: parent.top
|
|
||||||
left: parent.left
|
|
||||||
right: parent.right
|
|
||||||
}
|
|
||||||
visible: !materialBrandColorTypeLabel.visible && !materialColorTypeLabel.visible
|
visible: !materialBrandColorTypeLabel.visible && !materialColorTypeLabel.visible
|
||||||
}
|
}
|
||||||
// Label that shows the name of the variant
|
// Label that shows the name of the variant
|
||||||
|
@ -141,13 +124,7 @@ Cura.ExpandablePopup
|
||||||
font: UM.Theme.getFont("default_bold")
|
font: UM.Theme.getFont("default_bold")
|
||||||
color: UM.Theme.getColor("text")
|
color: UM.Theme.getColor("text")
|
||||||
renderType: Text.NativeRendering
|
renderType: Text.NativeRendering
|
||||||
|
width: parent.width
|
||||||
anchors
|
|
||||||
{
|
|
||||||
left: parent.left
|
|
||||||
top: materialBrandColorTypeLabel.bottom
|
|
||||||
right: parent.right
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -302,15 +302,15 @@ Item
|
||||||
}
|
}
|
||||||
Item
|
Item
|
||||||
{
|
{
|
||||||
width: instructionButton.width + 2 * UM.Theme.getSize("default_margin").width
|
width: instructionButton.width + 2 * UM.Theme.getSize("narrow_margin").width
|
||||||
height: instructionButton.visible ? materialSelection.height: 0
|
height: instructionButton.visible ? materialSelection.height: 0
|
||||||
Button
|
Button
|
||||||
{
|
{
|
||||||
id: instructionButton
|
id: instructionButton
|
||||||
hoverEnabled: true
|
hoverEnabled: true
|
||||||
contentItem: Item {}
|
contentItem: Item {}
|
||||||
height: 0.5 * materialSelection.height
|
height: UM.Theme.getSize("small_button").height
|
||||||
width: height
|
width: UM.Theme.getSize("small_button").width
|
||||||
anchors.centerIn: parent
|
anchors.centerIn: parent
|
||||||
background: UM.RecolorImage
|
background: UM.RecolorImage
|
||||||
{
|
{
|
||||||
|
|
|
@ -13,8 +13,6 @@ Button
|
||||||
|
|
||||||
width: parent.width
|
width: parent.width
|
||||||
height: UM.Theme.getSize("action_button").height
|
height: UM.Theme.getSize("action_button").height
|
||||||
leftPadding: UM.Theme.getSize("thin_margin").width
|
|
||||||
rightPadding: perObjectSettingsInfo.visible ? UM.Theme.getSize("default_lining").width : UM.Theme.getSize("thin_margin").width
|
|
||||||
checkable: true
|
checkable: true
|
||||||
hoverEnabled: true
|
hoverEnabled: true
|
||||||
|
|
||||||
|
@ -46,14 +44,14 @@ Button
|
||||||
width: objectItemButton.width - objectItemButton.leftPadding
|
width: objectItemButton.width - objectItemButton.leftPadding
|
||||||
height: UM.Theme.getSize("action_button").height
|
height: UM.Theme.getSize("action_button").height
|
||||||
|
|
||||||
UM.RecolorImage
|
Rectangle
|
||||||
{
|
{
|
||||||
id: swatch
|
id: swatch
|
||||||
anchors.verticalCenter: parent.verticalCenter
|
anchors.verticalCenter: parent.verticalCenter
|
||||||
anchors.left: parent.left
|
anchors.left: parent.left
|
||||||
width: height
|
width: UM.Theme.getSize("standard_arrow").height
|
||||||
height: parent.height - UM.Theme.getSize("narrow_margin").height
|
height: UM.Theme.getSize("standard_arrow").height
|
||||||
source: UM.Theme.getIcon("Extruder", "medium")
|
radius: Math.round(width / 2)
|
||||||
color: extruderColor
|
color: extruderColor
|
||||||
visible: showExtruderSwatches && extruderColor != ""
|
visible: showExtruderSwatches && extruderColor != ""
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright (c) 2018 Ultimaker B.V.
|
// Copyright (c) 2021 Ultimaker B.V.
|
||||||
// Cura is released under the terms of the LGPLv3 or higher.
|
// Cura is released under the terms of the LGPLv3 or higher.
|
||||||
|
|
||||||
import QtQuick 2.2
|
import QtQuick 2.2
|
||||||
|
@ -9,8 +9,6 @@ import Cura 1.1 as Cura
|
||||||
|
|
||||||
Cura.ActionButton
|
Cura.ActionButton
|
||||||
{
|
{
|
||||||
shadowEnabled: true
|
|
||||||
shadowColor: enabled ? UM.Theme.getColor("primary_button_shadow"): UM.Theme.getColor("action_button_disabled_shadow")
|
|
||||||
color: UM.Theme.getColor("primary_button")
|
color: UM.Theme.getColor("primary_button")
|
||||||
textColor: UM.Theme.getColor("primary_button_text")
|
textColor: UM.Theme.getColor("primary_button_text")
|
||||||
outlineColor: "transparent"
|
outlineColor: "transparent"
|
||||||
|
|
|
@ -226,9 +226,12 @@ Item
|
||||||
{
|
{
|
||||||
Cura.ExtruderIcon
|
Cura.ExtruderIcon
|
||||||
{
|
{
|
||||||
anchors.horizontalCenter: parent.horizontalCenter
|
anchors.centerIn: parent
|
||||||
materialColor: model.color
|
materialColor: model.color
|
||||||
extruderEnabled: model.enabled
|
extruderEnabled: model.enabled
|
||||||
|
iconVariant: "default"
|
||||||
|
height: parent.height
|
||||||
|
width: height
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
onClicked:
|
onClicked:
|
||||||
|
|
|
@ -17,9 +17,6 @@ Cura.ExpandableComponent
|
||||||
|
|
||||||
contentPadding: UM.Theme.getSize("default_lining").width
|
contentPadding: UM.Theme.getSize("default_lining").width
|
||||||
contentHeaderTitle: catalog.i18nc("@label", "Print settings")
|
contentHeaderTitle: catalog.i18nc("@label", "Print settings")
|
||||||
enableHeaderShadow: false
|
|
||||||
headerBackgroundBorder.width: UM.Theme.getSize("default_lining").width
|
|
||||||
headerBackgroundBorder.color: UM.Theme.getColor("lining")
|
|
||||||
enabled: !preSlicedData
|
enabled: !preSlicedData
|
||||||
disabledText: catalog.i18nc("@label shown when we load a Gcode file", "Print setup disabled. G-code file can not be modified.")
|
disabledText: catalog.i18nc("@label shown when we load a Gcode file", "Print setup disabled. G-code file can not be modified.")
|
||||||
|
|
||||||
|
|
|
@ -15,7 +15,8 @@ RowLayout
|
||||||
|
|
||||||
Cura.IconWithText
|
Cura.IconWithText
|
||||||
{
|
{
|
||||||
source: UM.Theme.getIcon("PrintQuality")
|
source: UM.Theme.getIcon("Sliders", "medium")
|
||||||
|
iconSize: UM.Theme.getSize("button_icon").width
|
||||||
text:
|
text:
|
||||||
{
|
{
|
||||||
if (Cura.MachineManager.activeStack)
|
if (Cura.MachineManager.activeStack)
|
||||||
|
@ -53,6 +54,7 @@ RowLayout
|
||||||
source: UM.Theme.getIcon("Infill1")
|
source: UM.Theme.getIcon("Infill1")
|
||||||
text: Cura.MachineManager.activeStack ? parseInt(infillDensity.properties.value) + "%" : "0%"
|
text: Cura.MachineManager.activeStack ? parseInt(infillDensity.properties.value) + "%" : "0%"
|
||||||
font: UM.Theme.getFont("medium")
|
font: UM.Theme.getFont("medium")
|
||||||
|
iconSize: UM.Theme.getSize("medium_button_icon").width
|
||||||
|
|
||||||
UM.SettingPropertyProvider
|
UM.SettingPropertyProvider
|
||||||
{
|
{
|
||||||
|
@ -68,6 +70,7 @@ RowLayout
|
||||||
source: UM.Theme.getIcon("Support")
|
source: UM.Theme.getIcon("Support")
|
||||||
text: supportEnabled.properties.value == "True" ? enabledText : disabledText
|
text: supportEnabled.properties.value == "True" ? enabledText : disabledText
|
||||||
font: UM.Theme.getFont("medium")
|
font: UM.Theme.getFont("medium")
|
||||||
|
iconSize: UM.Theme.getSize("medium_button_icon").width
|
||||||
|
|
||||||
UM.SettingPropertyProvider
|
UM.SettingPropertyProvider
|
||||||
{
|
{
|
||||||
|
@ -83,6 +86,7 @@ RowLayout
|
||||||
source: UM.Theme.getIcon("Adhesion")
|
source: UM.Theme.getIcon("Adhesion")
|
||||||
text: platformAdhesionType.properties.value != "skirt" && platformAdhesionType.properties.value != "none" ? enabledText : disabledText
|
text: platformAdhesionType.properties.value != "skirt" && platformAdhesionType.properties.value != "none" ? enabledText : disabledText
|
||||||
font: UM.Theme.getFont("medium")
|
font: UM.Theme.getFont("medium")
|
||||||
|
iconSize: UM.Theme.getSize("medium_button_icon").width
|
||||||
|
|
||||||
UM.SettingPropertyProvider
|
UM.SettingPropertyProvider
|
||||||
{
|
{
|
||||||
|
|
|
@ -29,6 +29,7 @@ Item
|
||||||
text: catalog.i18nc("@label", "Adhesion")
|
text: catalog.i18nc("@label", "Adhesion")
|
||||||
font: UM.Theme.getFont("medium")
|
font: UM.Theme.getFont("medium")
|
||||||
width: labelColumnWidth
|
width: labelColumnWidth
|
||||||
|
iconSize: UM.Theme.getSize("medium_button_icon").width
|
||||||
}
|
}
|
||||||
|
|
||||||
Item
|
Item
|
||||||
|
|
|
@ -43,7 +43,7 @@ Item
|
||||||
{
|
{
|
||||||
return UM.Theme.getIcon("Infill2")
|
return UM.Theme.getIcon("Infill2")
|
||||||
}
|
}
|
||||||
return UM.Theme.getIcon("Solid")
|
return UM.Theme.getIcon("Infill100")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -65,6 +65,7 @@ Item
|
||||||
text: catalog.i18nc("@label", "Infill") + " (%)"
|
text: catalog.i18nc("@label", "Infill") + " (%)"
|
||||||
font: UM.Theme.getFont("medium")
|
font: UM.Theme.getFont("medium")
|
||||||
width: labelColumnWidth
|
width: labelColumnWidth
|
||||||
|
iconSize: UM.Theme.getSize("medium_button_icon").width
|
||||||
}
|
}
|
||||||
|
|
||||||
Item
|
Item
|
||||||
|
@ -119,6 +120,8 @@ Item
|
||||||
implicitWidth: UM.Theme.getSize("print_setup_slider_handle").width
|
implicitWidth: UM.Theme.getSize("print_setup_slider_handle").width
|
||||||
implicitHeight: implicitWidth
|
implicitHeight: implicitWidth
|
||||||
radius: Math.round(implicitWidth / 2)
|
radius: Math.round(implicitWidth / 2)
|
||||||
|
border.color: UM.Theme.getColor("slider_groove_fill")
|
||||||
|
border.width: UM.Theme.getSize("default_lining").height
|
||||||
}
|
}
|
||||||
|
|
||||||
tickmarks: Repeater
|
tickmarks: Repeater
|
||||||
|
|
|
@ -52,6 +52,7 @@ Item
|
||||||
text: catalog.i18nc("@label", "Profiles")
|
text: catalog.i18nc("@label", "Profiles")
|
||||||
font: UM.Theme.getFont("medium")
|
font: UM.Theme.getFont("medium")
|
||||||
width: labelColumnWidth
|
width: labelColumnWidth
|
||||||
|
iconSize: UM.Theme.getSize("medium_button_icon").width
|
||||||
}
|
}
|
||||||
UM.SimpleButton
|
UM.SimpleButton
|
||||||
{
|
{
|
||||||
|
@ -91,6 +92,7 @@ Item
|
||||||
{
|
{
|
||||||
left: profileLabel.right
|
left: profileLabel.right
|
||||||
right: parent.right
|
right: parent.right
|
||||||
|
verticalCenter: profileLabel.verticalCenter
|
||||||
}
|
}
|
||||||
|
|
||||||
model: Cura.QualityProfilesDropDownMenuModel
|
model: Cura.QualityProfilesDropDownMenuModel
|
||||||
|
|
|
@ -30,6 +30,7 @@ Item
|
||||||
text: catalog.i18nc("@label", "Support")
|
text: catalog.i18nc("@label", "Support")
|
||||||
font: UM.Theme.getFont("medium")
|
font: UM.Theme.getFont("medium")
|
||||||
width: labelColumnWidth
|
width: labelColumnWidth
|
||||||
|
iconSize: UM.Theme.getSize("medium_button_icon").width
|
||||||
}
|
}
|
||||||
|
|
||||||
Item
|
Item
|
||||||
|
@ -218,18 +219,16 @@ Item
|
||||||
elide: Text.ElideLeft
|
elide: Text.ElideLeft
|
||||||
verticalAlignment: Text.AlignVCenter
|
verticalAlignment: Text.AlignVCenter
|
||||||
|
|
||||||
background: UM.RecolorImage
|
background: Rectangle
|
||||||
{
|
{
|
||||||
id: swatch
|
id: swatch
|
||||||
height: Math.round(parent.height / 2)
|
height: Math.round(parent.height / 2)
|
||||||
width: height
|
width: height
|
||||||
|
radius: Math.round(width / 2)
|
||||||
anchors.right: parent.right
|
anchors.right: parent.right
|
||||||
anchors.verticalCenter: parent.verticalCenter
|
anchors.verticalCenter: parent.verticalCenter
|
||||||
anchors.rightMargin: UM.Theme.getSize("thin_margin").width
|
anchors.rightMargin: UM.Theme.getSize("thin_margin").width
|
||||||
|
|
||||||
sourceSize.width: width
|
|
||||||
sourceSize.height: height
|
|
||||||
source: UM.Theme.getIcon("Extruder", "medium")
|
|
||||||
color: supportExtruderCombobox.color
|
color: supportExtruderCombobox.color
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -288,18 +287,16 @@ Item
|
||||||
verticalAlignment: Text.AlignVCenter
|
verticalAlignment: Text.AlignVCenter
|
||||||
rightPadding: swatch.width + UM.Theme.getSize("setting_unit_margin").width
|
rightPadding: swatch.width + UM.Theme.getSize("setting_unit_margin").width
|
||||||
|
|
||||||
background: UM.RecolorImage
|
background: Rectangle
|
||||||
{
|
{
|
||||||
id: swatch
|
id: swatch
|
||||||
height: Math.round(parent.height / 2)
|
height: Math.round(parent.height / 2)
|
||||||
width: height
|
width: height
|
||||||
|
radius: Math.round(width / 2)
|
||||||
anchors.right: parent.right
|
anchors.right: parent.right
|
||||||
anchors.verticalCenter: parent.verticalCenter
|
anchors.verticalCenter: parent.verticalCenter
|
||||||
anchors.rightMargin: UM.Theme.getSize("thin_margin").width
|
anchors.rightMargin: UM.Theme.getSize("thin_margin").width
|
||||||
|
|
||||||
sourceSize.width: width
|
|
||||||
sourceSize.height: height
|
|
||||||
source: UM.Theme.getIcon("Extruder", "medium")
|
|
||||||
color: supportExtruderCombobox.model.getItem(index).color
|
color: supportExtruderCombobox.model.getItem(index).color
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -93,11 +93,11 @@ Cura.ExpandablePopup
|
||||||
{
|
{
|
||||||
if (isGroup)
|
if (isGroup)
|
||||||
{
|
{
|
||||||
return UM.Theme.getIcon("PrinterTriple")
|
return UM.Theme.getIcon("PrinterTriple", "medium")
|
||||||
}
|
}
|
||||||
else if (isNetworkPrinter || isCloudRegistered)
|
else if (isNetworkPrinter || isCloudRegistered)
|
||||||
{
|
{
|
||||||
return UM.Theme.getIcon("Printer")
|
return UM.Theme.getIcon("Printer", "medium")
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -114,8 +114,9 @@ Cura.ExpandablePopup
|
||||||
anchors
|
anchors
|
||||||
{
|
{
|
||||||
bottom: parent.bottom
|
bottom: parent.bottom
|
||||||
|
bottomMargin: - height * 1 / 6
|
||||||
left: parent.left
|
left: parent.left
|
||||||
leftMargin: UM.Theme.getSize("thick_margin").width
|
leftMargin: iconSize - width * 5 / 6
|
||||||
}
|
}
|
||||||
|
|
||||||
source:
|
source:
|
||||||
|
@ -124,13 +125,9 @@ Cura.ExpandablePopup
|
||||||
{
|
{
|
||||||
return UM.Theme.getIcon("CheckBlueBG", "low")
|
return UM.Theme.getIcon("CheckBlueBG", "low")
|
||||||
}
|
}
|
||||||
else if (connectionStatus == "printer_cloud_connected")
|
else if (connectionStatus == "printer_cloud_connected" || connectionStatus == "printer_cloud_not_available")
|
||||||
{
|
{
|
||||||
return UM.Theme.getIcon("CloudBlueBG", "low")
|
return UM.Theme.getIcon("CloudBadge", "low")
|
||||||
}
|
|
||||||
else if (connectionStatus == "printer_cloud_not_available")
|
|
||||||
{
|
|
||||||
return UM.Theme.getIcon("CloudGreyBG", "low")
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -150,11 +147,10 @@ Cura.ExpandablePopup
|
||||||
{
|
{
|
||||||
id: iconBackground
|
id: iconBackground
|
||||||
anchors.centerIn: parent
|
anchors.centerIn: parent
|
||||||
// Make it a bit bigger so there is an outline
|
width: parent.width - 1.5 //1.5 pixels smaller, (at least sqrt(2), regardless of screen pixel scale) so that the circle doesn't show up behind the icon due to anti-aliasing.
|
||||||
width: parent.width + 2 * UM.Theme.getSize("default_lining").width
|
height: parent.height - 1.5
|
||||||
height: parent.height + 2 * UM.Theme.getSize("default_lining").height
|
radius: width / 2
|
||||||
radius: Math.round(width / 2)
|
color: UM.Theme.getColor("connection_badge_background")
|
||||||
color: UM.Theme.getColor("main_background")
|
|
||||||
z: parent.z - 1
|
z: parent.z - 1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -146,6 +146,7 @@ Item
|
||||||
}
|
}
|
||||||
radius: Math.round(width / 2)
|
radius: Math.round(width / 2)
|
||||||
color: activeColor
|
color: activeColor
|
||||||
|
border.color: defaultItemColor
|
||||||
visible: checkbox.checked
|
visible: checkbox.checked
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright (c) 2018 Ultimaker B.V.
|
// Copyright (c) 2021 Ultimaker B.V.
|
||||||
// Cura is released under the terms of the LGPLv3 or higher.
|
// Cura is released under the terms of the LGPLv3 or higher.
|
||||||
|
|
||||||
import QtQuick 2.2
|
import QtQuick 2.2
|
||||||
|
@ -9,11 +9,9 @@ import Cura 1.1 as Cura
|
||||||
|
|
||||||
Cura.ActionButton
|
Cura.ActionButton
|
||||||
{
|
{
|
||||||
shadowEnabled: true
|
|
||||||
shadowColor: enabled ? UM.Theme.getColor("secondary_button_shadow"): UM.Theme.getColor("action_button_disabled_shadow")
|
|
||||||
color: UM.Theme.getColor("secondary_button")
|
color: UM.Theme.getColor("secondary_button")
|
||||||
textColor: UM.Theme.getColor("secondary_button_text")
|
textColor: UM.Theme.getColor("secondary_button_text")
|
||||||
outlineColor: "transparent"
|
outlineColor: UM.Theme.getColor("secondary_button_text")
|
||||||
disabledColor: UM.Theme.getColor("action_button_disabled")
|
disabledColor: UM.Theme.getColor("action_button_disabled")
|
||||||
textDisabledColor: UM.Theme.getColor("action_button_disabled_text")
|
textDisabledColor: UM.Theme.getColor("action_button_disabled_text")
|
||||||
hoverColor: UM.Theme.getColor("secondary_button_hover")
|
hoverColor: UM.Theme.getColor("secondary_button_hover")
|
||||||
|
|
|
@ -16,10 +16,13 @@ Button
|
||||||
anchors.rightMargin: 2 * UM.Theme.getSize("thin_margin").width
|
anchors.rightMargin: 2 * UM.Theme.getSize("thin_margin").width
|
||||||
hoverEnabled: true
|
hoverEnabled: true
|
||||||
|
|
||||||
|
height: UM.Theme.getSize("section_icon_column").height
|
||||||
|
|
||||||
background: Rectangle
|
background: Rectangle
|
||||||
{
|
{
|
||||||
id: backgroundRectangle
|
id: backgroundRectangle
|
||||||
height: UM.Theme.getSize("section").height
|
height: UM.Theme.getSize("section").height
|
||||||
|
anchors.verticalCenter: parent.verticalCenter
|
||||||
color:
|
color:
|
||||||
{
|
{
|
||||||
if (!base.enabled)
|
if (!base.enabled)
|
||||||
|
@ -107,8 +110,8 @@ Button
|
||||||
source: UM.Theme.getIcon(definition.icon)
|
source: UM.Theme.getIcon(definition.icon)
|
||||||
width: UM.Theme.getSize("section_icon").width
|
width: UM.Theme.getSize("section_icon").width
|
||||||
height: UM.Theme.getSize("section_icon").height
|
height: UM.Theme.getSize("section_icon").height
|
||||||
sourceSize.width: width + 15 * screenScaleFactor
|
sourceSize.width: width
|
||||||
sourceSize.height: width + 15 * screenScaleFactor
|
sourceSize.height: width
|
||||||
}
|
}
|
||||||
|
|
||||||
onClicked:
|
onClicked:
|
||||||
|
@ -141,8 +144,8 @@ Button
|
||||||
id: settingsButton
|
id: settingsButton
|
||||||
|
|
||||||
visible: base.hovered || settingsButton.hovered
|
visible: base.hovered || settingsButton.hovered
|
||||||
height: Math.round(base.height * 0.6)
|
height: UM.Theme.getSize("small_button_icon").height
|
||||||
width: Math.round(base.height * 0.6)
|
width: height
|
||||||
|
|
||||||
anchors
|
anchors
|
||||||
{
|
{
|
||||||
|
@ -184,7 +187,7 @@ Button
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
height: Math.round(parent.height / 2)
|
height: UM.Theme.getSize("small_button_icon").height
|
||||||
width: height
|
width: height
|
||||||
|
|
||||||
onClicked:
|
onClicked:
|
||||||
|
|
|
@ -77,7 +77,7 @@ SettingItem
|
||||||
|
|
||||||
currentIndex: propertyProvider.properties.value !== undefined ? propertyProvider.properties.value : 0
|
currentIndex: propertyProvider.properties.value !== undefined ? propertyProvider.properties.value : 0
|
||||||
|
|
||||||
property string color: "#fff"
|
property string color: "transparent"
|
||||||
|
|
||||||
Binding
|
Binding
|
||||||
{
|
{
|
||||||
|
@ -85,7 +85,7 @@ SettingItem
|
||||||
// explicit binding here otherwise we do not handle value changes after the model changes.
|
// explicit binding here otherwise we do not handle value changes after the model changes.
|
||||||
target: control
|
target: control
|
||||||
property: "color"
|
property: "color"
|
||||||
value: control.currentText != "" ? control.model.getItem(control.currentIndex).color : ""
|
value: control.currentText != "" ? control.model.getItem(control.currentIndex).color : "transparent"
|
||||||
}
|
}
|
||||||
|
|
||||||
Binding
|
Binding
|
||||||
|
@ -160,18 +160,16 @@ SettingItem
|
||||||
elide: Text.ElideLeft
|
elide: Text.ElideLeft
|
||||||
verticalAlignment: Text.AlignVCenter
|
verticalAlignment: Text.AlignVCenter
|
||||||
|
|
||||||
background: UM.RecolorImage
|
background: Rectangle
|
||||||
{
|
{
|
||||||
id: swatch
|
id: swatch
|
||||||
height: Math.round(parent.height / 2)
|
height: Math.round(parent.height / 2)
|
||||||
width: height
|
width: height
|
||||||
|
radius: Math.round(width / 2)
|
||||||
anchors.right: parent.right
|
anchors.right: parent.right
|
||||||
anchors.verticalCenter: parent.verticalCenter
|
anchors.verticalCenter: parent.verticalCenter
|
||||||
anchors.rightMargin: UM.Theme.getSize("thin_margin").width
|
anchors.rightMargin: UM.Theme.getSize("thin_margin").width
|
||||||
|
|
||||||
sourceSize.width: width
|
|
||||||
sourceSize.height: height
|
|
||||||
source: UM.Theme.getIcon("Extruder", "medium")
|
|
||||||
color: control.color
|
color: control.color
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -229,18 +227,16 @@ SettingItem
|
||||||
verticalAlignment: Text.AlignVCenter
|
verticalAlignment: Text.AlignVCenter
|
||||||
rightPadding: swatch.width + UM.Theme.getSize("setting_unit_margin").width
|
rightPadding: swatch.width + UM.Theme.getSize("setting_unit_margin").width
|
||||||
|
|
||||||
background: UM.RecolorImage
|
background: Rectangle
|
||||||
{
|
{
|
||||||
id: swatch
|
id: swatch
|
||||||
height: Math.round(parent.height / 2)
|
height: Math.round(parent.height / 2)
|
||||||
width: height
|
width: height
|
||||||
|
radius: Math.round(width / 2)
|
||||||
anchors.right: parent.right
|
anchors.right: parent.right
|
||||||
anchors.verticalCenter: parent.verticalCenter
|
anchors.verticalCenter: parent.verticalCenter
|
||||||
anchors.rightMargin: UM.Theme.getSize("thin_margin").width
|
anchors.rightMargin: UM.Theme.getSize("thin_margin").width
|
||||||
|
|
||||||
sourceSize.width: width
|
|
||||||
sourceSize.height: height
|
|
||||||
source: UM.Theme.getIcon("Extruder", "medium")
|
|
||||||
color: control.model.getItem(index).color
|
color: control.model.getItem(index).color
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -156,7 +156,7 @@ Item
|
||||||
{
|
{
|
||||||
id: settingControls
|
id: settingControls
|
||||||
|
|
||||||
height: UM.Theme.getSize("section_control").height
|
height: UM.Theme.getSize("small_button_icon").height
|
||||||
spacing: Math.round(UM.Theme.getSize("thick_margin").height / 2)
|
spacing: Math.round(UM.Theme.getSize("thick_margin").height / 2)
|
||||||
|
|
||||||
anchors
|
anchors
|
||||||
|
@ -174,6 +174,7 @@ Item
|
||||||
|
|
||||||
anchors.top: parent.top
|
anchors.top: parent.top
|
||||||
anchors.bottom: parent.bottom
|
anchors.bottom: parent.bottom
|
||||||
|
height: UM.Theme.getSize("small_button_icon").height
|
||||||
width: height
|
width: height
|
||||||
|
|
||||||
color: UM.Theme.getColor("setting_control_button")
|
color: UM.Theme.getColor("setting_control_button")
|
||||||
|
@ -203,6 +204,7 @@ Item
|
||||||
|
|
||||||
anchors.top: parent.top
|
anchors.top: parent.top
|
||||||
anchors.bottom: parent.bottom
|
anchors.bottom: parent.bottom
|
||||||
|
height: UM.Theme.getSize("small_button_icon").height
|
||||||
width: height
|
width: height
|
||||||
|
|
||||||
color: UM.Theme.getColor("setting_control_button")
|
color: UM.Theme.getColor("setting_control_button")
|
||||||
|
@ -286,6 +288,7 @@ Item
|
||||||
|
|
||||||
anchors.top: parent.top
|
anchors.top: parent.top
|
||||||
anchors.bottom: parent.bottom
|
anchors.bottom: parent.bottom
|
||||||
|
height: UM.Theme.getSize("small_button_icon").height
|
||||||
width: height
|
width: height
|
||||||
|
|
||||||
onClicked:
|
onClicked:
|
||||||
|
|
|
@ -88,7 +88,7 @@ SettingItem
|
||||||
when: control.model.items.length > 0
|
when: control.model.items.length > 0
|
||||||
}
|
}
|
||||||
|
|
||||||
property string color: "#fff"
|
property string color: "transparent"
|
||||||
|
|
||||||
Binding
|
Binding
|
||||||
{
|
{
|
||||||
|
@ -96,7 +96,7 @@ SettingItem
|
||||||
// explicit binding here otherwise we do not handle value changes after the model changes.
|
// explicit binding here otherwise we do not handle value changes after the model changes.
|
||||||
target: control
|
target: control
|
||||||
property: "color"
|
property: "color"
|
||||||
value: control.currentText != "" ? control.model.getItem(control.currentIndex).color : ""
|
value: control.currentText != "" ? control.model.getItem(control.currentIndex).color : "transparent"
|
||||||
}
|
}
|
||||||
|
|
||||||
indicator: UM.RecolorImage
|
indicator: UM.RecolorImage
|
||||||
|
@ -161,18 +161,16 @@ SettingItem
|
||||||
elide: Text.ElideRight
|
elide: Text.ElideRight
|
||||||
verticalAlignment: Text.AlignVCenter
|
verticalAlignment: Text.AlignVCenter
|
||||||
|
|
||||||
background: UM.RecolorImage
|
background: Rectangle
|
||||||
{
|
{
|
||||||
id: swatch
|
id: swatch
|
||||||
height: Math.round(parent.height / 2)
|
height: Math.round(parent.height / 2)
|
||||||
width: height
|
width: height
|
||||||
|
radius: Math.round(width / 2)
|
||||||
anchors.right: parent.right
|
anchors.right: parent.right
|
||||||
anchors.verticalCenter: parent.verticalCenter
|
anchors.verticalCenter: parent.verticalCenter
|
||||||
anchors.rightMargin: UM.Theme.getSize("thin_margin").width
|
anchors.rightMargin: UM.Theme.getSize("thin_margin").width
|
||||||
|
|
||||||
sourceSize.width: width
|
|
||||||
sourceSize.height: height
|
|
||||||
source: UM.Theme.getIcon("Extruder", "medium")
|
|
||||||
color: control.color
|
color: control.color
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -226,18 +224,16 @@ SettingItem
|
||||||
verticalAlignment: Text.AlignVCenter
|
verticalAlignment: Text.AlignVCenter
|
||||||
rightPadding: swatch.width + UM.Theme.getSize("setting_unit_margin").width
|
rightPadding: swatch.width + UM.Theme.getSize("setting_unit_margin").width
|
||||||
|
|
||||||
background: UM.RecolorImage
|
background: Rectangle
|
||||||
{
|
{
|
||||||
id: swatch
|
id: swatch
|
||||||
height: Math.round(parent.height / 2)
|
height: Math.round(parent.height / 2)
|
||||||
width: height
|
width: height
|
||||||
|
radius: Math.round(width / 2)
|
||||||
anchors.right: parent.right
|
anchors.right: parent.right
|
||||||
anchors.verticalCenter: parent.verticalCenter
|
anchors.verticalCenter: parent.verticalCenter
|
||||||
anchors.rightMargin: UM.Theme.getSize("thin_margin").width
|
anchors.rightMargin: UM.Theme.getSize("thin_margin").width
|
||||||
|
|
||||||
sourceSize.width: width
|
|
||||||
sourceSize.height: height
|
|
||||||
source: UM.Theme.getIcon("Extruder", "medium")
|
|
||||||
color: control.model.getItem(index).color
|
color: control.model.getItem(index).color
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -65,7 +65,13 @@ Item
|
||||||
anchors.right: clearFilterButton.left
|
anchors.right: clearFilterButton.left
|
||||||
anchors.rightMargin: Math.round(UM.Theme.getSize("thick_margin").width)
|
anchors.rightMargin: Math.round(UM.Theme.getSize("thick_margin").width)
|
||||||
|
|
||||||
placeholderText: "<img align='middle' src='"+ UM.Theme.getIcon("Magnifier") +"'>" + "<div vertical-align=bottom>" + catalog.i18nc("@label:textbox", "Search settings")
|
placeholderText:
|
||||||
|
{
|
||||||
|
var imageSize = "width='" + UM.Theme.getSize("small_button_icon").width + "' height='" + UM.Theme.getSize("small_button_icon").height
|
||||||
|
var imageSource = "' src='"+ UM.Theme.getIcon("Magnifier")
|
||||||
|
var searchPlaceholder = catalog.i18nc("@label:textbox", "Search settings")
|
||||||
|
return "<img align='middle' " + imageSize + imageSource +"'>" + "<div vertical-align=bottom>" + searchPlaceholder
|
||||||
|
}
|
||||||
|
|
||||||
style: TextFieldStyle
|
style: TextFieldStyle
|
||||||
{
|
{
|
||||||
|
@ -188,8 +194,8 @@ Item
|
||||||
{
|
{
|
||||||
anchors.verticalCenter: parent.verticalCenter
|
anchors.verticalCenter: parent.verticalCenter
|
||||||
anchors.horizontalCenter: parent.horizontalCenter
|
anchors.horizontalCenter: parent.horizontalCenter
|
||||||
width: UM.Theme.getSize("standard_arrow").width
|
width: UM.Theme.getSize("medium_button_icon").width
|
||||||
height: UM.Theme.getSize("standard_arrow").height
|
height: UM.Theme.getSize("medium_button_icon").height
|
||||||
sourceSize.width: width
|
sourceSize.width: width
|
||||||
sourceSize.height: height
|
sourceSize.height: height
|
||||||
color: control.hovered ? UM.Theme.getColor("small_button_text_hover") : UM.Theme.getColor("small_button_text")
|
color: control.hovered ? UM.Theme.getColor("small_button_text_hover") : UM.Theme.getColor("small_button_text")
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright (c) 2020 Ultimaker B.V.
|
// Copyright (c) 2021 Ultimaker B.V.
|
||||||
// Cura is released under the terms of the LGPLv3 or higher.
|
// Cura is released under the terms of the LGPLv3 or higher.
|
||||||
|
|
||||||
import QtQuick 2.2
|
import QtQuick 2.2
|
||||||
|
@ -9,8 +9,6 @@ import Cura 1.1 as Cura
|
||||||
|
|
||||||
Cura.ActionButton
|
Cura.ActionButton
|
||||||
{
|
{
|
||||||
shadowEnabled: true
|
|
||||||
shadowColor: enabled ? UM.Theme.getColor("secondary_button_shadow"): UM.Theme.getColor("action_button_disabled_shadow")
|
|
||||||
color: "transparent"
|
color: "transparent"
|
||||||
textColor: UM.Theme.getColor("text_link")
|
textColor: UM.Theme.getColor("text_link")
|
||||||
outlineColor: "transparent"
|
outlineColor: "transparent"
|
||||||
|
|
|
@ -68,7 +68,8 @@ Item
|
||||||
source: UM.Theme.getIcon(model.icon) != "" ? UM.Theme.getIcon(model.icon) : "file:///" + model.location + "/" + model.icon
|
source: UM.Theme.getIcon(model.icon) != "" ? UM.Theme.getIcon(model.icon) : "file:///" + model.location + "/" + model.icon
|
||||||
color: UM.Theme.getColor("icon")
|
color: UM.Theme.getColor("icon")
|
||||||
|
|
||||||
sourceSize: Math.round(UM.Theme.getSize("button") / 2)
|
sourceSize.height: Math.round(UM.Theme.getSize("button").height / 2)
|
||||||
|
sourceSize.width: Math.round(UM.Theme.getSize("button").width / 2)
|
||||||
}
|
}
|
||||||
|
|
||||||
onCheckedChanged:
|
onCheckedChanged:
|
||||||
|
|
|
@ -11,5 +11,4 @@ UM.SimpleButton
|
||||||
height: UM.Theme.getSize("small_button").height
|
height: UM.Theme.getSize("small_button").height
|
||||||
hoverColor: UM.Theme.getColor("small_button_text_hover")
|
hoverColor: UM.Theme.getColor("small_button_text_hover")
|
||||||
color: UM.Theme.getColor("small_button_text")
|
color: UM.Theme.getColor("small_button_text")
|
||||||
iconMargin: UM.Theme.getSize("thick_lining").width
|
|
||||||
}
|
}
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright (c) 2019 Ultimaker B.V.
|
// Copyright (c) 2021 Ultimaker B.V.
|
||||||
// Cura is released under the terms of the LGPLv3 or higher.
|
// Cura is released under the terms of the LGPLv3 or higher.
|
||||||
|
|
||||||
import QtQuick 2.10
|
import QtQuick 2.10
|
||||||
|
@ -214,16 +214,16 @@ Item
|
||||||
id: troubleshootingButton
|
id: troubleshootingButton
|
||||||
|
|
||||||
anchors.right: parent.right
|
anchors.right: parent.right
|
||||||
anchors.rightMargin: UM.Theme.getSize("default_margin").width
|
anchors.rightMargin: UM.Theme.getSize("thin_margin").width
|
||||||
anchors.verticalCenter: parent.verticalCenter
|
anchors.verticalCenter: parent.verticalCenter
|
||||||
height: troubleshootingLinkIcon.height
|
height: troubleshootingLinkIcon.height
|
||||||
width: troubleshootingLinkIcon.width + troubleshootingLabel.width + UM.Theme.getSize("default_margin").width
|
width: troubleshootingLinkIcon.width + troubleshootingLabel.width + UM.Theme.getSize("thin_margin").width
|
||||||
|
|
||||||
UM.RecolorImage
|
UM.RecolorImage
|
||||||
{
|
{
|
||||||
id: troubleshootingLinkIcon
|
id: troubleshootingLinkIcon
|
||||||
anchors.right: troubleshootingLabel.left
|
anchors.right: troubleshootingLabel.left
|
||||||
anchors.rightMargin: UM.Theme.getSize("default_margin").width
|
anchors.rightMargin: UM.Theme.getSize("thin_margin").width
|
||||||
anchors.verticalCenter: parent.verticalCenter
|
anchors.verticalCenter: parent.verticalCenter
|
||||||
height: troubleshootingLabel.height
|
height: troubleshootingLabel.height
|
||||||
width: height
|
width: height
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright (c) 2019 Ultimaker B.V.
|
// Copyright (c) 2021 Ultimaker B.V.
|
||||||
// Cura is released under the terms of the LGPLv3 or higher.
|
// Cura is released under the terms of the LGPLv3 or higher.
|
||||||
|
|
||||||
import QtQuick 2.10
|
import QtQuick 2.10
|
||||||
|
@ -15,6 +15,8 @@ TextField
|
||||||
{
|
{
|
||||||
id: textField
|
id: textField
|
||||||
|
|
||||||
|
property alias leftIcon: iconLeft.source
|
||||||
|
|
||||||
UM.I18nCatalog { id: catalog; name: "cura" }
|
UM.I18nCatalog { id: catalog; name: "cura" }
|
||||||
|
|
||||||
hoverEnabled: true
|
hoverEnabled: true
|
||||||
|
@ -22,6 +24,7 @@ TextField
|
||||||
font: UM.Theme.getFont("default")
|
font: UM.Theme.getFont("default")
|
||||||
color: UM.Theme.getColor("text")
|
color: UM.Theme.getColor("text")
|
||||||
renderType: Text.NativeRendering
|
renderType: Text.NativeRendering
|
||||||
|
leftPadding: iconLeft.visible ? iconLeft.width + UM.Theme.getSize("default_margin").width * 2 : UM.Theme.getSize("thin_margin").width
|
||||||
|
|
||||||
states: [
|
states: [
|
||||||
State
|
State
|
||||||
|
@ -52,7 +55,6 @@ TextField
|
||||||
|
|
||||||
color: UM.Theme.getColor("main_background")
|
color: UM.Theme.getColor("main_background")
|
||||||
|
|
||||||
anchors.margins: Math.round(UM.Theme.getSize("default_lining").width)
|
|
||||||
radius: UM.Theme.getSize("setting_control_radius").width
|
radius: UM.Theme.getSize("setting_control_radius").width
|
||||||
|
|
||||||
border.color:
|
border.color:
|
||||||
|
@ -67,5 +69,23 @@ TextField
|
||||||
}
|
}
|
||||||
return UM.Theme.getColor("setting_control_border")
|
return UM.Theme.getColor("setting_control_border")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Optional icon added on the left hand side.
|
||||||
|
UM.RecolorImage
|
||||||
|
{
|
||||||
|
id: iconLeft
|
||||||
|
|
||||||
|
anchors
|
||||||
|
{
|
||||||
|
verticalCenter: parent.verticalCenter
|
||||||
|
left: parent.left
|
||||||
|
leftMargin: UM.Theme.getSize("default_margin").width
|
||||||
|
}
|
||||||
|
|
||||||
|
visible: source != ""
|
||||||
|
height: UM.Theme.getSize("small_button_icon").height
|
||||||
|
width: visible ? height : 0
|
||||||
|
color: textField.color
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
47
resources/quality/strateo3d/HT0.4/s3d_ht0.4_ABS-X_A.inst.cfg
Normal file
47
resources/quality/strateo3d/HT0.4/s3d_ht0.4_ABS-X_A.inst.cfg
Normal file
|
@ -0,0 +1,47 @@
|
||||||
|
[general]
|
||||||
|
version = 4
|
||||||
|
name = A
|
||||||
|
definition = strateo3d
|
||||||
|
|
||||||
|
[metadata]
|
||||||
|
setting_version = 17
|
||||||
|
type = quality
|
||||||
|
quality_type = a
|
||||||
|
weight = 1
|
||||||
|
material = emotiontech_absx
|
||||||
|
variant = High temp 0.4
|
||||||
|
|
||||||
|
[values]
|
||||||
|
layer_height_0 = =round(0.5*machine_nozzle_size, 2)
|
||||||
|
line_width = =machine_nozzle_size/machine_nozzle_size*0.4
|
||||||
|
wall_line_width = =machine_nozzle_size/machine_nozzle_size*0.35
|
||||||
|
wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.3
|
||||||
|
wall_0_wipe_dist = =machine_nozzle_size/2
|
||||||
|
speed_print = 50
|
||||||
|
speed_wall = =math.ceil(speed_print * 35/50)
|
||||||
|
speed_wall_0 = =math.ceil(speed_wall * 30/35)
|
||||||
|
speed_topbottom = =math.ceil(speed_print * 35/50)
|
||||||
|
speed_layer_0 = =math.ceil(speed_print * 20/50)
|
||||||
|
speed_slowdown_layers = 2
|
||||||
|
cool_fan_enabled = True
|
||||||
|
cool_fan_speed = 35
|
||||||
|
cool_fan_speed_max = 100
|
||||||
|
cool_min_layer_time_fan_speed_max = 20
|
||||||
|
cool_min_layer_time = 11
|
||||||
|
cool_fan_full_at_height = =layer_height_0 + 19 * layer_height
|
||||||
|
cool_min_speed = 10
|
||||||
|
support_angle = 65
|
||||||
|
material_print_temperature = =default_material_print_temperature + 3
|
||||||
|
material_print_temperature_layer_0 = =default_material_print_temperature
|
||||||
|
material_flow = 100
|
||||||
|
retraction_extra_prime_amount = 0.1
|
||||||
|
retraction_min_travel = =3*line_width
|
||||||
|
retraction_hop_only_when_collides = True
|
||||||
|
skin_overlap = 10
|
||||||
|
support_z_distance = =layer_height
|
||||||
|
support_bottom_distance = =support_z_distance
|
||||||
|
support_xy_distance = =line_width * 1.7
|
||||||
|
support_xy_distance_overhang = =wall_line_width_0
|
||||||
|
support_offset = 1
|
||||||
|
support_interface_density = 100
|
||||||
|
prime_tower_enable = True
|
47
resources/quality/strateo3d/HT0.4/s3d_ht0.4_ABS-X_B.inst.cfg
Normal file
47
resources/quality/strateo3d/HT0.4/s3d_ht0.4_ABS-X_B.inst.cfg
Normal file
|
@ -0,0 +1,47 @@
|
||||||
|
[general]
|
||||||
|
version = 4
|
||||||
|
name = B
|
||||||
|
definition = strateo3d
|
||||||
|
|
||||||
|
[metadata]
|
||||||
|
setting_version = 17
|
||||||
|
type = quality
|
||||||
|
quality_type = b
|
||||||
|
weight = 0
|
||||||
|
material = emotiontech_absx
|
||||||
|
variant = High temp 0.4
|
||||||
|
|
||||||
|
[values]
|
||||||
|
layer_height_0 = =round(0.67*machine_nozzle_size, 2)
|
||||||
|
line_width = =machine_nozzle_size/machine_nozzle_size*0.4
|
||||||
|
wall_line_width = =machine_nozzle_size/machine_nozzle_size*0.35
|
||||||
|
wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.3
|
||||||
|
wall_0_wipe_dist = =machine_nozzle_size/2
|
||||||
|
speed_print = 55
|
||||||
|
speed_wall = =math.ceil(speed_print * 37/55)
|
||||||
|
speed_wall_0 = =math.ceil(speed_wall * 33/37)
|
||||||
|
speed_topbottom = =math.ceil(speed_print * 37/55)
|
||||||
|
speed_layer_0 = =math.ceil(speed_print * 25/55)
|
||||||
|
speed_slowdown_layers = 2
|
||||||
|
cool_fan_enabled = True
|
||||||
|
cool_fan_speed = 35
|
||||||
|
cool_fan_speed_max = 100
|
||||||
|
cool_min_layer_time_fan_speed_max = 20
|
||||||
|
cool_min_layer_time = 11
|
||||||
|
cool_fan_full_at_height = =layer_height_0 + 14 * layer_height
|
||||||
|
cool_min_speed = 10
|
||||||
|
support_angle = 60
|
||||||
|
material_print_temperature = =default_material_print_temperature + 5
|
||||||
|
material_print_temperature_layer_0 = =default_material_print_temperature + 3
|
||||||
|
material_flow = 96
|
||||||
|
retraction_extra_prime_amount = 0.1
|
||||||
|
retraction_min_travel = =3*line_width
|
||||||
|
retraction_hop_only_when_collides = True
|
||||||
|
skin_overlap = 15
|
||||||
|
support_z_distance = =layer_height
|
||||||
|
support_bottom_distance = =support_z_distance
|
||||||
|
support_xy_distance = =line_width * 1.7
|
||||||
|
support_xy_distance_overhang = =wall_line_width_0
|
||||||
|
support_offset = 1
|
||||||
|
support_interface_density = 100
|
||||||
|
prime_tower_enable = True
|
47
resources/quality/strateo3d/HT0.4/s3d_ht0.4_ABS-X_C.inst.cfg
Normal file
47
resources/quality/strateo3d/HT0.4/s3d_ht0.4_ABS-X_C.inst.cfg
Normal file
|
@ -0,0 +1,47 @@
|
||||||
|
[general]
|
||||||
|
version = 4
|
||||||
|
name = C
|
||||||
|
definition = strateo3d
|
||||||
|
|
||||||
|
[metadata]
|
||||||
|
setting_version = 17
|
||||||
|
type = quality
|
||||||
|
quality_type = c
|
||||||
|
weight = -1
|
||||||
|
material = emotiontech_absx
|
||||||
|
variant = High temp 0.4
|
||||||
|
|
||||||
|
[values]
|
||||||
|
layer_height_0 = =round(0.75*machine_nozzle_size, 2)
|
||||||
|
line_width = =machine_nozzle_size/machine_nozzle_size*0.4
|
||||||
|
wall_line_width = =machine_nozzle_size/machine_nozzle_size*0.35
|
||||||
|
wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.3
|
||||||
|
wall_0_wipe_dist = =machine_nozzle_size/2
|
||||||
|
speed_print = 60
|
||||||
|
speed_wall = =math.ceil(speed_print * 40/60)
|
||||||
|
speed_wall_0 = =math.ceil(speed_wall * 35/40)
|
||||||
|
speed_topbottom = =math.ceil(speed_print * 40/60)
|
||||||
|
speed_layer_0 = =math.ceil(speed_print * 30/60)
|
||||||
|
speed_slowdown_layers = 2
|
||||||
|
cool_fan_enabled = True
|
||||||
|
cool_fan_speed = 35
|
||||||
|
cool_fan_speed_max = 100
|
||||||
|
cool_min_layer_time_fan_speed_max = 20
|
||||||
|
cool_min_layer_time = 11
|
||||||
|
cool_fan_full_at_height = =layer_height_0 + 9 * layer_height
|
||||||
|
cool_min_speed = 10
|
||||||
|
support_angle = 55
|
||||||
|
material_print_temperature = =default_material_print_temperature + 10
|
||||||
|
material_print_temperature_layer_0 = =default_material_print_temperature + 5
|
||||||
|
material_flow = 91
|
||||||
|
retraction_extra_prime_amount = 0.1
|
||||||
|
retraction_min_travel = =3*line_width
|
||||||
|
retraction_hop_only_when_collides = True
|
||||||
|
skin_overlap = 20
|
||||||
|
support_z_distance = =layer_height
|
||||||
|
support_bottom_distance = =support_z_distance
|
||||||
|
support_xy_distance = =line_width * 1.7
|
||||||
|
support_xy_distance_overhang = =wall_line_width_0
|
||||||
|
support_offset = 1
|
||||||
|
support_interface_density = 100
|
||||||
|
prime_tower_enable = True
|
47
resources/quality/strateo3d/HT0.4/s3d_ht0.4_ABS_A.inst.cfg
Normal file
47
resources/quality/strateo3d/HT0.4/s3d_ht0.4_ABS_A.inst.cfg
Normal file
|
@ -0,0 +1,47 @@
|
||||||
|
[general]
|
||||||
|
version = 4
|
||||||
|
name = A
|
||||||
|
definition = strateo3d
|
||||||
|
|
||||||
|
[metadata]
|
||||||
|
setting_version = 17
|
||||||
|
type = quality
|
||||||
|
quality_type = a
|
||||||
|
weight = 1
|
||||||
|
material = emotiontech_abs
|
||||||
|
variant = High temp 0.4
|
||||||
|
|
||||||
|
[values]
|
||||||
|
layer_height_0 = =round(0.5*machine_nozzle_size, 2)
|
||||||
|
line_width = =machine_nozzle_size/machine_nozzle_size*0.4
|
||||||
|
wall_line_width = =machine_nozzle_size/machine_nozzle_size*0.35
|
||||||
|
wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.3
|
||||||
|
wall_0_wipe_dist = =machine_nozzle_size/2
|
||||||
|
speed_print = 50
|
||||||
|
speed_wall = =math.ceil(speed_print * 35/50)
|
||||||
|
speed_wall_0 = =math.ceil(speed_wall * 30/35)
|
||||||
|
speed_topbottom = =math.ceil(speed_print * 35/50)
|
||||||
|
speed_layer_0 = =math.ceil(speed_print * 20/50)
|
||||||
|
speed_slowdown_layers = 2
|
||||||
|
cool_fan_enabled = True
|
||||||
|
cool_fan_speed = 35
|
||||||
|
cool_fan_speed_max = 100
|
||||||
|
cool_min_layer_time_fan_speed_max = 20
|
||||||
|
cool_min_layer_time = 11
|
||||||
|
cool_fan_full_at_height = =layer_height_0 + 19 * layer_height
|
||||||
|
cool_min_speed = 10
|
||||||
|
support_angle = 65
|
||||||
|
material_print_temperature = =default_material_print_temperature + 1
|
||||||
|
material_print_temperature_layer_0 = =default_material_print_temperature
|
||||||
|
material_flow = 100
|
||||||
|
retraction_extra_prime_amount = 0.1
|
||||||
|
retraction_min_travel = =3*line_width
|
||||||
|
retraction_hop_only_when_collides = True
|
||||||
|
skin_overlap = 10
|
||||||
|
support_z_distance = =layer_height
|
||||||
|
support_bottom_distance = =support_z_distance
|
||||||
|
support_xy_distance = =line_width * 1.7
|
||||||
|
support_xy_distance_overhang = =wall_line_width_0
|
||||||
|
support_offset = 1
|
||||||
|
support_interface_density = 100
|
||||||
|
prime_tower_enable = True
|
47
resources/quality/strateo3d/HT0.4/s3d_ht0.4_ABS_B.inst.cfg
Normal file
47
resources/quality/strateo3d/HT0.4/s3d_ht0.4_ABS_B.inst.cfg
Normal file
|
@ -0,0 +1,47 @@
|
||||||
|
[general]
|
||||||
|
version = 4
|
||||||
|
name = B
|
||||||
|
definition = strateo3d
|
||||||
|
|
||||||
|
[metadata]
|
||||||
|
setting_version = 17
|
||||||
|
type = quality
|
||||||
|
quality_type = b
|
||||||
|
weight = 0
|
||||||
|
material = emotiontech_abs
|
||||||
|
variant = High temp 0.4
|
||||||
|
|
||||||
|
[values]
|
||||||
|
layer_height_0 = =round(0.67*machine_nozzle_size, 2)
|
||||||
|
line_width = =machine_nozzle_size/machine_nozzle_size*0.4
|
||||||
|
wall_line_width = =machine_nozzle_size/machine_nozzle_size*0.35
|
||||||
|
wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.3
|
||||||
|
wall_0_wipe_dist = =machine_nozzle_size/2
|
||||||
|
speed_print = 55
|
||||||
|
speed_wall = =math.ceil(speed_print * 37/55)
|
||||||
|
speed_wall_0 = =math.ceil(speed_wall * 33/37)
|
||||||
|
speed_topbottom = =math.ceil(speed_print * 37/55)
|
||||||
|
speed_layer_0 = =math.ceil(speed_print * 25/55)
|
||||||
|
speed_slowdown_layers = 2
|
||||||
|
cool_fan_enabled = True
|
||||||
|
cool_fan_speed = 35
|
||||||
|
cool_fan_speed_max = 100
|
||||||
|
cool_min_layer_time_fan_speed_max = 20
|
||||||
|
cool_min_layer_time = 11
|
||||||
|
cool_fan_full_at_height = =layer_height_0 + 14 * layer_height
|
||||||
|
cool_min_speed = 10
|
||||||
|
support_angle = 60
|
||||||
|
material_print_temperature = =default_material_print_temperature + 3
|
||||||
|
material_print_temperature_layer_0 = =default_material_print_temperature + 1
|
||||||
|
material_flow = 96
|
||||||
|
retraction_extra_prime_amount = 0.1
|
||||||
|
retraction_min_travel = =3*line_width
|
||||||
|
retraction_hop_only_when_collides = True
|
||||||
|
skin_overlap = 15
|
||||||
|
support_z_distance = =layer_height
|
||||||
|
support_bottom_distance = =support_z_distance
|
||||||
|
support_xy_distance = =line_width * 1.7
|
||||||
|
support_xy_distance_overhang = =wall_line_width_0
|
||||||
|
support_offset = 1
|
||||||
|
support_interface_density = 100
|
||||||
|
prime_tower_enable = True
|
47
resources/quality/strateo3d/HT0.4/s3d_ht0.4_ABS_C.inst.cfg
Normal file
47
resources/quality/strateo3d/HT0.4/s3d_ht0.4_ABS_C.inst.cfg
Normal file
|
@ -0,0 +1,47 @@
|
||||||
|
[general]
|
||||||
|
version = 4
|
||||||
|
name = C
|
||||||
|
definition = strateo3d
|
||||||
|
|
||||||
|
[metadata]
|
||||||
|
setting_version = 17
|
||||||
|
type = quality
|
||||||
|
quality_type = c
|
||||||
|
weight = -1
|
||||||
|
material = emotiontech_abs
|
||||||
|
variant = High temp 0.4
|
||||||
|
|
||||||
|
[values]
|
||||||
|
layer_height_0 = =round(0.75*machine_nozzle_size, 2)
|
||||||
|
line_width = =machine_nozzle_size/machine_nozzle_size*0.4
|
||||||
|
wall_line_width = =machine_nozzle_size/machine_nozzle_size*0.35
|
||||||
|
wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.3
|
||||||
|
wall_0_wipe_dist = =machine_nozzle_size/2
|
||||||
|
speed_print = 60
|
||||||
|
speed_wall = =math.ceil(speed_print * 40/60)
|
||||||
|
speed_wall_0 = =math.ceil(speed_wall * 35/40)
|
||||||
|
speed_topbottom = =math.ceil(speed_print * 40/60)
|
||||||
|
speed_layer_0 = =math.ceil(speed_print * 30/60)
|
||||||
|
speed_slowdown_layers = 2
|
||||||
|
cool_fan_enabled = True
|
||||||
|
cool_fan_speed = 35
|
||||||
|
cool_fan_speed_max = 100
|
||||||
|
cool_min_layer_time_fan_speed_max = 20
|
||||||
|
cool_min_layer_time = 11
|
||||||
|
cool_fan_full_at_height = =layer_height_0 + 9 * layer_height
|
||||||
|
cool_min_speed = 10
|
||||||
|
support_angle = 55
|
||||||
|
material_print_temperature = =default_material_print_temperature + 5
|
||||||
|
material_print_temperature_layer_0 = =default_material_print_temperature +3
|
||||||
|
material_flow = 91
|
||||||
|
retraction_extra_prime_amount = 0.1
|
||||||
|
retraction_min_travel = =3*line_width
|
||||||
|
retraction_hop_only_when_collides = True
|
||||||
|
skin_overlap = 20
|
||||||
|
support_z_distance = =layer_height
|
||||||
|
support_bottom_distance = =support_z_distance
|
||||||
|
support_xy_distance = =line_width * 1.7
|
||||||
|
support_xy_distance_overhang = =wall_line_width_0
|
||||||
|
support_offset = 1
|
||||||
|
support_interface_density = 100
|
||||||
|
prime_tower_enable = True
|
|
@ -0,0 +1,47 @@
|
||||||
|
[general]
|
||||||
|
version = 4
|
||||||
|
name = A
|
||||||
|
definition = strateo3d
|
||||||
|
|
||||||
|
[metadata]
|
||||||
|
setting_version = 17
|
||||||
|
type = quality
|
||||||
|
quality_type = a
|
||||||
|
weight = 1
|
||||||
|
material = emotiontech_acetate
|
||||||
|
variant = High temp 0.4
|
||||||
|
|
||||||
|
[values]
|
||||||
|
layer_height_0 = =round(0.5*machine_nozzle_size, 2)
|
||||||
|
line_width = =machine_nozzle_size/machine_nozzle_size*0.4
|
||||||
|
wall_line_width = =machine_nozzle_size/machine_nozzle_size*0.35
|
||||||
|
wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.4
|
||||||
|
wall_0_wipe_dist = =machine_nozzle_size/2
|
||||||
|
speed_print = 50
|
||||||
|
speed_wall = =math.ceil(speed_print * 37/50)
|
||||||
|
speed_wall_0 = =math.ceil(speed_wall * 30/37)
|
||||||
|
speed_topbottom = =math.ceil(speed_print * 33/50)
|
||||||
|
speed_layer_0 = =math.ceil(speed_print * 25/50)
|
||||||
|
speed_slowdown_layers = 2
|
||||||
|
cool_fan_enabled = True
|
||||||
|
cool_fan_speed = 35
|
||||||
|
cool_fan_speed_max = 100
|
||||||
|
cool_min_layer_time_fan_speed_max = 20
|
||||||
|
cool_min_layer_time = 11
|
||||||
|
cool_fan_full_at_height = =layer_height_0 + 10 * layer_height
|
||||||
|
cool_min_speed = 10
|
||||||
|
support_angle = 60
|
||||||
|
material_print_temperature = =default_material_print_temperature
|
||||||
|
material_print_temperature_layer_0 = =default_material_print_temperature
|
||||||
|
material_flow = 98
|
||||||
|
retraction_extra_prime_amount = 0.1
|
||||||
|
retraction_min_travel = =3*line_width
|
||||||
|
retraction_hop_only_when_collides = True
|
||||||
|
skin_overlap = 10
|
||||||
|
support_z_distance = =layer_height
|
||||||
|
support_bottom_distance = =support_z_distance
|
||||||
|
support_xy_distance = =line_width * 1.7
|
||||||
|
support_xy_distance_overhang = =wall_line_width_0
|
||||||
|
support_offset = 1
|
||||||
|
support_interface_density = 100
|
||||||
|
prime_tower_enable = True
|
|
@ -0,0 +1,47 @@
|
||||||
|
[general]
|
||||||
|
version = 4
|
||||||
|
name = B
|
||||||
|
definition = strateo3d
|
||||||
|
|
||||||
|
[metadata]
|
||||||
|
setting_version = 17
|
||||||
|
type = quality
|
||||||
|
quality_type = b
|
||||||
|
weight = 0
|
||||||
|
material = emotiontech_acetate
|
||||||
|
variant = High temp 0.4
|
||||||
|
|
||||||
|
[values]
|
||||||
|
layer_height_0 = =round(0.67*machine_nozzle_size, 2)
|
||||||
|
line_width = =machine_nozzle_size/machine_nozzle_size*0.4
|
||||||
|
wall_line_width = =machine_nozzle_size/machine_nozzle_size*0.35
|
||||||
|
wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.4
|
||||||
|
wall_0_wipe_dist = =machine_nozzle_size/2
|
||||||
|
speed_print = 55
|
||||||
|
speed_wall = =math.ceil(speed_print * 40/55)
|
||||||
|
speed_wall_0 = =math.ceil(speed_wall * 30/40)
|
||||||
|
speed_topbottom = =math.ceil(speed_print * 37/55)
|
||||||
|
speed_layer_0 = =math.ceil(speed_print * 27/55)
|
||||||
|
speed_slowdown_layers = 2
|
||||||
|
cool_fan_enabled = True
|
||||||
|
cool_fan_speed = 35
|
||||||
|
cool_fan_speed_max = 100
|
||||||
|
cool_min_layer_time_fan_speed_max = 20
|
||||||
|
cool_min_layer_time = 11
|
||||||
|
cool_fan_full_at_height = =layer_height_0 + 7 * layer_height
|
||||||
|
cool_min_speed = 10
|
||||||
|
support_angle = 55
|
||||||
|
material_print_temperature = =default_material_print_temperature + 2
|
||||||
|
material_print_temperature_layer_0 = =default_material_print_temperature + 0
|
||||||
|
material_flow = 95
|
||||||
|
retraction_extra_prime_amount = 0.1
|
||||||
|
retraction_min_travel = =3*line_width
|
||||||
|
retraction_hop_only_when_collides = True
|
||||||
|
skin_overlap = 10
|
||||||
|
support_z_distance = =layer_height
|
||||||
|
support_bottom_distance = =support_z_distance
|
||||||
|
support_xy_distance = =line_width * 1.7
|
||||||
|
support_xy_distance_overhang = =wall_line_width_0
|
||||||
|
support_offset = 1
|
||||||
|
support_interface_density = 100
|
||||||
|
prime_tower_enable = True
|
|
@ -0,0 +1,47 @@
|
||||||
|
[general]
|
||||||
|
version = 4
|
||||||
|
name = C
|
||||||
|
definition = strateo3d
|
||||||
|
|
||||||
|
[metadata]
|
||||||
|
setting_version = 17
|
||||||
|
type = quality
|
||||||
|
quality_type = c
|
||||||
|
weight = -1
|
||||||
|
material = emotiontech_acetate
|
||||||
|
variant = High temp 0.4
|
||||||
|
|
||||||
|
[values]
|
||||||
|
layer_height_0 = =round(0.75*machine_nozzle_size, 2)
|
||||||
|
line_width = =machine_nozzle_size/machine_nozzle_size*0.4
|
||||||
|
wall_line_width = =machine_nozzle_size/machine_nozzle_size*0.35
|
||||||
|
wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.4
|
||||||
|
wall_0_wipe_dist = =machine_nozzle_size/2
|
||||||
|
speed_print = 60
|
||||||
|
speed_wall = =math.ceil(speed_print * 45/60)
|
||||||
|
speed_wall_0 = =math.ceil(speed_wall * 33/45)
|
||||||
|
speed_topbottom = =math.ceil(speed_print * 40/60)
|
||||||
|
speed_layer_0 = =math.ceil(speed_print * 30/60)
|
||||||
|
speed_slowdown_layers = 2
|
||||||
|
cool_fan_enabled = True
|
||||||
|
cool_fan_speed = 35
|
||||||
|
cool_fan_speed_max = 100
|
||||||
|
cool_min_layer_time_fan_speed_max = 20
|
||||||
|
cool_min_layer_time = 11
|
||||||
|
cool_fan_full_at_height = =layer_height_0 + 5 * layer_height
|
||||||
|
cool_min_speed = 10
|
||||||
|
support_angle = 50
|
||||||
|
material_print_temperature = =default_material_print_temperature + 5
|
||||||
|
material_print_temperature_layer_0 = =default_material_print_temperature + 3
|
||||||
|
material_flow = 93
|
||||||
|
retraction_extra_prime_amount = 0.1
|
||||||
|
retraction_min_travel = =3*line_width
|
||||||
|
retraction_hop_only_when_collides = True
|
||||||
|
skin_overlap = 10
|
||||||
|
support_z_distance = =layer_height
|
||||||
|
support_bottom_distance = =support_z_distance
|
||||||
|
support_xy_distance = =line_width * 1.7
|
||||||
|
support_xy_distance_overhang = =wall_line_width_0
|
||||||
|
support_offset = 1
|
||||||
|
support_interface_density = 100
|
||||||
|
prime_tower_enable = True
|
47
resources/quality/strateo3d/HT0.4/s3d_ht0.4_ASA-X_A.inst.cfg
Normal file
47
resources/quality/strateo3d/HT0.4/s3d_ht0.4_ASA-X_A.inst.cfg
Normal file
|
@ -0,0 +1,47 @@
|
||||||
|
[general]
|
||||||
|
version = 4
|
||||||
|
name = A
|
||||||
|
definition = strateo3d
|
||||||
|
|
||||||
|
[metadata]
|
||||||
|
setting_version = 17
|
||||||
|
type = quality
|
||||||
|
quality_type = a
|
||||||
|
weight = 1
|
||||||
|
material = emotiontech_asax
|
||||||
|
variant = High temp 0.4
|
||||||
|
|
||||||
|
[values]
|
||||||
|
layer_height_0 = =round(0.5*machine_nozzle_size, 2)
|
||||||
|
line_width = =machine_nozzle_size/machine_nozzle_size*0.4
|
||||||
|
wall_line_width = =machine_nozzle_size/machine_nozzle_size*0.35
|
||||||
|
wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.3
|
||||||
|
wall_0_wipe_dist = =machine_nozzle_size/2
|
||||||
|
speed_print = 50
|
||||||
|
speed_wall = =math.ceil(speed_print * 35/50)
|
||||||
|
speed_wall_0 = =math.ceil(speed_wall * 30/35)
|
||||||
|
speed_topbottom = =math.ceil(speed_print * 35/50)
|
||||||
|
speed_layer_0 = =math.ceil(speed_print * 20/50)
|
||||||
|
speed_slowdown_layers = 2
|
||||||
|
cool_fan_enabled = True
|
||||||
|
cool_fan_speed = 40
|
||||||
|
cool_fan_speed_max = 75
|
||||||
|
cool_min_layer_time_fan_speed_max = 20
|
||||||
|
cool_min_layer_time = 11
|
||||||
|
cool_fan_full_at_height = =layer_height_0 + 19 * layer_height
|
||||||
|
cool_min_speed = 10
|
||||||
|
support_angle = 65
|
||||||
|
material_print_temperature = =default_material_print_temperature + 1
|
||||||
|
material_print_temperature_layer_0 = =default_material_print_temperature + 3
|
||||||
|
material_flow = 100
|
||||||
|
retraction_extra_prime_amount = 0.1
|
||||||
|
retraction_min_travel = =3*line_width
|
||||||
|
retraction_hop_only_when_collides = True
|
||||||
|
skin_overlap = 10
|
||||||
|
support_z_distance = =layer_height
|
||||||
|
support_bottom_distance = =support_z_distance
|
||||||
|
support_xy_distance = =line_width * 1.5
|
||||||
|
support_xy_distance_overhang = =wall_line_width_0
|
||||||
|
support_offset = 1
|
||||||
|
support_interface_density = 100
|
||||||
|
prime_tower_enable = True
|
47
resources/quality/strateo3d/HT0.4/s3d_ht0.4_ASA-X_B.inst.cfg
Normal file
47
resources/quality/strateo3d/HT0.4/s3d_ht0.4_ASA-X_B.inst.cfg
Normal file
|
@ -0,0 +1,47 @@
|
||||||
|
[general]
|
||||||
|
version = 4
|
||||||
|
name = B
|
||||||
|
definition = strateo3d
|
||||||
|
|
||||||
|
[metadata]
|
||||||
|
setting_version = 17
|
||||||
|
type = quality
|
||||||
|
quality_type = b
|
||||||
|
weight = 0
|
||||||
|
material = emotiontech_asax
|
||||||
|
variant = High temp 0.4
|
||||||
|
|
||||||
|
[values]
|
||||||
|
layer_height_0 = =round(0.67*machine_nozzle_size, 2)
|
||||||
|
line_width = =machine_nozzle_size/machine_nozzle_size*0.4
|
||||||
|
wall_line_width = =machine_nozzle_size/machine_nozzle_size*0.35
|
||||||
|
wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.3
|
||||||
|
wall_0_wipe_dist = =machine_nozzle_size/2
|
||||||
|
speed_print = 55
|
||||||
|
speed_wall = =math.ceil(speed_print * 37/55)
|
||||||
|
speed_wall_0 = =math.ceil(speed_wall * 33/37)
|
||||||
|
speed_topbottom = =math.ceil(speed_print * 37/55)
|
||||||
|
speed_layer_0 = =math.ceil(speed_print * 25/55)
|
||||||
|
speed_slowdown_layers = 2
|
||||||
|
cool_fan_enabled = True
|
||||||
|
cool_fan_speed = 40
|
||||||
|
cool_fan_speed_max = 75
|
||||||
|
cool_min_layer_time_fan_speed_max = 20
|
||||||
|
cool_min_layer_time = 11
|
||||||
|
cool_fan_full_at_height = =layer_height_0 + 14 * layer_height
|
||||||
|
cool_min_speed = 10
|
||||||
|
support_angle = 60
|
||||||
|
material_print_temperature = =default_material_print_temperature + 3
|
||||||
|
material_print_temperature_layer_0 = =default_material_print_temperature + 5
|
||||||
|
material_flow = 96
|
||||||
|
retraction_extra_prime_amount = 0.1
|
||||||
|
retraction_min_travel = =3*line_width
|
||||||
|
retraction_hop_only_when_collides = True
|
||||||
|
skin_overlap = 15
|
||||||
|
support_z_distance = =layer_height
|
||||||
|
support_bottom_distance = =support_z_distance
|
||||||
|
support_xy_distance = =line_width * 1.5
|
||||||
|
support_xy_distance_overhang = =wall_line_width_0
|
||||||
|
support_offset = 1
|
||||||
|
support_interface_density = 100
|
||||||
|
prime_tower_enable = True
|
47
resources/quality/strateo3d/HT0.4/s3d_ht0.4_ASA-X_C.inst.cfg
Normal file
47
resources/quality/strateo3d/HT0.4/s3d_ht0.4_ASA-X_C.inst.cfg
Normal file
|
@ -0,0 +1,47 @@
|
||||||
|
[general]
|
||||||
|
version = 4
|
||||||
|
name = C
|
||||||
|
definition = strateo3d
|
||||||
|
|
||||||
|
[metadata]
|
||||||
|
setting_version = 17
|
||||||
|
type = quality
|
||||||
|
quality_type = c
|
||||||
|
weight = -1
|
||||||
|
material = emotiontech_asax
|
||||||
|
variant = High temp 0.4
|
||||||
|
|
||||||
|
[values]
|
||||||
|
layer_height_0 = =round(0.75*machine_nozzle_size, 2)
|
||||||
|
line_width = =machine_nozzle_size/machine_nozzle_size*0.4
|
||||||
|
wall_line_width = =machine_nozzle_size/machine_nozzle_size*0.35
|
||||||
|
wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.3
|
||||||
|
wall_0_wipe_dist = =machine_nozzle_size/2
|
||||||
|
speed_print = 60
|
||||||
|
speed_wall = =math.ceil(speed_print * 40/60)
|
||||||
|
speed_wall_0 = =math.ceil(speed_wall * 35/40)
|
||||||
|
speed_topbottom = =math.ceil(speed_print * 40/60)
|
||||||
|
speed_layer_0 = =math.ceil(speed_print * 30/60)
|
||||||
|
speed_slowdown_layers = 2
|
||||||
|
cool_fan_enabled = True
|
||||||
|
cool_fan_speed = 40
|
||||||
|
cool_fan_speed_max = 75
|
||||||
|
cool_min_layer_time_fan_speed_max = 20
|
||||||
|
cool_min_layer_time = 11
|
||||||
|
cool_fan_full_at_height = =layer_height_0 + 9 * layer_height
|
||||||
|
cool_min_speed = 10
|
||||||
|
support_angle = 55
|
||||||
|
material_print_temperature = =default_material_print_temperature + 5
|
||||||
|
material_print_temperature_layer_0 = =default_material_print_temperature + 7
|
||||||
|
material_flow = 91
|
||||||
|
retraction_extra_prime_amount = 0.1
|
||||||
|
retraction_min_travel = =3*line_width
|
||||||
|
retraction_hop_only_when_collides = True
|
||||||
|
skin_overlap = 20
|
||||||
|
support_z_distance = =layer_height
|
||||||
|
support_bottom_distance = =support_z_distance
|
||||||
|
support_xy_distance = =line_width * 1.5
|
||||||
|
support_xy_distance_overhang = =wall_line_width_0
|
||||||
|
support_offset = 1
|
||||||
|
support_interface_density = 100
|
||||||
|
prime_tower_enable = True
|
62
resources/quality/strateo3d/HT0.4/s3d_ht0.4_COPA_A.inst.cfg
Normal file
62
resources/quality/strateo3d/HT0.4/s3d_ht0.4_COPA_A.inst.cfg
Normal file
|
@ -0,0 +1,62 @@
|
||||||
|
[general]
|
||||||
|
version = 4
|
||||||
|
name = A
|
||||||
|
definition = strateo3d
|
||||||
|
|
||||||
|
[metadata]
|
||||||
|
setting_version = 17
|
||||||
|
type = quality
|
||||||
|
quality_type = a
|
||||||
|
weight = 1
|
||||||
|
material = emotiontech_copa
|
||||||
|
variant = High temp 0.4
|
||||||
|
|
||||||
|
[values]
|
||||||
|
layer_height_0 = =round(0.5*machine_nozzle_size, 2)
|
||||||
|
line_width = =machine_nozzle_size/machine_nozzle_size*0.4
|
||||||
|
wall_line_width = =machine_nozzle_size/machine_nozzle_size*0.35
|
||||||
|
wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.3
|
||||||
|
wall_0_wipe_dist = =machine_nozzle_size/2
|
||||||
|
wall_line_count = 3
|
||||||
|
speed_print = 35
|
||||||
|
speed_wall = =math.ceil(speed_print * 35/50)
|
||||||
|
speed_wall_0 = =math.ceil(speed_wall * 30/35)
|
||||||
|
speed_topbottom = =math.ceil(speed_print * 35/50)
|
||||||
|
speed_layer_0 = =math.ceil(speed_print * 20/50)
|
||||||
|
speed_slowdown_layers = 2
|
||||||
|
cool_fan_enabled = True
|
||||||
|
cool_fan_speed = 20
|
||||||
|
cool_fan_speed_max = 80
|
||||||
|
cool_min_layer_time_fan_speed_max = 20
|
||||||
|
cool_min_layer_time = 2
|
||||||
|
cool_fan_full_at_height = =layer_height_0 + 2 * layer_height
|
||||||
|
cool_min_speed = 2
|
||||||
|
cool_lift_head = True
|
||||||
|
support_angle = 45
|
||||||
|
material_print_temperature = =default_material_print_temperature
|
||||||
|
material_print_temperature_layer_0 = =default_material_print_temperature + 5
|
||||||
|
material_initial_print_temperature = =default_material_print_temperature
|
||||||
|
material_final_print_temperature = =default_material_print_temperature
|
||||||
|
material_flow = 91
|
||||||
|
skin_material_flow = 92
|
||||||
|
retraction_extra_prime_amount = 0.1
|
||||||
|
retraction_min_travel = =3*line_width
|
||||||
|
retraction_hop_only_when_collides = True
|
||||||
|
skin_overlap = 10
|
||||||
|
support_z_distance = =layer_height*2
|
||||||
|
support_bottom_distance = =support_z_distance*0.5
|
||||||
|
support_xy_distance = =line_width * 1.7
|
||||||
|
support_xy_distance_overhang = =wall_line_width_0
|
||||||
|
support_offset = 1
|
||||||
|
support_interface_density = 100
|
||||||
|
prime_tower_enable = True
|
||||||
|
bridge_settings_enabled = True
|
||||||
|
bridge_wall_coast = 50
|
||||||
|
bridge_wall_speed = 8
|
||||||
|
bridge_wall_material_flow = 50
|
||||||
|
bridge_skin_speed = 8
|
||||||
|
bridge_skin_material_flow = 60
|
||||||
|
bridge_skin_density = 80
|
||||||
|
bridge_fan_speed = 80
|
||||||
|
meshfix_maximum_resolution = 0.5
|
||||||
|
meshfix_maximum_deviation = 0.04
|
62
resources/quality/strateo3d/HT0.4/s3d_ht0.4_COPA_B.inst.cfg
Normal file
62
resources/quality/strateo3d/HT0.4/s3d_ht0.4_COPA_B.inst.cfg
Normal file
|
@ -0,0 +1,62 @@
|
||||||
|
[general]
|
||||||
|
version = 4
|
||||||
|
name = B
|
||||||
|
definition = strateo3d
|
||||||
|
|
||||||
|
[metadata]
|
||||||
|
setting_version = 17
|
||||||
|
type = quality
|
||||||
|
quality_type = b
|
||||||
|
weight = 0
|
||||||
|
material = emotiontech_copa
|
||||||
|
variant = High temp 0.4
|
||||||
|
|
||||||
|
[values]
|
||||||
|
layer_height_0 = =round(0.67*machine_nozzle_size, 2)
|
||||||
|
line_width = =machine_nozzle_size/machine_nozzle_size*0.4
|
||||||
|
wall_line_width = =machine_nozzle_size/machine_nozzle_size*0.35
|
||||||
|
wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.3
|
||||||
|
wall_0_wipe_dist = =machine_nozzle_size/2
|
||||||
|
wall_line_count = 3
|
||||||
|
speed_print = 35
|
||||||
|
speed_wall = =math.ceil(speed_print * 37/55)
|
||||||
|
speed_wall_0 = =math.ceil(speed_wall * 33/37)
|
||||||
|
speed_topbottom = =math.ceil(speed_print * 37/55)
|
||||||
|
speed_layer_0 = =math.ceil(speed_print * 25/55)
|
||||||
|
speed_slowdown_layers = 2
|
||||||
|
cool_fan_enabled = True
|
||||||
|
cool_fan_speed = 20
|
||||||
|
cool_fan_speed_max = 80
|
||||||
|
cool_min_layer_time_fan_speed_max = 20
|
||||||
|
cool_min_layer_time = 2
|
||||||
|
cool_fan_full_at_height = =layer_height_0 + 2 * layer_height
|
||||||
|
cool_min_speed = 2
|
||||||
|
cool_lift_head = True
|
||||||
|
support_angle = 60
|
||||||
|
material_print_temperature = =default_material_print_temperature
|
||||||
|
material_print_temperature_layer_0 = =default_material_print_temperature + 5
|
||||||
|
material_initial_print_temperature = =default_material_print_temperature
|
||||||
|
material_final_print_temperature = =default_material_print_temperature
|
||||||
|
material_flow = 91
|
||||||
|
skin_material_flow = 92
|
||||||
|
retraction_extra_prime_amount = 0.1
|
||||||
|
retraction_min_travel = =3*line_width
|
||||||
|
retraction_hop_only_when_collides = True
|
||||||
|
skin_overlap = 15
|
||||||
|
support_z_distance = =layer_height*2
|
||||||
|
support_bottom_distance = =support_z_distance*0.5
|
||||||
|
support_xy_distance = =line_width * 1.7
|
||||||
|
support_xy_distance_overhang = =wall_line_width_0
|
||||||
|
support_offset = 1
|
||||||
|
support_interface_density = 100
|
||||||
|
prime_tower_enable = True
|
||||||
|
bridge_settings_enabled = True
|
||||||
|
bridge_wall_coast = 50
|
||||||
|
bridge_wall_speed = 8
|
||||||
|
bridge_wall_material_flow = 50
|
||||||
|
bridge_skin_speed = 8
|
||||||
|
bridge_skin_material_flow = 60
|
||||||
|
bridge_skin_density = 80
|
||||||
|
bridge_fan_speed = 80
|
||||||
|
meshfix_maximum_resolution = 0.5
|
||||||
|
meshfix_maximum_deviation = 0.04
|
62
resources/quality/strateo3d/HT0.4/s3d_ht0.4_COPA_C.inst.cfg
Normal file
62
resources/quality/strateo3d/HT0.4/s3d_ht0.4_COPA_C.inst.cfg
Normal file
|
@ -0,0 +1,62 @@
|
||||||
|
[general]
|
||||||
|
version = 4
|
||||||
|
name = C
|
||||||
|
definition = strateo3d
|
||||||
|
|
||||||
|
[metadata]
|
||||||
|
setting_version = 17
|
||||||
|
type = quality
|
||||||
|
quality_type = c
|
||||||
|
weight = -1
|
||||||
|
material = emotiontech_copa
|
||||||
|
variant = High temp 0.4
|
||||||
|
|
||||||
|
[values]
|
||||||
|
layer_height_0 = =round(0.75*machine_nozzle_size, 2)
|
||||||
|
line_width = =machine_nozzle_size/machine_nozzle_size*0.4
|
||||||
|
wall_line_width = =machine_nozzle_size/machine_nozzle_size*0.35
|
||||||
|
wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.3
|
||||||
|
wall_0_wipe_dist = =machine_nozzle_size/2
|
||||||
|
wall_line_count = 3
|
||||||
|
speed_print = 35
|
||||||
|
speed_wall = =math.ceil(speed_print * 40/60)
|
||||||
|
speed_wall_0 = =math.ceil(speed_wall * 35/40)
|
||||||
|
speed_topbottom = =math.ceil(speed_print * 40/60)
|
||||||
|
speed_layer_0 = =math.ceil(speed_print * 30/60)
|
||||||
|
speed_slowdown_layers = 2
|
||||||
|
cool_fan_enabled = True
|
||||||
|
cool_fan_speed = 20
|
||||||
|
cool_fan_speed_max = 80
|
||||||
|
cool_min_layer_time_fan_speed_max = 20
|
||||||
|
cool_min_layer_time = 2
|
||||||
|
cool_fan_full_at_height = =layer_height_0 + 2 * layer_height
|
||||||
|
cool_min_speed = 2
|
||||||
|
cool_lift_head = True
|
||||||
|
support_angle = 60
|
||||||
|
material_print_temperature = =default_material_print_temperature
|
||||||
|
material_print_temperature_layer_0 = =default_material_print_temperature + 5
|
||||||
|
material_initial_print_temperature = =default_material_print_temperature
|
||||||
|
material_final_print_temperature = =default_material_print_temperature
|
||||||
|
material_flow = 91
|
||||||
|
skin_material_flow = 92
|
||||||
|
retraction_extra_prime_amount = 0.1
|
||||||
|
retraction_min_travel = =3*line_width
|
||||||
|
retraction_hop_only_when_collides = True
|
||||||
|
skin_overlap = 20
|
||||||
|
support_z_distance = =layer_height*2
|
||||||
|
support_bottom_distance = =support_z_distance*0.5
|
||||||
|
support_xy_distance = =line_width * 1.7
|
||||||
|
support_xy_distance_overhang = =wall_line_width_0
|
||||||
|
support_offset = 1
|
||||||
|
support_interface_density = 100
|
||||||
|
prime_tower_enable = True
|
||||||
|
bridge_settings_enabled = True
|
||||||
|
bridge_wall_coast = 50
|
||||||
|
bridge_wall_speed = 8
|
||||||
|
bridge_wall_material_flow = 50
|
||||||
|
bridge_skin_speed = 8
|
||||||
|
bridge_skin_material_flow = 60
|
||||||
|
bridge_skin_density = 80
|
||||||
|
bridge_fan_speed = 80
|
||||||
|
meshfix_maximum_resolution = 0.5
|
||||||
|
meshfix_maximum_deviation = 0.04
|
50
resources/quality/strateo3d/HT0.4/s3d_ht0.4_HIPS_A.inst.cfg
Normal file
50
resources/quality/strateo3d/HT0.4/s3d_ht0.4_HIPS_A.inst.cfg
Normal file
|
@ -0,0 +1,50 @@
|
||||||
|
[general]
|
||||||
|
version = 4
|
||||||
|
name = A
|
||||||
|
definition = strateo3d
|
||||||
|
|
||||||
|
[metadata]
|
||||||
|
setting_version = 17
|
||||||
|
type = quality
|
||||||
|
quality_type = a
|
||||||
|
weight = 1
|
||||||
|
material = emotiontech_hips
|
||||||
|
variant = High temp 0.4
|
||||||
|
|
||||||
|
[values]
|
||||||
|
layer_height_0 = =round(0.5*machine_nozzle_size, 2)
|
||||||
|
line_width = =machine_nozzle_size/machine_nozzle_size*0.4
|
||||||
|
wall_line_width = =machine_nozzle_size/machine_nozzle_size*0.4
|
||||||
|
wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.4
|
||||||
|
wall_0_wipe_dist = =machine_nozzle_size/2
|
||||||
|
speed_print = 40
|
||||||
|
speed_wall = =math.ceil(speed_print * 30/40)
|
||||||
|
speed_wall_0 = =math.ceil(speed_wall * 30/40)
|
||||||
|
speed_topbottom = =math.ceil(speed_print * 20/40)
|
||||||
|
speed_layer_0 = =math.ceil(speed_print * 20/40)
|
||||||
|
speed_slowdown_layers = 2
|
||||||
|
cool_fan_enabled = True
|
||||||
|
cool_fan_speed = 50
|
||||||
|
cool_fan_speed_max = 100
|
||||||
|
cool_min_layer_time_fan_speed_max = 20
|
||||||
|
cool_min_layer_time = 11
|
||||||
|
cool_fan_full_at_height = =layer_height_0 + 14 * layer_height
|
||||||
|
cool_min_speed = 10
|
||||||
|
support_angle = 55
|
||||||
|
material_print_temperature = =default_material_print_temperature
|
||||||
|
material_print_temperature_layer_0 = =default_material_print_temperature
|
||||||
|
material_flow = 97
|
||||||
|
retraction_extra_prime_amount = 0.1
|
||||||
|
retraction_min_travel = =3*line_width
|
||||||
|
retraction_hop_only_when_collides = True
|
||||||
|
skin_overlap = 10
|
||||||
|
support_bottom_stair_step_height = 0
|
||||||
|
support_bottom_stair_step_width = 0
|
||||||
|
support_z_distance = =layer_height-layer_height
|
||||||
|
support_bottom_distance = =support_z_distance
|
||||||
|
support_xy_distance = =line_width * 0.5
|
||||||
|
support_xy_distance_overhang = =line_width*0
|
||||||
|
support_offset = 3
|
||||||
|
support_pattern = grid
|
||||||
|
support_interface_density = 100
|
||||||
|
prime_tower_enable = True
|
50
resources/quality/strateo3d/HT0.4/s3d_ht0.4_HIPS_B.inst.cfg
Normal file
50
resources/quality/strateo3d/HT0.4/s3d_ht0.4_HIPS_B.inst.cfg
Normal file
|
@ -0,0 +1,50 @@
|
||||||
|
[general]
|
||||||
|
version = 4
|
||||||
|
name = B
|
||||||
|
definition = strateo3d
|
||||||
|
|
||||||
|
[metadata]
|
||||||
|
setting_version = 17
|
||||||
|
type = quality
|
||||||
|
quality_type = b
|
||||||
|
weight = 0
|
||||||
|
material = emotiontech_hips
|
||||||
|
variant = High temp 0.4
|
||||||
|
|
||||||
|
[values]
|
||||||
|
layer_height_0 = =round(0.67*machine_nozzle_size, 2)
|
||||||
|
line_width = =machine_nozzle_size/machine_nozzle_size*0.4
|
||||||
|
wall_line_width = =machine_nozzle_size/machine_nozzle_size*0.4
|
||||||
|
wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.4
|
||||||
|
wall_0_wipe_dist = =machine_nozzle_size/2
|
||||||
|
speed_print = 40
|
||||||
|
speed_wall = =math.ceil(speed_print * 30/40)
|
||||||
|
speed_wall_0 = =math.ceil(speed_wall * 30/40)
|
||||||
|
speed_topbottom = =math.ceil(speed_print * 20/40)
|
||||||
|
speed_layer_0 = =math.ceil(speed_print * 20/40)
|
||||||
|
speed_slowdown_layers = 2
|
||||||
|
cool_fan_enabled = True
|
||||||
|
cool_fan_speed = 50
|
||||||
|
cool_fan_speed_max = 100
|
||||||
|
cool_min_layer_time_fan_speed_max = 20
|
||||||
|
cool_min_layer_time = 11
|
||||||
|
cool_fan_full_at_height = =layer_height_0 + 9 * layer_height
|
||||||
|
cool_min_speed = 10
|
||||||
|
support_angle = 55
|
||||||
|
material_print_temperature = =default_material_print_temperature + 3
|
||||||
|
material_print_temperature_layer_0 = =default_material_print_temperature
|
||||||
|
material_flow = 97
|
||||||
|
retraction_extra_prime_amount = 0.1
|
||||||
|
retraction_min_travel = =3*line_width
|
||||||
|
retraction_hop_only_when_collides = True
|
||||||
|
skin_overlap = 15
|
||||||
|
support_bottom_stair_step_height = 0
|
||||||
|
support_bottom_stair_step_width = 0
|
||||||
|
support_z_distance = =layer_height-layer_height
|
||||||
|
support_bottom_distance = =support_z_distance
|
||||||
|
support_xy_distance = =line_width * 0.5
|
||||||
|
support_xy_distance_overhang = =line_width*0
|
||||||
|
support_offset = 3
|
||||||
|
support_pattern = grid
|
||||||
|
support_interface_density = 100
|
||||||
|
prime_tower_enable = True
|
50
resources/quality/strateo3d/HT0.4/s3d_ht0.4_HIPS_C.inst.cfg
Normal file
50
resources/quality/strateo3d/HT0.4/s3d_ht0.4_HIPS_C.inst.cfg
Normal file
|
@ -0,0 +1,50 @@
|
||||||
|
[general]
|
||||||
|
version = 4
|
||||||
|
name = C
|
||||||
|
definition = strateo3d
|
||||||
|
|
||||||
|
[metadata]
|
||||||
|
setting_version = 17
|
||||||
|
type = quality
|
||||||
|
quality_type = c
|
||||||
|
weight = -1
|
||||||
|
material = emotiontech_hips
|
||||||
|
variant = High temp 0.4
|
||||||
|
|
||||||
|
[values]
|
||||||
|
layer_height_0 = =round(0.75*machine_nozzle_size, 2)
|
||||||
|
line_width = =machine_nozzle_size/machine_nozzle_size*0.4
|
||||||
|
wall_line_width = =machine_nozzle_size/machine_nozzle_size*0.4
|
||||||
|
wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.4
|
||||||
|
wall_0_wipe_dist = =machine_nozzle_size/2
|
||||||
|
speed_print = 40
|
||||||
|
speed_wall = =math.ceil(speed_print * 30/40)
|
||||||
|
speed_wall_0 = =math.ceil(speed_wall * 30/40)
|
||||||
|
speed_topbottom = =math.ceil(speed_print * 20/40)
|
||||||
|
speed_layer_0 = =math.ceil(speed_print * 20/40)
|
||||||
|
speed_slowdown_layers = 2
|
||||||
|
cool_fan_enabled = True
|
||||||
|
cool_fan_speed = 50
|
||||||
|
cool_fan_speed_max = 100
|
||||||
|
cool_min_layer_time_fan_speed_max = 20
|
||||||
|
cool_min_layer_time = 11
|
||||||
|
cool_fan_full_at_height = =layer_height_0 + 4 * layer_height
|
||||||
|
cool_min_speed = 10
|
||||||
|
support_angle = 55
|
||||||
|
material_print_temperature = =default_material_print_temperature + 5
|
||||||
|
material_print_temperature_layer_0 = =default_material_print_temperature
|
||||||
|
material_flow = 97
|
||||||
|
retraction_extra_prime_amount = 0.1
|
||||||
|
retraction_min_travel = =3*line_width
|
||||||
|
retraction_hop_only_when_collides = True
|
||||||
|
skin_overlap = 20
|
||||||
|
support_bottom_stair_step_height = 0
|
||||||
|
support_bottom_stair_step_width = 0
|
||||||
|
support_z_distance = =layer_height-layer_height
|
||||||
|
support_bottom_distance = =support_z_distance
|
||||||
|
support_xy_distance = =line_width * 0.5
|
||||||
|
support_xy_distance_overhang = =line_width*0
|
||||||
|
support_offset = 3
|
||||||
|
support_pattern = grid
|
||||||
|
support_interface_density = 100
|
||||||
|
prime_tower_enable = True
|
61
resources/quality/strateo3d/HT0.4/s3d_ht0.4_PC_A.inst.cfg
Normal file
61
resources/quality/strateo3d/HT0.4/s3d_ht0.4_PC_A.inst.cfg
Normal file
|
@ -0,0 +1,61 @@
|
||||||
|
[general]
|
||||||
|
version = 4
|
||||||
|
name = A
|
||||||
|
definition = strateo3d
|
||||||
|
|
||||||
|
[metadata]
|
||||||
|
setting_version = 17
|
||||||
|
type = quality
|
||||||
|
quality_type = a
|
||||||
|
weight = 1
|
||||||
|
material = emotiontech_pc
|
||||||
|
variant = High temp 0.4
|
||||||
|
|
||||||
|
[values]
|
||||||
|
layer_height_0 = =round(0.5*machine_nozzle_size, 2)
|
||||||
|
line_width = =machine_nozzle_size/machine_nozzle_size*0.4
|
||||||
|
wall_line_width = =machine_nozzle_size/machine_nozzle_size*0.35
|
||||||
|
wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.3
|
||||||
|
wall_0_wipe_dist = =machine_nozzle_size/2
|
||||||
|
speed_print = 35
|
||||||
|
speed_wall = =math.ceil(speed_print * 35/50)
|
||||||
|
speed_wall_0 = =math.ceil(speed_wall * 30/35)
|
||||||
|
speed_topbottom = =math.ceil(speed_print * 35/50)
|
||||||
|
speed_layer_0 = =math.ceil(speed_print * 20/50)
|
||||||
|
speed_slowdown_layers = 2
|
||||||
|
cool_fan_enabled = True
|
||||||
|
cool_fan_speed = 10
|
||||||
|
cool_fan_speed_max = 10
|
||||||
|
cool_min_layer_time_fan_speed_max = 20
|
||||||
|
cool_min_layer_time = 2
|
||||||
|
cool_fan_full_at_height = =layer_height_0 + 2 * layer_height
|
||||||
|
cool_min_speed = 12
|
||||||
|
support_angle = 60
|
||||||
|
cool_lift_head = true
|
||||||
|
material_print_temperature = 260
|
||||||
|
material_print_temperature_layer_0 = 265
|
||||||
|
material_flow = 88
|
||||||
|
wall_line_count = 3
|
||||||
|
retraction_extra_prime_amount = 0.1
|
||||||
|
retraction_speed = 30
|
||||||
|
retraction_min_travel = =3*line_width
|
||||||
|
retraction_hop_only_when_collides = True
|
||||||
|
skin_overlap = 10
|
||||||
|
support_z_distance = =layer_height
|
||||||
|
support_bottom_distance = =support_z_distance*0.5
|
||||||
|
support_xy_distance = =line_width * 1.7
|
||||||
|
support_xy_distance_overhang = =wall_line_width_0
|
||||||
|
support_offset = 1
|
||||||
|
support_interface_density = 100
|
||||||
|
prime_tower_enable = True
|
||||||
|
adhesion_type = brim
|
||||||
|
|
||||||
|
bridge_settings_enabled = True
|
||||||
|
bridge_wall_coast = 50
|
||||||
|
bridge_wall_speed = 12
|
||||||
|
bridge_wall_material_flow = 50
|
||||||
|
bridge_skin_speed = 12.5
|
||||||
|
bridge_skin_material_flow = 100
|
||||||
|
bridge_skin_density = 80
|
||||||
|
bridge_fan_speed = 100
|
||||||
|
|
61
resources/quality/strateo3d/HT0.4/s3d_ht0.4_PC_B.inst.cfg
Normal file
61
resources/quality/strateo3d/HT0.4/s3d_ht0.4_PC_B.inst.cfg
Normal file
|
@ -0,0 +1,61 @@
|
||||||
|
[general]
|
||||||
|
version = 4
|
||||||
|
name = B
|
||||||
|
definition = strateo3d
|
||||||
|
|
||||||
|
[metadata]
|
||||||
|
setting_version = 17
|
||||||
|
type = quality
|
||||||
|
quality_type = b
|
||||||
|
weight = 0
|
||||||
|
material = emotiontech_pc
|
||||||
|
variant = High temp 0.4
|
||||||
|
|
||||||
|
[values]
|
||||||
|
layer_height_0 = =round(0.67*machine_nozzle_size, 2)
|
||||||
|
line_width = =machine_nozzle_size/machine_nozzle_size*0.4
|
||||||
|
wall_line_width = =machine_nozzle_size/machine_nozzle_size*0.35
|
||||||
|
wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.3
|
||||||
|
wall_0_wipe_dist = =machine_nozzle_size/2
|
||||||
|
speed_print = 35
|
||||||
|
speed_wall = =math.ceil(speed_print * 37/55)
|
||||||
|
speed_wall_0 = =math.ceil(speed_wall * 33/37)
|
||||||
|
speed_topbottom = =math.ceil(speed_print * 37/55)
|
||||||
|
speed_layer_0 = =math.ceil(speed_print * 25/55)
|
||||||
|
speed_slowdown_layers = 2
|
||||||
|
cool_fan_enabled = True
|
||||||
|
cool_fan_speed = 10
|
||||||
|
cool_fan_speed_max = 10
|
||||||
|
cool_min_layer_time_fan_speed_max = 20
|
||||||
|
cool_min_layer_time = 2
|
||||||
|
cool_fan_full_at_height = =layer_height_0 + 2 * layer_height
|
||||||
|
cool_min_speed = 12
|
||||||
|
cool_lift_head = true
|
||||||
|
support_angle = 60
|
||||||
|
material_print_temperature = 270
|
||||||
|
material_print_temperature_layer_0 = 275
|
||||||
|
material_flow = 88
|
||||||
|
wall_line_count = 3
|
||||||
|
retraction_speed = 30
|
||||||
|
retraction_extra_prime_amount = 0.1
|
||||||
|
retraction_min_travel = =3*line_width
|
||||||
|
retraction_hop_only_when_collides = True
|
||||||
|
skin_overlap = 15
|
||||||
|
support_z_distance = =layer_height
|
||||||
|
support_bottom_distance = =support_z_distance*0.5
|
||||||
|
support_xy_distance = =line_width * 1.7
|
||||||
|
support_xy_distance_overhang = =wall_line_width_0
|
||||||
|
support_offset = 1
|
||||||
|
support_interface_density = 100
|
||||||
|
prime_tower_enable = True
|
||||||
|
|
||||||
|
adhesion_type = brim
|
||||||
|
|
||||||
|
bridge_settings_enabled = True
|
||||||
|
bridge_wall_coast = 50
|
||||||
|
bridge_wall_speed = 12
|
||||||
|
bridge_wall_material_flow = 50
|
||||||
|
bridge_skin_speed = 12.5
|
||||||
|
bridge_skin_material_flow = 100
|
||||||
|
bridge_skin_density = 80
|
||||||
|
bridge_fan_speed = 100
|
61
resources/quality/strateo3d/HT0.4/s3d_ht0.4_PC_C.inst.cfg
Normal file
61
resources/quality/strateo3d/HT0.4/s3d_ht0.4_PC_C.inst.cfg
Normal file
|
@ -0,0 +1,61 @@
|
||||||
|
[general]
|
||||||
|
version = 4
|
||||||
|
name = C
|
||||||
|
definition = strateo3d
|
||||||
|
|
||||||
|
[metadata]
|
||||||
|
setting_version = 17
|
||||||
|
type = quality
|
||||||
|
quality_type = c
|
||||||
|
weight = -1
|
||||||
|
material = emotiontech_pc
|
||||||
|
variant = High temp 0.4
|
||||||
|
|
||||||
|
[values]
|
||||||
|
layer_height_0 = =round(0.75*machine_nozzle_size, 2)
|
||||||
|
line_width = =machine_nozzle_size/machine_nozzle_size*0.4
|
||||||
|
wall_line_width = =machine_nozzle_size/machine_nozzle_size*0.35
|
||||||
|
wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.3
|
||||||
|
wall_0_wipe_dist = =machine_nozzle_size/2
|
||||||
|
speed_print = 35
|
||||||
|
speed_wall = =math.ceil(speed_print * 40/60)
|
||||||
|
speed_wall_0 = =math.ceil(speed_wall * 35/40)
|
||||||
|
speed_topbottom = =math.ceil(speed_print * 40/60)
|
||||||
|
speed_layer_0 = =math.ceil(speed_print * 30/60)
|
||||||
|
speed_slowdown_layers = 2
|
||||||
|
cool_fan_enabled = True
|
||||||
|
cool_fan_speed = 10
|
||||||
|
cool_fan_speed_max = 10
|
||||||
|
cool_min_layer_time_fan_speed_max = 20
|
||||||
|
cool_min_layer_time = 2
|
||||||
|
cool_fan_full_at_height = =layer_height_0 + 2 * layer_height
|
||||||
|
cool_min_speed = 12
|
||||||
|
support_angle = 60
|
||||||
|
cool_lift_head = true
|
||||||
|
material_print_temperature = 270
|
||||||
|
material_print_temperature_layer_0 = 275
|
||||||
|
material_flow = 88
|
||||||
|
wall_line_count = 3
|
||||||
|
retraction_speed = 30
|
||||||
|
retraction_extra_prime_amount = 0.1
|
||||||
|
retraction_min_travel = =3*line_width
|
||||||
|
retraction_hop_only_when_collides = True
|
||||||
|
skin_overlap = 20
|
||||||
|
support_z_distance = =layer_height
|
||||||
|
support_bottom_distance = =support_z_distance*0.5
|
||||||
|
support_xy_distance = =line_width * 1.7
|
||||||
|
support_xy_distance_overhang = =wall_line_width_0
|
||||||
|
support_offset = 1
|
||||||
|
support_interface_density = 100
|
||||||
|
prime_tower_enable = True
|
||||||
|
|
||||||
|
adhesion_type = brim
|
||||||
|
|
||||||
|
bridge_settings_enabled = True
|
||||||
|
bridge_wall_coast = 50
|
||||||
|
bridge_wall_speed = 12
|
||||||
|
bridge_wall_material_flow = 50
|
||||||
|
bridge_skin_speed = 12.5
|
||||||
|
bridge_skin_material_flow = 100
|
||||||
|
bridge_skin_density = 80
|
||||||
|
bridge_fan_speed = 100
|
58
resources/quality/strateo3d/HT0.4/s3d_ht0.4_PEKK_B.inst.cfg
Normal file
58
resources/quality/strateo3d/HT0.4/s3d_ht0.4_PEKK_B.inst.cfg
Normal file
|
@ -0,0 +1,58 @@
|
||||||
|
[general]
|
||||||
|
version = 4
|
||||||
|
name = B
|
||||||
|
definition = strateo3d
|
||||||
|
|
||||||
|
[metadata]
|
||||||
|
setting_version = 17
|
||||||
|
type = quality
|
||||||
|
quality_type = b
|
||||||
|
weight = 0
|
||||||
|
material = emotiontech_pekk
|
||||||
|
variant = High temp 0.4
|
||||||
|
|
||||||
|
[values]
|
||||||
|
layer_height_0 = =round(0.75*machine_nozzle_size, 2)
|
||||||
|
line_width = =machine_nozzle_size/machine_nozzle_size*0.4
|
||||||
|
wall_line_width = =machine_nozzle_size/machine_nozzle_size*0.35
|
||||||
|
wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.3
|
||||||
|
initial_layer_line_width_factor = 120
|
||||||
|
material_flow_layer_0 = 120
|
||||||
|
wall_0_wipe_dist = =machine_nozzle_size/2
|
||||||
|
speed_print = 40
|
||||||
|
speed_wall = =math.ceil(speed_print * 37/55)
|
||||||
|
speed_wall_0 = =math.ceil(speed_wall * 33/37)
|
||||||
|
speed_topbottom = =math.ceil(speed_print * 37/55)
|
||||||
|
speed_layer_0 = 10
|
||||||
|
speed_travel_layer_0 = 100
|
||||||
|
skirt_brim_speed = 5
|
||||||
|
speed_slowdown_layers = 2
|
||||||
|
cool_fan_enabled = True
|
||||||
|
cool_fan_speed = 30
|
||||||
|
cool_fan_speed_max = 30
|
||||||
|
cool_min_layer_time_fan_speed_max = 10
|
||||||
|
cool_min_layer_time = 11
|
||||||
|
cool_fan_full_layer = 2
|
||||||
|
cool_min_speed = 5
|
||||||
|
support_angle = 45
|
||||||
|
material_print_temperature = =default_material_print_temperature
|
||||||
|
material_print_temperature_layer_0 = =default_material_print_temperature + 15
|
||||||
|
material_flow = 105
|
||||||
|
retraction_extra_prime_amount = 0.1
|
||||||
|
retraction_min_travel = =3*line_width
|
||||||
|
retraction_hop_only_when_collides = True
|
||||||
|
skin_overlap = 15
|
||||||
|
support_z_distance = =layer_height
|
||||||
|
support_bottom_distance = =support_z_distance
|
||||||
|
support_xy_distance = =line_width * 1.7
|
||||||
|
support_xy_distance_overhang = =wall_line_width_0
|
||||||
|
support_offset = 1
|
||||||
|
support_interface_density = 105
|
||||||
|
prime_tower_enable = True
|
||||||
|
bridge_settings_enabled = True
|
||||||
|
bridge_wall_speed = 5
|
||||||
|
bridge_wall_material_flow = 185
|
||||||
|
bridge_skin_speed = =bridge_wall_speed
|
||||||
|
bridge_skin_material_flow = =bridge_wall_material_flow
|
||||||
|
bridge_fan_speed = 100
|
||||||
|
bridge_enable_more_layers = False
|
47
resources/quality/strateo3d/HT0.4/s3d_ht0.4_PETG_A.inst.cfg
Normal file
47
resources/quality/strateo3d/HT0.4/s3d_ht0.4_PETG_A.inst.cfg
Normal file
|
@ -0,0 +1,47 @@
|
||||||
|
[general]
|
||||||
|
version = 4
|
||||||
|
name = A
|
||||||
|
definition = strateo3d
|
||||||
|
|
||||||
|
[metadata]
|
||||||
|
setting_version = 17
|
||||||
|
type = quality
|
||||||
|
quality_type = a
|
||||||
|
weight = 1
|
||||||
|
material = emotiontech_petg
|
||||||
|
variant = High temp 0.4
|
||||||
|
|
||||||
|
[values]
|
||||||
|
layer_height_0 = =round(0.5*machine_nozzle_size, 2)
|
||||||
|
line_width = =machine_nozzle_size/machine_nozzle_size*0.4
|
||||||
|
wall_line_width = =machine_nozzle_size/machine_nozzle_size*0.35
|
||||||
|
wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.3
|
||||||
|
wall_0_wipe_dist = =machine_nozzle_size/2
|
||||||
|
speed_print = 50
|
||||||
|
speed_wall = =math.ceil(speed_print * 35/50)
|
||||||
|
speed_wall_0 = =math.ceil(speed_wall * 30/35)
|
||||||
|
speed_topbottom = =math.ceil(speed_print * 35/50)
|
||||||
|
speed_layer_0 = =math.ceil(speed_print * 20/50)
|
||||||
|
speed_slowdown_layers = 2
|
||||||
|
cool_fan_enabled = True
|
||||||
|
cool_fan_speed = 50
|
||||||
|
cool_fan_speed_max = 100
|
||||||
|
cool_min_layer_time_fan_speed_max = 20
|
||||||
|
cool_min_layer_time = 11
|
||||||
|
cool_fan_full_at_height = =layer_height_0 + 3 * layer_height
|
||||||
|
cool_min_speed = 10
|
||||||
|
support_angle = 65
|
||||||
|
material_print_temperature = =default_material_print_temperature
|
||||||
|
material_print_temperature_layer_0 = =default_material_print_temperature
|
||||||
|
material_flow = 98
|
||||||
|
retraction_extra_prime_amount = 0
|
||||||
|
retraction_min_travel = =3*line_width
|
||||||
|
retraction_hop_only_when_collides = True
|
||||||
|
skin_overlap = 10
|
||||||
|
support_z_distance = =layer_height*2
|
||||||
|
support_bottom_distance = =support_z_distance*0.5
|
||||||
|
support_xy_distance = =line_width * 1.7
|
||||||
|
support_xy_distance_overhang = =wall_line_width_0
|
||||||
|
support_offset = 1
|
||||||
|
support_interface_density = 100
|
||||||
|
prime_tower_enable = True
|
47
resources/quality/strateo3d/HT0.4/s3d_ht0.4_PETG_B.inst.cfg
Normal file
47
resources/quality/strateo3d/HT0.4/s3d_ht0.4_PETG_B.inst.cfg
Normal file
|
@ -0,0 +1,47 @@
|
||||||
|
[general]
|
||||||
|
version = 4
|
||||||
|
name = B
|
||||||
|
definition = strateo3d
|
||||||
|
|
||||||
|
[metadata]
|
||||||
|
setting_version = 17
|
||||||
|
type = quality
|
||||||
|
quality_type = b
|
||||||
|
weight = 0
|
||||||
|
material = emotiontech_petg
|
||||||
|
variant = High temp 0.4
|
||||||
|
|
||||||
|
[values]
|
||||||
|
layer_height_0 = =round(0.67*machine_nozzle_size, 2)
|
||||||
|
line_width = =machine_nozzle_size/machine_nozzle_size*0.4
|
||||||
|
wall_line_width = =machine_nozzle_size/machine_nozzle_size*0.35
|
||||||
|
wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.3
|
||||||
|
wall_0_wipe_dist = =machine_nozzle_size/2
|
||||||
|
speed_print = 55
|
||||||
|
speed_wall = =math.ceil(speed_print * 37/55)
|
||||||
|
speed_wall_0 = =math.ceil(speed_wall * 33/37)
|
||||||
|
speed_topbottom = =math.ceil(speed_print * 37/55)
|
||||||
|
speed_layer_0 = =math.ceil(speed_print * 25/55)
|
||||||
|
speed_slowdown_layers = 2
|
||||||
|
cool_fan_enabled = True
|
||||||
|
cool_fan_speed = 50
|
||||||
|
cool_fan_speed_max = 100
|
||||||
|
cool_min_layer_time_fan_speed_max = 20
|
||||||
|
cool_min_layer_time = 11
|
||||||
|
cool_fan_full_at_height = =layer_height_0 + 3 * layer_height
|
||||||
|
cool_min_speed = 10
|
||||||
|
support_angle = 60
|
||||||
|
material_print_temperature = =default_material_print_temperature + 5
|
||||||
|
material_print_temperature_layer_0 = =default_material_print_temperature
|
||||||
|
material_flow = 95
|
||||||
|
retraction_extra_prime_amount = 0
|
||||||
|
retraction_min_travel = =3*line_width
|
||||||
|
retraction_hop_only_when_collides = True
|
||||||
|
skin_overlap = 15
|
||||||
|
support_z_distance = =layer_height*2
|
||||||
|
support_bottom_distance = =support_z_distance*0.5
|
||||||
|
support_xy_distance = =line_width * 1.7
|
||||||
|
support_xy_distance_overhang = =wall_line_width_0
|
||||||
|
support_offset = 1
|
||||||
|
support_interface_density = 100
|
||||||
|
prime_tower_enable = True
|
47
resources/quality/strateo3d/HT0.4/s3d_ht0.4_PETG_C.inst.cfg
Normal file
47
resources/quality/strateo3d/HT0.4/s3d_ht0.4_PETG_C.inst.cfg
Normal file
|
@ -0,0 +1,47 @@
|
||||||
|
[general]
|
||||||
|
version = 4
|
||||||
|
name = C
|
||||||
|
definition = strateo3d
|
||||||
|
|
||||||
|
[metadata]
|
||||||
|
setting_version = 17
|
||||||
|
type = quality
|
||||||
|
quality_type = c
|
||||||
|
weight = -1
|
||||||
|
material = emotiontech_petg
|
||||||
|
variant = High temp 0.4
|
||||||
|
|
||||||
|
[values]
|
||||||
|
layer_height_0 = =round(0.75*machine_nozzle_size, 2)
|
||||||
|
line_width = =machine_nozzle_size/machine_nozzle_size*0.4
|
||||||
|
wall_line_width = =machine_nozzle_size/machine_nozzle_size*0.35
|
||||||
|
wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.3
|
||||||
|
wall_0_wipe_dist = =machine_nozzle_size/2
|
||||||
|
speed_print = 60
|
||||||
|
speed_wall = =math.ceil(speed_print * 40/60)
|
||||||
|
speed_wall_0 = =math.ceil(speed_wall * 35/40)
|
||||||
|
speed_topbottom = =math.ceil(speed_print * 40/60)
|
||||||
|
speed_layer_0 = =math.ceil(speed_print * 30/60)
|
||||||
|
speed_slowdown_layers = 2
|
||||||
|
cool_fan_enabled = True
|
||||||
|
cool_fan_speed = 50
|
||||||
|
cool_fan_speed_max = 100
|
||||||
|
cool_min_layer_time_fan_speed_max = 20
|
||||||
|
cool_min_layer_time = 11
|
||||||
|
cool_fan_full_at_height = =layer_height_0 + 3 * layer_height
|
||||||
|
cool_min_speed = 10
|
||||||
|
support_angle = 55
|
||||||
|
material_print_temperature = =default_material_print_temperature + 10
|
||||||
|
material_print_temperature_layer_0 = =default_material_print_temperature +5
|
||||||
|
material_flow = 91
|
||||||
|
retraction_extra_prime_amount = 0
|
||||||
|
retraction_min_travel = =3*line_width
|
||||||
|
retraction_hop_only_when_collides = True
|
||||||
|
skin_overlap = 20
|
||||||
|
support_z_distance = =layer_height*2
|
||||||
|
support_bottom_distance = =support_z_distance*0.5
|
||||||
|
support_xy_distance = =line_width * 1.7
|
||||||
|
support_xy_distance_overhang = =wall_line_width_0
|
||||||
|
support_offset = 1
|
||||||
|
support_interface_density = 100
|
||||||
|
prime_tower_enable = True
|
47
resources/quality/strateo3d/HT0.4/s3d_ht0.4_PLA_A.inst.cfg
Normal file
47
resources/quality/strateo3d/HT0.4/s3d_ht0.4_PLA_A.inst.cfg
Normal file
|
@ -0,0 +1,47 @@
|
||||||
|
[general]
|
||||||
|
version = 4
|
||||||
|
name = A
|
||||||
|
definition = strateo3d
|
||||||
|
|
||||||
|
[metadata]
|
||||||
|
setting_version = 17
|
||||||
|
type = quality
|
||||||
|
quality_type = a
|
||||||
|
weight = 1
|
||||||
|
material = emotiontech_pla
|
||||||
|
variant = High temp 0.4
|
||||||
|
|
||||||
|
[values]
|
||||||
|
layer_height_0 = =round(0.5*machine_nozzle_size, 2)
|
||||||
|
line_width = =machine_nozzle_size/machine_nozzle_size*0.4
|
||||||
|
wall_line_width = =machine_nozzle_size/machine_nozzle_size*0.35
|
||||||
|
wall_line_width_x = =machine_nozzle_size/machine_nozzle_size*0.3
|
||||||
|
wall_0_wipe_dist = =machine_nozzle_size/2
|
||||||
|
speed_print = 50
|
||||||
|
speed_wall = =math.ceil(speed_print * 35/50)
|
||||||
|
speed_wall_0 = =math.ceil(speed_wall * 30/35)
|
||||||
|
speed_topbottom = =math.ceil(speed_print * 35/50)
|
||||||
|
speed_layer_0 = =math.ceil(speed_print * 20/50)
|
||||||
|
speed_slowdown_layers = 2
|
||||||
|
cool_fan_enabled = True
|
||||||
|
cool_fan_speed = 100
|
||||||
|
cool_fan_speed_max = 100
|
||||||
|
cool_min_layer_time_fan_speed_max = 20
|
||||||
|
cool_min_layer_time = 11
|
||||||
|
cool_fan_full_at_height = =layer_height_0 + 2 * layer_height
|
||||||
|
cool_min_speed = 10
|
||||||
|
support_angle = 65
|
||||||
|
material_print_temperature = =default_material_print_temperature
|
||||||
|
material_print_temperature_layer_0 = =default_material_print_temperature -5
|
||||||
|
material_flow = 98
|
||||||
|
retraction_extra_prime_amount = 0.1
|
||||||
|
retraction_min_travel = =3*line_width
|
||||||
|
retraction_hop_only_when_collides = True
|
||||||
|
skin_overlap = 10
|
||||||
|
support_z_distance = =layer_height*2
|
||||||
|
support_bottom_distance = =support_z_distance*0.5
|
||||||
|
support_xy_distance = =line_width * 1.7
|
||||||
|
support_xy_distance_overhang = =wall_line_width_0
|
||||||
|
support_offset = 1
|
||||||
|
support_interface_density = 100
|
||||||
|
prime_tower_enable = True
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue