diff options
Diffstat (limited to 'resources/definitions/fdmprinter.def.json')
-rw-r--r-- | resources/definitions/fdmprinter.def.json | 641 |
1 files changed, 301 insertions, 340 deletions
diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 16d2867631..63c7b25b0b 100644 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -5,10 +5,9 @@ { "type": "machine", "author": "Ultimaker", - "category": "Other", "manufacturer": "Unknown", - "setting_version": 11, - "file_formats": "text/x-gcode;application/x-stl-ascii;application/x-stl-binary;application/x-wavefront-obj;application/x3g", + "setting_version": 16, + "file_formats": "text/x-gcode;model/stl;application/x-wavefront-obj;application/x3g", "visible": false, "has_materials": true, "has_variants": false, @@ -75,7 +74,7 @@ "material_guid": { "label": "Material GUID", - "description": "GUID of the material. This is set automatically. ", + "description": "GUID of the material. This is set automatically.", "default_value": "", "type": "str", "enabled": false @@ -142,6 +141,8 @@ "description": "The width (X-direction) of the printable area.", "default_value": 100, "type": "float", + "minimum_value": "0.001", + "maximum_value": "2000000", "settable_per_mesh": false, "settable_per_extruder": false, "settable_per_meshgroup": false @@ -152,6 +153,8 @@ "description": "The depth (Y-direction) of the printable area.", "default_value": 100, "type": "float", + "minimum_value": "0.001", + "maximum_value": "2000000", "settable_per_mesh": false, "settable_per_extruder": false, "settable_per_meshgroup": false @@ -216,6 +219,16 @@ "settable_per_extruder": false, "settable_per_meshgroup": false }, + "machine_always_write_active_tool": + { + "label": "Always Write Active Tool", + "description": "Write active tool after sending temp commands to inactive tool. Required for Dual Extruder printing with Smoothie or other firmware with modal tool commands.", + "default_value": false, + "type": "bool", + "settable_per_mesh": false, + "settable_per_extruder": false, + "settable_per_meshgroup": false + }, "machine_center_is_zero": { "label": "Is Center Origin", @@ -298,18 +311,6 @@ "settable_per_extruder": true, "settable_per_meshgroup": false }, - "machine_filament_park_distance": - { - "label": "Filament Park Distance", - "description": "The distance from the tip of the nozzle where to park the filament when an extruder is no longer used.", - "unit": "mm", - "default_value": 16, - "value": "machine_heat_zone_length", - "type": "float", - "settable_per_mesh": false, - "settable_per_extruder": true, - "settable_per_meshgroup": false - }, "machine_nozzle_temp_enabled": { "label": "Enable Nozzle Temperature Control", @@ -651,7 +652,7 @@ { "label": "Steps per Millimeter (X)", "description": "How many steps of the stepper motor will result in one millimeter of movement in the X direction.", - "type": "int", + "type": "float", "default_value": 50, "minimum_value": "0.0000001", "settable_per_mesh": false, @@ -661,7 +662,7 @@ { "label": "Steps per Millimeter (Y)", "description": "How many steps of the stepper motor will result in one millimeter of movement in the Y direction.", - "type": "int", + "type": "float", "default_value": 50, "minimum_value": "0.0000001", "settable_per_mesh": false, @@ -671,7 +672,7 @@ { "label": "Steps per Millimeter (Z)", "description": "How many steps of the stepper motor will result in one millimeter of movement in the Z direction.", - "type": "int", + "type": "float", "default_value": 50, "minimum_value": "0.0000001", "settable_per_mesh": false, @@ -681,7 +682,7 @@ { "label": "Steps per Millimeter (E)", "description": "How many steps of the stepper motors will result in one millimeter of extrusion.", - "type": "int", + "type": "float", "default_value": 1600, "minimum_value": "0.0000001", "settable_per_mesh": false, @@ -872,7 +873,7 @@ "default_value": 0.4, "type": "float", "value": "line_width", - "enabled": "resolveOrValue('adhesion_type') == 'skirt' or resolveOrValue('adhesion_type') == 'brim' or resolveOrValue('prime_tower_brim_enable')", + "enabled": "resolveOrValue('adhesion_type') == 'skirt' or resolveOrValue('adhesion_type') == 'brim' or resolveOrValue('prime_tower_brim_enable') or resolveOrValue('draft_shield_enabled') or resolveOrValue('ooze_shield_enabled')", "settable_per_mesh": false, "settable_per_extruder": true }, @@ -886,7 +887,7 @@ "maximum_value_warning": "3 * machine_nozzle_size", "default_value": 0.4, "type": "float", - "enabled": "(support_enable or support_tree_enable)", + "enabled": "(support_enable or support_meshes_present)", "value": "line_width", "limit_to_extruder": "support_infill_extruder_nr", "settable_per_mesh": false, @@ -902,7 +903,7 @@ "minimum_value_warning": "0.1 + 0.4 * machine_nozzle_size", "maximum_value_warning": "2 * machine_nozzle_size", "type": "float", - "enabled": "(support_enable or support_tree_enable) and support_interface_enable", + "enabled": "(support_enable or support_meshes_present) and support_interface_enable", "limit_to_extruder": "support_interface_extruder_nr", "value": "line_width", "settable_per_mesh": false, @@ -919,7 +920,7 @@ "minimum_value_warning": "0.4 * machine_nozzle_size", "maximum_value_warning": "2 * machine_nozzle_size", "type": "float", - "enabled": "(support_enable or support_tree_enable) and support_roof_enable", + "enabled": "(support_enable or support_meshes_present) and support_roof_enable", "limit_to_extruder": "support_roof_extruder_nr", "value": "extruderValue(support_roof_extruder_nr, 'support_interface_line_width')", "settable_per_mesh": false, @@ -935,7 +936,7 @@ "minimum_value_warning": "0.4 * machine_nozzle_size", "maximum_value_warning": "2 * machine_nozzle_size", "type": "float", - "enabled": "(support_enable or support_tree_enable) and support_bottom_enable", + "enabled": "(support_enable or support_meshes_present) and support_bottom_enable", "limit_to_extruder": "support_bottom_extruder_nr", "value": "extruderValue(support_bottom_extruder_nr, 'support_interface_line_width')", "settable_per_mesh": false, @@ -1028,6 +1029,7 @@ "description": "The thickness of the walls in the horizontal direction. This value divided by the wall line width defines the number of walls.", "unit": "mm", "default_value": 0.8, + "value": "wall_line_width_0 if magic_spiralize else 0.8", "minimum_value": "0", "minimum_value_warning": "line_width", "maximum_value_warning": "10 * line_width", @@ -1228,7 +1230,7 @@ "description": "Connect top/bottom skin paths where they run next to each other. For the concentric pattern enabling this setting greatly reduces the travel time, but because the connections can happen midway over infill this feature can reduce the top surface quality.", "type": "bool", "default_value": false, - "enabled": "(top_layers > 0 or bottom_layers > 0) and top_bottom_pattern == 'concentric'", + "enabled": "((top_layers > 0 or bottom_layers > 0) and top_bottom_pattern == 'concentric') or (roofing_layer_count > 0 and roofing_pattern == 'concentric')", "limit_to_extruder": "top_bottom_extruder_nr", "settable_per_mesh": true }, @@ -1508,11 +1510,12 @@ { "label": "Extra Skin Wall Count", "description": "Replaces the outermost part of the top/bottom pattern with a number of concentric lines. Using one or two lines improves roofs that start on infill material.", + "value": "0 if top_bottom_pattern == 'concentric' and top_bottom_pattern_0 == 'concentric' and roofing_layer_count <= 0 else 1", "default_value": 1, "minimum_value": "0", "maximum_value_warning": "10", "type": "int", - "enabled": "top_layers > 0 or bottom_layers > 0", + "enabled": "(top_layers > 0 or bottom_layers > 0) and (top_bottom_pattern != 'concentric' or top_bottom_pattern_0 != 'concentric' or (roofing_layer_count > 0 and roofing_pattern != 'concentric'))", "limit_to_extruder": "top_bottom_extruder_nr", "settable_per_mesh": true }, @@ -1583,7 +1586,7 @@ "type": "float", "unit": "mm", "default_value": 0.35, - "value": "wall_line_width_0 / 2", + "value": "wall_line_width_0 / 2 + (ironing_line_spacing - skin_line_width * (1.0 + ironing_flow / 100) / 2 if ironing_pattern == 'concentric' else skin_line_width * (1.0 - ironing_flow / 100) / 2)", "minimum_value_warning": "0", "maximum_value_warning": "wall_line_width_0", "enabled": "ironing_enabled", @@ -1769,7 +1772,7 @@ "description": "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the traditional default angles (45 and 135 degrees for the lines and zig zag patterns and 45 degrees for all other patterns).", "type": "[int]", "default_value": "[ ]", - "enabled": "infill_pattern != 'concentric' and infill_pattern != 'cubicsubdiv' and infill_sparse_density > 0", + "enabled": "infill_pattern != 'concentric' and infill_sparse_density > 0", "limit_to_extruder": "infill_extruder_nr", "settable_per_mesh": true }, @@ -1814,7 +1817,7 @@ "type": "int", "minimum_value": "1", "maximum_value_warning": "infill_line_distance / infill_line_width", - "enabled": "infill_sparse_density > 0 and not spaghetti_infill_enabled and infill_pattern != 'zigzag'", + "enabled": "infill_sparse_density > 0 and infill_pattern != 'zigzag' and (gradual_infill_steps == 0 or not zig_zaggify_infill)", "limit_to_extruder": "infill_extruder_nr", "settable_per_mesh": true }, @@ -1825,7 +1828,7 @@ "default_value": 0, "type": "int", "minimum_value": "0", - "enabled": "infill_sparse_density > 0 and not spaghetti_infill_enabled", + "enabled": "infill_sparse_density > 0", "limit_to_extruder": "infill_extruder_nr", "settable_per_mesh": true }, @@ -1896,9 +1899,9 @@ "default_value": 0.1, "minimum_value": "resolveOrValue('layer_height') / 2 if infill_line_distance > 0 else -999999", "maximum_value_warning": "0.75 * machine_nozzle_size", - "maximum_value": "resolveOrValue('layer_height') * (1.45 if spaghetti_infill_enabled else 8) if infill_line_distance > 0 else 999999", + "maximum_value": "resolveOrValue('layer_height') * 8 if infill_line_distance > 0 else 999999", "value": "resolveOrValue('layer_height')", - "enabled": "infill_sparse_density > 0 and not spaghetti_infill_enabled", + "enabled": "infill_sparse_density > 0", "limit_to_extruder": "infill_extruder_nr", "settable_per_mesh": true }, @@ -1910,8 +1913,8 @@ "type": "int", "minimum_value": "0", "maximum_value_warning": "1 if (infill_pattern == 'cross' or infill_pattern == 'cross_3d' or support_pattern == 'concentric') else 5", - "maximum_value": "0 if spaghetti_infill_enabled else (999999 if infill_line_distance == 0 else (20 - math.log(infill_line_distance) / math.log(2)))", - "enabled": "infill_sparse_density > 0 and infill_pattern != 'cubicsubdiv' and not spaghetti_infill_enabled", + "maximum_value": "999999 if infill_line_distance == 0 else (20 - math.log(infill_line_distance) / math.log(2))", + "enabled": "infill_sparse_density > 0 and infill_pattern != 'cubicsubdiv'", "limit_to_extruder": "infill_extruder_nr", "settable_per_mesh": true }, @@ -1981,6 +1984,7 @@ "default_value": 1, "value": "wall_line_width_0 + (wall_line_count - 1) * wall_line_width_x", "minimum_value": "0", + "maximum_value_warning": "wall_line_width_0 + (wall_line_count - 1) * wall_line_width_x", "enabled": "top_layers > 0 or bottom_layers > 0", "limit_to_extruder": "top_bottom_extruder_nr", "settable_per_mesh": true, @@ -1994,6 +1998,7 @@ "type": "float", "default_value": 1, "value": "skin_preshrink", + "maximum_value_warning": "wall_line_width_0 + (wall_line_count - 1) * wall_line_width_x", "minimum_value": "0", "enabled": "top_layers > 0 or bottom_layers > 0", "limit_to_extruder": "top_bottom_extruder_nr", @@ -2007,6 +2012,7 @@ "type": "float", "default_value": 1, "value": "skin_preshrink", + "maximum_value_warning": "wall_line_width_0 + (wall_line_count - 1) * wall_line_width_x", "minimum_value": "0", "enabled": "top_layers > 0 or bottom_layers > 0", "limit_to_extruder": "top_bottom_extruder_nr", @@ -2059,7 +2065,7 @@ "max_skin_angle_for_expansion": { "label": "Maximum Skin Angle for Expansion", - "description": "Top and/or bottom surfaces of your object with an angle larger than this setting, won't have their top/bottom skin expanded. This avoids expanding the narrow skin areas that are created when the model surface has a near vertical slope. An angle of 0° is horizontal, while an angle of 90° is vertical.", + "description": "Top and/or bottom surfaces of your object with an angle larger than this setting, won't have their top/bottom skin expanded. This avoids expanding the narrow skin areas that are created when the model surface has a near vertical slope. An angle of 0° is horizontal and will cause no skin to be expanded, while an angle of 90° is vertical and will cause all skin to be expanded.", "unit": "°", "type": "float", "minimum_value": "0", @@ -2077,7 +2083,7 @@ "description": "Skin areas narrower than this are not expanded. This avoids expanding the narrow skin areas that are created when the model surface has a slope close to the vertical.", "unit": "mm", "type": "float", - "default_value": 2.24, + "default_value": 0, "value": "top_layers * layer_height / math.tan(math.radians(max_skin_angle_for_expansion))", "minimum_value": "0", "enabled": "(top_layers > 0 or bottom_layers > 0) and (top_skin_expand_distance > 0 or bottom_skin_expand_distance > 0)", @@ -2094,8 +2100,9 @@ "default_value": 0.8, "minimum_value": "0", "maximum_value": "machine_height", + "maximum_value_warning": "resolveOrValue('infill_sparse_thickness') * 10", "type": "float", - "value": "0", + "value": "0 if infill_sparse_density > 0 else 0", "limit_to_extruder": "infill_extruder_nr", "enabled": "infill_sparse_density > 0", "settable_per_mesh": true, @@ -2107,6 +2114,7 @@ "description": "The number of infill layers that supports skin edges.", "default_value": 4, "minimum_value": "0", + "maximum_value_warning": "10", "type": "int", "value": "math.ceil(round(skin_edge_support_thickness / resolveOrValue('infill_sparse_thickness'), 4))", "limit_to_extruder": "infill_extruder_nr", @@ -2253,7 +2261,7 @@ "material_bed_temperature": { "label": "Build Plate Temperature", - "description": "The temperature used for the heated build plate. If this is 0, the bed temperature will not be adjusted.", + "description": "The temperature used for the heated build plate. If this is 0, the build plate is left unheated.", "unit": "°C", "type": "float", "default_value": 60, @@ -2271,7 +2279,7 @@ "material_bed_temperature_layer_0": { "label": "Build Plate Temperature Initial Layer", - "description": "The temperature used for the heated build plate at the first layer.", + "description": "The temperature used for the heated build plate at the first layer. If this is 0, the build plate is left unheated during the first layer.", "unit": "°C", "type": "float", "resolve": "max(extruderValues('material_bed_temperature_layer_0'))", @@ -2313,16 +2321,18 @@ }, "material_shrinkage_percentage": { - "label": "Shrinkage Ratio", - "description": "Shrinkage ratio in percentage.", + "label": "Scaling Factor Shrinkage Compensation", + "description": "To compensate for the shrinkage of the material as it cools down, the model will be scaled with this factor.", "unit": "%", "type": "float", - "default_value": 0, - "minimum_value": "0", - "maximum_value": "100", + "default_value": 100.0, "enabled": false, + "minimum_value": "0.001", + "minimum_value_warning": "100", + "maximum_value_warning": "120", "settable_per_mesh": false, - "settable_per_extruder": true + "settable_per_extruder": false, + "resolve": "sum(extruderValues(\"material_shrinkage_percentage\")) / len(extruderValues(\"material_shrinkage_percentage\"))" }, "material_crystallinity": { @@ -2343,7 +2353,7 @@ "default_value": -4, "enabled": false, "minimum_value_warning": "-switch_extruder_retraction_amount", - "maximum_value_warning": "0", + "maximum_value": "0", "settable_per_mesh": false, "settable_per_extruder": true }, @@ -2369,7 +2379,7 @@ "default_value": -16, "enabled": false, "minimum_value_warning": "-retraction_amount * 4", - "maximum_value_warning": "0", + "maximum_value": "0", "settable_per_mesh": false, "settable_per_extruder": true }, @@ -2410,7 +2420,7 @@ "default_value": -50, "enabled": false, "minimum_value_warning": "-100", - "maximum_value_warning": "0", + "maximum_value": "0", "settable_per_mesh": false, "settable_per_extruder": true }, @@ -2444,7 +2454,7 @@ "material_flush_purge_speed": { "label": "Flush Purge Speed", - "description": "Material Station internal value", + "description": "How fast to prime the material after switching to a different material.", "type": "float", "default_value": 0.5, "enabled": false @@ -2452,23 +2462,23 @@ "material_flush_purge_length": { "label": "Flush Purge Length", - "description": "Material Station internal value", + "description": "How much material to use to purge the previous material out of the nozzle (in length of filament) when switching to a different material.", "type": "float", "default_value": 60, "enabled": false }, "material_end_of_filament_purge_speed": { - "label": "End Of Filament Purge Speed", - "description": "Material Station internal value", + "label": "End of Filament Purge Speed", + "description": "How fast to prime the material after replacing an empty spool with a fresh spool of the same material.", "type": "float", "default_value": 0.5, "enabled": false }, "material_end_of_filament_purge_length": { - "label": "End Of Filament Purge Length", - "description": "Material Station internal value", + "label": "End of Filament Purge Length", + "description": "How much material to use to purge the previous material out of the nozzle (in length of filament) when replacing an empty spool with a fresh spool of the same material.", "type": "float", "default_value": 20, "enabled": false @@ -2476,7 +2486,7 @@ "material_maximum_park_duration": { "label": "Maximum Park Duration", - "description": "Material Station internal value", + "description": "How long the material can be kept out of dry storage safely.", "type": "float", "default_value": 300, "enabled": false @@ -2484,7 +2494,7 @@ "material_no_load_move_factor": { "label": "No Load Move Factor", - "description": "Material Station internal value", + "description": "A factor indicating how much the filament gets compressed between the feeder and the nozzle chamber, used to determine how far to move the material for a filament switch.", "type": "float", "default_value": 0.940860215, "enabled": false @@ -2604,7 +2614,7 @@ "minimum_value": "5", "minimum_value_warning": "50", "maximum_value_warning": "150", - "enabled": "resolveOrValue('adhesion_type') == 'skirt' or resolveOrValue('adhesion_type') == 'brim'", + "enabled": "resolveOrValue('adhesion_type') == 'skirt' or resolveOrValue('adhesion_type') == 'brim' or resolveOrValue('draft_shield_enabled') or resolveOrValue('ooze_shield_enabled')", "settable_per_mesh": false, "settable_per_extruder": true }, @@ -2619,7 +2629,7 @@ "minimum_value": "5", "minimum_value_warning": "50", "maximum_value_warning": "150", - "enabled": "support_enable", + "enabled": "support_enable or support_meshes_present", "limit_to_extruder": "support_infill_extruder_nr", "settable_per_mesh": false, "settable_per_extruder": true @@ -2635,7 +2645,7 @@ "minimum_value": "5", "minimum_value_warning": "50", "maximum_value_warning": "150", - "enabled": "support_enable and support_interface_enable", + "enabled": "(support_enable or support_meshes_present) and support_interface_enable", "limit_to_extruder": "support_interface_extruder_nr", "settable_per_mesh": false, "settable_per_extruder": true, @@ -2652,7 +2662,7 @@ "minimum_value": "5", "minimum_value_warning": "50", "maximum_value_warning": "150", - "enabled": "support_enable and support_roof_enable", + "enabled": "(support_enable or support_meshes_present) and support_roof_enable", "limit_to_extruder": "support_roof_extruder_nr", "settable_per_mesh": false, "settable_per_extruder": true @@ -2668,7 +2678,7 @@ "minimum_value": "5", "minimum_value_warning": "50", "maximum_value_warning": "150", - "enabled": "support_enable and support_bottom_enable", + "enabled": "(support_enable or support_meshes_present) and support_bottom_enable", "limit_to_extruder": "support_bottom_extruder_nr", "settable_per_mesh": false, "settable_per_extruder": true @@ -2841,7 +2851,7 @@ "maximum_value_warning": "150", "default_value": 60, "value": "speed_print", - "enabled": "support_enable or support_tree_enable", + "enabled": "support_enable or support_meshes_present", "settable_per_mesh": false, "limit_to_extruder": "support_extruder_nr", "settable_per_extruder": true, @@ -2858,7 +2868,7 @@ "maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2)", "maximum_value_warning": "150", "value": "speed_support", - "enabled": "support_enable or support_tree_enable", + "enabled": "support_enable or support_meshes_present", "limit_to_extruder": "support_infill_extruder_nr", "settable_per_mesh": false, "settable_per_extruder": true @@ -2873,7 +2883,7 @@ "minimum_value": "0.1", "maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2)", "maximum_value_warning": "150", - "enabled": "support_interface_enable and (support_enable or support_tree_enable)", + "enabled": "support_interface_enable and (support_enable or support_meshes_present)", "limit_to_extruder": "support_interface_extruder_nr", "value": "speed_support / 1.5", "settable_per_mesh": false, @@ -2890,7 +2900,7 @@ "minimum_value": "0.1", "maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2)", "maximum_value_warning": "150", - "enabled": "support_roof_enable and (support_enable or support_tree_enable)", + "enabled": "support_roof_enable and (support_enable or support_meshes_present)", "limit_to_extruder": "support_roof_extruder_nr", "value": "extruderValue(support_roof_extruder_nr, 'speed_support_interface')", "settable_per_mesh": false, @@ -2906,7 +2916,7 @@ "minimum_value": "0.1", "maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2)", "maximum_value_warning": "150", - "enabled": "support_bottom_enable and (support_enable or support_tree_enable)", + "enabled": "support_bottom_enable and (support_enable or support_meshes_present)", "limit_to_extruder": "support_bottom_extruder_nr", "value": "extruderValue(support_bottom_extruder_nr, 'speed_support_interface')", "settable_per_mesh": false, @@ -3181,7 +3191,7 @@ "maximum_value_warning": "10000", "default_value": 3000, "value": "acceleration_print", - "enabled": "resolveOrValue('acceleration_enabled') and (support_enable or support_tree_enable)", + "enabled": "resolveOrValue('acceleration_enabled') and (support_enable or support_meshes_present)", "settable_per_mesh": false, "limit_to_extruder": "support_extruder_nr", "settable_per_extruder": true, @@ -3198,7 +3208,7 @@ "minimum_value": "0.1", "minimum_value_warning": "100", "maximum_value_warning": "10000", - "enabled": "resolveOrValue('acceleration_enabled') and (support_enable or support_tree_enable)", + "enabled": "resolveOrValue('acceleration_enabled') and (support_enable or support_meshes_present)", "limit_to_extruder": "support_infill_extruder_nr", "settable_per_mesh": false, "settable_per_extruder": true @@ -3214,7 +3224,7 @@ "minimum_value": "0.1", "minimum_value_warning": "100", "maximum_value_warning": "10000", - "enabled": "resolveOrValue('acceleration_enabled') and support_interface_enable and (support_enable or support_tree_enable)", + "enabled": "resolveOrValue('acceleration_enabled') and support_interface_enable and (support_enable or support_meshes_present)", "limit_to_extruder": "support_interface_extruder_nr", "settable_per_mesh": false, "settable_per_extruder": true, @@ -3231,7 +3241,7 @@ "minimum_value": "0.1", "minimum_value_warning": "100", "maximum_value_warning": "10000", - "enabled": "acceleration_enabled and support_roof_enable and (support_enable or support_tree_enable)", + "enabled": "acceleration_enabled and support_roof_enable and (support_enable or support_meshes_present)", "limit_to_extruder": "support_roof_extruder_nr", "settable_per_mesh": false, "settable_per_extruder": true @@ -3247,7 +3257,7 @@ "minimum_value": "0.1", "minimum_value_warning": "100", "maximum_value_warning": "10000", - "enabled": "acceleration_enabled and support_bottom_enable and (support_enable or support_tree_enable)", + "enabled": "acceleration_enabled and support_bottom_enable and (support_enable or support_meshes_present)", "limit_to_extruder": "support_bottom_extruder_nr", "settable_per_mesh": false, "settable_per_extruder": true @@ -3466,7 +3476,7 @@ "maximum_value_warning": "50", "default_value": 20, "value": "jerk_print", - "enabled": "resolveOrValue('jerk_enabled') and (support_enable or support_tree_enable)", + "enabled": "resolveOrValue('jerk_enabled') and (support_enable or support_meshes_present)", "settable_per_mesh": false, "settable_per_extruder": true, "limit_to_extruder": "support_extruder_nr", @@ -3482,7 +3492,7 @@ "value": "jerk_support", "minimum_value": "0", "maximum_value_warning": "50", - "enabled": "resolveOrValue('jerk_enabled') and (support_enable or support_tree_enable)", + "enabled": "resolveOrValue('jerk_enabled') and (support_enable or support_meshes_present)", "limit_to_extruder": "support_infill_extruder_nr", "settable_per_mesh": false, "settable_per_extruder": true @@ -3497,7 +3507,7 @@ "value": "jerk_support", "minimum_value": "0", "maximum_value_warning": "50", - "enabled": "resolveOrValue('jerk_enabled') and support_interface_enable and (support_enable or support_tree_enable)", + "enabled": "resolveOrValue('jerk_enabled') and support_interface_enable and (support_enable or support_meshes_present)", "limit_to_extruder": "support_interface_extruder_nr", "settable_per_mesh": false, "settable_per_extruder": true, @@ -3513,7 +3523,7 @@ "value": "extruderValue(support_roof_extruder_nr, 'jerk_support_interface')", "minimum_value": "0", "maximum_value_warning": "50", - "enabled": "resolveOrValue('jerk_enabled') and support_roof_enable and (support_enable or support_tree_enable)", + "enabled": "resolveOrValue('jerk_enabled') and support_roof_enable and (support_enable or support_meshes_present)", "limit_to_extruder": "support_roof_extruder_nr", "settable_per_mesh": false, "settable_per_extruder": true @@ -3528,7 +3538,7 @@ "value": "extruderValue(support_roof_extruder_nr, 'jerk_support_interface')", "minimum_value": "0", "maximum_value_warning": "50", - "enabled": "resolveOrValue('jerk_enabled') and support_bottom_enable and (support_enable or support_tree_enable)", + "enabled": "resolveOrValue('jerk_enabled') and support_bottom_enable and (support_enable or support_meshes_present)", "limit_to_extruder": "support_bottom_extruder_nr", "settable_per_mesh": false, "settable_per_extruder": true @@ -3635,7 +3645,7 @@ "retraction_enable": { "label": "Enable Retraction", - "description": "Retract the filament when the nozzle is moving over a non-printed area. ", + "description": "Retract the filament when the nozzle is moving over a non-printed area.", "type": "bool", "default_value": true, "settable_per_mesh": false, @@ -3772,7 +3782,7 @@ "description": "Omit retraction when moving from support to support in a straight line. Enabling this setting saves print time, but can lead to excessive stringing within the support structure.", "type": "bool", "default_value": true, - "enabled": "retraction_enable and (support_enable or support_tree_enable)", + "enabled": "retraction_enable and (support_enable or support_meshes_present)", "settable_per_mesh": false, "settable_per_extruder": true }, @@ -4102,7 +4112,7 @@ "type": "extruder", "default_value": "0", "value": "int(defaultExtruderPosition())", - "enabled": "(support_enable or support_tree_enable) and extruders_enabled_count > 1", + "enabled": "(support_enable or support_meshes_present) and extruders_enabled_count > 1", "settable_per_mesh": false, "settable_per_extruder": false, "children": { @@ -4113,7 +4123,7 @@ "type": "extruder", "default_value": "0", "value": "support_extruder_nr", - "enabled": "(support_enable or support_tree_enable) and extruders_enabled_count > 1", + "enabled": "(support_enable or support_meshes_present) and extruders_enabled_count > 1", "settable_per_mesh": false, "settable_per_extruder": false }, @@ -4124,7 +4134,7 @@ "type": "extruder", "default_value": "0", "value": "support_extruder_nr", - "enabled": "(support_enable or support_tree_enable) and extruders_enabled_count > 1", + "enabled": "(support_enable or support_meshes_present) and extruders_enabled_count > 1", "settable_per_mesh": false, "settable_per_extruder": false }, @@ -4135,7 +4145,7 @@ "type": "extruder", "default_value": "0", "value": "support_extruder_nr", - "enabled": "(support_enable or support_tree_enable) and extruders_enabled_count > 1", + "enabled": "(support_enable or support_meshes_present) and extruders_enabled_count > 1", "settable_per_mesh": false, "settable_per_extruder": false, "children": @@ -4147,7 +4157,7 @@ "type": "extruder", "default_value": "0", "value": "support_interface_extruder_nr", - "enabled": "(support_enable or support_tree_enable) and extruders_enabled_count > 1", + "enabled": "(support_enable or support_meshes_present) and extruders_enabled_count > 1", "settable_per_mesh": false, "settable_per_extruder": false }, @@ -4158,7 +4168,7 @@ "type": "extruder", "default_value": "0", "value": "support_interface_extruder_nr", - "enabled": "(support_enable or support_tree_enable) and extruders_enabled_count > 1", + "enabled": "(support_enable or support_meshes_present) and extruders_enabled_count > 1", "settable_per_mesh": false, "settable_per_extruder": false } @@ -4166,6 +4176,93 @@ } } }, + "support_structure": + { + "label": "Support Structure", + "description": "Chooses between the techniques available to generate support. \"Normal\" support creates a support structure directly below the overhanging parts and drops those areas straight down. \"Tree\" support creates branches towards the overhanging areas that support the model on the tips of those branches, and allows the branches to crawl around the model to support it from the build plate as much as possible.", + "type": "enum", + "options": + { + "normal": "Normal", + "tree": "Tree" + }, + "enabled": "support_enable", + "default_value": "normal", + "settable_per_mesh": false, + "settable_per_extruder": false + }, + "support_tree_angle": + { + "label": "Tree Support Branch Angle", + "description": "The angle of the branches. Use a lower angle to make them more vertical and more stable. Use a higher angle to be able to have more reach.", + "unit": "°", + "type": "float", + "minimum_value": "0", + "maximum_value": "90", + "maximum_value_warning": "60", + "default_value": 40, + "limit_to_extruder": "support_infill_extruder_nr", + "enabled": "support_enable and support_structure=='tree'", + "settable_per_mesh": false, + "settable_per_extruder": true + }, + "support_tree_branch_distance": + { + "label": "Tree Support Branch Distance", + "description": "How far apart the branches need to be when they touch the model. Making this distance small will cause the tree support to touch the model at more points, causing better overhang but making support harder to remove.", + "unit": "mm", + "type": "float", + "minimum_value": "0.001", + "default_value": 1, + "limit_to_extruder": "support_infill_extruder_nr", + "enabled": "support_enable and support_structure=='tree'", + "settable_per_mesh": true + }, + "support_tree_branch_diameter": + { + "label": "Tree Support Branch Diameter", + "description": "The diameter of the thinnest branches of tree support. Thicker branches are more sturdy. Branches towards the base will be thicker than this.", + "unit": "mm", + "type": "float", + "minimum_value": "0.001", + "minimum_value_warning": "support_line_width * 2", + "default_value": 2, + "limit_to_extruder": "support_infill_extruder_nr", + "enabled": "support_enable and support_structure=='tree'", + "settable_per_mesh": false, + "settable_per_extruder": true + }, + "support_tree_branch_diameter_angle": + { + "label": "Tree Support Branch Diameter Angle", + "description": "The angle of the branches' diameter as they gradually become thicker towards the bottom. An angle of 0 will cause the branches to have uniform thickness over their length. A bit of an angle can increase stability of the tree support.", + "unit": "°", + "type": "float", + "minimum_value": "0", + "maximum_value": "89.9999", + "maximum_value_warning": "15", + "default_value": 5, + "limit_to_extruder": "support_infill_extruder_nr", + "enabled": "support_enable and support_structure=='tree'", + "settable_per_mesh": false, + "settable_per_extruder": true + }, + "support_tree_collision_resolution": + { + "label": "Tree Support Collision Resolution", + "description": "Resolution to compute collisions with to avoid hitting the model. Setting this lower will produce more accurate trees that fail less often, but increases slicing time dramatically.", + "unit": "mm", + "type": "float", + "minimum_value": "0.001", + "minimum_value_warning": "support_line_width / 4", + "maximum_value_warning": "support_line_width * 2", + "default_value": 0.4, + "value": "support_line_width / 2", + "limit_to_extruder": "support_infill_extruder_nr", + "enabled": "support_enable and support_structure=='tree' and support_tree_branch_diameter_angle > 0", + "settable_per_mesh": false, + "settable_per_extruder": true + }, "support_type": { "label": "Support Placement", @@ -4178,7 +4275,7 @@ }, "default_value": "everywhere", "resolve": "'everywhere' if 'everywhere' in extruderValues('support_type') else 'buildplate'", - "enabled": "support_enable or support_tree_enable", + "enabled": "support_enable", "settable_per_mesh": false, "settable_per_extruder": false }, @@ -4193,7 +4290,7 @@ "maximum_value_warning": "80", "default_value": 50, "limit_to_extruder": "support_roof_extruder_nr if support_roof_enable else support_infill_extruder_nr", - "enabled": "support_enable or support_tree_enable", + "enabled": "support_enable", "settable_per_mesh": true }, "support_pattern": @@ -4212,7 +4309,7 @@ "gyroid": "Gyroid" }, "default_value": "zigzag", - "enabled": "support_enable or support_tree_enable", + "enabled": "support_enable or support_meshes_present", "limit_to_extruder": "support_infill_extruder_nr", "settable_per_mesh": false, "settable_per_extruder": true @@ -4224,10 +4321,10 @@ "default_value": 1, "minimum_value": "0", "minimum_value_warning": "1 if support_pattern == 'concentric' else 0", - "maximum_value_warning": "3", + "maximum_value_warning": "0 if (support_skip_some_zags and support_pattern == 'zigzag') else 3", "type": "int", - "value": "1 if support_tree_enable else (1 if (support_pattern == 'grid' or support_pattern == 'triangles' or support_pattern == 'concentric') else 0)", - "enabled": "support_enable or support_tree_enable", + "value": "1 if support_enable and support_structure == 'tree' else (1 if (support_pattern == 'grid' or support_pattern == 'triangles' or support_pattern == 'concentric') else 0)", + "enabled": "support_enable or support_meshes_present", "limit_to_extruder": "support_infill_extruder_nr", "settable_per_mesh": false, "settable_per_extruder": true @@ -4239,7 +4336,7 @@ "type": "bool", "default_value": false, "value": "support_pattern == 'cross' or support_pattern == 'gyroid'", - "enabled": "(support_enable or support_tree_enable) and (support_pattern == 'grid' or support_pattern == 'triangles' or support_pattern == 'cross' or support_pattern == 'gyroid')", + "enabled": "(support_enable or support_meshes_present) and (support_pattern == 'lines' or support_pattern == 'grid' or support_pattern == 'triangles' or support_pattern == 'cross' or support_pattern == 'gyroid')", "limit_to_extruder": "support_infill_extruder_nr", "settable_per_mesh": false, "settable_per_extruder": true @@ -4250,7 +4347,7 @@ "description": "Connect the ZigZags. This will increase the strength of the zig zag support structure.", "type": "bool", "default_value": true, - "enabled": "(support_enable or support_tree_enable) and support_pattern == 'zigzag'", + "enabled": "(support_enable or support_meshes_present) and support_pattern == 'zigzag'", "limit_to_extruder": "support_infill_extruder_nr", "settable_per_mesh": false, "settable_per_extruder": true @@ -4264,8 +4361,8 @@ "minimum_value": "0", "maximum_value_warning": "100", "default_value": 15, - "value": "15 if support_enable else 0 if support_tree_enable else 15", - "enabled": "support_enable or support_tree_enable", + "value": "15 if support_enable and support_structure == 'normal' else 0 if support_enable and support_structure == 'tree' else 15", + "enabled": "support_enable or support_meshes_present", "limit_to_extruder": "support_infill_extruder_nr", "settable_per_mesh": false, "settable_per_extruder": true, @@ -4280,7 +4377,7 @@ "minimum_value": "0", "minimum_value_warning": "support_line_width", "default_value": 2.66, - "enabled": "support_enable or support_tree_enable", + "enabled": "support_enable or support_meshes_present", "value": "0 if support_infill_rate == 0 else (support_line_width * 100) / support_infill_rate * (2 if support_pattern == 'grid' else (3 if support_pattern == 'triangles' else 1))", "limit_to_extruder": "support_infill_extruder_nr", "settable_per_mesh": false, @@ -4295,7 +4392,7 @@ "minimum_value": "0", "minimum_value_warning": "support_line_width", "default_value": 2.66, - "enabled": "support_enable or support_tree_enable", + "enabled": "support_enable or support_meshes_present", "value": "support_line_distance", "limit_to_extruder": "support_infill_extruder_nr", "settable_per_mesh": false, @@ -4309,7 +4406,7 @@ "description": "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angle 0 degrees.", "type": "[int]", "default_value": "[ ]", - "enabled": "(support_enable or support_tree_enable) and support_pattern != 'concentric' and support_infill_rate > 0", + "enabled": "(support_enable or support_meshes_present) and support_pattern != 'concentric' and support_infill_rate > 0", "limit_to_extruder": "support_infill_extruder_nr", "settable_per_mesh": false, "settable_per_extruder": true @@ -4320,7 +4417,8 @@ "description": "Generate a brim within the support infill regions of the first layer. This brim is printed underneath the support, not around it. Enabling this setting increases the adhesion of support to the build plate.", "type": "bool", "default_value": false, - "enabled": "support_enable or support_tree_enable", + "value": "support_structure == 'tree'", + "enabled": "support_enable or support_meshes_present", "limit_to_extruder": "support_infill_extruder_nr", "settable_per_mesh": false, "settable_per_extruder": true @@ -4334,7 +4432,7 @@ "default_value": 8.0, "minimum_value": "0.0", "maximum_value_warning": "50.0", - "enabled": "(support_enable or support_tree_enable) and support_brim_enable", + "enabled": "(support_enable or support_meshes_present) and support_brim_enable", "settable_per_mesh": false, "settable_per_extruder": true, "limit_to_extruder": "support_infill_extruder_nr", @@ -4349,7 +4447,7 @@ "minimum_value": "0", "maximum_value_warning": "50 / skirt_brim_line_width", "value": "math.ceil(support_brim_width / (skirt_brim_line_width * initial_layer_line_width_factor / 100.0))", - "enabled": "(support_enable or support_tree_enable) and support_brim_enable", + "enabled": "(support_enable or support_meshes_present) and support_brim_enable", "settable_per_mesh": false, "settable_per_extruder": true, "limit_to_extruder": "support_infill_extruder_nr" @@ -4366,7 +4464,7 @@ "maximum_value_warning": "machine_nozzle_size", "default_value": 0.1, "limit_to_extruder": "support_interface_extruder_nr if support_interface_enable else support_infill_extruder_nr", - "enabled": "support_enable or support_tree_enable", + "enabled": "support_enable or support_meshes_present", "settable_per_mesh": true, "children": { @@ -4379,7 +4477,7 @@ "maximum_value_warning": "machine_nozzle_size", "default_value": 0.1, "type": "float", - "enabled": "support_enable or support_tree_enable", + "enabled": "support_enable or support_meshes_present", "value": "extruderValue(support_roof_extruder_nr if support_roof_enable else support_infill_extruder_nr, 'support_z_distance')", "limit_to_extruder": "support_roof_extruder_nr if support_roof_enable else support_infill_extruder_nr", "settable_per_mesh": true @@ -4395,7 +4493,7 @@ "value": "extruderValue(support_bottom_extruder_nr if support_bottom_enable else support_infill_extruder_nr, 'support_z_distance') if support_type == 'everywhere' else 0", "limit_to_extruder": "support_bottom_extruder_nr if support_bottom_enable else support_infill_extruder_nr", "type": "float", - "enabled": "(support_enable or support_tree_enable) and resolveOrValue('support_type') == 'everywhere'", + "enabled": "(support_enable or support_meshes_present) and resolveOrValue('support_type') == 'everywhere'", "settable_per_mesh": true } } @@ -4410,7 +4508,7 @@ "maximum_value_warning": "1.5 * machine_nozzle_tip_outer_diameter", "default_value": 0.7, "limit_to_extruder": "support_infill_extruder_nr", - "enabled": "support_enable or support_tree_enable", + "enabled": "support_enable or support_meshes_present", "settable_per_mesh": true }, "support_xy_overrides_z": @@ -4425,13 +4523,13 @@ }, "default_value": "z_overrides_xy", "limit_to_extruder": "support_infill_extruder_nr", - "enabled": "support_enable", + "enabled": "support_enable or support_meshes_present", "settable_per_mesh": true }, "support_xy_distance_overhang": { "label": "Minimum Support X/Y Distance", - "description": "Distance of the support structure from the overhang in the X/Y directions. ", + "description": "Distance of the support structure from the overhang in the X/Y directions.", "unit": "mm", "type": "float", "minimum_value": "0", @@ -4440,7 +4538,7 @@ "default_value": 0.2, "value": "machine_nozzle_size / 2", "limit_to_extruder": "support_infill_extruder_nr", - "enabled": "support_enable and support_xy_overrides_z == 'z_overrides_xy'", + "enabled": "(support_enable or support_meshes_present) and support_xy_overrides_z == 'z_overrides_xy'", "settable_per_mesh": true }, "support_bottom_stair_step_height": @@ -4453,7 +4551,7 @@ "limit_to_extruder": "support_bottom_extruder_nr if support_bottom_enable else support_infill_extruder_nr", "minimum_value": "0", "maximum_value_warning": "1.0", - "enabled": "support_enable", + "enabled": "support_enable or support_meshes_present", "settable_per_mesh": true }, "support_bottom_stair_step_width": @@ -4466,7 +4564,20 @@ "limit_to_extruder": "support_interface_extruder_nr if support_interface_enable else support_infill_extruder_nr", "minimum_value": "0", "maximum_value_warning": "10.0", - "enabled": "support_enable", + "enabled": "support_enable or support_meshes_present", + "settable_per_mesh": true + }, + "support_bottom_stair_step_min_slope": + { + "label": "Support Stair Step Minimum Slope Angle", + "description": "The minimum slope of the area for stair-stepping to take effect. Low values should make support easier to remove on shallower slopes, but really low values may result in some very counter-intuitive results on other parts of the model.", + "unit": "°", + "type": "float", + "default_value": 10.0, + "limit_to_extruder": "support_bottom_extruder_nr if support_bottom_enable else support_infill_extruder_nr", + "minimum_value": "0.01", + "maximum_value": "89.99", + "enabled": "support_enable or support_meshes_present", "settable_per_mesh": true }, "support_join_distance": @@ -4479,8 +4590,9 @@ "limit_to_extruder": "support_infill_extruder_nr", "minimum_value_warning": "0", "maximum_value_warning": "10", - "enabled": "support_enable", - "settable_per_mesh": true + "enabled": "(support_enable and support_structure == 'normal') or support_meshes_present", + "settable_per_mesh": false, + "settable_per_extruder": true }, "support_offset": { @@ -4492,8 +4604,9 @@ "limit_to_extruder": "support_infill_extruder_nr", "minimum_value_warning": "-1 * machine_nozzle_size", "maximum_value_warning": "10 * machine_nozzle_size", - "enabled": "support_enable", - "settable_per_mesh": true + "enabled": "(support_enable and support_structure == 'normal') or support_meshes_present", + "settable_per_mesh": false, + "settable_per_extruder": true }, "support_infill_sparse_thickness": { @@ -4506,9 +4619,10 @@ "maximum_value_warning": "0.75 * machine_nozzle_size", "maximum_value": "resolveOrValue('layer_height') * 8", "value": "resolveOrValue('layer_height')", - "enabled": "(support_enable or support_tree_enable) and support_infill_rate > 0", + "enabled": "(support_enable or support_meshes_present) and support_infill_rate > 0", "limit_to_extruder": "support_infill_extruder_nr", - "settable_per_mesh": false + "settable_per_mesh": false, + "settable_per_extruder": true }, "gradual_support_infill_steps": { @@ -4519,9 +4633,10 @@ "minimum_value": "0", "maximum_value_warning": "1 if (support_pattern == 'cross' or support_pattern == 'lines' or support_pattern == 'zigzag' or support_pattern == 'concentric') else 5", "maximum_value": "999999 if support_line_distance == 0 else (20 - math.log(support_line_distance) / math.log(2))", - "enabled": "(support_enable or support_tree_enable) and support_infill_rate > 0", + "enabled": "(support_enable or support_meshes_present) and support_infill_rate > 0", "limit_to_extruder": "support_infill_extruder_nr", - "settable_per_mesh": false + "settable_per_mesh": false, + "settable_per_extruder": true }, "gradual_support_infill_step_height": { @@ -4532,9 +4647,10 @@ "default_value": 1, "minimum_value": "0.0001", "minimum_value_warning": "3 * resolveOrValue('layer_height')", - "enabled": "(support_enable or support_tree_enable) and support_infill_rate > 0 and gradual_support_infill_steps > 0", + "enabled": "(support_enable or support_meshes_present) and support_infill_rate > 0 and gradual_support_infill_steps > 0", "limit_to_extruder": "support_infill_extruder_nr", - "settable_per_mesh": false + "settable_per_mesh": false, + "settable_per_extruder": true }, "minimum_support_area": { @@ -4545,7 +4661,7 @@ "default_value": 0.0, "minimum_value": "0", "maximum_value_warning": "5", - "enabled": "support_enable", + "enabled": "support_enable and support_structure == 'normal'", "limit_to_extruder": "support_infill_extruder_nr", "settable_per_mesh": true }, @@ -4556,7 +4672,7 @@ "type": "bool", "default_value": false, "limit_to_extruder": "support_interface_extruder_nr", - "enabled": "support_enable or support_tree_enable", + "enabled": "support_enable or support_meshes_present", "settable_per_mesh": true, "children": { @@ -4568,7 +4684,7 @@ "default_value": false, "value": "extruderValue(support_roof_extruder_nr, 'support_interface_enable')", "limit_to_extruder": "support_roof_extruder_nr", - "enabled": "support_enable or support_tree_enable", + "enabled": "support_enable or support_meshes_present", "settable_per_mesh": true }, "support_bottom_enable": @@ -4579,7 +4695,7 @@ "default_value": false, "value": "extruderValue(support_bottom_extruder_nr, 'support_interface_enable')", "limit_to_extruder": "support_bottom_extruder_nr", - "enabled": "support_enable or support_tree_enable", + "enabled": "support_enable or support_meshes_present", "settable_per_mesh": true } } @@ -4595,7 +4711,7 @@ "minimum_value_warning": "0.2 + layer_height", "maximum_value_warning": "10", "limit_to_extruder": "support_interface_extruder_nr", - "enabled": "support_interface_enable and (support_enable or support_tree_enable)", + "enabled": "support_interface_enable and (support_enable or support_meshes_present)", "settable_per_mesh": true, "children": { @@ -4607,11 +4723,11 @@ "type": "float", "default_value": 1, "minimum_value": "0", - "minimum_value_warning": "0.2 + layer_height", + "minimum_value_warning": "support_top_distance + layer_height", "maximum_value_warning": "10", "value": "extruderValue(support_roof_extruder_nr, 'support_interface_height')", "limit_to_extruder": "support_roof_extruder_nr", - "enabled": "support_roof_enable and (support_enable or support_tree_enable)", + "enabled": "support_roof_enable and (support_enable or support_meshes_present)", "settable_per_mesh": true }, "support_bottom_height": @@ -4623,10 +4739,10 @@ "default_value": 1, "value": "extruderValue(support_bottom_extruder_nr, 'support_interface_height')", "minimum_value": "0", - "minimum_value_warning": "min(0.2 + layer_height, support_bottom_stair_step_height)", + "minimum_value_warning": "min(support_bottom_distance + layer_height, support_bottom_stair_step_height)", "maximum_value_warning": "10", "limit_to_extruder": "support_bottom_extruder_nr", - "enabled": "support_bottom_enable and (support_enable or support_tree_enable)", + "enabled": "support_bottom_enable and (support_enable or support_meshes_present)", "settable_per_mesh": true } } @@ -4640,7 +4756,7 @@ "minimum_value": "0", "maximum_value_warning": "support_interface_height", "limit_to_extruder": "support_interface_extruder_nr", - "enabled": "support_interface_enable and (support_enable or support_tree_enable)", + "enabled": "support_interface_enable and (support_enable or support_meshes_present)", "settable_per_mesh": true }, "support_interface_density": @@ -4653,7 +4769,7 @@ "minimum_value": "0", "maximum_value_warning": "100", "limit_to_extruder": "support_interface_extruder_nr", - "enabled": "support_interface_enable and (support_enable or support_tree_enable)", + "enabled": "support_interface_enable and (support_enable or support_meshes_present)", "settable_per_mesh": false, "settable_per_extruder": true, "children": @@ -4668,7 +4784,7 @@ "minimum_value": "0", "maximum_value": "100", "limit_to_extruder": "support_roof_extruder_nr", - "enabled": "support_roof_enable and (support_enable or support_tree_enable)", + "enabled": "support_roof_enable and (support_enable or support_meshes_present)", "value": "extruderValue(support_roof_extruder_nr, 'support_interface_density')", "settable_per_mesh": false, "settable_per_extruder": true, @@ -4685,7 +4801,7 @@ "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))", "limit_to_extruder": "support_roof_extruder_nr", - "enabled": "support_roof_enable and (support_enable or support_tree_enable)", + "enabled": "support_roof_enable and (support_enable or support_meshes_present)", "settable_per_mesh": false, "settable_per_extruder": true } @@ -4701,7 +4817,7 @@ "minimum_value": "0", "maximum_value": "100", "limit_to_extruder": "support_bottom_extruder_nr", - "enabled": "support_bottom_enable and (support_enable or support_tree_enable)", + "enabled": "support_bottom_enable and (support_enable or support_meshes_present)", "value": "extruderValue(support_bottom_extruder_nr, 'support_interface_density')", "settable_per_mesh": false, "settable_per_extruder": true, @@ -4718,7 +4834,7 @@ "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))", "limit_to_extruder": "support_bottom_extruder_nr", - "enabled": "support_bottom_enable and (support_enable or support_tree_enable)", + "enabled": "support_bottom_enable and (support_enable or support_meshes_present)", "settable_per_mesh": false, "settable_per_extruder": true } @@ -4741,7 +4857,7 @@ }, "default_value": "concentric", "limit_to_extruder": "support_interface_extruder_nr", - "enabled": "support_interface_enable and (support_enable or support_tree_enable)", + "enabled": "support_interface_enable and (support_enable or support_meshes_present)", "settable_per_mesh": false, "settable_per_extruder": true, "children": @@ -4762,7 +4878,7 @@ "default_value": "concentric", "value": "extruderValue(support_roof_extruder_nr, 'support_interface_pattern')", "limit_to_extruder": "support_roof_extruder_nr", - "enabled": "support_roof_enable and (support_enable or support_tree_enable)", + "enabled": "support_roof_enable and (support_enable or support_meshes_present)", "settable_per_mesh": false, "settable_per_extruder": true }, @@ -4782,7 +4898,7 @@ "default_value": "concentric", "value": "extruderValue(support_bottom_extruder_nr, 'support_interface_pattern')", "limit_to_extruder": "support_bottom_extruder_nr", - "enabled": "support_bottom_enable and (support_enable or support_tree_enable)", + "enabled": "support_bottom_enable and (support_enable or support_meshes_present)", "settable_per_mesh": false, "settable_per_extruder": true } @@ -4798,7 +4914,7 @@ "minimum_value": "0", "minimum_value_warning": "minimum_support_area", "limit_to_extruder": "support_interface_extruder_nr", - "enabled": "support_interface_enable and (support_enable or support_tree_enable)", + "enabled": "support_interface_enable and (support_enable or support_meshes_present)", "settable_per_mesh": true, "children": { @@ -4813,7 +4929,7 @@ "minimum_value": "0", "minimum_value_warning": "minimum_support_area", "limit_to_extruder": "support_roof_extruder_nr", - "enabled": "support_roof_enable and (support_enable or support_tree_enable)", + "enabled": "support_roof_enable and (support_enable or support_meshes_present)", "settable_per_mesh": true }, "minimum_bottom_area": @@ -4827,12 +4943,12 @@ "minimum_value": "0", "minimum_value_warning": "minimum_support_area", "limit_to_extruder": "support_bottom_extruder_nr", - "enabled": "support_bottom_enable and (support_enable or support_tree_enable)", + "enabled": "support_bottom_enable and (support_enable or support_meshes_present)", "settable_per_mesh": true } } }, - "support_interface_offset": + "support_interface_offset": { "label": "Support Interface Horizontal Expansion", "description": "Amount of offset applied to the support interface polygons.", @@ -4841,7 +4957,7 @@ "default_value": 0.0, "maximum_value": "extruderValue(support_extruder_nr, 'support_offset')", "limit_to_extruder": "support_interface_extruder_nr", - "enabled": "support_interface_enable and (support_enable or support_tree_enable)", + "enabled": "support_interface_enable and (support_enable or support_meshes_present)", "settable_per_mesh": false, "settable_per_extruder": true, "children": @@ -4856,7 +4972,7 @@ "value": "extruderValue(support_roof_extruder_nr, 'support_interface_offset')", "maximum_value": "extruderValue(support_extruder_nr, 'support_offset')", "limit_to_extruder": "support_roof_extruder_nr", - "enabled": "support_roof_enable and (support_enable or support_tree_enable)", + "enabled": "support_roof_enable and (support_enable or support_meshes_present)", "settable_per_mesh": false, "settable_per_extruder": true }, @@ -4870,7 +4986,7 @@ "value": "extruderValue(support_bottom_extruder_nr, 'support_interface_offset')", "maximum_value": "extruderValue(support_extruder_nr, 'support_offset')", "limit_to_extruder": "support_bottom_extruder_nr", - "enabled": "support_bottom_enable and (support_enable or support_tree_enable)", + "enabled": "support_bottom_enable and (support_enable or support_meshes_present)", "settable_per_mesh": false, "settable_per_extruder": true } @@ -4883,7 +4999,7 @@ "type": "[int]", "default_value": "[ ]", "limit_to_extruder": "support_interface_extruder_nr", - "enabled": "(support_enable or support_tree_enable) and support_interface_enable and support_interface_pattern != 'concentric'", + "enabled": "(support_enable or support_meshes_present) and support_interface_enable and support_interface_pattern != 'concentric'", "settable_per_mesh": false, "settable_per_extruder": true, "children": @@ -4896,7 +5012,7 @@ "default_value": "[ ]", "value": "support_interface_angles", "limit_to_extruder": "support_roof_extruder_nr", - "enabled": "(support_enable or support_tree_enable) and support_roof_enable and support_roof_pattern != 'concentric'", + "enabled": "(support_enable or support_meshes_present) and support_roof_enable and support_roof_pattern != 'concentric'", "settable_per_mesh": false, "settable_per_extruder": true }, @@ -4908,7 +5024,7 @@ "default_value": "[ ]", "value": "support_interface_angles", "limit_to_extruder": "support_bottom_extruder_nr", - "enabled": "(support_enable or support_tree_enable) and support_bottom_enable and support_bottom_pattern != 'concentric'", + "enabled": "(support_enable or support_meshes_present) and support_bottom_enable and support_bottom_pattern != 'concentric'", "settable_per_mesh": false, "settable_per_extruder": true } @@ -4920,7 +5036,7 @@ "description": "When enabled, the print cooling fan speed is altered for the skin regions immediately above the support.", "type": "bool", "default_value": false, - "enabled": "support_enable or support_tree_enable", + "enabled": "support_enable or support_meshes_present", "settable_per_mesh": false }, "support_supported_skin_fan_speed": @@ -4932,7 +5048,7 @@ "maximum_value": "100", "default_value": 100, "type": "float", - "enabled": "(support_enable or support_tree_enable) and support_fan_enable", + "enabled": "(support_enable or support_meshes_present) and support_fan_enable", "settable_per_mesh": false }, "support_use_towers": @@ -4942,7 +5058,7 @@ "type": "bool", "default_value": true, "limit_to_extruder": "support_infill_extruder_nr", - "enabled": "support_enable", + "enabled": "support_enable and support_structure == 'normal'", "settable_per_mesh": true }, "support_tower_diameter": @@ -4956,7 +5072,7 @@ "minimum_value": "0", "minimum_value_warning": "2 * machine_nozzle_size", "maximum_value_warning": "20", - "enabled": "support_enable and support_use_towers", + "enabled": "support_enable and support_structure == 'normal' and support_use_towers", "settable_per_mesh": true }, "support_tower_maximum_supported_diameter": @@ -4971,7 +5087,7 @@ "minimum_value_warning": "2 * machine_nozzle_size", "maximum_value_warning": "20", "maximum_value": "support_tower_diameter", - "enabled": "support_enable and support_use_towers", + "enabled": "support_enable and support_structure == 'normal' and support_use_towers", "settable_per_mesh": true }, "support_tower_roof_angle": @@ -4984,7 +5100,7 @@ "maximum_value": "90", "default_value": 65, "limit_to_extruder": "support_infill_extruder_nr", - "enabled": "support_enable and support_use_towers", + "enabled": "support_enable and support_structure == 'normal' and support_use_towers", "settable_per_mesh": true }, "support_mesh_drop_down": @@ -4998,6 +5114,17 @@ "settable_per_extruder": false, "settable_per_meshgroup": false, "settable_globally": false + }, + "support_meshes_present": + { + "label": "Scene Has Support Meshes", + "description": "There are support meshes present in the scene. This setting is controlled by Cura.", + "type": "bool", + "default_value": false, + "enabled": false, + "settable_per_mesh": false, + "settable_per_extruder": false, + "settable_per_meshgroup": false } } }, @@ -5168,7 +5295,7 @@ "description": "Enforce brim to be printed around the model even if that space would otherwise be occupied by support. This replaces some regions of the first layer of support by brim regions.", "type": "bool", "default_value": true, - "enabled": "resolveOrValue('adhesion_type') == 'brim' and (support_enable or support_tree_enable)", + "enabled": "resolveOrValue('adhesion_type') == 'brim' and (support_enable or support_meshes_present)", "settable_per_mesh": false, "settable_per_extruder": true, "limit_to_extruder": "support_infill_extruder_nr" @@ -5686,7 +5813,7 @@ "minimum_value": "0", "maximum_value": "min(0.5 * machine_width, 0.5 * machine_depth)", "minimum_value_warning": "max(extruderValues('prime_tower_line_width')) * 2", - "maximum_value_warning": "20", + "maximum_value_warning": "42", "settable_per_mesh": false, "settable_per_extruder": false }, @@ -5698,7 +5825,7 @@ "type": "float", "default_value": 6, "minimum_value": "0", - "maximum_value_warning": "(resolveOrValue('prime_tower_size') * 0.5) ** 2 * 3.14159 * resolveOrValue('layer_height')", + "maximum_value_warning": "(resolveOrValue('prime_tower_size') * 0.5) ** 2 * 3.14159 * resolveOrValue('layer_height') - sum(extruderValues('prime_tower_min_volume')) + prime_tower_min_volume", "enabled": "resolveOrValue('prime_tower_enable')", "settable_per_mesh": false, "settable_per_extruder": true @@ -5725,7 +5852,7 @@ "unit": "mm", "enabled": "resolveOrValue('prime_tower_enable')", "default_value": 200, - "value": "machine_depth - prime_tower_size - max(extruderValue(adhesion_extruder_nr, 'brim_width') * extruderValue(adhesion_extruder_nr, 'initial_layer_line_width_factor') / 100 if adhesion_type == 'brim' or (prime_tower_brim_enable and adhesion_type != 'raft') else (extruderValue(adhesion_extruder_nr, 'raft_margin') if adhesion_type == 'raft' else (extruderValue(adhesion_extruder_nr, 'skirt_gap') if adhesion_type == 'skirt' else 0)), max(extruderValues('travel_avoid_distance'))) - max(extruderValues('support_offset')) - sum(extruderValues('skirt_brim_line_width')) * extruderValue(adhesion_extruder_nr, 'initial_layer_line_width_factor') / 100 - (resolveOrValue('draft_shield_dist') if resolveOrValue('draft_shield_enabled') else 0) - max(map(abs, extruderValues('machine_nozzle_offset_y'))) - 1", + "value": "machine_depth - prime_tower_size - max(extruderValue(adhesion_extruder_nr, 'brim_width') * extruderValue(adhesion_extruder_nr, 'initial_layer_line_width_factor') / 100 if adhesion_type == 'brim' or (prime_tower_brim_enable and adhesion_type != 'raft') else (extruderValue(adhesion_extruder_nr, 'raft_margin') if adhesion_type == 'raft' else (extruderValue(adhesion_extruder_nr, 'skirt_gap') if adhesion_type == 'skirt' else 0)), max(extruderValues('travel_avoid_distance'))) - max(extruderValues('support_offset')) - sum(extruderValues('skirt_brim_line_width')) * extruderValue(adhesion_extruder_nr, 'initial_layer_line_width_factor') / 100 - (resolveOrValue('draft_shield_dist') if resolveOrValue('draft_shield_enabled') else 0) - max(map(abs, extruderValues('machine_nozzle_offset_y'))) - 3", "maximum_value": "machine_depth / 2 - resolveOrValue('prime_tower_size') if machine_center_is_zero else machine_depth - resolveOrValue('prime_tower_size')", "minimum_value": "machine_depth / -2 if machine_center_is_zero else 0", "settable_per_mesh": false, @@ -5875,7 +6002,7 @@ "label": "Mesh Fixes", "type": "category", "icon": "category_fixes", - "description": "category_fixes", + "description": "Make the meshes more suited for 3D printing.", "children": { "meshfix_union_all": @@ -5952,7 +6079,7 @@ "description": "Remove empty layers beneath the first printed layer if they are present. Disabling this setting can cause empty first layers if the Slicing Tolerance setting is set to Exclusive or Middle.", "type": "bool", "default_value": true, - "enabled": "not (support_enable or support_tree_enable)", + "enabled": "not (support_enable or support_meshes_present)", "settable_per_mesh": false, "settable_per_extruder": false }, @@ -5988,7 +6115,7 @@ "description": "The maximum deviation allowed when reducing the resolution for the Maximum Resolution setting. If you increase this, the print will be less accurate, but the g-code will be smaller. Maximum Deviation is a limit for Maximum Resolution, so if the two conflict the Maximum Deviation will always be held true.", "type": "float", "unit": "mm", - "default_value": 0.05, + "default_value": 0.025, "minimum_value": "0.001", "minimum_value_warning": "0.01", "maximum_value_warning": "0.3", @@ -6001,13 +6128,13 @@ "label": "Special Modes", "type": "category", "icon": "category_blackmagic", - "description": "category_blackmagic", + "description": "Non-traditional ways to print your models.", "children": { "print_sequence": { "label": "Print Sequence", - "description": "Whether to print all models one layer at a time or to wait for one model to finish, before moving on to the next. One at a time mode is possible if a) only one extruder is enabled and b) all models are separated in such a way that the whole print head can move in between and all models are lower than the distance between the nozzle and the X/Y axes. ", + "description": "Whether to print all models one layer at a time or to wait for one model to finish, before moving on to the next. One at a time mode is possible if a) only one extruder is enabled and b) all models are separated in such a way that the whole print head can move in between and all models are lower than the distance between the nozzle and the X/Y axes.", "type": "enum", "options": { @@ -6033,8 +6160,8 @@ }, "infill_mesh_order": { - "label": "Infill Mesh Order", - "description": "Determines which infill mesh is inside the infill of another infill mesh. An infill mesh with a higher order will modify the infill of infill meshes with lower order and normal meshes.", + "label": "Mesh Processing Rank", + "description": "Determines the priority of this mesh when considering multiple overlapping infill meshes. Areas where multiple infill meshes overlap will take on the settings of the mesh with the highest rank. An infill mesh with a higher rank will modify the infill of infill meshes with lower rank and normal meshes.", "default_value": 0, "value": "1 if infill_mesh else 0", "minimum_value_warning": "1", @@ -6174,94 +6301,13 @@ "label": "Experimental", "type": "category", "icon": "category_experimental", - "description": "experimental!", + "description": "Features that haven't completely been fleshed out yet.", "children": { - "support_tree_enable": - { - "label": "Tree Support", - "description": "Generate a tree-like support with branches that support your print. This may reduce material usage and print time, but greatly increases slicing time.", - "type": "bool", - "default_value": false, - "settable_per_mesh": true, - "settable_per_extruder": false - }, - "support_tree_angle": - { - "label": "Tree Support Branch Angle", - "description": "The angle of the branches. Use a lower angle to make them more vertical and more stable. Use a higher angle to be able to have more reach.", - "unit": "°", - "type": "float", - "minimum_value": "0", - "maximum_value": "90", - "maximum_value_warning": "60", - "default_value": 40, - "limit_to_extruder": "support_infill_extruder_nr", - "enabled": "support_tree_enable", - "settable_per_mesh": false, - "settable_per_extruder": true - }, - "support_tree_branch_distance": - { - "label": "Tree Support Branch Distance", - "description": "How far apart the branches need to be when they touch the model. Making this distance small will cause the tree support to touch the model at more points, causing better overhang but making support harder to remove.", - "unit": "mm", - "type": "float", - "minimum_value": "0.001", - "default_value": 1, - "limit_to_extruder": "support_infill_extruder_nr", - "enabled": "support_tree_enable", - "settable_per_mesh": true - }, - "support_tree_branch_diameter": - { - "label": "Tree Support Branch Diameter", - "description": "The diameter of the thinnest branches of tree support. Thicker branches are more sturdy. Branches towards the base will be thicker than this.", - "unit": "mm", - "type": "float", - "minimum_value": "0.001", - "minimum_value_warning": "support_line_width * 2", - "default_value": 2, - "limit_to_extruder": "support_infill_extruder_nr", - "enabled": "support_tree_enable", - "settable_per_mesh": false, - "settable_per_extruder": true - }, - "support_tree_branch_diameter_angle": - { - "label": "Tree Support Branch Diameter Angle", - "description": "The angle of the branches' diameter as they gradually become thicker towards the bottom. An angle of 0 will cause the branches to have uniform thickness over their length. A bit of an angle can increase stability of the tree support.", - "unit": "°", - "type": "float", - "minimum_value": "0", - "maximum_value": "89.9999", - "maximum_value_warning": "15", - "default_value": 5, - "limit_to_extruder": "support_infill_extruder_nr", - "enabled": "support_tree_enable", - "settable_per_mesh": false, - "settable_per_extruder": true - }, - "support_tree_collision_resolution": - { - "label": "Tree Support Collision Resolution", - "description": "Resolution to compute collisions with to avoid hitting the model. Setting this lower will produce more accurate trees that fail less often, but increases slicing time dramatically.", - "unit": "mm", - "type": "float", - "minimum_value": "0.001", - "minimum_value_warning": "support_line_width / 4", - "maximum_value_warning": "support_line_width * 2", - "default_value": 0.4, - "value": "support_line_width / 2", - "limit_to_extruder": "support_infill_extruder_nr", - "enabled": "support_tree_enable and support_tree_branch_diameter_angle > 0", - "settable_per_mesh": false, - "settable_per_extruder": true - }, "slicing_tolerance": { "label": "Slicing Tolerance", - "description": "How to slice layers with diagonal surfaces. The areas of a layer can be generated based on where the middle of the layer intersects the surface (Middle). Alternatively each layer can have the areas which fall inside of the volume throughout the height of the layer (Exclusive) or a layer has the areas which fall inside anywhere within the layer (Inclusive). Exclusive retains the most details, Inclusive makes for the best fit and Middle takes the least time to process.", + "description": "Vertical tolerance in the sliced layers. The contours of a layer are normally generated by taking cross sections through the middle of each layer's thickness (Middle). Alternatively each layer can have the areas which fall inside of the volume throughout the entire thickness of the layer (Exclusive) or a layer has the areas which fall inside anywhere within the layer (Inclusive). Inclusive retains the most details, Exclusive makes for the best fit and Middle stays closest to the original surface.", "type": "enum", "options": { @@ -6364,7 +6410,7 @@ "description": "Skip some support line connections to make the support structure easier to break away. This setting is applicable to the Zig Zag support infill pattern.", "type": "bool", "default_value": false, - "enabled": "support_enable and (support_pattern == 'zigzag')", + "enabled": "(support_enable or support_meshes_present) and support_pattern == 'zigzag'", "limit_to_extruder": "support_infill_extruder_nr", "settable_per_mesh": false, "settable_per_extruder": true @@ -6378,7 +6424,7 @@ "default_value": 20, "minimum_value": "0", "minimum_value_warning": "support_line_distance", - "enabled": "support_enable and (support_pattern == 'zigzag') and support_skip_some_zags", + "enabled": "(support_enable or support_meshes_present) and support_pattern == 'zigzag' and support_skip_some_zags", "limit_to_extruder": "support_infill_extruder_nr", "settable_per_mesh": false, "settable_per_extruder": true, @@ -6393,7 +6439,7 @@ "value": "0 if support_line_distance == 0 else round(support_skip_zag_per_mm / support_line_distance)", "minimum_value": "1", "minimum_value_warning": "3", - "enabled": "support_enable and (support_pattern == 'zigzag') and support_skip_some_zags", + "enabled": "(support_enable or support_meshes_present) and support_pattern == 'zigzag' and support_skip_some_zags", "limit_to_extruder": "support_infill_extruder_nr", "settable_per_mesh": false, "settable_per_extruder": true @@ -6555,99 +6601,13 @@ "settable_per_mesh": false, "settable_per_extruder": true }, - "spaghetti_infill_enabled": - { - "label": "Spaghetti Infill", - "description": "Print the infill every so often, so that the filament will curl up chaotically inside the object. This reduces print time, but the behaviour is rather unpredictable.", - "type": "bool", - "default_value": false, - "enabled": "infill_sparse_density > 0", - "limit_to_extruder": "infill_extruder_nr", - "settable_per_mesh": true - }, - "spaghetti_infill_stepped": - { - "label": "Spaghetti Infill Stepping", - "description": "Whether to print spaghetti infill in steps or extrude all the infill filament at the end of the print.", - "type": "bool", - "default_value": true, - "enabled": "infill_sparse_density > 0 and spaghetti_infill_enabled", - "limit_to_extruder": "infill_extruder_nr", - "settable_per_mesh": true - }, - "spaghetti_max_infill_angle": - { - "label": "Spaghetti Maximum Infill Angle", - "description": "The maximum angle w.r.t. the Z axis of the inside of the print for areas which are to be filled with spaghetti infill afterwards. Lowering this value causes more angled parts in your model to be filled on each layer.", - "unit": "°", - "type": "float", - "default_value": 10, - "minimum_value": "0", - "maximum_value": "90", - "maximum_value_warning": "45", - "enabled": "infill_sparse_density > 0 and spaghetti_infill_enabled and spaghetti_infill_stepped", - "limit_to_extruder": "infill_extruder_nr", - "settable_per_mesh": true - }, - "spaghetti_max_height": - { - "label": "Spaghetti Infill Maximum Height", - "description": "The maximum height of inside space which can be combined and filled from the top.", - "unit": "mm", - "type": "float", - "default_value": 2.0, - "minimum_value": "layer_height", - "maximum_value_warning": "10.0", - "enabled": "infill_sparse_density > 0 and spaghetti_infill_enabled and spaghetti_infill_stepped", - "limit_to_extruder": "infill_extruder_nr", - "settable_per_mesh": true - }, - "spaghetti_inset": - { - "label": "Spaghetti Inset", - "description": "The offset from the walls from where the spaghetti infill will be printed.", - "unit": "mm", - "type": "float", - "default_value": 0.2, - "minimum_value_warning": "0", - "maximum_value_warning": "5.0", - "enabled": "infill_sparse_density > 0 and spaghetti_infill_enabled", - "limit_to_extruder": "infill_extruder_nr", - "settable_per_mesh": true - }, - "spaghetti_flow": - { - "label": "Spaghetti Flow", - "description": "Adjusts the density of the spaghetti infill. Note that the Infill Density only controls the line spacing of the filling pattern, not the amount of extrusion for spaghetti infill.", - "unit": "%", - "type": "float", - "default_value": 20, - "minimum_value": "0", - "maximum_value_warning": "100", - "enabled": "infill_sparse_density > 0 and spaghetti_infill_enabled", - "limit_to_extruder": "infill_extruder_nr", - "settable_per_mesh": true - }, - "spaghetti_infill_extra_volume": - { - "label": "Spaghetti Infill Extra Volume", - "description": "A correction term to adjust the total volume being extruded each time when filling spaghetti.", - "unit": "mm³", - "type": "float", - "default_value": 0, - "minimum_value_warning": "0", - "maximum_value_warning": "100", - "enabled": "infill_sparse_density > 0 and spaghetti_infill_enabled", - "limit_to_extruder": "infill_extruder_nr", - "settable_per_mesh": true - }, "support_conical_enabled": { "label": "Enable Conical Support", "description": "Make support areas smaller at the bottom than at the overhang.", "type": "bool", "default_value": false, - "enabled": "support_enable", + "enabled": "support_enable and support_structure != 'tree'", "limit_to_extruder": "support_infill_extruder_nr", "settable_per_mesh": true }, @@ -6662,7 +6622,7 @@ "maximum_value_warning": "45", "maximum_value": "90", "default_value": 30, - "enabled": "support_conical_enabled and support_enable", + "enabled": "support_conical_enabled and support_enable and support_structure != 'tree'", "limit_to_extruder": "support_infill_extruder_nr", "settable_per_mesh": true }, @@ -6676,7 +6636,7 @@ "minimum_value_warning": "machine_nozzle_size * 3", "maximum_value_warning": "100.0", "type": "float", - "enabled": "support_conical_enabled and support_enable and support_conical_angle > 0", + "enabled": "support_conical_enabled and support_enable and support_structure != 'tree' and support_conical_angle > 0", "limit_to_extruder": "support_infill_extruder_nr", "settable_per_mesh": true }, @@ -7202,6 +7162,7 @@ "description": "Detect bridges and modify print speed, flow and fan settings while bridges are printed.", "type": "bool", "default_value": false, + "resolve": "any(extruderValues('bridge_settings_enabled'))", "settable_per_mesh": true, "settable_per_extruder": false, "settable_per_meshgroup": false |