Merge branch 'Ultimaker:master' into master

This commit is contained in:
Tyler Adler 2022-01-15 15:18:36 -08:00 committed by GitHub
commit 4d214dbae2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 142 additions and 71 deletions

View File

@ -848,10 +848,10 @@ class BuildVolume(SceneNode):
""" """
result = {} result = {}
adhesion_extruder = None #type: ExtruderStack skirt_brim_extruder: ExtruderStack = None
for extruder in used_extruders: for extruder in used_extruders:
if int(extruder.getProperty("extruder_nr", "value")) == int(self._global_container_stack.getProperty("adhesion_extruder_nr", "value")): if int(extruder.getProperty("extruder_nr", "value")) == int(self._global_container_stack.getProperty("skirt_brim_extruder_nr", "value")):
adhesion_extruder = extruder skirt_brim_extruder = extruder
result[extruder.getId()] = [] result[extruder.getId()] = []
# Currently, the only normally printed object is the prime tower. # Currently, the only normally printed object is the prime tower.
@ -865,11 +865,11 @@ class BuildVolume(SceneNode):
prime_tower_x = prime_tower_x - machine_width / 2 #Offset by half machine_width and _depth to put the origin in the front-left. prime_tower_x = prime_tower_x - machine_width / 2 #Offset by half machine_width and _depth to put the origin in the front-left.
prime_tower_y = prime_tower_y + machine_depth / 2 prime_tower_y = prime_tower_y + machine_depth / 2
if adhesion_extruder is not None and self._global_container_stack.getProperty("prime_tower_brim_enable", "value") and self._global_container_stack.getProperty("adhesion_type", "value") != "raft": if skirt_brim_extruder is not None and self._global_container_stack.getProperty("prime_tower_brim_enable", "value") and self._global_container_stack.getProperty("adhesion_type", "value") != "raft":
brim_size = ( brim_size = (
adhesion_extruder.getProperty("brim_line_count", "value") * skirt_brim_extruder.getProperty("brim_line_count", "value") *
adhesion_extruder.getProperty("skirt_brim_line_width", "value") / 100.0 * skirt_brim_extruder.getProperty("skirt_brim_line_width", "value") / 100.0 *
adhesion_extruder.getProperty("initial_layer_line_width_factor", "value") skirt_brim_extruder.getProperty("initial_layer_line_width_factor", "value")
) )
prime_tower_x -= brim_size prime_tower_x -= brim_size
prime_tower_y += brim_size prime_tower_y += brim_size
@ -1100,18 +1100,18 @@ class BuildVolume(SceneNode):
# with the adhesion extruder, but it also prints one extra line by all other extruders. As such, the # with the adhesion extruder, but it also prints one extra line by all other extruders. As such, the
# setting does *not* have a limit_to_extruder setting (which means that we can't ask the global extruder what # setting does *not* have a limit_to_extruder setting (which means that we can't ask the global extruder what
# the value is. # the value is.
adhesion_extruder = self._global_container_stack.getProperty("adhesion_extruder_nr", "value") skirt_brim_extruder_nr = self._global_container_stack.getProperty("skirt_brim_extruder_nr", "value")
try: try:
adhesion_stack = self._global_container_stack.extruderList[int(adhesion_extruder)] skirt_brim_stack = self._global_container_stack.extruderList[int(skirt_brim_extruder_nr)]
except IndexError: except IndexError:
Logger.warning(f"Couldn't find extruder with index '{adhesion_extruder}', defaulting to 0 instead.") Logger.warning(f"Couldn't find extruder with index '{skirt_brim_extruder_nr}', defaulting to 0 instead.")
adhesion_stack = self._global_container_stack.extruderList[0] skirt_brim_stack = self._global_container_stack.extruderList[0]
skirt_brim_line_width = adhesion_stack.getProperty("skirt_brim_line_width", "value") skirt_brim_line_width = skirt_brim_stack.getProperty("skirt_brim_line_width", "value")
initial_layer_line_width_factor = adhesion_stack.getProperty("initial_layer_line_width_factor", "value") initial_layer_line_width_factor = skirt_brim_stack.getProperty("initial_layer_line_width_factor", "value")
# Use brim width if brim is enabled OR the prime tower has a brim. # Use brim width if brim is enabled OR the prime tower has a brim.
if adhesion_type == "brim": if adhesion_type == "brim":
brim_line_count = self._global_container_stack.getProperty("brim_line_count", "value") brim_line_count = skirt_brim_stack.getProperty("brim_line_count", "value")
bed_adhesion_size = skirt_brim_line_width * brim_line_count * initial_layer_line_width_factor / 100.0 bed_adhesion_size = skirt_brim_line_width * brim_line_count * initial_layer_line_width_factor / 100.0
for extruder_stack in used_extruders: for extruder_stack in used_extruders:
@ -1120,8 +1120,8 @@ class BuildVolume(SceneNode):
# We don't create an additional line for the extruder we're printing the brim with. # We don't create an additional line for the extruder we're printing the brim with.
bed_adhesion_size -= skirt_brim_line_width * initial_layer_line_width_factor / 100.0 bed_adhesion_size -= skirt_brim_line_width * initial_layer_line_width_factor / 100.0
elif adhesion_type == "skirt": elif adhesion_type == "skirt":
skirt_distance = self._global_container_stack.getProperty("skirt_gap", "value") skirt_distance = skirt_brim_stack.getProperty("skirt_gap", "value")
skirt_line_count = self._global_container_stack.getProperty("skirt_line_count", "value") skirt_line_count = skirt_brim_stack.getProperty("skirt_line_count", "value")
bed_adhesion_size = skirt_distance + ( bed_adhesion_size = skirt_distance + (
skirt_brim_line_width * skirt_line_count) * initial_layer_line_width_factor / 100.0 skirt_brim_line_width * skirt_line_count) * initial_layer_line_width_factor / 100.0
@ -1132,7 +1132,7 @@ class BuildVolume(SceneNode):
# We don't create an additional line for the extruder we're printing the skirt with. # We don't create an additional line for the extruder we're printing the skirt with.
bed_adhesion_size -= skirt_brim_line_width * initial_layer_line_width_factor / 100.0 bed_adhesion_size -= skirt_brim_line_width * initial_layer_line_width_factor / 100.0
elif adhesion_type == "raft": elif adhesion_type == "raft":
bed_adhesion_size = self._global_container_stack.getProperty("raft_margin", "value") bed_adhesion_size = self._global_container_stack.getProperty("raft_margin", "value") # Should refer to the raft extruder if set.
elif adhesion_type == "none": elif adhesion_type == "none":
bed_adhesion_size = 0 bed_adhesion_size = 0
else: else:
@ -1220,7 +1220,7 @@ class BuildVolume(SceneNode):
_tower_settings = ["prime_tower_enable", "prime_tower_size", "prime_tower_position_x", "prime_tower_position_y", "prime_tower_brim_enable"] _tower_settings = ["prime_tower_enable", "prime_tower_size", "prime_tower_position_x", "prime_tower_position_y", "prime_tower_brim_enable"]
_ooze_shield_settings = ["ooze_shield_enabled", "ooze_shield_dist"] _ooze_shield_settings = ["ooze_shield_enabled", "ooze_shield_dist"]
_distance_settings = ["infill_wipe_dist", "travel_avoid_distance", "support_offset", "support_enable", "travel_avoid_other_parts", "travel_avoid_supports", "wall_line_count", "wall_line_width_0", "wall_line_width_x"] _distance_settings = ["infill_wipe_dist", "travel_avoid_distance", "support_offset", "support_enable", "travel_avoid_other_parts", "travel_avoid_supports", "wall_line_count", "wall_line_width_0", "wall_line_width_x"]
_extruder_settings = ["support_enable", "support_bottom_enable", "support_roof_enable", "support_infill_extruder_nr", "support_extruder_nr_layer_0", "support_bottom_extruder_nr", "support_roof_extruder_nr", "brim_line_count", "adhesion_extruder_nr", "adhesion_type"] #Settings that can affect which extruders are used. _extruder_settings = ["support_enable", "support_bottom_enable", "support_roof_enable", "support_infill_extruder_nr", "support_extruder_nr_layer_0", "support_bottom_extruder_nr", "support_roof_extruder_nr", "brim_line_count", "skirt_brim_extruder_nr", "raft_base_extruder_nr", "raft_interface_extruder_nr", "raft_surface_extruder_nr", "adhesion_type"] #Settings that can affect which extruders are used.
_limit_to_extruder_settings = ["wall_extruder_nr", "wall_0_extruder_nr", "wall_x_extruder_nr", "top_bottom_extruder_nr", "infill_extruder_nr", "support_infill_extruder_nr", "support_extruder_nr_layer_0", "support_bottom_extruder_nr", "support_roof_extruder_nr", "adhesion_extruder_nr"] _limit_to_extruder_settings = ["wall_extruder_nr", "wall_0_extruder_nr", "wall_x_extruder_nr", "top_bottom_extruder_nr", "infill_extruder_nr", "support_infill_extruder_nr", "support_extruder_nr_layer_0", "support_bottom_extruder_nr", "support_roof_extruder_nr", "skirt_brim_extruder_nr", "raft_base_extruder_nr", "raft_interface_extruder_nr", "raft_surface_extruder_nr"]
_material_size_settings = ["material_shrinkage_percentage", "material_shrinkage_percentage_xy", "material_shrinkage_percentage_z"] _material_size_settings = ["material_shrinkage_percentage", "material_shrinkage_percentage_xy", "material_shrinkage_percentage_z"]
_disallowed_area_settings = _skirt_settings + _prime_settings + _tower_settings + _ooze_shield_settings + _distance_settings + _extruder_settings + _material_size_settings _disallowed_area_settings = _skirt_settings + _prime_settings + _tower_settings + _ooze_shield_settings + _distance_settings + _extruder_settings + _material_size_settings

View File

@ -259,11 +259,20 @@ class ExtruderManager(QObject):
if support_roof_enabled: if support_roof_enabled:
used_extruder_stack_ids.add(self.extruderIds[self.extruderValueWithDefault(str(global_stack.getProperty("support_roof_extruder_nr", "value")))]) used_extruder_stack_ids.add(self.extruderIds[self.extruderValueWithDefault(str(global_stack.getProperty("support_roof_extruder_nr", "value")))])
# The platform adhesion extruder. Not used if using none. # The platform adhesion extruders.
if global_stack.getProperty("adhesion_type", "value") != "none" or ( used_adhesion_extruders = set()
global_stack.getProperty("prime_tower_brim_enable", "value") and adhesion_type = global_stack.getProperty("adhesion_type", "value")
global_stack.getProperty("adhesion_type", "value") != 'raft'): if adhesion_type == "skirt" and (global_stack.getProperty("skirt_line_count", "value") > 0 or global_stack.getProperty("skirt_brim_minimal_length", "value") > 0):
extruder_str_nr = str(global_stack.getProperty("adhesion_extruder_nr", "value")) used_adhesion_extruders.add("skirt_brim_extruder_nr") # There's a skirt.
if (adhesion_type == "brim" or global_stack.getProperty("prime_tower_brim_enable", "value")) and (global_stack.getProperty("brim_line_count", "value") > 0 or global_stack.getProperty("skirt_brim_minimal_length", "value") > 0):
used_adhesion_extruders.add("skirt_brim_extruder_nr") # There's a brim or prime tower brim.
if adhesion_type == "raft":
used_adhesion_extruders.add("raft_base_extruder_nr")
used_adhesion_extruders.add("raft_interface_extruder_nr")
if global_stack.getProperty("raft_surface_layers", "value") > 0:
used_adhesion_extruders.add("raft_surface_extruder_nr")
for extruder_setting in used_adhesion_extruders:
extruder_str_nr = str(global_stack.getProperty(extruder_setting, "value"))
if extruder_str_nr == "-1": if extruder_str_nr == "-1":
extruder_str_nr = self._application.getMachineManager().defaultExtruderPosition extruder_str_nr = self._application.getMachineManager().defaultExtruderPosition
if extruder_str_nr in self.extruderIds: if extruder_str_nr in self.extruderIds:
@ -286,8 +295,11 @@ class ExtruderManager(QObject):
global_stack = application.getGlobalContainerStack() global_stack = application.getGlobalContainerStack()
# Starts with the adhesion extruder. # Starts with the adhesion extruder.
if global_stack.getProperty("adhesion_type", "value") != "none": adhesion_type = global_stack.getProperty("adhesion_type", "value")
return global_stack.getProperty("adhesion_extruder_nr", "value") if adhesion_type in {"skirt", "brim"}:
return global_stack.getProperty("skirt_brim_extruder_nr", "value")
if adhesion_type == "raft":
return global_stack.getProperty("raft_base_extruder_nr", "value")
# No adhesion? Well maybe there is still support brim. # No adhesion? Well maybe there is still support brim.
if (global_stack.getProperty("support_enable", "value") or global_stack.getProperty("support_structure", "value") == "tree") and global_stack.getProperty("support_brim_enable", "value"): if (global_stack.getProperty("support_enable", "value") or global_stack.getProperty("support_structure", "value") == "tree") and global_stack.getProperty("support_brim_enable", "value"):

View File

@ -50,6 +50,7 @@ Item
Layout.fillWidth: true Layout.fillWidth: true
implicitHeight: createNewProjectButton.height implicitHeight: createNewProjectButton.height
leftPadding: searchIcon.width + UM.Theme.getSize("default_margin").width * 2 leftPadding: searchIcon.width + UM.Theme.getSize("default_margin").width * 2
focus: true
onTextEdited: manager.projectFilter = text //Update the search filter when editing this text field. onTextEdited: manager.projectFilter = text //Update the search filter when editing this text field.

View File

@ -1248,12 +1248,14 @@
"label": "Minimum Feature Size", "label": "Minimum Feature Size",
"description": "Minimum thickness of thin features. Model features that are thinner than this value will not be printed, while features thicker than the Minimum Feature Size will be widened to the Minimum Wall Line Width.", "description": "Minimum thickness of thin features. Model features that are thinner than this value will not be printed, while features thicker than the Minimum Feature Size will be widened to the Minimum Wall Line Width.",
"unit": "mm", "unit": "mm",
"default_value": 0.1,
"value": "wall_line_width_0 / 4", "value": "wall_line_width_0 / 4",
"minimum_value": "0", "minimum_value": "0",
"maximum_value": "wall_line_width_0", "maximum_value": "wall_line_width_0",
"type": "float", "type": "float",
"limit_to_extruder": "wall_0_extruder_nr", "limit_to_extruder": "wall_0_extruder_nr",
"enabled": "fill_outline_gaps" "enabled": "fill_outline_gaps",
"settable_per_mesh": true
}, },
"min_bead_width": "min_bead_width":
{ {
@ -1261,13 +1263,14 @@
"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": "wall_line_width_0 * (100.0 + wall_split_middle_threshold)/200",
"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",
"maximum_value_warning": "wall_line_width_0", "maximum_value_warning": "wall_line_width_0",
"type": "float", "type": "float",
"limit_to_extruder": "wall_0_extruder_nr", "limit_to_extruder": "wall_0_extruder_nr",
"enabled": "fill_outline_gaps" "enabled": "fill_outline_gaps",
"settable_per_mesh": true
}, },
"xy_offset": "xy_offset":
{ {
@ -3232,7 +3235,7 @@
"enabled": "resolveOrValue('adhesion_type') == 'skirt' or resolveOrValue('adhesion_type') == 'brim' or resolveOrValue('draft_shield_enabled') or resolveOrValue('ooze_shield_enabled')", "enabled": "resolveOrValue('adhesion_type') == 'skirt' or resolveOrValue('adhesion_type') == 'brim' or resolveOrValue('draft_shield_enabled') or resolveOrValue('ooze_shield_enabled')",
"settable_per_mesh": false, "settable_per_mesh": false,
"settable_per_extruder": true, "settable_per_extruder": true,
"limit_to_extruder": "adhesion_extruder_nr" "limit_to_extruder": "skirt_brim_extruder_nr"
}, },
"speed_z_hop": "speed_z_hop":
{ {
@ -3561,7 +3564,7 @@
"maximum_value_warning": "10000", "maximum_value_warning": "10000",
"enabled": "resolveOrValue('acceleration_enabled') and (resolveOrValue('adhesion_type') == 'skirt' or resolveOrValue('adhesion_type') == 'brim' or resolveOrValue('draft_shield_enabled') or resolveOrValue('ooze_shield_enabled'))", "enabled": "resolveOrValue('acceleration_enabled') and (resolveOrValue('adhesion_type') == 'skirt' or resolveOrValue('adhesion_type') == 'brim' or resolveOrValue('draft_shield_enabled') or resolveOrValue('ooze_shield_enabled'))",
"settable_per_mesh": false, "settable_per_mesh": false,
"limit_to_extruder": "adhesion_extruder_nr" "limit_to_extruder": "skirt_brim_extruder_nr"
}, },
"jerk_enabled": "jerk_enabled":
{ {
@ -3836,7 +3839,7 @@
"value": "jerk_layer_0", "value": "jerk_layer_0",
"enabled": "resolveOrValue('jerk_enabled') and (resolveOrValue('adhesion_type') == 'skirt' or resolveOrValue('adhesion_type') == 'brim' or resolveOrValue('draft_shield_enabled') or resolveOrValue('ooze_shield_enabled'))", "enabled": "resolveOrValue('jerk_enabled') and (resolveOrValue('adhesion_type') == 'skirt' or resolveOrValue('adhesion_type') == 'brim' or resolveOrValue('draft_shield_enabled') or resolveOrValue('ooze_shield_enabled'))",
"settable_per_mesh": false, "settable_per_mesh": false,
"limit_to_extruder": "adhesion_extruder_nr" "limit_to_extruder": "skirt_brim_extruder_nr"
} }
} }
}, },
@ -5411,7 +5414,54 @@
"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'))",
"settable_per_mesh": false, "settable_per_mesh": false,
"settable_per_extruder": false "settable_per_extruder": false,
"children":
{
"skirt_brim_extruder_nr":
{
"label": "Skirt/Brim Extruder",
"description": "The extruder train to use for printing the skirt or brim. This is used in multi-extrusion.",
"type": "extruder",
"default_value": "0",
"value": "adhesion_extruder_nr",
"enabled": "extruders_enabled_count > 1 and (resolveOrValue('adhesion_type') == 'skirt' or resolveOrValue('adhesion_type') == 'brim' or resolveOrValue('prime_tower_brim_enable'))",
"settable_per_mesh": false,
"settable_per_extruder": false
},
"raft_base_extruder_nr":
{
"label": "Raft Base Extruder",
"description": "The extruder train to use for printing the first layer of the raft. This is used in multi-extrusion.",
"type": "extruder",
"default_value": "0",
"value": "adhesion_extruder_nr",
"enabled": "extruders_enabled_count > 1 and resolveOrValue('adhesion_type') == 'raft'",
"settable_per_mesh": false,
"settable_per_extruder": false
},
"raft_interface_extruder_nr":
{
"label": "Raft Middle Extruder",
"description": "The extruder train to use for printing the middle layer of the raft. This is used in multi-extrusion.",
"type": "extruder",
"default_value": "0",
"value": "adhesion_extruder_nr",
"enabled": "extruders_enabled_count > 1 and resolveOrValue('adhesion_type') == 'raft'",
"settable_per_mesh": false,
"settable_per_extruder": false
},
"raft_surface_extruder_nr":
{
"label": "Raft Top Extruder",
"description": "The extruder train to use for printing the top layer(s) of the raft. This is used in multi-extrusion.",
"type": "extruder",
"default_value": "0",
"value": "adhesion_extruder_nr",
"enabled": "extruders_enabled_count > 1 and resolveOrValue('adhesion_type') == 'raft' and raft_surface_layers > 0",
"settable_per_mesh": false,
"settable_per_extruder": false
}
}
}, },
"skirt_line_count": "skirt_line_count":
{ {
@ -5425,7 +5475,7 @@
"enabled": "resolveOrValue('adhesion_type') == 'skirt'", "enabled": "resolveOrValue('adhesion_type') == 'skirt'",
"settable_per_mesh": false, "settable_per_mesh": false,
"settable_per_extruder": true, "settable_per_extruder": true,
"limit_to_extruder": "adhesion_extruder_nr" "limit_to_extruder": "skirt_brim_extruder_nr"
}, },
"skirt_gap": "skirt_gap":
{ {
@ -5439,7 +5489,7 @@
"enabled": "resolveOrValue('adhesion_type') == 'skirt'", "enabled": "resolveOrValue('adhesion_type') == 'skirt'",
"settable_per_mesh": false, "settable_per_mesh": false,
"settable_per_extruder": true, "settable_per_extruder": true,
"limit_to_extruder": "adhesion_extruder_nr" "limit_to_extruder": "skirt_brim_extruder_nr"
}, },
"skirt_brim_minimal_length": "skirt_brim_minimal_length":
{ {
@ -5468,7 +5518,7 @@
"enabled": "resolveOrValue('adhesion_type') == 'brim' or resolveOrValue('prime_tower_brim_enable')", "enabled": "resolveOrValue('adhesion_type') == 'brim' or resolveOrValue('prime_tower_brim_enable')",
"settable_per_mesh": false, "settable_per_mesh": false,
"settable_per_extruder": true, "settable_per_extruder": true,
"limit_to_extruder": "adhesion_extruder_nr", "limit_to_extruder": "skirt_brim_extruder_nr",
"children": "children":
{ {
"brim_line_count": "brim_line_count":
@ -5484,7 +5534,7 @@
"enabled": "resolveOrValue('adhesion_type') == 'brim' or resolveOrValue('prime_tower_brim_enable')", "enabled": "resolveOrValue('adhesion_type') == 'brim' or resolveOrValue('prime_tower_brim_enable')",
"settable_per_mesh": false, "settable_per_mesh": false,
"settable_per_extruder": true, "settable_per_extruder": true,
"limit_to_extruder": "adhesion_extruder_nr" "limit_to_extruder": "skirt_brim_extruder_nr"
} }
} }
}, },
@ -5500,7 +5550,7 @@
"enabled": "resolveOrValue('adhesion_type') == 'brim'", "enabled": "resolveOrValue('adhesion_type') == 'brim'",
"settable_per_mesh": true, "settable_per_mesh": true,
"settable_per_extruder": true, "settable_per_extruder": true,
"limit_to_extruder": "adhesion_extruder_nr" "limit_to_extruder": "skirt_brim_extruder_nr"
}, },
"brim_replaces_support": "brim_replaces_support":
{ {
@ -5522,7 +5572,7 @@
"enabled": "resolveOrValue('adhesion_type') == 'brim'", "enabled": "resolveOrValue('adhesion_type') == 'brim'",
"settable_per_mesh": false, "settable_per_mesh": false,
"settable_per_extruder": true, "settable_per_extruder": true,
"limit_to_extruder": "adhesion_extruder_nr" "limit_to_extruder": "skirt_brim_extruder_nr"
}, },
"raft_margin": "raft_margin":
{ {
@ -5564,7 +5614,7 @@
"enabled": "resolveOrValue('adhesion_type') == 'raft'", "enabled": "resolveOrValue('adhesion_type') == 'raft'",
"settable_per_mesh": false, "settable_per_mesh": false,
"settable_per_extruder": true, "settable_per_extruder": true,
"limit_to_extruder": "adhesion_extruder_nr" "limit_to_extruder": "raft_surface_extruder_nr"
}, },
"layer_0_z_overlap": "layer_0_z_overlap":
{ {
@ -5579,7 +5629,7 @@
"enabled": "resolveOrValue('adhesion_type') == 'raft'", "enabled": "resolveOrValue('adhesion_type') == 'raft'",
"settable_per_mesh": false, "settable_per_mesh": false,
"settable_per_extruder": true, "settable_per_extruder": true,
"limit_to_extruder": "adhesion_extruder_nr" "limit_to_extruder": "raft_surface_extruder_nr"
}, },
"raft_surface_layers": "raft_surface_layers":
{ {
@ -5592,7 +5642,7 @@
"enabled": "resolveOrValue('adhesion_type') == 'raft'", "enabled": "resolveOrValue('adhesion_type') == 'raft'",
"settable_per_mesh": false, "settable_per_mesh": false,
"settable_per_extruder": true, "settable_per_extruder": true,
"limit_to_extruder": "adhesion_extruder_nr" "limit_to_extruder": "raft_interface_extruder_nr"
}, },
"raft_surface_thickness": "raft_surface_thickness":
{ {
@ -5608,7 +5658,7 @@
"enabled": "resolveOrValue('adhesion_type') == 'raft'", "enabled": "resolveOrValue('adhesion_type') == 'raft'",
"settable_per_mesh": false, "settable_per_mesh": false,
"settable_per_extruder": true, "settable_per_extruder": true,
"limit_to_extruder": "adhesion_extruder_nr" "limit_to_extruder": "raft_surface_extruder_nr"
}, },
"raft_surface_line_width": "raft_surface_line_width":
{ {
@ -5624,7 +5674,7 @@
"enabled": "resolveOrValue('adhesion_type') == 'raft'", "enabled": "resolveOrValue('adhesion_type') == 'raft'",
"settable_per_mesh": false, "settable_per_mesh": false,
"settable_per_extruder": true, "settable_per_extruder": true,
"limit_to_extruder": "adhesion_extruder_nr" "limit_to_extruder": "raft_surface_extruder_nr"
}, },
"raft_surface_line_spacing": "raft_surface_line_spacing":
{ {
@ -5640,7 +5690,7 @@
"value": "raft_surface_line_width", "value": "raft_surface_line_width",
"settable_per_mesh": false, "settable_per_mesh": false,
"settable_per_extruder": true, "settable_per_extruder": true,
"limit_to_extruder": "adhesion_extruder_nr" "limit_to_extruder": "raft_surface_extruder_nr"
}, },
"raft_interface_thickness": "raft_interface_thickness":
{ {
@ -5656,7 +5706,7 @@
"enabled": "resolveOrValue('adhesion_type') == 'raft'", "enabled": "resolveOrValue('adhesion_type') == 'raft'",
"settable_per_mesh": false, "settable_per_mesh": false,
"settable_per_extruder": true, "settable_per_extruder": true,
"limit_to_extruder": "adhesion_extruder_nr" "limit_to_extruder": "raft_interface_extruder_nr"
}, },
"raft_interface_line_width": "raft_interface_line_width":
{ {
@ -5672,7 +5722,7 @@
"enabled": "resolveOrValue('adhesion_type') == 'raft'", "enabled": "resolveOrValue('adhesion_type') == 'raft'",
"settable_per_mesh": false, "settable_per_mesh": false,
"settable_per_extruder": true, "settable_per_extruder": true,
"limit_to_extruder": "adhesion_extruder_nr" "limit_to_extruder": "raft_interface_extruder_nr"
}, },
"raft_interface_line_spacing": "raft_interface_line_spacing":
{ {
@ -5688,7 +5738,7 @@
"enabled": "resolveOrValue('adhesion_type') == 'raft'", "enabled": "resolveOrValue('adhesion_type') == 'raft'",
"settable_per_mesh": false, "settable_per_mesh": false,
"settable_per_extruder": true, "settable_per_extruder": true,
"limit_to_extruder": "adhesion_extruder_nr" "limit_to_extruder": "raft_interface_extruder_nr"
}, },
"raft_base_thickness": "raft_base_thickness":
{ {
@ -5704,7 +5754,7 @@
"enabled": "resolveOrValue('adhesion_type') == 'raft'", "enabled": "resolveOrValue('adhesion_type') == 'raft'",
"settable_per_mesh": false, "settable_per_mesh": false,
"settable_per_extruder": true, "settable_per_extruder": true,
"limit_to_extruder": "adhesion_extruder_nr" "limit_to_extruder": "raft_base_extruder_nr"
}, },
"raft_base_line_width": "raft_base_line_width":
{ {
@ -5720,7 +5770,7 @@
"enabled": "resolveOrValue('adhesion_type') == 'raft'", "enabled": "resolveOrValue('adhesion_type') == 'raft'",
"settable_per_mesh": false, "settable_per_mesh": false,
"settable_per_extruder": true, "settable_per_extruder": true,
"limit_to_extruder": "adhesion_extruder_nr" "limit_to_extruder": "raft_base_extruder_nr"
}, },
"raft_base_line_spacing": "raft_base_line_spacing":
{ {
@ -5736,7 +5786,7 @@
"enabled": "resolveOrValue('adhesion_type') == 'raft'", "enabled": "resolveOrValue('adhesion_type') == 'raft'",
"settable_per_mesh": false, "settable_per_mesh": false,
"settable_per_extruder": true, "settable_per_extruder": true,
"limit_to_extruder": "adhesion_extruder_nr" "limit_to_extruder": "raft_base_extruder_nr"
}, },
"raft_speed": "raft_speed":
{ {
@ -5769,7 +5819,7 @@
"value": "raft_speed", "value": "raft_speed",
"settable_per_mesh": false, "settable_per_mesh": false,
"settable_per_extruder": true, "settable_per_extruder": true,
"limit_to_extruder": "adhesion_extruder_nr" "limit_to_extruder": "raft_surface_extruder_nr"
}, },
"raft_interface_speed": "raft_interface_speed":
{ {
@ -5785,7 +5835,7 @@
"enabled": "resolveOrValue('adhesion_type') == 'raft'", "enabled": "resolveOrValue('adhesion_type') == 'raft'",
"settable_per_mesh": false, "settable_per_mesh": false,
"settable_per_extruder": true, "settable_per_extruder": true,
"limit_to_extruder": "adhesion_extruder_nr" "limit_to_extruder": "raft_interface_extruder_nr"
}, },
"raft_base_speed": "raft_base_speed":
{ {
@ -5801,7 +5851,7 @@
"value": "0.75 * raft_speed", "value": "0.75 * raft_speed",
"settable_per_mesh": false, "settable_per_mesh": false,
"settable_per_extruder": true, "settable_per_extruder": true,
"limit_to_extruder": "adhesion_extruder_nr" "limit_to_extruder": "raft_base_extruder_nr"
} }
} }
}, },
@ -5834,7 +5884,7 @@
"maximum_value_warning": "10000", "maximum_value_warning": "10000",
"enabled": "resolveOrValue('adhesion_type') == 'raft' and resolveOrValue('acceleration_enabled')", "enabled": "resolveOrValue('adhesion_type') == 'raft' and resolveOrValue('acceleration_enabled')",
"settable_per_mesh": false, "settable_per_mesh": false,
"limit_to_extruder": "adhesion_extruder_nr" "limit_to_extruder": "raft_surface_extruder_nr"
}, },
"raft_interface_acceleration": "raft_interface_acceleration":
{ {
@ -5849,7 +5899,7 @@
"maximum_value_warning": "10000", "maximum_value_warning": "10000",
"enabled": "resolveOrValue('adhesion_type') == 'raft' and resolveOrValue('acceleration_enabled')", "enabled": "resolveOrValue('adhesion_type') == 'raft' and resolveOrValue('acceleration_enabled')",
"settable_per_mesh": false, "settable_per_mesh": false,
"limit_to_extruder": "adhesion_extruder_nr" "limit_to_extruder": "raft_interface_extruder_nr"
}, },
"raft_base_acceleration": "raft_base_acceleration":
{ {
@ -5864,7 +5914,7 @@
"maximum_value_warning": "10000", "maximum_value_warning": "10000",
"enabled": "resolveOrValue('adhesion_type') == 'raft' and resolveOrValue('acceleration_enabled')", "enabled": "resolveOrValue('adhesion_type') == 'raft' and resolveOrValue('acceleration_enabled')",
"settable_per_mesh": false, "settable_per_mesh": false,
"limit_to_extruder": "adhesion_extruder_nr" "limit_to_extruder": "raft_base_extruder_nr"
} }
} }
}, },
@ -5897,7 +5947,7 @@
"maximum_value_warning": "100", "maximum_value_warning": "100",
"enabled": "resolveOrValue('adhesion_type') == 'raft' and resolveOrValue('jerk_enabled')", "enabled": "resolveOrValue('adhesion_type') == 'raft' and resolveOrValue('jerk_enabled')",
"settable_per_mesh": false, "settable_per_mesh": false,
"limit_to_extruder": "adhesion_extruder_nr" "limit_to_extruder": "raft_surface_extruder_nr"
}, },
"raft_interface_jerk": "raft_interface_jerk":
{ {
@ -5912,7 +5962,7 @@
"maximum_value_warning": "50", "maximum_value_warning": "50",
"enabled": "resolveOrValue('adhesion_type') == 'raft' and resolveOrValue('jerk_enabled')", "enabled": "resolveOrValue('adhesion_type') == 'raft' and resolveOrValue('jerk_enabled')",
"settable_per_mesh": false, "settable_per_mesh": false,
"limit_to_extruder": "adhesion_extruder_nr" "limit_to_extruder": "raft_interface_extruder_nr"
}, },
"raft_base_jerk": "raft_base_jerk":
{ {
@ -5927,7 +5977,7 @@
"maximum_value_warning": "50", "maximum_value_warning": "50",
"enabled": "resolveOrValue('adhesion_type') == 'raft' and resolveOrValue('jerk_enabled')", "enabled": "resolveOrValue('adhesion_type') == 'raft' and resolveOrValue('jerk_enabled')",
"settable_per_mesh": false, "settable_per_mesh": false,
"limit_to_extruder": "adhesion_extruder_nr" "limit_to_extruder": "raft_base_extruder_nr"
} }
} }
}, },
@ -5959,7 +6009,7 @@
"enabled": "resolveOrValue('adhesion_type') == 'raft'", "enabled": "resolveOrValue('adhesion_type') == 'raft'",
"settable_per_mesh": false, "settable_per_mesh": false,
"settable_per_extruder": true, "settable_per_extruder": true,
"limit_to_extruder": "adhesion_extruder_nr" "limit_to_extruder": "raft_surface_extruder_nr"
}, },
"raft_interface_fan_speed": "raft_interface_fan_speed":
{ {
@ -5974,7 +6024,7 @@
"enabled": "resolveOrValue('adhesion_type') == 'raft'", "enabled": "resolveOrValue('adhesion_type') == 'raft'",
"settable_per_mesh": false, "settable_per_mesh": false,
"settable_per_extruder": true, "settable_per_extruder": true,
"limit_to_extruder": "adhesion_extruder_nr" "limit_to_extruder": "raft_interface_extruder_nr"
}, },
"raft_base_fan_speed": "raft_base_fan_speed":
{ {
@ -5989,7 +6039,7 @@
"enabled": "resolveOrValue('adhesion_type') == 'raft'", "enabled": "resolveOrValue('adhesion_type') == 'raft'",
"settable_per_mesh": false, "settable_per_mesh": false,
"settable_per_extruder": true, "settable_per_extruder": true,
"limit_to_extruder": "adhesion_extruder_nr" "limit_to_extruder": "raft_base_extruder_nr"
} }
} }
} }
@ -6051,7 +6101,7 @@
"unit": "mm", "unit": "mm",
"enabled": "resolveOrValue('prime_tower_enable')", "enabled": "resolveOrValue('prime_tower_enable')",
"default_value": 200, "default_value": 200,
"value": "machine_width - max(extruderValue(adhesion_extruder_nr, 'brim_width') * extruderValue(adhesion_extruder_nr, 'initial_layer_line_width_factor') / 100 if adhesion_type == 'brim' or (prime_tower_brim_enable and adhesion_type != 'raft') else (extruderValue(adhesion_extruder_nr, 'raft_margin') if adhesion_type == 'raft' else (extruderValue(adhesion_extruder_nr, 'skirt_gap') if adhesion_type == 'skirt' else 0)), max(extruderValues('travel_avoid_distance'))) - max(extruderValues('support_offset')) - sum(extruderValues('skirt_brim_line_width')) * extruderValue(adhesion_extruder_nr, 'initial_layer_line_width_factor') / 100 - (resolveOrValue('draft_shield_dist') if resolveOrValue('draft_shield_enabled') else 0) - max(map(abs, extruderValues('machine_nozzle_offset_x'))) - 1", "value": "machine_width - max(extruderValue(skirt_brim_extruder_nr, 'brim_width') * extruderValue(skirt_brim_extruder_nr, 'initial_layer_line_width_factor') / 100 if adhesion_type == 'brim' or (prime_tower_brim_enable and adhesion_type != 'raft') else (extruderValue(adhesion_extruder_nr, 'raft_margin') if adhesion_type == 'raft' else (extruderValue(skirt_brim_extruder_nr, 'skirt_gap') if adhesion_type == 'skirt' else 0)), max(extruderValues('travel_avoid_distance'))) - max(extruderValues('support_offset')) - sum(extruderValues('skirt_brim_line_width')) * extruderValue(skirt_brim_extruder_nr, 'initial_layer_line_width_factor') / 100 - (resolveOrValue('draft_shield_dist') if resolveOrValue('draft_shield_enabled') else 0) - max(map(abs, extruderValues('machine_nozzle_offset_x'))) - 1",
"maximum_value": "machine_width / 2 if machine_center_is_zero else machine_width", "maximum_value": "machine_width / 2 if machine_center_is_zero else machine_width",
"minimum_value": "resolveOrValue('prime_tower_size') - machine_width / 2 if machine_center_is_zero else resolveOrValue('prime_tower_size')", "minimum_value": "resolveOrValue('prime_tower_size') - machine_width / 2 if machine_center_is_zero else resolveOrValue('prime_tower_size')",
"settable_per_mesh": false, "settable_per_mesh": false,
@ -6065,7 +6115,7 @@
"unit": "mm", "unit": "mm",
"enabled": "resolveOrValue('prime_tower_enable')", "enabled": "resolveOrValue('prime_tower_enable')",
"default_value": 200, "default_value": 200,
"value": "machine_depth - prime_tower_size - max(extruderValue(adhesion_extruder_nr, 'brim_width') * extruderValue(adhesion_extruder_nr, 'initial_layer_line_width_factor') / 100 if adhesion_type == 'brim' or (prime_tower_brim_enable and adhesion_type != 'raft') else (extruderValue(adhesion_extruder_nr, 'raft_margin') if adhesion_type == 'raft' else (extruderValue(adhesion_extruder_nr, 'skirt_gap') if adhesion_type == 'skirt' else 0)), max(extruderValues('travel_avoid_distance'))) - max(extruderValues('support_offset')) - sum(extruderValues('skirt_brim_line_width')) * extruderValue(adhesion_extruder_nr, 'initial_layer_line_width_factor') / 100 - (resolveOrValue('draft_shield_dist') if resolveOrValue('draft_shield_enabled') else 0) - max(map(abs, extruderValues('machine_nozzle_offset_y'))) - 3", "value": "machine_depth - prime_tower_size - max(extruderValue(skirt_brim_extruder_nr, 'brim_width') * extruderValue(skirt_brim_extruder_nr, 'initial_layer_line_width_factor') / 100 if adhesion_type == 'brim' or (prime_tower_brim_enable and adhesion_type != 'raft') else (extruderValue(adhesion_extruder_nr, 'raft_margin') if adhesion_type == 'raft' else (extruderValue(skirt_brim_extruder_nr, 'skirt_gap') if adhesion_type == 'skirt' else 0)), max(extruderValues('travel_avoid_distance'))) - max(extruderValues('support_offset')) - sum(extruderValues('skirt_brim_line_width')) * extruderValue(skirt_brim_extruder_nr, 'initial_layer_line_width_factor') / 100 - (resolveOrValue('draft_shield_dist') if resolveOrValue('draft_shield_enabled') else 0) - max(map(abs, extruderValues('machine_nozzle_offset_y'))) - 3",
"maximum_value": "machine_depth / 2 - resolveOrValue('prime_tower_size') if machine_center_is_zero else machine_depth - resolveOrValue('prime_tower_size')", "maximum_value": "machine_depth / 2 - resolveOrValue('prime_tower_size') if machine_center_is_zero else machine_depth - resolveOrValue('prime_tower_size')",
"minimum_value": "machine_depth / -2 if machine_center_is_zero else 0", "minimum_value": "machine_depth / -2 if machine_center_is_zero else 0",
"settable_per_mesh": false, "settable_per_mesh": false,

View File

@ -148,8 +148,8 @@ Button
// Using parent.width is fine in fixedWidthMode. // Using parent.width is fine in fixedWidthMode.
target: buttonText target: buttonText
property: "width" property: "width"
value: button.fixedWidthMode ? button.width - button.leftPadding - button.rightPadding value: button.fixedWidthMode ? (button.width - button.leftPadding - button.rightPadding)
: ((maximumWidth != 0 && button.contentWidth > maximumWidth) ? maximumWidth : undefined) : ((button.maximumWidth != 0 && button.implicitContentWidth > button.maximumWidth) ? (button.maximumWidth - (button.width - button.implicitContentWidth) * 2) : undefined)
} }
} }

View File

@ -17,6 +17,8 @@ UM.PreferencesPage
title: catalog.i18nc("@title:tab", "General") title: catalog.i18nc("@title:tab", "General")
id: generalPreferencesPage id: generalPreferencesPage
width: parent.width
function setDefaultLanguage(languageCode) function setDefaultLanguage(languageCode)
{ {
//loops through the languageList and sets the language using the languageCode //loops through the languageList and sets the language using the languageCode
@ -128,14 +130,14 @@ UM.PreferencesPage
ScrollView ScrollView
{ {
id: preferencesScrollView
width: parent.width width: parent.width
height: parent.height height: parent.height
Column Column
{ {
//: Language selection label
UM.I18nCatalog{id: catalog; name: "cura"} UM.I18nCatalog{id: catalog; name: "cura"}
width: preferencesScrollView.viewport.width
Label Label
{ {
@ -212,7 +214,7 @@ UM.PreferencesPage
Label Label
{ {
id: currencyLabel id: currencyLabel
text: catalog.i18nc("@label","Currency:") text: catalog.i18nc("@label", "Currency:")
} }
TextField TextField

View File

@ -289,6 +289,7 @@ support_mesh_drop_down
prime_blob_enable prime_blob_enable
adhesion_type adhesion_type
adhesion_extruder_nr adhesion_extruder_nr
raft_surface_extruder_nr
skirt_line_count skirt_line_count
skirt_gap skirt_gap
skirt_brim_minimal_length skirt_brim_minimal_length

View File

@ -96,7 +96,12 @@ class TestCalculateBedAdhesionSize:
self.createAndSetGlobalStack(build_volume) self.createAndSetGlobalStack(build_volume)
patched_dictionary = self.setting_property_dict.copy() patched_dictionary = self.setting_property_dict.copy()
patched_dictionary.update(setting_dict) patched_dictionary.update(setting_dict)
patched_dictionary.update({"adhesion_extruder_nr": {"value": 0}}) patched_dictionary.update({
"skirt_brim_extruder_nr": {"value": 0},
"raft_base_extruder_nr": {"value": 0},
"raft_interface_extruder_nr": {"value": 0},
"raft_surface_extruder_nr": {"value": 0}
})
with patch.dict(self.setting_property_dict, patched_dictionary): with patch.dict(self.setting_property_dict, patched_dictionary):
assert build_volume._calculateBedAdhesionSize([]) == result assert build_volume._calculateBedAdhesionSize([]) == result