Skip to content
Switch branches/tags
Go to file
Cannot retrieve contributors at this time

An Introduction to CNC Routing for Wood

CNC Milling


a machine that manufactures by the continuous repetition of some simple action

We have two tools available for cutting parts out of wood:

These machines are similar, and may both be called CNC mills. This class introduces the Pro 4848, a 4’x4' machine that is more often called a CNC router, because is it based on an off-the-shelf router rather than a more flexible milling spindle that has a wider range of rotational speeds. The Pro 4848 is often more suitable for wood because of its larger work area.

Milling vs. 3D Printing

Perhaps the best way to introduce CNC Milling concepts is to compare them with 3D printing.

  • Rather than building up the model layer-by-layer, milling a part using the CNC router is subtractive manufacturing — you are cutting away portions of the stock to create an approximation of the model. It is much more an approximation of the original model than when 3D printing.

  • In 3D printing, there are options to control the layer height, the infill, and so on, but those options don’t fundamentally change what is printed. When using the CNC, on the other hand, you can choose tool paths based on the model that could cause drastic differences in what is cut.

  • 3D printing has to print from bottom to top. In CNC milling, there are more choices about the order in which the cuts are made.

  • The 3D printer only lays down cylinders of plastic. The CNC has different bits to choose from that take away different amounts and different shapes of material, and pull on the material in different ways.

2D vs. 2-1/2 D vs. 3D Milling

Many parts and models consist of flat surfaces at different heights. Milling of these parts is called 2-1/2 D. Models that have curved surfaces, either convex or concave, require 3D milling. Milling curved surfaces requires different kinds of tool paths. You can select them in Fusion 360, but they are beyond the scope of this intro.

3D Models for Milling

You can create models for milling using any 3D modeling program. However, using Fusion 360 to create tool paths is easier if the 3D solids are built using Fusion.

When 3D printing, it’s easy to grab STL files from sites like Thingiverse and then print them using any slicing tool. Unfortunately, it’s harder to get models for milling. In particular, it’s hard to take STL files and then create tool paths, because of the difference in structure between STLs and other types of models. For this reason, you either need to use Fusion 360 to create the models, or export models from other tools using a standard format such as IGES or STEP.

GCode for Control of the Milling Machine

GCode is the programming language used to control the CNC machine. This language is shared with the 3D printing world. Some commands differ, however, because of the different ways to control the tool. GCode commands unique to CNC milling include:

  • Control of the spindle speed — Ignored with the Pro 4848 since you have to control the spindle speed by a dial on the router.

  • Tool selection — Commands to allow the operator to change the bit during the milling program.

From Model to Tool Paths

Fusion 360 Modes

The leftmost dropdown in the Fusion 360 toolbar allows you to choose among the various editing modes. Different features are available in different modes. The most important for creating models and creating tool paths are Model and CAM.

Fusion 360 Modes Dropdown


Used to create sketches and objects.


Used to create tool paths to cut away stock to generate the model.

Creating a Setup

Once you move into the CAM mode, you need to start by creating a Setup, that is, a relationship between your model and the stock, the piece of wood you are going to cut from. To create a setup, select New Setup from the Setup dropdown.

Creating a New Setup

The three most important things to specify are:

  • Stock size — Placing the model into the material

  • Coordinate system — Stock orientation and bit zero point

  • Postprocessing — Program Name, to set default file name

Specifying the Stock Size

In the Stock tab of the New Setup dialog, you specify the size of the stock in relation to the model. The default relationship is Relative size box. This allows you

Adding a Tool Path

You can add tool paths to the setup using the 2D and 3D dropdowns, or by right-clicking on the setup and selecting New Operation and selecting an operation in that popup menu.

For the purposes of this class, we’ll stick to three kinds of paths: Face, 2D Pocket, and 2D Contour. These tool paths are suitable for these purposes:


Planing a surface to a uniform depth. This can be used to shave off material when the stock is thicker than your model. The path used to perform a Face operation will move the bit back and forth over the area to be faced.

2D Pocket

This tool path is used to cut material down to a flat surface in the model. This can be used either for an interior hole or other flat face in the model. The pocket can cut all the way through the stock or only partway. The path used to cut the pocket will be a spiral, or perhaps multiple spirals. You can also choose to cut in multiple steps, rather than all in one operation.

2D Contour

This tool path is used to cut along an edge. Much like 2D Pocket, you can cut down to a desired depth in one step or multiple steps. 2D Contour is often used to cut out parts from the stock.

Controls for Tool Paths

The dialog used to add a tool path has several tabs that are the same, no matter the type of path selected.

  • Tool — The tool to use and the speeds (spindle rotation rate and linear speed)

  • Geometry — Which faces or lines to cut, and any adjustments to the cut geometry

  • Heights — The depth of cut, among other heights

  • Passses — Whether to make multiple cuts, and stock to leave behind

  • Linking — How to start and end the cut

Speeds and Feeds

This tab allows you to select the bit to use and the speeds used when cutting the path.

Tool Feeds and Speeds

The machine deals with two speed controls:

Spindle Speed

The rotation rate of the router spindle, in RPM.

Cutting Feedrate

The linear speed at which the spindle is moved through the stock.

However, these two rates are dependent on the bit size and the number of flutes. It is easier to work with two other parameters that are independent of the bit size:

Surface Speed

This is the linear speed at which the cutting edge moves through the stock, measured in either ft/minute or meters/minute. The ideal surface speed varies with the material and the tool. Wood has a large range of acceptable surface speeds. A starting point suggested by one source is 1100 ft/minute. For small bit sizes this is faster than is achievable.

Feed per Tooth

Also known as chip load. The amount of material cut away by one pass of one flute. This also varies based on the material and the tool. Wood has a large range of acceptable chip loads, up to about 0.03" (=0.76mm).

In general, for 1/8" bits you can run at the maximum, 25,000 RPM. For 1/4" bits a slower speed is probably needed, 16,500 RPM is a reasonable default.


Geometry of the Tool Path

This tab allows you to select the portions of the model used to generate the tool path. For facing or 2D pocket operations, you select a face in the model. For 2D contour operations you select an edge.

When selecting an edge, you choose an entire closed path, by default. If you want to select only a portion of an edge, hold down the Option or Alt key when clicking on the path.

The other main thing to select in the Geometry tab is whether to leave tabs connecting the cut to the rest of the part. This is used for 2D pocket tool paths when cutting out the part from the rest of the stock.


In this tab you choose the various heights at which the tool operates. The most important, in fact the only one you usually need to adjust, is the Bottom Height.


In this tab you control whether the cut happens in one step or multiple steps. You can also control the Stock to Leave. By default the 2D Pocket tool path leaves a little stock behind. If you don’t want this, uncheck Stock to Leave.

Roughing vs. Finishing

Larger values of Feed per Tooth make the job run faster but can cause a lower quality surface finish. To run faster with high quality you can use two paths in a row: a roughing pass with larger feed per tooth, and then a finishing pass with lower feed per tooth.

For the purposes of this class, we’ll try to do everything in one pass.


This tab is used to control how this tool path is connected to the adjacent paths, as well as how this path is entered. The most important considerations are probably:

How the initial depth is reached

By default, for 2D Pocket operations Fusion 360 will choose to slowly reach the target depth using a helical path. This is quite slot and unneeded for wood. For wood you should usually choose Plunge.

Lead-in and lead-out

Fusion likes to ease into a cut from an angle. Normally this is fine. However, occasionally you may want to disable lead-in and lead-out to avoid cutting adjacent areas of the stock.

Changing Bits or Router Speeds

If you select a different bit for a new tool path, the program will automatically stop to let you change the bit. If you want to change the speed only, you need to insert a force tool change operation into the program. Right-click on the setup and select New Operation > Manual NC, then select a Force tool change operation.

Other Features

Reorder the tool paths

You can use drag-and-drop to reorder the tool paths within a program.

Multiple setups

You can create multiple setups with different tool paths. Each setup can be exported to a separate GCode file.

Simulating the Tool Paths

When you select either the setup or a single toolpath, you can similate the operation by pressing the simulate button.

The Simulate Button

Within the simulation you can turn on or off the view of the stock or toolpaths. You can also control the speed of the simulation, or even jump forward to the end to see what was cut out of the stock.

The Statistics tab can be used to see a summary of how long it will take to run the program.

Exporting GCode

Once you are ready to export GCode to disk, press the Post Process button.


In the Post Process dialog you can select the machine you are generating GCode for and set the program name, which becomes the default GCode file name.

File Extensions

The default file extension for the 4’x4' router is .tap. However, within Mach3 you can load a file with any extension by using options in the file dialog.

The Nomad 883 uses a different file extension.

Running a Program

Holding Down Your Work

There are several options for holding down your work:

  • (Easiest) Use deck screws into the spoilboard. For harder woods, pre-drill the holes.

  • Double-stick tape. There are two kinds near the Nomad. I’ve had luck with this technique for plywood and thin wood, but Jim has had failures with thicker stock.

  • Hold-down clamps. I’ve made four from mending plates, and I’m planning on milling some from oak. There are several commercial varieties.

Cutting Completely Around a Model

You can cut a model completely out of the stock, but you have to take care to hold the model in place as you finish cutting it out. I’ve tried three things:

Leaving "tabs" on the model

In Fusion 360, you can cut a contour while leaving small tabs that connect the model to the rest of the stock. In other words, you don’t actually cut the model out completely. You can remove the tabs using a wood chisel or metal snips.

Double-stock tape

If the amount of wood you are cutting in the last step is small, there will be little torque on the stock, so double-stick tape can keep the model stuck to the table. This might only work for models that aren’t very thick.

Moving clamps

You can cut part-way around the model, then apply a clamp, crossing the perimeter where you’ve already cut, then cut the rest of the way.

Screws through the model

If you have areas in the model where you can mill or pre-drill holes, you can screw the stock down both outside the model and inside the model.

Important: Zeroing the Axes

To run a program you need to load the GCode, then zero the axes. Once that is done you press the "Start program" button to run the GCode. It is very important that you ensure the axes are zeroed correctly. Failure to zero the axes can cause you to cut the wrong portion of the stock.

Milling More Than One Copy

To mill another copy of a model, move the bit to the new X and Y zero position and re-zero both axes. You should not have to re-zero Z, but it doesn’t hurt. Then start the program again.

What Can Go Wrong

  • Failure to zero the axes — it’s easy to move the spindle to the zero point and then forget to press "Zero X" and "Zero Y". To avoid this, move the head back to the zero point after zeroing the axes to make sure X, Y, and Z coordinates are near zero. This is really easy to get wrong!

  • Bit not firmly attached — 1/8" bits are harder to secure in the collet than bits with larger shanks. Make sure the bit is 80% of the way into the collet.

  • Jammed bit — the MDF wood of the spoilboard doesn’t cut very well. Instead of making chips it mills into powder. Downcut bits don’t clear this powder very well, so it’s possible to cut too deeply into the spoilboard and jam the bit. To avoid this, don’t cut too deeply below the bottom of the stock. Usually 1mm is sufficient to guarantee that you are cutting all the way through the stock.

  • Stock not level — The spoilboard is soft and can compress a bit, possibly making your stock non-level. In addition, as portions of the spoilboard are cut away, it can become more compressible. If you need the stock to be very level, check the stock alignment by moving the bit around with constant Z, making sure the clearance above the stock is uniform. You might have to clamp portions of the stock harder to level it.

Recovering From Problems

Stopping the Mill

Use the "stop program" button, the "Emergency Stop" Mach3 button, or the red safety stop button.

Rewinding the Program

There is a "rewind" button in Mach3. You have to stop the program first.

Sample Models for Milling

Here are a couple of sample models that are suitable for 2-1/2 D milling.

CNC Router 4848 Operation

Machine Set-Up

  1. Safety glasses

  2. (optional) Dust mask

  3. Router power off

  4. CNC power on and motor enable

  5. Log on to PC (password "4848")

  6. Start Mach3, choosing "PRO 4848" profile.

  7. Press "Reset" to take Mach3 out of emergency stop mode.

  8. Press "Ref All Home" to calibrate CNC axes.

Loading Stock and Bit

  1. (optional) Pre-drill hold-down holes in stock using drill press or hand drill.

  2. In Mach3, load GCode.

  3. Move router head out of the way using arrow keys and PgUp/PgDn.

  4. Screw down or otherwise hold down stock.

  5. Move router head to convenient location for loading bit.

  6. Remove vacuum skirt.

  7. Press-snap collet into holder.

  8. Screw collet and holder onto spindle loosely.

  9. Load bit, 80% into collet, and tighten with collet wrenches.

  10. Move bit to program origin. (Often helpful to lower bit near stock surface.)

  11. Zero X and Y.

  12. Move bit up enough to clear Z sensor, and above flat spot on stock.

  13. Place Z sensor under bit and attach ground wire to bit shank.

  14. Press "Auto Tool Zero" to zero Z.

  15. Remove ground wire and stow Z sensor under table.

  16. Double-check the axes zero by moving the bit back to near the zero point on all three axes and ensuring it is where you expect.

  17. Attach vacuum skirt.

  18. Select router speed.

  19. Router power on.

Running Program

Ensure that:

  • Router power is on and router speed is set.

  • Vacuum skirt is attached.

  • You know where the "Stop" button is in case you need to stop the program.

To start exhaust vacuum and start program:

  1. Open exhaust vacuum valve above CNC and close other valve.

  2. Turn on exhaust vacuum.

  3. Ear protection.

  4. Press "Start" to start program.

  5. Press "Start" to continue after first tool selection.

Changing Bits

When program pauses for tool change:

  1. Router power off.

  2. Remove vacuum skirt.

  3. Remove bit using collet wrenches.

  4. (if changing collet size) Snap out old collet and snap in new collet.

  5. Install collet and holder loosely.

  6. Load bit 80% into collet and tighten.

  7. Move bit up enough to clear Z sensor, and above flat spot on stock.

  8. Place Z sensor under bit and attach ground wire to bit shank.

  9. Press "Auto Tool Zero" to zero Z.

  10. Remove ground wire and stow Z sensor under table.

  11. Attach vacuum skirt.

  12. Select router speed.

  13. Router power on.

  14. Press "Start" to continue program.

Shutting Down

  1. Router power off.

  2. Remove stock from table.

  3. Remove vacuum skirt.

  4. Remove bit and collet.

  5. Attach vacuum skirt.

  6. Move router head out of the way so you can vacuum up dust.

  7. Exit Mach3.

  8. CNC motor disable and power off.

  9. Change vacuum valves for using vacuum hose.

  10. Vacuum dust off table and floor.

  11. Turn off exhaust vacuum.


Onsrud Guide to Routing — Has good information about speeds, collets, and bits.

Mastercam Handbook Speed & Feeds Appendix — Another good source for default speeds and feeds.