GRBL new post processor with drill cycles G81..G83

Hi all,

Yesterday, I published the Grbl post processor with G81..G83 drill cycles translations on my Github account here : grbl_G81_post
This more efficient updated version (full rewrite) is ready for Python 3 (work in Python 2.7 and Python 3), and it is able to handle the speed units convertion beetwen FreeCAD (mm/s) and Grbl gCode standard (mm/mn).

On this Github, you can also found my Grbl fork: grbl-Mega-5X
This is a Grbl-Mega enhancement wich add the ability to :

  • handle 3 to 6 axis,
  • chose the name of each axis from X, Y, Z, A, B or C,
  • clone one axis name movement to 2 or more motors drivers (by chosing the same name for more than one axis),

Finally, you will also find on my Github account, the cn5X++ control panel, a new 5/6 axis Grbl control panel whose purpose is to implement all the grbl-Mega-5X capabilities…

cn5X ++ is still in active development, but it is starting to be used to drive a CNC mahine.

I hope this will interest the community, and this lay a first stone of 5 axis CNC milling with FreeCAD…

Regards, @++;
Gauthier.

Thanks for making this work available. 5 axis is part of my aims so this will probably be useful.

I’ve only glanced through the code, not actually tried running it but this looks good. I would suggest preparing a pull request so we can test it formally and discuss merge.

Nice work!

Pull request here : https://github.com/FreeCAD/FreeCAD/pull/1837

@++;
Gauthier.

Did this every get merged? I don’t find this in my 0.19 src.

Is the file attached to post #1 here, the current version to use?

thx. ( great work BTW )

I have grbl_G81 here.

OS: macOS 10.13
Word size of OS: 64-bit
Word size of FreeCAD: 64-bit
Version: 0.19.16822 (Git)
Build type: Release
Branch: master
Hash: 243aebf2dfbfe192b5bbd067020a5318a0fa8d0d
Python version: 3.7.3
Qt version: 5.6.2
Coin version: 4.0.0a
OCC version: 7.3.0
Locale: English/UnitedStates (en_US)

Thanks, it was a misunderstanding on my part. I thought this was intended to replace the old “grbl” which does not produce code suitable for GRBL. I did not realise that it had been installed in parallel as a separate post processor. Sorry for the noise.

Hi @freman,

Latest version of grbl_G81_post (some small bugs corrected and inches conversion option added) is not already merged because I think it need some more test.
See : https://forum.freecadweb.org/viewtopic.php?f=15&t=35208

you can find it alone on my github here : https://github.com/fra589/grbl_G81_post

Thanks to test and report :slight_smile:
@++;
Gauthier.

thanks, I’ve dropped that into place, I’ll let you know if see anything wrong.

What is the rationale for maintaining both a grbl and a grbl_g81 post processor?

Can your work be merged into the main grbl post to avoid confusion?

To control the output for different machines/FW versions. At least until there’s an option in the path operations to control the post output as either G-Code or machine cycle.

I don’t understand. The regular grbl post produces canned cycles but AFAIK no grbl firmware can use them. So everybody should be using this variant.
What functionality differs between the two that is valid?

Also, I don’t use grbl but I would be very confused that the post called grbl_g81.py is the one that specifically does NOT produce G81. :smiley:

I would also suggest that it’s overkill and confusing to have two arguments. --translate_drill and --no-translate_drill. It’s more intuitive to have a single argument that does something and the absence of the argument does the other/default condition.

So if this can be merged with the regular grbl post, the default condition should be to translate the canned cycles and a flag --use-canned-cycles would suppress this and produce the regular G81/G83 moves.

Just me two cents.

Hi all,

I agree with you Sliptonic, especially since the option to use drill cycles conversion or not (–translate_drill (by default) / --no-translate_drill) already exists… And without argument, drill cycles are translated. Then, the --translate_drill can be ignored… I can remove it if you want :slight_smile:
In fact, I proposed the new name grbl_G81 on my first push to not impose my solution whereas a post processor for Grbl already existed.
So I’m going to push the merge of latest version of grbl_G81 with the name of the main post processor grbl_post.py quickly.

@++;
Gauthier.

It can be argued that it is a bit redundant but this is typical of the way ./configure and make work on Linux/Unix.

It allows one to specify explicitly what you want rather than having to check on what the default state is to imply it.

also many compiler switches work like that : -fomit-frame-pointer -fnoomit-frame-pointer

The merge obviously makes sense. Nice initiative.

We could put to the vote the choice to keep the two options or to delete the default one…

I prefer the one post, I just hadn’t read through it to see the option available. I would agree this is the better method.

since the other args do not have negated forms, it is probably clearer to be consistent.

Hi all,

PR made this morning (https://github.com/FreeCAD/FreeCAD/pull/2255) to replace the old grbl_post.py by the new grbl_G81 one.

For the moment, I have kept the arguments as they are. The other arguments from the old grbl_post also have their positive and negative form whatever the default option.

@++;
Gauthier.

Can I use this on windows 10 and if so how do I install it and run it.
Thanks