From 15792b8f091d800194a1c6b512dcb663d5ea817f Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Thu, 22 Sep 2016 15:33:17 +0200 Subject: [PATCH 1/5] Code style: Spaces around binary operators Also the equal-sign in key-word arguments, though that goes against PEP8, but that's in our code style documentation. Contributes to issue CURA-2319. --- .../PerObjectSettingVisibilityHandler.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/PerObjectSettingsTool/PerObjectSettingVisibilityHandler.py b/plugins/PerObjectSettingsTool/PerObjectSettingVisibilityHandler.py index 1396a02b13..6810ab82aa 100644 --- a/plugins/PerObjectSettingsTool/PerObjectSettingVisibilityHandler.py +++ b/plugins/PerObjectSettingsTool/PerObjectSettingVisibilityHandler.py @@ -72,9 +72,9 @@ class PerObjectSettingVisibilityHandler(UM.Settings.Models.SettingVisibilityHand # Use the found stack number to get the right stack to copy the value from. if stack_nr in ExtruderManager.getInstance().extruderIds: - stack = UM.Settings.ContainerRegistry.getInstance().findContainerStacks(id=ExtruderManager.getInstance().extruderIds[stack_nr])[0] + stack = UM.Settings.ContainerRegistry.getInstance().findContainerStacks(id = ExtruderManager.getInstance().extruderIds[stack_nr])[0] - # Use the raw property to set the value (so the intheritance doesn't break) + # Use the raw property to set the value (so the inheritance doesn't break) if stack is not None: new_instance.setProperty("value", stack.getRawProperty(item, "value")) else: From 4141a878871a95964d219cb5ebb042ba2a8e241f Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Thu, 22 Sep 2016 15:42:04 +0200 Subject: [PATCH 2/5] BuildVolume now takes the extra line by extra extruders into account CURA-2407 --- cura/BuildVolume.py | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/cura/BuildVolume.py b/cura/BuildVolume.py index 93777233de..fb8b1ce5a8 100644 --- a/cura/BuildVolume.py +++ b/cura/BuildVolume.py @@ -446,14 +446,15 @@ class BuildVolume(SceneNode): self._has_errors = collision self._disallowed_areas = areas - ## Private convenience function to get a setting from the correct extruder (as defined by limit_to_extruder property). + ## Private convenience function to get a setting from the adhesion extruder. def _getSettingProperty(self, setting_key, property = "value"): multi_extrusion = self._global_container_stack.getProperty("machine_extruder_count", "value") > 1 if not multi_extrusion: return self._global_container_stack.getProperty(setting_key, property) - extruder_index = self._global_container_stack.getProperty(setting_key, "limit_to_extruder") + extruder_index = self._global_container_stack.getProperty("adhesion_extruder_nr", "value") + if extruder_index == "-1": # If extruder index is -1 use global instead return self._global_container_stack.getProperty(setting_key, property) @@ -461,6 +462,17 @@ class BuildVolume(SceneNode): stack = UM.Settings.ContainerRegistry.getInstance().findContainerStacks(id = extruder_stack_id)[0] return stack.getProperty(setting_key, property) + def _getAllExtruderValues(self, setting_key): + multi_extrusion = self._global_container_stack.getProperty("machine_extruder_count", "value") > 1 + if not multi_extrusion: + return [self._global_container_stack.getProperty(setting_key, "value")] + result = [] + for index in ExtruderManager.getInstance().extruderIds: + extruder_stack_id = ExtruderManager.getInstance().extruderIds[str(index)] + stack = UM.Settings.ContainerRegistry.getInstance().findContainerStacks(id=extruder_stack_id)[0] + result.append(stack.getProperty(setting_key, "value")) + return result + ## Convenience function to calculate the size of the bed adhesion in directions x, y. def _getBedAdhesionSize(self): if not self._global_container_stack: @@ -477,8 +489,21 @@ class BuildVolume(SceneNode): skirt_distance = self._getSettingProperty("skirt_gap", "value") skirt_line_count = self._getSettingProperty("skirt_line_count", "value") skirt_size = skirt_distance + (skirt_line_count * self._getSettingProperty("skirt_brim_line_width", "value")) + 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 = self._getAllExtruderValues("skirt_brim_line_width") + del extruder_values[adhesion_extruder_nr] # Remove the value of the adhesion extruder nr. + for value in extruder_values: + skirt_size += value elif adhesion_type == "brim": skirt_size = self._getSettingProperty("brim_line_count", "value") * self._getSettingProperty("skirt_brim_line_width", "value") + 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 = self._getAllExtruderValues("skirt_brim_line_width") + del extruder_values[adhesion_extruder_nr] # Remove the value of the adhesion extruder nr. + for value in extruder_values: + skirt_size += value + elif adhesion_type == "raft": skirt_size = self._getSettingProperty("raft_margin", "value") From e0109a1857f85d8f53dd6983772ab671d94d77bd Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Thu, 22 Sep 2016 16:00:18 +0200 Subject: [PATCH 3/5] Infill wipe distance and travel avoid distance are now also taken into account CURA-2407 --- cura/BuildVolume.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/cura/BuildVolume.py b/cura/BuildVolume.py index fb8b1ce5a8..a69e2a2ed0 100644 --- a/cura/BuildVolume.py +++ b/cura/BuildVolume.py @@ -328,7 +328,7 @@ class BuildVolume(SceneNode): self._build_volume_message.hide() rebuild_me = True - if setting_key in self._skirt_settings or setting_key in self._prime_settings or setting_key in self._tower_settings or setting_key == "print_sequence" or setting_key in self._ooze_shield_settings: + if setting_key in self._skirt_settings or setting_key in self._prime_settings or setting_key in self._tower_settings or setting_key == "print_sequence" or setting_key in self._ooze_shield_settings or setting_key in self._distance_settings: self._updateDisallowedAreas() rebuild_me = True @@ -495,6 +495,7 @@ class BuildVolume(SceneNode): del extruder_values[adhesion_extruder_nr] # Remove the value of the adhesion extruder nr. for value in extruder_values: skirt_size += value + elif adhesion_type == "brim": skirt_size = self._getSettingProperty("brim_line_count", "value") * self._getSettingProperty("skirt_brim_line_width", "value") if self._global_container_stack.getProperty("machine_extruder_count", "value") > 1: @@ -516,6 +517,12 @@ class BuildVolume(SceneNode): if container_stack.getProperty("xy_offset", "value"): skirt_size += container_stack.getProperty("xy_offset", "value") + if container_stack.getProperty("infill_wipe_dist", "value"): + skirt_size += container_stack.getProperty("infill_wipe_dist", "value") + + if container_stack.getProperty("travel_avoid_dist", "value"): + skirt_size += container_stack.getProperty("travel_avoid_dist", "value") + return skirt_size def _clamp(self, value, min_value, max_value): @@ -526,3 +533,4 @@ class BuildVolume(SceneNode): _prime_settings = ["extruder_prime_pos_x", "extruder_prime_pos_y", "extruder_prime_pos_z"] _tower_settings = ["prime_tower_enable", "prime_tower_size", "prime_tower_position_x", "prime_tower_position_y"] _ooze_shield_settings = ["ooze_shield_enabled", "ooze_shield_dist"] + _distance_settings = ["infill_wipe_dist", "travel_avoid_dist"] From 8bf8a483ec3ac30b1e63f64d0dd7aac4877a9d68 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Thu, 22 Sep 2016 16:07:38 +0200 Subject: [PATCH 4/5] Code style: Spaces around binary operators Contributes to issue CURA-2407. --- cura/BuildVolume.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cura/BuildVolume.py b/cura/BuildVolume.py index a69e2a2ed0..78f7174891 100644 --- a/cura/BuildVolume.py +++ b/cura/BuildVolume.py @@ -469,7 +469,7 @@ class BuildVolume(SceneNode): result = [] for index in ExtruderManager.getInstance().extruderIds: extruder_stack_id = ExtruderManager.getInstance().extruderIds[str(index)] - stack = UM.Settings.ContainerRegistry.getInstance().findContainerStacks(id=extruder_stack_id)[0] + stack = UM.Settings.ContainerRegistry.getInstance().findContainerStacks(id = extruder_stack_id)[0] result.append(stack.getProperty(setting_key, "value")) return result From 0b6c196659218b7ea47b32f349e885f75030cfc3 Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Thu, 22 Sep 2016 16:36:27 +0200 Subject: [PATCH 5/5] Moved getAllExtruderValues to extruder manager CURA-2407 --- cura/BuildVolume.py | 15 ++------------- cura/Settings/ExtruderManager.py | 13 +++++++++++++ 2 files changed, 15 insertions(+), 13 deletions(-) diff --git a/cura/BuildVolume.py b/cura/BuildVolume.py index a69e2a2ed0..8f42add742 100644 --- a/cura/BuildVolume.py +++ b/cura/BuildVolume.py @@ -462,17 +462,6 @@ class BuildVolume(SceneNode): stack = UM.Settings.ContainerRegistry.getInstance().findContainerStacks(id = extruder_stack_id)[0] return stack.getProperty(setting_key, property) - def _getAllExtruderValues(self, setting_key): - multi_extrusion = self._global_container_stack.getProperty("machine_extruder_count", "value") > 1 - if not multi_extrusion: - return [self._global_container_stack.getProperty(setting_key, "value")] - result = [] - for index in ExtruderManager.getInstance().extruderIds: - extruder_stack_id = ExtruderManager.getInstance().extruderIds[str(index)] - stack = UM.Settings.ContainerRegistry.getInstance().findContainerStacks(id=extruder_stack_id)[0] - result.append(stack.getProperty(setting_key, "value")) - return result - ## Convenience function to calculate the size of the bed adhesion in directions x, y. def _getBedAdhesionSize(self): if not self._global_container_stack: @@ -491,7 +480,7 @@ class BuildVolume(SceneNode): skirt_size = skirt_distance + (skirt_line_count * self._getSettingProperty("skirt_brim_line_width", "value")) 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 = self._getAllExtruderValues("skirt_brim_line_width") + extruder_values = ExtruderManager.getInstance().getAllExtruderValues("skirt_brim_line_width") del extruder_values[adhesion_extruder_nr] # Remove the value of the adhesion extruder nr. for value in extruder_values: skirt_size += value @@ -500,7 +489,7 @@ class BuildVolume(SceneNode): skirt_size = self._getSettingProperty("brim_line_count", "value") * self._getSettingProperty("skirt_brim_line_width", "value") 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 = self._getAllExtruderValues("skirt_brim_line_width") + extruder_values = ExtruderManager.getInstance().getAllExtruderValues("skirt_brim_line_width") del extruder_values[adhesion_extruder_nr] # Remove the value of the adhesion extruder nr. for value in extruder_values: skirt_size += value diff --git a/cura/Settings/ExtruderManager.py b/cura/Settings/ExtruderManager.py index 72fdebc99d..7c37ecc51d 100644 --- a/cura/Settings/ExtruderManager.py +++ b/cura/Settings/ExtruderManager.py @@ -265,6 +265,19 @@ class ExtruderManager(QObject): container_registry.addContainer(container_stack) + def getAllExtruderValues(self, setting_key): + global_container_stack = UM.Application.getInstance().getGlobalContainerStack() + multi_extrusion = global_container_stack.getProperty("machine_extruder_count", "value") > 1 + if not multi_extrusion: + return [global_container_stack.getProperty(setting_key, "value")] + + result = [] + for index in self.extruderIds: + extruder_stack_id = self.extruderIds[str(index)] + stack = UM.Settings.ContainerRegistry.getInstance().findContainerStacks(id=extruder_stack_id)[0] + result.append(stack.getProperty(setting_key, "value")) + return result + ## Removes the container stack and user profile for the extruders for a specific machine. # # \param machine_id The machine to remove the extruders for.