Skip to content

Design & Build for CNC Milling Production

hero

In CNC cut joinery, precision machining techniques are used to create interlocking parts that fit together snugly without the need for additional fasteners like screws or nails. These joints are crucial in woodworking, furniture making, cabinetry, and various other applications where strong, durable connections are essential. Here’s my highlights from this week’s learning:

Things to consider when designing for CNC Milling:

  • Tools: Unlike saw blades, CNC machines typically use router bits, which can cause more tear-out at the edges of pieces. This makes careful setup crucial to ensure the tool approaches the workpiece correctly. Additionally, router bits exert more force on the workpiece than saw blades, requiring stronger fixturing to hold the workpiece securely
  • Corners: CNC routers cannot cut perfectly sharp corners due to its cyllindrical routing bits. Therefore, joints need to be designed with rounded corners to accommodate this limitation. This ‘rounded corners’ also ensures that the tool maintains continuous movement during cutting, preventing overheating and preserving tool longevity.
  • Tolerances: To ensure proper fit, a small gap needs to exist between mating parts to allow easy assembly and also accommodate rooms for glue. In CNC work, it’s common to leave a gap of ~0.01mm per side of the joint. Although this provides a tight fit, it relies on the accuracy of the machine and sharpness of the tools. If the tools are dull, resulting in a less clean cut, or the machine’s accuracy is compromised, it may be necessary to increase the gap to 0.2 - 0.3 mm per side, but this value is ofcourse depending on the characterization of your CNC machine.
  • Material Stock: Variations in material thickness also impact the fit of CNC cut joints. Toolpath programming is done for a specific thickness, and any deviation can affect the fit.

Designing for CNC Milling Production

Inspiration

First, I started off with brainstorming of what I want to make for the week. I decided to make a fun wiggly bedside table for my room. Here’s my pool of inspirations:

1-0-inspirations

Process: 3D Modeling Bedside Table with Onshape

As usual, I will be designing my 3D model with Onshape. In prior assignments, I’ve already explained general workflows of 3D modeling and how to do parametric design for press-fit construction in Onshape. So here, I’ll dive deeper more into the design rules you need to set for CNC milling production.

Setting Parametric Variables

First of all, we need to set the parameters for our design, just like we did in the W3 compouter-controlled cutting assignment. The difference is here, we also need to account for our milling bit’s diameter for designing the corners. So, overall, you need to set these parameters for CNC router milling production:

  • Product-related: overall dimensions of the object’s width and height
  • Material-related: material thickness
  • Milling Tool-related: the tool diameter/radius of the milling bit that we will use
  • Tolerance: the ‘gap’ dimension that we prepare to ensure proper fit of our joineries

Initially, I set mine to this, but again these values are not fixed and customizeable.

1-4(1)

Throughout the overall design & production journey, I changed these values several times according to changes of machine setups, materials, etc. In the end, these are what changed

  • table Height > 600 mm
  • material thickness > 15.5 mm
  • tolerance > 0.15 mm

Modeling the Parts

For the bedside table, there are 3 main parts that I need to design: the table top, the legs, and the middle shelf. Now, you can just follow the step by step process shown below

  • Modeling Part 1: Table Top

    Start by making a sketch plane of how you want to design the table top. For me, I wanted to make it like a flower or 4-leaf clover shape. Next, you can make a rectangle and then set the overall size of the table top by applying the tableWidth value in the dimension. After that, you can draw the shape of the flower by using circle or arc features. Make sure to apply relevant constraints where needed, like coincident, tangent, vertical, or horizontal constraints.

    1-4

    Once you’re done with your sketch plan, just extrude (shift+E) it and then put materialThickness parameter’s value for the depth.

    1-5

  • Modeling Part 2: the Curly Legs

    Next, we need to design the legs. The legs actually consist of two parts that will be interlocked with a mortise and tenon joint. Here, I will show you how to design one part.

    1-2

    First off, start by making a defined and constrained sketch plan of the curly leg structure. Draw a rectangle and determine the overall dimension of the leg structure by putting the tableHeight and tableWidth in the dimension. Then, make a working scaffold by dividing the rectangle into grid of 3x2, specifying each of the grid height by putting tableHeight/3. This will be the basis for our curvy edges.

    1-6(2)

    Next, create the curvy edge of the leg structure using the arc feature. Make it contact the outer line of the grid scaffold using the tangent constraint. Don’t forget to apply other necessary constraints, such as equal (e) (to ensure all curve radii are the same), coincident (i) (to tie the curve midpoints to the midpoints of each grid box to ensure they match our predefined table width value), and horizontal/vertical/parallel constraints wherever needed.

    1-7

    Next, offset the outer lines of the curvy leg structure inside. Put legWidth value as the dimension.

    1-9

    Since the lines are not automatically connected, when we offset, the spline will also not automatically reapply. Therefore, connect the offset lines with another arc and join the remaining unconnected lines using the extend or drawing spline feature.

    1-10

    Once we’re done with the sketch of the leg structure, just extrude (E) it and put the materialThickness value for the depth of extrude.

    1-11

    Because in the end the legs will be attached to the table top, but there will also be a shelf in the middle, so we have to make an opening for the middle shelf to go through. To do that, we can always make a sketch, on top of a body. So, make a sketch of the area that you would like to remove/add and then use an Extrude > Remove and Extrude > Add feature to adjust the leg.

    1-12

  • Modeling Part 3: Shelf

    Using the same workflow as above, you can model the middle shelf. Basically, it’s only an extruded circle plane with dogbone joints.

    1-18

Designing Joineries

Assessing Joinery Types

Once we have all the parts ready, next step is to put them together. Before we can model the joinery, we need to see where the connections are happeninng and which type of joints are required. There are many types of joineries for woodworking. After asssessing which type of joineries I need, turns out a simple mortise-tenon joint is enough for my design. But one is with a pocket-type (invisible from above) and the other one is half-lapped type. If you want to explore different types of woodowrking joineries, this page does a great job of explaining CNC Cut Wood Joinery..

Dogbones

As I’ve mentioned above, CNC routers cannot cut perfectly sharp corners due to its cyllindrical routing bits. Therefore, joints need to be designed with rounded corners to accommodate this limitation. This ‘rounded corners’ also ensures that the tool maintains continuous movement during cutting, preventing overheating and preserving tool longevity.

  • Dog Bones v1

    1-16

    1-17

  • Iteration: Dog Bones v2 -optimized rounded corners

    1-14a 1-14b 1-14c

    Dog bones Result:

    1-3

Assembly

  • Assemble the legs

    1-19 1-20

  • Inserting the Middle Shelf

    1-21 1-22

  • Placing the Top

    1-23

Generating Toolpath with Fusion CAM

CAM software generates toolpaths based on the CAD model and defines machining strategies such as roughing, finishing, drilling, and contouring.

There are many CAM softwares for generating toolpath out there, like Fusion CAM, MODS, Kiri:Moto. andSince I’m designing my model in Onshape, at first, I tried to look if there’s any CAM featur there. Unfortunately, and at the moment, there is no CAM features on Onshape yet, but you can install external plugin, such us Kiri:Moto. I’ve tried to explroreit for a bit, but I think it’s still under development as well, so for the toolpath generation I’m going to use Fusion 360 CAM feature as it is already very established and user friendly to use.

Import model into Fusion CAM

  • Export your Onshape file into .STEP files. And load it to Fusion360.
  • Once loaded, move from design to manufacturing workspace (Design > Manufacture)

    Alt text

  • Once you are in the Manufacture workspace, go to Setup > Create Manufacturing Model. Here, you can edit the layout and arrangement of your model for manufacturing purposes. If you want to edit your original design, you can go back to the Design workspace and edit there. Any changes in the deisgn workspace will automatically sync with your manufacturing model.

    Alt text

    This is how I arranged my piece adjusting to the material stock condition.

    Alt text

Setup: Material Stock & Work Coordinate

  • Go to Setup > New Setup > Stock
  • Here you can see it automatically calculate the minimum dimension requirement of material stock. By default, it will offset the material 1 mm to all sides, including the top. But since we’re not adding any material in the bottom/top, set the Stock Top Offset to 0

    Alt text

  • Next, move to the Setup tab Setup > New Setup > Setup and move the work coordinate from the centre by clicking the cooridnate axis to where you want to start the milling job.

    Alt text Alt text

  • Click OK

Setup: Toolbit

  • Go to Manage > Tool Library
  • And click on the + symbol to create new tool setting

    Alt text

  • Next, input the specification of the millling bit that you’re going to use in the Cutter tab. We’re using a 6mm diameter carbide endmill, 1 flute, with an overall length 0f 60 mm.

    Alt text

  • Next, specify its cutting movement setting in the Cutting Data tab.

    Alt text

This is the setting that we’re ended up using to speed up the milling job. However I must say that this setting is quite aggressive. If you want a longer milling bit shelf life, you might want to use a more conservative setting.

Setup: Operation

2D Pocket

In the end, I decided to edit one of my joineries to become an invisible dogbone joints. This joint will be located inside the outline cut. Therefore, I’m going to use the 2D Pocket feature.

  • To do that, go to 2D > 2D Pocket

    Alt text

  • A window box will open. In the Tool tab, select the toolbit that we already set before. All the settings of the toolbit will be automatically loaded.

    Alt text

  • In the Geometry tab, select the faces of the joineries pocket.

    Alt text

  • In the Passes tab, tick the Multiple Depths checkbox and input the value for maximum stepdown (depth of cut).

    Alt text

Here, we set it to 5mm. But this is a little bit aggressive but results in faster cutting time. Ideally, you want to set the maximum depth no more than your endmill diameter size / 2 per pass to preserve your milling bit.

2D Contour for Outline Cutting

For the outline cuts, we’re going to use the 2D Contour operation feature.

Alt text

  • The workflow is pretty much the same like the 2D Pocket feature. The only difference is that here, instead of selecting the faces, you select the edges_of the body.
  • Furthermore, you can also add tabs. You can choose the positioning method based on segment in order to make the tabs position more regulated in the middle of each of the edge body.

Alt text

Generate Toolpath

  • If you’re done with your setting. You can generate the toolpath by going to Actions > Generate (cmd + G). Now, you should see able to see the generated toolpath in the model.

    Alt text

    Alt text

Here, you can also already see the estimated job operation. In total, it will take around 14 minutes 15 seconds to cut mine.

Simulate

  • You can also simulate its milling operation by going to the Actions > Simulate

Export G-Code

Next, you can just export the toolpath data as G-code, which the CNC machine can read. To do that, go to Setup > Create NC Program > Select 2 Operations Setup (2D Pocket and 2D Contour) > Post. Make sure you choose the indended file type in the Settings tab before posting the file.

Alt text

CNC Milling Production

Specifications

  • Material: MDF HRFM

    Alt text

  • Machine

  • Milling Bit

    Alt text Alt text

    • Up Cut: means that the cutting edge spirals upward, which helps to pull the chips (cut material) up and out of the cut, minimizing clogging and providing a cleaner cut
    • Endmill diameter: 6 mm
    • Flute Length: 32 mm
    • Shank Diameter: 6 mm
    • Overall length: 60mm
    • Flute: 1

Setup

  • Install milling bit

    Alt text

  • Material Setup and Fixturing

    Fixturing is another critical aspect, as the workpiece must be held securely while the tool moves.

    Fixturing for test cut: used/small material stock

    Alt text Alt text

    Fixturing setup using clamp for new material stock

    Alt text Alt text Alt text

Milling

Milling Result:

Alt text

Alt text

After milling you can take out the pieces and do post-processing such as sanding and cutting the tabs with files if needed.

Assembly

Cut Tests Journey

  • Test 1: doesn’t not fit at all

    Alt text

  • Test 2: too loose

  • Test 3: getting there

    Alt text Alt text

  • Test 3: nice press-fit!

    Alt text Alt text

  • Test 4: pocket test

    Alt text Alt text Alt text

  • Test 5: Changed material and endmill

Reflections

Here’s what I learned from this week’s assignment

Things to consider when designing for CNC Milling:

  • Tools: Unlike saw blades, CNC machines typically use router bits, which can cause more tear-out at the edges of pieces. This makes careful setup crucial to ensure the tool approaches the workpiece correctly. Additionally, router bits exert more force on the workpiece than saw blades, requiring stronger fixturing to hold the workpiece securely
  • Corners: CNC routers cannot cut perfectly sharp corners due to its cyllindrical routing bits. Therefore, joints need to be designed with rounded corners to accommodate this limitation. This ‘rounded corners’ also ensures that the tool maintains continuous movement during cutting, preventing overheating and preserving tool longevity.
  • Tolerances: To ensure proper fit, a small gap needs to exist between mating parts to allow easy assembly and also accommodate rooms for glue. In CNC work, it’s common to leave a gap of ~0.01mm per side of the joint. Although this provides a tight fit, it relies on the accuracy of the machine and sharpness of the tools. If the tools are dull, resulting in a less clean cut, or the machine’s accuracy is compromised, it may be necessary to increase the gap to 0.2 - 0.3 mm per side, but this value is ofcourse depending on the characterization of your CNC machine.
  • Material Stock: Variations in material thickness also impact the fit of CNC cut joints. Toolpath programming is done for a specific thickness, and any deviation can affect the fit.

Design Files