Split support_interface_enable into roof and bottom

You can activate the roof and bottom separately now. If you want, of course. The original interface setting sets both of them unless overwritten.

Contributes to issue CURA-3491.
This commit is contained in:
Ghostkeeper 2017-03-20 10:47:37 +01:00
parent 92d34a8d72
commit 2f1d957f99
No known key found for this signature in database
GPG key ID: C5F96EE2BC0F7E75
3 changed files with 58 additions and 29 deletions

View file

@ -899,4 +899,4 @@ class BuildVolume(SceneNode):
_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_distance", "support_offset", "support_enable", "travel_avoid_other_parts"] _distance_settings = ["infill_wipe_dist", "travel_avoid_distance", "support_offset", "support_enable", "travel_avoid_other_parts"]
_extruder_settings = ["support_enable", "support_interface_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", "adhesion_extruder_nr", "adhesion_type"] #Settings that can affect which extruders are used.

View file

@ -346,7 +346,8 @@ class ExtruderManager(QObject):
#Get the extruders of all meshes in the scene. #Get the extruders of all meshes in the scene.
support_enabled = False support_enabled = False
support_interface_enabled = False support_bottom_enabled = False
support_roof_enabled = False
scene_root = Application.getInstance().getController().getScene().getRoot() scene_root = Application.getInstance().getController().getScene().getRoot()
meshes = [node for node in DepthFirstIterator(scene_root) if type(node) is SceneNode and node.isSelectable()] #Only use the nodes that will be printed. meshes = [node for node in DepthFirstIterator(scene_root) if type(node) is SceneNode and node.isSelectable()] #Only use the nodes that will be printed.
for mesh in meshes: for mesh in meshes:
@ -359,19 +360,22 @@ class ExtruderManager(QObject):
per_mesh_stack = mesh.callDecoration("getStack") per_mesh_stack = mesh.callDecoration("getStack")
if per_mesh_stack: if per_mesh_stack:
support_enabled |= per_mesh_stack.getProperty("support_enable", "value") support_enabled |= per_mesh_stack.getProperty("support_enable", "value")
support_interface_enabled |= per_mesh_stack.getProperty("support_interface_enable", "value") support_bottom_enabled |= per_mesh_stack.getProperty("support_bottom_enable", "value")
support_roof_enabled |= per_mesh_stack.getProperty("support_roof_enable", "value")
else: #Take the setting from the build extruder stack. else: #Take the setting from the build extruder stack.
extruder_stack = container_registry.findContainerStacks(id = extruder_stack_id)[0] extruder_stack = container_registry.findContainerStacks(id = extruder_stack_id)[0]
support_enabled |= extruder_stack.getProperty("support_enable", "value") support_enabled |= extruder_stack.getProperty("support_enable", "value")
support_interface_enabled |= extruder_stack.getProperty("support_enable", "value") support_bottom_enabled |= extruder_stack.getProperty("support_bottom_enable", "value")
support_roof_enabled |= extruder_stack.getProperty("support_roof_enable", "value")
#The support extruders. #The support extruders.
if support_enabled: if support_enabled:
used_extruder_stack_ids.add(self.extruderIds[str(global_stack.getProperty("support_infill_extruder_nr", "value"))]) used_extruder_stack_ids.add(self.extruderIds[str(global_stack.getProperty("support_infill_extruder_nr", "value"))])
used_extruder_stack_ids.add(self.extruderIds[str(global_stack.getProperty("support_extruder_nr_layer_0", "value"))]) used_extruder_stack_ids.add(self.extruderIds[str(global_stack.getProperty("support_extruder_nr_layer_0", "value"))])
if support_interface_enabled: if support_bottom_enabled:
used_extruder_stack_ids.add(self.extruderIds[str(global_stack.getProperty("support_roof_extruder_nr", "value"))])
used_extruder_stack_ids.add(self.extruderIds[str(global_stack.getProperty("support_bottom_extruder_nr", "value"))]) used_extruder_stack_ids.add(self.extruderIds[str(global_stack.getProperty("support_bottom_extruder_nr", "value"))])
if support_roof_enabled:
used_extruder_stack_ids.add(self.extruderIds[str(global_stack.getProperty("support_roof_extruder_nr", "value"))])
#The platform adhesion extruder. Not used if using none. #The platform adhesion extruder. Not used if using none.
if global_stack.getProperty("adhesion_type", "value") != "none": if global_stack.getProperty("adhesion_type", "value") != "none":

View file

@ -770,7 +770,7 @@
"minimum_value_warning": "0.4 * machine_nozzle_size", "minimum_value_warning": "0.4 * machine_nozzle_size",
"maximum_value_warning": "2 * machine_nozzle_size", "maximum_value_warning": "2 * machine_nozzle_size",
"type": "float", "type": "float",
"enabled": "support_enable and support_interface_enable", "enabled": "support_enable and support_bottom_enable",
"limit_to_extruder": "support_bottom_extruder_nr", "limit_to_extruder": "support_bottom_extruder_nr",
"value": "support_interface_line_width", "value": "support_interface_line_width",
"settable_per_mesh": false, "settable_per_mesh": false,
@ -786,7 +786,7 @@
"minimum_value_warning": "0.4 * machine_nozzle_size", "minimum_value_warning": "0.4 * machine_nozzle_size",
"maximum_value_warning": "2 * machine_nozzle_size", "maximum_value_warning": "2 * machine_nozzle_size",
"type": "float", "type": "float",
"enabled": "support_enable and support_interface_enable", "enabled": "support_enable and support_roof_enable",
"limit_to_extruder": "support_roof_extruder_nr", "limit_to_extruder": "support_roof_extruder_nr",
"value": "support_interface_line_width", "value": "support_interface_line_width",
"settable_per_mesh": false, "settable_per_mesh": false,
@ -1923,7 +1923,7 @@
"minimum_value": "0.1", "minimum_value": "0.1",
"maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2)", "maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2)",
"maximum_value_warning": "150", "maximum_value_warning": "150",
"enabled": "extruderValue(support_bottom_extruder_nr, 'support_interface_enable') and support_enable", "enabled": "extruderValue(support_bottom_extruder_nr, 'support_bottom_enable') and support_enable",
"limit_to_extruder": "support_bottom_extruder_nr", "limit_to_extruder": "support_bottom_extruder_nr",
"value": "speed_support_interface", "value": "speed_support_interface",
"settable_per_mesh": false, "settable_per_mesh": false,
@ -1939,7 +1939,7 @@
"minimum_value": "0.1", "minimum_value": "0.1",
"maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2)", "maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2)",
"maximum_value_warning": "150", "maximum_value_warning": "150",
"enabled": "extruderValue(support_roof_extruder_nr, 'support_interface_enable') and support_enable", "enabled": "extruderValue(support_roof_extruder_nr, 'support_roof_enable') and support_enable",
"limit_to_extruder": "support_roof_extruder_nr", "limit_to_extruder": "support_roof_extruder_nr",
"value": "speed_support_interface", "value": "speed_support_interface",
"settable_per_mesh": false, "settable_per_mesh": false,
@ -2245,7 +2245,7 @@
"minimum_value": "0.1", "minimum_value": "0.1",
"minimum_value_warning": "100", "minimum_value_warning": "100",
"maximum_value_warning": "10000", "maximum_value_warning": "10000",
"enabled": "resolveOrValue('acceleration_enabled') and extruderValue(support_bottom_extruder_nr, 'support_interface_enable') and support_enable", "enabled": "resolveOrValue('acceleration_enabled') and extruderValue(support_bottom_extruder_nr, 'support_bottom_enable') and support_enable",
"limit_to_extruder": "support_bottom_extruder_nr", "limit_to_extruder": "support_bottom_extruder_nr",
"settable_per_mesh": false, "settable_per_mesh": false,
"settable_per_extruder": true "settable_per_extruder": true
@ -2261,7 +2261,7 @@
"minimum_value": "0.1", "minimum_value": "0.1",
"minimum_value_warning": "100", "minimum_value_warning": "100",
"maximum_value_warning": "10000", "maximum_value_warning": "10000",
"enabled": "resolveOrValue('acceleration_enabled') and extruderValue(support_roof_extruder_nr, 'support_interface_enable') and support_enable", "enabled": "resolveOrValue('acceleration_enabled') and extruderValue(support_roof_extruder_nr, 'support_roof_enable') and support_enable",
"limit_to_extruder": "support_roof_extruder_nr", "limit_to_extruder": "support_roof_extruder_nr",
"settable_per_mesh": false, "settable_per_mesh": false,
"settable_per_extruder": true "settable_per_extruder": true
@ -2519,7 +2519,7 @@
"minimum_value": "0.1", "minimum_value": "0.1",
"minimum_value_warning": "5", "minimum_value_warning": "5",
"maximum_value_warning": "50", "maximum_value_warning": "50",
"enabled": "resolveOrValue('jerk_enabled') and extruderValue(support_bottom_extruder_nr, 'support_interface_enable') and support_enable", "enabled": "resolveOrValue('jerk_enabled') and extruderValue(support_bottom_extruder_nr, 'support_bottom_enable') and support_enable",
"limit_to_extruder": "support_bottom_extruder_nr", "limit_to_extruder": "support_bottom_extruder_nr",
"settable_per_mesh": false, "settable_per_mesh": false,
"settable_per_extruder": true "settable_per_extruder": true
@ -2535,7 +2535,7 @@
"minimum_value": "0.1", "minimum_value": "0.1",
"minimum_value_warning": "5", "minimum_value_warning": "5",
"maximum_value_warning": "50", "maximum_value_warning": "50",
"enabled": "resolveOrValue('jerk_enabled') and extruderValue(support_roof_extruder_nr, 'support_interface_enable') and support_enable", "enabled": "resolveOrValue('jerk_enabled') and extruderValue(support_roof_extruder_nr, 'support_roof_enable') and support_enable",
"limit_to_extruder": "support_roof_extruder_nr", "limit_to_extruder": "support_roof_extruder_nr",
"settable_per_mesh": false, "settable_per_mesh": false,
"settable_per_extruder": true "settable_per_extruder": true
@ -3035,7 +3035,7 @@
"maximum_value": "90", "maximum_value": "90",
"maximum_value_warning": "80", "maximum_value_warning": "80",
"default_value": 50, "default_value": 50,
"limit_to_extruder": "support_roof_extruder_nr if support_interface_enable else support_infill_extruder_nr", "limit_to_extruder": "support_roof_extruder_nr if support_roof_enable else support_infill_extruder_nr",
"enabled": "support_enable", "enabled": "support_enable",
"settable_per_mesh": true "settable_per_mesh": true
}, },
@ -3127,7 +3127,7 @@
"type": "float", "type": "float",
"enabled": "support_enable", "enabled": "support_enable",
"value": "extruderValue(support_extruder_nr, 'support_z_distance')", "value": "extruderValue(support_extruder_nr, 'support_z_distance')",
"limit_to_extruder": "support_roof_extruder_nr if support_interface_enable else support_infill_extruder_nr", "limit_to_extruder": "support_roof_extruder_nr if support_roof_enable else support_infill_extruder_nr",
"settable_per_mesh": true "settable_per_mesh": true
}, },
"support_bottom_distance": "support_bottom_distance":
@ -3139,7 +3139,7 @@
"maximum_value_warning": "machine_nozzle_size", "maximum_value_warning": "machine_nozzle_size",
"default_value": 0.1, "default_value": 0.1,
"value": "extruderValue(support_extruder_nr, 'support_z_distance') if resolveOrValue('support_type') == 'everywhere' else 0", "value": "extruderValue(support_extruder_nr, 'support_z_distance') if resolveOrValue('support_type') == 'everywhere' else 0",
"limit_to_extruder": "support_bottom_extruder_nr if support_interface_enable else support_infill_extruder_nr", "limit_to_extruder": "support_bottom_extruder_nr if support_bottom_enable else support_infill_extruder_nr",
"type": "float", "type": "float",
"enabled": "support_enable and resolveOrValue('support_type') == 'everywhere'", "enabled": "support_enable and resolveOrValue('support_type') == 'everywhere'",
"settable_per_mesh": true "settable_per_mesh": true
@ -3195,7 +3195,7 @@
"unit": "mm", "unit": "mm",
"type": "float", "type": "float",
"default_value": 0.3, "default_value": 0.3,
"limit_to_extruder": "support_bottom_extruder_nr if support_interface_enable else support_infill_extruder_nr", "limit_to_extruder": "support_bottom_extruder_nr if support_bottom_enable else support_infill_extruder_nr",
"minimum_value": "0", "minimum_value": "0",
"maximum_value_warning": "1.0", "maximum_value_warning": "1.0",
"enabled": "support_enable", "enabled": "support_enable",
@ -3235,7 +3235,32 @@
"default_value": false, "default_value": false,
"limit_to_extruder": "support_interface_extruder_nr", "limit_to_extruder": "support_interface_extruder_nr",
"enabled": "support_enable", "enabled": "support_enable",
"settable_per_mesh": true "settable_per_mesh": true,
"children":
{
"support_bottom_enable":
{
"label": "Enable Support Bottom",
"description": "Generate a dense flooring below the support where it rests on the model. This will create a skin between the model and support.",
"type": "bool",
"default_value": false,
"value": "support_interface_enable",
"limit_to_extruder": "support_bottom_extruder_nr",
"enabled": "support_interface_enable",
"settable_per_mesh": true
},
"support_roof_enable":
{
"label": "Enable Support Roof",
"description": "Generate a dense roof above the support where the model rests on the support. This will create a skin between the model and support.",
"type": "bool",
"default_value": false,
"value": "support_interface_enable",
"limit_to_extruder": "support_roof_extruder_nr",
"enabled": "support_interface_enable",
"settable_per_mesh": true
}
}
}, },
"support_interface_height": "support_interface_height":
{ {
@ -3264,7 +3289,7 @@
"maximum_value_warning": "10", "maximum_value_warning": "10",
"value": "extruderValue(support_roof_extruder_nr, 'support_interface_height')", "value": "extruderValue(support_roof_extruder_nr, 'support_interface_height')",
"limit_to_extruder": "support_roof_extruder_nr", "limit_to_extruder": "support_roof_extruder_nr",
"enabled": "extruderValue(support_roof_extruder_nr, 'support_interface_enable') and support_enable", "enabled": "extruderValue(support_roof_extruder_nr, 'support_roof_enable') and support_enable",
"settable_per_mesh": true "settable_per_mesh": true
}, },
"support_bottom_height": "support_bottom_height":
@ -3279,7 +3304,7 @@
"minimum_value_warning": "min(3 * resolveOrValue('layer_height'), extruderValue(support_bottom_extruder_nr, 'support_bottom_stair_step_height'))", "minimum_value_warning": "min(3 * resolveOrValue('layer_height'), extruderValue(support_bottom_extruder_nr, 'support_bottom_stair_step_height'))",
"maximum_value_warning": "10", "maximum_value_warning": "10",
"limit_to_extruder": "support_bottom_extruder_nr", "limit_to_extruder": "support_bottom_extruder_nr",
"enabled": "extruderValue(support_bottom_extruder_nr, 'support_interface_enable') and support_enable", "enabled": "extruderValue(support_bottom_extruder_nr, 'support_bottom_enable') and support_enable",
"settable_per_mesh": true "settable_per_mesh": true
} }
} }
@ -3309,7 +3334,7 @@
"minimum_value": "0", "minimum_value": "0",
"maximum_value_warning": "support_bottom_height", "maximum_value_warning": "support_bottom_height",
"limit_to_extruder": "support_bottom_extruder_nr", "limit_to_extruder": "support_bottom_extruder_nr",
"enabled": "extruderValue(support_bottom_extruder_nr, 'support_interface_enable') and support_enable", "enabled": "extruderValue(support_bottom_extruder_nr, 'support_bottom_enable') and support_enable",
"settable_per_mesh": true "settable_per_mesh": true
}, },
"support_roof_skip_height": "support_roof_skip_height":
@ -3323,7 +3348,7 @@
"minimum_value": "0", "minimum_value": "0",
"maximum_value_warning": "support_roof_height", "maximum_value_warning": "support_roof_height",
"limit_to_extruder": "support_roof_extruder_nr", "limit_to_extruder": "support_roof_extruder_nr",
"enabled": "extruderValue(support_roof_extruder_nr, 'support_interface_enable') and support_enable", "enabled": "extruderValue(support_roof_extruder_nr, 'support_roof_enable') and support_enable",
"settable_per_mesh": true "settable_per_mesh": true
} }
} }
@ -3353,7 +3378,7 @@
"minimum_value": "0", "minimum_value": "0",
"maximum_value": "100", "maximum_value": "100",
"limit_to_extruder": "support_bottom_extruder_nr", "limit_to_extruder": "support_bottom_extruder_nr",
"enabled": "extruderValue(support_bottom_extruder_nr, 'support_interface_enable') and support_enable", "enabled": "extruderValue(support_bottom_extruder_nr, 'support_bottom_enable') and support_enable",
"settable_per_mesh": false, "settable_per_mesh": false,
"settable_per_extruder": true, "settable_per_extruder": true,
"children": "children":
@ -3369,7 +3394,7 @@
"minimum_value_warning": "support_bottom_line_width - 0.0001", "minimum_value_warning": "support_bottom_line_width - 0.0001",
"value": "0 if support_bottom_density == 0 else (support_bottom_line_width * 100) / support_bottom_density * (2 if support_bottom_pattern == 'grid' else (3 if support_bottom_pattern == 'triangles' else 1))", "value": "0 if support_bottom_density == 0 else (support_bottom_line_width * 100) / support_bottom_density * (2 if support_bottom_pattern == 'grid' else (3 if support_bottom_pattern == 'triangles' else 1))",
"limit_to_extruder": "support_bottom_extruder_nr", "limit_to_extruder": "support_bottom_extruder_nr",
"enabled": "extruderValue(support_bottom_extruder_nr, 'support_interface_enable') and support_enable", "enabled": "extruderValue(support_bottom_extruder_nr, 'support_bottom_enable') and support_enable",
"settable_per_mesh": false, "settable_per_mesh": false,
"settable_per_extruder": true "settable_per_extruder": true
} }
@ -3385,7 +3410,7 @@
"minimum_value": "0", "minimum_value": "0",
"maximum_value": "100", "maximum_value": "100",
"limit_to_extruder": "support_roof_extruder_nr", "limit_to_extruder": "support_roof_extruder_nr",
"enabled": "extruderValue(support_roof_extruder_nr, 'support_interface_enable') and support_enable", "enabled": "extruderValue(support_roof_extruder_nr, 'support_roof_enable') and support_enable",
"settable_per_mesh": false, "settable_per_mesh": false,
"settable_per_extruder": true, "settable_per_extruder": true,
"children": "children":
@ -3401,7 +3426,7 @@
"minimum_value_warning": "support_roof_line_width - 0.0001", "minimum_value_warning": "support_roof_line_width - 0.0001",
"value": "0 if support_roof_density == 0 else (support_roof_line_width * 100) / support_roof_density * (2 if support_roof_pattern == 'grid' else (3 if support_roof_pattern == 'triangles' else 1))", "value": "0 if support_roof_density == 0 else (support_roof_line_width * 100) / support_roof_density * (2 if support_roof_pattern == 'grid' else (3 if support_roof_pattern == 'triangles' else 1))",
"limit_to_extruder": "support_roof_extruder_nr", "limit_to_extruder": "support_roof_extruder_nr",
"enabled": "extruderValue(support_roof_extruder_nr, 'support_interface_enable') and support_enable", "enabled": "extruderValue(support_roof_extruder_nr, 'support_roof_enable') and support_enable",
"settable_per_mesh": false, "settable_per_mesh": false,
"settable_per_extruder": true "settable_per_extruder": true
} }
@ -3447,7 +3472,7 @@
"default_value": "concentric", "default_value": "concentric",
"value": "support_interface_pattern", "value": "support_interface_pattern",
"limit_to_extruder": "support_bottom_extruder_nr", "limit_to_extruder": "support_bottom_extruder_nr",
"enabled": "extruderValue(support_bottom_extruder_nr, 'support_interface_enable') and support_enable", "enabled": "extruderValue(support_bottom_extruder_nr, 'support_bottom_enable') and support_enable",
"settable_per_mesh": false, "settable_per_mesh": false,
"settable_per_extruder": true "settable_per_extruder": true
}, },
@ -3468,7 +3493,7 @@
"default_value": "concentric", "default_value": "concentric",
"value": "support_interface_pattern", "value": "support_interface_pattern",
"limit_to_extruder": "support_bottom_extruder_nr", "limit_to_extruder": "support_bottom_extruder_nr",
"enabled": "extruderValue(support_bottom_extruder_nr, 'support_interface_enable') and support_enable", "enabled": "extruderValue(support_bottom_extruder_nr, 'support_roof_enable') and support_enable",
"settable_per_mesh": false, "settable_per_mesh": false,
"settable_per_extruder": true "settable_per_extruder": true
} }