Closed espr14 closed 11 months ago
Can you show an example section of g-code for why this is needed? The point is to move M600 before the start of the next print move - i.e. the 'deretraction'? Or does PrusaSlicer sometimes deretract - then travel - then start printing?
This is after the modified script. The original would place M600
before deretraction which would extrude a lot of material and make a blob around the starting position.
G1 E-2.24 F2700
;WIPE_START
G1 F4799952
G1 X80.513 Y100.209 E-.00055
;WIPE_END
G1 E-.95945 F2700
G1 Z5.2 F5999940
;AFTER_LAYER_CHANGE
;5.2
;COLOR_CHANGE,T0,#62B02A
; printing object Merged id:0 copy 0
G1 E-3.2 F2700
G1 Z5.4 F5999940
G1 X84.169 Y97.551
G1 X84.187 Y97.527
G1 Z5.2
G1 E3.2 F1500
M600
M204 P800
;TYPE:Perimeter
;WIDTH:0.449999
G1 F2400
G1 X83.877 Y97.289 E.01323
Ah... But why would you do a de-retraction if you're going to change the filament anyway?
G1 E3.2 F1500 - This is now done at the next print starting position. The filament could possibly leak out. M600 - the filament is pulled out again.
I needed some nozzle priming after changing filament, so I kept the 'deretract after M600' command. I even added the 'extra priming after filament change' command line argument, since I still got some underextrusion after filament swap on my Ender 3 V2.
A workaround for printers that need less than the normal de-retraction could be to do a slight retraction after M600 (just before the original deretraction). This can be done by using the extra command line argument:
"...FixM600.py" "G1 E-3.2 F2400"
... in your case that would result in no de-retraction after M600.
Thoughts?
This is just a simple fix of the hotfix. The printer should take care of (de)retractions so it should not be a part of the G code. Also slicer should plan a travel directly from the M600 point.
Well, I think your placement of the deretraction right before M600 makes things worse, so I'm going to reject this pull request, sorry.
If M600 is moved after retraction but before deretraction then it extrudes filament on the spot. This moves M600 after deretraction (if exists).