Design & Build for CNC Milling Production¶
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:
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.
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.
Once you’re done with your sketch plan, just extrude (shift+E) it and then put materialThickness parameter’s value for the depth.
-
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.
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.
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.
Next, offset the outer lines of the curvy leg structure inside. Put legWidth value as the dimension.
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.
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.
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.
-
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.
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
-
Iteration: Dog Bones v2 -optimized rounded corners
Dog bones Result:
Assembly¶
-
Assemble the legs
-
Inserting the Middle Shelf
-
Placing the Top
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)
-
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.This is how I arranged my piece adjusting to the material stock condition.
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
-
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. -
Click OK
Setup: Toolbit¶
- Go to
Manage > Tool Library
-
And click on the
+
symbol to create new tool setting -
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. -
Next, specify its cutting movement setting in the
Cutting Data
tab.
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
-
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.
-
In the Geometry tab, select the faces of the joineries pocket.
-
In the Passes tab, tick the Multiple Depths checkbox and input the value for maximum stepdown (depth of cut).
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.
- 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.
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.
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.
CNC Milling Production¶
Specifications¶
-
Material: MDF HRFM¶
-
Machine¶
-
Milling Bit¶
- 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
-
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
Fixturing setup using clamp for new material stock
Milling¶
Milling Result:
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¶
-
Test 2: too loose¶
-
Test 3: getting there¶
-
Test 3: nice press-fit!¶
-
Test 4: pocket test¶
-
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.