This is about my third rewrite of this fairly simple cam-algorithm where the cutter is dropped from above until it touches a triangle. It's now in C++ with Boost-python bindings and with visualization using vtk.
The cutter-location points are calculated by bringing the cutter into contact with the vertices of the triangle (green cl-points), the edges (red cl-points), and the facet (blue cl-points). Then the cl-point with the highest Z-value is selected as the final cutter location. At the white points we did not make contact with the triangle at all.
If you look closely enough, all surfaces in the world are made of triangles, even Tux:
Due to compression, the video might not show enough detail, so here's a screenshot:
I wonder if anyone is still interested in this stuff? Given enough time I would like to develop waterline-paths and an octree-based cutting simulator also. It would help if these algorithms were incorporated in a CAD-program, or someone would develop a GUI.
3 thoughts on “Drop-cutter again”
I´m following your efforts for a while. What I do not understand, why are you testing against edges and vertices? The triangle defined by these vertices and edges should be enough? Maybe a stupid question, but I do not get it.
I would love to integrate this into HeeksCNC.
It has a python interface, so it is perfect.
Is it available to download?
HeeksCNC currently uses
"kurve" 2D profile offsetting, from Geoff, who was my boss at Camtek UK.
"libarea" for pocketing, based on some GPL polygon boolean code
"libactp" for adaptive roughing.
"pycam" for 3D machining.
We would love something to try to replace pycam, it is very slow.
Michael: if there was a way to test the cutter against only the facet of the triangle then that would indeed be enough. However the way it is done right now the cutter is tested against the whole infinite plane containing the facet. This way the edge and vertex tests are needed.
Dan: I will make some obvious improvements and iron out a few bugs, after that it would be nice to try to integrate with HeeksCNC