Fusion360 CAM Programing Tips

when I say it depends on the software you are using, if you are using something like onshape or fusion360, you create a 3D model of your part and then it gets cut out, you don’t think in terms of pocket actions, etc, you just create the part to whatever shape you want.

@bar, thanks for the explanation! I do use MakerCAM so that’s very helpful. Unfortunately, I’m also using Sketchup for my design software (I’m pretty proficient in it, but realize it’s not the best option… I’m trying to learn Fusion 360… My head is just not wrapping around how it functions). Because of Sketchup’s limitations I don’t know if I can export the correct shapes to load into MakerCAM. I’ll need to do research on this…

You may find this youtube video about SketchUp helpful

1 Like

So the file exported can be dropped into MakerCAM and it will understand how to sort out the different cut depths, and pockets? Or is there still going to be programming/settings on the MakerCAM end?

@bar I’ve watched that video many times. It is very helpful but it only shows how to cut a path all the way through. I’m not sure how to drop a design into MakerCAM that has a combination of profiles, paths, and pockets. (by the way, thanks for the explanation on various profile operations! Now I know what the different cuts are called. :smile:

Now that I know these different cuts are programmed in the CAM software I can start learning. Look what I found! Here’s a video that sheds some light on how to program MakerCAM to cut out various parts: https://www.youtube.com/watch?v=sNmamQuPic8

Things are starting to make sense now. Thanks for the help!

Fusion360 handles the programming. It’s not quite as simple as take shape, make code, but it certainly isn’t as convoluted as a program like MasterCAM ($$$$ pro program).

In Fusion, I like to design with CNC machining in mind. I will make sketches and lay out features in a way that helps the CAM module make the G-code. Once you have modeled your shapes, you pick out your type of operation (profile, pocket, drill, engrave, etc) and select the geometry you want it applied to. You will need to specify certain parameters such as depth of cut, step over, finish passes, climb/conventional to help it make the G-Code. This is a good video to go from concept to design to g-code: https://www.youtube.com/watch?v=VZU_Jpyyc5M&t=1s

1 Like

“Unfortunately, I’m also using Sketchup for my design software (I’m pretty proficient in it, but realize it’s not the best option… I’m trying to learn Fusion 360… My head is just not wrapping around how it functions). Because of Sketchup’s limitations I don’t know if I can export the correct shapes to load into MakerCAM. I’ll need to do research on this…”

Sketchup? It is an excellent piece of software for the price. I use it all the time for designing things I cut with my CNC (just a little one, my Maslow should be here in a couple weeks though) or print with my 3D Printer. I have no issues getting dxf files imported into my CAM package (I purchased EstlCam). The key is using a plugin for sketchup that allows the export of a .dxf file and knowing the units you’re working in. As far as the dxf export plugin? I use this one: https://www.guitar-list.com/download-software/convert-sketchup-skp-files-dxf-or-stl

Units? I draw in whatever I need to work in, inches, feet, cm, mm, whatever, but I always export my dxfs and generate my gcode in mm. Whether I am 3D printing or running the CNC, it is always done in mm. All my machines are configured and operate in mm.

I’m also trying to learn Fusion360, but I keep coming back to Sketchup to handle the quick drawings or simple projects, usually because I need a result quickly.


no, you skip makerCM entirely, onshape or fusion360 output the g-code directly.

seethe video I posted the link to earlier this week about doing CAM in onshape.

David Lang

1 Like

I honestly did not know other apps could export g-code. That’s pretty cool.
Now, I’ve heard there are different “versions” of g-code, are there any concerns with what version it exports to?

That’s handled by the post-processor. Here is an example list from Fusion:

Machine all “speak” different dialects of G-Code for one reason or another. Sometimes machine will also use proprietary file types. Luckily, this is an open source machine, so the Maslow just uses generic G-Code. If you do go the Fusion route, make sure you use the Grbl post.


If you see ‘grbl’ in the list, that should work.


The Fusion360 grbl post processor generates the following. Ground control fails on many of the commands and there seems to be lots of extra z moves. (The non useable codes are bold.)

Are there ways to limit the post output to Maslow useable items?
Is there a simple screening program to strip out the lines that Maslow can’t use?
Are there Fusion settings that can be adjusted to generate clean Maslow gcode?

Thanks, Roger

(T1 D=10 CR=0 - ZMIN=-1 - flat end mill)
G90 G94
G28 G91 Z0

(2D Contour1)
T1 M6
S9700 M3
G0 X93.6 Y-1
G1 Z1 F30
G18 G2 X94.6 Z-1 I1
G1 X95.6 F2328
G17 G3 X96.6 Y0 J1
X-96.6 I-96.6
X96.6 I96.6
X95.6 Y1 I-1
G1 X94.6
G18 G3 X93.6 Z0 K1
G0 Z5
X150.727 Y1.356
G1 Z1 F30
X150.72 Z-0.121
X150.698 Z-0.239
X150.662 Z-0.355


I’m not familiar with Fusion 360 so maybe someone else can answer the Fusion 360 specific questions. However I know that Makercam.com you select the parts in individual depths and create separate paths for them. Your file will then perform the cuts and even prompt you if you selected different tool sizes when to switch them out. it might be worth a try running it through Makercam.

Thank you

Do these codes stop Ground Control from running the program? I have noticed that when it runs into G or M codes it doesn’t recognize, a “command not supported” message will appear in the lower right and it will simply skip it and go to the next line. I have never run into a situation on my machine where codes not in use will prevent me from running nc files. If your machine is stopping on unsupported commands case you may have found a bug.

In order to produce only the codes currently implemented, we would need a Maslow-specific post-processor. GRBL just generates generic G-Code that can be run on standard routers. As of yet, I know there hasn’t been any headway working with AutoDesk to create a Maslow post. Also, the Maslow updates are frequent enough that the Fusion360 post would have to be updated alongside it. New G and M codes are regularly being implemented to the machine as we improve the functionality of the machine. If an update was missed, it’s entirely possible that Fusion wouldn’t output a new feature to G-code. If I knew more about writing posts I would do this myself.

I have had some luck (accidentally) using the Boxyz post in Fusion, which may solve some of your issues. It doesn’t have much in the way of a startup/end block and it doesn’t use the M-codes at all. It also makes all your cut paths G1 commands, so it will translate arcs into short facets. I’m not sure this will work in every situation, as it’s meant for an entirely different machine. It may be worth experimenting with it or other post-processors to see if there is something close.

These are handled in the heights tab. Fusion 360 does, in fact, like to program in a lot of different Z-heights. I’ve found that using the following settings works pretty well for me. At the very least the Z moves are short enough that it doesn’t slow down the machine too much. You could even set the clearance height to 0mm above the retract height to make it so that the clearance height, retract height, and feed height are all the same. Fusion with give you a warning about clearance heights but I haven’t seen that be an issue on the machine.

It may also be worth experimenting with different CAM programs such as MakerCAM if Fusion isn’t suiting your needs. I have a feeling, though, that Fusion is very convenient to use in the sense that it is both CAD and CAM, so you don’t have to go between programs. I know that if it weren’t for that fact I would probably use Creo or Solidworks myself to do my designing.


Thanks for the helpful input. I am proficient with SW but am switching to Fusion360 for the combined value of design, toolpath and post integration. The ability to share designs and work online is also a great value.

Ground control does not fail, it just forces me to wait for the inevitable program halt so I can hit continue. Might there be anyway to select a run command that will not stop for these notice windows? This would allow a direct run of the Fusion360 post output. A G command to pause, like for a tool or other action would also be great.

I appreciate your sharing the z settings that work for you and that reduce the number of z moves.

My Maslow is just now running. I built it with a vacuum backing frame in order to cut veneers, paper board and thin plastic (with a drag knife…) I mounted two aluminum 8" turntable bearings to the router base handle taps and then direct attached the z motor mount. I used the tapped bearing install holes for the bearings to secure the chains on edge.


The black item is a 3d printed dust collector that installs between the bearings and plate. My dust collection will employ a cyclone separator that allows me to vacuum sheet rock dust for weeks before changing or cleaning the filter.

I am curious about what format you manage the travel speeds during cutting vs moving. Thanks for any guidance. Roger.


Is it halting on the tool change command, M6? I’ve quoted your above code and commented out the lines to make is easy to understand what it’s actually telling the machine.

The unsupported commands above, G94, G17, G28, M8, and M9, should not cause a program halt. Ground Control should just ignore those commands. It will halt the program at an M6 command for a tool change. This is because it thinks that you are taking the router out, changing your bit, and zeroing the z-axis during this pause.

Also, it only does this when it sees that it’s changing to a “new” tool. So the first time you tell the machine T1 M6 it knows it has to wait for the tool change. If you were to send the same command again it knows that it has T1 loaded and will continue cutting. When it sees T2 M6, it would initiate another tool change, because it knows that’s different than the current tool loaded.

You could just delete the T1 M6 lines from your code and it should no longer halt during your program. You could use the search feature for M6 and delete the lines it finds. Alternatively, these lines are usually at the start of a cut, so look for the (2D Contour1) and you should be able to find the tool changes right away. I’d prefer the first method myself, that way I know that I’ve caught all the instances.

Congrats! That’s awesome! It’s such a great feeling to get over that first hurdle and actually see the machine moving under its own power! :grin:

That is quite the setup! I love the vacuum bed, that’s been one item on my machine wishlist for awhile now. It’s perfectly functional without one, but a lot of the machines I’ve worked with have one and they are very nice to have!

I’d like to see how these work out for you. Are the bearings designed to take radial forces? Most of these types of bearings are designed to take axial forces, but it’s quite possible that they will still work reliably. Are your chain mounting positions fixed relative to each other or can they rotate independently of each other? In order to have true triangular kinematics, you will need to mount one chain to the outside ring of the bearing and one to the inside ring. Otherwise it’s just a rotating version of quadrilateral kinematics.

Not doubting your ability to DIY a ring solution, I just want to make sure you have it right before it causes endless calibration frustrations. I’ve been there myself. :face_with_symbols_over_mouth::face_with_symbols_over_mouth::face_with_symbols_over_mouth:

Dust collection is possibly one of the most important safety issues to address, so I really like to hear that. I too have been planning a DIY cyclone system that fits in my little trailer.

A little confused by the question. Rapid moves are G0 commands and cutting moves are either G1, G2, or G3 commands. Fusion360 will program these codes where it makes sense based on your cut parameters and post code.

If you asking about feed rates, the machine will move at its maximum travel speed (1000mm/min or 40in/min) during G0 commands. For G1/G2/G3 commands, it will move at the speed specified by the F variable (eg F700). The number after the letter F is the feedrate in the active unit of measurement, which is specified by G20 or G21. This speed is really dependent on your material and tool selection. Further reading on materials and tools are on the wiki. These articles still need some expanding, but they should serve as a good starting point.

Just in case you haven’t already bookmarked it, this is Wikipedia’s G-Code page. It has a full dictionary of all the codes for your reference.


Helpful again, your specific references and comments clarify.

Might you know of the complete list of codes that Maslow accepts. The list I found a bit ago does not include some of the commands you didn’t describe as unsupported (like the T1 M6 or S9700 M3) The wiki page is helpful but is not Maslow specific.

On that note, what is a software and hardware method of either turning the router on/off or adjusting its speed I might try?

The bearings I used are https://www.amazon.com/gp/product/B01MQY8U5R/ref=oh_aui_detailpage_o03_s00?ie=UTF8&psc=1. They have circulating balls in a machined groove that seems to handle radial loads well, not at all like the traditional stamped steel ones. Each ring rotates free which allows the router to twist without changing the center point. I wanted to avoid variable drag on the weighted sled skewing. I used ground control’s triangular set up with 0 for both vertical and horizontal distances and entered the ring radii from the chain attachment pin center after measuring out the chain accurately. It appears to track a 40 x 80 in rectangle within an 1/8" (when measured to the table edge). I will run a few pen tests and measure shortly.

When all is up and running I will post pictures and a description. Roger


You are entirely right and I updated the supported G-code list on the wiki. I want to flesh out the table a little more like the Wikipedia G-Code page when I get a chance. If I missed something, anyone, please don’t hesitate to add to the list. I can’t always keep up with all the amazing speed of progress going on here! :smiley:

There is a setting in Ground Control which enables spindle control. When it is on, it will send a 5v signal via the Aux1 pins on your motor shield with M3/4/5 commands. From there, you need some sort of relay that you can plug your router into that will turn it off. As the board ships now, the Aux1-6 pins are just holes in the PCB. There isn’t anything soldered to those pins yet, so you will have to solder on connectors (disclaimer, I have not tried those connectors myself and cannot confirm if they will fit, but I think they should). I bought a spare shield myself to test before implementing this on the machine. This a bit of a complicated upgrade. Further reading in this thread.

The bearings you linked do in fact look like they would be up to the task, and they have a pretty good price point. The smaller bearings (like that one) probably would work better than the larger ones. When Bar was testing his system he noticed that the smaller ones moved much smoother. I’m very curious to see how they work out for you! I’m sure if you’ve gotten this far, you’ve already read some/most/all of this thread about the development of the triangular kinematics, but I feel it is very relevant to our conversation. Even if you’ve skimmed it you will pick up on a lot of what makes this system work.

As far as machine accuracy, I have detailed out a method for testing tolerance across the bed in this thread. Apologies again if I’m linking you to threads you’ve already read. If you have the time to run the test yourself, the data you collect from it will help immensely as we are trying to quantify the differences between the different versions of the triangular kinematics.

Sidebar to the community, should I rename this thread to something like “Fusion360 CAM Programing Tips”? Seems to be what this discussion has been focused around.


Any update on your solution using a turntable bearing?

Is it accurate?