Hi,
Firstly, thank you for releasing and maintaining ICESL.
I have had trouble with slicing and printing a 3d Benchy with the PrusaI3 printer profile. The top of the chimney is missing and there is a small section of the cabin wall with no outer perimeter plastic.
IceSL and SliceCrafter (Prusa I3 printer profile) were used as slicers (but only the IceSL 2.1.6 version was printed).
Attached file are a (poor) picture of the benchy and the gcode produced by Slicecrafter for the prusa i3 printer profile.
Here is an extract of the gcode with some comments to help me understand what is going on. G1 X73.000 Y73.900 Z11.000 F1200 E25.328 ; move and extrude G1 X72.915 Y73.870 Z11.000 F1200 E25.331 ; move and move the extruder position=25.331 G1 F4800 G1 X72.810 Y73.670 Z11.000 G1 F2400 E22.331 ; Move the extrude back 3mm = 25.331 - 22.331 G1 F4800 G1 X72.750 Y73.670 Z11.000 G92 E0 ; Zero the extruder position as part of the layer change ; </layer> G1 F4800 ; <layer> G1 Z11.200 ; Move up a layer G1 F4800 G1 X72.720 Y73.830 Z11.200 G1 F2400 E0.000 ; Prime but it doesn't move the extruder back the 3mm retracted on the previous layer. G1 F1200 G1 X72.770 Y73.840 Z11.200 F1200 E0.002 ; Move and extrude
My understanding is that effectively there was a retract but the prime does not move the filament back.
Looking through the gcode produced for E0.000 showed numerous instances of this happening. This was particularly prevalent through the chimney section.
I was able to address the benchy issue by changing the printer.lua code for retract and prime by adding a line extruder_e = e - len and extruder_e = e + len to the two functions.
function retract(extruder,e)
len = filament_priming_mm[extruder]
speed = priming_mm_per_sec * 60;
letter = 'E'
output('G1 F' .. speed .. ' ' .. letter .. f(e - len - extruder_e_restart))
extruder_e = e - len
return e - len
end
function prime(extruder,e)
len = filament_priming_mm[extruder]
speed = priming_mm_per_sec * 60;
letter = 'E'
output('G1 F' .. speed .. ' ' .. letter .. f(e + len - extruder_e_restart))
extruder_e = e + len
return e + len
end
Is this the appropriate fix? Should retract and prime be restricted to the same layer?