What's the best 5-axis CAM strategy for grasshopper designs

I am trying to use grasshopper to design woodworking items to be made with a 5-axis CNC router.

We have been using normal CAM software, such as CAMworks, but it isn’t very sophisticated about 5-axis, and it requires lots of manual intervention.

The 5-axis point is a bit frustrating - the machine can clearly do the 5-axis moves, and while creating the Grasshopper definition for my design I know a lot about the geometry that isn’t expressed in the final 3D mode.

The manual intervention point is even more annoying. Then when we make changes and iterate a design, the manual intervention has to happen all over again.

I am told that if my designs were in Solidworks then the update process would be simpler, because it could recognize that it was the same model, but with some dimensions changed.

There may be a way to automate that via Excel - I found a forum post here that discusses that.

RhinoCam is a possible alternative but since it is quite expensive I want to make sure it actually will do what I want.

In particular, I worry about the following - a design done largely in Grasshopper, and then Baked to go into Rhino may not have the same continuity with CAM tool paths as one that was built in Rhino.

The most intriguing thing is that there seem to be several groups that developed Grasshopper plug ins that would directly output toolpaths for a CNC machine.

One promising one is called Termite. The technical paper published about it sounds very good. But Termite was promised to be posted to this site in 2016 and there is nothing else and it’s now 2020.

So, I am open to suggestions!

Interesting post! The first question that springs to mind is what sort of thing are you designing that has to be made with 5-axes?

I think with SolidWorks and CAM Works they are best suited to feature based strategies so, as a simple example, if you have a pocket on your part it will be driven by a sketch and have relationships to other features and will be represented in the SolidWorks structure. If you change a parameter within that pockets structure (depth for example) but the structure of it stays unchanged then the CAM will just update because it will have a CAM operation based on the pocket which will be unchanged in structure. If you add pockets you would probably have to add CAM operations.

Do you mean that some geometries of your design simply do not get machined? This could be due to a variety of reasons. Simple example… you have a circular pocket radius 10mm but only a 12mm radius cutter. There could be some reason why the CAM software is ignoring features.

I have known people have difficulties programming 4-axis machining with CAM Works because their license only allowed 3.5 axis programming and SolidWorks want you to buy a more expensive license for 4 or 5 axis CAM… So if you have the traditional 3 axis machine with a 4th rotary axis bolted to the bed then CAM Works standard license would let you rotate the part then do a 3 axis operation but it wouldn’t allow all 4 axes to move at once. It wasn’t immediately obvious that it was a licensing issue… The SolidWorks reseller had to contact Solid Works to figure it out I believe.

What is the manual intervention you have to do?

I don’t think it will make any difference if you design in GH and bake to Rhino or design in Rhino. I assume you are then saving to something like .STEP or .IGS to import into SolidWorks or can you import .3DM direct into SolidWorks?

Without knowing what you are machining its hard to see what the best strategy is… do you have any example photos or files?

I’ve seen a couple of 5 axis Grasshopper CNC projects years ago but I don’t think anything came of them… eg…


I don’t know anything about RhinoCAM but I am guessing that to answer whether it will be better than CAM Works you will need to share more info about the parts you are trying to make.

The things I am doing are really quite simple - they are dovetail joints and finger joints between two pieces of wood joined at the edge, at 90 degrees.

However, I am trying to cut these in a single pass. So you load a sheet of plywood on the CNC router and it cuts the parts all from one side. In order to get the various complex angles in a dovetail you need 5-axis, but it is really a tiny and simple subset of 5-axis.

Because we can’t mill the inside corners this sharp, there are two choices. The simplest one is to have a relief hole. You can see the drill holes in the model, but they appear to be in the wrong. Actually, they are located correctly, but they are 1/2 the correct diameter. This is because there is a bug in CAMWorks that will not recognize the holes if they touch two planes. So we get it to recognize the holes, then increase the diameter of the tool manually.

That is typical of the conversion issues to generate a tool path.

Here is a more complicated joint.

Rather than using the drilled relief holes, the inside corners are allowed to be rounded. This means that edges on the dovetail pins on the other piece must also be rounded. This is easy in principle with a corner-rounder mill, and it all can be done from one side.

But CAMWorks does not appear to be designed to do such things.

My end goal isn’t just a bunch of joints - I want to use them, and other more complex joints for waffles an the like to connect wood pieces for furniture.

Many of these joints could be cut with a 3-axis machine if you first cut them to size, then reposition them at 90 degrees to cut from the end. I am trying to avoid that.

1 Like

Rhinocam will work for you. Your design can be done in 3 axis, use that as a starting point. My usual workflow is design in grasshopper, finish design and add together in Rhino, do tool paths and simulation in Rhinocam, then to a 3 axis mill. I think Rhinocam was about US $1,000, then 3 or $400 a year for annual upgrades. Thing of it is, since you are working with an essentially very long and flat material that is essentially 2-1/2 D (wood) there will not be much advantage to having a 4th or 5th axis. Under the ‘crawl before you fly’ approach, start with a 3 axis it is much less expensive and easier. At one of my last shows, a customer was most persistent questioning me how I was able to pull of my designs; turns out he ran a 7 axis machine for Boeing.
Check out some of the strange shaped end mill cutters that will let you machine a reverse taper with an overhang. One is called a ‘lollipop’ cutter, you could also use a reverse taper cutter, or a keyway cutter, or a dovetail cutter. You will have to think it through a little, but it is quite doable. Especially in wood.


The EPFL IBOIS has done some stuff like this.


The 5 axis toolpaths were programmed directly with Python scripts. However, being research projects, I don’t know if any of the code is publicly available. Some of it could probably be done in GH as well.

1 Like

Search “dog bone” on here… There have been some plugins for adding the corner clearance on 2d curves… Perhaps you could automate the 3d in grasshopper instead of trying to drill holes in each corner?

If you’re doing this out of plywood, you don’t have to reposition each part.

You can do two sided machining on a whole sheet. Carve the parts of the dovetails that you can reach on one side, drill index holes in the corners of the sheet and through to the spoilboard. Flip the whole sheet using dowels in the index holes, carve what you couldn’t reach on the other side, then cut out the parts.

There are also options for cutting dovetails (not quite as pretty as the ones you drew) in a single sided operation. Vortex Tool makes a two-bit set that does it.

Lastly, in order to cut what you drew with 5-axis swarth cutting (tilting the bit to keep it parallel to the faces it’s milling), you’ll probably end up cutting deeper into your spoilboard that you would with a 3-axis parallel carving operation.

With the 5axis swarth, the tilt of the bit means that during an undercut, in order to cut the full depth of the part, the bid intrudes well into the spoilboard. With 3-axis parallel, using a flat nosed bit, flipping the sheet, and carving the edge of the plywood in steps (maybe 15-20 steps for 18mm/0.72" ply), because the bit stay straight, you can leave the spoilboard barely scratched.

All this adds up to 5 axis cutting of sheet goods making sense mostly for large production runs, or for very specific applications, like angled holes or slots that have undercuts when viewed from above and below.

Thanks for all of the creative answers! One thing I did not mention is that the shop I have access to just got a 5-axis CNC router. That is the machine I will be using no mater what.

It can, of course, be programmed as if it were 3-axis, but given that I know it is a 5-axis machine I have wanted to use its capabilities - or at least ask the forum what my options are.

Also, I have ambitions to do a lot more that what I have done so far.

It seems odd to be able to figure out all of the geometry very carefully in Grasshopper, and then have the CAM software be so primitive.

Answering the posts in turn.

MarkZ: You are correct that a lot can be done with cleverness and specialized tooling. And I might have to go that route. But given that I have the machine, I was setting my sights higher. RhinoCam Premium which has the 5-axis stuff is $20,000. Which I can try to get the shop to buy if really would work.

Helvetosaur - yes the group at EPFL have done very similar work on wood joinery. Their goal is slightly different - joining large sheets of plywood to make buildings, so bigger scale but a similar idea. Their conclusion is that dovetail joints are not well suited to traditional CAM, which is why they wrote their own CAM toolpath generation.

martynjhogg: You can make the “dog bone” clearance holes be integral to the part rather than being drilled. But that requires careful control of the spindle speed otherwise you can friction burn those spots. So a lot of CNC router wood sites recommend drilling them first, then cutting the outlines. The main problem with dog-bone clearance holes is that they are ugly - you have little holes that are not filled that run through the assembled parts. So the fancier designs use rounded corner joints, or do the reposition approach.

Max Allstadt: It’s a very clever idea to flip the whole sheet! However, the main problem isn’t getting access to the other side of the sheet - it is getting access to the end. If you can cut from the end, then it is easy to make sharp corners and all sorts of decorative pieces. For a 3-axis machine end cutting means positioning the piece perpendicular to the table. For the 5-axis machine you can turn the head so the tool is parallel to the table, but you must raise the material a bit more than 6" above the table.

Yes, if all I wanted to do was these joints then dedicated dovetail bits in 3-axis would be enough. These joints are the stepping off point for more advanced stuff - for example - waffle joints. And yes you are right that the 5-axis stuff is tough on the spoilboard.

Thanks again!

If you’re ok with figuring out workholding above the table, you can also achieve what you’ve drawn with a c-axis aggregate. In your case, it looks like a 90 degree head would work, but there are also manually adjustable variable angle heads.

The other problem you’ll run into is tearout. And that means you’ll probably need to generate tool paths to make anti-tearout cuts, probably using some kind of engraving tool path created in grasshopper. There are some videos out there that show how people have done this.

RhinoCAM for true 5axis is 10 grand, for indexed 5axis (which looks like what you need) it’s 5 grand. On top of that they sell an annual maintenance subscription which gives you upgrades and unlimited tech support. It’s very worth it. They’re responsive and will help you with anything you can’t figure out.

I’ll also add that if I was going to go full 5 axis, I’d skip past that and go straight for a kuka robot with a tool changer. I’d keep my gantry 3axis machine too. But I kinda don’t see the point of a table top 5 axis when a kuka can do all the same things and a lot more.

Yes, I forgot to mention that the technical support over at Mecsoft is great (publishers of Rhinocam). About twice or 3 times a year I have a question, and they respond to emails promptly. On their last release of a product upgrade a few months ago, they even added a feature that I suggested (tweaking the way curves are engraved). Depending what it is, you can send them a rhino file, and they will look at it in detail and tell you what is going on. In 10 years of using Rhinocam, they have found about 25 of my user errors, with suggests for ways to generate tool paths. And two bugs, for which they suggested immediate work arounds, and then fixed on the next release. So, great support. As Max says, well worth the money.
Rhinocam is tightly integrated into Rhino, so you can tweak your designs, see if the toolpaths will run and then keep tweaking it till you get what you want.
“Design three times, measure twice, cut once, cuss as needed”

Can the dovetail be changed to suit the router bit cutter? So there is a radius on the teeth? I. E. No need for the drilled holes?

If you could share your 3dm file here or send it to us at support@mecsoft.com we can take a look at it, generate 5 axis toolpath & post pictures of the toolpath.
When changes are made to design in Grasshopper & baked into Rhino, you would have to re select drive surfaces & curves before updating toolpath in RhinoCAM.
We also have an API for RhinoCAM that could possibly be used in this project.

You can reach out to our sales department at sales@mecsoft.com if you have any additional questions.
Thank you.


I have another question as well . Is it possible to extract toolpath data from RhinoCam and import it to grasshopper? Since I wanna use the generated tool path in a robotic arm. For me, it is easier to control the robotic arm through grasshopper. I saw some examples such as using Robodk with RhinoCam, but using only RhinoCam and grasshopper is way much easier for me.

Toolpath generated in RhinoCAM can be converted to curves. This feature is available in PRO & Premium configurations.

Hello , I work for CIMsystem , Italian distributor/reseller of CAMWorks but, at same time; CIMsystem is also a software house company.

As CIMsystem we create an easy but complete cam software inside Rhinoceros , called RhinoNC to work up to 5 axis.

Please check it on our website cimsystem.com and let mi know :slight_smile:

Your web site doesn’t load for me (Oregon, USA).

P.S. Eventually, it did. Extremely slow response though on pages I tried to see.


1 Like

Joseph is correct, your website is unusable in North America. Trying to see it in Canada and it takes several minutes for pages to load.

I’m sure you will want to fix this as soon as possible. It does not make a good impression.

madCAM is another package worth considering.

A crucial aspect for me is that madCAM is scriptable, so I can get it to generate new toolpaths when my model changes without having to re-enter all the cutting parameters every time.

All that said, I now prefer to use GHPython to generate G-code directly from inside Grasshopper.