Drop cutter might work!

Here's the first indication that my drop cutter algorithms(vertex, facet, edge) might work! I'm dropping down a toroidal cutter C(0.5, 0.125) towards a model consisting of a half-sphere sitting on a plane. The CL points are in magenta with cyan lines between them. 382 triangles in total. The code has no optimizations, so at each x,y position we check against all triangles.

Here's another one with about 1800 triangles, and with the points more densely sampled in the Y-direction. (click for slightly higher resolution version)

These still pictures are not nearly as convincing as a moving animation - so I will have to do that next with a more complex model. Stay tuned...


  1. Hi Jeff,

    My plan now is to move to a language that is faster than matlab to execute and have the drawing done in OpenGL. When that is done I hope to explore how all kinds of toolpaths could be calculated.

    Do you have an idea how drop-cutter could be used for waterline toolpaths? If I am dropping down the cutter along the z-axis like it is done now then it becomes a search for the correct z-value, which might not be so easy...

    Perhaps it is better to have an algorithm called 'Push-Cutter' that starts with the cutter at the correct z-level and then pushes it towards the model in the xy-plane. That is easy to do form one direction, but how do you ensure the path follows the contour of the part ? (I think there was something about this on the freesteel blog...)

    I have been thinking about the push-cutter idea for 2D offset generation and I think it might work for that, but it's not clear to me how it should be implemented in 3D for a triangulated model.

    If you have a reference for waterline paths and triangulated models I would be interested!


    PS. I will update my blog if/when the C#/OpenGL think starts working. It might turn into an open-source project where everyone can contribute.

  2. Have you tried to use the "drop cuter" to calculate the waterline(const-Z) toolpath?

  3. Hi Anders,

    Nice blog and try to the CAM.

    I have no exact idea about the "push-aside cutter" waterline, though I think we could follow the original slices to push cutter, the formula should eb different with that of "drop cutter". I used to ask Julian about this, his answer was vague.

    You may look at VCG/MeshLab project to see if you can use for your calculation and toolpath display. VCG has many function to speed up the triangle meshes calculation, which is useful
    for drop/push cutter calculation, also import STL file.

    C#/OpenGL? Do you mean you want to use
    They also import STL file.

    2D Offset? The idea is not difficult, but a stable one is not easy, it is better not to write from scratch, it will take many many months..

    I do not have references for waterline paths, I guess there is no real working one publised there, maybe we should ask Julian to write more about the push-cutter.


  4. Administrator

    July 18, 2007 at 22:56

    I don't think slicing the STL model with just one z-plane is going to give you water-line finish paths.
    For roughing this might work. You then treat each z-level as a 2D pocketing problem.
    But for finishing the 3D cutter needs to be pushed into contact with the model and the contact point with the model might be anywhere on the cutter (only for flat-endmills would it always be at the z-level)

    Thanks for the link. There are a lot of projects out there. I think my code needs to be open-source so that others can start helping when a crude 0.1 version is released. With these frameworks it becomes a balance between reading their documentation (of varying extent and quality) to 'get' how the framework functions - or the alternative: write your own from scratch.

    Now I have been drawing with raw opengl using the Tao-bindings for C#. Import of ASCII STL files is simple and seems to work already.

    2D offsets: the only impressive stuff I have seen on the web is at http://buildingblock.com but that is also commercial software. I wonder if CGAL can do 2D offsets of arc and line segments?
    This will be a long project anyway so if there are no 2D arc and line segment offset codes that are open-source out there then something like that just needs to be written.


  5. Yes, only slcing STL model will not generate CL, still need to "push cutter" along the the sliced contours.

    The CGAL has the offset functions, even handle pockts with islands, but I think they do not offset the arc, instead approximate arc with polylines, and convert back to Arc after offset, like Martin did for his Voroinoi 2D offset.


    I do not know if CGAL has dotNET wrapper or not.

    Keep on good work, and look forward to seeing the V0.1.

  6. Administrator

    July 24, 2007 at 03:52

    The C# framework mentioned above seems to have moved to:

    I just tried the demo and it looks very nice. Too bad it's commercial code. I wonder if those guys could be persuaded into providing a free version for open-source projects.

    There is a lot of 'under-the-hood' stuff that needs to be in place before anyone can effectively work on the 'business-logic' of CAD/CAM. Coding all the infrastructure by myself is not a viable option. So I think any open-source effort needs to adopt one of the available frameworks.

    So far only Open Cascade and VTK/Kitware seem to be open-minded enough to provide their framework free to open-source developers...

  7. Yes, it is definitely not easy work, that is why CAD/CAM software are sold at serveral thousands $ per seat.

    Another good open-source framework is


    It is written in C++/Qt.

  8. Hi Guys,
    I am the main developer of the CAM functionality inside FreeCAD and I have been following your discussions now for quite a long time.
    I can only offer you to go also for FreeCAD as I already implemented the basic toolpath generation strategies like helix for arbitrary shapes, z-level finishing for 5-axis machining or 3-axis (just a matter of changing a few lines of code).
    So let me know if I can help you out on something.
    Take care,

Comments are closed.

© 2019 anderswallin.net

Theme by Anders NorénUp ↑