GCodeClean hits v1.0.1 🎉

Finally!!

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.

Housekeeping

  • 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.

New Features

  • 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 :beers:
  • 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

Suggestions

  • What have you got?

Pain Points

  • #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?
4 Likes

you talk about us buying you :beers: do you have a way fo us to do so? (patreon
account or other?

David Lang

1 Like

I have a ‘wise’ account, which already includes a USD account. That would work for :beers:

Wait, you evaluate the gcode and optimize the “travel”/cut code?!

I need to test this with my CamBam code because most times i have the impression that CamBam never met a traveling salesman :slight_smile: Optimized “routes” would be extremely important especially with the maslow.

But i am very impressed anyway!

2 Likes

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 :slight_smile:

I understand. Thx for answering.

It seems GcodeClean removes tool changes.

Using carbide create, it always generates a tool change in the beginning and after cleaning it is removed, also seems like other tool changes were removed. Used minimise soft and zClamp

Is it possible to leave this as an option?

1 Like

Interesting. There’s no code in there to specifically remove tool changes. Do you have some sample GCode you can share?

Sorry for the delayed response, life sometimes gets in the way.

It looks like the T command remains but the program stops were removed.
Cappy Vee.nc (252.0 KB)
Cappy Vee-gcc.nc (288.5 KB)

You’re correct, I can see that the M0 “temporary stop” - i.e. ‘pause’ has been removed. Thanks for those files - I’ll investigate

And found the problem with this line:
M0 ;T10
While using a semi-colon to start a comment is common, it is actually illegal according to the official NIST spec. (All comments are supposed to be in parentheses). So the above line should have read:
M0 (T10)
But like I said, semi-colons for comments is very common. I did support it for whole line comments, but not end of line comments, which I’ve changed.

Thanks to @TimS I found another sneaky bug hidden away. And while I was testing that out another one was revealed. I really should add some more tests…

Plus I did some refactoring (first bit of housekeeping, not in the list above).

And the result is:
v1.0.1

2 Likes