From 7789c86c521b6995db59f942829e08283f56dc34 Mon Sep 17 00:00:00 2001 From: Erwan MATHIEU Date: Wed, 9 Apr 2025 15:29:40 +0200 Subject: [PATCH] Improved A1 mini multi-color printing CURA-12074 --- resources/definitions/bambulab_a1mini.def.json | 6 ++++++ resources/extruders/bambulab_a1mini_extruder_0.def.json | 4 ++-- resources/extruders/bambulab_a1mini_extruder_1.def.json | 4 ++-- resources/extruders/bambulab_a1mini_extruder_2.def.json | 4 ++-- resources/extruders/bambulab_a1mini_extruder_3.def.json | 4 ++-- 5 files changed, 14 insertions(+), 8 deletions(-) diff --git a/resources/definitions/bambulab_a1mini.def.json b/resources/definitions/bambulab_a1mini.def.json index 3e4b85ec57..111ec67bbb 100644 --- a/resources/definitions/bambulab_a1mini.def.json +++ b/resources/definitions/bambulab_a1mini.def.json @@ -124,10 +124,16 @@ "machine_use_extruder_offset_to_offset_coords": { "value": false }, "machine_width": { "value": 180 }, "material_diameter": { "value": 1.75 }, + "material_flush_purge_length": + { + "default_value": 100, + "enabled": true + }, "material_flush_purge_speed": { "default_value": 500 }, "max_skin_angle_for_expansion": { "value": 45 }, "meshfix_maximum_resolution": { "value": 0.4 }, "min_infill_area": { "default_value": 10 }, + "switch_extruder_retraction_amount": { "value": 5 }, "optimize_wall_printing_order": { "value": false }, "prime_tower_min_volume": { "default_value": 100 }, "relative_extrusion": { "value": true }, diff --git a/resources/extruders/bambulab_a1mini_extruder_0.def.json b/resources/extruders/bambulab_a1mini_extruder_0.def.json index 960c4b0171..a9d6dedb7e 100644 --- a/resources/extruders/bambulab_a1mini_extruder_0.def.json +++ b/resources/extruders/bambulab_a1mini_extruder_0.def.json @@ -11,8 +11,8 @@ { "extruder_nr": { "default_value": 0 }, "machine_extruder_change_duration": { "default_value": 29 }, - "machine_extruder_end_code": { "default_value": ";===== A1mini extruder end {extruder_nr} begin =====\nG392 S0\nM1007 S0\nM204 S9000\n\nG1 Z{machine_height + 3.0} F1200\nG1 Y90 F9000\nG1 X180 F18000\n\nM400\nM106 P1 S0\nM106 P2 S0\n{if material_print_temperature > 142, extruder_nr}\nM104 S{material_print_temperature, extruder_nr}\n{endif}\n\n\nM620.11 S1 I{extruder_nr} E-{switch_extruder_retraction_amount, extruder_nr} F1200\nM400\n\nM620.1 E F{material_flush_purge_speed} T{material_print_temperature, extruder_nr}\nM620.10 A0 F{material_flush_purge_speed}\nM620.11 S1 I{extruder_nr} E{switch_extruder_retraction_amount, extruder_nr} F{material_flush_purge_speed}\n\nM628 S1\nG92 E0\nG1 E{switch_extruder_retraction_amount, extruder_nr} F{material_flush_purge_speed}\nM400\nM629 S1\n;===== A1mini extruder end {extruder_nr} finish =====\n" }, - "machine_extruder_start_code": { "default_value": ";===== A1mini extruder start {extruder_nr} begin =====\nM620.1 E F{material_flush_purge_speed} T{material_print_temperature, extruder_nr}\nM620.10 A1 F{material_flush_purge_speed} L{prime_tower_min_volume/(line_width*layer_height)} H{machine_nozzle_size} T{material_print_temperature, extruder_nr}\n\nM400\nG92 E0\nM628 S0\n\n; FLUSH_START\n; always use highest temperature to flush\nM400\nM1002 set_filament_type:UNKNOWN\nM109 S{material_print_temperature, extruder_nr}\nM106 P1 S60\nG1 E{(prime_tower_min_volume/(line_width*layer_height)) / 4.0} F{min(extruderValues('material_flush_purge_speed'))} ; do not need pulsatile flushing for start part\nG1 E{((prime_tower_min_volume/(line_width*layer_height)) / 4.0) * 0.02} F50\nG1 E{((prime_tower_min_volume/(line_width*layer_height)) / 4.0) * 0.23} F{min(extruderValues('material_flush_purge_speed'))}\nG1 E{((prime_tower_min_volume/(line_width*layer_height)) / 4.0) * 0.02} F50\nG1 E{((prime_tower_min_volume/(line_width*layer_height)) / 4.0) * 0.23} F{material_flush_purge_speed, extruder_nr}\nG1 E{((prime_tower_min_volume/(line_width*layer_height)) / 4.0) * 0.02} F50\nG1 E{((prime_tower_min_volume/(line_width*layer_height)) / 4.0) * 0.23} F{material_flush_purge_speed, extruder_nr}\nG1 E{((prime_tower_min_volume/(line_width*layer_height)) / 4.0) * 0.02} F50\nG1 E{((prime_tower_min_volume/(line_width*layer_height)) / 4.0) * 0.23} F{material_flush_purge_speed, extruder_nr}\n; FLUSH_END\nG1 E-{retraction_amount * 2} F1800\nG1 E{retraction_amount * 2} F300\nM400\nM1002 set_filament_type:{material_type, extruder_nr}\n\n; WIPE\nM400\nM106 P1 S178\nM400 S3\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nM400\nM106 P1 S0\n\nM106 P1 S60\n; FLUSH_START\nG1 E{((prime_tower_min_volume/(line_width*layer_height)) / 4.0) * 0.18} F{material_flush_purge_speed, extruder_nr}\nG1 E{((prime_tower_min_volume/(line_width*layer_height)) / 4.0) * 0.02} F50\nG1 E{((prime_tower_min_volume/(line_width*layer_height)) / 4.0) * 0.18} F{material_flush_purge_speed, extruder_nr}\nG1 E{((prime_tower_min_volume/(line_width*layer_height)) / 4.0) * 0.02} F50\nG1 E{((prime_tower_min_volume/(line_width*layer_height)) / 4.0) * 0.18} F{material_flush_purge_speed, extruder_nr}\nG1 E{((prime_tower_min_volume/(line_width*layer_height)) / 4.0) * 0.02} F50\nG1 E{((prime_tower_min_volume/(line_width*layer_height)) / 4.0) * 0.18} F{material_flush_purge_speed, extruder_nr}\nG1 E{((prime_tower_min_volume/(line_width*layer_height)) / 4.0) * 0.02} F50\nG1 E{((prime_tower_min_volume/(line_width*layer_height)) / 4.0) * 0.18} F{material_flush_purge_speed, extruder_nr}\nG1 E{((prime_tower_min_volume/(line_width*layer_height)) / 4.0) * 0.02} F50\n; FLUSH_END\nG1 E-{retraction_amount * 2} F1800\nG1 E{retraction_amount * 2} F300\n\n; WIPE\nM400\nM106 P1 S178\nM400 S3\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nM400\nM106 P1 S0\n\nM106 P1 S60\n; FLUSH_START\nG1 E{((prime_tower_min_volume/(line_width*layer_height)) / 4.0) * 0.18} F{material_flush_purge_speed, extruder_nr}\nG1 E{((prime_tower_min_volume/(line_width*layer_height)) / 4.0) * 0.02} F50\nG1 E{((prime_tower_min_volume/(line_width*layer_height)) / 4.0) * 0.18} F{material_flush_purge_speed, extruder_nr}\nG1 E{((prime_tower_min_volume/(line_width*layer_height)) / 4.0) * 0.02} F50\nG1 E{((prime_tower_min_volume/(line_width*layer_height)) / 4.0) * 0.18} F{material_flush_purge_speed, extruder_nr}\nG1 E{((prime_tower_min_volume/(line_width*layer_height)) / 4.0) * 0.02} F50\nG1 E{((prime_tower_min_volume/(line_width*layer_height)) / 4.0) * 0.18} F{material_flush_purge_speed, extruder_nr}\nG1 E{((prime_tower_min_volume/(line_width*layer_height)) / 4.0) * 0.02} F50\nG1 E{((prime_tower_min_volume/(line_width*layer_height)) / 4.0) * 0.18} F{material_flush_purge_speed, extruder_nr}\nG1 E{((prime_tower_min_volume/(line_width*layer_height)) / 4.0) * 0.02} F50\n; FLUSH_END\nG1 E-{retraction_amount * 2} F1800\nG1 E{retraction_amount * 2} F300\n\nM629\n\nM400\nM106 P1 S60\nG1 E5 F{material_flush_purge_speed, extruder_nr} ;Compensate for filament spillage during waiting temperature\nM400\nG92 E0\nG1 E-{retraction_amount * 2} F1800\nM400\nM106 P1 S178\nM400 S3\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nM400\nG1 Z{machine_height + 3.0} F3000\nM106 P1 S0\n\nM622.1 S0\n\nM621 S{extruder_nr}A\nG392 S0\n\nM1007 S1\n;===== A1mini extruder start {extruder_nr} finish =====\n" }, + "machine_extruder_end_code": { "default_value": ";===== A1mini extruder end {extruder_nr} begin =====\nG392 S0\nM1007 S0\nM204 S9000\n\nG1 Z{machine_height + 3.0} F1200\nG1 Y90 F9000\nG1 X180 F18000\n\nM400\nM106 P1 S0\nM106 P2 S0\n{if material_print_temperature > 142, extruder_nr}\nM104 S{material_print_temperature, extruder_nr}\n{endif}\n\n\nM620.11 S1 I{extruder_nr} E-18 F1200\nM400\n\nM620.1 E F{material_flush_purge_speed} T{material_print_temperature, extruder_nr}\nM620.10 A0 F{material_flush_purge_speed}\nM620.11 S1 I{extruder_nr} E18 F{material_flush_purge_speed}\n\nM628 S1\nG92 E0\nG1 E18 F{material_flush_purge_speed}\nM400\nM629 S1\n;===== A1mini extruder end {extruder_nr} finish =====\n" }, + "machine_extruder_start_code": { "default_value": ";===== A1mini extruder start {extruder_nr} begin =====\nM620.1 E F{material_flush_purge_speed} T{material_print_temperature, extruder_nr}\nM620.10 A1 F{material_flush_purge_speed} L{prime_tower_min_volume/(line_width*layer_height)} H{machine_nozzle_size} T{material_print_temperature, extruder_nr}\n\nM400\nG92 E0\nM628 S0\n\n; FLUSH_START\n; always use highest temperature to flush\nM400\nM1002 set_filament_type:UNKNOWN\nM109 S{material_print_temperature, extruder_nr}\nM106 P1 S60\nG1 E{material_flush_purge_length / 4.0} F{min(extruderValues('material_flush_purge_speed'))} ; do not need pulsatile flushing for start part\nG1 E{(material_flush_purge_length / 4.0) * 0.02} F50\nG1 E{(material_flush_purge_length / 4.0) * 0.23} F{min(extruderValues('material_flush_purge_speed'))}\nG1 E{(material_flush_purge_length / 4.0) * 0.02} F50\nG1 E{(material_flush_purge_length / 4.0) * 0.23} F{material_flush_purge_speed, extruder_nr}\nG1 E{(material_flush_purge_length / 4.0) * 0.02} F50\nG1 E{(material_flush_purge_length / 4.0) * 0.23} F{material_flush_purge_speed, extruder_nr}\nG1 E{(material_flush_purge_length / 4.0) * 0.02} F50\nG1 E{(material_flush_purge_length / 4.0) * 0.23} F{material_flush_purge_speed, extruder_nr}\n; FLUSH_END\nG1 E-{retraction_amount * 2} F1800\nG1 E{retraction_amount * 2} F300\nM400\nM1002 set_filament_type:{material_type, extruder_nr}\n\n; WIPE\nM400\nM106 P1 S178\nM400 S3\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nM400\nM106 P1 S0\n\nM106 P1 S60\n; FLUSH_START\nG1 E{(material_flush_purge_length / 4.0) * 0.18} F{material_flush_purge_speed, extruder_nr}\nG1 E{(material_flush_purge_length / 4.0) * 0.02} F50\nG1 E{(material_flush_purge_length / 4.0) * 0.18} F{material_flush_purge_speed, extruder_nr}\nG1 E{(material_flush_purge_length / 4.0) * 0.02} F50\nG1 E{(material_flush_purge_length / 4.0) * 0.18} F{material_flush_purge_speed, extruder_nr}\nG1 E{(material_flush_purge_length / 4.0) * 0.02} F50\nG1 E{(material_flush_purge_length / 4.0) * 0.18} F{material_flush_purge_speed, extruder_nr}\nG1 E{(material_flush_purge_length / 4.0) * 0.02} F50\nG1 E{(material_flush_purge_length / 4.0) * 0.18} F{material_flush_purge_speed, extruder_nr}\nG1 E{(material_flush_purge_length / 4.0) * 0.02} F50\n; FLUSH_END\nG1 E-{retraction_amount * 2} F1800\nG1 E{retraction_amount * 2} F300\n\n; WIPE\nM400\nM106 P1 S178\nM400 S3\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nM400\nM106 P1 S0\n\nM106 P1 S60\n; FLUSH_START\nG1 E{(material_flush_purge_length / 4.0) * 0.18} F{material_flush_purge_speed, extruder_nr}\nG1 E{(material_flush_purge_length / 4.0) * 0.02} F50\nG1 E{(material_flush_purge_length / 4.0) * 0.18} F{material_flush_purge_speed, extruder_nr}\nG1 E{(material_flush_purge_length / 4.0) * 0.02} F50\nG1 E{(material_flush_purge_length / 4.0) * 0.18} F{material_flush_purge_speed, extruder_nr}\nG1 E{(material_flush_purge_length / 4.0) * 0.02} F50\nG1 E{(material_flush_purge_length / 4.0) * 0.18} F{material_flush_purge_speed, extruder_nr}\nG1 E{(material_flush_purge_length / 4.0) * 0.02} F50\nG1 E{(material_flush_purge_length / 4.0) * 0.18} F{material_flush_purge_speed, extruder_nr}\nG1 E{(material_flush_purge_length / 4.0) * 0.02} F50\n; FLUSH_END\nG1 E-{retraction_amount * 2} F1800\nG1 E{retraction_amount * 2} F300\n\nM629\n\nM400\nM106 P1 S60\nG1 E5 F{material_flush_purge_speed, extruder_nr} ;Compensate for filament spillage during waiting temperature\nM400\nG92 E0\nG1 E-{retraction_amount * 2} F1800\nM400\nM106 P1 S178\nM400 S3\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nM400\nG1 Z{machine_height + 3.0} F3000\nM106 P1 S0\n\nM622.1 S0\n\nM621 S{extruder_nr}A\nG392 S0\n\nM1007 S1\n;===== A1mini extruder start {extruder_nr} finish =====\n" }, "material_diameter": { "default_value": 1.75 }, "switch_extruder_retraction_amount": { "default_value": 18 } } diff --git a/resources/extruders/bambulab_a1mini_extruder_1.def.json b/resources/extruders/bambulab_a1mini_extruder_1.def.json index 201889d569..a01dd4294f 100644 --- a/resources/extruders/bambulab_a1mini_extruder_1.def.json +++ b/resources/extruders/bambulab_a1mini_extruder_1.def.json @@ -11,8 +11,8 @@ { "extruder_nr": { "default_value": 1 }, "machine_extruder_change_duration": { "default_value": 29 }, - "machine_extruder_end_code": { "default_value": ";===== A1mini extruder end {extruder_nr} begin =====\nG392 S0\nM1007 S0\nM204 S9000\n\nG1 Z{machine_height + 3.0} F1200\nG1 Y90 F9000\nG1 X180 F18000\n\nM400\nM106 P1 S0\nM106 P2 S0\n{if material_print_temperature > 142, extruder_nr}\nM104 S{material_print_temperature, extruder_nr}\n{endif}\n\n\nM620.11 S1 I{extruder_nr} E-{switch_extruder_retraction_amount, extruder_nr} F1200\nM400\n\nM620.1 E F{material_flush_purge_speed} T{material_print_temperature, extruder_nr}\nM620.10 A0 F{material_flush_purge_speed}\nM620.11 S1 I{extruder_nr} E{switch_extruder_retraction_amount, extruder_nr} F{material_flush_purge_speed}\n\nM628 S1\nG92 E0\nG1 E{switch_extruder_retraction_amount, extruder_nr} F{material_flush_purge_speed}\nM400\nM629 S1\n;===== A1mini extruder end {extruder_nr} finish =====\n" }, - "machine_extruder_start_code": { "default_value": ";===== A1mini extruder start {extruder_nr} begin =====\nM620.1 E F{material_flush_purge_speed} T{material_print_temperature, extruder_nr}\nM620.10 A1 F{material_flush_purge_speed} L{prime_tower_min_volume/(line_width*layer_height)} H{machine_nozzle_size} T{material_print_temperature, extruder_nr}\n\nM400\nG92 E0\nM628 S0\n\n; FLUSH_START\n; always use highest temperature to flush\nM400\nM1002 set_filament_type:UNKNOWN\nM109 S{material_print_temperature, extruder_nr}\nM106 P1 S60\nG1 E{(prime_tower_min_volume/(line_width*layer_height)) / 4.0} F{min(extruderValues('material_flush_purge_speed'))} ; do not need pulsatile flushing for start part\nG1 E{((prime_tower_min_volume/(line_width*layer_height)) / 4.0) * 0.02} F50\nG1 E{((prime_tower_min_volume/(line_width*layer_height)) / 4.0) * 0.23} F{min(extruderValues('material_flush_purge_speed'))}\nG1 E{((prime_tower_min_volume/(line_width*layer_height)) / 4.0) * 0.02} F50\nG1 E{((prime_tower_min_volume/(line_width*layer_height)) / 4.0) * 0.23} F{material_flush_purge_speed, extruder_nr}\nG1 E{((prime_tower_min_volume/(line_width*layer_height)) / 4.0) * 0.02} F50\nG1 E{((prime_tower_min_volume/(line_width*layer_height)) / 4.0) * 0.23} F{material_flush_purge_speed, extruder_nr}\nG1 E{((prime_tower_min_volume/(line_width*layer_height)) / 4.0) * 0.02} F50\nG1 E{((prime_tower_min_volume/(line_width*layer_height)) / 4.0) * 0.23} F{material_flush_purge_speed, extruder_nr}\n; FLUSH_END\nG1 E-{retraction_amount * 2} F1800\nG1 E{retraction_amount * 2} F300\nM400\nM1002 set_filament_type:{material_type, extruder_nr}\n\n; WIPE\nM400\nM106 P1 S178\nM400 S3\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nM400\nM106 P1 S0\n\nM106 P1 S60\n; FLUSH_START\nG1 E{((prime_tower_min_volume/(line_width*layer_height)) / 4.0) * 0.18} F{material_flush_purge_speed, extruder_nr}\nG1 E{((prime_tower_min_volume/(line_width*layer_height)) / 4.0) * 0.02} F50\nG1 E{((prime_tower_min_volume/(line_width*layer_height)) / 4.0) * 0.18} F{material_flush_purge_speed, extruder_nr}\nG1 E{((prime_tower_min_volume/(line_width*layer_height)) / 4.0) * 0.02} F50\nG1 E{((prime_tower_min_volume/(line_width*layer_height)) / 4.0) * 0.18} F{material_flush_purge_speed, extruder_nr}\nG1 E{((prime_tower_min_volume/(line_width*layer_height)) / 4.0) * 0.02} F50\nG1 E{((prime_tower_min_volume/(line_width*layer_height)) / 4.0) * 0.18} F{material_flush_purge_speed, extruder_nr}\nG1 E{((prime_tower_min_volume/(line_width*layer_height)) / 4.0) * 0.02} F50\nG1 E{((prime_tower_min_volume/(line_width*layer_height)) / 4.0) * 0.18} F{material_flush_purge_speed, extruder_nr}\nG1 E{((prime_tower_min_volume/(line_width*layer_height)) / 4.0) * 0.02} F50\n; FLUSH_END\nG1 E-{retraction_amount * 2} F1800\nG1 E{retraction_amount * 2} F300\n\n; WIPE\nM400\nM106 P1 S178\nM400 S3\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nM400\nM106 P1 S0\n\nM106 P1 S60\n; FLUSH_START\nG1 E{((prime_tower_min_volume/(line_width*layer_height)) / 4.0) * 0.18} F{material_flush_purge_speed, extruder_nr}\nG1 E{((prime_tower_min_volume/(line_width*layer_height)) / 4.0) * 0.02} F50\nG1 E{((prime_tower_min_volume/(line_width*layer_height)) / 4.0) * 0.18} F{material_flush_purge_speed, extruder_nr}\nG1 E{((prime_tower_min_volume/(line_width*layer_height)) / 4.0) * 0.02} F50\nG1 E{((prime_tower_min_volume/(line_width*layer_height)) / 4.0) * 0.18} F{material_flush_purge_speed, extruder_nr}\nG1 E{((prime_tower_min_volume/(line_width*layer_height)) / 4.0) * 0.02} F50\nG1 E{((prime_tower_min_volume/(line_width*layer_height)) / 4.0) * 0.18} F{material_flush_purge_speed, extruder_nr}\nG1 E{((prime_tower_min_volume/(line_width*layer_height)) / 4.0) * 0.02} F50\nG1 E{((prime_tower_min_volume/(line_width*layer_height)) / 4.0) * 0.18} F{material_flush_purge_speed, extruder_nr}\nG1 E{((prime_tower_min_volume/(line_width*layer_height)) / 4.0) * 0.02} F50\n; FLUSH_END\nG1 E-{retraction_amount * 2} F1800\nG1 E{retraction_amount * 2} F300\n\nM629\n\nM400\nM106 P1 S60\nG1 E5 F{material_flush_purge_speed, extruder_nr} ;Compensate for filament spillage during waiting temperature\nM400\nG92 E0\nG1 E-{retraction_amount * 2} F1800\nM400\nM106 P1 S178\nM400 S3\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nM400\nG1 Z{machine_height + 3.0} F3000\nM106 P1 S0\n\nM622.1 S0\n\nM621 S{extruder_nr}A\nG392 S0\n\nM1007 S1\n;===== A1mini extruder start {extruder_nr} finish =====\n" }, + "machine_extruder_end_code": { "default_value": ";===== A1mini extruder end {extruder_nr} begin =====\nG392 S0\nM1007 S0\nM204 S9000\n\nG1 Z{machine_height + 3.0} F1200\nG1 Y90 F9000\nG1 X180 F18000\n\nM400\nM106 P1 S0\nM106 P2 S0\n{if material_print_temperature > 142, extruder_nr}\nM104 S{material_print_temperature, extruder_nr}\n{endif}\n\n\nM620.11 S1 I{extruder_nr} E-18 F1200\nM400\n\nM620.1 E F{material_flush_purge_speed} T{material_print_temperature, extruder_nr}\nM620.10 A0 F{material_flush_purge_speed}\nM620.11 S1 I{extruder_nr} E18 F{material_flush_purge_speed}\n\nM628 S1\nG92 E0\nG1 E18 F{material_flush_purge_speed}\nM400\nM629 S1\n;===== A1mini extruder end {extruder_nr} finish =====\n" }, + "machine_extruder_start_code": { "default_value": ";===== A1mini extruder start {extruder_nr} begin =====\nM620.1 E F{material_flush_purge_speed} T{material_print_temperature, extruder_nr}\nM620.10 A1 F{material_flush_purge_speed} L{prime_tower_min_volume/(line_width*layer_height)} H{machine_nozzle_size} T{material_print_temperature, extruder_nr}\n\nM400\nG92 E0\nM628 S0\n\n; FLUSH_START\n; always use highest temperature to flush\nM400\nM1002 set_filament_type:UNKNOWN\nM109 S{material_print_temperature, extruder_nr}\nM106 P1 S60\nG1 E{material_flush_purge_length / 4.0} F{min(extruderValues('material_flush_purge_speed'))} ; do not need pulsatile flushing for start part\nG1 E{(material_flush_purge_length / 4.0) * 0.02} F50\nG1 E{(material_flush_purge_length / 4.0) * 0.23} F{min(extruderValues('material_flush_purge_speed'))}\nG1 E{(material_flush_purge_length / 4.0) * 0.02} F50\nG1 E{(material_flush_purge_length / 4.0) * 0.23} F{material_flush_purge_speed, extruder_nr}\nG1 E{(material_flush_purge_length / 4.0) * 0.02} F50\nG1 E{(material_flush_purge_length / 4.0) * 0.23} F{material_flush_purge_speed, extruder_nr}\nG1 E{(material_flush_purge_length / 4.0) * 0.02} F50\nG1 E{(material_flush_purge_length / 4.0) * 0.23} F{material_flush_purge_speed, extruder_nr}\n; FLUSH_END\nG1 E-{retraction_amount * 2} F1800\nG1 E{retraction_amount * 2} F300\nM400\nM1002 set_filament_type:{material_type, extruder_nr}\n\n; WIPE\nM400\nM106 P1 S178\nM400 S3\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nM400\nM106 P1 S0\n\nM106 P1 S60\n; FLUSH_START\nG1 E{(material_flush_purge_length / 4.0) * 0.18} F{material_flush_purge_speed, extruder_nr}\nG1 E{(material_flush_purge_length / 4.0) * 0.02} F50\nG1 E{(material_flush_purge_length / 4.0) * 0.18} F{material_flush_purge_speed, extruder_nr}\nG1 E{(material_flush_purge_length / 4.0) * 0.02} F50\nG1 E{(material_flush_purge_length / 4.0) * 0.18} F{material_flush_purge_speed, extruder_nr}\nG1 E{(material_flush_purge_length / 4.0) * 0.02} F50\nG1 E{(material_flush_purge_length / 4.0) * 0.18} F{material_flush_purge_speed, extruder_nr}\nG1 E{(material_flush_purge_length / 4.0) * 0.02} F50\nG1 E{(material_flush_purge_length / 4.0) * 0.18} F{material_flush_purge_speed, extruder_nr}\nG1 E{(material_flush_purge_length / 4.0) * 0.02} F50\n; FLUSH_END\nG1 E-{retraction_amount * 2} F1800\nG1 E{retraction_amount * 2} F300\n\n; WIPE\nM400\nM106 P1 S178\nM400 S3\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nM400\nM106 P1 S0\n\nM106 P1 S60\n; FLUSH_START\nG1 E{(material_flush_purge_length / 4.0) * 0.18} F{material_flush_purge_speed, extruder_nr}\nG1 E{(material_flush_purge_length / 4.0) * 0.02} F50\nG1 E{(material_flush_purge_length / 4.0) * 0.18} F{material_flush_purge_speed, extruder_nr}\nG1 E{(material_flush_purge_length / 4.0) * 0.02} F50\nG1 E{(material_flush_purge_length / 4.0) * 0.18} F{material_flush_purge_speed, extruder_nr}\nG1 E{(material_flush_purge_length / 4.0) * 0.02} F50\nG1 E{(material_flush_purge_length / 4.0) * 0.18} F{material_flush_purge_speed, extruder_nr}\nG1 E{(material_flush_purge_length / 4.0) * 0.02} F50\nG1 E{(material_flush_purge_length / 4.0) * 0.18} F{material_flush_purge_speed, extruder_nr}\nG1 E{(material_flush_purge_length / 4.0) * 0.02} F50\n; FLUSH_END\nG1 E-{retraction_amount * 2} F1800\nG1 E{retraction_amount * 2} F300\n\nM629\n\nM400\nM106 P1 S60\nG1 E5 F{material_flush_purge_speed, extruder_nr} ;Compensate for filament spillage during waiting temperature\nM400\nG92 E0\nG1 E-{retraction_amount * 2} F1800\nM400\nM106 P1 S178\nM400 S3\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nM400\nG1 Z{machine_height + 3.0} F3000\nM106 P1 S0\n\nM622.1 S0\n\nM621 S{extruder_nr}A\nG392 S0\n\nM1007 S1\n;===== A1mini extruder start {extruder_nr} finish =====\n" }, "material_diameter": { "default_value": 1.75 }, "switch_extruder_retraction_amount": { "default_value": 18 } } diff --git a/resources/extruders/bambulab_a1mini_extruder_2.def.json b/resources/extruders/bambulab_a1mini_extruder_2.def.json index 3490418c01..e8490ed1ea 100644 --- a/resources/extruders/bambulab_a1mini_extruder_2.def.json +++ b/resources/extruders/bambulab_a1mini_extruder_2.def.json @@ -11,8 +11,8 @@ { "extruder_nr": { "default_value": 2 }, "machine_extruder_change_duration": { "default_value": 29 }, - "machine_extruder_end_code": { "default_value": ";===== A1mini extruder end {extruder_nr} begin =====\nG392 S0\nM1007 S0\nM204 S9000\n\nG1 Z{machine_height + 3.0} F1200\nG1 Y90 F9000\nG1 X180 F18000\n\nM400\nM106 P1 S0\nM106 P2 S0\n{if material_print_temperature > 142, extruder_nr}\nM104 S{material_print_temperature, extruder_nr}\n{endif}\n\n\nM620.11 S1 I{extruder_nr} E-{switch_extruder_retraction_amount, extruder_nr} F1200\nM400\n\nM620.1 E F{material_flush_purge_speed} T{material_print_temperature, extruder_nr}\nM620.10 A0 F{material_flush_purge_speed}\nM620.11 S1 I{extruder_nr} E{switch_extruder_retraction_amount, extruder_nr} F{material_flush_purge_speed}\n\nM628 S1\nG92 E0\nG1 E{switch_extruder_retraction_amount, extruder_nr} F{material_flush_purge_speed}\nM400\nM629 S1\n;===== A1mini extruder end {extruder_nr} finish =====\n" }, - "machine_extruder_start_code": { "default_value": ";===== A1mini extruder start {extruder_nr} begin =====\nM620.1 E F{material_flush_purge_speed} T{material_print_temperature, extruder_nr}\nM620.10 A1 F{material_flush_purge_speed} L{prime_tower_min_volume/(line_width*layer_height)} H{machine_nozzle_size} T{material_print_temperature, extruder_nr}\n\nM400\nG92 E0\nM628 S0\n\n; FLUSH_START\n; always use highest temperature to flush\nM400\nM1002 set_filament_type:UNKNOWN\nM109 S{material_print_temperature, extruder_nr}\nM106 P1 S60\nG1 E{(prime_tower_min_volume/(line_width*layer_height)) / 4.0} F{min(extruderValues('material_flush_purge_speed'))} ; do not need pulsatile flushing for start part\nG1 E{((prime_tower_min_volume/(line_width*layer_height)) / 4.0) * 0.02} F50\nG1 E{((prime_tower_min_volume/(line_width*layer_height)) / 4.0) * 0.23} F{min(extruderValues('material_flush_purge_speed'))}\nG1 E{((prime_tower_min_volume/(line_width*layer_height)) / 4.0) * 0.02} F50\nG1 E{((prime_tower_min_volume/(line_width*layer_height)) / 4.0) * 0.23} F{material_flush_purge_speed, extruder_nr}\nG1 E{((prime_tower_min_volume/(line_width*layer_height)) / 4.0) * 0.02} F50\nG1 E{((prime_tower_min_volume/(line_width*layer_height)) / 4.0) * 0.23} F{material_flush_purge_speed, extruder_nr}\nG1 E{((prime_tower_min_volume/(line_width*layer_height)) / 4.0) * 0.02} F50\nG1 E{((prime_tower_min_volume/(line_width*layer_height)) / 4.0) * 0.23} F{material_flush_purge_speed, extruder_nr}\n; FLUSH_END\nG1 E-{retraction_amount * 2} F1800\nG1 E{retraction_amount * 2} F300\nM400\nM1002 set_filament_type:{material_type, extruder_nr}\n\n; WIPE\nM400\nM106 P1 S178\nM400 S3\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nM400\nM106 P1 S0\n\nM106 P1 S60\n; FLUSH_START\nG1 E{((prime_tower_min_volume/(line_width*layer_height)) / 4.0) * 0.18} F{material_flush_purge_speed, extruder_nr}\nG1 E{((prime_tower_min_volume/(line_width*layer_height)) / 4.0) * 0.02} F50\nG1 E{((prime_tower_min_volume/(line_width*layer_height)) / 4.0) * 0.18} F{material_flush_purge_speed, extruder_nr}\nG1 E{((prime_tower_min_volume/(line_width*layer_height)) / 4.0) * 0.02} F50\nG1 E{((prime_tower_min_volume/(line_width*layer_height)) / 4.0) * 0.18} F{material_flush_purge_speed, extruder_nr}\nG1 E{((prime_tower_min_volume/(line_width*layer_height)) / 4.0) * 0.02} F50\nG1 E{((prime_tower_min_volume/(line_width*layer_height)) / 4.0) * 0.18} F{material_flush_purge_speed, extruder_nr}\nG1 E{((prime_tower_min_volume/(line_width*layer_height)) / 4.0) * 0.02} F50\nG1 E{((prime_tower_min_volume/(line_width*layer_height)) / 4.0) * 0.18} F{material_flush_purge_speed, extruder_nr}\nG1 E{((prime_tower_min_volume/(line_width*layer_height)) / 4.0) * 0.02} F50\n; FLUSH_END\nG1 E-{retraction_amount * 2} F1800\nG1 E{retraction_amount * 2} F300\n\n; WIPE\nM400\nM106 P1 S178\nM400 S3\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nM400\nM106 P1 S0\n\nM106 P1 S60\n; FLUSH_START\nG1 E{((prime_tower_min_volume/(line_width*layer_height)) / 4.0) * 0.18} F{material_flush_purge_speed, extruder_nr}\nG1 E{((prime_tower_min_volume/(line_width*layer_height)) / 4.0) * 0.02} F50\nG1 E{((prime_tower_min_volume/(line_width*layer_height)) / 4.0) * 0.18} F{material_flush_purge_speed, extruder_nr}\nG1 E{((prime_tower_min_volume/(line_width*layer_height)) / 4.0) * 0.02} F50\nG1 E{((prime_tower_min_volume/(line_width*layer_height)) / 4.0) * 0.18} F{material_flush_purge_speed, extruder_nr}\nG1 E{((prime_tower_min_volume/(line_width*layer_height)) / 4.0) * 0.02} F50\nG1 E{((prime_tower_min_volume/(line_width*layer_height)) / 4.0) * 0.18} F{material_flush_purge_speed, extruder_nr}\nG1 E{((prime_tower_min_volume/(line_width*layer_height)) / 4.0) * 0.02} F50\nG1 E{((prime_tower_min_volume/(line_width*layer_height)) / 4.0) * 0.18} F{material_flush_purge_speed, extruder_nr}\nG1 E{((prime_tower_min_volume/(line_width*layer_height)) / 4.0) * 0.02} F50\n; FLUSH_END\nG1 E-{retraction_amount * 2} F1800\nG1 E{retraction_amount * 2} F300\n\nM629\n\nM400\nM106 P1 S60\nG1 E5 F{material_flush_purge_speed, extruder_nr} ;Compensate for filament spillage during waiting temperature\nM400\nG92 E0\nG1 E-{retraction_amount * 2} F1800\nM400\nM106 P1 S178\nM400 S3\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nM400\nG1 Z{machine_height + 3.0} F3000\nM106 P1 S0\n\nM622.1 S0\n\nM621 S{extruder_nr}A\nG392 S0\n\nM1007 S1\n;===== A1mini extruder start {extruder_nr} finish =====\n" }, + "machine_extruder_end_code": { "default_value": ";===== A1mini extruder end {extruder_nr} begin =====\nG392 S0\nM1007 S0\nM204 S9000\n\nG1 Z{machine_height + 3.0} F1200\nG1 Y90 F9000\nG1 X180 F18000\n\nM400\nM106 P1 S0\nM106 P2 S0\n{if material_print_temperature > 142, extruder_nr}\nM104 S{material_print_temperature, extruder_nr}\n{endif}\n\n\nM620.11 S1 I{extruder_nr} E-18 F1200\nM400\n\nM620.1 E F{material_flush_purge_speed} T{material_print_temperature, extruder_nr}\nM620.10 A0 F{material_flush_purge_speed}\nM620.11 S1 I{extruder_nr} E18 F{material_flush_purge_speed}\n\nM628 S1\nG92 E0\nG1 E18 F{material_flush_purge_speed}\nM400\nM629 S1\n;===== A1mini extruder end {extruder_nr} finish =====\n" }, + "machine_extruder_start_code": { "default_value": ";===== A1mini extruder start {extruder_nr} begin =====\nM620.1 E F{material_flush_purge_speed} T{material_print_temperature, extruder_nr}\nM620.10 A1 F{material_flush_purge_speed} L{prime_tower_min_volume/(line_width*layer_height)} H{machine_nozzle_size} T{material_print_temperature, extruder_nr}\n\nM400\nG92 E0\nM628 S0\n\n; FLUSH_START\n; always use highest temperature to flush\nM400\nM1002 set_filament_type:UNKNOWN\nM109 S{material_print_temperature, extruder_nr}\nM106 P1 S60\nG1 E{material_flush_purge_length / 4.0} F{min(extruderValues('material_flush_purge_speed'))} ; do not need pulsatile flushing for start part\nG1 E{(material_flush_purge_length / 4.0) * 0.02} F50\nG1 E{(material_flush_purge_length / 4.0) * 0.23} F{min(extruderValues('material_flush_purge_speed'))}\nG1 E{(material_flush_purge_length / 4.0) * 0.02} F50\nG1 E{(material_flush_purge_length / 4.0) * 0.23} F{material_flush_purge_speed, extruder_nr}\nG1 E{(material_flush_purge_length / 4.0) * 0.02} F50\nG1 E{(material_flush_purge_length / 4.0) * 0.23} F{material_flush_purge_speed, extruder_nr}\nG1 E{(material_flush_purge_length / 4.0) * 0.02} F50\nG1 E{(material_flush_purge_length / 4.0) * 0.23} F{material_flush_purge_speed, extruder_nr}\n; FLUSH_END\nG1 E-{retraction_amount * 2} F1800\nG1 E{retraction_amount * 2} F300\nM400\nM1002 set_filament_type:{material_type, extruder_nr}\n\n; WIPE\nM400\nM106 P1 S178\nM400 S3\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nM400\nM106 P1 S0\n\nM106 P1 S60\n; FLUSH_START\nG1 E{(material_flush_purge_length / 4.0) * 0.18} F{material_flush_purge_speed, extruder_nr}\nG1 E{(material_flush_purge_length / 4.0) * 0.02} F50\nG1 E{(material_flush_purge_length / 4.0) * 0.18} F{material_flush_purge_speed, extruder_nr}\nG1 E{(material_flush_purge_length / 4.0) * 0.02} F50\nG1 E{(material_flush_purge_length / 4.0) * 0.18} F{material_flush_purge_speed, extruder_nr}\nG1 E{(material_flush_purge_length / 4.0) * 0.02} F50\nG1 E{(material_flush_purge_length / 4.0) * 0.18} F{material_flush_purge_speed, extruder_nr}\nG1 E{(material_flush_purge_length / 4.0) * 0.02} F50\nG1 E{(material_flush_purge_length / 4.0) * 0.18} F{material_flush_purge_speed, extruder_nr}\nG1 E{(material_flush_purge_length / 4.0) * 0.02} F50\n; FLUSH_END\nG1 E-{retraction_amount * 2} F1800\nG1 E{retraction_amount * 2} F300\n\n; WIPE\nM400\nM106 P1 S178\nM400 S3\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nM400\nM106 P1 S0\n\nM106 P1 S60\n; FLUSH_START\nG1 E{(material_flush_purge_length / 4.0) * 0.18} F{material_flush_purge_speed, extruder_nr}\nG1 E{(material_flush_purge_length / 4.0) * 0.02} F50\nG1 E{(material_flush_purge_length / 4.0) * 0.18} F{material_flush_purge_speed, extruder_nr}\nG1 E{(material_flush_purge_length / 4.0) * 0.02} F50\nG1 E{(material_flush_purge_length / 4.0) * 0.18} F{material_flush_purge_speed, extruder_nr}\nG1 E{(material_flush_purge_length / 4.0) * 0.02} F50\nG1 E{(material_flush_purge_length / 4.0) * 0.18} F{material_flush_purge_speed, extruder_nr}\nG1 E{(material_flush_purge_length / 4.0) * 0.02} F50\nG1 E{(material_flush_purge_length / 4.0) * 0.18} F{material_flush_purge_speed, extruder_nr}\nG1 E{(material_flush_purge_length / 4.0) * 0.02} F50\n; FLUSH_END\nG1 E-{retraction_amount * 2} F1800\nG1 E{retraction_amount * 2} F300\n\nM629\n\nM400\nM106 P1 S60\nG1 E5 F{material_flush_purge_speed, extruder_nr} ;Compensate for filament spillage during waiting temperature\nM400\nG92 E0\nG1 E-{retraction_amount * 2} F1800\nM400\nM106 P1 S178\nM400 S3\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nM400\nG1 Z{machine_height + 3.0} F3000\nM106 P1 S0\n\nM622.1 S0\n\nM621 S{extruder_nr}A\nG392 S0\n\nM1007 S1\n;===== A1mini extruder start {extruder_nr} finish =====\n" }, "material_diameter": { "default_value": 1.75 }, "switch_extruder_retraction_amount": { "default_value": 18 } } diff --git a/resources/extruders/bambulab_a1mini_extruder_3.def.json b/resources/extruders/bambulab_a1mini_extruder_3.def.json index 60428e4f02..7d45756318 100644 --- a/resources/extruders/bambulab_a1mini_extruder_3.def.json +++ b/resources/extruders/bambulab_a1mini_extruder_3.def.json @@ -11,8 +11,8 @@ { "extruder_nr": { "default_value": 3 }, "machine_extruder_change_duration": { "default_value": 29 }, - "machine_extruder_end_code": { "default_value": ";===== A1mini extruder end {extruder_nr} begin =====\nG392 S0\nM1007 S0\nM204 S9000\n\nG1 Z{machine_height + 3.0} F1200\nG1 Y90 F9000\nG1 X180 F18000\n\nM400\nM106 P1 S0\nM106 P2 S0\n{if material_print_temperature > 142, extruder_nr}\nM104 S{material_print_temperature, extruder_nr}\n{endif}\n\n\nM620.11 S1 I{extruder_nr} E-{switch_extruder_retraction_amount, extruder_nr} F1200\nM400\n\nM620.1 E F{material_flush_purge_speed} T{material_print_temperature, extruder_nr}\nM620.10 A0 F{material_flush_purge_speed}\nM620.11 S1 I{extruder_nr} E{switch_extruder_retraction_amount, extruder_nr} F{material_flush_purge_speed}\n\nM628 S1\nG92 E0\nG1 E{switch_extruder_retraction_amount, extruder_nr} F{material_flush_purge_speed}\nM400\nM629 S1\n;===== A1mini extruder end {extruder_nr} finish =====\n" }, - "machine_extruder_start_code": { "default_value": ";===== A1mini extruder start {extruder_nr} begin =====\nM620.1 E F{material_flush_purge_speed} T{material_print_temperature, extruder_nr}\nM620.10 A1 F{material_flush_purge_speed} L{prime_tower_min_volume/(line_width*layer_height)} H{machine_nozzle_size} T{material_print_temperature, extruder_nr}\n\nM400\nG92 E0\nM628 S0\n\n; FLUSH_START\n; always use highest temperature to flush\nM400\nM1002 set_filament_type:UNKNOWN\nM109 S{material_print_temperature, extruder_nr}\nM106 P1 S60\nG1 E{(prime_tower_min_volume/(line_width*layer_height)) / 4.0} F{min(extruderValues('material_flush_purge_speed'))} ; do not need pulsatile flushing for start part\nG1 E{((prime_tower_min_volume/(line_width*layer_height)) / 4.0) * 0.02} F50\nG1 E{((prime_tower_min_volume/(line_width*layer_height)) / 4.0) * 0.23} F{min(extruderValues('material_flush_purge_speed'))}\nG1 E{((prime_tower_min_volume/(line_width*layer_height)) / 4.0) * 0.02} F50\nG1 E{((prime_tower_min_volume/(line_width*layer_height)) / 4.0) * 0.23} F{material_flush_purge_speed, extruder_nr}\nG1 E{((prime_tower_min_volume/(line_width*layer_height)) / 4.0) * 0.02} F50\nG1 E{((prime_tower_min_volume/(line_width*layer_height)) / 4.0) * 0.23} F{material_flush_purge_speed, extruder_nr}\nG1 E{((prime_tower_min_volume/(line_width*layer_height)) / 4.0) * 0.02} F50\nG1 E{((prime_tower_min_volume/(line_width*layer_height)) / 4.0) * 0.23} F{material_flush_purge_speed, extruder_nr}\n; FLUSH_END\nG1 E-{retraction_amount * 2} F1800\nG1 E{retraction_amount * 2} F300\nM400\nM1002 set_filament_type:{material_type, extruder_nr}\n\n; WIPE\nM400\nM106 P1 S178\nM400 S3\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nM400\nM106 P1 S0\n\nM106 P1 S60\n; FLUSH_START\nG1 E{((prime_tower_min_volume/(line_width*layer_height)) / 4.0) * 0.18} F{material_flush_purge_speed, extruder_nr}\nG1 E{((prime_tower_min_volume/(line_width*layer_height)) / 4.0) * 0.02} F50\nG1 E{((prime_tower_min_volume/(line_width*layer_height)) / 4.0) * 0.18} F{material_flush_purge_speed, extruder_nr}\nG1 E{((prime_tower_min_volume/(line_width*layer_height)) / 4.0) * 0.02} F50\nG1 E{((prime_tower_min_volume/(line_width*layer_height)) / 4.0) * 0.18} F{material_flush_purge_speed, extruder_nr}\nG1 E{((prime_tower_min_volume/(line_width*layer_height)) / 4.0) * 0.02} F50\nG1 E{((prime_tower_min_volume/(line_width*layer_height)) / 4.0) * 0.18} F{material_flush_purge_speed, extruder_nr}\nG1 E{((prime_tower_min_volume/(line_width*layer_height)) / 4.0) * 0.02} F50\nG1 E{((prime_tower_min_volume/(line_width*layer_height)) / 4.0) * 0.18} F{material_flush_purge_speed, extruder_nr}\nG1 E{((prime_tower_min_volume/(line_width*layer_height)) / 4.0) * 0.02} F50\n; FLUSH_END\nG1 E-{retraction_amount * 2} F1800\nG1 E{retraction_amount * 2} F300\n\n; WIPE\nM400\nM106 P1 S178\nM400 S3\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nM400\nM106 P1 S0\n\nM106 P1 S60\n; FLUSH_START\nG1 E{((prime_tower_min_volume/(line_width*layer_height)) / 4.0) * 0.18} F{material_flush_purge_speed, extruder_nr}\nG1 E{((prime_tower_min_volume/(line_width*layer_height)) / 4.0) * 0.02} F50\nG1 E{((prime_tower_min_volume/(line_width*layer_height)) / 4.0) * 0.18} F{material_flush_purge_speed, extruder_nr}\nG1 E{((prime_tower_min_volume/(line_width*layer_height)) / 4.0) * 0.02} F50\nG1 E{((prime_tower_min_volume/(line_width*layer_height)) / 4.0) * 0.18} F{material_flush_purge_speed, extruder_nr}\nG1 E{((prime_tower_min_volume/(line_width*layer_height)) / 4.0) * 0.02} F50\nG1 E{((prime_tower_min_volume/(line_width*layer_height)) / 4.0) * 0.18} F{material_flush_purge_speed, extruder_nr}\nG1 E{((prime_tower_min_volume/(line_width*layer_height)) / 4.0) * 0.02} F50\nG1 E{((prime_tower_min_volume/(line_width*layer_height)) / 4.0) * 0.18} F{material_flush_purge_speed, extruder_nr}\nG1 E{((prime_tower_min_volume/(line_width*layer_height)) / 4.0) * 0.02} F50\n; FLUSH_END\nG1 E-{retraction_amount * 2} F1800\nG1 E{retraction_amount * 2} F300\n\nM629\n\nM400\nM106 P1 S60\nG1 E5 F{material_flush_purge_speed, extruder_nr} ;Compensate for filament spillage during waiting temperature\nM400\nG92 E0\nG1 E-{retraction_amount * 2} F1800\nM400\nM106 P1 S178\nM400 S3\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nM400\nG1 Z{machine_height + 3.0} F3000\nM106 P1 S0\n\nM622.1 S0\n\nM621 S{extruder_nr}A\nG392 S0\n\nM1007 S1\n;===== A1mini extruder start {extruder_nr} finish =====\n" }, + "machine_extruder_end_code": { "default_value": ";===== A1mini extruder end {extruder_nr} begin =====\nG392 S0\nM1007 S0\nM204 S9000\n\nG1 Z{machine_height + 3.0} F1200\nG1 Y90 F9000\nG1 X180 F18000\n\nM400\nM106 P1 S0\nM106 P2 S0\n{if material_print_temperature > 142, extruder_nr}\nM104 S{material_print_temperature, extruder_nr}\n{endif}\n\n\nM620.11 S1 I{extruder_nr} E-18 F1200\nM400\n\nM620.1 E F{material_flush_purge_speed} T{material_print_temperature, extruder_nr}\nM620.10 A0 F{material_flush_purge_speed}\nM620.11 S1 I{extruder_nr} E18 F{material_flush_purge_speed}\n\nM628 S1\nG92 E0\nG1 E18 F{material_flush_purge_speed}\nM400\nM629 S1\n;===== A1mini extruder end {extruder_nr} finish =====\n" }, + "machine_extruder_start_code": { "default_value": ";===== A1mini extruder start {extruder_nr} begin =====\nM620.1 E F{material_flush_purge_speed} T{material_print_temperature, extruder_nr}\nM620.10 A1 F{material_flush_purge_speed} L{prime_tower_min_volume/(line_width*layer_height)} H{machine_nozzle_size} T{material_print_temperature, extruder_nr}\n\nM400\nG92 E0\nM628 S0\n\n; FLUSH_START\n; always use highest temperature to flush\nM400\nM1002 set_filament_type:UNKNOWN\nM109 S{material_print_temperature, extruder_nr}\nM106 P1 S60\nG1 E{material_flush_purge_length / 4.0} F{min(extruderValues('material_flush_purge_speed'))} ; do not need pulsatile flushing for start part\nG1 E{(material_flush_purge_length / 4.0) * 0.02} F50\nG1 E{(material_flush_purge_length / 4.0) * 0.23} F{min(extruderValues('material_flush_purge_speed'))}\nG1 E{(material_flush_purge_length / 4.0) * 0.02} F50\nG1 E{(material_flush_purge_length / 4.0) * 0.23} F{material_flush_purge_speed, extruder_nr}\nG1 E{(material_flush_purge_length / 4.0) * 0.02} F50\nG1 E{(material_flush_purge_length / 4.0) * 0.23} F{material_flush_purge_speed, extruder_nr}\nG1 E{(material_flush_purge_length / 4.0) * 0.02} F50\nG1 E{(material_flush_purge_length / 4.0) * 0.23} F{material_flush_purge_speed, extruder_nr}\n; FLUSH_END\nG1 E-{retraction_amount * 2} F1800\nG1 E{retraction_amount * 2} F300\nM400\nM1002 set_filament_type:{material_type, extruder_nr}\n\n; WIPE\nM400\nM106 P1 S178\nM400 S3\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nM400\nM106 P1 S0\n\nM106 P1 S60\n; FLUSH_START\nG1 E{(material_flush_purge_length / 4.0) * 0.18} F{material_flush_purge_speed, extruder_nr}\nG1 E{(material_flush_purge_length / 4.0) * 0.02} F50\nG1 E{(material_flush_purge_length / 4.0) * 0.18} F{material_flush_purge_speed, extruder_nr}\nG1 E{(material_flush_purge_length / 4.0) * 0.02} F50\nG1 E{(material_flush_purge_length / 4.0) * 0.18} F{material_flush_purge_speed, extruder_nr}\nG1 E{(material_flush_purge_length / 4.0) * 0.02} F50\nG1 E{(material_flush_purge_length / 4.0) * 0.18} F{material_flush_purge_speed, extruder_nr}\nG1 E{(material_flush_purge_length / 4.0) * 0.02} F50\nG1 E{(material_flush_purge_length / 4.0) * 0.18} F{material_flush_purge_speed, extruder_nr}\nG1 E{(material_flush_purge_length / 4.0) * 0.02} F50\n; FLUSH_END\nG1 E-{retraction_amount * 2} F1800\nG1 E{retraction_amount * 2} F300\n\n; WIPE\nM400\nM106 P1 S178\nM400 S3\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nM400\nM106 P1 S0\n\nM106 P1 S60\n; FLUSH_START\nG1 E{(material_flush_purge_length / 4.0) * 0.18} F{material_flush_purge_speed, extruder_nr}\nG1 E{(material_flush_purge_length / 4.0) * 0.02} F50\nG1 E{(material_flush_purge_length / 4.0) * 0.18} F{material_flush_purge_speed, extruder_nr}\nG1 E{(material_flush_purge_length / 4.0) * 0.02} F50\nG1 E{(material_flush_purge_length / 4.0) * 0.18} F{material_flush_purge_speed, extruder_nr}\nG1 E{(material_flush_purge_length / 4.0) * 0.02} F50\nG1 E{(material_flush_purge_length / 4.0) * 0.18} F{material_flush_purge_speed, extruder_nr}\nG1 E{(material_flush_purge_length / 4.0) * 0.02} F50\nG1 E{(material_flush_purge_length / 4.0) * 0.18} F{material_flush_purge_speed, extruder_nr}\nG1 E{(material_flush_purge_length / 4.0) * 0.02} F50\n; FLUSH_END\nG1 E-{retraction_amount * 2} F1800\nG1 E{retraction_amount * 2} F300\n\nM629\n\nM400\nM106 P1 S60\nG1 E5 F{material_flush_purge_speed, extruder_nr} ;Compensate for filament spillage during waiting temperature\nM400\nG92 E0\nG1 E-{retraction_amount * 2} F1800\nM400\nM106 P1 S178\nM400 S3\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nM400\nG1 Z{machine_height + 3.0} F3000\nM106 P1 S0\n\nM622.1 S0\n\nM621 S{extruder_nr}A\nG392 S0\n\nM1007 S1\n;===== A1mini extruder start {extruder_nr} finish =====\n" }, "material_diameter": { "default_value": 1.75 }, "switch_extruder_retraction_amount": { "default_value": 18 } }