awabom / 3dprint

17 stars 3 forks source link

Move M600 after deretraction #4

Closed espr14 closed 11 months ago

espr14 commented 12 months ago

If M600 is moved after retraction but before deretraction then it extrudes filament on the spot. This moves M600 after deretraction (if exists).

awabom commented 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?

espr14 commented 11 months ago

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
awabom commented 11 months ago

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?

espr14 commented 11 months ago

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.

awabom commented 11 months ago

Well, I think your placement of the deretraction right before M600 makes things worse, so I'm going to reject this pull request, sorry.