My Shapeoko CNC Journey vs. 3D-Printing: CNC Software is Awful!

| Comments

My Shapeoko XXL arrived about a week ago. It took me a day or two to assemble it. I didn’t think it was going to be a difficult build, and it wasn’t. In fact, it was even easier than I expected!

I only had two complaints during the build, and one complaint afterwards. I don’t want to go into too much detail here, but I feel that it would be rude to mention my complaints without summarizing them.

Both complaints are in regard to the drag chains. There isn’t enough clearance between the X-axis limit switch and the drag chain. You need to shim and bend the drag chain bracket, or else the drag chain catches on the limit switch. The drag chains are attached to the rails with VHB tape. One of them already came loose. I’m going to need to drill holes and screw those drag chains down.

Also, I was under the impression that the Shapeoko’s GRBL firmware is correctly configured from the factory. My first few attempts at running the machine involved the router slamming into the bed. I tried using three different pieces of software to generate the gcode, and they all did the same thing as Carbide 3D’s “Hello, World,” file.

They were all going in the wrong direction when retracting the tool. I reversed the Z-axis in GRBL, and immediately had a successful cut. I’m not sure whether I’ve done the right thing yet. I’ll write about how the cutting workflow goes after I have some proper successes under my belt!

CNC software is awful

I’m not helped by the fact that I run Linux on all my machines, but even if I weren’t, the 3D-printing software ecosystem is leaps and bounds ahead of CAM software for CNC routers!

Open-source slicers for 3D printers are abundant and extremely capable. Slic3r, specifically the Prusa Edition, has been improving tremendously ever since the Prusa Mk2 started shipping. It seems to have mostly caught up with everyone’s favorite commercial slicer: Simplify 3D.

Technically speaking, slicers are CAM software—Computer Aided Manufacturing. CAM software converts your 2D or 3D model into gcode that runs on your CNC router. Just like a slicer.

Open-source CAM software is archaic compared to slicers. I haven’t dug deep into any of the open source packages yet, so I fully expect my opinions to change in a few months. That isn’t going to stop me from writing about what I have learned so far!

The commercial packages with reasonable price tags for a hobbyist are better, but still not great. They’re definitely a step up, but not nearly as big a step as I would have hoped!

2.5D vs. 3D CAM vs. V-Carving

2.5D CAM software works a lot like a slicer for your 3D printer. It carves one layer, lowers the tool, and then carves the next layer. If you are cutting a 3D shape, you will see stair stepping in your object.

On your 3D printer, those steps are 0.1mm high, so you can get rather smooth curves out of it. On a CNC router, those steps might be 10 or 20 mm tall. This doesn’t matter for the rather two-dimensional parts I’m cutting for my carbon fiber quadcopter frame, but it will matter a great deal if you’re cutting something with curves on the Z-axis!

3D CAM software mills smooth lines on the Z-axis by slowly raising and lowering the cutting tool as it is moving. This will result in a smoother finish than you can get with an FDM 3D printer.

My understanding is that 2.5D CAM software tends to create more efficient toolpaths for simple parts than most 3D CAM software.

Finally, there’s v-carving. This is what you use when you want to engrave text or other fine detail. With normal milling, the smallest detail you can create is the width of your mill. If you use a V-shaped bit, it is possible for the machine to carve a tiny point, but how does it do this?

By varying the depth of cut, the machine can control how narrow a line can be. The deeper you go, the wider it gets!

I don’t have any V-bits yet, so I haven’t done much research here.


PyCAM seems to be the top-tier open-source 3D CAM package, so it is the first thing I played around with. The interface seems clunky, and you really need to know what you’re doing to use it properly. It seems to do a reasonable job generating proper 3D toolpaths, but as far as I can tell, it doesn’t give you the option of leaving support structures behind.

Supports are different than what we use in the 3D-printing world. They’re much simpler here. CAM software lets you define areas of material to be left behind. These are referred to as tabs.

When I am cutting carbon fiber quadcopter arms, I will leave about a 1 mm square of material behind on each side of the arm. That will keep it in place, so it doesn’t pop out of place and get destroyed by the router when the next arm is being cut. Just like with 3D-printed supports, I will have to cut those out manually at the end.

The commercial, hobby-grade 3D CAM of choice seems to be MeshCAM. I run Linux on all my machines at home, and, like most CAM software, MeshCAM is only available for Windows and Mac. However, version 6 seems to work mostly fine under Wine. I had trouble with the Beta for Version 7. That trouble isn’t making me want to invest $250 in this product!

MeshCAM is much easier for me to understand than PyCAM. I’m sure MeshCAM is miles ahead of PyCAM, but my simple brain makes them look mostly comparable. MeshCAM has a simple interface for adding supports, and that alone might justify the $250 price tag for me!

I’m not in a rush here. My first projects don’t require 3D CAM software.

2.5D CAM

My first successful cut on my machine was done using JSCut. JSCut is open source, and it runs in your web browser. Like all the 2.5D software I’ve tried so far, JSCut is pretty clunky.

It will let you insert tabs, but you have to add them to your SVG file before importing your model into JSCut. The toolpaths generated by JSCut are very simple and not terribly configurable. When I import my quadcopter arm, it wants to just carve the outline before drilling the holes for the motor mounts.

I guess this won’t be a big deal if I add the appropriate tabs, but it would make more sense to me to mill out all the holes while the arm is at its most rigid. I can make this happen, but only if I import the holes and the arm as two separate SVG files. I hope!

For now, I’m probably going to be using Carbide Create—the no-cost software package for Carbide 3D’s line of CNC routers. As far as I can tell, adding tabs and choosing the order of my cuts should be relatively straightforward in Carbide Create.

However, selecting multiple nodes in Carbide Create is dumb. The only way to do it is by drawing a box around the items you want to select. There is no control-click option. I want to select the five holes on one end of my object along with the two holes on the other. It is impossible to select all seven holes without also selecting the outline of the arm!


I’ve barely looked at V-Carving. The top-tier hobby-grade V-Carving product seems to be V-Carve Desktop or V-Carve Pro from Vectric. I haven’t done enough research to know what differences there are between the two other than price. Desktop is $350 and Pro is $750.

I have absolutely no idea if V-Carve Desktop or V-Carve Pro function under Wine. For what it is worth, it looks like V-Carve Pro or Desktop can also handle 3D works.

It seems you can do reasonable V-carving with Carbide Create, and Carbide Create runs just fine under Wine. When I pick up my first V-bit, this is where I will start!

What about Fusion 360?

Autodesk Fusion 360 looks like a fantastic CAM tool. Like most CAM tools, I haven’t actually used it. Yet.

But I have done some research. It sounds like Fusion 360 is fantastic at CAM as long as you created your object using Fusion 360. If you’re importing an STL, things are less awesome.

Fusion 360 doesn’t run on Linux, and it sounds like a pain to get it working. I do most of my modeling using OpenSCAD, so I’m not too excited about the idea of getting Fusion 360 running just for its CAM functionality!

I always tell people that 3D-printing is very different than using their inkjet printer

On your laser or inkjet printer, you hit the print button, and a perfect copy comes out. I always tell people how much more complicated 3D printing is. You can’t just hit the button.

Check your printer. Make sure the bed is clear. Make sure your filament is loaded. Keep an eye on your print just in case it fails.

Compared to a CNC router, a 3D printer may as well be an inkjet printer! With a CNC router, you will often run multiple gcode files to produce a single object.

You’ll zero out your CNC, and cut the first file using a big endmill to strip away huge pieces of material. Then you might change to a much smaller ball-shaped bit and run your next file to carve out your smooth 3D contours. After that, maybe you’ll switch to a V-shaped bit to engrave writing and detailed designs. After all that, you’ll switch back to a beefy endmill to cut your piece the rest of the way out of the material.

I complain if I have to change filament in the middle of a print. Now I’m going to have to do the equivalent at least once on most CNC router jobs?! I might even have to do it three or four times!

CNC routers are faster than 3D printers

My old 3D-printed nylon quadcopter frame required two print jobs to build, and each job took nearly three hours.

Making my new carbon fiber frame will require me to cut three different thicknesses of carbon fiber, and cutting the parts will take less than ten minutes per sheet. This is only a rough estimate based on the time it took to run a test cut of one arm on a piece of particle board.

It may not be a perfectly direct comparison, because the two frames aren’t exactly identical, but I fully expect this to be at least an order of magnitude faster than 3D-printing.

One of the biggest differences here is trading some of my time for an increase in manufacturing speed. 3D-printing requires me to interact with the printer for a few minutes when the three-hour job starts and ends, and my interaction is quite minimal.

The CNC requires a little more effort on my part. I have to clamp down the carbon fiber. I have to make sure it is nice and squared up, because the quadcopter is strongest when the carbon runs parallel to the arms. I also have to zero out my tool in an unused and spacious enough section of the carbon fiber sheet.

Doubling or tripling the effort on my part means I can have sturdier parts ready in a fraction of the time. Is it a good trade-off? In this case, it certainly is!

Why is open source 3D-printing software so far ahead of CNC CAM software?

It has to be the accessibility of the technology. You can buy a reasonable 3D printer from Monoprice for $200 to $300. You can upgrade to one of the most advanced consumer printers available, the Prusa Mk3, for less than $1,000. These machines are small, and they’re quiet enough that they can sit next to your desk in an apartment.

My Shapeoko XXL cost me a little over $2,000. At this size, a belt-driven machine like this is about as low end as you can get. My machine’s little brother, the Shapeoko 3, is around $1,200. I would say the Shapeoko 3 is roughly equivalent to that $200 3D printer from Monoprice. I would say that the CNC router equivalent of the Prusa Mk3 probably would be driven by lead screws, and it would cost somewhere in the neighborhood of $6,000 to $10,000.

That big difference in price isn’t the only thing keeping CNC routers out of the majority of hobbyist’s hands. Spinning up a router to carve wood is loud and extremely messy. You’re not going to run the little 18” x 18” Shapeoko 3’s Dewalt router in the living room of your apartment. It is going to make a mess, and the neighbors are going to complain about the noise.

These barriers to entry make CNC routers at least an order of magnitude more rare than 3D printers. I can easily name five local friends who own 3D printers. I’m the only person I know with a CNC router.

What’s next?

I can see that the next few weeks are going to be fun and exciting. I’ve made my first test cut, and it went better than I expected. My design for a quadcopter frame is about 75% of the way to the first prototype. I imagine I’ll be cutting that sooner than I expected.

I keep adding more projects to my list. I just tweeted about my interest in cutting a Coleco Pac-Man-inspired bartop arcade cabinet, and two of my friends are interested in helping out and building their own. I won’t be surprised if a few more friends join in on that fun!

My friend Brian wants to mill a small wooden clock with his face on it. He wants to put it behind his Prusa Mk3 to show off just how quickly things are moving in his timelapse videos.

Have you bought a CNC router already, or are you thinking about pulling the trigger? What CNC machine did you choose? Is it better than mine?! Do you have a question? Tell me about it in the comments, or stop by our Discord server to chat about it!