ioBroker.bambulab
ioBroker.bambulab copied to clipboard
Feature Request Load unload Filament and status
Hello, would be cool if we can have an action to load and unload filament not only ams also the extra filament which is connected for example with splitter.
My idea is to have a "mico" ams for tpu with the splitter:
This sould be filament pullback
this is the gcode, i extract from one of my prints:
`
;change_filament_gcode = M620 S[next_extruder]A M204 S9000 {if toolchange_count > 1 && (z_hop_types[current_extruder] == 0 || z_hop_types[current_extruder] == 3)} G17 G2 Z{z_after_toolchange + 0.4} I0.86 J0.86 P1 F10000
;spiral lift a little from second lift {endif} G1 Z{max_layer_z + 3.0} F1200 G1 X70 F21000 G1 Y245 G1 Y265 F3000 M400 M106 P1 S0 M106 P2 S0 {if old_filament_temp > 142 && next_extruder < 255} M104 S[old_filament_temp] {endif} G1 X90 F3000 G1 Y255 F4000 G1 X100 F5000 G1 X120 F15000 G1 X20 Y50 F21000 G1 Y-3 {if toolchange_count == 2}
;get travel path for change filament M620.1 X[travel_point_1_x] Y[travel_point_1_y] F21000 P0 M620.1 X[travel_point_2_x] Y[travel_point_2_y] F21000 P1 M620.1 X[travel_point_3_x] Y[travel_point_3_y] F21000 P2 {endif} M620.1 E F[old_filament_e_feedrate] T{nozzle_temperature_range_high[previous_extruder]} T[next_extruder] M620.1 E F[new_filament_e_feedrate] T{nozzle_temperature_range_high[next_extruder]} {if next_extruder < 255} M400 G92 E0 {if flush_length_1 > 1}
;FLUSH_START
;always use highest temperature to flush M400 M109 S[nozzle_temperature_range_high] {if flush_length_1 > 23.7} G1 E23.7 F{old_filament_e_feedrate}
;do not need pulsatile flushing for start part G1 E{(flush_length_1 - 23.7) * 0.02} F50 G1 E{(flush_length_1 - 23.7) * 0.23} F{old_filament_e_feedrate} G1 E{(flush_length_1 - 23.7) * 0.02} F50 G1 E{(flush_length_1 - 23.7) * 0.23} F{new_filament_e_feedrate} G1 E{(flush_length_1 - 23.7) * 0.02} F50 G1 E{(flush_length_1 - 23.7) * 0.23} F{new_filament_e_feedrate} G1 E{(flush_length_1 - 23.7) * 0.02} F50 G1 E{(flush_length_1 - 23.7) * 0.23} F{new_filament_e_feedrate} {else} G1 E{flush_length_1} F{old_filament_e_feedrate} {endif}
;FLUSH_END G1 E-[old_retract_length_toolchange] F1800 G1 E[old_retract_length_toolchange] F300 {endif} {if flush_length_2 > 1}
;FLUSH_START G1 E{flush_length_2 * 0.18} F{new_filament_e_feedrate} G1 E{flush_length_2 * 0.02} F50 G1 E{flush_length_2 * 0.18} F{new_filament_e_feedrate} G1 E{flush_length_2 * 0.02} F50 G1 E{flush_length_2 * 0.18} F{new_filament_e_feedrate} G1 E{flush_length_2 * 0.02} F50 G1 E{flush_length_2 * 0.18} F{new_filament_e_feedrate} G1 E{flush_length_2 * 0.02} F50 G1 E{flush_length_2 * 0.18} F{new_filament_e_feedrate} G1 E{flush_length_2 * 0.02} F50
;FLUSH_END G1 E-[new_retract_length_toolchange] F1800 G1 E[new_retract_length_toolchange] F300 {endif} {if flush_length_3 > 1}
;FLUSH_START G1 E{flush_length_3 * 0.18} F{new_filament_e_feedrate} G1 E{flush_length_3 * 0.02} F50 G1 E{flush_length_3 * 0.18} F{new_filament_e_feedrate} G1 E{flush_length_3 * 0.02} F50 G1 E{flush_length_3 * 0.18} F{new_filament_e_feedrate} G1 E{flush_length_3 * 0.02} F50 G1 E{flush_length_3 * 0.18} F{new_filament_e_feedrate} G1 E{flush_length_3 * 0.02} F50 G1 E{flush_length_3 * 0.18} F{new_filament_e_feedrate} G1 E{flush_length_3 * 0.02} F50
;FLUSH_END G1 E-[new_retract_length_toolchange] F1800 G1 E[new_retract_length_toolchange] F300 {endif} {if flush_length_4 > 1}
;FLUSH_START G1 E{flush_length_4 * 0.18} F{new_filament_e_feedrate} G1 E{flush_length_4 * 0.02} F50 G1 E{flush_length_4 * 0.18} F{new_filament_e_feedrate} G1 E{flush_length_4 * 0.02} F50 G1 E{flush_length_4 * 0.18} F{new_filament_e_feedrate} G1 E{flush_length_4 * 0.02} F50 G1 E{flush_length_4 * 0.18} F{new_filament_e_feedrate} G1 E{flush_length_4 * 0.02} F50 G1 E{flush_length_4 * 0.18} F{new_filament_e_feedrate} G1 E{flush_length_4 * 0.02} F50
;FLUSH_END {endif} ;FLUSH_START M400 M109 S[new_filament_temp] G1 E2 F{new_filament_e_feedrate}
;Compensate for filament spillage during waiting temperature
;FLUSH_END M400 G92 E0 G1 E-[new_retract_length_toolchange] F1800 M106 P1 S255 M400 S3 G1 X80 F15000 G1 X60 F15000 G1 X80 F15000 G1 X60 F15000
;shake to put down garbage G1 X70 F5000 G1 X90 F3000 G1 Y255 F4000 G1 X100 F5000 G1 Y265 F5000 G1 X70 F10000 G1 X100 F5000 G1 X70 F10000 G1 X100 F5000 G1 X165 F15000
;wipe and shake G1 Y256
;move Y to aside, prevent collision M400 G1 Z{max_layer_z + 3.0} F3000 {if layer_z <= (initial_layer_print_height + 0.001)} M204 S[initial_layer_acceleration] {else} M204 S[default_acceleration] {endif} {else} G1 X[x_after_toolchange] Y[y_after_toolchange] Z[z_after_toolchange] F12000 {endif} M621 S[next_extruder]A`