Is there any free software CAM tool path generator,

Is there any free software CAM tool path generator, that I could add my 4 axis code to?
Obviously the source must be open and I must be allowed to modify it.
Also the data model must allow collision detection from any angle. Not be limited to the cutter always moving along the negative Z axis.

I’m interested, if it would interface with our Path workbench in FreeCAD here:
https://github.com/danielfalck/FreeCAD/tree/path-module
We have some documentation here:

Our project is a workbench for FreeCAD, with FreeCAD’s LPGLv2 license. We are using mostly python and some C++.

@Dan_Falck it doesn’t state what this workbench DOES. If it actually is a tool path generator for freeCAD…why develop it in parallel to the CAM2 module?

Yes, sorry, we have been very low key about things. It is a tool path CAM workbench. I am starting to use it in my own shop for parts on my CNC mill.
On the CAM2 workbench, it has been a while, but I ran into problems compiling and me not being a C++ programmer, I couldn’t fix them myself. So I ran into a wall.
The current direction that we are going has more python programming that is approachable for several of us.

Where should I start reading?
`https://github.com/danielfalck/FreeCAD/tree/path-module/src/Mod

You seem to have checked in a complete FreeCAD distribution instead of just your workbench.

This in our workbench here:
https://github.com/danielfalck/FreeCAD/tree/path-module/src/Mod/Path

https://github.com/yorikvanhavre/FreeCAD/wiki/Path-module doesn’t say a word about how the strategies to generate tool pathes work.
What methods can I use for collision tests of tool and collet with object geometry? Where is the geometry of the machine defined (e. G. The location of rotational axis in space and the minimum and maximum dimensions of the table.

https://github.com/danielfalck/FreeCAD/blob/path-module/src/Mod/Path/PathScripts/PathPocket.py
I’m not much of a python developer but this looks way too simple for a pocket strategy and have way too few comments.
Even if I assume you only have one strategy in there, it should at least state if that strategy is meander, water line, circular, parallel,… To understand what it’s doing.
Where are your collision tests with different parts of the object geometry?

Yes, we are in the early stages of this workbench. That pocket operation is probably too simple to use. Our documentation needs to be updated.
So far, we have been working on infrastructure, such as a post processor system, which is very important and seems to get overlooked by many other projects.
By the way, what have you been working on, CAM code wise? I seem to recall that you had a CAM project that was written in Java. How is that going?

SimpleMultiAxisCAM. It’s a proof of concept and I was planning on integrating it into the FreeCAD CAM2 module when that one has reached a suffiicient level.

That’s why I was investigating your code. If it was possible and reasonable to do that. It obviously isn’t since all the infrastructure I need is not there yet. It simply can’t be done without collision tests.

Could you write the collision testing code? If not, you might want to look at BRLCad for that.

No, the data model is too complex and I don’t know how to make it efficiently.
What I need is:
given a vector
get the hit-point of the tool-tip and the surface normal in that point or the hit-point of the tool-shaft/tool-holder/spindle.

Ah, ok. I thought you were writing a CAM algorithm for this sort of thing. If you haven’t already run across this, check out awallin’s work here:

https://code.google.com/p/opencamlib/wiki/DropCutter

Check out Julian Todd’s blog. If you ask him nicely he might help you with some code. He’s written the algorithms used for HSM Express, among others. He used to work for Autodesk but is a free agent now:

http://www.freesteel.co.uk/wpblog/2006/06/24/the-structure-of-a-cam-system/
http://www.freesteel.co.uk/wpblog/2007/02/
http://www.freesteel.co.uk/wpblog/2007/02/13/drop-cutters-tuesday/
http://www.freesteel.co.uk/wpblog/2015/01/05/we-have-some-slicing/

His blog is a wealth of CAM algorithm knowledge.
Have fun reading.

What we are doing with Path is related to ‘Define the machine, create the fixture offset, change a tool, add a comment- show the toolpath from some algorithm that someone has written…’ I have adapted Dan Heeks’ libarea for profile machining (which works for me because I mill pieces of metal on a Bridgeport CNC mill and don’t do surfacing). We aren’t very far along. Good luck.