Merge branch 'Ultimaker:master' into master

This commit is contained in:
3d-hctech 2022-03-21 16:57:16 +08:00 committed by GitHub
commit 3495c79bc1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
377 changed files with 1191 additions and 1400 deletions

View File

@ -43,7 +43,7 @@ from UM.Scene.Selection import Selection
from UM.Scene.ToolHandle import ToolHandle from UM.Scene.ToolHandle import ToolHandle
from UM.Settings.ContainerRegistry import ContainerRegistry from UM.Settings.ContainerRegistry import ContainerRegistry
from UM.Settings.InstanceContainer import InstanceContainer from UM.Settings.InstanceContainer import InstanceContainer
from UM.Settings.SettingDefinition import SettingDefinition, DefinitionPropertyType from UM.Settings.SettingDefinition import SettingDefinition, DefinitionPropertyType, toIntConversion
from UM.Settings.SettingFunction import SettingFunction from UM.Settings.SettingFunction import SettingFunction
from UM.Settings.Validator import Validator from UM.Settings.Validator import Validator
from UM.View.SelectionPass import SelectionPass # For typing. from UM.View.SelectionPass import SelectionPass # For typing.
@ -382,11 +382,12 @@ class CuraApplication(QtApplication):
SettingDefinition.addSupportedProperty("resolve", DefinitionPropertyType.Function, default=None, SettingDefinition.addSupportedProperty("resolve", DefinitionPropertyType.Function, default=None,
depends_on="value") depends_on="value")
SettingDefinition.addSettingType("extruder", None, str, Validator) SettingDefinition.addSettingType("extruder", None, toIntConversion, Validator)
SettingDefinition.addSettingType("optional_extruder", None, str, None) SettingDefinition.addSettingType("optional_extruder", None, toIntConversion, None)
SettingDefinition.addSettingType("[int]", None, str, None) SettingDefinition.addSettingType("[int]", None, str, None)
def _initializeSettingFunctions(self): def _initializeSettingFunctions(self):
"""Adds custom property types, settings types, and extra operators (functions). """Adds custom property types, settings types, and extra operators (functions).

View File

@ -1,4 +1,4 @@
# Copyright (c) 2021 Ultimaker B.V. # Copyright (c) 2022 Ultimaker B.V.
# Cura is released under the terms of the LGPLv3 or higher. # Cura is released under the terms of the LGPLv3 or higher.
import math import math
@ -31,6 +31,8 @@ Position = NamedTuple("Position", [("x", float), ("y", float), ("z", float), ("f
class FlavorParser: class FlavorParser:
"""This parser is intended to interpret the common firmware codes among all the different flavors""" """This parser is intended to interpret the common firmware codes among all the different flavors"""
MAX_EXTRUDER_COUNT = 16
def __init__(self) -> None: def __init__(self) -> None:
CuraApplication.getInstance().hideMessageSignal.connect(self._onHideMessage) CuraApplication.getInstance().hideMessageSignal.connect(self._onHideMessage)
self._cancelled = False self._cancelled = False
@ -53,7 +55,7 @@ class FlavorParser:
def _clearValues(self) -> None: def _clearValues(self) -> None:
self._extruder_number = 0 self._extruder_number = 0
self._extrusion_length_offset = [0] * 8 # type: List[float] self._extrusion_length_offset = [0] * self.MAX_EXTRUDER_COUNT # type: List[float]
self._layer_type = LayerPolygon.Inset0Type self._layer_type = LayerPolygon.Inset0Type
self._layer_number = 0 self._layer_number = 0
self._previous_z = 0 # type: float self._previous_z = 0 # type: float
@ -355,7 +357,7 @@ class FlavorParser:
Logger.log("d", "Parsing g-code...") Logger.log("d", "Parsing g-code...")
current_position = Position(0, 0, 0, 0, [0] * 8) current_position = Position(0, 0, 0, 0, [0] * self.MAX_EXTRUDER_COUNT)
current_path = [] #type: List[List[float]] current_path = [] #type: List[List[float]]
min_layer_number = 0 min_layer_number = 0
negative_layers = 0 negative_layers = 0

View File

@ -31,7 +31,10 @@ class Marketplace(Extension, QObject):
# Not entirely the cleanest code, since the localPackage list also checks the server if there are updates # Not entirely the cleanest code, since the localPackage list also checks the server if there are updates
# Since that in turn will trigger notifications to be shown, we do need to construct it here and make sure # Since that in turn will trigger notifications to be shown, we do need to construct it here and make sure
# that it checks for updates... # that it checks for updates...
preferences = CuraApplication.getInstance().getPreferences()
preferences.addPreference("info/automatic_plugin_update_check", True)
self._local_package_list = LocalPackageList(self) self._local_package_list = LocalPackageList(self)
if preferences.getValue("info/automatic_plugin_update_check"):
self._local_package_list.checkForUpdates(self._package_manager.local_packages) self._local_package_list.checkForUpdates(self._package_manager.local_packages)
self._package_manager.installedPackagesChanged.connect(self.checkIfRestartNeeded) self._package_manager.installedPackagesChanged.connect(self.checkIfRestartNeeded)

View File

@ -4,62 +4,21 @@
import QtQuick 2.2 import QtQuick 2.2
import QtQuick.Controls 2.1 import QtQuick.Controls 2.1
import Cura 1.5 as Cura
import UM 1.5 as UM import UM 1.5 as UM
import Cura 1.0 as Cura
import ".." import ".."
Button { Cura.CategoryButton
{
id: base; id: base;
background: Rectangle { categoryIcon: definition ? UM.Theme.getIcon(definition.icon) : ""
color: UM.Theme.getColor("category_background") labelText: definition ? definition.label : ""
} expanded: definition ? definition.expanded : false
contentItem: Row
{
spacing: UM.Theme.getSize("default_lining").width
Item //Wrapper to give space before icon with fixed width. This allows aligning checkbox with category icon.
{
height: label.height
width: height
anchors.verticalCenter: parent.verticalCenter
UM.RecolorImage
{
anchors.verticalCenter: parent.verticalCenter
height: (label.height / 2) | 0
width: height
source: base.checked ? UM.Theme.getIcon("ChevronSingleDown") : UM.Theme.getIcon("ChevronSingleRight")
color: base.hovered ? UM.Theme.getColor("primary_button_hover"): UM.Theme.getColor("text")
}
}
UM.RecolorImage
{
anchors.verticalCenter: parent.verticalCenter
height: label.height
width: height
source: UM.Theme.getIcon(definition.icon)
color: base.hovered ? UM.Theme.getColor("primary_button_hover") : UM.Theme.getColor("text")
}
UM.Label
{
id: label
anchors.verticalCenter: parent.verticalCenter
text: base.text
color: base.hovered ? UM.Theme.getColor("primary_button_hover") : UM.Theme.getColor("text")
font.bold: true
}
}
signal showTooltip(string text) signal showTooltip(string text)
signal hideTooltip() signal hideTooltip()
signal contextMenuRequested() signal contextMenuRequested()
text: definition.label onClicked: expanded ? settingDefinitionsModel.collapseRecursive(definition.key) : settingDefinitionsModel.expandRecursive(definition.key)
checkable: true
checked: definition.expanded
onClicked: definition.expanded ? settingDefinitionsModel.collapseRecursive(definition.key) : settingDefinitionsModel.expandRecursive(definition.key)
} }

View File

@ -10,25 +10,15 @@ import Cura 1.0 as Cura
UM.TooltipArea UM.TooltipArea
{ {
x: model.depth * UM.Theme.getSize("default_margin").width x: model.depth * UM.Theme.getSize("narrow_margin").width
text: model.description text: model.description
width: childrenRect.width width: childrenRect.width
height: childrenRect.height height: childrenRect.height
Item
{
id: spacer
// Align checkbox with PerObjectCategory icon
width: UM.Theme.getSize("default_margin").width
}
UM.CheckBox UM.CheckBox
{ {
id: check id: check
anchors.left: spacer.right
text: definition.label text: definition.label
checked: addedSettingsModel.getVisible(model.key) checked: addedSettingsModel.getVisible(model.key)

View File

@ -187,7 +187,7 @@ Item
// It kinda looks ugly otherwise (big panel, no content on it) // It kinda looks ugly otherwise (big panel, no content on it)
id: currentSettings id: currentSettings
property int maximumHeight: 200 * screenScaleFactor property int maximumHeight: 200 * screenScaleFactor
height: Math.min(contents.count * (UM.Theme.getSize("section").height + UM.Theme.getSize("default_lining").height), maximumHeight) height: Math.min(contents.count * (UM.Theme.getSize("section").height + UM.Theme.getSize("narrow_margin").height + UM.Theme.getSize("default_lining").height), maximumHeight)
visible: currentMeshType != "anti_overhang_mesh" visible: currentMeshType != "anti_overhang_mesh"
ListView ListView
@ -245,7 +245,7 @@ Item
{ {
id: settingLoader id: settingLoader
width: UM.Theme.getSize("setting").width width: UM.Theme.getSize("setting").width
height: UM.Theme.getSize("section").height height: UM.Theme.getSize("section").height + UM.Theme.getSize("narrow_margin").height
enabled: provider.properties.enabled === "True" enabled: provider.properties.enabled === "True"
property var definition: model property var definition: model
property var settingDefinitionsModel: addedSettingsModel property var settingDefinitionsModel: addedSettingsModel

View File

@ -12,6 +12,8 @@ UM.Dialog
{ {
id: settingPickDialog id: settingPickDialog
margin: UM.Theme.getSize("default_margin").width
title: catalog.i18nc("@title:window", "Select Settings to Customize for this model") title: catalog.i18nc("@title:window", "Select Settings to Customize for this model")
width: UM.Theme.getSize("small_popup_dialog").width width: UM.Theme.getSize("small_popup_dialog").width
backgroundColor: UM.Theme.getColor("background_1") backgroundColor: UM.Theme.getColor("background_1")

View File

@ -298,7 +298,7 @@ class ChangeAtZ(Script):
}, },
"caz_change_retract": { "caz_change_retract": {
"label": "Change Retraction", "label": "Change Retraction",
"description": "Indicates you would like to modify retraction properties.", "description": "Indicates you would like to modify retraction properties. Does not work when using relative extrusion.",
"type": "bool", "type": "bool",
"default_value": false "default_value": false
}, },

View File

@ -1092,38 +1092,6 @@
"default_value": "inward_distributed", "default_value": "inward_distributed",
"limit_to_extruder": "wall_0_extruder_nr" "limit_to_extruder": "wall_0_extruder_nr"
}, },
"wall_transition_threshold": {
"label": "Middle Line Threshold",
"description": "The smallest line width, as a factor of the normal line width, below which it will choose to use fewer, but wider lines to fill the available space the wall needs to occupy. Reduce this setting to use more, thinner lines. Increase to use fewer, wider lines. Note that this applies -as if- the entire shape should be filled with wall, so the middle here refers to the middle of the object between two outer edges of the shape, even if there actually is fill or (other) skin in the print instead of wall.",
"type": "float",
"unit": "%",
"default_value": 90,
"minimum_value": "1",
"maximum_value": "99",
"children":
{
"wall_split_middle_threshold": {
"label": "Split Middle Line Threshold",
"description": "The smallest line width, as a factor of the normal line width, above which the middle line (if there is one) will be split into two. Reduce this setting to use more, thinner lines. Increase to use fewer, wider lines. Note that this applies -as if- the entire shape should be filled with wall, so the middle here refers to the middle of the object between two outer edges of the shape, even if there actually is fill or (other) skin in the print instead of wall.",
"type": "float",
"unit": "%",
"default_value": 90,
"value": "wall_transition_threshold",
"minimum_value": "1",
"maximum_value": "99"
},
"wall_add_middle_threshold": {
"label": "Add Middle Line Threshold",
"description": "The smallest line width, as a factor of the normal line width, above which a middle line (if there wasn't one already) will be added. Reduce this setting to use more, thinner lines. Increase to use fewer, wider lines. Note that this applies -as if- the entire shape should be filled with wall, so the middle here refers to the middle of the object between two outer edges of the shape, even if there actually is fill or (other) skin in the print instead of wall.",
"type": "float",
"unit": "%",
"default_value": 80,
"value": "wall_transition_threshold * 8 / 9",
"minimum_value": "1",
"maximum_value": "99"
}
}
},
"wall_transition_length": "wall_transition_length":
{ {
"label": "Wall Transition Length", "label": "Wall Transition Length",
@ -1236,6 +1204,74 @@
"limit_to_extruder": "wall_0_extruder_nr", "limit_to_extruder": "wall_0_extruder_nr",
"settable_per_mesh": true "settable_per_mesh": true
}, },
"min_wall_line_width":
{
"label": "Minimum Wall Line Width",
"description": "For thin structures around once or twice the nozzle size, the line widths need to be altered to adhere to the thickness of the model. This setting controls the minimum line width allowed for the walls. The minimum line widths inherently also determine the maximum line widths, since we transition from N to N+1 walls at some geometry thickness where the N walls are wide and the N+1 walls are narrow. The widest possible wall line is twice the Minimum Wall Line Width.",
"unit": "mm",
"minimum_value_warning": ".5 * max(wall_line_width_0, wall_line_width_x)",
"maximum_value_warning": "min(wall_line_width_0, wall_line_width_x)",
"minimum_value_warning_old": "(0.1 + 0.4 * machine_nozzle_size) if inset_direction == \"outside_in\" else 0.1 * machine_nozzle_size",
"maximum_value_warning_old": "2 * machine_nozzle_size",
"default_value": 0.3,
"value": "machine_nozzle_size * .75",
"type": "float",
"settable_per_mesh": true,
"children":
{
"min_even_wall_line_width":
{
"label": "Minimum Even Wall Line Width",
"description": "The minimum line width for normal polygonal walls. This setting determines at which model thickness we switch from printing a single thin wall line, to printing two wall lines. A higher Minimum Even Wall Line Width leads to a higher maximum odd wall line width. The maximum even wall line width is calculated as Outer Wall Line Width + 0.5 * Minimum Odd Wall Line Width.",
"unit": "mm",
"minimum_value_warning": ".5 * max(wall_line_width_0, wall_line_width_x)",
"maximum_value_warning": "min(wall_line_width_0, wall_line_width_x)",
"default_value": 0.3,
"value": "min_wall_line_width",
"type": "float",
"settable_per_mesh": true,
"children":
{
"wall_split_middle_threshold": {
"label": "Split Middle Line Threshold",
"description": "The smallest line width, as a factor of the normal line width, above which the middle line (if there is one) will be split into two. Reduce this setting to use more, thinner lines. Increase to use fewer, wider lines. Note that this applies -as if- the entire shape should be filled with wall, so the middle here refers to the middle of the object between two outer edges of the shape, even if there actually is fill or (other) skin in the print instead of wall.",
"type": "float",
"unit": "%",
"default_value": 50,
"value": "max(1, min(99, 100 * (2 * min_even_wall_line_width - wall_line_width_0) / wall_line_width_0))",
"value_explicit": "100 * (2 * min_even_wall_line_width - wall_line_width_0) / (wall_line_width_0 + wall_line_width_x - wall_line_width_0)",
"minimum_value": "1",
"maximum_value": "99"
}
}
},
"min_odd_wall_line_width":
{
"label": "Minimum Odd Wall Line Width",
"description": "The minimum line width for middle line gap filler polyline walls. This setting determines at which model thickness we switch from printing two wall lines, to printing two outer walls and a single central wall in the middle. A higher Minimum Odd Wall Line Width leads to a higher maximum even wall line width. The maximum odd wall line width is calculated as 2 * Minimum Even Wall Line Width,",
"unit": "mm",
"minimum_value_warning": ".5 * max(wall_line_width_0, wall_line_width_x)",
"maximum_value_warning": "min(wall_line_width_0, wall_line_width_x)",
"default_value": 0.3,
"value": "min_wall_line_width",
"type": "float",
"settable_per_mesh": true,
"children":
{
"wall_add_middle_threshold": {
"label": "Add Middle Line Threshold",
"description": "The smallest line width, as a factor of the normal line width, above which a middle line (if there wasn't one already) will be added. Reduce this setting to use more, thinner lines. Increase to use fewer, wider lines. Note that this applies -as if- the entire shape should be filled with wall, so the middle here refers to the middle of the object between two outer edges of the shape, even if there actually is fill or (other) skin in the print instead of wall.",
"type": "float",
"unit": "%",
"default_value": 75,
"value": "max(1, min(99, 100 * min_odd_wall_line_width / wall_line_width_x))",
"minimum_value": "1",
"maximum_value": "99"
}
}
}
}
},
"fill_outline_gaps": { "fill_outline_gaps": {
"label": "Print Thin Walls", "label": "Print Thin Walls",
"description": "Print pieces of the model which are horizontally thinner than the nozzle size.", "description": "Print pieces of the model which are horizontally thinner than the nozzle size.",
@ -1260,10 +1296,10 @@
}, },
"min_bead_width": "min_bead_width":
{ {
"label": "Minimum Wall Line Width", "label": "Minimum Thin Wall Line Width",
"description": "Width of the wall that will replace thin features (according to the Minimum Feature Size) of the model. If the Minimum Wall Line Width is thinner than the thickness of the feature, the wall will become as thick as the feature itself.", "description": "Width of the wall that will replace thin features (according to the Minimum Feature Size) of the model. If the Minimum Wall Line Width is thinner than the thickness of the feature, the wall will become as thick as the feature itself.",
"unit": "mm", "unit": "mm",
"value": "wall_line_width_0 * (100.0 + wall_split_middle_threshold)/200", "value": "machine_nozzle_size * .75",
"default_value": 0.2, "default_value": 0.2,
"minimum_value": "0.001", "minimum_value": "0.001",
"minimum_value_warning": "min_feature_size", "minimum_value_warning": "min_feature_size",
@ -4366,6 +4402,7 @@
"default_value": "0", "default_value": "0",
"value": "support_extruder_nr", "value": "support_extruder_nr",
"enabled": "(support_enable or support_meshes_present) and extruders_enabled_count > 1", "enabled": "(support_enable or support_meshes_present) and extruders_enabled_count > 1",
"resolve": "max(extruderValues('support_interface_extruder_nr'))",
"settable_per_mesh": false, "settable_per_mesh": false,
"settable_per_extruder": false, "settable_per_extruder": false,
"children": "children":
@ -4378,6 +4415,7 @@
"default_value": "0", "default_value": "0",
"value": "support_interface_extruder_nr", "value": "support_interface_extruder_nr",
"enabled": "(support_enable or support_meshes_present) and extruders_enabled_count > 1", "enabled": "(support_enable or support_meshes_present) and extruders_enabled_count > 1",
"resolve": "max(extruderValues('support_roof_extruder_nr'))",
"settable_per_mesh": false, "settable_per_mesh": false,
"settable_per_extruder": false "settable_per_extruder": false
}, },
@ -4389,6 +4427,7 @@
"default_value": "0", "default_value": "0",
"value": "support_interface_extruder_nr", "value": "support_interface_extruder_nr",
"enabled": "(support_enable or support_meshes_present) and extruders_enabled_count > 1", "enabled": "(support_enable or support_meshes_present) and extruders_enabled_count > 1",
"resolve": "max(extruderValues('support_bottom_extruder_nr'))",
"settable_per_mesh": false, "settable_per_mesh": false,
"settable_per_extruder": false "settable_per_extruder": false
} }
@ -5421,6 +5460,7 @@
"default_value": "0", "default_value": "0",
"value": "int(defaultExtruderPosition())", "value": "int(defaultExtruderPosition())",
"enabled": "extruders_enabled_count > 1 and (resolveOrValue('adhesion_type') != 'none' or resolveOrValue('prime_tower_brim_enable'))", "enabled": "extruders_enabled_count > 1 and (resolveOrValue('adhesion_type') != 'none' or resolveOrValue('prime_tower_brim_enable'))",
"resolve": "max(extruderValues('adhesion_extruder_nr'))",
"settable_per_mesh": false, "settable_per_mesh": false,
"settable_per_extruder": false, "settable_per_extruder": false,
"children": "children":
@ -5444,6 +5484,7 @@
"default_value": "0", "default_value": "0",
"value": "adhesion_extruder_nr", "value": "adhesion_extruder_nr",
"enabled": "extruders_enabled_count > 1 and resolveOrValue('adhesion_type') == 'raft'", "enabled": "extruders_enabled_count > 1 and resolveOrValue('adhesion_type') == 'raft'",
"resolve": "max(extruderValues('raft_base_extruder_nr'))",
"settable_per_mesh": false, "settable_per_mesh": false,
"settable_per_extruder": false "settable_per_extruder": false
}, },
@ -5455,6 +5496,7 @@
"default_value": "0", "default_value": "0",
"value": "adhesion_extruder_nr", "value": "adhesion_extruder_nr",
"enabled": "extruders_enabled_count > 1 and resolveOrValue('adhesion_type') == 'raft'", "enabled": "extruders_enabled_count > 1 and resolveOrValue('adhesion_type') == 'raft'",
"resolve": "max(extruderValues('raft_interface_extruder_nr'))",
"settable_per_mesh": false, "settable_per_mesh": false,
"settable_per_extruder": false "settable_per_extruder": false
}, },
@ -5466,6 +5508,7 @@
"default_value": "0", "default_value": "0",
"value": "adhesion_extruder_nr", "value": "adhesion_extruder_nr",
"enabled": "extruders_enabled_count > 1 and resolveOrValue('adhesion_type') == 'raft'", "enabled": "extruders_enabled_count > 1 and resolveOrValue('adhesion_type') == 'raft'",
"resolve": "max(extruderValues('raft_surface_extruder_nr'))",
"settable_per_mesh": false, "settable_per_mesh": false,
"settable_per_extruder": false "settable_per_extruder": false
} }

View File

@ -29,7 +29,7 @@
"default_value": "M104 S{material_print_temperature_layer_0} ;Set Hotend Temperature\nM140 S{material_bed_temperature_layer_0} ;Set Bed Temperature\nG28 ;home\nG90 ;absolute positioning\nG1 X-10 Y-10 F3000 ;Move to corner \nG1 Z0 F1800 ;Go to zero offset\nM109 S{material_print_temperature_layer_0} ;Wait for Hotend Temperature\nM190 S{material_bed_temperature_layer_0} ;Wait for Bed Temperature\nG92 E0 ;Zero set extruder position\nG1 E20 F200 ;Feed filament to clear nozzle\nG92 E0 ;Zero set extruder position" "default_value": "M104 S{material_print_temperature_layer_0} ;Set Hotend Temperature\nM140 S{material_bed_temperature_layer_0} ;Set Bed Temperature\nG28 ;home\nG90 ;absolute positioning\nG1 X-10 Y-10 F3000 ;Move to corner \nG1 Z0 F1800 ;Go to zero offset\nM109 S{material_print_temperature_layer_0} ;Wait for Hotend Temperature\nM190 S{material_bed_temperature_layer_0} ;Wait for Bed Temperature\nG92 E0 ;Zero set extruder position\nG1 E20 F200 ;Feed filament to clear nozzle\nG92 E0 ;Zero set extruder position"
}, },
"machine_end_gcode": { "machine_end_gcode": {
"default_value": "M104 S0 ;Extruder heater off\nM140 S0 ;Heated bed heater off\nG90 ;absolute positioning\nG92 E0 ;Retract the filament\nG1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\nG1 Z{machine_width} E-1 F3000 ;move Z up a bit and retract filament even more\nG1 X0 F3000 ;move X to min endstops, so the head is out of the way\nG1 Y{machine_depth} F3000 ;so the head is out of the way and Plate is moved forward" "default_value": "M104 S0 ;Extruder heater off\nM140 S0 ;Heated bed heater off\nG90 ;absolute positioning\nG92 E0 ;Retract the filament\nG1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\nG1 Z{machine_height} E-1 F3000 ;move Z up a bit and retract filament even more\nG1 X0 F3000 ;move X to min endstops, so the head is out of the way\nG1 Y{machine_depth} F3000 ;so the head is out of the way and Plate is moved forward"
}, },
"machine_nozzle_size": { "machine_nozzle_size": {
"default_value": 0.4 "default_value": 0.4

View File

@ -47,6 +47,9 @@
"line_width": { "line_width": {
"value": "machine_nozzle_size" "value": "machine_nozzle_size"
}, },
"wall_thickness": {
"value": "wall_line_width_0 + wall_line_width_x"
},
"infill_before_walls": { "infill_before_walls": {
"value": "False" "value": "False"
}, },
@ -67,6 +70,9 @@
}, },
"bottom_layers": { "bottom_layers": {
"value": "math.ceil(round(bottom_thickness / resolveOrValue('layer_height'), 4))" "value": "math.ceil(round(bottom_thickness / resolveOrValue('layer_height'), 4))"
},
"xy_offset": {
"value": "-layer_height * 0.2"
} }
} }
} }

View File

@ -166,7 +166,6 @@
"top_bottom_thickness": { "value": "1" }, "top_bottom_thickness": { "value": "1" },
"travel_avoid_distance": { "value": "3 if extruders_enabled_count > 1 else machine_nozzle_tip_outer_diameter / 2 * 1.5" }, "travel_avoid_distance": { "value": "3 if extruders_enabled_count > 1 else machine_nozzle_tip_outer_diameter / 2 * 1.5" },
"wall_0_inset": { "value": "0" }, "wall_0_inset": { "value": "0" },
"wall_thickness": { "value": "1" },
"zig_zaggify_infill": { "value": "gradual_infill_steps == 0" } "zig_zaggify_infill": { "value": "gradual_infill_steps == 0" }
} }
} }

View File

@ -159,7 +159,6 @@
"travel_avoid_supports": { "value": "True" }, "travel_avoid_supports": { "value": "True" },
"travel_avoid_distance": { "value": "3 if extruders_enabled_count > 1 else machine_nozzle_tip_outer_diameter / 2 * 1.5" }, "travel_avoid_distance": { "value": "3 if extruders_enabled_count > 1 else machine_nozzle_tip_outer_diameter / 2 * 1.5" },
"wall_0_inset": { "value": "0" }, "wall_0_inset": { "value": "0" },
"wall_thickness": { "value": "1" },
"meshfix_maximum_resolution": { "value": "(speed_wall_0 + speed_wall_x) / 60" }, "meshfix_maximum_resolution": { "value": "(speed_wall_0 + speed_wall_x) / 60" },
"meshfix_maximum_deviation": { "value": "layer_height / 4" }, "meshfix_maximum_deviation": { "value": "layer_height / 4" },
"initial_layer_line_width_factor": { "value": "120" }, "initial_layer_line_width_factor": { "value": "120" },

View File

@ -161,7 +161,6 @@
"travel_avoid_supports": { "value": "True" }, "travel_avoid_supports": { "value": "True" },
"travel_avoid_distance": { "value": "3 if extruders_enabled_count > 1 else machine_nozzle_tip_outer_diameter / 2 * 1.5" }, "travel_avoid_distance": { "value": "3 if extruders_enabled_count > 1 else machine_nozzle_tip_outer_diameter / 2 * 1.5" },
"wall_0_inset": { "value": "0" }, "wall_0_inset": { "value": "0" },
"wall_thickness": { "value": "1" },
"meshfix_maximum_resolution": { "value": "(speed_wall_0 + speed_wall_x) / 60" }, "meshfix_maximum_resolution": { "value": "(speed_wall_0 + speed_wall_x) / 60" },
"meshfix_maximum_deviation": { "value": "layer_height / 4" }, "meshfix_maximum_deviation": { "value": "layer_height / 4" },
"optimize_wall_printing_order": { "value": "True" }, "optimize_wall_printing_order": { "value": "True" },

View File

@ -18,8 +18,7 @@ speed_wall = =speed_print
speed_wall_0 = =speed_wall speed_wall_0 = =speed_wall
speed_wall_x = =speed_wall speed_wall_x = =speed_wall
speed_layer_0 = 20 speed_layer_0 = 20
top_bottom_thickness = =wall_thickness top_bottom_thickness = 0.8
wall_thickness = =line_width * 2
infill_sparse_density = 15 infill_sparse_density = 15
jerk_print = 30 jerk_print = 30

View File

@ -31,4 +31,3 @@ speed_wall_x = =speed_wall
top_bottom_thickness = =wall_thickness top_bottom_thickness = =wall_thickness
wall_thickness = =line_width * 3 wall_thickness = =line_width * 3
xy_offset = =-layer_height * 0.2

View File

@ -13,5 +13,4 @@ variant = AA 0.4
[values] [values]
speed_infill = 50 speed_infill = 50
wall_thickness = =wall_line_width * 3 top_bottom_thickness = 1.05
top_bottom_thickness = =wall_thickness

View File

@ -13,5 +13,4 @@ variant = AA 0.4
[values] [values]
speed_infill = 50 speed_infill = 50
wall_thickness = =wall_line_width * 3 top_bottom_thickness = 1.05
top_bottom_thickness = =wall_thickness

View File

@ -31,4 +31,3 @@ speed_wall_x = =speed_wall
top_bottom_thickness = =wall_thickness top_bottom_thickness = =wall_thickness
wall_thickness = =line_width * 3 wall_thickness = =line_width * 3
xy_offset = =-layer_height * 0.2

View File

@ -13,5 +13,4 @@ variant = AA 0.4
[values] [values]
speed_infill = 50 speed_infill = 50
wall_thickness = =wall_line_width * 3 top_bottom_thickness = 1.05
top_bottom_thickness = =wall_thickness

View File

@ -31,5 +31,4 @@ speed_wall_x = =speed_wall
top_bottom_thickness = =wall_thickness top_bottom_thickness = =wall_thickness
wall_thickness = =line_width * 3 wall_thickness = =line_width * 3
xy_offset = =-layer_height * 0.2

View File

@ -31,5 +31,4 @@ speed_wall_x = =speed_wall
top_bottom_thickness = =wall_thickness top_bottom_thickness = =wall_thickness
wall_thickness = =line_width * 3 wall_thickness = =line_width * 3
xy_offset = =-layer_height * 0.2

View File

@ -31,5 +31,4 @@ speed_wall_x = =speed_wall
top_bottom_thickness = =wall_thickness top_bottom_thickness = =wall_thickness
wall_thickness = =line_width * 3 wall_thickness = =line_width * 3
xy_offset = =-layer_height * 0.2

View File

@ -31,5 +31,4 @@ speed_wall_x = =speed_wall
top_bottom_thickness = =wall_thickness top_bottom_thickness = =wall_thickness
wall_thickness = =line_width * 3 wall_thickness = =line_width * 3
xy_offset = =-layer_height * 0.2

View File

@ -31,5 +31,4 @@ speed_wall_x = =speed_wall
top_bottom_thickness = =wall_thickness top_bottom_thickness = =wall_thickness
wall_thickness = =line_width * 3 wall_thickness = =line_width * 3
xy_offset = =-layer_height * 0.2

View File

@ -31,5 +31,4 @@ speed_wall_x = =speed_wall
top_bottom_thickness = =wall_thickness top_bottom_thickness = =wall_thickness
wall_thickness = =line_width * 3 wall_thickness = =line_width * 3
xy_offset = =-layer_height * 0.2

View File

@ -31,5 +31,4 @@ speed_wall_x = =speed_wall
top_bottom_thickness = =wall_thickness top_bottom_thickness = =wall_thickness
wall_thickness = =line_width * 3 wall_thickness = =line_width * 3
xy_offset = =-layer_height * 0.2

View File

@ -31,5 +31,4 @@ speed_wall_x = =speed_wall
top_bottom_thickness = =wall_thickness top_bottom_thickness = =wall_thickness
wall_thickness = =line_width * 3 wall_thickness = =line_width * 3
xy_offset = =-layer_height * 0.2

View File

@ -31,5 +31,4 @@ speed_wall_x = =speed_wall
top_bottom_thickness = =wall_thickness top_bottom_thickness = =wall_thickness
wall_thickness = =line_width * 3 wall_thickness = =line_width * 3
xy_offset = =-layer_height * 0.2

View File

@ -31,5 +31,4 @@ speed_wall_x = =speed_wall
top_bottom_thickness = =wall_thickness top_bottom_thickness = =wall_thickness
wall_thickness = =line_width * 3 wall_thickness = =line_width * 3
xy_offset = =-layer_height * 0.2

View File

@ -18,8 +18,7 @@ speed_wall = =speed_print
speed_wall_0 = =speed_wall speed_wall_0 = =speed_wall
speed_wall_x = =speed_wall speed_wall_x = =speed_wall
speed_layer_0 = 20 speed_layer_0 = 20
top_bottom_thickness = =wall_thickness top_bottom_thickness = 0.8
wall_thickness = =line_width * 2
infill_sparse_density = 15 infill_sparse_density = 15
jerk_print = 30 jerk_print = 30

View File

@ -31,4 +31,3 @@ speed_wall_x = =speed_wall
top_bottom_thickness = =wall_thickness top_bottom_thickness = =wall_thickness
wall_thickness = =line_width * 3 wall_thickness = =line_width * 3
xy_offset = =-layer_height * 0.2

View File

@ -13,5 +13,4 @@ variant = AA 0.4
[values] [values]
speed_infill = 50 speed_infill = 50
wall_thickness = =wall_line_width * 3 top_bottom_thickness = 1.05
top_bottom_thickness = =wall_thickness

View File

@ -13,5 +13,4 @@ variant = AA 0.4
[values] [values]
speed_infill = 50 speed_infill = 50
wall_thickness = =wall_line_width * 3 top_bottom_thickness = 1.05
top_bottom_thickness = =wall_thickness

View File

@ -31,4 +31,3 @@ speed_wall_x = =speed_wall
top_bottom_thickness = =wall_thickness top_bottom_thickness = =wall_thickness
wall_thickness = =line_width * 3 wall_thickness = =line_width * 3
xy_offset = =-layer_height * 0.2

View File

@ -13,5 +13,4 @@ variant = AA 0.4
[values] [values]
speed_infill = 50 speed_infill = 50
wall_thickness = =wall_line_width * 3 top_bottom_thickness = 1.05
top_bottom_thickness = =wall_thickness

View File

@ -35,5 +35,4 @@ speed_wall_0 = =speed_wall
speed_wall_x = =speed_wall speed_wall_x = =speed_wall
speed_layer_0 = 20 speed_layer_0 = 20
wall_thickness = =line_width * 2 top_bottom_thickness = 0.8
top_bottom_thickness = =wall_thickness

View File

@ -18,8 +18,7 @@ speed_wall = =speed_print
speed_wall_0 = =speed_wall speed_wall_0 = =speed_wall
speed_wall_x = =speed_wall speed_wall_x = =speed_wall
speed_layer_0 = 20 speed_layer_0 = 20
top_bottom_thickness = =wall_thickness top_bottom_thickness = 0.8
wall_thickness = =line_width * 2
infill_sparse_density = 15 infill_sparse_density = 15
jerk_print = 30 jerk_print = 30

View File

@ -31,4 +31,3 @@ speed_wall_x = =speed_wall
top_bottom_thickness = =wall_thickness top_bottom_thickness = =wall_thickness
wall_thickness = =line_width * 3 wall_thickness = =line_width * 3
xy_offset = =-layer_height * 0.2

View File

@ -13,5 +13,4 @@ variant = AA 0.4
[values] [values]
speed_infill = 50 speed_infill = 50
wall_thickness = =wall_line_width * 3 top_bottom_thickness = 1.05
top_bottom_thickness = =wall_thickness

View File

@ -13,5 +13,4 @@ variant = AA 0.4
[values] [values]
speed_infill = 50 speed_infill = 50
wall_thickness = =wall_line_width * 3 top_bottom_thickness = 1.05
top_bottom_thickness = =wall_thickness

View File

@ -31,4 +31,3 @@ speed_wall_x = =speed_wall
top_bottom_thickness = =wall_thickness top_bottom_thickness = =wall_thickness
wall_thickness = =line_width * 3 wall_thickness = =line_width * 3
xy_offset = =-layer_height * 0.2

View File

@ -13,5 +13,4 @@ variant = AA 0.4
[values] [values]
speed_infill = 50 speed_infill = 50
wall_thickness = =wall_line_width * 3 top_bottom_thickness = 1.05
top_bottom_thickness = =wall_thickness

View File

@ -35,5 +35,4 @@ speed_wall_0 = =speed_wall
speed_wall_x = =speed_wall speed_wall_x = =speed_wall
speed_layer_0 = 20 speed_layer_0 = 20
wall_thickness = =line_width * 2 top_bottom_thickness = 0.8
top_bottom_thickness = =wall_thickness

View File

@ -18,8 +18,7 @@ speed_wall = =speed_print
speed_wall_0 = =speed_wall speed_wall_0 = =speed_wall
speed_wall_x = =speed_wall speed_wall_x = =speed_wall
speed_layer_0 = 20 speed_layer_0 = 20
top_bottom_thickness = =wall_thickness top_bottom_thickness = 0.8
wall_thickness = =line_width * 2
infill_sparse_density = 15 infill_sparse_density = 15
jerk_print = 30 jerk_print = 30

View File

@ -31,5 +31,4 @@ speed_wall_x = =speed_wall
top_bottom_thickness = =wall_thickness top_bottom_thickness = =wall_thickness
wall_thickness = =line_width * 3 wall_thickness = =line_width * 3
xy_offset = =-layer_height * 0.2
xy_offset_layer_0 = =((-0.2 + layer_height * 0.2) if adhesion_type == "skirt" or adhesion_type == "none" else 0) + xy_offset xy_offset_layer_0 = =((-0.2 + layer_height * 0.2) if adhesion_type == "skirt" or adhesion_type == "none" else 0) + xy_offset

View File

@ -13,5 +13,4 @@ variant = AA 0.4
[values] [values]
speed_infill = 50 speed_infill = 50
wall_thickness = =wall_line_width * 3 top_bottom_thickness = 1.05
top_bottom_thickness = =wall_thickness

View File

@ -13,5 +13,4 @@ variant = AA 0.4
[values] [values]
speed_infill = 50 speed_infill = 50
wall_thickness = =wall_line_width * 3 top_bottom_thickness = 1.05
top_bottom_thickness = =wall_thickness

View File

@ -31,5 +31,4 @@ speed_wall_x = =speed_wall
top_bottom_thickness = =wall_thickness top_bottom_thickness = =wall_thickness
wall_thickness = =line_width * 3 wall_thickness = =line_width * 3
xy_offset = =-layer_height * 0.2
xy_offset_layer_0 = =((-0.2 + layer_height * 0.2) if adhesion_type == "skirt" or adhesion_type == "none" else 0) + xy_offset xy_offset_layer_0 = =((-0.2 + layer_height * 0.2) if adhesion_type == "skirt" or adhesion_type == "none" else 0) + xy_offset

View File

@ -13,5 +13,4 @@ variant = AA 0.4
[values] [values]
speed_infill = 50 speed_infill = 50
wall_thickness = =wall_line_width * 3 top_bottom_thickness = 1.05
top_bottom_thickness = =wall_thickness

View File

@ -31,6 +31,5 @@ speed_wall_x = =speed_wall
top_bottom_thickness = =wall_thickness top_bottom_thickness = =wall_thickness
wall_thickness = =line_width * 3 wall_thickness = =line_width * 3
xy_offset = =-layer_height * 0.2
xy_offset_layer_0 = =((-0.2 + layer_height * 0.2) if adhesion_type == "skirt" or adhesion_type == "none" else 0) + xy_offset xy_offset_layer_0 = =((-0.2 + layer_height * 0.2) if adhesion_type == "skirt" or adhesion_type == "none" else 0) + xy_offset

View File

@ -31,6 +31,5 @@ speed_wall_x = =speed_wall
top_bottom_thickness = =wall_thickness top_bottom_thickness = =wall_thickness
wall_thickness = =line_width * 3 wall_thickness = =line_width * 3
xy_offset = =-layer_height * 0.2
xy_offset_layer_0 = =((-0.2 + layer_height * 0.2) if adhesion_type == "skirt" or adhesion_type == "none" else 0) + xy_offset xy_offset_layer_0 = =((-0.2 + layer_height * 0.2) if adhesion_type == "skirt" or adhesion_type == "none" else 0) + xy_offset

View File

@ -31,6 +31,5 @@ speed_wall_x = =speed_wall
top_bottom_thickness = =wall_thickness top_bottom_thickness = =wall_thickness
wall_thickness = =line_width * 3 wall_thickness = =line_width * 3
xy_offset = =-layer_height * 0.2
xy_offset_layer_0 = =((-0.2 + layer_height * 0.2) if adhesion_type == "skirt" or adhesion_type == "none" else 0) + xy_offset xy_offset_layer_0 = =((-0.2 + layer_height * 0.2) if adhesion_type == "skirt" or adhesion_type == "none" else 0) + xy_offset

View File

@ -31,6 +31,5 @@ speed_wall_x = =speed_wall
top_bottom_thickness = =wall_thickness top_bottom_thickness = =wall_thickness
wall_thickness = =line_width * 3 wall_thickness = =line_width * 3
xy_offset = =-layer_height * 0.2
xy_offset_layer_0 = =((-0.2 + layer_height * 0.2) if adhesion_type == "skirt" or adhesion_type == "none" else 0) + xy_offset xy_offset_layer_0 = =((-0.2 + layer_height * 0.2) if adhesion_type == "skirt" or adhesion_type == "none" else 0) + xy_offset

View File

@ -31,6 +31,5 @@ speed_wall_x = =speed_wall
top_bottom_thickness = =wall_thickness top_bottom_thickness = =wall_thickness
wall_thickness = =line_width * 3 wall_thickness = =line_width * 3
xy_offset = =-layer_height * 0.2
xy_offset_layer_0 = =((-0.2 + layer_height * 0.2) if adhesion_type == "skirt" or adhesion_type == "none" else 0) + xy_offset xy_offset_layer_0 = =((-0.2 + layer_height * 0.2) if adhesion_type == "skirt" or adhesion_type == "none" else 0) + xy_offset

View File

@ -31,6 +31,5 @@ speed_wall_x = =speed_wall
top_bottom_thickness = =wall_thickness top_bottom_thickness = =wall_thickness
wall_thickness = =line_width * 3 wall_thickness = =line_width * 3
xy_offset = =-layer_height * 0.2
xy_offset_layer_0 = =((-0.2 + layer_height * 0.2) if adhesion_type == "skirt" or adhesion_type == "none" else 0) + xy_offset xy_offset_layer_0 = =((-0.2 + layer_height * 0.2) if adhesion_type == "skirt" or adhesion_type == "none" else 0) + xy_offset

View File

@ -31,6 +31,5 @@ speed_wall_x = =speed_wall
top_bottom_thickness = =wall_thickness top_bottom_thickness = =wall_thickness
wall_thickness = =line_width * 3 wall_thickness = =line_width * 3
xy_offset = =-layer_height * 0.2
xy_offset_layer_0 = =((-0.2 + layer_height * 0.2) if adhesion_type == "skirt" or adhesion_type == "none" else 0) + xy_offset xy_offset_layer_0 = =((-0.2 + layer_height * 0.2) if adhesion_type == "skirt" or adhesion_type == "none" else 0) + xy_offset

View File

@ -31,6 +31,5 @@ speed_wall_x = =speed_wall
top_bottom_thickness = =wall_thickness top_bottom_thickness = =wall_thickness
wall_thickness = =line_width * 3 wall_thickness = =line_width * 3
xy_offset = =-layer_height * 0.2
xy_offset_layer_0 = =((-0.2 + layer_height * 0.2) if adhesion_type == "skirt" or adhesion_type == "none" else 0) + xy_offset xy_offset_layer_0 = =((-0.2 + layer_height * 0.2) if adhesion_type == "skirt" or adhesion_type == "none" else 0) + xy_offset

View File

@ -31,6 +31,5 @@ speed_wall_x = =speed_wall
top_bottom_thickness = =wall_thickness top_bottom_thickness = =wall_thickness
wall_thickness = =line_width * 3 wall_thickness = =line_width * 3
xy_offset = =-layer_height * 0.2
xy_offset_layer_0 = =((-0.2 + layer_height * 0.2) if adhesion_type == "skirt" or adhesion_type == "none" else 0) + xy_offset xy_offset_layer_0 = =((-0.2 + layer_height * 0.2) if adhesion_type == "skirt" or adhesion_type == "none" else 0) + xy_offset

View File

@ -31,6 +31,5 @@ speed_wall_x = =speed_wall
top_bottom_thickness = =wall_thickness top_bottom_thickness = =wall_thickness
wall_thickness = =line_width * 3 wall_thickness = =line_width * 3
xy_offset = =-layer_height * 0.2
xy_offset_layer_0 = =((-0.2 + layer_height * 0.2) if adhesion_type == "skirt" or adhesion_type == "none" else 0) + xy_offset xy_offset_layer_0 = =((-0.2 + layer_height * 0.2) if adhesion_type == "skirt" or adhesion_type == "none" else 0) + xy_offset

View File

@ -18,8 +18,7 @@ speed_wall = =speed_print
speed_wall_0 = =speed_wall speed_wall_0 = =speed_wall
speed_wall_x = =speed_wall speed_wall_x = =speed_wall
speed_layer_0 = 20 speed_layer_0 = 20
top_bottom_thickness = =wall_thickness top_bottom_thickness = 0.8
wall_thickness = =line_width * 2
infill_sparse_density = 15 infill_sparse_density = 15
jerk_print = 30 jerk_print = 30

View File

@ -31,5 +31,4 @@ speed_wall_x = =speed_wall
top_bottom_thickness = =wall_thickness top_bottom_thickness = =wall_thickness
wall_thickness = =line_width * 3 wall_thickness = =line_width * 3
xy_offset = =-layer_height * 0.2
xy_offset_layer_0 = =((-0.2 + layer_height * 0.2) if adhesion_type == "skirt" or adhesion_type == "none" else 0) + xy_offset xy_offset_layer_0 = =((-0.2 + layer_height * 0.2) if adhesion_type == "skirt" or adhesion_type == "none" else 0) + xy_offset

View File

@ -13,5 +13,4 @@ variant = AA 0.4
[values] [values]
speed_infill = 50 speed_infill = 50
wall_thickness = =wall_line_width * 3 top_bottom_thickness = 1.05
top_bottom_thickness = =wall_thickness

View File

@ -13,5 +13,4 @@ variant = AA 0.4
[values] [values]
speed_infill = 50 speed_infill = 50
wall_thickness = =wall_line_width * 3 top_bottom_thickness = 1.05
top_bottom_thickness = =wall_thickness

View File

@ -31,5 +31,4 @@ speed_wall_x = =speed_wall
top_bottom_thickness = =wall_thickness top_bottom_thickness = =wall_thickness
wall_thickness = =line_width * 3 wall_thickness = =line_width * 3
xy_offset = =-layer_height * 0.2
xy_offset_layer_0 = =((-0.2 + layer_height * 0.2) if adhesion_type == "skirt" or adhesion_type == "none" else 0) + xy_offset xy_offset_layer_0 = =((-0.2 + layer_height * 0.2) if adhesion_type == "skirt" or adhesion_type == "none" else 0) + xy_offset

View File

@ -13,5 +13,4 @@ variant = AA 0.4
[values] [values]
speed_infill = 50 speed_infill = 50
wall_thickness = =wall_line_width * 3 top_bottom_thickness = 1.05
top_bottom_thickness = =wall_thickness

View File

@ -35,5 +35,4 @@ speed_wall_0 = =speed_wall
speed_wall_x = =speed_wall speed_wall_x = =speed_wall
speed_layer_0 = 20 speed_layer_0 = 20
wall_thickness = =line_width * 2 top_bottom_thickness = 0.8
top_bottom_thickness = =wall_thickness

View File

@ -18,8 +18,7 @@ speed_wall = =speed_print
speed_wall_0 = =speed_wall speed_wall_0 = =speed_wall
speed_wall_x = =speed_wall speed_wall_x = =speed_wall
speed_layer_0 = 20 speed_layer_0 = 20
top_bottom_thickness = =wall_thickness top_bottom_thickness = 0.8
wall_thickness = =line_width * 2
infill_sparse_density = 15 infill_sparse_density = 15
jerk_print = 30 jerk_print = 30

View File

@ -31,5 +31,4 @@ speed_wall_x = =speed_wall
top_bottom_thickness = =wall_thickness top_bottom_thickness = =wall_thickness
wall_thickness = =line_width * 3 wall_thickness = =line_width * 3
xy_offset = =-layer_height * 0.2
xy_offset_layer_0 = =((-0.2 + layer_height * 0.2) if adhesion_type == "skirt" or adhesion_type == "none" else 0) + xy_offset xy_offset_layer_0 = =((-0.2 + layer_height * 0.2) if adhesion_type == "skirt" or adhesion_type == "none" else 0) + xy_offset

View File

@ -13,5 +13,4 @@ variant = AA 0.4
[values] [values]
speed_infill = 50 speed_infill = 50
wall_thickness = =wall_line_width * 3 top_bottom_thickness = 1.05
top_bottom_thickness = =wall_thickness

View File

@ -13,5 +13,4 @@ variant = AA 0.4
[values] [values]
speed_infill = 50 speed_infill = 50
wall_thickness = =wall_line_width * 3 top_bottom_thickness = 1.05
top_bottom_thickness = =wall_thickness

View File

@ -31,5 +31,4 @@ speed_wall_x = =speed_wall
top_bottom_thickness = =wall_thickness top_bottom_thickness = =wall_thickness
wall_thickness = =line_width * 3 wall_thickness = =line_width * 3
xy_offset = =-layer_height * 0.2
xy_offset_layer_0 = =((-0.2 + layer_height * 0.2) if adhesion_type == "skirt" or adhesion_type == "none" else 0) + xy_offset xy_offset_layer_0 = =((-0.2 + layer_height * 0.2) if adhesion_type == "skirt" or adhesion_type == "none" else 0) + xy_offset

View File

@ -13,5 +13,4 @@ variant = AA 0.4
[values] [values]
speed_infill = 50 speed_infill = 50
wall_thickness = =wall_line_width * 3 top_bottom_thickness = 1.05
top_bottom_thickness = =wall_thickness

View File

@ -35,5 +35,4 @@ speed_wall_0 = =speed_wall
speed_wall_x = =speed_wall speed_wall_x = =speed_wall
speed_layer_0 = 20 speed_layer_0 = 20
wall_thickness = =line_width * 2 top_bottom_thickness = 0.8
top_bottom_thickness = =wall_thickness

View File

@ -79,7 +79,7 @@ Item
{ {
id: showTroubleShootingAction id: showTroubleShootingAction
onTriggered: Qt.openUrlExternally("https://ultimaker.com/en/troubleshooting?utm_source=cura&utm_medium=software&utm_campaign=dropdown-troubleshooting") onTriggered: Qt.openUrlExternally("https://ultimaker.com/en/troubleshooting?utm_source=cura&utm_medium=software&utm_campaign=dropdown-troubleshooting")
text: catalog.i18nc("@action:inmenu", "Show Online Troubleshooting Guide") text: catalog.i18nc("@action:inmenu", "Show Online Troubleshooting")
} }
Action Action

View File

@ -0,0 +1,121 @@
// Copyright (c) 2022 Ultimaker B.V.
// Uranium is released under the terms of the LGPLv3 or higher.
// Button used to collapse and de-collapse group, or a category, of settings
// the button contains
// - the title of the category,
// - an optional icon and
// - a chevron button to display the colapsetivity of the settings
// Mainly used for the collapsable categories in the settings pannel
import QtQuick 2.2
import QtQuick.Controls 2.1
import UM 1.5 as UM
Button
{
id: base
height: enabled ? UM.Theme.getSize("section_header").height : 0
property var expanded: false
property alias arrow: categoryArrow
property alias categoryIcon: icon.source
property alias labelText: categoryLabel.text
states:
[
State
{
name: "disabled"
when: !base.enabled
PropertyChanges { target: categoryLabel; color: UM.Theme.getColor("setting_category_disabled_text") }
PropertyChanges { target: icon; color: UM.Theme.getColor("setting_category_disabled_text") }
PropertyChanges { target: backgroundRectangle; color: UM.Theme.getColor("setting_category_disabled") }
},
State
{
name: "hovered"
when: base.hovered
PropertyChanges { target: categoryLabel; color: UM.Theme.getColor("setting_category_active_text") }
PropertyChanges { target: icon; color: UM.Theme.getColor("setting_category_active_text") }
PropertyChanges { target: backgroundRectangle; color: UM.Theme.getColor("setting_category_hover") }
},
State
{
name: "active"
when: base.pressed || base.activeFocus
PropertyChanges { target: categoryLabel; color: UM.Theme.getColor("setting_category_active_text") }
PropertyChanges { target: icon; color: UM.Theme.getColor("setting_category_active_text") }
PropertyChanges { target: backgroundRectangle; color: UM.Theme.getColor("setting_category") }
}
]
background: Rectangle
{
id: backgroundRectangle
height: base.height
color: UM.Theme.getColor("setting_category")
Behavior on color { ColorAnimation { duration: 50 } }
Rectangle
{
//Lining on top
anchors.top: parent.top
color: UM.Theme.getColor("border_main")
height: UM.Theme.getSize("default_lining").height
width: parent.width
}
}
contentItem: Item
{
anchors.fill: parent
UM.Label
{
id: categoryLabel
anchors
{
left: parent.left
leftMargin: UM.Theme.getSize("default_margin").width + UM.Theme.getSize("section_icon").width
right: parent.right
verticalCenter: parent.verticalCenter
}
textFormat: Text.PlainText
font: UM.Theme.getFont("medium_bold")
color: UM.Theme.getColor("setting_category_text")
fontSizeMode: Text.HorizontalFit
minimumPointSize: 8
}
UM.RecolorImage
{
id: categoryArrow
anchors.verticalCenter: parent.verticalCenter
anchors.right: parent.right
anchors.rightMargin: UM.Theme.getSize("narrow_margin").width
width: UM.Theme.getSize("standard_arrow").width
height: UM.Theme.getSize("standard_arrow").height
sourceSize.height: width
color: UM.Theme.getColor("setting_control_button")
source: expanded ? UM.Theme.getIcon("ChevronSingleDown") : UM.Theme.getIcon("ChevronSingleLeft")
}
}
UM.RecolorImage
{
id: icon
anchors.verticalCenter: parent.verticalCenter
anchors.left: parent.left
anchors.leftMargin: UM.Theme.getSize("narrow_margin").width
color: UM.Theme.getColor("setting_category_text")
width: UM.Theme.getSize("section_icon").width
height: UM.Theme.getSize("section_icon").height
sourceSize.width: width
sourceSize.height: width
}
}

View File

@ -24,13 +24,9 @@ UM.Dialog
// In this case we would like to let the content of the dialog determine the size of the dialog // In this case we would like to let the content of the dialog determine the size of the dialog
// however with the current implementation of the dialog this is not possible, so instead we calculate // however with the current implementation of the dialog this is not possible, so instead we calculate
// the size of the dialog ourselves. // the size of the dialog ourselves.
minimumWidth: content.width + 4 * margin // Ugly workaround for windows having overlapping elements due to incorrect dialog width
minimumHeight: minimumWidth: content.width + (Qt.platform.os == "windows" ? 4 * margin : 2 * margin)
content.height // content height minimumHeight: content.height + buttonRow.height + (Qt.platform.os == "windows" ? 5 * margin : 3 * margin)
+ buttonRow.height // button row height
+ 5 * margin // top and bottom margin and margin between buttons and content
width: minimumWidth
height: minimumHeight
property alias color: colorInput.text property alias color: colorInput.text
property var swatchColors: [ property var swatchColors: [

View File

@ -93,8 +93,8 @@ UM.Dialog
leftButtons: [ leftButtons: [
Cura.ComboBox Cura.ComboBox
{ {
implicitHeight: UM.Theme.getSize("combobox_wide").height implicitHeight: UM.Theme.getSize("combobox").height
implicitWidth: UM.Theme.getSize("combobox_wide").width implicitWidth: UM.Theme.getSize("combobox").width
id: discardOrKeepProfileChangesDropDownButton id: discardOrKeepProfileChangesDropDownButton
textRole: "text" textRole: "text"

View File

@ -34,14 +34,16 @@ Item
{ {
text: menuBarItem.text.replace(new RegExp("&([A-Za-z])"), function (match, character) text: menuBarItem.text.replace(new RegExp("&([A-Za-z])"), function (match, character)
{ {
return `<u>${character}</u>`; return `<u>${character}</u>`
}) })
horizontalAlignment: Text.AlignLeft horizontalAlignment: Text.AlignLeft
verticalAlignment: Text.AlignVCenter verticalAlignment: Text.AlignVCenter
} }
leftPadding: UM.Theme.getSize("default_margin").width
rightPadding: UM.Theme.getSize("default_margin").width
background: Rectangle background: Rectangle
{ {
color: menuBarItem.highlighted ? UM.Theme.getColor("background_2") : "transparent" color: menuBarItem.highlighted ? UM.Theme.getColor("background_2") : "transparent"
} }
} }

View File

@ -148,6 +148,14 @@ UM.PreferencesPage
bottom: parent.bottom bottom: parent.bottom
right: parent.right right: parent.right
} }
onPositionChanged: {
// This removes focus from items when scrolling.
// This fixes comboboxes staying open and scrolling container
if (!activeFocus) {
forceActiveFocus();
}
}
} }
Column Column
@ -215,7 +223,7 @@ UM.PreferencesPage
textRole: "text" textRole: "text"
model: languageList model: languageList
implicitWidth: UM.Theme.getSize("setting_control").width implicitWidth: UM.Theme.getSize("combobox").width
implicitHeight: currencyField.height implicitHeight: currencyField.height
function setCurrentIndex() { function setCurrentIndex() {
@ -255,7 +263,7 @@ UM.PreferencesPage
id: currencyField id: currencyField
selectByMouse: true selectByMouse: true
text: UM.Preferences.getValue("cura/currency") text: UM.Preferences.getValue("cura/currency")
implicitWidth: UM.Theme.getSize("setting_control").width implicitWidth: UM.Theme.getSize("combobox").width
onTextChanged: UM.Preferences.setValue("cura/currency", text) onTextChanged: UM.Preferences.setValue("cura/currency", text)
} }
@ -284,7 +292,7 @@ UM.PreferencesPage
model: themeList model: themeList
textRole: "text" textRole: "text"
implicitWidth: UM.Theme.getSize("setting_control").width implicitWidth: UM.Theme.getSize("combobox").width
implicitHeight: currencyField.height implicitHeight: currencyField.height
currentIndex: currentIndex:
@ -554,8 +562,8 @@ UM.PreferencesPage
model: comboBoxList model: comboBoxList
textRole: "text" textRole: "text"
width: UM.Theme.getSize("combobox_wide").width width: UM.Theme.getSize("combobox").width
height: UM.Theme.getSize("combobox_wide").height height: UM.Theme.getSize("combobox").height
currentIndex: currentIndex:
{ {
@ -711,8 +719,8 @@ UM.PreferencesPage
Cura.ComboBox Cura.ComboBox
{ {
id: choiceOnOpenProjectDropDownButton id: choiceOnOpenProjectDropDownButton
width: UM.Theme.getSize("combobox_wide").width width: UM.Theme.getSize("combobox").width
height: UM.Theme.getSize("combobox_wide").height height: UM.Theme.getSize("combobox").height
model: ListModel model: ListModel
{ {

View File

@ -76,10 +76,10 @@ UM.ManagementPage
enabled: !Cura.MachineManager.stacksHaveErrors enabled: !Cura.MachineManager.stacksHaveErrors
visible: base.canCreateProfile visible: base.canCreateProfile
tooltip: catalog.i18nc("@action:tooltip", "Create new profile from current settings/overrides")
onClicked: onClicked:
{ {
createQualityDialog.object = Cura.ContainerManager.makeUniqueName(base.currentItem.name) createQualityDialog.object = Cura.ContainerManager.makeUniqueName("<new name>")
createQualityDialog.open() createQualityDialog.open()
createQualityDialog.selectText() createQualityDialog.selectText()
} }
@ -303,6 +303,7 @@ UM.ManagementPage
left: parent.left left: parent.left
right: parent.right right: parent.right
top: parent.top top: parent.top
topMargin: UM.Theme.getSize("narrow_margin").height
} }
spacing: UM.Theme.getSize("default_margin").height spacing: UM.Theme.getSize("default_margin").height
@ -315,6 +316,13 @@ UM.ManagementPage
font: UM.Theme.getFont("large_bold") font: UM.Theme.getFont("large_bold")
elide: Text.ElideRight elide: Text.ElideRight
} }
UM.Label
{
anchors.left: parent.left
anchors.right: parent.right
text: catalog.i18nc("@action:label", "Some settings from current profile were overwritten.")
visible: currentSettingsActions.visible
}
Flow Flow
{ {
@ -322,12 +330,13 @@ UM.ManagementPage
width: parent.width width: parent.width
visible: base.hasCurrentItem && base.currentItem.name == Cura.MachineManager.activeQualityOrQualityChangesName && base.currentItem.intent_category == Cura.MachineManager.activeIntentCategory visible: base.hasCurrentItem && base.currentItem.name == Cura.MachineManager.activeQualityOrQualityChangesName && base.currentItem.intent_category == Cura.MachineManager.activeIntentCategory
spacing: UM.Theme.getSize("default_margin").width
Cura.SecondaryButton Cura.SecondaryButton
{ {
text: catalog.i18nc("@action:button", "Update profile with current settings/overrides") text: catalog.i18nc("@action:button", "Update profile")
enabled: Cura.MachineManager.hasUserSettings && objectList.currentIndex && !objectList.currentIndex.is_read_only enabled: !Cura.MachineManager.stacksHaveErrors && Cura.MachineManager.hasUserSettings && Cura.MachineManager.activeQualityChangesGroup != null
onClicked: Cura.ContainerManager.updateQualityChanges() onClicked: Cura.ContainerManager.updateQualityChanges()
tooltip: catalog.i18nc("@action:tooltip", "Update profile with current settings/overrides")
} }
Cura.SecondaryButton Cura.SecondaryButton
@ -356,7 +365,9 @@ UM.ManagementPage
UM.TabRow UM.TabRow
{ {
id: profileExtruderTabs id: profileExtruderTabs
UM.TabRowButton // One extra tab for the global settings.
// One extra tab for the global settings.
UM.TabRowButton
{ {
text: catalog.i18nc("@title:tab", "Global Settings") text: catalog.i18nc("@title:tab", "Global Settings")
} }

View File

@ -0,0 +1,23 @@
// Copyright (c) 2022 Ultimaker B.V.
// Uranium is released under the terms of the LGPLv3 or higher.
import QtQuick 2.2
import QtQuick.Controls 2.1
import UM 1.5 as UM
import Cura 1.5 as Cura
Cura.CategoryButton
{
id: base
categoryIcon: definition ? UM.Theme.getIcon(definition.icon) : ""
labelText: definition ? definition.label : ""
expanded: definition ? definition.expanded : false
signal showTooltip(string text)
signal hideTooltip()
signal contextMenuRequested()
onClicked: expanded ? settingDefinitionsModel.collapseRecursive(definition.key) : settingDefinitionsModel.expandRecursive(definition.key)
}

View File

@ -0,0 +1,99 @@
// Copyright (c) 2022 Ultimaker B.V.
// Uranium is released under the terms of the LGPLv3 or higher.
import QtQuick 2.1
import QtQuick.Controls 2.1
import UM 1.5 as UM
Item
{
// Use the depth of the model to move the item, but also leave space for the visibility / enabled exclamation mark.
// Align checkbox with SettingVisibilityCategory icon with + 5
x: definition ? definition.depth * UM.Theme.getSize("narrow_margin").width : UM.Theme.getSize("default_margin").width
UM.TooltipArea
{
text: definition ? definition.description : ""
width: childrenRect.width;
height: childrenRect.height;
id: checkboxTooltipArea
UM.CheckBox
{
id: check
text: definition ? definition.label: ""
checked: definition ? definition.visible: false
enabled: definition ? !definition.prohibited: false
MouseArea
{
anchors.fill: parent
onClicked: definitionsModel.setVisible(definition.key, !check.checked)
}
}
}
UM.TooltipArea
{
width: height
height: check.height
anchors.left: checkboxTooltipArea.right
anchors.leftMargin: 2 * screenScaleFactor
text:
{
if(provider.properties.enabled == "True")
{
return ""
}
var key = definition ? definition.key : ""
var requires = settingDefinitionsModel.getRequires(key, "enabled")
if (requires.length == 0)
{
return catalog.i18nc("@item:tooltip", "This setting has been hidden by the active machine and will not be visible.");
}
else
{
var requires_text = ""
for (var i in requires)
{
if (requires_text == "")
{
requires_text = requires[i].label
}
else
{
requires_text += ", " + requires[i].label
}
}
return catalog.i18ncp("@item:tooltip %1 is list of setting names", "This setting has been hidden by the value of %1. Change the value of that setting to make this setting visible.", "This setting has been hidden by the values of %1. Change the values of those settings to make this setting visible.", requires.length) .arg(requires_text);
}
}
UM.RecolorImage
{
anchors.centerIn: parent
width: Math.round(check.height * 0.75) | 0
height: width
source: UM.Theme.getIcon("Information")
color: UM.Theme.getColor("primary_button_text")
}
visible: provider.properties.enabled == "False"
}
UM.SettingPropertyProvider
{
id: provider
containerStackId: "global"
watchedProperties: [ "enabled" ]
key: definition ? definition.key : ""
}
}

View File

@ -150,7 +150,7 @@ UM.PreferencesPage
} }
clip: true clip: true
ScrollBar.vertical: UM.ScrollBar {} ScrollBar.vertical: UM.ScrollBar { id: scrollBar }
model: UM.SettingDefinitionsModel model: UM.SettingDefinitionsModel
{ {
@ -163,11 +163,14 @@ UM.PreferencesPage
visibilityHandler: UM.SettingPreferenceVisibilityHandler {} visibilityHandler: UM.SettingPreferenceVisibilityHandler {}
} }
property Component settingVisibilityCategory: Cura.SettingVisibilityCategory {}
property Component settingVisibilityItem: Cura.SettingVisibilityItem {}
delegate: Loader delegate: Loader
{ {
id: loader id: loader
width: settingsListView.width width: settingsListView.width - scrollBar.width
height: model.type != undefined ? UM.Theme.getSize("section").height : 0 height: model.type != undefined ? UM.Theme.getSize("section").height : 0
property var definition: model property var definition: model
@ -177,31 +180,15 @@ UM.PreferencesPage
active: model.type != undefined active: model.type != undefined
sourceComponent: sourceComponent:
{ {
switch(model.type) switch (model.type)
{ {
case "category": case "category":
return settingVisibilityCategory return settingsListView.settingVisibilityCategory
default: default:
return settingVisibilityItem return settingsListView.settingVisibilityItem
} }
} }
} }
} }
UM.I18nCatalog { name: "cura" }
Component
{
id: settingVisibilityCategory;
UM.SettingVisibilityCategory { }
}
Component
{
id: settingVisibilityItem;
UM.SettingVisibilityItem { }
}
} }
} }

View File

@ -84,19 +84,19 @@ Item
Layout.maximumWidth: Math.floor(parent.width * 0.7) // Always leave >= 30% for the rest of the row. Layout.maximumWidth: Math.floor(parent.width * 0.7) // Always leave >= 30% for the rest of the row.
height: contentHeight height: contentHeight
elide: Text.ElideRight elide: Text.ElideRight
wrapMode: Text.NoWrap
} }
UM.Label UM.Label
{ {
text: activeQualityDetailText() text: activeQualityDetailText()
font: UM.Theme.getFont("default")
color: UM.Theme.getColor("text_detail") color: UM.Theme.getColor("text_detail")
Layout.margins: 0 Layout.margins: 0
Layout.fillWidth: true Layout.fillWidth: true
height: contentHeight height: contentHeight
elide: Text.ElideRight elide: Text.ElideRight
wrapMode: Text.NoWrap
function activeQualityDetailText() function activeQualityDetailText()
{ {
var resultMap = Cura.MachineManager.activeQualityDisplayNameMap var resultMap = Cura.MachineManager.activeQualityDisplayNameMap

View File

@ -12,7 +12,8 @@ Cura.ActionButton
color: UM.Theme.getColor("secondary_button") color: UM.Theme.getColor("secondary_button")
textColor: UM.Theme.getColor("secondary_button_text") textColor: UM.Theme.getColor("secondary_button_text")
outlineColor: UM.Theme.getColor("border_accent_1") outlineColor: UM.Theme.getColor("border_accent_1")
disabledColor: UM.Theme.getColor("action_button_disabled") disabledColor: UM.Theme.getColor("secondary_button")
textDisabledColor: UM.Theme.getColor("action_button_disabled_text") textDisabledColor: UM.Theme.getColor("action_button_disabled_text")
hoverColor: UM.Theme.getColor("secondary_button_hover") hoverColor: UM.Theme.getColor("secondary_button_hover")
outlineDisabledColor: UM.Theme.getColor("action_button_disabled_text")
} }

View File

@ -1,42 +1,21 @@
// Copyright (c) 2018 Ultimaker B.V. // Copyright (c) 2022 Ultimaker B.V.
// Cura is released under the terms of the LGPLv3 or higher. // Cura is released under the terms of the LGPLv3 or higher.
import QtQuick 2.7 import QtQuick 2.7
import QtQuick.Controls 2.0 import QtQuick.Controls 2.0
import UM 1.1 as UM import UM 1.5 as UM
import Cura 1.0 as Cura import Cura 1.5 as Cura
Button Cura.CategoryButton
{ {
id: base id: base
anchors.left: parent.left anchors.left: parent.left
anchors.right: parent.right anchors.right: parent.right
// To avoid overlapping with the scrollBars
anchors.rightMargin: 2 * UM.Theme.getSize("thin_margin").width
hoverEnabled: true
height: UM.Theme.getSize("section_icon_column").height categoryIcon: UM.Theme.getIcon(definition.icon)
expanded: definition.expanded
background: Rectangle labelText: definition.label
{
id: backgroundRectangle
height: UM.Theme.getSize("section").height
anchors.verticalCenter: parent.verticalCenter
color:
{
if (!base.enabled)
{
return UM.Theme.getColor("setting_category_disabled")
}
else if (base.hovered)
{
return UM.Theme.getColor("setting_category_hover")
}
return UM.Theme.getColor("setting_category")
}
Behavior on color { ColorAnimation { duration: 50; } }
}
signal showTooltip(string text) signal showTooltip(string text)
signal hideTooltip() signal hideTooltip()
@ -46,73 +25,6 @@ Button
signal setActiveFocusToNextSetting(bool forward) signal setActiveFocusToNextSetting(bool forward)
property var focusItem: base property var focusItem: base
property bool expanded: definition.expanded
property color text_color:
{
if (!base.enabled)
{
return UM.Theme.getColor("setting_category_disabled_text")
} else if (base.hovered || base.pressed || base.activeFocus)
{
return UM.Theme.getColor("setting_category_active_text")
}
return UM.Theme.getColor("setting_category_text")
}
contentItem: Item
{
anchors.fill: parent
Label
{
id: settingNameLabel
anchors
{
left: parent.left
leftMargin: 2 * UM.Theme.getSize("default_margin").width + UM.Theme.getSize("section_icon").width
right: parent.right
verticalCenter: parent.verticalCenter
}
text: definition.label
textFormat: Text.PlainText
renderType: Text.NativeRendering
font: UM.Theme.getFont("medium_bold")
color: base.text_color
fontSizeMode: Text.HorizontalFit
minimumPointSize: 8
}
UM.RecolorImage
{
id: category_arrow
anchors.verticalCenter: parent.verticalCenter
anchors.right: parent.right
anchors.rightMargin: UM.Theme.getSize("default_margin").width
width: UM.Theme.getSize("standard_arrow").width
height: UM.Theme.getSize("standard_arrow").height
sourceSize.height: width
color: UM.Theme.getColor("setting_control_button")
source: definition.expanded ? UM.Theme.getIcon("ChevronSingleDown") : UM.Theme.getIcon("ChevronSingleLeft")
}
}
UM.RecolorImage
{
id: icon
anchors.verticalCenter: parent.verticalCenter
anchors.left: parent.left
anchors.leftMargin: UM.Theme.getSize("thin_margin").width
color: base.text_color
source: UM.Theme.getIcon(definition.icon)
width: UM.Theme.getSize("section_icon").width
height: UM.Theme.getSize("section_icon").height
sourceSize.width: width
sourceSize.height: width
}
onClicked: onClicked:
{ {
@ -151,7 +63,7 @@ Button
{ {
right: inheritButton.visible ? inheritButton.left : parent.right right: inheritButton.visible ? inheritButton.left : parent.right
// Use 1.9 as the factor because there is a 0.1 difference between the settings and inheritance warning icons // Use 1.9 as the factor because there is a 0.1 difference between the settings and inheritance warning icons
rightMargin: inheritButton.visible ? Math.round(UM.Theme.getSize("default_margin").width / 2) : category_arrow.width + Math.round(UM.Theme.getSize("default_margin").width * 1.9) rightMargin: inheritButton.visible ? Math.round(UM.Theme.getSize("default_margin").width / 2) : arrow.width + Math.round(UM.Theme.getSize("default_margin").width * 1.9)
verticalCenter: parent.verticalCenter verticalCenter: parent.verticalCenter
} }
@ -168,7 +80,7 @@ Button
anchors.verticalCenter: parent.verticalCenter anchors.verticalCenter: parent.verticalCenter
anchors.right: parent.right anchors.right: parent.right
anchors.rightMargin: category_arrow.width + UM.Theme.getSize("default_margin").width * 2 anchors.rightMargin: arrow.width + UM.Theme.getSize("default_margin").width * 2
visible: visible:
{ {

View File

@ -13,12 +13,9 @@ import "."
Item Item
{ {
id: base id: base
height: enabled ? UM.Theme.getSize("section").height + UM.Theme.getSize("narrow_margin").height : 0
height: UM.Theme.getSize("section").height
anchors.left: parent.left anchors.left: parent.left
anchors.right: parent.right anchors.right: parent.right
// To avoid overlapping with the scrollBars
anchors.rightMargin: 2 * UM.Theme.getSize("thin_margin").width
property alias contents: controlContainer.children property alias contents: controlContainer.children
property alias hovered: mouse.containsMouse property alias hovered: mouse.containsMouse
@ -137,7 +134,7 @@ Item
id: label id: label
anchors.left: parent.left anchors.left: parent.left
anchors.leftMargin: doDepthIndentation ? Math.round(UM.Theme.getSize("thin_margin").width + ((definition.depth - 1) * UM.Theme.getSize("setting_control_depth_margin").width)) : 0 anchors.leftMargin: doDepthIndentation ? Math.round(UM.Theme.getSize("thin_margin").width + ((definition.depth - 1) * UM.Theme.getSize("default_margin").width)) : 0
anchors.right: settingControls.left anchors.right: settingControls.left
anchors.verticalCenter: parent.verticalCenter anchors.verticalCenter: parent.verticalCenter

View File

@ -25,7 +25,6 @@ Item
top: parent.top top: parent.top
left: parent.left left: parent.left
right: settingVisibilityMenu.left right: settingVisibilityMenu.left
rightMargin: UM.Theme.getSize("default_margin").width
} }
height: UM.Theme.getSize("print_setup_big_item").height height: UM.Theme.getSize("print_setup_big_item").height
@ -131,8 +130,6 @@ Item
SettingVisibilityPresetsMenu SettingVisibilityPresetsMenu
{ {
id: settingVisibilityPresetsMenu id: settingVisibilityPresetsMenu
x: settingVisibilityMenu.x
y: settingVisibilityMenu.y
onCollapseAllCategories: onCollapseAllCategories:
{ {
settingsSearchTimer.stop() settingsSearchTimer.stop()
@ -142,32 +139,32 @@ Item
} }
} }
UM.SimpleButton UM.BurgerButton
{ {
id: settingVisibilityMenu id: settingVisibilityMenu
anchors anchors
{ {
top: filterContainer.top verticalCenter: filterContainer.verticalCenter
bottom: filterContainer.bottom
right: parent.right right: parent.right
rightMargin: UM.Theme.getSize("wide_margin").width
} }
width: UM.Theme.getSize("medium_button_icon").width
height: UM.Theme.getSize("medium_button_icon").height
iconSource: UM.Theme.getIcon("Hamburger")
hoverColor: UM.Theme.getColor("small_button_text_hover")
color: UM.Theme.getColor("small_button_text")
onClicked: onClicked:
{ {
settingVisibilityPresetsMenu.popup( settingVisibilityPresetsMenu.popup(
settingVisibilityMenu, popupContainer,
-settingVisibilityPresetsMenu.width + UM.Theme.getSize("default_margin").width, -settingVisibilityPresetsMenu.width + UM.Theme.getSize("default_margin").width,
settingVisibilityMenu.height settingVisibilityMenu.height
) )
} }
} }
Item
{
// Work around to prevent the buttom from being rescaled if a popup is attached
id: popupContainer
anchors.bottom: settingVisibilityMenu.bottom
anchors.right: settingVisibilityMenu.right
}
// Mouse area that gathers the scroll events to not propagate it to the main view. // Mouse area that gathers the scroll events to not propagate it to the main view.
MouseArea MouseArea
@ -180,7 +177,7 @@ Item
ListView ListView
{ {
id: contents id: contents
maximumFlickVelocity: 1000
anchors anchors
{ {
top: filterContainer.bottom top: filterContainer.bottom
@ -191,7 +188,17 @@ Item
} }
clip: true clip: true
cacheBuffer: 1000000 // Set a large cache to effectively just cache every list item. cacheBuffer: 1000000 // Set a large cache to effectively just cache every list item.
ScrollBar.vertical: UM.ScrollBar {} ScrollBar.vertical: UM.ScrollBar
{
id: scrollBar
onPositionChanged: {
// This removes focus from items when scrolling.
// This fixes comboboxes staying open and scrolling container
if (!activeFocus) {
forceActiveFocus();
}
}
}
model: UM.SettingDefinitionsModel model: UM.SettingDefinitionsModel
{ {
@ -213,14 +220,12 @@ Item
} }
property int indexWithFocus: -1 property int indexWithFocus: -1
property double delegateHeight: UM.Theme.getSize("section").height + 2 * UM.Theme.getSize("default_lining").height
property string activeMachineId: Cura.MachineManager.activeMachine !== null ? Cura.MachineManager.activeMachine.id : "" property string activeMachineId: Cura.MachineManager.activeMachine !== null ? Cura.MachineManager.activeMachine.id : ""
delegate: Loader delegate: Loader
{ {
id: delegate id: delegate
width: contents.width width: contents.width - (scrollBar.width + UM.Theme.getSize("narrow_margin").width)
height: enabled ? contents.delegateHeight: 0
Behavior on height { NumberAnimation { duration: 100 } } Behavior on height { NumberAnimation { duration: 100 } }
opacity: enabled ? 1 : 0 opacity: enabled ? 1 : 0
Behavior on opacity { NumberAnimation { duration: 100 } } Behavior on opacity { NumberAnimation { duration: 100 } }

View File

@ -72,6 +72,18 @@ Item
base.value = value * base.stepSize; base.value = value * base.stepSize;
} }
// This forces TextField to commit typed values before incrementing with buttons.
// This fixes the typed value not being incremented when the textField has active focus.
up.onPressedChanged:
{
base.forceActiveFocus()
}
down.onPressedChanged:
{
base.forceActiveFocus()
}
background: Item {} background: Item {}
contentItem: Cura.TextField contentItem: Cura.TextField

View File

@ -57,9 +57,7 @@ ComboBox
contentItem: UM.Label contentItem: UM.Label
{ {
id: contentLabel id: contentLabel
anchors.left: parent.left leftPadding: UM.Theme.getSize("setting_unit_margin").width + UM.Theme.getSize("default_margin").width
anchors.leftMargin: UM.Theme.getSize("setting_unit_margin").width
anchors.verticalCenter: parent.verticalCenter
anchors.right: downArrow.left anchors.right: downArrow.left
wrapMode: Text.NoWrap wrapMode: Text.NoWrap
text: text:

View File

@ -18,4 +18,5 @@ MenuSeparator
implicitHeight: UM.Theme.getSize("default_lining").height implicitHeight: UM.Theme.getSize("default_lining").height
color: UM.Theme.getColor("setting_control_border") color: UM.Theme.getColor("setting_control_border")
} }
height: visible ? implicitHeight: 0
} }

View File

@ -17,5 +17,4 @@ cool_min_layer_time = 3
speed_wall_0 = =math.ceil(speed_print * 40 / 60) speed_wall_0 = =math.ceil(speed_print * 40 / 60)
speed_wall_x = =math.ceil(speed_print * 80 / 60) speed_wall_x = =math.ceil(speed_print * 80 / 60)
speed_infill = =math.ceil(speed_print * 100 / 60) speed_infill = =math.ceil(speed_print * 100 / 60)
wall_thickness = 1
speed_topbottom = =math.ceil(speed_print * 30 / 60) speed_topbottom = =math.ceil(speed_print * 30 / 60)

View File

@ -27,7 +27,6 @@ infill_before_walls = False
infill_enable_travel_optimization = False infill_enable_travel_optimization = False
infill_support_angle = 50 infill_support_angle = 50
ironing_enabled = False ironing_enabled = False
max_skin_angle_for_expansion = 20
retract_at_layer_change = False retract_at_layer_change = False
retraction_amount = 6.5 retraction_amount = 6.5
retraction_hop_only_when_collides = True retraction_hop_only_when_collides = True

View File

@ -27,7 +27,6 @@ infill_before_walls = False
infill_enable_travel_optimization = False infill_enable_travel_optimization = False
infill_support_angle = 50 infill_support_angle = 50
ironing_enabled = False ironing_enabled = False
max_skin_angle_for_expansion = 20
retract_at_layer_change = False retract_at_layer_change = False
retraction_amount = 6.5 retraction_amount = 6.5
retraction_hop_only_when_collides = True retraction_hop_only_when_collides = True

View File

@ -18,4 +18,3 @@ infill_sparse_density = 22
speed_layer_0 = =round(speed_print * 30 / 30) speed_layer_0 = =round(speed_print * 30 / 30)
speed_print = 30 speed_print = 30
top_bottom_thickness = 0.72 top_bottom_thickness = 0.72
wall_thickness = 0.88

View File

@ -21,4 +21,3 @@ speed_topbottom = =math.ceil(speed_print * 30 / 60)
speed_travel = 150 speed_travel = 150
speed_wall = =math.ceil(speed_print * 50 / 60) speed_wall = =math.ceil(speed_print * 50 / 60)
top_bottom_thickness = 0.75 top_bottom_thickness = 0.75
wall_thickness = 0.7

View File

@ -19,4 +19,3 @@ speed_layer_0 = =round(speed_print * 30 / 50)
speed_print = 50 speed_print = 50
speed_topbottom = =math.ceil(speed_print * 20 / 50) speed_topbottom = =math.ceil(speed_print * 20 / 50)
top_bottom_thickness = 0.72 top_bottom_thickness = 0.72
wall_thickness = 1.05

View File

@ -19,4 +19,3 @@ speed_layer_0 = =round(speed_print * 30 / 50)
speed_print = 50 speed_print = 50
speed_topbottom = =math.ceil(speed_print * 20 / 50) speed_topbottom = =math.ceil(speed_print * 20 / 50)
top_bottom_thickness = 0.8 top_bottom_thickness = 0.8
wall_thickness = 1.05

View File

@ -21,4 +21,3 @@ speed_topbottom = =math.ceil(speed_print * 20 / 55)
speed_wall = =math.ceil(speed_print * 40 / 55) speed_wall = =math.ceil(speed_print * 40 / 55)
speed_wall_0 = =math.ceil(speed_print * 25 / 55) speed_wall_0 = =math.ceil(speed_print * 25 / 55)
top_bottom_thickness = 1.2 top_bottom_thickness = 1.2
wall_thickness = 1.59

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