From 20f74230241b0b27345694ea45537e6c1e2096e0 Mon Sep 17 00:00:00 2001 From: Kostas Karmas Date: Wed, 12 Aug 2020 17:28:28 +0200 Subject: [PATCH 01/10] Add libArachne beading parameters in the fdmprinter CURA-7555 --- resources/definitions/fdmprinter.def.json | 109 ++++++++++++++++++++++ 1 file changed, 109 insertions(+) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 2623dff181..81f3bdff00 100644 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -1053,6 +1053,115 @@ } } }, + "beading_strategy_type": + { + "label": "Beading Strategy", + "description": "Beading strategy used by libArachne to generate walls.", + "type": "enum", + "options": + { + "naive": "Naive", + "center_deviation": "Center Deviation", + "distributed": "Distributed", + "inward_distributed": "Inward Distributed", + "limited_distributed": "Limited Distributed" + }, + "default_value": "naive", + "limit_to_extruder": "wall_0_extruder_nr", + "children": + { + "bead_width": + { + "label": "Bead Width", + "description": "Bead Width.", + "unit": "mm", + "value": "line_width", + "minimum_value": "0.001", + "minimum_value_warning": "0.1 + 0.4 * machine_nozzle_size", + "maximum_value_warning": "2 * machine_nozzle_size", + "type": "float", + "limit_to_extruder": "wall_0_extruder_nr", + "enabled": "beading_strategy_type != 'naive'" + }, + "transitioning_angle": + { + "label": "Transitioning Angle", + "description": "Transitioning Angle.", + "unit": "°", + "default_value": 45, + "minimum_value": "1", + "minimum_value_warning": "22.5", + "maximum_value": "89", + "type": "float", + "limit_to_extruder": "wall_0_extruder_nr", + "enabled": "beading_strategy_type != 'naive'" + }, + "transition_length": + { + "label": "Transition Length", + "description": "Transition Length.", + "unit": "mm", + "default_value": 0.4, + "value": "line_width * 2", + "minimum_value": "0", + "maximum_value_warning": "line_width * 5", + "type": "float", + "minimum_value_warning": "0.01", + "limit_to_extruder": "wall_0_extruder_nr", + "enabled": "beading_strategy_type == 'distributed' or beading_strategy_type == 'inward_distributed' or beading_strategy_type == 'limited_distributed'" + }, + "widening_mode": + { + "label": "Widening Mode", + "description": "Widening Mode.", + "type": "enum", + "options": + { + "not_selected": "Not Selected", + "min_bead_width_mode": "Minimum Bead Width Mode", + "min_feature_size_mode": "Minimum Feature Size Mode" + }, + "default_value": "not_selected", + "limit_to_extruder": "wall_0_extruder_nr", + "children": + { + "min_bead_width": + { + "label": "Minimum Bead Width", + "description": "Minimum Bead Width.", + "unit": "mm", + "value": "bead_width / 2", + "minimum_value": "0", + "maximum_value_warning": "bead_width", + "type": "float", + "limit_to_extruder": "wall_0_extruder_nr", + "enabled": "widening_mode == 'min_bead_width_mode'" + }, + "min_feature_size": + { + "label": "Minimum Feature Size", + "description": "Minimum Feature Size.", + "unit": "mm", + "value": "bead_width / 2", + "minimum_value": "0", + "maximum_value_warning": "bead_width", + "type": "float", + "limit_to_extruder": "wall_0_extruder_nr", + "enabled": "widening_mode == 'min_feature_size_mode'" + } + } + }, + "max_bead_count": + { + "label": "Maximum Bead Count", + "description": "Maximum Bead Count. If >=1, the Limited Beading Meta-Strategy is applied on top of the selected Beading Strategy.", + "default_value": 0, + "minimum_value": "0", + "type": "int", + "limit_to_extruder": "wall_0_extruder_nr" + } + } + }, "wall_0_wipe_dist": { "label": "Outer Wall Wipe Distance", From 41475ff243d53199b7efff545e904cdfaf85d145 Mon Sep 17 00:00:00 2001 From: Kostas Karmas Date: Thu, 13 Aug 2020 15:28:59 +0200 Subject: [PATCH 02/10] Remove bead_width in favor of wall_line_width CURA-7555 --- resources/definitions/fdmprinter.def.json | 75 +++++++++++------------ 1 file changed, 35 insertions(+), 40 deletions(-) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 81f3bdff00..2df5f04c3d 100644 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -1070,25 +1070,12 @@ "limit_to_extruder": "wall_0_extruder_nr", "children": { - "bead_width": - { - "label": "Bead Width", - "description": "Bead Width.", - "unit": "mm", - "value": "line_width", - "minimum_value": "0.001", - "minimum_value_warning": "0.1 + 0.4 * machine_nozzle_size", - "maximum_value_warning": "2 * machine_nozzle_size", - "type": "float", - "limit_to_extruder": "wall_0_extruder_nr", - "enabled": "beading_strategy_type != 'naive'" - }, "transitioning_angle": { "label": "Transitioning Angle", "description": "Transitioning Angle.", "unit": "°", - "default_value": 45, + "default_value": 30, "minimum_value": "1", "minimum_value_warning": "22.5", "maximum_value": "89", @@ -1102,26 +1089,20 @@ "description": "Transition Length.", "unit": "mm", "default_value": 0.4, - "value": "line_width * 2", + "value": "wall_line_width * 2", "minimum_value": "0", - "maximum_value_warning": "line_width * 5", + "maximum_value_warning": "wall_line_width * 5", "type": "float", "minimum_value_warning": "0.01", "limit_to_extruder": "wall_0_extruder_nr", "enabled": "beading_strategy_type == 'distributed' or beading_strategy_type == 'inward_distributed' or beading_strategy_type == 'limited_distributed'" }, - "widening_mode": + "widening_beading_enabled": { - "label": "Widening Mode", - "description": "Widening Mode.", - "type": "enum", - "options": - { - "not_selected": "Not Selected", - "min_bead_width_mode": "Minimum Bead Width Mode", - "min_feature_size_mode": "Minimum Feature Size Mode" - }, - "default_value": "not_selected", + "label": "Enable Widening Beading", + "description": "Applies the Widening Beading meta-strategy on top of the selected beading strategy.", + "type": "bool", + "default_value": false, "limit_to_extruder": "wall_0_extruder_nr", "children": { @@ -1130,35 +1111,49 @@ "label": "Minimum Bead Width", "description": "Minimum Bead Width.", "unit": "mm", - "value": "bead_width / 2", + "value": "wall_line_width / 2 if widening_beading_enabled else 0", "minimum_value": "0", - "maximum_value_warning": "bead_width", + "minimum_value_warning": "wall_line_width / 2", + "maximum_value": "wall_line_width", "type": "float", "limit_to_extruder": "wall_0_extruder_nr", - "enabled": "widening_mode == 'min_bead_width_mode'" + "enabled": "widening_beading_enabled" }, "min_feature_size": { "label": "Minimum Feature Size", "description": "Minimum Feature Size.", "unit": "mm", - "value": "bead_width / 2", + "value": "wall_line_width / 2 if widening_beading_enabled else 0", "minimum_value": "0", - "maximum_value_warning": "bead_width", + "minimum_value_warning": "wall_line_width / 2", + "maximum_value": "wall_line_width", "type": "float", "limit_to_extruder": "wall_0_extruder_nr", - "enabled": "widening_mode == 'min_feature_size_mode'" + "enabled": "widening_beading_enabled" } } }, - "max_bead_count": + "limited_beading_enabled": { - "label": "Maximum Bead Count", - "description": "Maximum Bead Count. If >=1, the Limited Beading Meta-Strategy is applied on top of the selected Beading Strategy.", - "default_value": 0, - "minimum_value": "0", - "type": "int", - "limit_to_extruder": "wall_0_extruder_nr" + "label": "Enable Limited Beading", + "description": "Applies the Limited Beading meta-strategy on top of the selected beading strategy.", + "type": "bool", + "default_value": false, + "limit_to_extruder": "wall_0_extruder_nr", + "children": + { + "max_bead_count": + { + "label": "Maximum Bead Count", + "description": "Maximum Bead Count used in the limited beading meta-strategy. Even numbers only.", + "value": "wall_line_count * 2", + "minimum_value": "2", + "type": "int", + "limit_to_extruder": "wall_0_extruder_nr", + "enabled": "limited_beading_enabled" + } + } } } }, From 3e3d9bcd0a49fcb338131a74c067fbd7b36eba26 Mon Sep 17 00:00:00 2001 From: Kostas Karmas Date: Thu, 13 Aug 2020 16:43:32 +0200 Subject: [PATCH 03/10] Don't reset the min feature size and bead_width based on the widening We can just keep the value, since it is ignored in CuraEngine if the enable widening is false. CURA-7555 --- 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 2df5f04c3d..b5923589e4 100644 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -1111,7 +1111,7 @@ "label": "Minimum Bead Width", "description": "Minimum Bead Width.", "unit": "mm", - "value": "wall_line_width / 2 if widening_beading_enabled else 0", + "value": "wall_line_width / 2", "minimum_value": "0", "minimum_value_warning": "wall_line_width / 2", "maximum_value": "wall_line_width", @@ -1124,7 +1124,7 @@ "label": "Minimum Feature Size", "description": "Minimum Feature Size.", "unit": "mm", - "value": "wall_line_width / 2 if widening_beading_enabled else 0", + "value": "wall_line_width / 2", "minimum_value": "0", "minimum_value_warning": "wall_line_width / 2", "maximum_value": "wall_line_width", From a029e0ce507cee9eaf4da8806c6de34f7b9010e8 Mon Sep 17 00:00:00 2001 From: Kostas Karmas Date: Wed, 19 Aug 2020 17:02:44 +0200 Subject: [PATCH 04/10] Remove limited beading as an option As it will be applied by default in the Engine to ensure that libArachne will generate only the required walls (based on the Wall Line Count setting). CURA-7555 --- resources/definitions/fdmprinter.def.json | 21 --------------------- 1 file changed, 21 deletions(-) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index b5923589e4..0ab4172941 100644 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -1133,27 +1133,6 @@ "enabled": "widening_beading_enabled" } } - }, - "limited_beading_enabled": - { - "label": "Enable Limited Beading", - "description": "Applies the Limited Beading meta-strategy on top of the selected beading strategy.", - "type": "bool", - "default_value": false, - "limit_to_extruder": "wall_0_extruder_nr", - "children": - { - "max_bead_count": - { - "label": "Maximum Bead Count", - "description": "Maximum Bead Count used in the limited beading meta-strategy. Even numbers only.", - "value": "wall_line_count * 2", - "minimum_value": "2", - "type": "int", - "limit_to_extruder": "wall_0_extruder_nr", - "enabled": "limited_beading_enabled" - } - } } } }, From 4954746ee4053c87587b2bac9c2f8ae1cc5fd865 Mon Sep 17 00:00:00 2001 From: Kostas Karmas Date: Wed, 19 Aug 2020 17:17:40 +0200 Subject: [PATCH 05/10] Remove transitioning angle from the user settings Tt will be a constant on the CuraEngine side. CURA-7555 --- resources/definitions/fdmprinter.def.json | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 0ab4172941..45e7b30474 100644 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -1070,19 +1070,6 @@ "limit_to_extruder": "wall_0_extruder_nr", "children": { - "transitioning_angle": - { - "label": "Transitioning Angle", - "description": "Transitioning Angle.", - "unit": "°", - "default_value": 30, - "minimum_value": "1", - "minimum_value_warning": "22.5", - "maximum_value": "89", - "type": "float", - "limit_to_extruder": "wall_0_extruder_nr", - "enabled": "beading_strategy_type != 'naive'" - }, "transition_length": { "label": "Transition Length", From 217e01b5b3ec57c6b26aae27279b3fd3b0544baa Mon Sep 17 00:00:00 2001 From: Kostas Karmas Date: Wed, 19 Aug 2020 17:29:54 +0200 Subject: [PATCH 06/10] Remove LimitedDistributed option from the beading strategies setting As the Limited will always apply on top of the others, so selecting the Distributed is essentially the same as selecting the LimitedDistributed. CURA-7555 --- resources/definitions/fdmprinter.def.json | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 45e7b30474..22d68805e2 100644 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -1063,8 +1063,7 @@ "naive": "Naive", "center_deviation": "Center Deviation", "distributed": "Distributed", - "inward_distributed": "Inward Distributed", - "limited_distributed": "Limited Distributed" + "inward_distributed": "Inward Distributed" }, "default_value": "naive", "limit_to_extruder": "wall_0_extruder_nr", @@ -1082,7 +1081,7 @@ "type": "float", "minimum_value_warning": "0.01", "limit_to_extruder": "wall_0_extruder_nr", - "enabled": "beading_strategy_type == 'distributed' or beading_strategy_type == 'inward_distributed' or beading_strategy_type == 'limited_distributed'" + "enabled": "beading_strategy_type == 'distributed' or beading_strategy_type == 'inward_distributed'" }, "widening_beading_enabled": { From ec633feb3754d85eafe59d0bfab4ed50915d500b Mon Sep 17 00:00:00 2001 From: Kostas Karmas Date: Wed, 19 Aug 2020 17:48:43 +0200 Subject: [PATCH 07/10] Remove transition_length from the front-end It is set as 2*wall_line_width in CuraEngine. CURA-7555 --- resources/definitions/fdmprinter.def.json | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 22d68805e2..93a419bbbb 100644 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -1069,20 +1069,6 @@ "limit_to_extruder": "wall_0_extruder_nr", "children": { - "transition_length": - { - "label": "Transition Length", - "description": "Transition Length.", - "unit": "mm", - "default_value": 0.4, - "value": "wall_line_width * 2", - "minimum_value": "0", - "maximum_value_warning": "wall_line_width * 5", - "type": "float", - "minimum_value_warning": "0.01", - "limit_to_extruder": "wall_0_extruder_nr", - "enabled": "beading_strategy_type == 'distributed' or beading_strategy_type == 'inward_distributed'" - }, "widening_beading_enabled": { "label": "Enable Widening Beading", From 720740dcc887a2713e64754bc1862b04aea2c042 Mon Sep 17 00:00:00 2001 From: Kostas Karmas Date: Wed, 19 Aug 2020 17:54:00 +0200 Subject: [PATCH 08/10] Remove parent-child relationship of libArachne settings If all children of a parent get overridden, the parent is disabled. We don't want that in the libArachne settings. CURA-7555 --- resources/definitions/fdmprinter.def.json | 74 +++++++++++------------ 1 file changed, 34 insertions(+), 40 deletions(-) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 93a419bbbb..6f747436b5 100644 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -1066,47 +1066,41 @@ "inward_distributed": "Inward Distributed" }, "default_value": "naive", + "limit_to_extruder": "wall_0_extruder_nr" + }, + "widening_beading_enabled": + { + "label": "Enable Widening Beading", + "description": "Applies the Widening Beading meta-strategy on top of the selected beading strategy.", + "type": "bool", + "default_value": false, + "limit_to_extruder": "wall_0_extruder_nr" + }, + "min_bead_width": + { + "label": "Minimum Bead Width", + "description": "Minimum Bead Width.", + "unit": "mm", + "value": "wall_line_width / 2", + "minimum_value": "0", + "minimum_value_warning": "wall_line_width / 2", + "maximum_value": "wall_line_width", + "type": "float", "limit_to_extruder": "wall_0_extruder_nr", - "children": - { - "widening_beading_enabled": - { - "label": "Enable Widening Beading", - "description": "Applies the Widening Beading meta-strategy on top of the selected beading strategy.", - "type": "bool", - "default_value": false, - "limit_to_extruder": "wall_0_extruder_nr", - "children": - { - "min_bead_width": - { - "label": "Minimum Bead Width", - "description": "Minimum Bead Width.", - "unit": "mm", - "value": "wall_line_width / 2", - "minimum_value": "0", - "minimum_value_warning": "wall_line_width / 2", - "maximum_value": "wall_line_width", - "type": "float", - "limit_to_extruder": "wall_0_extruder_nr", - "enabled": "widening_beading_enabled" - }, - "min_feature_size": - { - "label": "Minimum Feature Size", - "description": "Minimum Feature Size.", - "unit": "mm", - "value": "wall_line_width / 2", - "minimum_value": "0", - "minimum_value_warning": "wall_line_width / 2", - "maximum_value": "wall_line_width", - "type": "float", - "limit_to_extruder": "wall_0_extruder_nr", - "enabled": "widening_beading_enabled" - } - } - } - } + "enabled": "widening_beading_enabled" + }, + "min_feature_size": + { + "label": "Minimum Feature Size", + "description": "Minimum Feature Size.", + "unit": "mm", + "value": "wall_line_width / 2", + "minimum_value": "0", + "minimum_value_warning": "wall_line_width / 2", + "maximum_value": "wall_line_width", + "type": "float", + "limit_to_extruder": "wall_0_extruder_nr", + "enabled": "widening_beading_enabled" }, "wall_0_wipe_dist": { From bbc0b0e54c68d5279c5af6e0667369b33a6ee681 Mon Sep 17 00:00:00 2001 From: Kostas Karmas Date: Thu, 20 Aug 2020 17:08:03 +0200 Subject: [PATCH 09/10] Rename libArachne settings to use user-friendly terminology I am leaving the descriptions to contain the word "beading" so that the related settings can easily be found during testing. CURA-7555 --- resources/definitions/fdmprinter.def.json | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 6f747436b5..db202a70c6 100644 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -1055,7 +1055,7 @@ }, "beading_strategy_type": { - "label": "Beading Strategy", + "label": "Variable Line Strategy", "description": "Beading strategy used by libArachne to generate walls.", "type": "enum", "options": @@ -1065,12 +1065,12 @@ "distributed": "Distributed", "inward_distributed": "Inward Distributed" }, - "default_value": "naive", + "default_value": "distributed", "limit_to_extruder": "wall_0_extruder_nr" }, "widening_beading_enabled": { - "label": "Enable Widening Beading", + "label": "Enable Variable Line Widening", "description": "Applies the Widening Beading meta-strategy on top of the selected beading strategy.", "type": "bool", "default_value": false, @@ -1078,12 +1078,11 @@ }, "min_bead_width": { - "label": "Minimum Bead Width", - "description": "Minimum Bead Width.", + "label": "Minimum Wall Line Width", + "description": "Minimum Bead Width. Used in the Widening Beading meta-strategy.", "unit": "mm", "value": "wall_line_width / 2", "minimum_value": "0", - "minimum_value_warning": "wall_line_width / 2", "maximum_value": "wall_line_width", "type": "float", "limit_to_extruder": "wall_0_extruder_nr", @@ -1092,11 +1091,10 @@ "min_feature_size": { "label": "Minimum Feature Size", - "description": "Minimum Feature Size.", + "description": "Minimum Feature Size. Used in the Widening Beading meta-strategy.", "unit": "mm", "value": "wall_line_width / 2", "minimum_value": "0", - "minimum_value_warning": "wall_line_width / 2", "maximum_value": "wall_line_width", "type": "float", "limit_to_extruder": "wall_0_extruder_nr", From 045ba3b8c4c28a0ac3fb6da11940f037c28328fb Mon Sep 17 00:00:00 2001 From: Kostas Karmas Date: Thu, 20 Aug 2020 17:14:01 +0200 Subject: [PATCH 10/10] Modify description of libArachne settings. So that the settings can easily be found with the keywords 'libArachne' and 'beading'. CURA-7555 --- resources/definitions/fdmprinter.def.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index db202a70c6..e38869da1e 100644 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -1071,7 +1071,7 @@ "widening_beading_enabled": { "label": "Enable Variable Line Widening", - "description": "Applies the Widening Beading meta-strategy on top of the selected beading strategy.", + "description": "Applies the Widening Beading meta-strategy on top of the selected beading strategy in libArachne.", "type": "bool", "default_value": false, "limit_to_extruder": "wall_0_extruder_nr" @@ -1079,7 +1079,7 @@ "min_bead_width": { "label": "Minimum Wall Line Width", - "description": "Minimum Bead Width. Used in the Widening Beading meta-strategy.", + "description": "Minimum Bead Width. Used in the Widening Beading meta-strategy in libArachne.", "unit": "mm", "value": "wall_line_width / 2", "minimum_value": "0", @@ -1091,7 +1091,7 @@ "min_feature_size": { "label": "Minimum Feature Size", - "description": "Minimum Feature Size. Used in the Widening Beading meta-strategy.", + "description": "Minimum Feature Size. Used in the Widening Beading meta-strategy in libArachne.", "unit": "mm", "value": "wall_line_width / 2", "minimum_value": "0",