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": "",
|
||||
"name": catalog.i18nc("@menuitem", "Not overridden"),
|
||||
"enabled": True,
|
||||
"color": "#ffffff",
|
||||
"color": "transparent",
|
||||
"index": -1,
|
||||
"definition": "",
|
||||
"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.
|
||||
|
||||
import collections
|
||||
|
@ -6,9 +6,11 @@ from typing import Optional, Dict, List, cast
|
|||
|
||||
from PyQt5.QtCore import QObject, pyqtSlot
|
||||
|
||||
from UM.i18n import i18nCatalog
|
||||
from UM.Resources import Resources
|
||||
from UM.Version import Version
|
||||
|
||||
catalog = i18nCatalog("cura")
|
||||
|
||||
#
|
||||
# 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
|
||||
try:
|
||||
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.
|
||||
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]]]
|
||||
with open(file_path, "r", encoding = "utf-8") as f:
|
||||
open_version = None # type: Optional[Version]
|
||||
open_header = "" # Initialise to an empty header in case there is no "*" in the first line of the changelog
|
||||
for line in f:
|
||||
line = line.replace("\n", "")
|
||||
if "[" in line and "]" in line:
|
||||
line = line.replace("[", "")
|
||||
line = line.replace("]", "")
|
||||
open_version = Version(line)
|
||||
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([99, 99, 99])
|
||||
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([0, open_version.getMinor(), open_version.getRevision(), open_version.getPostfixVersion()])
|
||||
open_header = ""
|
||||
change_logs_dict[open_version] = collections.OrderedDict()
|
||||
elif line.startswith("*"):
|
||||
open_header = line.replace("*", "")
|
||||
change_logs_dict[cast(Version, open_version)][open_header] = []
|
||||
elif line != "":
|
||||
if open_header not in change_logs_dict[cast(Version, open_version)]:
|
||||
try:
|
||||
with open(file_path, "r", encoding = "utf-8") as f:
|
||||
open_version = None # type: Optional[Version]
|
||||
open_header = "" # Initialise to an empty header in case there is no "*" in the first line of the changelog
|
||||
for line in f:
|
||||
line = line.replace("\n", "")
|
||||
if "[" in line and "]" in line:
|
||||
line = line.replace("[", "")
|
||||
line = line.replace("]", "")
|
||||
open_version = Version(line)
|
||||
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([99, 99, 99])
|
||||
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([0, open_version.getMinor(), open_version.getRevision(), open_version.getPostfixVersion()])
|
||||
open_header = ""
|
||||
change_logs_dict[open_version] = collections.OrderedDict()
|
||||
elif line.startswith("*"):
|
||||
open_header = line.replace("*", "")
|
||||
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
|
||||
content = ""
|
||||
|
|
|
@ -4,12 +4,12 @@
|
|||
import argparse #To run the engine in debug mode if the front-end is in debug mode.
|
||||
from collections import defaultdict
|
||||
import os
|
||||
from PyQt5.QtCore import QObject, QTimer, pyqtSlot
|
||||
from PyQt5.QtCore import QObject, QTimer, QUrl, pyqtSlot
|
||||
import sys
|
||||
from time import time
|
||||
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.Scene.SceneNode import SceneNode
|
||||
|
@ -157,6 +157,18 @@ class CuraEngineBackend(QObject, Backend):
|
|||
self.determineAutoSlicing()
|
||||
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]
|
||||
|
||||
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]:
|
||||
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
|
||||
# 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)
|
||||
|
||||
# Check if there's any slicable object in the scene.
|
||||
|
@ -922,9 +939,22 @@ class CuraEngineBackend(QObject, Backend):
|
|||
|
||||
if not self._restart:
|
||||
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
|
||||
|
||||
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:
|
||||
"""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.
|
||||
// Cura is released under the terms of the LGPLv3 or higher.
|
||||
|
||||
import QtQuick 2.10
|
||||
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 2.3
|
||||
import QtQuick.Controls.Styles 1.4
|
||||
import QtQuick.Layouts 1.1
|
||||
|
||||
import UM 1.2 as UM
|
||||
import Cura 1.6 as Cura
|
||||
|
@ -29,31 +31,43 @@ Item
|
|||
margins: UM.Theme.getSize("default_margin").width
|
||||
}
|
||||
|
||||
Label
|
||||
RowLayout
|
||||
{
|
||||
id: selectProjectLabel
|
||||
id: headerRow
|
||||
|
||||
text: "Select Project"
|
||||
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:
|
||||
anchors
|
||||
{
|
||||
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
|
||||
|
@ -76,19 +90,18 @@ Item
|
|||
{
|
||||
id: digitalFactoryImage
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
source: "../images/digital_factory.svg"
|
||||
source: searchBar.text === "" ? "../images/digital_factory.svg" : "../images/projects_not_found.svg"
|
||||
fillMode: Image.PreserveAspectFit
|
||||
width: parent.width - 2 * UM.Theme.getSize("thick_margin").width
|
||||
sourceSize.width: width
|
||||
sourceSize.height: height
|
||||
}
|
||||
|
||||
Label
|
||||
{
|
||||
id: noLibraryProjectsLabel
|
||||
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")
|
||||
color: UM.Theme.getColor("text")
|
||||
}
|
||||
|
||||
Cura.TertiaryButton
|
||||
|
@ -97,6 +110,7 @@ Item
|
|||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
text: "Visit Digital 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
|
||||
anchors
|
||||
{
|
||||
top: selectProjectLabel.bottom
|
||||
top: headerRow.bottom
|
||||
topMargin: UM.Theme.getSize("default_margin").height
|
||||
bottom: parent.bottom
|
||||
left: parent.left
|
||||
|
|
|
@ -22,6 +22,7 @@ from .DFFileUploader import DFFileUploader
|
|||
from .DFLibraryFileUploadRequest import DFLibraryFileUploadRequest
|
||||
from .DFLibraryFileUploadResponse import DFLibraryFileUploadResponse
|
||||
from .DFPrintJobUploadRequest import DFPrintJobUploadRequest
|
||||
from .DigitalFactoryFeatureBudgetResponse import DigitalFactoryFeatureBudgetResponse
|
||||
from .DigitalFactoryFileResponse import DigitalFactoryFileResponse
|
||||
from .DigitalFactoryProjectResponse import DigitalFactoryProjectResponse
|
||||
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]
|
||||
|
||||
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:
|
||||
"""
|
||||
Retrieves a digital factory project by its library project id.
|
||||
|
@ -73,7 +95,7 @@ class DigitalFactoryApiClient:
|
|||
error_callback = failed,
|
||||
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.
|
||||
|
||||
|
@ -81,13 +103,18 @@ class DigitalFactoryApiClient:
|
|||
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).
|
||||
|
||||
: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 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:
|
||||
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,
|
||||
scope = self._scope,
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
# Copyright (c) 2021 Ultimaker B.V.
|
||||
# Cura is released under the terms of the LGPLv3 or higher.
|
||||
|
||||
import json
|
||||
import math
|
||||
import os
|
||||
|
@ -8,7 +10,7 @@ from enum import IntEnum
|
|||
from pathlib import Path
|
||||
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.QtQml import qmlRegisterType, qmlRegisterUncreatableType
|
||||
|
||||
|
@ -89,6 +91,9 @@ class DigitalFactoryController(QObject):
|
|||
uploadFileError = Signal()
|
||||
uploadFileFinished = Signal()
|
||||
|
||||
"""Signal to inform about the state of user access."""
|
||||
userAccessStateChanged = pyqtSignal(bool)
|
||||
|
||||
def __init__(self, application: CuraApplication) -> None:
|
||||
super().__init__(parent = None)
|
||||
|
||||
|
@ -106,12 +111,18 @@ class DigitalFactoryController(QObject):
|
|||
self._has_more_projects_to_load = False
|
||||
|
||||
self._account = self._application.getInstance().getCuraAPI().account # type: Account
|
||||
self._account.loginStateChanged.connect(self._onLoginStateChanged)
|
||||
self._current_workspace_information = CuraApplication.getInstance().getCurrentWorkspaceInformation()
|
||||
|
||||
# Initialize the project model
|
||||
self._project_model = DigitalFactoryProjectModel()
|
||||
self._selected_project_idx = -1
|
||||
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
|
||||
self._file_model = DigitalFactoryFileModel()
|
||||
|
@ -131,6 +142,8 @@ class DigitalFactoryController(QObject):
|
|||
self._application.engineCreatedSignal.connect(self._onEngineCreated)
|
||||
self._application.initializationFinished.connect(self._applicationInitializationFinished)
|
||||
|
||||
self._user_has_access = False
|
||||
|
||||
def clear(self) -> None:
|
||||
self._project_model.clearProjects()
|
||||
self._api.clear()
|
||||
|
@ -143,16 +156,24 @@ class DigitalFactoryController(QObject):
|
|||
|
||||
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:
|
||||
"""
|
||||
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
|
||||
"""
|
||||
subscriptions = [] # type: List[Dict[str, Any]]
|
||||
if self._account.userProfile:
|
||||
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:
|
||||
self.clear()
|
||||
|
@ -162,7 +183,7 @@ class DigitalFactoryController(QObject):
|
|||
if preselected_project_id:
|
||||
self._api.getProject(preselected_project_id, on_finished = self.setProjectAsPreselected, failed = self._onGetProjectFailed)
|
||||
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:
|
||||
"""
|
||||
|
@ -288,6 +309,38 @@ class DigitalFactoryController(QObject):
|
|||
self._selected_file_indices = 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)
|
||||
def digitalFactoryProjectModel(self) -> "DigitalFactoryProjectModel":
|
||||
return self._project_model
|
||||
|
@ -502,7 +555,7 @@ class DigitalFactoryController(QObject):
|
|||
# false, we also need to clean it from the projects model
|
||||
self._project_model.clearProjects()
|
||||
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._has_preselected_project = new_has_preselected_project
|
||||
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._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.priority = 10
|
||||
|
||||
|
@ -53,7 +53,7 @@ class DigitalFactoryFileProvider(FileProvider):
|
|||
if not self._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
|
||||
:param logged_in: The new login status
|
||||
|
|
|
@ -45,7 +45,7 @@ class DigitalFactoryOutputDevice(ProjectOutputDevice):
|
|||
self._writing = False
|
||||
|
||||
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._current_workspace_information = CuraApplication.getInstance().getCurrentWorkspaceInformation()
|
||||
|
@ -97,7 +97,7 @@ class DigitalFactoryOutputDevice(ProjectOutputDevice):
|
|||
if not self._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
|
||||
: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
|
||||
|
||||
import pytest
|
||||
|
@ -37,7 +40,7 @@ def test_getProjectsFirstPage(api_client):
|
|||
failed_callback = MagicMock()
|
||||
|
||||
# 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
|
||||
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]
|
||||
|
||||
# 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
|
||||
http_manager.get.reset_mock()
|
||||
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]
|
||||
|
||||
# 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):
|
||||
|
|
|
@ -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.
|
||||
|
||||
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.
|
||||
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 settings.getInstance(property_key) is None:
|
||||
definition = stack.getSettingDefinition(property_key)
|
||||
new_instance = SettingInstance(definition, settings)
|
||||
# We just want the wall_line count to be there in case it was overriden in the global stack.
|
||||
# as such, we don't need to set a value.
|
||||
if property_key != "wall_line_count":
|
||||
new_instance.setProperty("value", 0)
|
||||
new_instance.setProperty("value", specialized_settings[property_key])
|
||||
new_instance.resetState() # Ensure that the state is not seen as a user state.
|
||||
settings.addInstance(new_instance)
|
||||
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_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.
|
||||
|
||||
import QtQuick 2.7
|
||||
import QtQuick 2.9
|
||||
import QtQuick.Layouts 1.1
|
||||
import QtQuick.Controls 2.3
|
||||
|
||||
|
@ -13,6 +13,8 @@ Item
|
|||
{
|
||||
id: prepareMenu
|
||||
|
||||
property var fileProviderModel: CuraApplication.getFileProviderModel()
|
||||
|
||||
UM.I18nCatalog
|
||||
{
|
||||
id: catalog
|
||||
|
@ -23,24 +25,22 @@ Item
|
|||
{
|
||||
left: parent.left
|
||||
right: parent.right
|
||||
leftMargin: UM.Theme.getSize("wide_margin").width
|
||||
rightMargin: UM.Theme.getSize("wide_margin").width
|
||||
leftMargin: UM.Theme.getSize("wide_margin").width * 2
|
||||
rightMargin: UM.Theme.getSize("wide_margin").width * 2
|
||||
}
|
||||
|
||||
// Item to ensure that all of the buttons are nicely centered.
|
||||
Item
|
||||
{
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
width: parent.width - 2 * UM.Theme.getSize("wide_margin").width
|
||||
height: parent.height
|
||||
anchors.fill: parent
|
||||
|
||||
RowLayout
|
||||
{
|
||||
id: itemRow
|
||||
|
||||
anchors.left: openFileButton.right
|
||||
anchors.left: parent.left
|
||||
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)
|
||||
|
||||
height: parent.height
|
||||
|
@ -52,9 +52,6 @@ Item
|
|||
{
|
||||
id: machineSelection
|
||||
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.fillWidth: true
|
||||
Layout.fillHeight: true
|
||||
|
@ -63,9 +60,6 @@ Item
|
|||
Cura.ConfigurationMenu
|
||||
{
|
||||
id: printerSetup
|
||||
enableHeaderShadow: false
|
||||
headerBackgroundBorder.width: UM.Theme.getSize("default_lining").width
|
||||
headerBackgroundBorder.color: UM.Theme.getColor("lining")
|
||||
Layout.fillHeight: true
|
||||
Layout.fillWidth: true
|
||||
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
|
||||
{
|
||||
id: openFileButton
|
||||
height: UM.Theme.getSize("stage_menu").height
|
||||
width: UM.Theme.getSize("stage_menu").height
|
||||
visible: prepareMenu.fileProviderModel.count <= 1
|
||||
|
||||
height: parent.height
|
||||
width: visible ? height : 0 //Square button (and don't take up space if invisible).
|
||||
onClicked: Cura.Actions.open.trigger()
|
||||
enabled: visible && prepareMenu.fileProviderModel.count > 0
|
||||
hoverEnabled: true
|
||||
|
||||
contentItem: Item
|
||||
{
|
||||
anchors.fill: parent
|
||||
UM.RecolorImage
|
||||
{
|
||||
id: buttonIcon
|
||||
source: UM.Theme.getIcon("Folder", "medium")
|
||||
anchors.centerIn: parent
|
||||
source: UM.Theme.getIcon("Folder")
|
||||
width: UM.Theme.getSize("button_icon").width
|
||||
height: UM.Theme.getSize("button_icon").height
|
||||
color: UM.Theme.getColor("icon")
|
||||
|
@ -109,8 +210,8 @@ Item
|
|||
background: Rectangle
|
||||
{
|
||||
id: background
|
||||
height: UM.Theme.getSize("stage_menu").height
|
||||
width: UM.Theme.getSize("stage_menu").height
|
||||
height: parent.height
|
||||
width: parent.width
|
||||
border.color: UM.Theme.getColor("lining")
|
||||
border.width: UM.Theme.getSize("default_lining").width
|
||||
|
||||
|
|
|
@ -24,54 +24,36 @@ Item
|
|||
{
|
||||
left: parent.left
|
||||
right: parent.right
|
||||
leftMargin: UM.Theme.getSize("wide_margin").width
|
||||
rightMargin: UM.Theme.getSize("wide_margin").width
|
||||
leftMargin: UM.Theme.getSize("wide_margin").width * 2
|
||||
rightMargin: UM.Theme.getSize("wide_margin").width * 2
|
||||
}
|
||||
|
||||
Row
|
||||
{
|
||||
id: stageMenuRow
|
||||
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
width: parent.width - 2 * UM.Theme.getSize("wide_margin").width
|
||||
height: parent.height
|
||||
anchors.fill: parent
|
||||
// This is a trick to make sure that the borders of the two adjacent buttons' borders overlap. Otherwise
|
||||
// there will be double border (one from each button)
|
||||
spacing: -UM.Theme.getSize("default_lining").width
|
||||
|
||||
Cura.ViewsSelector
|
||||
{
|
||||
id: viewsSelector
|
||||
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
|
||||
}
|
||||
|
||||
// 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.
|
||||
Loader
|
||||
{
|
||||
id: viewPanel
|
||||
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 : ""
|
||||
}
|
||||
|
||||
// Separator line
|
||||
Rectangle
|
||||
{
|
||||
height: parent.height
|
||||
width: UM.Theme.getSize("default_lining").width
|
||||
color: UM.Theme.getColor("lining")
|
||||
}
|
||||
|
||||
Item
|
||||
{
|
||||
id: printSetupSelectorItem
|
||||
|
|
|
@ -203,16 +203,16 @@ Cura.ExpandableComponent
|
|||
|
||||
style: UM.Theme.styles.checkbox
|
||||
|
||||
|
||||
UM.RecolorImage
|
||||
Rectangle
|
||||
{
|
||||
id: swatch
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
anchors.right: extrudersModelCheckBox.right
|
||||
width: UM.Theme.getSize("layerview_legend_size").width
|
||||
height: UM.Theme.getSize("layerview_legend_size").height
|
||||
source: UM.Theme.getIcon("Extruder", "medium")
|
||||
color: model.color
|
||||
border.width: UM.Theme.getSize("default_lining").width
|
||||
border.color: UM.Theme.getColor("lining")
|
||||
}
|
||||
|
||||
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.
|
||||
|
||||
import QtQuick 2.3
|
||||
import QtQuick.Controls 1.4
|
||||
import QtQuick.Controls 2.4
|
||||
import QtQuick.Controls.Styles 1.3
|
||||
import UM 1.3 as UM
|
||||
import Cura 1.0 as Cura
|
||||
|
||||
Rectangle
|
||||
Button
|
||||
{
|
||||
id: base
|
||||
|
||||
property var enabled: true
|
||||
|
||||
property var iconSource: null
|
||||
color: enabled ? UM.Theme.getColor("monitor_icon_primary") : UM.Theme.getColor("monitor_icon_disabled")
|
||||
height: width
|
||||
radius: Math.round(0.5 * width)
|
||||
width: 24 * screenScaleFactor
|
||||
width: UM.Theme.getSize("button").width * 0.75 //Matching the size of the content of tool buttons.
|
||||
height: UM.Theme.getSize("button").height * 0.75
|
||||
|
||||
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
|
||||
{
|
||||
|
@ -27,30 +30,21 @@ Rectangle
|
|||
horizontalCenter: parent.horizontalCenter
|
||||
verticalCenter: parent.verticalCenter
|
||||
}
|
||||
color: UM.Theme.getColor("monitor_icon_accent")
|
||||
color: UM.Theme.getColor("primary")
|
||||
height: width
|
||||
source: iconSource
|
||||
width: Math.round(parent.width / 2)
|
||||
}
|
||||
|
||||
MouseArea
|
||||
onClicked:
|
||||
{
|
||||
id: clickArea
|
||||
anchors.fill: parent
|
||||
hoverEnabled: base.enabled
|
||||
onClicked:
|
||||
if (OutputDevice.activeCameraUrl != "")
|
||||
{
|
||||
if (base.enabled)
|
||||
{
|
||||
if (OutputDevice.activeCameraUrl != "")
|
||||
{
|
||||
OutputDevice.setActiveCameraUrl("")
|
||||
}
|
||||
else
|
||||
{
|
||||
OutputDevice.setActiveCameraUrl(modelData.cameraUrl)
|
||||
}
|
||||
}
|
||||
OutputDevice.setActiveCameraUrl("")
|
||||
}
|
||||
else
|
||||
{
|
||||
OutputDevice.setActiveCameraUrl(modelData.cameraUrl)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -50,7 +50,7 @@ Item
|
|||
id: buildplateIcon
|
||||
anchors.centerIn: parent
|
||||
color: UM.Theme.getColor("monitor_icon_primary")
|
||||
height: parent.height
|
||||
height: UM.Theme.getSize("medium_button_icon").width
|
||||
source: "../svg/icons/Buildplate.svg"
|
||||
width: height
|
||||
visible: buildplate
|
||||
|
|
|
@ -5,6 +5,8 @@ import QtQuick 2.2
|
|||
import QtQuick.Controls 2.0
|
||||
import UM 1.3 as UM
|
||||
|
||||
import Cura 1.6 as Cura
|
||||
|
||||
/**
|
||||
* This component comprises a colored extruder icon, the material name, and the
|
||||
* print core name. It is used by the MonitorPrinterConfiguration component with
|
||||
|
@ -18,10 +20,10 @@ import UM 1.3 as UM
|
|||
Item
|
||||
{
|
||||
// The material color
|
||||
property alias color: extruderIcon.color
|
||||
property alias color: extruderIcon.materialColor
|
||||
|
||||
// The extruder position; NOTE: Decent human beings count from 0
|
||||
property alias position: extruderIcon.position
|
||||
// The extruder position
|
||||
property int position
|
||||
|
||||
// The material name
|
||||
property alias material: materialLabel.text
|
||||
|
@ -32,12 +34,13 @@ Item
|
|||
// Height is 2 x 18px labels, plus 4px spacing between them
|
||||
height: 40 * screenScaleFactor // TODO: Theme!
|
||||
width: childrenRect.width
|
||||
opacity: material != "" && material != "Empty" && position >= 0 ? 1 : 0.4
|
||||
|
||||
MonitorIconExtruder
|
||||
Cura.ExtruderIcon
|
||||
{
|
||||
id: extruderIcon
|
||||
color: UM.Theme.getColor("monitor_skeleton_loading")
|
||||
position: 0
|
||||
materialColor: UM.Theme.getColor("monitor_skeleton_loading")
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
}
|
||||
|
||||
Rectangle
|
||||
|
@ -46,16 +49,18 @@ Item
|
|||
anchors
|
||||
{
|
||||
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")
|
||||
height: 18 * screenScaleFactor // TODO: Theme!
|
||||
height: childrenRect.height
|
||||
width: Math.max(materialLabel.contentWidth, 60 * screenScaleFactor) // TODO: Theme!
|
||||
radius: 2 * screenScaleFactor // TODO: Theme!
|
||||
|
||||
Label
|
||||
{
|
||||
id: materialLabel
|
||||
anchors.top: parent.top
|
||||
|
||||
color: UM.Theme.getColor("text")
|
||||
elide: Text.ElideRight
|
||||
|
@ -63,29 +68,13 @@ Item
|
|||
text: ""
|
||||
visible: text !== ""
|
||||
|
||||
// FIXED-LINE-HEIGHT:
|
||||
height: parent.height
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
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
|
||||
{
|
||||
id: printCoreLabel
|
||||
anchors.top: materialLabel.bottom
|
||||
|
||||
color: UM.Theme.getColor("text")
|
||||
elide: Text.ElideRight
|
||||
|
@ -93,9 +82,6 @@ Item
|
|||
text: ""
|
||||
visible: text !== ""
|
||||
|
||||
// FIXED-LINE-HEIGHT:
|
||||
height: parent.height
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
renderType: Text.NativeRendering
|
||||
}
|
||||
}
|
||||
|
|
|
@ -38,6 +38,7 @@ Item
|
|||
Label
|
||||
{
|
||||
id: positionLabel
|
||||
anchors.centerIn: icon
|
||||
font: UM.Theme.getFont("small")
|
||||
color: UM.Theme.getColor("text")
|
||||
height: Math.round(size / 2)
|
||||
|
@ -45,8 +46,6 @@ Item
|
|||
text: position + 1
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
width: Math.round(size / 2)
|
||||
x: Math.round(size * 0.25)
|
||||
y: Math.round(size * 0.15625)
|
||||
visible: position >= 0
|
||||
renderType: Text.NativeRendering
|
||||
}
|
||||
|
|
|
@ -256,7 +256,16 @@ class CloudOutputDevice(UltimakerNetworkedPrinterOutputDevice):
|
|||
"""
|
||||
self._uploaded_print_job = self._pre_upload_print_job
|
||||
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()
|
||||
|
||||
def _onPrintUploadSpecificError(self, reply: "QNetworkReply", _: "QNetworkReply.NetworkError"):
|
||||
|
|
|
@ -13,6 +13,5 @@ class PrintJobUploadSuccessMessage(Message):
|
|||
def __init__(self) -> None:
|
||||
super().__init__(
|
||||
text = I18N_CATALOG.i18nc("@info:status", "Print job was successfully sent to the printer."),
|
||||
title = I18N_CATALOG.i18nc("@info:title", "Data Sent"),
|
||||
lifetime = 5
|
||||
title = I18N_CATALOG.i18nc("@info:title", "Data Sent")
|
||||
)
|
||||
|
|
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_y": { "default_value": 80 },
|
||||
"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",
|
||||
"metadata": {
|
||||
"author": "William & Cataldo URSO",
|
||||
"manufacturer": "Shenzhen Geeetech Technology",
|
||||
"manufacturer": "Geeetech",
|
||||
"file_formats": "text/x-gcode",
|
||||
"visible": true,
|
||||
"has_materials": true,
|
||||
|
|
|
@ -92,7 +92,6 @@
|
|||
"speed_travel": {"value": 150},
|
||||
"speed_layer_0": {"value": 10},
|
||||
"speed_travel_layer_0": {"value": 50},
|
||||
"machine_max_feedrate_z": {"value": 0},
|
||||
"speed_slowdown_layers": {"value": 2},
|
||||
"speed_equalize_flow_enabled": {"value": false },
|
||||
"acceleration_enabled": {"value": false },
|
||||
|
|
|
@ -80,6 +80,7 @@
|
|||
"retraction_amount" : { "default_value": 4.5},
|
||||
"retraction_speed" : { "default_value": 40},
|
||||
"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": {
|
||||
"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 },
|
||||
|
||||
"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_quality_type": "c",
|
||||
"variants_name": "Print Head",
|
||||
"machine_extruder_trains":
|
||||
{
|
||||
"0": "strateo3d_right_extruder",
|
||||
"machine_extruder_trains":
|
||||
{
|
||||
"0": "strateo3d_right_extruder",
|
||||
"1": "strateo3d_left_extruder"
|
||||
}
|
||||
},
|
||||
|
||||
"overrides":
|
||||
|
||||
"overrides":
|
||||
{
|
||||
"machine_name": { "default_value": "Strateo3D" },
|
||||
"machine_width": { "default_value": 600 },
|
||||
|
@ -35,28 +35,43 @@
|
|||
"gantry_height": { "value": "40" },
|
||||
"machine_extruder_count": { "default_value": 2 },
|
||||
"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" },
|
||||
"extruder_prime_pos_y": {"minimum_value": "0", "maximum_value": "machine_depth"},
|
||||
"extruder_prime_pos_x": {"minimum_value": "0", "maximum_value": "machine_width"},
|
||||
"machine_heat_zone_length": { "default_value": 7 },
|
||||
"default_material_print_temperature": { "maximum_value_warning": "350" },
|
||||
"material_print_temperature": { "maximum_value_warning": "350" },
|
||||
"material_print_temperature_layer_0": { "maximum_value_warning": "350" },
|
||||
"material_bed_temperature": { "maximum_value": "130" },
|
||||
"material_bed_temperature_layer_0": { "maximum_value": "130" },
|
||||
"default_material_print_temperature": { "maximum_value_warning": "400", "maximum_value": "415" },
|
||||
"material_print_temperature": { "maximum_value_warning": "400", "maximum_value": "415" },
|
||||
"material_print_temperature_layer_0": { "maximum_value_warning": "400", "maximum_value": "415" },
|
||||
"material_initial_print_temperature": { "maximum_value_warning": "400", "maximum_value": "415" },
|
||||
"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 },
|
||||
"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_print": { "value": "machine_acceleration" },
|
||||
"acceleration_wall": { "value": "math.ceil(acceleration_print * 1250 / acceleration_print)" },
|
||||
"acceleration_wall_0": { "value": "math.ceil(acceleration_print * 1000 / acceleration_print)" },
|
||||
"acceleration_topbottom": { "value": "math.ceil(acceleration_print * 1250 / acceleration_print)" },
|
||||
"acceleration_support": { "value": "acceleration_print" },
|
||||
"acceleration_support_interface": { "value": "acceleration_topbottom" },
|
||||
"acceleration_travel": { "value": "acceleration_print" },
|
||||
"acceleration_layer_0": { "value": "acceleration_topbottom" },
|
||||
"acceleration_print": { "value": "machine_acceleration", "maximum_value_warning": "1500" },
|
||||
"acceleration_infill": { "maximum_value_warning": "1500" },
|
||||
"acceleration_wall": { "value": "math.ceil(acceleration_print * 1250 / acceleration_print)", "maximum_value_warning": "1500" },
|
||||
"acceleration_wall_0": { "value": "math.ceil(acceleration_print * 1000 / acceleration_print)", "maximum_value_warning": "1500" },
|
||||
"acceleration_wall_x": { "maximum_value_warning": "1500" },
|
||||
"acceleration_topbottom": { "value": "math.ceil(acceleration_print * 1250 / acceleration_print)", "maximum_value_warning": "1500" },
|
||||
"acceleration_support": { "value": "acceleration_print", "maximum_value_warning": "1500" },
|
||||
"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_step": { "default_value": 0.05 },
|
||||
"adhesion_type": { "default_value": "skirt" },
|
||||
|
@ -66,30 +81,39 @@
|
|||
"infill_before_walls": { "default_value": false },
|
||||
"infill_overlap": { "value": "0" },
|
||||
"infill_wipe_dist": { "value": "0" },
|
||||
"jerk_enabled": { "value": "False" },
|
||||
"jerk_layer_0": { "value": "jerk_topbottom" },
|
||||
"jerk_prime_tower": { "value": "math.ceil(jerk_print * 15 / 25)" },
|
||||
"jerk_print": { "value": "25" },
|
||||
"jerk_support": { "value": "math.ceil(jerk_print * 15 / 25)" },
|
||||
"jerk_support_interface": { "value": "jerk_topbottom" },
|
||||
"jerk_topbottom": { "value": "math.ceil(jerk_print * 5 / 25)" },
|
||||
"jerk_wall": { "value": "math.ceil(jerk_print * 10 / 25)" },
|
||||
"jerk_wall_0": { "value": "math.ceil(jerk_wall * 5 / 10)" },
|
||||
|
||||
"jerk_enabled": { "value": "False", "maximum_value_warning": "0.01" },
|
||||
"jerk_print": { "value": "0.01", "maximum_value_warning": "0.01" },
|
||||
"jerk_infill": { "value": "0.01", "maximum_value_warning": "0.01" },
|
||||
"jerk_layer_0": { "value": "jerk_topbottom", "maximum_value_warning": "0.01" },
|
||||
"jerk_print_layer_0": { "maximum_value_warning": "0.01" },
|
||||
"jerk_travel_layer_0": { "maximum_value_warning": "0.01" },
|
||||
"jerk_skirt_brim": { "maximum_value_warning": "0.01" },
|
||||
"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_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_nozzle_cool_down_speed": { "default_value": 0.50 },
|
||||
"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_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_deviation": { "default_value": 0.04 },
|
||||
"optimize_wall_printing_order": { "value": "True" },
|
||||
"prime_blob_enable": { "enabled": false, "default_value": false },
|
||||
"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" },
|
||||
"retraction_amount": { "default_value": 1.5 },
|
||||
"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" },
|
||||
"wall_thickness": { "value": "wall_line_width_0 + wall_line_width_x" }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -47,6 +47,7 @@
|
|||
"machine_max_acceleration_y": { "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_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,
|
||||
"inherits": "voron2_base",
|
||||
"metadata":
|
||||
|
@ -10,7 +10,7 @@
|
|||
},
|
||||
"overrides":
|
||||
{
|
||||
"machine_name": { "default_value": "VORON V0" },
|
||||
"machine_name": { "default_value": "VORON 0" },
|
||||
"machine_width": { "default_value": 120 },
|
||||
"machine_depth": { "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
|
||||
msgctxt "z_seam_position option back"
|
||||
msgid "Back"
|
||||
msgstr "Zurück"
|
||||
msgstr "Hinten"
|
||||
|
||||
#: fdmprinter.def.json
|
||||
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
|
||||
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
anchors.horizontalCenter: signInButton.horizontalCenter
|
||||
|
||||
implicitHeight: UM.Theme.getSize("main_window_header").height
|
||||
implicitWidth: UM.Theme.getSize("main_window_header").height
|
||||
implicitHeight: Math.round(0.5 * UM.Theme.getSize("main_window_header").height)
|
||||
implicitWidth: Math.round(0.5 * UM.Theme.getSize("main_window_header").height)
|
||||
|
||||
hoverEnabled: true
|
||||
|
||||
|
@ -68,8 +69,8 @@ Item
|
|||
{
|
||||
id: avatar
|
||||
|
||||
width: Math.round(0.8 * accountWidget.width)
|
||||
height: Math.round(0.8 * accountWidget.height)
|
||||
width: accountWidget.width
|
||||
height: accountWidget.height
|
||||
anchors.verticalCenter: accountWidget.verticalCenter
|
||||
anchors.horizontalCenter: accountWidget.horizontalCenter
|
||||
|
||||
|
@ -86,7 +87,7 @@ Item
|
|||
{
|
||||
id: initialCircle
|
||||
anchors.centerIn: parent
|
||||
width: Math.min(parent.width, parent.height)
|
||||
width: Math.min(accountWidget.width, accountWidget.height)
|
||||
height: width
|
||||
radius: width
|
||||
color: accountWidget.hovered ? UM.Theme.getColor("primary_text") : "transparent"
|
||||
|
@ -141,7 +142,7 @@ Item
|
|||
borderColor: UM.Theme.getColor("lining")
|
||||
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
|
||||
}
|
||||
|
|
|
@ -9,7 +9,7 @@ import Cura 1.1 as Cura
|
|||
|
||||
Column
|
||||
{
|
||||
spacing: UM.Theme.getSize("narrow_margin").height
|
||||
spacing: UM.Theme.getSize("default_margin").height
|
||||
topPadding: UM.Theme.getSize("default_margin").height
|
||||
bottomPadding: UM.Theme.getSize("default_margin").height
|
||||
width: childrenRect.width
|
||||
|
@ -18,7 +18,7 @@ Column
|
|||
{
|
||||
id: accountInfo
|
||||
width: childrenRect.width
|
||||
height: childrenRect.height
|
||||
height: accountSyncDetailsColumn.height
|
||||
anchors.left: parent.left
|
||||
anchors.leftMargin: UM.Theme.getSize("default_margin").width
|
||||
AvatarImage
|
||||
|
@ -56,6 +56,7 @@ Column
|
|||
|
||||
Column
|
||||
{
|
||||
id: accountSyncDetailsColumn
|
||||
anchors.left: avatar.right
|
||||
anchors.leftMargin: UM.Theme.getSize("default_margin").width
|
||||
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.
|
||||
|
||||
import QtQuick 2.7
|
||||
|
@ -18,19 +18,16 @@ Button
|
|||
property alias textFont: buttonText.font
|
||||
property alias cornerRadius: backgroundRect.radius
|
||||
property alias tooltip: tooltip.tooltipText
|
||||
property alias cornerSide: backgroundRect.cornerSide
|
||||
|
||||
property color color: UM.Theme.getColor("primary")
|
||||
property color hoverColor: UM.Theme.getColor("primary_hover")
|
||||
property color disabledColor: color
|
||||
property color textColor: UM.Theme.getColor("button_text")
|
||||
property color textHoverColor: textColor
|
||||
property color textDisabledColor: textColor
|
||||
property color textDisabledColor: disabledColor
|
||||
property color outlineColor: color
|
||||
property color outlineHoverColor: hoverColor
|
||||
property color outlineDisabledColor: outlineColor
|
||||
property alias shadowColor: shadow.color
|
||||
property alias shadowEnabled: shadow.visible
|
||||
property color outlineHoverColor: outlineColor
|
||||
property color outlineDisabledColor: disabledColor
|
||||
property alias busy: busyIndicator.visible
|
||||
|
||||
property bool underlineTextOnHover: false
|
||||
|
@ -46,6 +43,49 @@ Button
|
|||
// but it can exceed a maximum, then this value have to be set.
|
||||
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
|
||||
rightPadding: UM.Theme.getSize("default_margin").width
|
||||
height: UM.Theme.getSize("action_button").height
|
||||
|
@ -130,24 +170,13 @@ Button
|
|||
background: Cura.RoundedRectangle
|
||||
{
|
||||
id: backgroundRect
|
||||
cornerSide: Cura.RoundedRectangle.Direction.All
|
||||
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.color: button.enabled ? (button.hovered ? button.outlineHoverColor : button.outlineColor) : button.outlineDisabledColor
|
||||
}
|
||||
|
||||
DropShadow
|
||||
{
|
||||
id: shadow
|
||||
// Don't blur the shadow
|
||||
// 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.
|
||||
radius: 0
|
||||
anchors.fill: backgroundRect
|
||||
source: backgroundRect
|
||||
verticalOffset: 2
|
||||
visible: false
|
||||
// Should always be drawn behind the background.
|
||||
z: backgroundRect.z - 1
|
||||
cornerSide: Cura.RoundedRectangle.Direction.None
|
||||
}
|
||||
|
||||
Cura.ToolTip
|
||||
|
@ -189,4 +218,4 @@ Button
|
|||
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.
|
||||
|
||||
import QtQuick 2.7
|
||||
|
@ -23,7 +23,6 @@ Item
|
|||
id: saveToButton
|
||||
height: parent.height
|
||||
fixedWidthMode: true
|
||||
cornerSide: deviceSelectionMenu.visible ? Cura.RoundedRectangle.Direction.Left : Cura.RoundedRectangle.Direction.All
|
||||
|
||||
anchors
|
||||
{
|
||||
|
@ -43,15 +42,11 @@ Item
|
|||
}
|
||||
}
|
||||
|
||||
Cura.ActionButton
|
||||
Cura.PrimaryButton
|
||||
{
|
||||
id: deviceSelectionMenu
|
||||
height: parent.height
|
||||
|
||||
shadowEnabled: true
|
||||
shadowColor: UM.Theme.getColor("primary_shadow")
|
||||
cornerSide: Cura.RoundedRectangle.Direction.Right
|
||||
|
||||
anchors
|
||||
{
|
||||
top: parent.top
|
||||
|
@ -61,7 +56,7 @@ Item
|
|||
leftPadding: UM.Theme.getSize("narrow_margin").width //Need more space than usual here for wide text.
|
||||
rightPadding: UM.Theme.getSize("narrow_margin").width
|
||||
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)
|
||||
|
||||
onClicked: popup.opened ? popup.close() : popup.open()
|
||||
|
@ -70,6 +65,7 @@ Item
|
|||
{
|
||||
id: popup
|
||||
padding: 0
|
||||
spacing: 0
|
||||
|
||||
y: -height
|
||||
x: parent.width - width
|
||||
|
@ -78,17 +74,16 @@ Item
|
|||
|
||||
contentItem: ColumnLayout
|
||||
{
|
||||
spacing: 0
|
||||
|
||||
Repeater
|
||||
{
|
||||
model: devicesModel
|
||||
|
||||
delegate: Cura.ActionButton
|
||||
delegate: Cura.PrimaryButton
|
||||
{
|
||||
text: model.description
|
||||
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
|
||||
// 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.
|
||||
|
@ -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
|
||||
}
|
||||
}
|
||||
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 Cura 1.0 as Cura
|
||||
|
||||
import QtGraphicalEffects 1.0 // For the dropshadow
|
||||
|
||||
// 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 contentItem; The content that needs to be shown if the component is expanded.
|
||||
|
@ -58,6 +56,9 @@ Item
|
|||
|
||||
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.
|
||||
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.
|
||||
property alias headerCornerSide: background.cornerSide
|
||||
|
||||
property alias headerShadowColor: shadow.color
|
||||
|
||||
property alias enableHeaderShadow: shadow.visible
|
||||
|
||||
property int shadowOffset: 2
|
||||
property int popupOffset: 2
|
||||
|
||||
// Prefix used for the dragged position preferences. Preferences not used if empty. Don't translate!
|
||||
property string dragPreferencesNamePrefix: ""
|
||||
|
@ -122,6 +119,9 @@ Item
|
|||
id: background
|
||||
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")
|
||||
anchors.fill: parent
|
||||
|
||||
|
@ -167,7 +167,7 @@ Item
|
|||
verticalCenter: parent.verticalCenter
|
||||
margins: background.padding
|
||||
}
|
||||
source: UM.Theme.getIcon("Pen")
|
||||
source: UM.Theme.getIcon("ChevronSingleDown")
|
||||
visible: source != ""
|
||||
width: UM.Theme.getSize("standard_arrow").width
|
||||
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
|
||||
{
|
||||
id: contentContainer
|
||||
|
@ -211,7 +197,7 @@ Item
|
|||
height: childrenRect.height
|
||||
|
||||
// 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.
|
||||
// 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,
|
||||
CuraApplication.appWidth() - (contentContainer.width + margin.width),
|
||||
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.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 Cura 1.0 as Cura
|
||||
|
||||
import QtGraphicalEffects 1.0 // For the dropshadow
|
||||
|
||||
// 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 contentItem; The content that needs to be shown if the component is expanded.
|
||||
|
@ -52,6 +50,9 @@ Item
|
|||
|
||||
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.
|
||||
property alias iconSource: collapseButton.source
|
||||
|
||||
|
@ -74,11 +75,7 @@ Item
|
|||
// Change the contentItem close behaviour
|
||||
property alias contentClosePolicy : content.closePolicy
|
||||
|
||||
property alias headerShadowColor: shadow.color
|
||||
|
||||
property alias enableHeaderShadow: shadow.visible
|
||||
|
||||
property int shadowOffset: 2
|
||||
property int popupOffset: 2
|
||||
|
||||
onEnabledChanged:
|
||||
{
|
||||
|
@ -116,6 +113,9 @@ Item
|
|||
id: background
|
||||
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")
|
||||
anchors.fill: parent
|
||||
|
||||
|
@ -180,7 +180,7 @@ Item
|
|||
verticalCenter: parent.verticalCenter
|
||||
margins: background.padding
|
||||
}
|
||||
source: expanded ? UM.Theme.getIcon("ChevronSingleDown") : UM.Theme.getIcon("ChevronSingleLeft")
|
||||
source: UM.Theme.getIcon("ChevronSingleDown")
|
||||
visible: source != ""
|
||||
width: UM.Theme.getSize("standard_arrow").width
|
||||
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
|
||||
{
|
||||
id: content
|
||||
|
||||
// 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.
|
||||
// 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
|
||||
extruderEnabled: extruder.stack.isEnabled
|
||||
iconVariant: "default"
|
||||
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.
|
||||
|
||||
import QtQuick 2.7
|
||||
import QtQuick 2.11
|
||||
import QtQuick.Controls 1.1
|
||||
import UM 1.2 as UM
|
||||
|
||||
|
@ -16,30 +16,30 @@ Item
|
|||
property color materialColor
|
||||
property alias textColor: extruderNumberText.color
|
||||
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
|
||||
|
||||
source: UM.Theme.getIcon("Extruder", "medium")
|
||||
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
|
||||
UM.RecolorImage
|
||||
{
|
||||
horizontalCenter: parent.horizontalCenter
|
||||
top: parent.top
|
||||
topMargin: (parent.height - height) / 2
|
||||
anchors.fill: parent
|
||||
sourceSize: mainIcon.sourceSize
|
||||
|
||||
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
|
||||
|
@ -47,25 +47,13 @@ Item
|
|||
id: extruderNumberText
|
||||
anchors.centerIn: parent
|
||||
text: index + 1
|
||||
font: UM.Theme.getFont("small")
|
||||
font: UM.Theme.getFont("small_emphasis")
|
||||
color: UM.Theme.getColor("text")
|
||||
width: contentWidth
|
||||
height: contentHeight
|
||||
visible: extruderEnabled
|
||||
renderType: Text.NativeRendering
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
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
|
||||
exclusiveGroup: mainWindowHeaderMenuGroup
|
||||
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
|
||||
|
||||
property color overlayColor: "transparent"
|
||||
|
|
|
@ -56,13 +56,13 @@ Cura.ExpandablePopup
|
|||
id: extruderIcon
|
||||
materialColor: model.color
|
||||
extruderEnabled: model.enabled
|
||||
width: UM.Theme.getSize("button_icon").width
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
}
|
||||
|
||||
Item
|
||||
ColumnLayout
|
||||
{
|
||||
height: childrenRect.height
|
||||
opacity: model.enabled ? 1 : UM.Theme.getColor("extruder_disabled").a
|
||||
spacing: 0
|
||||
anchors
|
||||
{
|
||||
left: extruderIcon.right
|
||||
|
@ -81,13 +81,8 @@ Cura.ExpandablePopup
|
|||
font: UM.Theme.getFont("default")
|
||||
color: UM.Theme.getColor("text")
|
||||
renderType: Text.NativeRendering
|
||||
width: parent.width
|
||||
|
||||
anchors
|
||||
{
|
||||
top: parent.top
|
||||
left: parent.left
|
||||
right: parent.right
|
||||
}
|
||||
visible: !truncated
|
||||
}
|
||||
|
||||
|
@ -100,13 +95,7 @@ Cura.ExpandablePopup
|
|||
font: UM.Theme.getFont("default")
|
||||
color: UM.Theme.getColor("text")
|
||||
renderType: Text.NativeRendering
|
||||
|
||||
anchors
|
||||
{
|
||||
top: parent.top
|
||||
left: parent.left
|
||||
right: parent.right
|
||||
}
|
||||
width: parent.width
|
||||
|
||||
visible: !materialBrandColorTypeLabel.visible && !truncated
|
||||
}
|
||||
|
@ -120,13 +109,7 @@ Cura.ExpandablePopup
|
|||
font: UM.Theme.getFont("default")
|
||||
color: UM.Theme.getColor("text")
|
||||
renderType: Text.NativeRendering
|
||||
|
||||
anchors
|
||||
{
|
||||
top: parent.top
|
||||
left: parent.left
|
||||
right: parent.right
|
||||
}
|
||||
width: parent.width
|
||||
visible: !materialBrandColorTypeLabel.visible && !materialColorTypeLabel.visible
|
||||
}
|
||||
// Label that shows the name of the variant
|
||||
|
@ -141,13 +124,7 @@ Cura.ExpandablePopup
|
|||
font: UM.Theme.getFont("default_bold")
|
||||
color: UM.Theme.getColor("text")
|
||||
renderType: Text.NativeRendering
|
||||
|
||||
anchors
|
||||
{
|
||||
left: parent.left
|
||||
top: materialBrandColorTypeLabel.bottom
|
||||
right: parent.right
|
||||
}
|
||||
width: parent.width
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -302,15 +302,15 @@ 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
|
||||
Button
|
||||
{
|
||||
id: instructionButton
|
||||
hoverEnabled: true
|
||||
contentItem: Item {}
|
||||
height: 0.5 * materialSelection.height
|
||||
width: height
|
||||
height: UM.Theme.getSize("small_button").height
|
||||
width: UM.Theme.getSize("small_button").width
|
||||
anchors.centerIn: parent
|
||||
background: UM.RecolorImage
|
||||
{
|
||||
|
|
|
@ -13,8 +13,6 @@ Button
|
|||
|
||||
width: parent.width
|
||||
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
|
||||
hoverEnabled: true
|
||||
|
||||
|
@ -46,14 +44,14 @@ Button
|
|||
width: objectItemButton.width - objectItemButton.leftPadding
|
||||
height: UM.Theme.getSize("action_button").height
|
||||
|
||||
UM.RecolorImage
|
||||
Rectangle
|
||||
{
|
||||
id: swatch
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
anchors.left: parent.left
|
||||
width: height
|
||||
height: parent.height - UM.Theme.getSize("narrow_margin").height
|
||||
source: UM.Theme.getIcon("Extruder", "medium")
|
||||
width: UM.Theme.getSize("standard_arrow").height
|
||||
height: UM.Theme.getSize("standard_arrow").height
|
||||
radius: Math.round(width / 2)
|
||||
color: 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.
|
||||
|
||||
import QtQuick 2.2
|
||||
|
@ -9,8 +9,6 @@ import Cura 1.1 as Cura
|
|||
|
||||
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")
|
||||
textColor: UM.Theme.getColor("primary_button_text")
|
||||
outlineColor: "transparent"
|
||||
|
|
|
@ -226,9 +226,12 @@ Item
|
|||
{
|
||||
Cura.ExtruderIcon
|
||||
{
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
anchors.centerIn: parent
|
||||
materialColor: model.color
|
||||
extruderEnabled: model.enabled
|
||||
iconVariant: "default"
|
||||
height: parent.height
|
||||
width: height
|
||||
}
|
||||
}
|
||||
onClicked:
|
||||
|
|
|
@ -17,9 +17,6 @@ Cura.ExpandableComponent
|
|||
|
||||
contentPadding: UM.Theme.getSize("default_lining").width
|
||||
contentHeaderTitle: catalog.i18nc("@label", "Print settings")
|
||||
enableHeaderShadow: false
|
||||
headerBackgroundBorder.width: UM.Theme.getSize("default_lining").width
|
||||
headerBackgroundBorder.color: UM.Theme.getColor("lining")
|
||||
enabled: !preSlicedData
|
||||
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
|
||||
{
|
||||
source: UM.Theme.getIcon("PrintQuality")
|
||||
source: UM.Theme.getIcon("Sliders", "medium")
|
||||
iconSize: UM.Theme.getSize("button_icon").width
|
||||
text:
|
||||
{
|
||||
if (Cura.MachineManager.activeStack)
|
||||
|
@ -53,6 +54,7 @@ RowLayout
|
|||
source: UM.Theme.getIcon("Infill1")
|
||||
text: Cura.MachineManager.activeStack ? parseInt(infillDensity.properties.value) + "%" : "0%"
|
||||
font: UM.Theme.getFont("medium")
|
||||
iconSize: UM.Theme.getSize("medium_button_icon").width
|
||||
|
||||
UM.SettingPropertyProvider
|
||||
{
|
||||
|
@ -68,6 +70,7 @@ RowLayout
|
|||
source: UM.Theme.getIcon("Support")
|
||||
text: supportEnabled.properties.value == "True" ? enabledText : disabledText
|
||||
font: UM.Theme.getFont("medium")
|
||||
iconSize: UM.Theme.getSize("medium_button_icon").width
|
||||
|
||||
UM.SettingPropertyProvider
|
||||
{
|
||||
|
@ -83,6 +86,7 @@ RowLayout
|
|||
source: UM.Theme.getIcon("Adhesion")
|
||||
text: platformAdhesionType.properties.value != "skirt" && platformAdhesionType.properties.value != "none" ? enabledText : disabledText
|
||||
font: UM.Theme.getFont("medium")
|
||||
iconSize: UM.Theme.getSize("medium_button_icon").width
|
||||
|
||||
UM.SettingPropertyProvider
|
||||
{
|
||||
|
|
|
@ -29,6 +29,7 @@ Item
|
|||
text: catalog.i18nc("@label", "Adhesion")
|
||||
font: UM.Theme.getFont("medium")
|
||||
width: labelColumnWidth
|
||||
iconSize: UM.Theme.getSize("medium_button_icon").width
|
||||
}
|
||||
|
||||
Item
|
||||
|
|
|
@ -43,7 +43,7 @@ Item
|
|||
{
|
||||
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") + " (%)"
|
||||
font: UM.Theme.getFont("medium")
|
||||
width: labelColumnWidth
|
||||
iconSize: UM.Theme.getSize("medium_button_icon").width
|
||||
}
|
||||
|
||||
Item
|
||||
|
@ -119,6 +120,8 @@ Item
|
|||
implicitWidth: UM.Theme.getSize("print_setup_slider_handle").width
|
||||
implicitHeight: implicitWidth
|
||||
radius: Math.round(implicitWidth / 2)
|
||||
border.color: UM.Theme.getColor("slider_groove_fill")
|
||||
border.width: UM.Theme.getSize("default_lining").height
|
||||
}
|
||||
|
||||
tickmarks: Repeater
|
||||
|
|
|
@ -52,6 +52,7 @@ Item
|
|||
text: catalog.i18nc("@label", "Profiles")
|
||||
font: UM.Theme.getFont("medium")
|
||||
width: labelColumnWidth
|
||||
iconSize: UM.Theme.getSize("medium_button_icon").width
|
||||
}
|
||||
UM.SimpleButton
|
||||
{
|
||||
|
@ -91,6 +92,7 @@ Item
|
|||
{
|
||||
left: profileLabel.right
|
||||
right: parent.right
|
||||
verticalCenter: profileLabel.verticalCenter
|
||||
}
|
||||
|
||||
model: Cura.QualityProfilesDropDownMenuModel
|
||||
|
|
|
@ -30,6 +30,7 @@ Item
|
|||
text: catalog.i18nc("@label", "Support")
|
||||
font: UM.Theme.getFont("medium")
|
||||
width: labelColumnWidth
|
||||
iconSize: UM.Theme.getSize("medium_button_icon").width
|
||||
}
|
||||
|
||||
Item
|
||||
|
@ -218,18 +219,16 @@ Item
|
|||
elide: Text.ElideLeft
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
|
||||
background: UM.RecolorImage
|
||||
background: Rectangle
|
||||
{
|
||||
id: swatch
|
||||
height: Math.round(parent.height / 2)
|
||||
width: height
|
||||
radius: Math.round(width / 2)
|
||||
anchors.right: parent.right
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
anchors.rightMargin: UM.Theme.getSize("thin_margin").width
|
||||
|
||||
sourceSize.width: width
|
||||
sourceSize.height: height
|
||||
source: UM.Theme.getIcon("Extruder", "medium")
|
||||
color: supportExtruderCombobox.color
|
||||
}
|
||||
}
|
||||
|
@ -288,18 +287,16 @@ Item
|
|||
verticalAlignment: Text.AlignVCenter
|
||||
rightPadding: swatch.width + UM.Theme.getSize("setting_unit_margin").width
|
||||
|
||||
background: UM.RecolorImage
|
||||
background: Rectangle
|
||||
{
|
||||
id: swatch
|
||||
height: Math.round(parent.height / 2)
|
||||
width: height
|
||||
radius: Math.round(width / 2)
|
||||
anchors.right: parent.right
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
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
|
||||
}
|
||||
}
|
||||
|
|
|
@ -93,11 +93,11 @@ Cura.ExpandablePopup
|
|||
{
|
||||
if (isGroup)
|
||||
{
|
||||
return UM.Theme.getIcon("PrinterTriple")
|
||||
return UM.Theme.getIcon("PrinterTriple", "medium")
|
||||
}
|
||||
else if (isNetworkPrinter || isCloudRegistered)
|
||||
{
|
||||
return UM.Theme.getIcon("Printer")
|
||||
return UM.Theme.getIcon("Printer", "medium")
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -114,8 +114,9 @@ Cura.ExpandablePopup
|
|||
anchors
|
||||
{
|
||||
bottom: parent.bottom
|
||||
bottomMargin: - height * 1 / 6
|
||||
left: parent.left
|
||||
leftMargin: UM.Theme.getSize("thick_margin").width
|
||||
leftMargin: iconSize - width * 5 / 6
|
||||
}
|
||||
|
||||
source:
|
||||
|
@ -124,13 +125,9 @@ Cura.ExpandablePopup
|
|||
{
|
||||
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")
|
||||
}
|
||||
else if (connectionStatus == "printer_cloud_not_available")
|
||||
{
|
||||
return UM.Theme.getIcon("CloudGreyBG", "low")
|
||||
return UM.Theme.getIcon("CloudBadge", "low")
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -150,11 +147,10 @@ Cura.ExpandablePopup
|
|||
{
|
||||
id: iconBackground
|
||||
anchors.centerIn: parent
|
||||
// Make it a bit bigger so there is an outline
|
||||
width: parent.width + 2 * UM.Theme.getSize("default_lining").width
|
||||
height: parent.height + 2 * UM.Theme.getSize("default_lining").height
|
||||
radius: Math.round(width / 2)
|
||||
color: UM.Theme.getColor("main_background")
|
||||
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.
|
||||
height: parent.height - 1.5
|
||||
radius: width / 2
|
||||
color: UM.Theme.getColor("connection_badge_background")
|
||||
z: parent.z - 1
|
||||
}
|
||||
|
||||
|
|
|
@ -146,6 +146,7 @@ Item
|
|||
}
|
||||
radius: Math.round(width / 2)
|
||||
color: activeColor
|
||||
border.color: defaultItemColor
|
||||
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.
|
||||
|
||||
import QtQuick 2.2
|
||||
|
@ -9,11 +9,9 @@ import Cura 1.1 as Cura
|
|||
|
||||
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")
|
||||
textColor: UM.Theme.getColor("secondary_button_text")
|
||||
outlineColor: "transparent"
|
||||
outlineColor: UM.Theme.getColor("secondary_button_text")
|
||||
disabledColor: UM.Theme.getColor("action_button_disabled")
|
||||
textDisabledColor: UM.Theme.getColor("action_button_disabled_text")
|
||||
hoverColor: UM.Theme.getColor("secondary_button_hover")
|
||||
|
|
|
@ -16,10 +16,13 @@ Button
|
|||
anchors.rightMargin: 2 * UM.Theme.getSize("thin_margin").width
|
||||
hoverEnabled: true
|
||||
|
||||
height: UM.Theme.getSize("section_icon_column").height
|
||||
|
||||
background: Rectangle
|
||||
{
|
||||
id: backgroundRectangle
|
||||
height: UM.Theme.getSize("section").height
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
color:
|
||||
{
|
||||
if (!base.enabled)
|
||||
|
@ -107,8 +110,8 @@ Button
|
|||
source: UM.Theme.getIcon(definition.icon)
|
||||
width: UM.Theme.getSize("section_icon").width
|
||||
height: UM.Theme.getSize("section_icon").height
|
||||
sourceSize.width: width + 15 * screenScaleFactor
|
||||
sourceSize.height: width + 15 * screenScaleFactor
|
||||
sourceSize.width: width
|
||||
sourceSize.height: width
|
||||
}
|
||||
|
||||
onClicked:
|
||||
|
@ -141,8 +144,8 @@ Button
|
|||
id: settingsButton
|
||||
|
||||
visible: base.hovered || settingsButton.hovered
|
||||
height: Math.round(base.height * 0.6)
|
||||
width: Math.round(base.height * 0.6)
|
||||
height: UM.Theme.getSize("small_button_icon").height
|
||||
width: height
|
||||
|
||||
anchors
|
||||
{
|
||||
|
@ -184,7 +187,7 @@ Button
|
|||
return false
|
||||
}
|
||||
|
||||
height: Math.round(parent.height / 2)
|
||||
height: UM.Theme.getSize("small_button_icon").height
|
||||
width: height
|
||||
|
||||
onClicked:
|
||||
|
|
|
@ -77,7 +77,7 @@ SettingItem
|
|||
|
||||
currentIndex: propertyProvider.properties.value !== undefined ? propertyProvider.properties.value : 0
|
||||
|
||||
property string color: "#fff"
|
||||
property string color: "transparent"
|
||||
|
||||
Binding
|
||||
{
|
||||
|
@ -85,7 +85,7 @@ SettingItem
|
|||
// explicit binding here otherwise we do not handle value changes after the model changes.
|
||||
target: control
|
||||
property: "color"
|
||||
value: control.currentText != "" ? control.model.getItem(control.currentIndex).color : ""
|
||||
value: control.currentText != "" ? control.model.getItem(control.currentIndex).color : "transparent"
|
||||
}
|
||||
|
||||
Binding
|
||||
|
@ -160,18 +160,16 @@ SettingItem
|
|||
elide: Text.ElideLeft
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
|
||||
background: UM.RecolorImage
|
||||
background: Rectangle
|
||||
{
|
||||
id: swatch
|
||||
height: Math.round(parent.height / 2)
|
||||
width: height
|
||||
radius: Math.round(width / 2)
|
||||
anchors.right: parent.right
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
anchors.rightMargin: UM.Theme.getSize("thin_margin").width
|
||||
|
||||
sourceSize.width: width
|
||||
sourceSize.height: height
|
||||
source: UM.Theme.getIcon("Extruder", "medium")
|
||||
color: control.color
|
||||
}
|
||||
}
|
||||
|
@ -229,18 +227,16 @@ SettingItem
|
|||
verticalAlignment: Text.AlignVCenter
|
||||
rightPadding: swatch.width + UM.Theme.getSize("setting_unit_margin").width
|
||||
|
||||
background: UM.RecolorImage
|
||||
background: Rectangle
|
||||
{
|
||||
id: swatch
|
||||
height: Math.round(parent.height / 2)
|
||||
width: height
|
||||
radius: Math.round(width / 2)
|
||||
anchors.right: parent.right
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
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
|
||||
}
|
||||
}
|
||||
|
|
|
@ -156,7 +156,7 @@ Item
|
|||
{
|
||||
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)
|
||||
|
||||
anchors
|
||||
|
@ -174,6 +174,7 @@ Item
|
|||
|
||||
anchors.top: parent.top
|
||||
anchors.bottom: parent.bottom
|
||||
height: UM.Theme.getSize("small_button_icon").height
|
||||
width: height
|
||||
|
||||
color: UM.Theme.getColor("setting_control_button")
|
||||
|
@ -203,6 +204,7 @@ Item
|
|||
|
||||
anchors.top: parent.top
|
||||
anchors.bottom: parent.bottom
|
||||
height: UM.Theme.getSize("small_button_icon").height
|
||||
width: height
|
||||
|
||||
color: UM.Theme.getColor("setting_control_button")
|
||||
|
@ -286,6 +288,7 @@ Item
|
|||
|
||||
anchors.top: parent.top
|
||||
anchors.bottom: parent.bottom
|
||||
height: UM.Theme.getSize("small_button_icon").height
|
||||
width: height
|
||||
|
||||
onClicked:
|
||||
|
|
|
@ -88,7 +88,7 @@ SettingItem
|
|||
when: control.model.items.length > 0
|
||||
}
|
||||
|
||||
property string color: "#fff"
|
||||
property string color: "transparent"
|
||||
|
||||
Binding
|
||||
{
|
||||
|
@ -96,7 +96,7 @@ SettingItem
|
|||
// explicit binding here otherwise we do not handle value changes after the model changes.
|
||||
target: control
|
||||
property: "color"
|
||||
value: control.currentText != "" ? control.model.getItem(control.currentIndex).color : ""
|
||||
value: control.currentText != "" ? control.model.getItem(control.currentIndex).color : "transparent"
|
||||
}
|
||||
|
||||
indicator: UM.RecolorImage
|
||||
|
@ -161,18 +161,16 @@ SettingItem
|
|||
elide: Text.ElideRight
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
|
||||
background: UM.RecolorImage
|
||||
background: Rectangle
|
||||
{
|
||||
id: swatch
|
||||
height: Math.round(parent.height / 2)
|
||||
width: height
|
||||
radius: Math.round(width / 2)
|
||||
anchors.right: parent.right
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
anchors.rightMargin: UM.Theme.getSize("thin_margin").width
|
||||
|
||||
sourceSize.width: width
|
||||
sourceSize.height: height
|
||||
source: UM.Theme.getIcon("Extruder", "medium")
|
||||
color: control.color
|
||||
}
|
||||
}
|
||||
|
@ -226,18 +224,16 @@ SettingItem
|
|||
verticalAlignment: Text.AlignVCenter
|
||||
rightPadding: swatch.width + UM.Theme.getSize("setting_unit_margin").width
|
||||
|
||||
background: UM.RecolorImage
|
||||
background: Rectangle
|
||||
{
|
||||
id: swatch
|
||||
height: Math.round(parent.height / 2)
|
||||
width: height
|
||||
radius: Math.round(width / 2)
|
||||
anchors.right: parent.right
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
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
|
||||
}
|
||||
}
|
||||
|
|
|
@ -65,7 +65,13 @@ Item
|
|||
anchors.right: clearFilterButton.left
|
||||
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
|
||||
{
|
||||
|
@ -188,8 +194,8 @@ Item
|
|||
{
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
width: UM.Theme.getSize("standard_arrow").width
|
||||
height: UM.Theme.getSize("standard_arrow").height
|
||||
width: UM.Theme.getSize("medium_button_icon").width
|
||||
height: UM.Theme.getSize("medium_button_icon").height
|
||||
sourceSize.width: width
|
||||
sourceSize.height: height
|
||||
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.
|
||||
|
||||
import QtQuick 2.2
|
||||
|
@ -9,8 +9,6 @@ import Cura 1.1 as Cura
|
|||
|
||||
Cura.ActionButton
|
||||
{
|
||||
shadowEnabled: true
|
||||
shadowColor: enabled ? UM.Theme.getColor("secondary_button_shadow"): UM.Theme.getColor("action_button_disabled_shadow")
|
||||
color: "transparent"
|
||||
textColor: UM.Theme.getColor("text_link")
|
||||
outlineColor: "transparent"
|
||||
|
|
|
@ -68,7 +68,8 @@ Item
|
|||
source: UM.Theme.getIcon(model.icon) != "" ? UM.Theme.getIcon(model.icon) : "file:///" + model.location + "/" + model.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:
|
||||
|
|
|
@ -11,5 +11,4 @@ UM.SimpleButton
|
|||
height: UM.Theme.getSize("small_button").height
|
||||
hoverColor: UM.Theme.getColor("small_button_text_hover")
|
||||
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.
|
||||
|
||||
import QtQuick 2.10
|
||||
|
@ -214,16 +214,16 @@ Item
|
|||
id: troubleshootingButton
|
||||
|
||||
anchors.right: parent.right
|
||||
anchors.rightMargin: UM.Theme.getSize("default_margin").width
|
||||
anchors.rightMargin: UM.Theme.getSize("thin_margin").width
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
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
|
||||
{
|
||||
id: troubleshootingLinkIcon
|
||||
anchors.right: troubleshootingLabel.left
|
||||
anchors.rightMargin: UM.Theme.getSize("default_margin").width
|
||||
anchors.rightMargin: UM.Theme.getSize("thin_margin").width
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
height: troubleshootingLabel.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.
|
||||
|
||||
import QtQuick 2.10
|
||||
|
@ -15,6 +15,8 @@ TextField
|
|||
{
|
||||
id: textField
|
||||
|
||||
property alias leftIcon: iconLeft.source
|
||||
|
||||
UM.I18nCatalog { id: catalog; name: "cura" }
|
||||
|
||||
hoverEnabled: true
|
||||
|
@ -22,6 +24,7 @@ TextField
|
|||
font: UM.Theme.getFont("default")
|
||||
color: UM.Theme.getColor("text")
|
||||
renderType: Text.NativeRendering
|
||||
leftPadding: iconLeft.visible ? iconLeft.width + UM.Theme.getSize("default_margin").width * 2 : UM.Theme.getSize("thin_margin").width
|
||||
|
||||
states: [
|
||||
State
|
||||
|
@ -52,7 +55,6 @@ TextField
|
|||
|
||||
color: UM.Theme.getColor("main_background")
|
||||
|
||||
anchors.margins: Math.round(UM.Theme.getSize("default_lining").width)
|
||||
radius: UM.Theme.getSize("setting_control_radius").width
|
||||
|
||||
border.color:
|
||||
|
@ -67,5 +69,23 @@ TextField
|
|||
}
|
||||
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