Merge branch 'Ultimaker:master' into master

This commit is contained in:
Mingda_js 2022-02-26 19:51:23 +08:00 committed by GitHub
commit 9e7aca8244
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
124 changed files with 320 additions and 292 deletions

View File

@ -39,6 +39,7 @@ class PackageModel(QObject):
self._package_type = package_data.get("package_type", "")
self._is_bundled = package_data.get("is_bundled", False)
self._icon_url = package_data.get("icon_url", "")
self._marketplace_url = package_data.get("marketplace_url", "")
self._display_name = package_data.get("display_name", catalog.i18nc("@label:property", "Unknown Package"))
tags = package_data.get("tags", [])
self._is_checked_by_ultimaker = (self._package_type == "plugin" and "verified" in tags) or (
@ -210,6 +211,10 @@ class PackageModel(QObject):
def packageId(self) -> str:
return self._package_id
@pyqtProperty(str, constant=True)
def marketplaceURL(self)-> str:
return self._marketplace_url
@pyqtProperty(str, constant = True)
def packageType(self) -> str:
return self._package_type

View File

@ -117,9 +117,6 @@ class RemotePackageList(PackageList):
return
for package_data in response_data["data"]:
package_id = package_data["package_id"]
if package_id in self._package_manager.local_packages_ids:
continue # We should only show packages which are not already installed
try:
package = PackageModel(package_data, parent = self)
self._connectManageButtonSignals(package)

View File

@ -0,0 +1,3 @@
<svg width="48" height="48" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M39 14V8H27V14H21V8H9V14H7C6.20435 14 5.44129 14.3161 4.87868 14.8787C4.31607 15.4413 4 16.2044 4 17V37C4 37.7956 4.31607 38.5587 4.87868 39.1213C5.44129 39.6839 6.20435 40 7 40H41C41.7957 40 42.5587 39.6839 43.1213 39.1213C43.6839 38.5587 44 37.7956 44 37V17C44 16.2044 43.6839 15.4413 43.1213 14.8787C42.5587 14.3161 41.7957 14 41 14H39ZM29 10H37V14H29V10ZM11 10H19V14H11V10ZM42 38H6V16H42V38Z" fill="#000E1A"/>
</svg>

After

Width:  |  Height:  |  Size: 526 B

View File

@ -0,0 +1,3 @@
<svg width="48" height="48" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M24 4C18.6975 4.00609 13.614 6.11518 9.86459 9.86459C6.11518 13.614 4.00609 18.6975 4 24V42H6V32.66C7.54979 35.8792 9.93405 38.6241 12.9046 40.6092C15.8752 42.5942 19.3236 43.7468 22.8908 43.947C26.4579 44.1472 30.0136 43.3876 33.1876 41.7474C36.3616 40.1071 39.038 37.6462 40.9382 34.6206C42.8385 31.595 43.893 28.1155 43.9922 24.544C44.0914 20.9726 43.2315 17.4399 41.5021 14.3136C39.7727 11.1872 37.237 8.5815 34.1589 6.76765C31.0808 4.9538 27.5728 3.99809 24 4ZM24 42C20.4399 42 16.9598 40.9443 13.9997 38.9665C11.0397 36.9886 8.73255 34.1774 7.37017 30.8883C6.00779 27.5992 5.65133 23.98 6.34586 20.4884C7.0404 16.9967 8.75473 13.7894 11.2721 11.2721C13.7894 8.75473 16.9967 7.0404 20.4884 6.34587C23.98 5.65133 27.5992 6.00779 30.8883 7.37017C34.1774 8.73255 36.9886 11.0397 38.9665 13.9997C40.9443 16.9598 42 20.4399 42 24C41.9947 28.7723 40.0966 33.3476 36.7221 36.7221C33.3476 40.0966 28.7723 41.9947 24 42ZM24 17C22.6155 17 21.2622 17.4105 20.111 18.1797C18.9599 18.9489 18.0627 20.0421 17.5328 21.3212C17.003 22.6003 16.8644 24.0078 17.1345 25.3656C17.4046 26.7235 18.0713 27.9708 19.0503 28.9498C20.0292 29.9287 21.2765 30.5954 22.6344 30.8655C23.9922 31.1356 25.3997 30.997 26.6788 30.4672C27.9579 29.9373 29.0511 29.0401 29.8203 27.889C30.5895 26.7379 31 25.3845 31 24C30.9979 22.1441 30.2598 20.3648 28.9475 19.0525C27.6352 17.7402 25.8559 17.0021 24 17ZM24 29C23.0111 29 22.0444 28.7068 21.2221 28.1574C20.3999 27.6079 19.759 26.8271 19.3806 25.9134C19.0022 24.9998 18.9031 23.9945 19.0961 23.0246C19.289 22.0546 19.7652 21.1637 20.4645 20.4645C21.1637 19.7652 22.0546 19.289 23.0245 19.0961C23.9945 18.9031 24.9998 19.0022 25.9134 19.3806C26.827 19.759 27.6079 20.3999 28.1573 21.2222C28.7068 22.0444 29 23.0111 29 24C28.9984 25.3256 28.4712 26.5965 27.5338 27.5338C26.5965 28.4712 25.3256 28.9984 24 29ZM24 11C25.7079 10.9954 27.3997 11.3295 28.9776 11.9831C30.5554 12.6367 31.988 13.5967 33.1924 14.8076L31.7783 16.2217C30.7592 15.1971 29.547 14.3848 28.2118 13.8318C26.8767 13.2788 25.4451 12.9961 24 13V11Z" fill="#000E1A"/>
</svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

@ -13,13 +13,14 @@ Packages
bannerVisible: UM.Preferences.getValue("cura/market_place_show_manage_packages_banner");
bannerIcon: UM.Theme.getIcon("ArrowDoubleCircleRight")
bannerText: catalog.i18nc("@text", "Manage your Ultimaker Cura plugins and material profiles here. Make sure to keep your plugins up to date and backup your setup regularly.")
bannerReadMoreUrl: "" // TODO add when support page is ready
bannerReadMoreUrl: "https://support.ultimaker.com/hc/en-us/articles/4411125921426/?utm_source=cura&utm_medium=software&utm_campaign=marketplace-learn-manage"
onRemoveBanner: function() {
UM.Preferences.setValue("cura/market_place_show_manage_packages_banner", false);
bannerVisible = false;
}
searchInBrowserUrl: "https://marketplace.ultimaker.com/app/cura/plugins?utm_source=cura&utm_medium=software&utm_campaign=marketplace-search-plugins-browser"
packagesManageableInListView: true
showUpdateButton: true
showInstallButton: true
showDisableButton: true
model: manager.LocalPackageList
}

View File

@ -46,198 +46,182 @@ Window
{
anchors.fill: parent
color: UM.Theme.getColor("main_background")
}
//The Marketplace can have a page in front of everything with package details. The stack view controls its visibility.
StackView
{
id: contextStack
anchors.fill: parent
//The Marketplace can have a page in front of everything with package details. The stack view controls its visibility.
StackView
initialItem: packageBrowse
ColumnLayout
{
id: contextStack
anchors.fill: parent
id: packageBrowse
initialItem: packageBrowse
spacing: UM.Theme.getSize("narrow_margin").height
ColumnLayout
// Page title.
Item
{
id: packageBrowse
implicitWidth: parent.width
implicitHeight: childrenRect.height + UM.Theme.getSize("default_margin").height
spacing: UM.Theme.getSize("default_margin").height
// Page title.
Item
Label
{
Layout.preferredWidth: parent.width
Layout.preferredHeight: childrenRect.height + UM.Theme.getSize("default_margin").height
Label
id: pageTitle
anchors
{
id: pageTitle
anchors
{
left: parent.left
leftMargin: UM.Theme.getSize("default_margin").width
right: parent.right
rightMargin: UM.Theme.getSize("default_margin").width
bottom: parent.bottom
}
font: UM.Theme.getFont("large")
color: UM.Theme.getColor("text")
text: content.item ? content.item.pageTitle: catalog.i18nc("@title", "Loading...")
left: parent.left
leftMargin: UM.Theme.getSize("default_margin").width
right: parent.right
rightMargin: UM.Theme.getSize("default_margin").width
bottom: parent.bottom
}
}
OnboardBanner
{
visible: content.item && content.item.bannerVisible
text: content.item && content.item.bannerText
icon: content.item && content.item.bannerIcon
onRemove: content.item && content.item.onRemoveBanner
readMoreUrl: content.item && content.item.bannerReadMoreUrl
font: UM.Theme.getFont("large")
color: UM.Theme.getColor("text")
text: content.item ? content.item.pageTitle: catalog.i18nc("@title", "Loading...")
}
}
// Search & Top-Level Tabs
Item
OnboardBanner
{
visible: content.item && content.item.bannerVisible
text: content.item && content.item.bannerText
icon: content.item && content.item.bannerIcon
onRemove: content.item && content.item.onRemoveBanner
readMoreUrl: content.item && content.item.bannerReadMoreUrl
Layout.fillWidth: true
Layout.leftMargin: UM.Theme.getSize("default_margin").width
Layout.rightMargin: UM.Theme.getSize("default_margin").width
}
// Search & Top-Level Tabs
Item
{
implicitHeight: childrenRect.height
implicitWidth: parent.width - 2 * UM.Theme.getSize("default_margin").width
Layout.alignment: Qt.AlignHCenter
RowLayout
{
Layout.preferredHeight: childrenRect.height
Layout.preferredWidth: parent.width - 2 * UM.Theme.getSize("thin_margin").width
RowLayout
width: parent.width
height: UM.Theme.getSize("button_icon").height + UM.Theme.getSize("default_margin").height
spacing: UM.Theme.getSize("thin_margin").width
Cura.SearchBar
{
width: parent.width
height: UM.Theme.getSize("button_icon").height + UM.Theme.getSize("default_margin").height
spacing: UM.Theme.getSize("thin_margin").width
id: searchBar
implicitHeight: UM.Theme.getSize("button_icon").height
Layout.fillWidth: true
onTextEdited: searchStringChanged(text)
}
Item
// Page selection.
TabBar
{
id: pageSelectionTabBar
Layout.alignment: Qt.AlignRight
height: UM.Theme.getSize("button_icon").height
spacing: 0
background: Rectangle { color: "transparent" }
currentIndex: manager.tabShown
onCurrentIndexChanged:
{
Layout.preferredHeight: parent.height
Layout.preferredWidth: searchBar.visible ? UM.Theme.getSize("thin_margin").width : 0
Layout.fillWidth: ! searchBar.visible
manager.tabShown = currentIndex
searchBar.text = "";
searchBar.visible = currentItem.hasSearch;
content.source = currentItem.sourcePage;
}
Cura.SearchBar
PackageTypeTab
{
id: searchBar
Layout.preferredHeight: UM.Theme.getSize("button_icon").height
Layout.fillWidth: true
onTextEdited: searchStringChanged(text)
id: pluginTabText
width: implicitWidth
text: catalog.i18nc("@button", "Plugins")
property string sourcePage: "Plugins.qml"
property bool hasSearch: true
}
// Page selection.
TabBar
PackageTypeTab
{
id: pageSelectionTabBar
Layout.alignment: Qt.AlignRight
height: UM.Theme.getSize("button_icon").height
spacing: 0
background: Rectangle { color: "transparent" }
currentIndex: manager.tabShown
id: materialsTabText
width: implicitWidth
text: catalog.i18nc("@button", "Materials")
property string sourcePage: "Materials.qml"
property bool hasSearch: true
}
ManagePackagesButton
{
property string sourcePage: "ManagedPackages.qml"
property bool hasSearch: false
onCurrentIndexChanged:
Cura.NotificationIcon
{
manager.tabShown = currentIndex
searchBar.text = "";
searchBar.visible = currentItem.hasSearch;
content.source = currentItem.sourcePage;
}
PackageTypeTab
{
id: pluginTabText
width: implicitWidth
text: catalog.i18nc("@button", "Plugins")
property string sourcePage: "Plugins.qml"
property bool hasSearch: true
}
PackageTypeTab
{
id: materialsTabText
width: implicitWidth
text: catalog.i18nc("@button", "Materials")
property string sourcePage: "Materials.qml"
property bool hasSearch: true
}
ManagePackagesButton
{
property string sourcePage: "ManagedPackages.qml"
property bool hasSearch: false
Cura.NotificationIcon
anchors
{
anchors
{
horizontalCenter: parent.right
verticalCenter: parent.top
}
visible: CuraApplication.getPackageManager().packagesWithUpdate.length > 0
horizontalCenter: parent.right
verticalCenter: parent.top
}
visible: CuraApplication.getPackageManager().packagesWithUpdate.length > 0
labelText:
{
const itemCount = CuraApplication.getPackageManager().packagesWithUpdate.length
return itemCount > 9 ? "9+" : itemCount
}
labelText:
{
const itemCount = CuraApplication.getPackageManager().packagesWithUpdate.length
return itemCount > 9 ? "9+" : itemCount
}
}
}
TextMetrics
{
id: pluginTabTextMetrics
text: pluginTabText.text
font: pluginTabText.font
}
TextMetrics
{
id: materialsTabTextMetrics
text: materialsTabText.text
font: materialsTabText.font
}
}
}
}
FontMetrics
{
id: fontMetrics
font: UM.Theme.getFont("default")
}
FontMetrics
{
id: fontMetrics
font: UM.Theme.getFont("default")
}
Cura.TertiaryButton
{
text: catalog.i18nc("@info", "Search in the browser")
iconSource: UM.Theme.getIcon("LinkExternal")
visible: pageSelectionTabBar.currentItem.hasSearch
isIconOnRightSide: true
height: fontMetrics.height
textFont: fontMetrics.font
textColor: UM.Theme.getColor("text")
Cura.TertiaryButton
{
text: catalog.i18nc("@info", "Search in the browser")
iconSource: UM.Theme.getIcon("LinkExternal")
visible: pageSelectionTabBar.currentItem.hasSearch
isIconOnRightSide: true
height: fontMetrics.height
textFont: fontMetrics.font
textColor: UM.Theme.getColor("text")
onClicked: content.item && Qt.openUrlExternally(content.item.searchInBrowserUrl)
}
onClicked: content.item && Qt.openUrlExternally(content.item.searchInBrowserUrl)
}
// Page contents.
Rectangle
{
Layout.preferredWidth: parent.width
Layout.fillHeight: true
color: UM.Theme.getColor("detail_background")
// Page contents.
Rectangle
Loader
{
Layout.preferredWidth: parent.width
Layout.fillHeight: true
color: UM.Theme.getColor("detail_background")
id: content
anchors.fill: parent
anchors.margins: UM.Theme.getSize("default_margin").width
source: "Plugins.qml"
// Page contents.
Loader
Connections
{
id: content
anchors.fill: parent
anchors.margins: UM.Theme.getSize("default_margin").width
source: "Plugins.qml"
Connections
target: content
function onLoaded()
{
target: content
function onLoaded()
{
pageTitle.text = content.item.pageTitle
searchStringChanged.connect(handleSearchStringChanged)
}
function handleSearchStringChanged(new_search)
{
content.item.model.searchString = new_search
}
pageTitle.text = content.item.pageTitle
searchStringChanged.connect(handleSearchStringChanged)
}
function handleSearchStringChanged(new_search)
{
content.item.model.searchString = new_search
}
}
}

View File

@ -10,13 +10,14 @@ Packages
bannerVisible: UM.Preferences.getValue("cura/market_place_show_material_banner")
bannerIcon: UM.Theme.getIcon("Spool")
bannerText: catalog.i18nc("@text", "Select and install material profiles optimised for your Ultimaker 3D printers.")
bannerReadMoreUrl: "" // TODO add when support page is ready
bannerReadMoreUrl: "https://support.ultimaker.com/hc/en-us/articles/360011968360/?utm_source=cura&utm_medium=software&utm_campaign=marketplace-learn-materials"
onRemoveBanner: function() {
UM.Preferences.setValue("cura/market_place_show_material_banner", false);
bannerVisible = false;
}
searchInBrowserUrl: "https://marketplace.ultimaker.com/app/cura/materials?utm_source=cura&utm_medium=software&utm_campaign=marketplace-search-materials-browser"
packagesManageableInListView: false
showUpdateButton: true
showInstallButton: true
model: manager.MaterialPackageList
}

View File

@ -16,10 +16,7 @@ Rectangle
property var onRemove
property string readMoreUrl
Layout.preferredHeight: childrenRect.height + 2 * UM.Theme.getSize("default_margin").height
Layout.fillWidth: true
Layout.margins: UM.Theme.getSize("default_margin").width
implicitHeight: childrenRect.height + 2 * UM.Theme.getSize("default_margin").height
color: UM.Theme.getColor("action_panel_secondary")
// Icon

View File

@ -11,7 +11,9 @@ import Cura 1.6 as Cura
Rectangle
{
property alias packageData: packageCardHeader.packageData
property alias manageableInListView: packageCardHeader.showManageButtons
property alias showUpdateButton: packageCardHeader.showUpdateButton
property alias showDisableButton: packageCardHeader.showDisableButton
property alias showInstallButton: packageCardHeader.showInstallButton
height: childrenRect.height
color: UM.Theme.getColor("main_background")
@ -31,64 +33,14 @@ Rectangle
{
id: descriptionLabel
width: parent.width
property real lastLineWidth: 0; //Store the width of the last line, to properly position the elision.
text: packageData.description
textFormat: Text.PlainText //Must be plain text, or we won't get onLineLaidOut signals. Don't auto-detect!
font: UM.Theme.getFont("default")
color: UM.Theme.getColor("text")
maximumLineCount: 2
wrapMode: Text.Wrap
elide: Text.ElideRight
visible: text !== ""
onLineLaidOut:
{
if(truncated && line.isLast)
{
let max_line_width = parent.width - readMoreButton.width - fontMetrics.advanceWidth("… ") - 2 * UM.Theme.getSize("default_margin").width;
if(line.implicitWidth > max_line_width)
{
line.width = max_line_width;
}
else
{
line.width = line.implicitWidth - fontMetrics.advanceWidth("…"); //Truncate the ellipsis. We're adding this ourselves.
}
descriptionLabel.lastLineWidth = line.implicitWidth;
}
}
}
Label
{
id: tripleDotLabel
anchors.left: parent.left
anchors.leftMargin: descriptionLabel.lastLineWidth
anchors.bottom: descriptionLabel.bottom
text: "… "
font: descriptionLabel.font
color: descriptionLabel.color
visible: descriptionLabel.truncated && descriptionLabel.text !== ""
}
Cura.TertiaryButton
{
id: readMoreButton
anchors.right: parent.right
anchors.bottom: descriptionLabel.bottom
height: fontMetrics.height //Height of a single line.
text: catalog.i18nc("@info", "Read more")
iconSource: UM.Theme.getIcon("LinkExternal")
visible: descriptionLabel.truncated && descriptionLabel.text !== ""
enabled: visible
leftPadding: UM.Theme.getSize("default_margin").width
rightPadding: UM.Theme.getSize("wide_margin").width
textFont: descriptionLabel.font
isIconOnRightSide: true
onClicked: Qt.openUrlExternally(packageData.packageInfoUrl)
}
}
}

View File

@ -12,10 +12,13 @@ import Cura 1.6 as Cura
// are combined into the reusable "PackageCardHeader" component
Item
{
default property alias contents: contentItem.children;
default property alias contents: contentItem.children
property var packageData
property bool showManageButtons: false
property bool showDisableButton: false
property bool showInstallButton: false
property bool showUpdateButton: false
width: parent.width
height: UM.Theme.getSize("card").height
@ -32,8 +35,21 @@ Item
}
width: UM.Theme.getSize("card_icon").width
height: width
source: packageData.iconUrl != "" ? packageData.iconUrl : "../images/placeholder.svg"
sourceSize.height: height
sourceSize.width: width
source:
{
if (packageData.iconUrl != "")
{
return packageData.iconUrl
}
switch (packageData.packageType)
{
case "plugin": return "../images/Plugin.svg";
case "material": return "../images/Spool.svg";
default: return "../images/placeholder.svg";
}
}
}
ColumnLayout
@ -103,7 +119,7 @@ Item
color: externalLinkButton.hovered ? UM.Theme.getColor("action_button_hovered"): "transparent"
radius: externalLinkButton.width / 2
}
onClicked: Qt.openUrlExternally(packageData.authorInfoUrl)
onClicked: Qt.openUrlExternally(packageData.marketplaceURL)
}
}
@ -157,7 +173,7 @@ Item
ManageButton
{
id: enableManageButton
visible: showManageButtons && packageData.isInstalled && !packageData.isToBeInstalled && packageData.packageType != "material"
visible: showDisableButton && packageData.isInstalled && !packageData.isToBeInstalled && packageData.packageType != "material"
enabled: !packageData.busy
button_style: !packageData.isActive
@ -171,7 +187,7 @@ Item
ManageButton
{
id: installManageButton
visible: showManageButtons && (packageData.canDowngrade || !packageData.isBundled)
visible: showInstallButton && (packageData.canDowngrade || !packageData.isBundled)
enabled: !packageData.busy
busy: packageData.busy
button_style: !(packageData.isInstalled || packageData.isToBeInstalled)
@ -201,7 +217,7 @@ Item
ManageButton
{
id: updateManageButton
visible: showManageButtons && packageData.canUpdate
visible: showUpdateButton && packageData.canUpdate
enabled: !packageData.busy
busy: packageData.busy
Layout.alignment: Qt.AlignTop

View File

@ -31,7 +31,9 @@ Rectangle
PackageCardHeader
{
id: packageCardHeader
showManageButtons: true
showUpdateButton: true
showInstallButton: true
showDisableButton: true
anchors.fill: parent
@ -40,7 +42,10 @@ Rectangle
id: downloadCount
Layout.preferredWidth: parent.width
Layout.fillHeight: true
// It's not the perfect way to handle this, since a package really can have 0 downloads
// But we re-use the package page for the manage plugins as well. The one user that doesn't see
// the num downloads is an acceptable "sacrifice" to make this easy to fix.
visible: packageData.downloadCount != "0"
UM.RecolorImage
{
id: downloadsIcon
@ -53,6 +58,7 @@ Rectangle
Label
{
anchors.verticalCenter: downloadsIcon.verticalCenter
color: UM.Theme.getColor("text")

View File

@ -19,7 +19,10 @@ ListView
property string bannerText
property string bannerReadMoreUrl
property var onRemoveBanner
property bool packagesManageableInListView
property bool showUpdateButton
property bool showDisableButton
property bool showInstallButton
clip: true
@ -53,8 +56,8 @@ ListView
// Vertical ScrollBar, styled similarly to the scrollBar in the settings panel
id: verticalScrollBar
visible: packages.contentHeight > packages.height
background: Item{}
anchors.right: parent.right
background: Item {}
contentItem: Rectangle
{
@ -81,9 +84,20 @@ ListView
PackageCard
{
manageableInListView: packages.packagesManageableInListView
showUpdateButton: packages.showUpdateButton
showDisableButton: packages.showDisableButton
showInstallButton: packages.showInstallButton
packageData: model.package
width: parent.width - UM.Theme.getSize("default_margin").width - UM.Theme.getSize("narrow_margin").width
width: {
if (verticalScrollBar.visible)
{
return parent.width - UM.Theme.getSize("default_margin").width - UM.Theme.getSize("default_margin").width
}
else
{
return parent.width - UM.Theme.getSize("default_margin").width
}
}
color: cardMouseArea.containsMouse ? UM.Theme.getColor("action_button_hovered") : UM.Theme.getColor("main_background")
}
}

View File

@ -10,13 +10,14 @@ Packages
bannerVisible: UM.Preferences.getValue("cura/market_place_show_plugin_banner")
bannerIcon: UM.Theme.getIcon("Shop")
bannerText: catalog.i18nc("@text", "Streamline your workflow and customize your Ultimaker Cura experience with plugins contributed by our amazing community of users.")
bannerReadMoreUrl: "" // TODO add when support page is ready
bannerReadMoreUrl: "https://support.ultimaker.com/hc/en-us/articles/360011968360/?utm_source=cura&utm_medium=software&utm_campaign=marketplace-learn-plugins"
onRemoveBanner: function() {
UM.Preferences.setValue("cura/market_place_show_plugin_banner", false)
bannerVisible = false;
}
searchInBrowserUrl: "https://marketplace.ultimaker.com/app/cura/plugins?utm_source=cura&utm_medium=software&utm_campaign=marketplace-search-plugins-browser"
packagesManageableInListView: false
showUpdateButton: true
showInstallButton: true
model: manager.PluginPackageList
}

View File

@ -29,9 +29,10 @@ class VersionUpgrade48to49(VersionUpgrade):
parser["general"]["version"] = "7"
# Update visibility settings to include new top_bottom category
parser["general"]["visible_settings"] += ";top_bottom"
if "visible_settings" in parser["general"]:
parser["general"]["visible_settings"] += ";top_bottom"
if "categories_expanded" in parser["cura"] and any([setting in parser["cura"]["categories_expanded"] for setting in self._moved_visibility_settings]):
if "cura" in parser and "categories_expanded" in parser["cura"] and any([setting in parser["cura"]["categories_expanded"] for setting in self._moved_visibility_settings]):
parser["cura"]["categories_expanded"] += ";top_bottom"
# If the account scope in 4.8 is outdated, delete it so that the user is enforced to log in again and get the

View File

@ -1142,6 +1142,7 @@
"label": "Wall Distribution Count",
"description": "The number of walls, counted from the center, over which the variation needs to be spread. Lower values mean that the outer walls don't change in width.",
"type": "int",
"maximum_value": "999999",
"default_value": 1,
"minimum_value": "1",
"enabled": "beading_strategy_type == 'inward_distributed'"
@ -1198,8 +1199,8 @@
},
"optimize_wall_printing_order":
{
"label": "Order Inner Walls By Inset",
"description": "Order inner wall printing by inset-index, instead of by (hole) region.",
"label": "Optimize Wall Printing Order",
"description": "Optimize the order in which walls are printed so as to reduce the number of retractions and the distance travelled. Most parts will benefit from this being enabled but some may actually take longer so please compare the print time estimates with and without optimization. First layer is not optimized when choosing brim as build plate adhesion type.",
"type": "bool",
"default_value": false,
"settable_per_mesh": true
@ -1433,6 +1434,7 @@
"minimum_value": "0",
"maximum_value_warning": "top_layers - 1",
"type": "int",
"maximum_value": "999999",
"value": "0",
"limit_to_extruder": "roofing_extruder_nr",
"settable_per_mesh": true,
@ -1486,6 +1488,7 @@
"default_value": 8,
"minimum_value": "0",
"maximum_value_warning": "100",
"maximum_value": "999999",
"type": "int",
"minimum_value_warning": "2",
"value": "0 if infill_sparse_density == 100 else math.ceil(round(top_thickness / resolveOrValue('layer_height'), 4))",
@ -1516,6 +1519,7 @@
"minimum_value": "0",
"minimum_value_warning": "2",
"default_value": 6,
"maximum_value": "999999",
"type": "int",
"value": "999999 if infill_sparse_density == 100 else math.ceil(round(bottom_thickness / resolveOrValue('layer_height'), 4))",
"limit_to_extruder": "top_bottom_extruder_nr",
@ -1527,6 +1531,7 @@
"description": "The number of initial bottom layers, from the build-plate upwards. When calculated by the bottom thickness, this value is rounded to a whole number.",
"minimum_value": "0",
"minimum_value_warning": "2",
"maximum_value": "999999",
"default_value": 6,
"type": "int",
"value": "bottom_layers",
@ -2048,6 +2053,7 @@
"description": "Convert each infill line to this many lines. The extra lines do not cross over each other, but avoid each other. This makes the infill stiffer, but increases print time and material usage.",
"default_value": 1,
"type": "int",
"maximum_value": "999999",
"minimum_value": "1",
"maximum_value_warning": "infill_line_distance / infill_line_width",
"enabled": "infill_sparse_density > 0 and infill_pattern != 'zigzag' and (gradual_infill_steps == 0 or not zig_zaggify_infill)",
@ -2233,6 +2239,7 @@
"minimum_value": "0",
"maximum_value_warning": "10",
"type": "int",
"maximum_value": "999999",
"value": "math.ceil(round(skin_edge_support_thickness / resolveOrValue('infill_sparse_thickness'), 4))",
"limit_to_extruder": "infill_extruder_nr",
"enabled": "infill_sparse_density > 0",
@ -3257,6 +3264,7 @@
"default_value": 2,
"resolve": "round(sum(extruderValues('speed_slowdown_layers')) / len(extruderValues('speed_slowdown_layers')))",
"minimum_value": "0",
"maximum_value": "999999",
"maximum_value_warning": "3.2 / resolveOrValue('layer_height')",
"settable_per_mesh": false,
"settable_per_extruder": false

View File

@ -84,6 +84,8 @@
"meshfix_maximum_resolution": { "value": "(speed_wall_0 + speed_wall_x) / 60" },
"meshfix_maximum_deviation": { "value": "layer_height / 4" },
"meshfix_maximum_travel_resolution": { "value": 0.5 },
"prime_blob_enable": { "enabled": true, "default_value": true, "value": "resolveOrValue('print_sequence') != 'one_at_a_time'" }
"prime_blob_enable": { "enabled": true, "default_value": true, "value": "resolveOrValue('print_sequence') != 'one_at_a_time'" },
"retraction_prime_speed": { "value": "15" },
"retraction_speed": {"value": "45" }
}
}

View File

@ -136,6 +136,7 @@
"retraction_hop_only_when_collides": { "value": "True" },
"retraction_min_travel": { "value": "5" },
"retraction_prime_speed": { "value": "15" },
"retraction_speed": {"value": "45" },
"skin_overlap": { "value": "10" },
"speed_layer_0": { "value": "20" },
"speed_prime_tower": { "value": "speed_topbottom" },

View File

@ -138,6 +138,7 @@
"retraction_hop_only_when_collides": { "value": "True" },
"retraction_min_travel": { "value": "5" },
"retraction_prime_speed": { "value": "15" },
"retraction_speed": {"value": "45" },
"skin_overlap": { "value": "10" },
"speed_layer_0": { "value": "20" },
"speed_prime_tower": { "value": "speed_topbottom" },

View File

@ -17,6 +17,8 @@ cool_min_layer_time = 3
cool_min_layer_time_fan_speed_max = 15
cool_min_speed = 10
infill_sparse_density = 20
retraction_combing_max_distance = 50
retraction_prime_speed = =retraction_speed
speed_layer_0 = =round(speed_print * 30 / 45)
speed_print = 45
speed_travel = 150
@ -26,5 +28,4 @@ wall_thickness = 0.7
speed_wall_0 = =math.ceil(speed_print * 30 / 45)
speed_topbottom = =math.ceil(speed_print * 30 / 45)
speed_wall_x = =math.ceil(speed_print * 40 / 45)
speed_infill = =math.ceil(speed_print * 45 / 45)
retraction_combing_max_distance = 50
speed_infill = =math.ceil(speed_print * 45 / 45)

View File

@ -17,11 +17,12 @@ cool_min_layer_time = 2
cool_min_layer_time_fan_speed_max = 15
cool_min_speed = 15
infill_sparse_density = 20
retraction_combing_max_distance = 50
retraction_prime_speed = =retraction_speed
speed_layer_0 = =round(speed_print * 30 / 45)
speed_print = 45
speed_wall = =math.ceil(speed_print * 30 / 45)
top_bottom_thickness = 0.72
wall_thickness = 1.05
speed_topbottom = =math.ceil(speed_print * 15 / 45)
speed_infill = =math.ceil(speed_print * 45 / 45)
retraction_combing_max_distance = 50
speed_infill = =math.ceil(speed_print * 45 / 45)

View File

@ -17,9 +17,10 @@ cool_min_layer_time = 3
cool_min_layer_time_fan_speed_max = 15
cool_min_speed = 10
infill_sparse_density = 20
retraction_combing_max_distance = 50
retraction_prime_speed = =retraction_speed
speed_layer_0 = =round(speed_print * 30 / 45)
speed_print = 45
speed_wall = =math.ceil(speed_print * 30 / 45)
top_bottom_thickness = 0.8
wall_thickness = 1.05
retraction_combing_max_distance = 50
wall_thickness = 1.05

View File

@ -17,8 +17,9 @@ cool_min_layer_time = 5
cool_min_layer_time_fan_speed_max = 20
cool_min_speed = 8
infill_sparse_density = 20
retraction_combing_max_distance = 50
retraction_prime_speed = =retraction_speed
speed_layer_0 = =round(speed_print * 30 / 40)
speed_print = 40
top_bottom_thickness = 1.2
wall_thickness = 1.59
retraction_combing_max_distance = 50

View File

@ -26,6 +26,8 @@ raft_interface_line_spacing = 1
raft_interface_line_width = 0.8
raft_margin = 15
raft_surface_line_width = 0.38
retraction_combing_max_distance = 50
retraction_prime_speed = =retraction_speed
speed_layer_0 = =math.ceil(speed_print * 15 / 25)
speed_print = 25
speed_topbottom = =math.ceil(speed_print * 20 / 25)
@ -37,5 +39,4 @@ support_infill_rate = =0 if support_enable and support_structure == 'tree' else
support_pattern = lines
support_z_distance = 0.26
top_bottom_thickness = 1.5
wall_thickness = 1.14
retraction_combing_max_distance = 50
wall_thickness = 1.14

View File

@ -26,6 +26,8 @@ raft_interface_line_spacing = 1
raft_interface_line_width = 0.8
raft_margin = 15
raft_surface_line_width = 0.38
retraction_combing_max_distance = 50
retraction_prime_speed = =retraction_speed
speed_layer_0 = =math.ceil(speed_print * 15 / 35)
speed_print = 35
speed_topbottom = =math.ceil(speed_print * 20 / 35)
@ -37,5 +39,4 @@ support_infill_rate = =0 if support_enable and support_structure == 'tree' else
support_pattern = lines
support_z_distance = 0.26
top_bottom_thickness = 1.5
wall_thickness = 1.14
retraction_combing_max_distance = 50
wall_thickness = 1.14

View File

@ -27,6 +27,8 @@ raft_interface_line_width = 1.2
raft_margin = 15
raft_surface_line_width = 0.57
raft_surface_thickness = 0.2
retraction_combing_max_distance = 50
retraction_prime_speed = =retraction_speed
speed_layer_0 = =round(speed_print * 30 / 50)
speed_print = 25
speed_topbottom = =math.ceil(speed_print * 20 / 25)
@ -41,5 +43,4 @@ support_pattern = lines
support_xy_distance = 0.6
support_z_distance = 0.22
top_bottom_thickness = 0.75
wall_thickness = 1.14
retraction_combing_max_distance = 50
wall_thickness = 1.14

View File

@ -27,6 +27,8 @@ raft_interface_line_width = 1.2
raft_margin = 15
raft_surface_line_width = 0.57
raft_surface_thickness = 0.2
retraction_combing_max_distance = 50
retraction_prime_speed = =retraction_speed
speed_layer_0 = =math.ceil(speed_print * 30 / 35)
speed_print = 35
speed_topbottom = =math.ceil(speed_print * 20 / 35)
@ -41,5 +43,4 @@ support_pattern = lines
support_xy_distance = 0.6
support_z_distance = 0.22
top_bottom_thickness = 0.75
wall_thickness = 1.14
retraction_combing_max_distance = 50
wall_thickness = 1.14

View File

@ -26,6 +26,7 @@ raft_interface_line_width = 0.8
raft_margin = 15
raft_surface_line_width = 0.5
raft_surface_thickness = 0.15
retraction_prime_speed = =retraction_speed
speed_layer_0 = =math.ceil(speed_print * 30 / 45)
speed_print = 45
speed_topbottom = =math.ceil(speed_print * 20 / 45)

View File

@ -26,6 +26,7 @@ raft_interface_line_width = 0.8
raft_margin = 15
raft_surface_line_width = 0.5
raft_surface_thickness = 0.15
retraction_prime_speed = =retraction_speed
speed_layer_0 = =math.ceil(speed_print * 30 / 45)
speed_print = 45
speed_travel = 150

View File

@ -27,6 +27,7 @@ raft_margin = 15
raft_surface_line_width = 0.6
raft_surface_thickness = 0.15
retraction_hop_enabled = 0.2
retraction_prime_speed = =retraction_speed
speed_layer_0 = =math.ceil(speed_print * 30 / 55)
speed_print = 55
speed_support = 40

View File

@ -27,6 +27,7 @@ raft_margin = 15
raft_surface_line_width = 0.6
raft_surface_thickness = 0.15
retraction_hop_enabled = 0.2
retraction_prime_speed = =retraction_speed
speed_layer_0 = =math.ceil(speed_print * 30 / 55)
speed_print = 55
speed_support = 40

View File

@ -15,6 +15,7 @@ variant = 0.4 mm
cool_min_layer_time = 5
cool_min_speed = 10
infill_sparse_density = 20
retraction_prime_speed = =retraction_speed
speed_layer_0 = =round(speed_print * 30 / 60)
speed_print = 60
speed_topbottom = =math.ceil(speed_print * 30 / 60)

View File

@ -15,6 +15,7 @@ variant = 0.4 mm
cool_min_layer_time = 5
cool_min_speed = 10
infill_sparse_density = 20
retraction_prime_speed = =retraction_speed
speed_layer_0 = =round(speed_print * 30 / 60)
speed_print = 60
speed_topbottom = =math.ceil(speed_print * 30 / 60)

View File

@ -15,6 +15,7 @@ variant = 0.4 mm
cool_min_layer_time = 5
cool_min_speed = 10
infill_sparse_density = 20
retraction_prime_speed = =retraction_speed
speed_layer_0 = =round(speed_print * 30 / 50)
speed_print = 50
speed_topbottom = =math.ceil(speed_print * 20 / 50)

View File

@ -15,6 +15,7 @@ variant = 0.4 mm
cool_min_layer_time = 5
cool_min_speed = 10
infill_sparse_density = 20
retraction_prime_speed = =retraction_speed
speed_layer_0 = =round(speed_print * 30 / 50)
speed_print = 50
speed_topbottom = =math.ceil(speed_print * 20 / 50)

View File

@ -15,6 +15,7 @@ variant = 0.6 mm
cool_min_layer_time = 5
cool_min_speed = 10
infill_sparse_density = 20
retraction_prime_speed = =retraction_speed
speed_layer_0 = =round(speed_print * 30 / 55)
speed_print = 55
speed_topbottom = =math.ceil(speed_print * 20 / 55)

View File

@ -45,7 +45,6 @@ retraction_hop = 0.15
retraction_hop_enabled = True
retraction_hop_only_when_collides = True
retraction_min_travel = 0.5
retraction_prime_speed = 15
skin_overlap = 10
speed_layer_0 = =speed_print
speed_prime_tower = =speed_topbottom

View File

@ -45,7 +45,6 @@ retraction_hop = 0.15
retraction_hop_enabled = True
retraction_hop_only_when_collides = True
retraction_min_travel = 0.5
retraction_prime_speed = 15
skin_overlap = 10
speed_layer_0 = =speed_print
speed_prime_tower = =speed_topbottom

View File

@ -44,7 +44,6 @@ retraction_extrusion_window = 1
retraction_hop = 0.15
retraction_hop_enabled = True
retraction_hop_only_when_collides = True
retraction_prime_speed = 15
skin_overlap = 10
speed_layer_0 = =speed_print
speed_prime_tower = =speed_topbottom

View File

@ -44,7 +44,6 @@ retraction_extrusion_window = 1
retraction_hop = 0.15
retraction_hop_enabled = True
retraction_hop_only_when_collides = True
retraction_prime_speed = 15
skin_overlap = 10
speed_layer_0 = =speed_print
speed_prime_tower = =speed_topbottom

View File

@ -15,6 +15,7 @@ variant = 0.4 mm
cool_min_layer_time = 5
cool_min_speed = 10
infill_sparse_density = 20
retraction_prime_speed = =retraction_speed
speed_layer_0 = =round(speed_print * 30 / 50)
speed_print = 50
speed_topbottom = =math.ceil(speed_print * 30 / 50)

View File

@ -15,6 +15,7 @@ variant = 0.4 mm
cool_min_layer_time = 5
cool_min_speed = 10
infill_sparse_density = 20
retraction_prime_speed = =retraction_speed
speed_layer_0 = =round(speed_print * 30 / 40)
speed_print = 40
speed_topbottom = =math.ceil(speed_print * 30 / 40)

View File

@ -15,6 +15,7 @@ variant = 0.4 mm
cool_min_layer_time = 5
cool_min_speed = 10
infill_sparse_density = 20
retraction_prime_speed = =retraction_speed
speed_layer_0 = =round(speed_print * 30 / 40)
speed_print = 40
speed_topbottom = =math.ceil(speed_print * 20 / 40)

View File

@ -15,6 +15,7 @@ variant = 0.6 mm
cool_min_layer_time = 5
cool_min_speed = 10
infill_sparse_density = 20
retraction_prime_speed = =retraction_speed
speed_layer_0 = =round(speed_print * 30 / 50)
speed_print = 50
speed_topbottom = =math.ceil(speed_print * 20 / 50)

View File

@ -15,6 +15,5 @@ variant = AA 0.25
cool_fan_speed = 40
infill_overlap = =0 if infill_sparse_density > 80 else 15
material_final_print_temperature = =material_print_temperature - 5
retraction_prime_speed = 25
speed_topbottom = =math.ceil(speed_print * 30 / 55)
wall_thickness = 0.92

View File

@ -34,7 +34,6 @@ retraction_count_max = 80
retraction_hop = 2
retraction_hop_only_when_collides = True
retraction_min_travel = 0.8
retraction_prime_speed = 15
skin_overlap = 30
speed_layer_0 = =math.ceil(speed_print * 25 / 50)
speed_print = 50

View File

@ -37,7 +37,7 @@ retraction_extrusion_window = 6.5
retraction_hop = 2
retraction_hop_only_when_collides = True
retraction_min_travel = 0.8
retraction_prime_speed = 13
retraction_prime_speed = 15
speed_layer_0 = =math.ceil(speed_print * 15 / 25)
speed_print = 25
speed_travel_layer_0 = 50

View File

@ -32,6 +32,7 @@ retraction_extrusion_window = 1
retraction_hop = 0.2
retraction_hop_enabled = False
retraction_hop_only_when_collides = True
retraction_prime_speed = =retraction_speed
skin_overlap = 20
speed_layer_0 = =math.ceil(speed_print * 20 / 50)
speed_print = 50

View File

@ -32,6 +32,7 @@ retraction_extrusion_window = 1
retraction_hop = 0.2
retraction_hop_enabled = False
retraction_hop_only_when_collides = True
retraction_prime_speed = =retraction_speed
skin_overlap = 20
speed_layer_0 = =math.ceil(speed_print * 20 / 45)
speed_print = 45

View File

@ -34,6 +34,7 @@ retraction_extrusion_window = 1
retraction_hop = 0.2
retraction_hop_enabled = False
retraction_hop_only_when_collides = True
retraction_prime_speed = =retraction_speed
skin_overlap = 20
speed_layer_0 = =math.ceil(speed_print * 20 / 40)
speed_print = 40

View File

@ -34,6 +34,7 @@ retraction_extrusion_window = 1
retraction_hop = 0.2
retraction_hop_enabled = False
retraction_hop_only_when_collides = True
retraction_prime_speed = =retraction_speed
skin_overlap = 20
speed_layer_0 = =math.ceil(speed_print * 20 / 40)
speed_print = 40

View File

@ -16,6 +16,7 @@ material_print_temperature = =default_material_print_temperature + 10
material_initial_print_temperature = =material_print_temperature - 5
material_final_print_temperature = =material_print_temperature - 10
retraction_combing_max_distance = 50
retraction_prime_speed = =retraction_speed
skin_overlap = 20
speed_print = 60
speed_layer_0 = =math.ceil(speed_print * 20 / 60)

View File

@ -17,6 +17,7 @@ material_print_temperature = =default_material_print_temperature + 5
material_initial_print_temperature = =material_print_temperature - 5
material_final_print_temperature = =material_print_temperature - 10
retraction_combing_max_distance = 50
retraction_prime_speed = =retraction_speed
speed_print = 60
speed_layer_0 = =math.ceil(speed_print * 20 / 60)
speed_topbottom = =math.ceil(speed_print * 30 / 60)

View File

@ -19,6 +19,7 @@ material_print_temperature = =default_material_print_temperature - 5
material_initial_print_temperature = =material_print_temperature - 5
material_final_print_temperature = =material_print_temperature - 10
retraction_combing_max_distance = 50
retraction_prime_speed = =retraction_speed
speed_print = 50
speed_layer_0 = =math.ceil(speed_print * 20 / 50)
speed_topbottom = =math.ceil(speed_print * 30 / 50)

View File

@ -17,6 +17,7 @@ machine_nozzle_heat_up_speed = 1.5
material_initial_print_temperature = =material_print_temperature - 5
material_final_print_temperature = =material_print_temperature - 10
retraction_combing_max_distance = 50
retraction_prime_speed = =retraction_speed
speed_print = 55
speed_layer_0 = =math.ceil(speed_print * 20 / 55)
speed_topbottom = =math.ceil(speed_print * 30 / 55)

View File

@ -28,6 +28,7 @@ raft_interface_thickness = =round(machine_nozzle_size * 0.3 / 0.4, 2)
raft_jerk = =jerk_layer_0
raft_margin = 10
raft_surface_thickness = =round(machine_nozzle_size * 0.2 / 0.4, 2)
retraction_prime_speed = =retraction_speed
skin_overlap = 50
speed_layer_0 = 10
switch_extruder_prime_speed = 30

View File

@ -28,6 +28,7 @@ raft_interface_thickness = =round(machine_nozzle_size * 0.3 / 0.4, 2)
raft_jerk = =jerk_layer_0
raft_margin = 10
raft_surface_thickness = =round(machine_nozzle_size * 0.2 / 0.4, 2)
retraction_prime_speed = =retraction_speed
skin_overlap = 50
speed_layer_0 = 10
switch_extruder_prime_speed = 30

View File

@ -27,6 +27,7 @@ raft_interface_thickness = =round(machine_nozzle_size * 0.3 / 0.4, 2)
raft_jerk = =jerk_layer_0
raft_margin = 10
raft_surface_thickness = =round(machine_nozzle_size * 0.2 / 0.4, 2)
retraction_prime_speed = =retraction_speed
skin_overlap = 50
speed_layer_0 = 10
switch_extruder_prime_speed = 30

View File

@ -27,6 +27,7 @@ raft_interface_thickness = =round(machine_nozzle_size * 0.3 / 0.4, 2)
raft_jerk = =jerk_layer_0
raft_margin = 10
raft_surface_thickness = =round(machine_nozzle_size * 0.2 / 0.4, 2)
retraction_prime_speed = =retraction_speed
skin_overlap = 50
speed_layer_0 = 10
switch_extruder_prime_speed = 30

View File

@ -43,7 +43,6 @@ retraction_extrusion_window = 1
retraction_hop = 2
retraction_hop_only_when_collides = True
retraction_min_travel = 0.8
retraction_prime_speed = 15
skin_overlap = 30
speed_layer_0 = =math.ceil(speed_print * 25 / 50)
speed_print = 50

View File

@ -41,7 +41,6 @@ retraction_extrusion_window = 1
retraction_hop = 2
retraction_hop_only_when_collides = True
retraction_min_travel = 0.8
retraction_prime_speed = 15
skin_overlap = 30
speed_layer_0 = =math.ceil(speed_print * 25 / 50)
speed_print = 50

View File

@ -43,7 +43,6 @@ retraction_extrusion_window = 1
retraction_hop = 2
retraction_hop_only_when_collides = True
retraction_min_travel = 0.8
retraction_prime_speed = 15
skin_overlap = 30
speed_layer_0 = =math.ceil(speed_print * 25 / 50)
speed_print = 50

View File

@ -41,7 +41,6 @@ retraction_extrusion_window = 1
retraction_hop = 2
retraction_hop_only_when_collides = True
retraction_min_travel = 0.8
retraction_prime_speed = 15
skin_overlap = 30
speed_layer_0 = =math.ceil(speed_print * 25 / 50)
speed_print = 50

View File

@ -19,6 +19,7 @@ machine_nozzle_heat_up_speed = 1.6
material_print_temperature = =default_material_print_temperature + 5
material_standby_temperature = 100
prime_tower_enable = False
retraction_prime_speed = =retraction_speed
skin_overlap = 20
speed_layer_0 = 10
speed_topbottom = =math.ceil(speed_print * 40 / 70)

View File

@ -18,6 +18,7 @@ machine_nozzle_cool_down_speed = 0.75
machine_nozzle_heat_up_speed = 1.6
material_standby_temperature = 100
prime_tower_enable = False
retraction_prime_speed = =retraction_speed
speed_print = 70
speed_layer_0 = 10
speed_topbottom = =math.ceil(speed_print * 35 / 70)

View File

@ -20,6 +20,7 @@ machine_nozzle_heat_up_speed = 1.6
material_print_temperature = =default_material_print_temperature - 5
material_standby_temperature = 100
prime_tower_enable = False
retraction_prime_speed = =retraction_speed
skin_overlap = 10
speed_print = 50
speed_layer_0 = 10

View File

@ -19,6 +19,7 @@ machine_nozzle_cool_down_speed = 0.75
machine_nozzle_heat_up_speed = 1.6
material_standby_temperature = 100
prime_tower_enable = False
retraction_prime_speed = =retraction_speed
skin_overlap = 10
speed_layer_0 = 10
top_bottom_thickness = 1

View File

@ -34,6 +34,7 @@ machine_nozzle_heat_up_speed = 1.6
material_standby_temperature = 100
prime_tower_enable = False
retraction_prime_speed = =retraction_speed
skin_edge_support_thickness = =0.9 if infill_sparse_density < 30 else 0
skin_overlap = 20

View File

@ -42,7 +42,6 @@ retraction_extrusion_window = 1
retraction_hop = 2
retraction_hop_only_when_collides = True
retraction_min_travel = 0.8
retraction_prime_speed = 18
speed_layer_0 = =math.ceil(speed_print * 15 / 25)
speed_print = 25
speed_topbottom = =math.ceil(speed_print * 25 / 25)

View File

@ -41,7 +41,6 @@ retraction_extrusion_window = 1
retraction_hop = 2
retraction_hop_only_when_collides = True
retraction_min_travel = 0.8
retraction_prime_speed = 18
speed_layer_0 = =math.ceil(speed_print * 15 / 25)
speed_print = 25
speed_topbottom = =math.ceil(speed_print * 25 / 25)

View File

@ -43,7 +43,6 @@ retraction_extrusion_window = 1
retraction_hop = 2
retraction_hop_only_when_collides = True
retraction_min_travel = 0.8
retraction_prime_speed = 18
speed_layer_0 = =math.ceil(speed_print * 15 / 25)
speed_print = 25
speed_topbottom = =math.ceil(speed_print * 25 / 25)

View File

@ -23,6 +23,7 @@ machine_nozzle_heat_up_speed = 1.6
material_print_temperature = =default_material_print_temperature -10
material_standby_temperature = 100
prime_tower_enable = False
retraction_prime_speed = =retraction_speed
skin_overlap = 20
speed_layer_0 = =math.ceil(speed_print * 20 / 50)
speed_print = 50

View File

@ -20,6 +20,7 @@ machine_nozzle_heat_up_speed = 1.6
material_print_temperature = =default_material_print_temperature -10
material_standby_temperature = 100
prime_tower_enable = False
retraction_prime_speed = =retraction_speed
speed_layer_0 = =math.ceil(speed_print * 20 / 45)
speed_print = 45
speed_topbottom = =math.ceil(speed_print * 35 / 45)

View File

@ -20,6 +20,7 @@ machine_nozzle_heat_up_speed = 1.6
material_print_temperature = =default_material_print_temperature - 15
material_standby_temperature = 100
prime_tower_enable = False
retraction_prime_speed = =retraction_speed
skin_overlap = 10
speed_print = 45
speed_layer_0 = =math.ceil(speed_print * 20 / 45)

View File

@ -21,6 +21,7 @@ machine_nozzle_heat_up_speed = 1.6
material_print_temperature = =default_material_print_temperature - 15
material_standby_temperature = 100
prime_tower_enable = False
retraction_prime_speed = =retraction_speed
skin_overlap = 10
speed_layer_0 = =math.ceil(speed_print * 20 / 45)
speed_print = 45

View File

@ -34,6 +34,7 @@ machine_nozzle_heat_up_speed = 1.6
material_standby_temperature = 100
prime_tower_enable = False
retraction_prime_speed = =retraction_speed
skin_edge_support_thickness = =0.9 if infill_sparse_density < 30 else 0
skin_overlap = 20

View File

@ -41,7 +41,6 @@ retraction_extra_prime_amount = 0.8
retraction_extrusion_window = 1
retraction_hop_only_when_collides = True
retraction_min_travel = =line_width * 2
retraction_prime_speed = 15
skin_line_width = =round(line_width / 0.8, 2)
skin_overlap = 5
speed_layer_0 = =math.ceil(speed_print * 18 / 25)

View File

@ -41,7 +41,6 @@ retraction_extra_prime_amount = 0.8
retraction_extrusion_window = 1
retraction_hop_only_when_collides = True
retraction_min_travel = =line_width * 2
retraction_prime_speed = 15
skin_line_width = =round(line_width / 0.8, 2)
skin_overlap = 5
speed_layer_0 = =math.ceil(speed_print * 18 / 25)

View File

@ -40,7 +40,6 @@ retraction_extra_prime_amount = 0.8
retraction_extrusion_window = 1
retraction_hop_only_when_collides = True
retraction_min_travel = =line_width * 2
retraction_prime_speed = 15
skin_line_width = =round(line_width / 0.8, 2)
skin_overlap = 5
speed_layer_0 = =math.ceil(speed_print * 18 / 25)

View File

@ -15,6 +15,5 @@ variant = AA 0.25
cool_fan_speed = 40
infill_overlap = =0 if infill_sparse_density > 80 else 15
material_final_print_temperature = =material_print_temperature - 5
retraction_prime_speed = 25
speed_topbottom = =math.ceil(speed_print * 30 / 55)
wall_thickness = 0.92

View File

@ -34,7 +34,6 @@ retraction_count_max = 80
retraction_hop = 2
retraction_hop_only_when_collides = True
retraction_min_travel = 0.8
retraction_prime_speed = 15
skin_overlap = 30
speed_layer_0 = =math.ceil(speed_print * 25 / 50)
speed_print = 50

View File

@ -37,7 +37,7 @@ retraction_extrusion_window = 6.5
retraction_hop = 2
retraction_hop_only_when_collides = True
retraction_min_travel = 0.8
retraction_prime_speed = 13
retraction_prime_speed = 15
speed_layer_0 = =math.ceil(speed_print * 15 / 25)
speed_print = 25
speed_travel_layer_0 = 50

View File

@ -32,6 +32,7 @@ retraction_extrusion_window = 1
retraction_hop = 0.2
retraction_hop_enabled = False
retraction_hop_only_when_collides = True
retraction_prime_speed = =retraction_speed
skin_overlap = 20
speed_layer_0 = =math.ceil(speed_print * 20 / 50)
speed_print = 50

View File

@ -32,6 +32,7 @@ retraction_extrusion_window = 1
retraction_hop = 0.2
retraction_hop_enabled = False
retraction_hop_only_when_collides = True
retraction_prime_speed = =retraction_speed
skin_overlap = 20
speed_layer_0 = =math.ceil(speed_print * 20 / 45)
speed_print = 45

View File

@ -34,6 +34,7 @@ retraction_extrusion_window = 1
retraction_hop = 0.2
retraction_hop_enabled = False
retraction_hop_only_when_collides = True
retraction_prime_speed = =retraction_speed
skin_overlap = 20
speed_layer_0 = =math.ceil(speed_print * 20 / 40)
speed_print = 40

View File

@ -33,6 +33,7 @@ retraction_extrusion_window = 1
retraction_hop = 0.2
retraction_hop_enabled = False
retraction_hop_only_when_collides = True
retraction_prime_speed = =retraction_speed
skin_overlap = 20
speed_layer_0 = =math.ceil(speed_print * 20 / 40)
speed_print = 40

View File

@ -16,6 +16,7 @@ material_print_temperature = =default_material_print_temperature + 10
material_initial_print_temperature = =material_print_temperature - 5
material_final_print_temperature = =material_print_temperature - 10
retraction_combing_max_distance = 50
retraction_prime_speed = =retraction_speed
skin_edge_support_thickness = =0.8 if infill_sparse_density < 30 else 0
skin_overlap = 20
speed_print = 60

View File

@ -17,6 +17,7 @@ material_print_temperature = =default_material_print_temperature + 5
material_initial_print_temperature = =material_print_temperature - 5
material_final_print_temperature = =material_print_temperature - 10
retraction_combing_max_distance = 50
retraction_prime_speed = =retraction_speed
speed_print = 60
speed_layer_0 = =math.ceil(speed_print * 20 / 60)
speed_topbottom = =math.ceil(speed_print * 30 / 60)

View File

@ -19,6 +19,7 @@ material_print_temperature = =default_material_print_temperature - 5
material_initial_print_temperature = =material_print_temperature - 5
material_final_print_temperature = =material_print_temperature - 10
retraction_combing_max_distance = 50
retraction_prime_speed = =retraction_speed
speed_print = 50
speed_layer_0 = =math.ceil(speed_print * 20 / 50)
speed_topbottom = =math.ceil(speed_print * 30 / 50)

View File

@ -17,6 +17,7 @@ machine_nozzle_heat_up_speed = 1.5
material_initial_print_temperature = =material_print_temperature - 5
material_final_print_temperature = =material_print_temperature - 10
retraction_combing_max_distance = 50
retraction_prime_speed = =retraction_speed
speed_print = 55
speed_layer_0 = =math.ceil(speed_print * 20 / 55)
speed_topbottom = =math.ceil(speed_print * 30 / 55)

View File

@ -26,6 +26,7 @@ raft_interface_thickness = =round(machine_nozzle_size * 0.3 / 0.4, 2)
raft_jerk = =jerk_layer_0
raft_margin = 10
raft_surface_thickness = =round(machine_nozzle_size * 0.2 / 0.4, 2)
retraction_prime_speed = =retraction_speed
skin_overlap = 50
speed_layer_0 = 10
switch_extruder_prime_speed = 30

View File

@ -28,6 +28,7 @@ raft_interface_thickness = =round(machine_nozzle_size * 0.3 / 0.4, 2)
raft_jerk = =jerk_layer_0
raft_margin = 10
raft_surface_thickness = =round(machine_nozzle_size * 0.2 / 0.4, 2)
retraction_prime_speed = =retraction_speed
skin_overlap = 50
speed_layer_0 = 10
switch_extruder_prime_speed = 30

View File

@ -27,6 +27,7 @@ raft_interface_thickness = =round(machine_nozzle_size * 0.3 / 0.4, 2)
raft_jerk = =jerk_layer_0
raft_margin = 10
raft_surface_thickness = =round(machine_nozzle_size * 0.2 / 0.4, 2)
retraction_prime_speed = =retraction_speed
skin_overlap = 50
speed_layer_0 = 10
switch_extruder_prime_speed = 30

View File

@ -27,6 +27,7 @@ raft_interface_thickness = =round(machine_nozzle_size * 0.3 / 0.4, 2)
raft_jerk = =jerk_layer_0
raft_margin = 10
raft_surface_thickness = =round(machine_nozzle_size * 0.2 / 0.4, 2)
retraction_prime_speed = =retraction_speed
skin_overlap = 50
speed_layer_0 = 10
switch_extruder_prime_speed = 30

View File

@ -42,7 +42,6 @@ retraction_extrusion_window = 1
retraction_hop = 2
retraction_hop_only_when_collides = True
retraction_min_travel = 0.8
retraction_prime_speed = 15
skin_overlap = 30
speed_layer_0 = =math.ceil(speed_print * 25 / 50)
speed_print = 50

View File

@ -41,7 +41,6 @@ retraction_extrusion_window = 1
retraction_hop = 2
retraction_hop_only_when_collides = True
retraction_min_travel = 0.8
retraction_prime_speed = 15
skin_overlap = 30
speed_layer_0 = =math.ceil(speed_print * 25 / 50)
speed_print = 50

View File

@ -43,7 +43,6 @@ retraction_extrusion_window = 1
retraction_hop = 2
retraction_hop_only_when_collides = True
retraction_min_travel = 0.8
retraction_prime_speed = 15
skin_overlap = 30
speed_layer_0 = =math.ceil(speed_print * 25 / 50)
speed_print = 50

View File

@ -41,7 +41,6 @@ retraction_extrusion_window = 1
retraction_hop = 2
retraction_hop_only_when_collides = True
retraction_min_travel = 0.8
retraction_prime_speed = 15
skin_overlap = 30
speed_layer_0 = =math.ceil(speed_print * 25 / 50)
speed_print = 50

View File

@ -19,6 +19,7 @@ machine_nozzle_heat_up_speed = 1.6
material_print_temperature = =default_material_print_temperature + 5
material_standby_temperature = 100
prime_tower_enable = False
retraction_prime_speed = =retraction_speed
skin_edge_support_thickness = =0.8 if infill_sparse_density < 30 else 0
skin_overlap = 20
speed_layer_0 = 10

View File

@ -18,6 +18,7 @@ machine_nozzle_cool_down_speed = 0.75
machine_nozzle_heat_up_speed = 1.6
material_standby_temperature = 100
prime_tower_enable = False
retraction_prime_speed = =retraction_speed
speed_print = 70
speed_layer_0 = 10
speed_topbottom = =math.ceil(speed_print * 35 / 70)

View File

@ -20,6 +20,7 @@ machine_nozzle_heat_up_speed = 1.6
material_print_temperature = =default_material_print_temperature - 5
material_standby_temperature = 100
prime_tower_enable = False
retraction_prime_speed = =retraction_speed
skin_overlap = 10
speed_print = 50
speed_layer_0 = 10

Some files were not shown because too many files have changed in this diff Show More