From 2e3937dd566fb8c2f8a6053241cc230c4bd3d6f0 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Thu, 29 Sep 2016 12:31:22 +0200 Subject: [PATCH 1/5] Rename _getSettingProperty to _getSettingFromAdhesionExtruder This opens up the way for other methods to get settings from different extruders. Contributes to issue CURA-2407. --- cura/BuildVolume.py | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/cura/BuildVolume.py b/cura/BuildVolume.py index c0f2fc35c3..11e323b734 100644 --- a/cura/BuildVolume.py +++ b/cura/BuildVolume.py @@ -474,7 +474,7 @@ class BuildVolume(SceneNode): self._disallowed_areas = areas ## Private convenience function to get a setting from the adhesion extruder. - def _getSettingProperty(self, setting_key, property = "value"): + def _getSettingFromAdhesionExtruder(self, setting_key, property = "value"): multi_extrusion = self._global_container_stack.getProperty("machine_extruder_count", "value") > 1 if not multi_extrusion: @@ -505,9 +505,9 @@ class BuildVolume(SceneNode): adhesion_type = container_stack.getProperty("adhesion_type", "value") if adhesion_type == "skirt": - skirt_distance = self._getSettingProperty("skirt_gap", "value") - skirt_line_count = self._getSettingProperty("skirt_line_count", "value") - bed_adhesion_size = skirt_distance + (skirt_line_count * self._getSettingProperty("skirt_brim_line_width", "value")) + skirt_distance = self._getSettingFromAdhesionExtruder("skirt_gap", "value") + skirt_line_count = self._getSettingFromAdhesionExtruder("skirt_line_count", "value") + bed_adhesion_size = skirt_distance + (skirt_line_count * self._getSettingFromAdhesionExtruder("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 = ExtruderManager.getInstance().getAllExtruderValues("skirt_brim_line_width") @@ -515,7 +515,7 @@ class BuildVolume(SceneNode): for value in extruder_values: bed_adhesion_size += value elif adhesion_type == "brim": - bed_adhesion_size = self._getSettingProperty("brim_line_count", "value") * self._getSettingProperty("skirt_brim_line_width", "value") + bed_adhesion_size = self._getSettingFromAdhesionExtruder("brim_line_count", "value") * self._getSettingFromAdhesionExtruder("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 = ExtruderManager.getInstance().getAllExtruderValues("skirt_brim_line_width") @@ -523,7 +523,7 @@ class BuildVolume(SceneNode): for value in extruder_values: bed_adhesion_size += value elif adhesion_type == "raft": - bed_adhesion_size = self._getSettingProperty("raft_margin", "value") + bed_adhesion_size = self._getSettingFromAdhesionExtruder("raft_margin", "value") else: raise Exception("Unknown bed adhesion type. Did you forget to update the build volume calculations for your new bed adhesion type?") @@ -534,10 +534,10 @@ class BuildVolume(SceneNode): farthest_shield_distance = max(farthest_shield_distance, container_stack.getProperty("ooze_shield_dist", "value")) move_from_wall_radius = 0 # Moves that start from outer wall. - if self._getSettingProperty("infill_wipe_dist", "value"): - move_from_wall_radius = max(move_from_wall_radius, self._getSettingProperty("infill_wipe_dist", "value")) - if self._getSettingProperty("travel_avoid_distance", "value"): - move_from_wall_radius = max(move_from_wall_radius, self._getSettingProperty("travel_avoid_distance", "value")) + if self._getSettingFromAdhesionExtruder("infill_wipe_dist", "value"): + move_from_wall_radius = max(move_from_wall_radius, self._getSettingFromAdhesionExtruder("infill_wipe_dist", "value")) + if self._getSettingFromAdhesionExtruder("travel_avoid_distance", "value"): + move_from_wall_radius = max(move_from_wall_radius, self._getSettingFromAdhesionExtruder("travel_avoid_distance", "value")) #Now combine our different pieces of data to get the final border size. border_size = max(farthest_shield_distance, move_from_wall_radius, bed_adhesion_size) From d8fe9462ddbc505c4d95d8d5ea8c42948234a5a2 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Thu, 29 Sep 2016 12:33:51 +0200 Subject: [PATCH 2/5] Remove property-parameter from calls where it is 'value' That is the default value for the argument anyway. Makes the code more legible. Contributes to issue CURA-2407. --- cura/BuildVolume.py | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/cura/BuildVolume.py b/cura/BuildVolume.py index 11e323b734..fdd756f3e9 100644 --- a/cura/BuildVolume.py +++ b/cura/BuildVolume.py @@ -505,9 +505,9 @@ class BuildVolume(SceneNode): adhesion_type = container_stack.getProperty("adhesion_type", "value") if adhesion_type == "skirt": - skirt_distance = self._getSettingFromAdhesionExtruder("skirt_gap", "value") - skirt_line_count = self._getSettingFromAdhesionExtruder("skirt_line_count", "value") - bed_adhesion_size = skirt_distance + (skirt_line_count * self._getSettingFromAdhesionExtruder("skirt_brim_line_width", "value")) + 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")) 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") @@ -515,7 +515,7 @@ class BuildVolume(SceneNode): for value in extruder_values: bed_adhesion_size += value elif adhesion_type == "brim": - bed_adhesion_size = self._getSettingFromAdhesionExtruder("brim_line_count", "value") * self._getSettingFromAdhesionExtruder("skirt_brim_line_width", "value") + bed_adhesion_size = self._getSettingFromAdhesionExtruder("brim_line_count") * self._getSettingFromAdhesionExtruder("skirt_brim_line_width") 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") @@ -523,7 +523,7 @@ class BuildVolume(SceneNode): for value in extruder_values: bed_adhesion_size += value elif adhesion_type == "raft": - bed_adhesion_size = self._getSettingFromAdhesionExtruder("raft_margin", "value") + bed_adhesion_size = self._getSettingFromAdhesionExtruder("raft_margin") else: raise Exception("Unknown bed adhesion type. Did you forget to update the build volume calculations for your new bed adhesion type?") @@ -534,10 +534,10 @@ class BuildVolume(SceneNode): farthest_shield_distance = max(farthest_shield_distance, container_stack.getProperty("ooze_shield_dist", "value")) move_from_wall_radius = 0 # Moves that start from outer wall. - if self._getSettingFromAdhesionExtruder("infill_wipe_dist", "value"): - move_from_wall_radius = max(move_from_wall_radius, self._getSettingFromAdhesionExtruder("infill_wipe_dist", "value")) - if self._getSettingFromAdhesionExtruder("travel_avoid_distance", "value"): - move_from_wall_radius = max(move_from_wall_radius, self._getSettingFromAdhesionExtruder("travel_avoid_distance", "value")) + if self._getSettingFromAdhesionExtruder("infill_wipe_dist"): + move_from_wall_radius = max(move_from_wall_radius, self._getSettingFromAdhesionExtruder("infill_wipe_dist")) + if self._getSettingFromAdhesionExtruder("travel_avoid_distance"): + move_from_wall_radius = max(move_from_wall_radius, self._getSettingFromAdhesionExtruder("travel_avoid_distance")) #Now combine our different pieces of data to get the final border size. border_size = max(farthest_shield_distance, move_from_wall_radius, bed_adhesion_size) From 47b9fbc447133d0c85a5bb3d94e6fcade134bc39 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Thu, 29 Sep 2016 12:43:16 +0200 Subject: [PATCH 3/5] Add helper function for getting setting from support extruder This splits up the helper function we already had, to prevent code duplication. Contributes to issue CURA-2407. --- cura/BuildVolume.py | 30 ++++++++++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/cura/BuildVolume.py b/cura/BuildVolume.py index fdd756f3e9..e4f00deef1 100644 --- a/cura/BuildVolume.py +++ b/cura/BuildVolume.py @@ -473,14 +473,40 @@ class BuildVolume(SceneNode): self._has_errors = prime_tower_collision or prime_collision self._disallowed_areas = areas - ## Private convenience function to get a setting from the adhesion extruder. + ## Private convenience function to get a setting from the adhesion + # extruder. + # + # \param setting_key The key of the setting to get. + # \param property The property to get from the setting. + # \return The property of the specified setting in the adhesion extruder. def _getSettingFromAdhesionExtruder(self, setting_key, property = "value"): + return self._getSettingFromExtruder(setting_key, "adhesion_extruder_nr", property) + + ## Private convenience function to get a setting from the support infill + # extruder. + # + # \param setting_key The key of the setting to get. + # \param property The property to get from the setting. + # \return The property of the specified setting in the support infill + # extruder. + def _getSettingFromSupportInfillExtruder(self, setting_key, property = "value"): + return self._getSettingFromExtruder(setting_key, "support_infill_extruder_nr", property) + + ## Helper function to get a setting from an extruder specified in another + # setting. + # + # \param setting_key The key of the setting to get. + # \param extruder_setting_key The key of the setting that specifies from + # which extruder to get the setting, if there are multiple extruders. + # \param property The property to get from the setting. + # \return The property of the specified setting in the specified extruder. + def _getSettingFromExtruder(self, setting_key, extruder_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("adhesion_extruder_nr", "value") + extruder_index = self._global_container_stack.getProperty(extruder_setting_key, "value") if extruder_index == "-1": # If extruder index is -1 use global instead return self._global_container_stack.getProperty(setting_key, property) From 4ab7ea5c0f6025f190165ba98411859a2cb41b32 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Thu, 29 Sep 2016 12:46:53 +0200 Subject: [PATCH 4/5] Account for support offset in disallowed border It is similar to travel avoid distance. Contributes to issue CURA-2407. --- cura/BuildVolume.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/cura/BuildVolume.py b/cura/BuildVolume.py index e4f00deef1..7d4269ebe1 100644 --- a/cura/BuildVolume.py +++ b/cura/BuildVolume.py @@ -564,6 +564,8 @@ class BuildVolume(SceneNode): move_from_wall_radius = max(move_from_wall_radius, self._getSettingFromAdhesionExtruder("infill_wipe_dist")) if self._getSettingFromAdhesionExtruder("travel_avoid_distance"): move_from_wall_radius = max(move_from_wall_radius, self._getSettingFromAdhesionExtruder("travel_avoid_distance")) + if self._getSettingFromSupportInfillExtruder("support_offset"): + move_from_wall_radius = max(move_from_wall_radius, self._getSettingFromSupportInfillExtruder("support_offset")) #Now combine our different pieces of data to get the final border size. border_size = max(farthest_shield_distance, move_from_wall_radius, bed_adhesion_size) @@ -577,4 +579,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_distance"] + _distance_settings = ["infill_wipe_dist", "travel_avoid_distance", "support_offset"] From 7d57e90260780cc42978874034dc7b8aa3152626 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Thu, 29 Sep 2016 13:24:15 +0200 Subject: [PATCH 5/5] Remove debug statements Oops. Contributes to issue CURA-844. --- plugins/VersionUpgrade/VersionUpgrade21to22/Profile.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/plugins/VersionUpgrade/VersionUpgrade21to22/Profile.py b/plugins/VersionUpgrade/VersionUpgrade21to22/Profile.py index 8ff6b2a5eb..e87432663d 100644 --- a/plugins/VersionUpgrade/VersionUpgrade21to22/Profile.py +++ b/plugins/VersionUpgrade/VersionUpgrade21to22/Profile.py @@ -59,9 +59,7 @@ class Profile: # Parse the settings. self._settings = {} if parser.has_section("settings"): - print("---------------------- have section Settings") for key, value in parser["settings"].items(): - print("----------------------", key, "=", value) self._settings[key] = value # Parse the defaults and the disabled defaults.