diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 6134a2fcb4..fd232d4e36 100755 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -1121,6 +1121,65 @@ "type": "[int]", "default_value": "[ ]", "enabled": "infill_pattern != 'concentric' and infill_pattern != 'concentric_3d' and infill_pattern != 'cubicsubdiv'", + "enabled": "infill_sparse_density > 0", + "settable_per_mesh": 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", + "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", + "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", + "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", + "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", "settable_per_mesh": true }, "sub_div_rad_mult": @@ -1229,9 +1288,9 @@ "default_value": 0.1, "minimum_value": "resolveOrValue('layer_height')", "maximum_value_warning": "0.75 * machine_nozzle_size", - "maximum_value": "resolveOrValue('layer_height') * 8", + "maximum_value": "resolveOrValue('layer_height') * (1.45 if spaghetti_infill_enabled else 8)", "value": "resolveOrValue('layer_height')", - "enabled": "infill_sparse_density > 0", + "enabled": "infill_sparse_density > 0 and not spaghetti_infill_enabled", "settable_per_mesh": true }, "gradual_infill_steps": @@ -1242,8 +1301,8 @@ "type": "int", "minimum_value": "0", "maximum_value_warning": "4", - "maximum_value": "(20 - math.log(infill_line_distance) / math.log(2)) if infill_line_distance > 0 else 0", - "enabled": "infill_sparse_density > 0 and infill_pattern != 'cubicsubdiv'", + "maximum_value": "(20 - math.log(infill_line_distance) / math.log(2)) if infill_line_distance > 0 and not spaghetti_infill_enabled else 0", + "enabled": "infill_sparse_density > 0 and infill_pattern != 'cubicsubdiv' and not spaghetti_infill_enabled", "settable_per_mesh": true }, "gradual_infill_step_height":