This commit is contained in:
fieldOfView 2016-09-22 16:52:41 +02:00
commit c3d8b6fb8c
3 changed files with 40 additions and 5 deletions

View file

@ -328,7 +328,7 @@ class BuildVolume(SceneNode):
self._build_volume_message.hide() self._build_volume_message.hide()
rebuild_me = True 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() self._updateDisallowedAreas()
rebuild_me = True rebuild_me = True
@ -446,14 +446,15 @@ class BuildVolume(SceneNode):
self._has_errors = collision self._has_errors = collision
self._disallowed_areas = areas 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"): def _getSettingProperty(self, setting_key, property = "value"):
multi_extrusion = self._global_container_stack.getProperty("machine_extruder_count", "value") > 1 multi_extrusion = self._global_container_stack.getProperty("machine_extruder_count", "value") > 1
if not multi_extrusion: if not multi_extrusion:
return self._global_container_stack.getProperty(setting_key, property) 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 if extruder_index == "-1": # If extruder index is -1 use global instead
return self._global_container_stack.getProperty(setting_key, property) return self._global_container_stack.getProperty(setting_key, property)
@ -477,8 +478,22 @@ class BuildVolume(SceneNode):
skirt_distance = self._getSettingProperty("skirt_gap", "value") skirt_distance = self._getSettingProperty("skirt_gap", "value")
skirt_line_count = self._getSettingProperty("skirt_line_count", "value") skirt_line_count = self._getSettingProperty("skirt_line_count", "value")
skirt_size = skirt_distance + (skirt_line_count * self._getSettingProperty("skirt_brim_line_width", "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 = 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
elif adhesion_type == "brim": elif adhesion_type == "brim":
skirt_size = self._getSettingProperty("brim_line_count", "value") * self._getSettingProperty("skirt_brim_line_width", "value") 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 = 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
elif adhesion_type == "raft": elif adhesion_type == "raft":
skirt_size = self._getSettingProperty("raft_margin", "value") skirt_size = self._getSettingProperty("raft_margin", "value")
@ -491,6 +506,12 @@ class BuildVolume(SceneNode):
if container_stack.getProperty("xy_offset", "value"): if container_stack.getProperty("xy_offset", "value"):
skirt_size += 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 return skirt_size
def _clamp(self, value, min_value, max_value): def _clamp(self, value, min_value, max_value):
@ -501,3 +522,4 @@ class BuildVolume(SceneNode):
_prime_settings = ["extruder_prime_pos_x", "extruder_prime_pos_y", "extruder_prime_pos_z"] _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"] _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"] _ooze_shield_settings = ["ooze_shield_enabled", "ooze_shield_dist"]
_distance_settings = ["infill_wipe_dist", "travel_avoid_dist"]

View file

@ -265,6 +265,19 @@ class ExtruderManager(QObject):
container_registry.addContainer(container_stack) 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. ## Removes the container stack and user profile for the extruders for a specific machine.
# #
# \param machine_id The machine to remove the extruders for. # \param machine_id The machine to remove the extruders for.

View file

@ -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. # Use the found stack number to get the right stack to copy the value from.
if stack_nr in ExtruderManager.getInstance().extruderIds: 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: if stack is not None:
new_instance.setProperty("value", stack.getRawProperty(item, "value")) new_instance.setProperty("value", stack.getRawProperty(item, "value"))
else: else: