Thanks for looking into it Daid
I do not know if G92 works. I'll make some tests with some manual edited gcode and return with an answer.
Thanks for looking into it Daid
I do not know if G92 works. I'll make some tests with some manual edited gcode and return with an answer.
Does not work:
G92 does not work with sailfish 7.5 as a extruder reset at layer change. Actually it has the strange impact that the extruder does not change even though an extruder change command it right at the line before. Posts elsewhere on the web suggest the G92 was broken in Sailfish 6.xx and haven't worked properly since.
Works:
Adding up E per extruder instead of a combined total
If anybody is interested I have made a converter to fix this issue until it is fixed in Cura.
Converter can be found here:
http://www.thingiverse.com/thing:766132
Perhaps I'll make it into a Cura-plugin if I find some time to learn a little bit Python.
Something I noticed in my gcode is that my sailfish 7.7 duplicator uses
G54
M108 T0
M18 A B
And
G55
M108 T1
M18 A B
To switch extruders and use the firmware toolhead offset instead of
M135 T(n)
Even though I've picked the right flavor.
Any chance your converter fixes that too, or can you make it fix that? I'm not using GPX for the files, I'm using ReplicatorG
The plugin code below hasn't been tested extensively, but works for me.
#Name: Fix E value for Sailfish Firmware#Info: Compute E value per extruder.#Help: TBD#Depend: GCode#Type: postprocessE = [0.0, 0.0]lastE = 0.0tool = 0with open(filename, "r") as f: lines = f.readlines()with open(filename, "w") as f: for line in lines: code = list(line.split(";"))[0] if code.startswith("T0") or code.startswith("M135 T0"): E[0] = lastE - E[tool] tool = 0 f.write(line) elif code.startswith("T1") or code.startswith("M135 T1"): E[1] = lastE - E[tool] tool = 1 f.write(line) elif code.startswith("G0") or code.startswith("G1"): for part in code.split(" "): if part.endswith("\n"): part = part[:-1] if part.startswith("E"): lastE = float(part[1:]) f.write('E{0} '.format(lastE - E[tool])) else: f.write('{0} '.format(part)) f.write('; {1} {2} {3} {4}\n'.format(part[:-1], tool, lastE, E[0], E[1])) elif code.startswith("G92"): for part in code.split(" "): if part.startswith("E"): lastE = float(part[1:]) E[tool] = lastE f.write(line) else: f.write(line)
Recommended Posts
Daid 306
I'll see what I can do. But it's not a high priority for me.
Do you know if the G92 works? Because if that works I could just reset the extrusion on every extruder change and I will not have an issue.
Link to post
Share on other sites