algorithmic modeling for Rhino

An idea to generate milling path / looking for a smarter point sequence

I am trying to generate a milling trajectory based on meshes produced by MeshMachine from Kangaroo.

The idea is to generate a set of points (the mesh's vertices) which can then be re-ordered to generate a trajectory.

For now, I use the "sequential closest points" component, but ...

In many instances, the sequencing creates "clusters" where indeed the distance between points is close to the mean length of the mesh edges, and when it moves to the next closest point, it crosses through the mesh, which is of course not suitable for a milling strategy.

I'm just throwing that out there to see if someone comes up faster than me with a smarter way of sequencing points ; one in which the line between two successive points never crosses the mesh surface.



Views: 4152


Replies to This Discussion

What type of tool path are you trying to generate? Many ways to skin a cnc cut.

My tool will always stay normal to the surface ; my CNC is a KUKA robot.

I will use a ball end mill.

I use an offset of the initial mesh to define the mormal direction at each vertice.

For the sake of getting tomorow's milling done, I'm doing the path by hand :(

Here's what it looks like right now...


hmm. could be interesting. Something to keep in mind, the actual surface speed, or cutting action, at the center of a ball end mill is almost zero, so while cutter compensation is simpler, you may find that it simply does not cut as as well as the side of the cutter, especially when doing your roughing cuts. less important in, say, wood, more important in aluminum, very important in steel, jade, ceramics. 

Interesting idea to try and interpolate mesh vertices to generate a machine path.

Usually machine paths are either horizontal or vertical sweeps (i.e. +x, -x or +y, -y) with a "step over" distance that determines the surface quality (or the ridges left by the ball nose cutter). Also you could do waterline cutting which is where a contour is generated from an XY plane intersection with the mesh at different heights.

The method you have gone for assumes that the mesh faces are sized such that the effective stepover of the cutter will give an adequate surface finish.

The methods described above are usually for 3 axis (or 2.5 axis) machines so perhaps there is a better way of you have a 6 axis robot???

Also, what you are generating is a finishing cut path and assumes you do not need to rough out material. If you do need to rough out material then you need to generate paths that would only cut a predetermined depth at a time!

If you can do it the way you have described then it could lead to some interesting surface finishes!

I tried it yesterday : it works !

MeshMachine allows you to choose the target length of the face edges ; it's just a matter of setting it low enough so that it guarantees a minimum stepover.

As you can see in the video, I made a simple roughing pass using sections, and "3 axis style" milling.

Only problem : I had to manually draw the polyline between the points.

As I said, "Sequential closest point" will not work because it doesn't try never to cross it's own path, so it cuts through the mesh between "clusters" of points.

To Mark : Ok I see what you mean, and I will be careful to take this into account (the tip of ball mills problem). For now, I mill only wood, and with a flat end from a ø3 wood mill.

I'm a real newbie when it comes to milling, so I appreciate all your remarks guys !


Nicely done Olivier. the new definition of a properly milled piece is a) did it work, and 2) anybody died? If you have yes and no answers, you are doing great. And in milling, experience can be measured in the pounds of broken end mills in the corner bucket


1) Yeah, kind of. the shape is good, the finish is OK, but I messed up with the level, and therefor I need to do it again.

Actually, I was considering the upper surface as my symetry plane. I should of milled it flat instead.

2) Well, I'm still here to talk about it. It's true that I shouldn't be standing so close to the robot. I trust KUKA|prc and it's simulation, but yeah, this thing can have incredible accelerations.

Looks cool! Be great to see the finished part!

Be careful standing next to robots!

As I said above, I need to re-do the milling, but it definitely worked, even if at times the jerky motions could seem a little bit odd to a seasoned CNC operator.

You are right about the safety issue.

I guess that naming my robot Wall-E gives it an illusory sense of kindness.

Ah, if you have a KUKA toolpath simulation it should be fine!

I am not familiar with milling, but I have read that geodesic distance is used to generate toolpaths. I have done a tool for mesh and it could help you. There are bugs, especially if you have big mesh, ... but it seems to work for your type of  job. Here is a first test. 

You need Millipede plugin.


Hi Laurent,

I'll have a look, thanks.

Not too keen about installing Millipede though : most posts about it are people having trouble to install it or complaining about lack of documentation.

You might reply that this is generally the case for most GH plugins :)






  • Add Photos
  • View All

© 2024   Created by Scott Davidson.   Powered by

Badges  |  Report an Issue  |  Terms of Service