From 3845da24a18867a50a949cff153cb4923ce7ccf7 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Thu, 23 May 2019 15:53:00 +0200 Subject: [PATCH 01/11] Add new material properties for cleanly breaking off materials When performing a long retract, the firmware can use these material properties to determine how fast and how far it needs to retract. The retraction goes in two stages: Anti-ooze retraction stops oozing, and then the break retraction breaks off the filament from the bead in the nozzle. Contributes to issue CURA-6329. --- resources/definitions/fdmprinter.def.json | 58 +++++++++++++++++++++++ 1 file changed, 58 insertions(+) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 793a0e0889..f8cf1eb97f 100644 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -2234,6 +2234,64 @@ "settable_per_mesh": false, "settable_per_extruder": true }, + "material_crystallinity": + { + "label": "Crystalline Material", + "description": "Is this material the type that breaks off cleanly when heated, or is it the type that produces long intertwined polymer chains?", + "type": "bool", + "default_value": true, + "enabled": false, + "settable_per_mesh": false, + "settable_per_extruder": true + }, + "material_anti_ooze_retraction_distance": + { + "label": "Anti-ooze Retraction Distance", + "description": "How far the material needs to be retracted before it stops oozing.", + "type": "float", + "unit": "mm", + "default_value": 4, + "minimum_value": "0", + "maximum_value_warning": "retraction_amount", + "settable_per_mesh": false, + "settable_per_extruder": true + }, + "material_anti_ooze_retraction_speed": + { + "label": "Anti-ooze Retraction Speed", + "description": "How fast the material needs to be retracted during a filament switch to prevent oozing.", + "type": "float", + "unit": "mm/s", + "default_value": 5, + "minimum_value": "0", + "maximum_value": "machine_max_feedrate_e", + "settable_per_mesh": false, + "settable_per_extruder": true + }, + "material_break_distance": + { + "label": "Break Retraction Distance", + "description": "How far can the filament be stretched before it breaks, while heated?", + "type": "float", + "unit": "mm", + "default_value": 16, + "minimum_value": "0", + "maximum_value_warning": "retraction_amount * 4", + "settable_per_mesh": false, + "settable_per_extruder": true + }, + "material_break_speed": + { + "label": "Break Retraction Speed", + "description": "How fast does the filament need to be retracted in order to break cleanly?", + "type": "float", + "unit": "mm/s", + "default_value": 2, + "minimum_value": "0", + "maximum_value": "machine_max_feedrate_e", + "settable_per_mesh": false, + "settable_per_extruder": true + }, "material_flow": { "label": "Flow", From d7d51571b5ebc4cb3392cf520303e79443d9f572 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Mon, 3 Jun 2019 17:25:00 +0200 Subject: [PATCH 02/11] Add additional settings from XML materials These are all needed to implement the end-of-filament deprime procedure in the PPA's experiment. They are not necessary for slicing. Contributes to issue CURA-6329. --- resources/definitions/fdmprinter.def.json | 60 ++++++++++++++++++++--- 1 file changed, 54 insertions(+), 6 deletions(-) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index f8cf1eb97f..6c315329de 100644 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -2268,10 +2268,10 @@ "settable_per_mesh": false, "settable_per_extruder": true }, - "material_break_distance": + "material_break_preparation_distance": { - "label": "Break Retraction Distance", - "description": "How far can the filament be stretched before it breaks, while heated?", + "label": "Break Preparation Retraction Distance", + "description": "How far the filament can be stretched before it breaks, while heated.", "type": "float", "unit": "mm", "default_value": 16, @@ -2280,10 +2280,10 @@ "settable_per_mesh": false, "settable_per_extruder": true }, - "material_break_speed": + "material_break_preparation_speed": { - "label": "Break Retraction Speed", - "description": "How fast does the filament need to be retracted in order to break cleanly?", + "label": "Break Preparation Retraction Speed", + "description": "How fast the filament needs to be retracted just before breaking it off in a retraction.", "type": "float", "unit": "mm/s", "default_value": 2, @@ -2292,6 +2292,54 @@ "settable_per_mesh": false, "settable_per_extruder": true }, + "material_break_preparation_temperature": + { + "label": "Break Preparation Temperature", + "description": "The temperature at which the filament needs to be stretched towards breaking.", + "type": "float", + "unit": "°C", + "default_value": 200, + "minimum_value": "-273.15", + "maximum_value_warning": "300", + "settable_per_mesh": false, + "settable_per_extruder": true + }, + "material_break_distance": + { + "label": "Break Retraction Distance", + "description": "How far to retract the filament in order to break it cleanly.", + "type": "float", + "unit": "mm", + "default_value": 50, + "minimum_value_warning": "0", + "maximum_value_warning": "100", + "settable_per_mesh": false, + "settable_per_extruder": true + }, + "material_break_speed": + { + "label": "Break Retraction Speed", + "description": "The speed at which to retract the filament in order to break it cleanly.", + "type": "float", + "unit": "mm/s", + "default_value": 25, + "minimum_value": "0", + "maximum_value": "machine_max_feedrate_e", + "settable_per_mesh": false, + "settable_per_extruder": true + }, + "material_break_temperature": + { + "label": "Break Temperature", + "description": "The temperature at which the filament is broken for a clean break.", + "type": "float", + "unit": "°C", + "default_value": 50, + "minimum_value": "-273.15", + "maximum_value_warning": "300", + "settable_per_mesh": false, + "settable_per_extruder": true + }, "material_flow": { "label": "Flow", From 3d6e43ba9e874240321a4112000b8f2e5b571a06 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Mon, 3 Jun 2019 17:28:53 +0200 Subject: [PATCH 03/11] Disable deprime-related settings Cura needs to be able to read these from the XML profiles in order to set up the experiment, but they don't affect slicing so the user doesn't need to adjust them. Contributes to issue CURA-6329. --- resources/definitions/fdmprinter.def.json | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 6c315329de..eebca3b87c 100644 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -2251,6 +2251,7 @@ "type": "float", "unit": "mm", "default_value": 4, + "enabled": false, "minimum_value": "0", "maximum_value_warning": "retraction_amount", "settable_per_mesh": false, @@ -2263,6 +2264,7 @@ "type": "float", "unit": "mm/s", "default_value": 5, + "enabled": false, "minimum_value": "0", "maximum_value": "machine_max_feedrate_e", "settable_per_mesh": false, @@ -2275,6 +2277,7 @@ "type": "float", "unit": "mm", "default_value": 16, + "enabled": false, "minimum_value": "0", "maximum_value_warning": "retraction_amount * 4", "settable_per_mesh": false, @@ -2287,6 +2290,7 @@ "type": "float", "unit": "mm/s", "default_value": 2, + "enabled": false, "minimum_value": "0", "maximum_value": "machine_max_feedrate_e", "settable_per_mesh": false, @@ -2299,6 +2303,7 @@ "type": "float", "unit": "°C", "default_value": 200, + "enabled": false, "minimum_value": "-273.15", "maximum_value_warning": "300", "settable_per_mesh": false, @@ -2311,6 +2316,7 @@ "type": "float", "unit": "mm", "default_value": 50, + "enabled": false, "minimum_value_warning": "0", "maximum_value_warning": "100", "settable_per_mesh": false, @@ -2323,6 +2329,7 @@ "type": "float", "unit": "mm/s", "default_value": 25, + "enabled": false, "minimum_value": "0", "maximum_value": "machine_max_feedrate_e", "settable_per_mesh": false, @@ -2335,6 +2342,7 @@ "type": "float", "unit": "°C", "default_value": 50, + "enabled": false, "minimum_value": "-273.15", "maximum_value_warning": "300", "settable_per_mesh": false, From b9e4ce8d150bfec323d764be76f881e249084c07 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Tue, 4 Jun 2019 17:06:41 +0200 Subject: [PATCH 04/11] Remove break preparation temperature This setting is not used in the deprime procedure. Contributes to issue CURA-6329. --- resources/definitions/fdmprinter.def.json | 15 +-------------- 1 file changed, 1 insertion(+), 14 deletions(-) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index eebca3b87c..16b5ae270b 100644 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -2296,19 +2296,6 @@ "settable_per_mesh": false, "settable_per_extruder": true }, - "material_break_preparation_temperature": - { - "label": "Break Preparation Temperature", - "description": "The temperature at which the filament needs to be stretched towards breaking.", - "type": "float", - "unit": "°C", - "default_value": 200, - "enabled": false, - "minimum_value": "-273.15", - "maximum_value_warning": "300", - "settable_per_mesh": false, - "settable_per_extruder": true - }, "material_break_distance": { "label": "Break Retraction Distance", @@ -2317,7 +2304,7 @@ "unit": "mm", "default_value": 50, "enabled": false, - "minimum_value_warning": "0", + "minimum_value": "0", "maximum_value_warning": "100", "settable_per_mesh": false, "settable_per_extruder": true From a0c3738a49649f17d87a01e72731cadc84a6c038 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Tue, 4 Jun 2019 17:07:59 +0200 Subject: [PATCH 05/11] Add translations for deprime settings These need to be read for the deprime experiments in the PPA. Contributes to issue CURA-6329. --- plugins/XmlMaterialProfile/XmlMaterialProfile.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/plugins/XmlMaterialProfile/XmlMaterialProfile.py b/plugins/XmlMaterialProfile/XmlMaterialProfile.py index f057585cb5..2fb23d53e8 100644 --- a/plugins/XmlMaterialProfile/XmlMaterialProfile.py +++ b/plugins/XmlMaterialProfile/XmlMaterialProfile.py @@ -1180,6 +1180,14 @@ class XmlMaterialProfile(InstanceContainer): "surface energy": "material_surface_energy", "shrinkage percentage": "material_shrinkage_percentage", "build volume temperature": "build_volume_temperature", + "anti ooze retract position": "material_anti_ooze_retraction_distance", + "anti ooze retract speed": "material_anti_ooze_retraction_speed", + "break preparation position": "material_break_preparation_distance", + "break preparation speed": "material_break_preparation_speed", + "break preparation temperature": "material_break_preparation_temperature", + "break position": "material_break_distance", + "break speed": "material_break_speed", + "break temperature": "material_break_temperature" } __unmapped_settings = [ "hardware compatible", From 36a206b418f3585689185426eefe0eb500926b77 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Tue, 4 Jun 2019 17:23:20 +0200 Subject: [PATCH 06/11] Also remove translation for break preparation temperature This setting is no longer used. If I don't remove it, it'll complain when syncing materials with the printer because it tries to serialise the material profiles then. Contributes to issue CURA-6329. --- plugins/XmlMaterialProfile/XmlMaterialProfile.py | 1 - 1 file changed, 1 deletion(-) diff --git a/plugins/XmlMaterialProfile/XmlMaterialProfile.py b/plugins/XmlMaterialProfile/XmlMaterialProfile.py index 2fb23d53e8..7e99b0f725 100644 --- a/plugins/XmlMaterialProfile/XmlMaterialProfile.py +++ b/plugins/XmlMaterialProfile/XmlMaterialProfile.py @@ -1184,7 +1184,6 @@ class XmlMaterialProfile(InstanceContainer): "anti ooze retract speed": "material_anti_ooze_retraction_speed", "break preparation position": "material_break_preparation_distance", "break preparation speed": "material_break_preparation_speed", - "break preparation temperature": "material_break_preparation_temperature", "break position": "material_break_distance", "break speed": "material_break_speed", "break temperature": "material_break_temperature" From 27ea9c813e4313585af4146e62e70bdd5538deec Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Fri, 7 Jun 2019 13:57:56 +0200 Subject: [PATCH 07/11] Allow negative retraction distances You COULD want to extrude. Contributes to issue CURA-6329. --- 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 16b5ae270b..3722aadfbf 100644 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -2252,7 +2252,7 @@ "unit": "mm", "default_value": 4, "enabled": false, - "minimum_value": "0", + "minimum_value_warning": "0", "maximum_value_warning": "retraction_amount", "settable_per_mesh": false, "settable_per_extruder": true @@ -2278,7 +2278,7 @@ "unit": "mm", "default_value": 16, "enabled": false, - "minimum_value": "0", + "minimum_value_warning": "0", "maximum_value_warning": "retraction_amount * 4", "settable_per_mesh": false, "settable_per_extruder": true @@ -2304,7 +2304,7 @@ "unit": "mm", "default_value": 50, "enabled": false, - "minimum_value": "0", + "minimum_value_warning": "0", "maximum_value_warning": "100", "settable_per_mesh": false, "settable_per_extruder": true From abda45ee59b7ddcff3271791ae09fbf8ba48cc9b Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Fri, 7 Jun 2019 16:26:19 +0200 Subject: [PATCH 08/11] Set crystalline to false by default Because PLA is not crystalline. Contributes to issue CURA-6329. --- 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 3722aadfbf..bba2caedbb 100644 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -2239,7 +2239,7 @@ "label": "Crystalline Material", "description": "Is this material the type that breaks off cleanly when heated, or is it the type that produces long intertwined polymer chains?", "type": "bool", - "default_value": true, + "default_value": false, "enabled": false, "settable_per_mesh": false, "settable_per_extruder": true From 1ae8011cf7df0caedde2a6a7b10b407e2fb30b2f Mon Sep 17 00:00:00 2001 From: Remco Burema Date: Wed, 12 Jun 2019 14:02:37 +0200 Subject: [PATCH 09/11] Clarify crystalline description (crystal clear?). [CURA-6329] --- 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 bba2caedbb..4f99a5be5d 100644 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -2237,7 +2237,7 @@ "material_crystallinity": { "label": "Crystalline Material", - "description": "Is this material the type that breaks off cleanly when heated, or is it the type that produces long intertwined polymer chains?", + "description": "Is this material the type that breaks off cleanly when heated (crystalline), or is it the type that produces long intertwined polymer chains (non-crystalline)?", "type": "bool", "default_value": false, "enabled": false, From faf256b2f0326bd04933352becff9109faf82a11 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Wed, 26 Jun 2019 16:41:51 +0200 Subject: [PATCH 10/11] Rename deprime settings with the new name These have been renamed for greater clarity. We also have to rename them on this side now. Contributes to issue CURA-6329. --- plugins/XmlMaterialProfile/XmlMaterialProfile.py | 6 +++--- resources/definitions/fdmprinter.def.json | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/plugins/XmlMaterialProfile/XmlMaterialProfile.py b/plugins/XmlMaterialProfile/XmlMaterialProfile.py index 27201b8eed..241d1a954f 100644 --- a/plugins/XmlMaterialProfile/XmlMaterialProfile.py +++ b/plugins/XmlMaterialProfile/XmlMaterialProfile.py @@ -1196,11 +1196,11 @@ class XmlMaterialProfile(InstanceContainer): "surface energy": "material_surface_energy", "shrinkage percentage": "material_shrinkage_percentage", "build volume temperature": "build_volume_temperature", - "anti ooze retract position": "material_anti_ooze_retraction_distance", + "anti ooze retracted position": "material_anti_ooze_retracted_position", "anti ooze retract speed": "material_anti_ooze_retraction_speed", - "break preparation position": "material_break_preparation_distance", + "break preparation retracted position": "material_break_preparation_retracted_position", "break preparation speed": "material_break_preparation_speed", - "break position": "material_break_distance", + "break retracted position": "material_break_retracted_position", "break speed": "material_break_speed", "break temperature": "material_break_temperature" } diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 0621c6e2d0..b013851cef 100644 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -2244,7 +2244,7 @@ "settable_per_mesh": false, "settable_per_extruder": true }, - "material_anti_ooze_retraction_distance": + "material_anti_ooze_retracted_position": { "label": "Anti-ooze Retraction Distance", "description": "How far the material needs to be retracted before it stops oozing.", @@ -2270,7 +2270,7 @@ "settable_per_mesh": false, "settable_per_extruder": true }, - "material_break_preparation_distance": + "material_break_preparation_retracted_position": { "label": "Break Preparation Retraction Distance", "description": "How far the filament can be stretched before it breaks, while heated.", @@ -2296,7 +2296,7 @@ "settable_per_mesh": false, "settable_per_extruder": true }, - "material_break_distance": + "material_break_retracted_position": { "label": "Break Retraction Distance", "description": "How far to retract the filament in order to break it cleanly.", From fe0fcc6eec6d5718b9479d0346673d9898874a70 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Wed, 26 Jun 2019 16:43:11 +0200 Subject: [PATCH 11/11] Change human-readable names of renamed settings too Forgot about those. Contributes to issue CURA-6329. --- 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 b013851cef..dbdc9cc798 100644 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -2246,7 +2246,7 @@ }, "material_anti_ooze_retracted_position": { - "label": "Anti-ooze Retraction Distance", + "label": "Anti-ooze Retracted Position", "description": "How far the material needs to be retracted before it stops oozing.", "type": "float", "unit": "mm", @@ -2272,7 +2272,7 @@ }, "material_break_preparation_retracted_position": { - "label": "Break Preparation Retraction Distance", + "label": "Break Preparation Retracted Position", "description": "How far the filament can be stretched before it breaks, while heated.", "type": "float", "unit": "mm", @@ -2298,7 +2298,7 @@ }, "material_break_retracted_position": { - "label": "Break Retraction Distance", + "label": "Break Retracted Position", "description": "How far to retract the filament in order to break it cleanly.", "type": "float", "unit": "mm",