The last two things holding me back from declaring GCodeClean has reached v1 I’ve tackled and resolved:
Line to arc deduplication works for more then just two line segments - This has actually been working since 0.9.6 but I didn’t have a decent test for it - now I do.
‘Postamble’ - ensuring that a GCode file finishes nicely with an M2, M30 or % as required. Plus injecting a G0 Zx (where x is the zClamp value) if one is needed before the M2 or M30
The pre-built binaries for Windows, Linux and Linux-ARM (Raspberry Pi) are now available.
So now what?
Getting this far has got me thinking about what to tackle next, perhaps coming up with a road map of housekeeping needs, possible new features, as well as asking for suggestions, and tackling some of the pain points.
File pre-scan - There’s some key info in the file, such as what measurement units are in use, that are needed everywhere by GCodeClean, so doing a first pass through the file for all of these values would be very useful and help me simplify some of the code.
Inject blank lines before significant actions - Such as tool changes, tool raises, the ‘temporary’ tool stop commands M0, M1 and M60, and maybe some other stuff.
File splitting - Split a file into discrete and complete GCode files for every ‘significant action’.
More support for other GCode syntaxes - GCodeClean simply ignores things it doesn’t understand just letting them go right through, but that does mean that they don’t get any attention to make sure they’re at their best. There’s lots of other flavours of GCode that could benefit from a little more love.
Unit conversion - Change from inches to millimeters. And maybe the other way if you buy me
Path optimisation - Yeah this one is a real biggy, and for practical purposes I’d want the ‘File Splitting’ done as a precursor for this work. In effect this is solving the Travelling Salesman problem which is one of the hardest problems in computer science, but there are ways to do a ‘not so bad’ solution to this problem.
Path inversion - swap the start and end of a cut
What have you got?
#1 is definitely the issue that lots of Windows (or Mac) based users have never used command line / terminal based software before. @Orob has conveniently bypassed this for me by adding a call to GCodeClean via WebControl. But maybe I should add my own UI?
GCodeClean works as a line-by-line optimiser, technically it is a streaming processor. I did it that way so that it would keep its memory consumption to a minimum. So that means that I’ve been able to do optimisation of the cutting paths (to a tolerance), but optimising the travel isn’t possible that way, because obviously you’re shuffling entire sections of the GCode around.
So that’s where my thoughts of having functionality to split the GCode into multiple discrete files, would then facilitate being able to recombine them in a different order.
[quote=“md8n, post:5, topic:17995, full:true”]
GCodeClean works as a line-by-line optimiser, technically it is a streaming processor. I did it that way so that it would keep its memory consumption to a minimum. So that means that I’ve been able to do optimisation of the cutting paths (to a tolerance), but optimising the travel isn’t possible that way, because obviously you’re shuffling entire sections of the GCode around.[/quote]
Yes, thats why had been asking. Doing a full “post traveling salesman” on gcode should be worth a masters degree