OpenCAMLib (GPL C++ CAM library with python bindings)
after some experimenting in matlab, and some more experimenting in C# with the monocam project, I finally re-wrote the CAM-ideas/algorithms in C++ starting at the beginning of this year. The project is called OpenCAMLib ("ocl") and is a C++ library with python bindings. It uses the GPL license. It uses the Boost libraries for among other things, python wrapping, as well as OpenMP for multi-threading. http://code.google.com/p/opencamlib/
The first CAM-algorithm is called "drop-cutter" or z-projection machining. Given a cutter and an (x,y) position, it drops down the cutter into contact with an STL model. Example:
There is no limitation to zigzag or coordinate-parallel paths, the 2D arrangement of (x,y) points on which drop-cutter operates is completely arbitrary. With some work it could be possible to develop a constant-scallop algorithm using this basic operation.
The second CAM-algorithm can be called "push-cutter", Waterline or z-slice, or maybe XY-projection machining. Given a cutter and a z-height it pushes the cutter into contact with the model along the X/Y coordinates and finds a loop around/inside the model. Example:
In addition to producing waterline finish-paths this algorithm can obviously be used for defining 2D pockets to be machined during a z-terrace roughing operation.
The same idea can be used for 2D offsetting. Example:
The supported cutter-types are cylindrical, spherical, toroidal, conical, and combinations of these (APT-type + many more). There is not complete support for all of these yet, but I am working on it.
OCL also has an experimental cutting simulation. It is based on storing a signed distance field in an adaptive octree, and using the marching-cubes algorithm for producing an isosurface from the distance field. Two examples:
[nomedia="http://www.youtube.com/watch?v=17mpgQ4KVLg"]YouTube- Octree-based milling machine cutting simulation[/nomedia]
[nomedia="http://www.youtube.com/watch?v=1DAvgLCj_RQ"]YouTube- OpenCAMLib machining simulation[/nomedia]
OCL in itself does not contain any GUI or graphics rendering. I have been using VTK during development for visualization.
Dan Heeks has begun to integrate some OCL algorithms into HeeksCNC, but OCL does not depend or require HeeksCNC and could be used from any GUI.
When there is better support for all the cutter types my plan is to make a 0.1 release.