kliment / Printrun

Pronterface, Pronsole, and Printcore - Pure Python 3d printing host software
GNU General Public License v3.0
2.38k stars 996 forks source link

Pronterface fails to load certain files #442

Closed microGen closed 11 years ago

microGen commented 11 years ago

When loading certain gcode files, Pronterface returns this error:

Traceback (most recent call last): File "/opt/Printrun/printrun/pronterface.py", line 1701, in loadfile self.fgcode = gcoder.GCode(open(self.filename, "rU")) File "/opt/Printrun/printrun/gcoder.py", line 182, in init self._preprocess_lines() File "/opt/Printrun/printrun/gcoder.py", line 215, in _preprocess_lines split_raw = split(line) File "/opt/Printrun/printrun/gcoder.py", line 66, in split command = split_raw[0] if split_raw[0][0] != "n" else split_raw[1] IndexError: list index out of range

I haven't been able to figure out which files exactly cause this behavior, but judging from general properties of the file, smaller prints seem to be more problematic. To further pinpoint the issue, I have tried converting the same stl file to two gcode files with skeinforge. The only difference between the gcode versions is that the first version was set to my standard settings (that worked every time before) while the second conversion had "multiply" set to two rows, resulting in the model being printed two times instead of one. The simple file with my standard settings didn't work while the multiplied one did. I have checked the gcode files, both look fine and skeinforge itself didn't throw an error when exporting the file with my standard settings.

If needed, I can provide the gcode files.

iXce commented 11 years ago

Can you send me a sample gcode file ? guillaume AT segu DOT in

2013/10/29 µGen notifications@github.com

When loading certain gcode files, Pronterface returns this error:

Traceback (most recent call last): File "/opt/Printrun/printrun/pronterface.py", line 1701, in loadfile self.fgcode = gcoder.GCode(open(self.filename, "rU")) File "/opt/Printrun/printrun/gcoder.py", line 182, in init self._preprocess_lines() File "/opt/Printrun/printrun/gcoder.py", line 215, in _preprocess_lines split_raw = split(line) File "/opt/Printrun/printrun/gcoder.py", line 66, in split command = split_raw[0] if split_raw[0][0] != "n" else split_raw[1] IndexError: list index out of range

I haven't been able to figure out which files exactly cause this behavior, but judging from general properties of the file, smaller prints seem to be more problematic. To further pinpoint the issue, I have tried converting the same stl file to two gcode files with skeinforge. The only difference between the gcode versions is that the first version was set to my standard settings (that worked every time before) while the second conversion had "multiply" set to two rows, resulting in the model being printed two times instead of one. The simple file with my standard settings didn't work while the multiplied one did. I have checked the gcode files, both look fine and skeinforge itself didn't throw an error when exporting the file with my standard settings.

If needed, I can provide the gcode files.

— Reply to this email directly or view it on GitHubhttps://github.com/kliment/Printrun/issues/442 .

microGen commented 11 years ago

Sure, I'll just post them here: this one works: http://42loop.de:8888/garage/uploads/284/nozzles_double_export.gcode and this one doesn't: http://42loop.de:8888/garage/uploads/284/nozzles_single_export.gcode

I also tried loading the non-working file into an old version of Pronterface. Seems to work normally in that version...

iXce commented 11 years ago

Okai, so look at the line 95842 of your nozzles_single_export.gcode file: there's a raw "66" here which means nothing in the gcode spec. The old parser was more resilient to such issues, though, and I'm going to try to make the new one as resilient.

iXce commented 11 years ago

Should be fixed as of 79d59e800 ! Please reopen if it's not fixed :) However the root issue is still in the invalid gcodes in your files :)