diff --git a/cura/BuildVolume.py b/cura/BuildVolume.py index e65756f181..cf75d75d5e 100755 --- a/cura/BuildVolume.py +++ b/cura/BuildVolume.py @@ -904,6 +904,7 @@ class BuildVolume(SceneNode): if not self._global_container_stack: return 0 container_stack = self._global_container_stack + used_extruders = ExtruderManager.getInstance().getUsedExtruderStacks() # If we are printing one at a time, we need to add the bed adhesion size to the disallowed areas of the objects if container_stack.getProperty("print_sequence", "value") == "one_at_a_time": @@ -914,24 +915,18 @@ class BuildVolume(SceneNode): skirt_distance = self._getSettingFromAdhesionExtruder("skirt_gap") skirt_line_count = self._getSettingFromAdhesionExtruder("skirt_line_count") bed_adhesion_size = skirt_distance + (skirt_line_count * self._getSettingFromAdhesionExtruder("skirt_brim_line_width")) * self._getSettingFromAdhesionExtruder("initial_layer_line_width_factor") / 100.0 - if len(ExtruderManager.getInstance().getUsedExtruderStacks()) > 1: - adhesion_extruder_nr = int(self._global_container_stack.getProperty("adhesion_extruder_nr", "value")) - extruder_values = ExtruderManager.getInstance().getAllExtruderValues("skirt_brim_line_width") - line_width_factors = ExtruderManager.getInstance().getAllExtruderValues("initial_layer_line_width_factor") - del extruder_values[adhesion_extruder_nr] # Remove the value of the adhesion extruder nr. - del line_width_factors[adhesion_extruder_nr] - for i in range(min(len(extruder_values), len(line_width_factors))): - bed_adhesion_size += extruder_values[i] * line_width_factors[i] / 100.0 + if len(used_extruders) > 1: + for extruder_stack in used_extruders: + bed_adhesion_size += extruder_stack.getProperty("skirt_brim_line_width", "value") * extruder_stack.getProperty("initial_layer_line_width_factor", "value") / 100.0 + #We don't create an additional line for the extruder we're printing the skirt with. + bed_adhesion_size -= self._getSettingFromAdhesionExtruder("skirt_brim_line_width", "value") * self._getSettingFromAdhesionExtruder("initial_layer_line_width_factor", "value") / 100.0 elif adhesion_type == "brim": bed_adhesion_size = self._getSettingFromAdhesionExtruder("brim_line_count") * self._getSettingFromAdhesionExtruder("skirt_brim_line_width") * self._getSettingFromAdhesionExtruder("initial_layer_line_width_factor") / 100.0 if self._global_container_stack.getProperty("machine_extruder_count", "value") > 1: - adhesion_extruder_nr = int(self._global_container_stack.getProperty("adhesion_extruder_nr", "value")) - extruder_values = ExtruderManager.getInstance().getAllExtruderValues("skirt_brim_line_width") - line_width_factors = ExtruderManager.getInstance().getAllExtruderValues("initial_layer_line_width_factor") - del extruder_values[adhesion_extruder_nr] # Remove the value of the adhesion extruder nr. - del line_width_factors[adhesion_extruder_nr] - for i in range(min(len(extruder_values), len(line_width_factors))): - bed_adhesion_size += extruder_values[i] * line_width_factors[i] / 100.0 + for extruder_stack in used_extruders: + bed_adhesion_size += extruder_stack.getProperty("skirt_brim_line_width", "value") * extruder_stack.getProperty("initial_layer_line_width_factor", "value") / 100.0 + #We don't create an additional line for the extruder we're printing the brim with. + bed_adhesion_size -= self._getSettingFromAdhesionExtruder("skirt_brim_line_width", "value") * self._getSettingFromAdhesionExtruder("initial_layer_line_width_factor", "value") / 100.0 elif adhesion_type == "raft": bed_adhesion_size = self._getSettingFromAdhesionExtruder("raft_margin") elif adhesion_type == "none": @@ -951,7 +946,6 @@ class BuildVolume(SceneNode): move_from_wall_radius = 0 # Moves that start from outer wall. move_from_wall_radius = max(move_from_wall_radius, max(self._getSettingFromAllExtruders("infill_wipe_dist"))) - used_extruders = ExtruderManager.getInstance().getUsedExtruderStacks() avoid_enabled_per_extruder = [stack.getProperty("travel_avoid_other_parts","value") for stack in used_extruders] travel_avoid_distance_per_extruder = [stack.getProperty("travel_avoid_distance", "value") for stack in used_extruders] for avoid_other_parts_enabled, avoid_distance in zip(avoid_enabled_per_extruder, travel_avoid_distance_per_extruder): #For each extruder (or just global).