From 1491c37485c49750c0f13dade58343406b0e1d7c Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Fri, 3 Nov 2017 16:03:28 +0100 Subject: [PATCH 01/18] Don't crash if support density is 0 Found while working on CURA-4523. --- resources/definitions/fdmprinter.def.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index cffaa1df3d..459d1911b1 100644 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -3495,7 +3495,7 @@ "minimum_value_warning": "support_line_width", "default_value": 2.66, "enabled": "support_enable", - "value": "(support_line_width * 100) / support_infill_rate * (2 if support_pattern == 'grid' else (3 if support_pattern == 'triangles' else 1))", + "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, "settable_per_extruder": true @@ -5127,7 +5127,7 @@ "description": "Skip one in every N connection lines to make the support structure easier to break away.", "type": "int", "default_value": 5, - "value": "round(support_skip_zag_per_mm / support_line_distance)", + "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", From f89c494274adf473fb699906f43b87411f7f4f0c Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Fri, 3 Nov 2017 09:24:46 +0100 Subject: [PATCH 02/18] Add settings for tree support These three to start with. I don't know if I can implement more. We'll see about that later. Contributes to issue CURA-4523. --- resources/definitions/fdmprinter.def.json | 38 +++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 459d1911b1..815fed7390 100644 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -3655,6 +3655,44 @@ "limit_to_extruder": "support_infill_extruder_nr", "settable_per_mesh": false }, + "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.", + "type": "bool", + "default_value": false, + "settable_per_mesh": true + }, + "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_wall_thickness": + { + "label": "Tree Support Wall Thickness", + "description": "The thickness of the walls of the tree support. Thicker walls take longer to print but are more stable.", + "unit": "mm", + "type": "float", + "minimum_value": "0", + "minimum_value_warning": "wall_line_width", + "default_value": 0.8, + "value": "wall_line_width * 2", + "limit_to_extruder": "support_infill_extruder_nr", + "enabled": "support_tree_enable", + "settable_per_mesh": false, + "settable_per_extruder": true + }, "gradual_support_infill_steps": { "label": "Gradual Support Infill Steps", From 72c32bac3a16182ed99a7a89cad7d90f1fdb2cb0 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Fri, 3 Nov 2017 10:55:23 +0100 Subject: [PATCH 03/18] Add tree support wall line count setting I knew I forgot one. Contributes to issue CURA-4523. --- resources/definitions/fdmprinter.def.json | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 815fed7390..c2a069aa6e 100644 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -3681,7 +3681,7 @@ "support_tree_wall_thickness": { "label": "Tree Support Wall Thickness", - "description": "The thickness of the walls of the tree support. Thicker walls take longer to print but are more stable.", + "description": "The thickness of the walls of the branches of tree support. Thicker walls take longer to print but don't fall over as easily.", "unit": "mm", "type": "float", "minimum_value": "0", @@ -3691,7 +3691,24 @@ "limit_to_extruder": "support_infill_extruder_nr", "enabled": "support_tree_enable", "settable_per_mesh": false, - "settable_per_extruder": true + "settable_per_extruder": true, + "children": + { + "support_tree_wall_line_count": + { + "label": "Tree Support Wall Line Count", + "description": "The number of walls of the branches of tree support. Thicker walls take longer to print but don't fall over as easily.", + "type": "int", + "minimum_value": "0", + "minimum_value_warning": "1", + "default_value": 2, + "value": "round(support_tree_wall_thickness / support_line_width)", + "limit_to_extruder": "support_infill_extruder_nr", + "enabled": "support_tree_enable", + "settable_per_mesh": false, + "settable_per_extruder": true + } + } }, "gradual_support_infill_steps": { From 79dee2619e8bc36d961781a42789af85d090cd53 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Mon, 6 Nov 2017 15:27:43 +0100 Subject: [PATCH 04/18] Also show some of the support settings for support trees Only the ones that are applicable to support trees as well (such as the overhang angle). I haven't decided on whether support interfaces should be implemented. Maybe later. Contributes to issue CURA-4523. --- resources/definitions/fdmprinter.def.json | 26 +++++++++++------------ 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index c2a069aa6e..f57273e280 100644 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -3344,7 +3344,7 @@ "description": "The extruder train to use for printing the support. This is used in multi-extrusion.", "type": "extruder", "default_value": "0", - "enabled": "support_enable and machine_extruder_count > 1", + "enabled": "(support_enable or support_tree_enable) and machine_extruder_count > 1", "settable_per_mesh": false, "settable_per_extruder": false, "children": { @@ -3355,7 +3355,7 @@ "type": "extruder", "default_value": "0", "value": "support_extruder_nr", - "enabled": "support_enable and machine_extruder_count > 1", + "enabled": "(support_enable or support_tree_enable) and machine_extruder_count > 1", "settable_per_mesh": false, "settable_per_extruder": false }, @@ -3366,7 +3366,7 @@ "type": "extruder", "default_value": "0", "value": "support_extruder_nr", - "enabled": "support_enable and machine_extruder_count > 1", + "enabled": "(support_enable or support_tree_enable) and machine_extruder_count > 1", "settable_per_mesh": false, "settable_per_extruder": false }, @@ -3420,7 +3420,7 @@ }, "default_value": "everywhere", "resolve": "'everywhere' if 'everywhere' in extruderValues('support_type') else 'buildplate'", - "enabled": "support_enable", + "enabled": "support_enable or support_tree_enable", "settable_per_mesh": false, "settable_per_extruder": false }, @@ -3435,7 +3435,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", + "enabled": "support_enable or support_tree_enable", "settable_per_mesh": true }, "support_pattern": @@ -3512,7 +3512,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", + "enabled": "support_enable or support_tree_enable", "settable_per_mesh": true, "children": { @@ -3525,7 +3525,7 @@ "maximum_value_warning": "machine_nozzle_size", "default_value": 0.1, "type": "float", - "enabled": "support_enable", + "enabled": "support_enable or support_tree_enable", "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 @@ -3541,7 +3541,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 and resolveOrValue('support_type') == 'everywhere'", + "enabled": "(support_enable or support_tree_enable) and resolveOrValue('support_type') == 'everywhere'", "settable_per_mesh": true } } @@ -3556,7 +3556,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", + "enabled": "support_enable or support_tree_enable", "settable_per_mesh": true }, "support_xy_overrides_z": @@ -3571,7 +3571,7 @@ }, "default_value": "z_overrides_xy", "limit_to_extruder": "support_infill_extruder_nr", - "enabled": "support_enable", + "enabled": "support_enable or support_tree_enable", "settable_per_mesh": true }, "support_xy_distance_overhang": @@ -3585,7 +3585,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_tree_enable) and support_xy_overrides_z == 'z_overrides_xy'", "settable_per_mesh": true }, "support_bottom_stair_step_height": @@ -3651,7 +3651,7 @@ "maximum_value_warning": "0.75 * machine_nozzle_size", "maximum_value": "resolveOrValue('layer_height') * 8", "value": "resolveOrValue('layer_height')", - "enabled": "support_enable and support_infill_rate > 0", + "enabled": "(support_enable or support_tree_enable) and support_infill_rate > 0", "limit_to_extruder": "support_infill_extruder_nr", "settable_per_mesh": false }, @@ -4036,7 +4036,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", + "enabled": "not support_enable and not support_tree_enable", "settable_per_mesh": false, "settable_per_extruder": false } From 2ce7c919119e91e5629eb751e277ab7572a2ec0a Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Mon, 6 Nov 2017 17:30:07 +0100 Subject: [PATCH 05/18] Add setting for contact point spread I'm not sure what will come of this later, but for now I need it. Contributes to issue CURA-4523. --- resources/definitions/fdmprinter.def.json | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index f57273e280..8c311a9f2f 100644 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -3678,6 +3678,18 @@ "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": 4, + "limit_to_extruder": "support_infill_extruder_nr", + "enabled": "support_tree_enable", + "settable_per_mesh": true + }, "support_tree_wall_thickness": { "label": "Tree Support Wall Thickness", From 380b0ed2e7154fbd581296ef02cc3bdea2f02695 Mon Sep 17 00:00:00 2001 From: Ruben D Date: Wed, 8 Nov 2017 20:11:49 +0100 Subject: [PATCH 06/18] Add setting for branch diameter Contributes to issue CURA-4523. --- resources/definitions/fdmprinter.def.json | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 8c311a9f2f..176c41dce7 100644 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -3690,6 +3690,20 @@ "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_wall_thickness": { "label": "Tree Support Wall Thickness", From b660b2ca862f5084837834f771f0e99f1b8d5c91 Mon Sep 17 00:00:00 2001 From: Ruben D Date: Thu, 9 Nov 2017 00:47:20 +0100 Subject: [PATCH 07/18] Rename support_tree_wall_line_count to support_tree_wall_count Wall line is double. Just name it wall. Contributes to issue CURA-4523. --- resources/definitions/fdmprinter.def.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 176c41dce7..14d7e7f39e 100644 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -3720,7 +3720,7 @@ "settable_per_extruder": true, "children": { - "support_tree_wall_line_count": + "support_tree_wall_count": { "label": "Tree Support Wall Line Count", "description": "The number of walls of the branches of tree support. Thicker walls take longer to print but don't fall over as easily.", From cd6b1aca2956d40eb505780293bb22930b6a595f Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Fri, 10 Nov 2017 13:05:32 +0100 Subject: [PATCH 08/18] Add branch diameter angle setting It's a bit obscure. Could we devise a better setting name? Contributes to issue CURA-4523. --- resources/definitions/fdmprinter.def.json | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 14d7e7f39e..c9dae14bd4 100644 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -3704,6 +3704,22 @@ "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 negative angle makes them thinner towards the bottom, so be careful as they might disappear. A small positive angle can increase stability of the tree support.", + "unit": "°", + "type": "float", + "minimum_value": "-89.9999", + "maximum_value": "89.9999", + "minimum_value_warning": "0", + "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_wall_thickness": { "label": "Tree Support Wall Thickness", From 4cc895b54b7c242aac4ea08f57dd1b4749ae7e36 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Fri, 10 Nov 2017 13:06:29 +0100 Subject: [PATCH 09/18] Use 1 wall for tree support by default Contributes to issue CURA-4523. --- resources/definitions/fdmprinter.def.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index c9dae14bd4..b127b614af 100644 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -3729,7 +3729,7 @@ "minimum_value": "0", "minimum_value_warning": "wall_line_width", "default_value": 0.8, - "value": "wall_line_width * 2", + "value": "support_line_width", "limit_to_extruder": "support_infill_extruder_nr", "enabled": "support_tree_enable", "settable_per_mesh": false, @@ -3743,7 +3743,7 @@ "type": "int", "minimum_value": "0", "minimum_value_warning": "1", - "default_value": 2, + "default_value": 1, "value": "round(support_tree_wall_thickness / support_line_width)", "limit_to_extruder": "support_infill_extruder_nr", "enabled": "support_tree_enable", From 57a2bf7c5f739c4e80bfe05487546ee3aeb940d3 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Mon, 13 Nov 2017 16:33:46 +0100 Subject: [PATCH 10/18] Move tree support to the top of the support category Because it's logical to have it before all of the settings that are enabled/disabled by it. Contributes to issue CURA-4523. --- resources/definitions/fdmprinter.def.json | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index b127b614af..81166a711e 100644 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -3338,6 +3338,14 @@ "settable_per_mesh": true, "settable_per_extruder": false }, + "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.", + "type": "bool", + "default_value": false, + "settable_per_mesh": true + }, "support_extruder_nr": { "label": "Support Extruder", @@ -3655,14 +3663,6 @@ "limit_to_extruder": "support_infill_extruder_nr", "settable_per_mesh": false }, - "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.", - "type": "bool", - "default_value": false, - "settable_per_mesh": true - }, "support_tree_angle": { "label": "Tree Support Branch Angle", From bb4cb1eb7d11bc7368e3a8cf7b14379f70c644c2 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Mon, 13 Nov 2017 17:58:50 +0100 Subject: [PATCH 11/18] Make support infill related settings visible if support tree enabled Because the areas generated by support trees are also filled in as normal. Contributes to issue CURA-4523. --- resources/definitions/fdmprinter.def.json | 45 ++++++++++++----------- 1 file changed, 23 insertions(+), 22 deletions(-) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 81166a711e..ef107be412 100644 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -3344,7 +3344,8 @@ "description": "Generate a tree-like support with branches that support your print. This may reduce material usage and print time.", "type": "bool", "default_value": false, - "settable_per_mesh": true + "settable_per_mesh": true, + "settable_per_extruder": false }, "support_extruder_nr": { @@ -3385,7 +3386,7 @@ "type": "extruder", "default_value": "0", "value": "support_extruder_nr", - "enabled": "support_enable and machine_extruder_count > 1", + "enabled": "(support_enable or support_tree_enable) and machine_extruder_count > 1", "settable_per_mesh": false, "settable_per_extruder": false, "children": @@ -3397,7 +3398,7 @@ "type": "extruder", "default_value": "0", "value": "support_interface_extruder_nr", - "enabled": "support_enable and machine_extruder_count > 1", + "enabled": "(support_enable or support_tree_enable) and machine_extruder_count > 1", "settable_per_mesh": false, "settable_per_extruder": false }, @@ -3462,7 +3463,7 @@ "cross": "Cross" }, "default_value": "zigzag", - "enabled": "support_enable", + "enabled": "support_enable or support_tree_enable", "limit_to_extruder": "support_infill_extruder_nr", "settable_per_mesh": false, "settable_per_extruder": true @@ -3473,7 +3474,7 @@ "description": "Connect the ZigZags. This will increase the strength of the zig zag support structure.", "type": "bool", "default_value": true, - "enabled": "support_enable and (support_pattern == 'zigzag')", + "enabled": "(support_enable or support_tree_enable) and support_pattern == 'zigzag'", "limit_to_extruder": "support_infill_extruder_nr", "settable_per_mesh": false, "settable_per_extruder": true @@ -3487,7 +3488,7 @@ "minimum_value": "0", "maximum_value_warning": "100", "default_value": 15, - "enabled": "support_enable", + "enabled": "support_enable or support_tree_enable", "limit_to_extruder": "support_infill_extruder_nr", "settable_per_mesh": false, "settable_per_extruder": true, @@ -3502,7 +3503,7 @@ "minimum_value": "0", "minimum_value_warning": "support_line_width", "default_value": 2.66, - "enabled": "support_enable", + "enabled": "support_enable or support_tree_enable", "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, @@ -3579,7 +3580,7 @@ }, "default_value": "z_overrides_xy", "limit_to_extruder": "support_infill_extruder_nr", - "enabled": "support_enable or support_tree_enable", + "enabled": "support_enable", "settable_per_mesh": true }, "support_xy_distance_overhang": @@ -3593,7 +3594,7 @@ "default_value": 0.2, "value": "machine_nozzle_size / 2", "limit_to_extruder": "support_infill_extruder_nr", - "enabled": "(support_enable or support_tree_enable) and support_xy_overrides_z == 'z_overrides_xy'", + "enabled": "support_enable and support_xy_overrides_z == 'z_overrides_xy'", "settable_per_mesh": true }, "support_bottom_stair_step_height": @@ -3761,7 +3762,7 @@ "minimum_value": "0", "maximum_value_warning": "1 if (support_pattern == 'cross' or support_pattern == 'lines' or support_pattern == 'zigzag' or support_pattern == 'concentric' or support_pattern == 'concentric_3d') else 5", "maximum_value": "999999 if support_line_distance == 0 else (20 - math.log(support_line_distance) / math.log(2))", - "enabled": "support_enable and support_infill_rate > 0", + "enabled": "(support_enable or support_tree_enable) and support_infill_rate > 0", "limit_to_extruder": "support_infill_extruder_nr", "settable_per_mesh": false }, @@ -3774,7 +3775,7 @@ "default_value": 1, "minimum_value": "0.0001", "minimum_value_warning": "3 * resolveOrValue('layer_height')", - "enabled": "support_enable and support_infill_rate > 0 and gradual_support_infill_steps > 0", + "enabled": "(support_enable or support_tree_enable) and support_infill_rate > 0 and gradual_support_infill_steps > 0", "limit_to_extruder": "support_infill_extruder_nr", "settable_per_mesh": false }, @@ -3785,7 +3786,7 @@ "type": "bool", "default_value": false, "limit_to_extruder": "support_interface_extruder_nr", - "enabled": "support_enable", + "enabled": "support_enable or support_tree_enable", "settable_per_mesh": true, "children": { @@ -3797,7 +3798,7 @@ "default_value": false, "value": "extruderValue(support_roof_extruder_nr, 'support_interface_enable')", "limit_to_extruder": "support_roof_extruder_nr", - "enabled": "support_enable", + "enabled": "support_enable or support_tree_enable", "settable_per_mesh": true }, "support_bottom_enable": @@ -3824,7 +3825,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", + "enabled": "support_interface_enable and (support_enable or support_tree_enable)", "settable_per_mesh": true, "children": { @@ -3840,7 +3841,7 @@ "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", + "enabled": "support_roof_enable and (support_enable or support_tree_enable)", "settable_per_mesh": true }, "support_bottom_height": @@ -3855,7 +3856,7 @@ "minimum_value_warning": "min(0.2 + 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", + "enabled": "support_bottom_enable and (support_enable or support_tree_enable)", "settable_per_mesh": true } } @@ -3882,7 +3883,7 @@ "minimum_value": "0", "maximum_value_warning": "100", "limit_to_extruder": "support_interface_extruder_nr", - "enabled": "support_interface_enable and support_enable", + "enabled": "support_interface_enable and (support_enable or support_tree_enable)", "settable_per_mesh": false, "settable_per_extruder": true, "children": @@ -3897,7 +3898,7 @@ "minimum_value": "0", "maximum_value": "100", "limit_to_extruder": "support_roof_extruder_nr", - "enabled": "support_roof_enable and support_enable", + "enabled": "support_roof_enable and (support_enable or support_tree_enable)", "value": "extruderValue(support_roof_extruder_nr, 'support_interface_density')", "settable_per_mesh": false, "settable_per_extruder": true, @@ -3914,7 +3915,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", + "enabled": "support_roof_enable and (support_enable or support_tree_enable)", "settable_per_mesh": false, "settable_per_extruder": true } @@ -3971,7 +3972,7 @@ }, "default_value": "concentric", "limit_to_extruder": "support_interface_extruder_nr", - "enabled": "support_interface_enable and support_enable", + "enabled": "support_interface_enable and (support_enable or support_tree_enable)", "settable_per_mesh": false, "settable_per_extruder": true, "children": @@ -3993,7 +3994,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", + "enabled": "support_roof_enable and (support_enable or support_tree_enable)", "settable_per_mesh": false, "settable_per_extruder": true }, @@ -4014,7 +4015,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", + "enabled": "support_bottom_enable and (support_enable or support_tree_enable)", "settable_per_mesh": false, "settable_per_extruder": true } From 7c85b222b2cff55deb93d42e4431bc264c08c58b Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Tue, 14 Nov 2017 17:45:45 +0100 Subject: [PATCH 12/18] Don't use support infill by default when printing tree support Only when using area support really. Contributes to issue CURA-4523. --- resources/definitions/fdmprinter.def.json | 1 + 1 file changed, 1 insertion(+) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index ef107be412..ee6996b2de 100644 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -3488,6 +3488,7 @@ "minimum_value": "0", "maximum_value_warning": "100", "default_value": 15, + "value": "15 if support_enable else 0", "enabled": "support_enable or support_tree_enable", "limit_to_extruder": "support_infill_extruder_nr", "settable_per_mesh": false, From fc187d100a6aaf37e3ef3dd22ea30b84c694f9fe Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Wed, 15 Nov 2017 16:00:42 +0100 Subject: [PATCH 13/18] Add setting to tweak collision area sampling resolution Because this can make a lot of difference for the slice time and the stability of the support. Contributes to issue CURA-4523. --- resources/definitions/fdmprinter.def.json | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index ee6996b2de..db2ee3dc90 100644 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -3722,6 +3722,22 @@ "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", + "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 + }, "support_tree_wall_thickness": { "label": "Tree Support Wall Thickness", From 948301c531e776dc0fdf82659153ddaab64dd22c Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Tue, 12 Dec 2017 09:28:42 +0100 Subject: [PATCH 14/18] Remove duplicate setting definition I think this was a merge conflict. Contributes to issue CURA-4523. --- resources/definitions/fdmprinter.def.json | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 46991dd6e6..fcd73bdf00 100644 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -4226,16 +4226,6 @@ "limit_to_extruder": "support_infill_extruder_nr", "enabled": "support_enable and support_use_towers", "settable_per_mesh": true - }, - "remove_empty_first_layers": - { - "label": "Remove Empty First Layers", - "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 and not support_tree_enable", - "settable_per_mesh": false, - "settable_per_extruder": false } } }, From 2451e903706f7ca92ed7b3048218cabec123a3e2 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Mon, 18 Dec 2017 09:57:03 +0100 Subject: [PATCH 15/18] Increase default resolution for tree support Otherwise you get lines falling completely next to the previous layer. Contributes to issue CURA-4523. --- resources/definitions/fdmprinter.def.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index fcd73bdf00..8438bf1fa3 100644 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -3869,7 +3869,7 @@ "minimum_value_warning": "support_line_width / 4", "maximum_value_warning": "support_line_width * 2", "default_value": 0.4, - "value": "support_line_width", + "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, From f538c3a6863a6327d81d46645e30712024afc376 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Mon, 18 Dec 2017 14:53:24 +0100 Subject: [PATCH 16/18] Allow support bottom extruder to be set with tree support It is now implemented. Contributes to issue CURA-4523. --- resources/definitions/fdmprinter.def.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 8438bf1fa3..cfad51eeb5 100644 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -3546,7 +3546,7 @@ "type": "extruder", "default_value": "0", "value": "support_interface_extruder_nr", - "enabled": "support_enable and machine_extruder_count > 1", + "enabled": "(support_enable or support_tree_enable) and machine_extruder_count > 1", "settable_per_mesh": false, "settable_per_extruder": false } @@ -3963,7 +3963,7 @@ "default_value": false, "value": "extruderValue(support_bottom_extruder_nr, 'support_interface_enable')", "limit_to_extruder": "support_bottom_extruder_nr", - "enabled": "support_enable", + "enabled": "support_enable or support_tree_enable", "settable_per_mesh": true } } @@ -4085,7 +4085,7 @@ "minimum_value": "0", "maximum_value": "100", "limit_to_extruder": "support_bottom_extruder_nr", - "enabled": "support_bottom_enable and support_enable", + "enabled": "support_bottom_enable and (support_enable or support_tree_enable)", "value": "extruderValue(support_bottom_extruder_nr, 'support_interface_density')", "settable_per_mesh": false, "settable_per_extruder": true, @@ -4102,7 +4102,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", + "enabled": "support_bottom_enable and (support_enable or support_tree_enable)", "settable_per_mesh": false, "settable_per_extruder": true } From 192db52d4860c495601fc71ca40f4f89b84f5227 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Tue, 2 Jan 2018 16:27:13 +0100 Subject: [PATCH 17/18] Spelling We hold American English, at least for user-visible parts. --- plugins/SliceInfoPlugin/SliceInfo.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/SliceInfoPlugin/SliceInfo.py b/plugins/SliceInfoPlugin/SliceInfo.py index 508d174cf2..45402c9c40 100755 --- a/plugins/SliceInfoPlugin/SliceInfo.py +++ b/plugins/SliceInfoPlugin/SliceInfo.py @@ -40,7 +40,7 @@ class SliceInfo(Extension): Preferences.getInstance().addPreference("info/asked_send_slice_info", False) if not Preferences.getInstance().getValue("info/asked_send_slice_info") and Preferences.getInstance().getValue("info/send_slice_info"): - self.send_slice_info_message = Message(catalog.i18nc("@info", "Cura collects anonymised slicing statistics. You can disable this in the preferences."), + self.send_slice_info_message = Message(catalog.i18nc("@info", "Cura collects anonymized slicing statistics. You can disable this in the preferences."), lifetime = 0, dismissable = False, title = catalog.i18nc("@info:title", "Collecting Data")) From e18b3b36697f4fc6ee571540b4a4f1484faafdc5 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Wed, 3 Jan 2018 17:29:49 +0100 Subject: [PATCH 18/18] Remove duplicate setting Some merge conflict, I think. Contributes to issue CURA-4523. --- resources/definitions/fdmprinter.def.json | 17 +---------------- 1 file changed, 1 insertion(+), 16 deletions(-) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index cfad51eeb5..15047be75a 100644 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -5377,22 +5377,7 @@ "enabled": "support_enable and (support_pattern == 'zigzag') and support_skip_some_zags", "limit_to_extruder": "support_infill_extruder_nr", "settable_per_mesh": false, - "settable_per_extruder": true, - "children": { - "support_zag_skip_count": { - "label": "Support Chunk Line Count", - "description": "Skip one in every N connection lines to make the support structure easier to break away.", - "type": "int", - "default_value": 5, - "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", - "limit_to_extruder": "support_infill_extruder_nr", - "settable_per_mesh": false, - "settable_per_extruder": true - } - } + "settable_per_extruder": true } } },