Skip to content

Computer-Controlled Machining

Table and Stand Design with CNC Machining

For this week's assignment, I designed a table and stand with five curved legs using Fusion 360 and then prepared it for CNC machining using Aspire. The final design features outward-curving legs that connect to both a top and bottom circular platform.

Designing in Fusion 360

Understanding Parametric Design

To create this design, I utilized Fusion 360's parametric design capabilities. Parametric design is a process where you define parameters (user-defined variables) that control the dimensions and properties of your design. These parameters are useful because they allow you to make changes to your model quickly and efficiently without having to manually edit each individual dimension. What makes parametric design so powerful is that if you change a parameter value, all features that depend on that parameter will automatically update. This is particularly useful when designing multiple similar components, as you can create one component with parameters and then easily modify it for different versions or variations. For example, if I needed to change the material thickness across my entire table design, I could simply update one parameter and all five legs would automatically adjust to match.

Creating the Leg Component

To start the design process, I decided to make the leg as a separate parametric component and create the other four legs as copies later. This approach allowed me to refine the leg design and then duplicate it efficiently across the entire assembly. Working with a single component first meant that I could test and perfect the design before committing to the full assembly.

To create the leg, I needed to define several key parameters that would control the leg's geometry. I started by thinking about what aspects of the leg needed to be adjustable. The leg features a curved shape that extends both upward and downward, and it needs to connect to both the table top and the table bottom through joinery. With this in mind, I defined the following parameters:

  • Radius_Right - Controls the curvature on the right side of the leg
  • Radius_Left - Controls the curvature on the left side of the leg
  • Leg_Top - Defines the length of the top section of the leg that connects to the table top
  • Leg_Bottom - Defines the length of the bottom section of the leg that connects to the table bottom
  • Joint_Width - Controls how wide the joint is that connects to the table top and bottom
  • Material_Thickness - Defines the joint length, which translates directly to material thickness

These parameters allowed me to easily adjust the leg design without manually changing individual dimensions. I created the leg profile by using curves and then extruding them to create the joinery slots. The key insight here is that by linking all these dimensions to parameters, I made it so that if I needed to change the material thickness, I could simply update the Material_Thickness parameter and the entire leg would adjust accordingly.

Leg Component Parameters

Final Leg Component

Creating the Table Top

Once the leg was complete and I was satisfied with its geometry, the next step was to create the table top as a separate component. To start, I created a new component by clicking File > New Component. I sketched a circle with a diameter of 14 inches, which would serve as the outer profile of the table top.

The table top needed to accommodate the leg joints, so I had to create 5 slots that would hold the leg joinery. The size and position of these slots were critical because they needed to match the leg joints exactly. Rather than manually entering dimensions, I used the Insert Derive tool. This tool allowed me to pull parameters directly from the leg component into the top component. Specifically, I derived the Joint_Width and Material_Thickness parameters from the leg so that the slots in the top would automatically adjust if I ever changed those parameters in the leg.

When creating the slots, I had to arrange them in a circular pattern around the table top. I sketched each slot to match the dimensions of the leg joint, making sure they were spaced 72 degrees apart (360 degrees divided by 5 legs). This planning was important because it ensured that each slot would line up perfectly with its corresponding leg when I assembled everything later.

Table Top Parameters

Table Top Component

Creating the Table Bottom

Similar to the top, I created a bottom component as a separate parametric component. I started by creating a new component and sketching a circle, but this one needed to be larger to accommodate the curved legs. The bottom ended up having a diameter of 25.451 inches. Like the top, the bottom also contains 5 slots to fit the leg joints, and I used the Insert Derive tool to link the joint dimensions to the leg component.

The main difference with the bottom component was that it needed to be oriented differently. Since the legs curve outward, the bottom is positioned below the legs, which meant I had to think carefully about how the joinery would work from this different angle. However, by using the derived parameters, I ensured that any changes to the leg dimensions would automatically propagate to the bottom slots as well.

Table Bottom Parameters

Table Bottom Component

Assembly and Circular Pattern

With all the components created, the next step was to assemble them. To do this, I decided to try inserting the leg into the top component by right-clicking on the leg component and selecting Insert into Current Design. This action prompted me with a dialog screen that asked whether I wanted to create a new assembly or convert the top design to an assembly. Since I wanted to keep the top as a standalone component and have a separate assembly that contained all three components, I chose to create a new assembly.

Once the new assembly was created, I positioned each component in the correct location relative to the origin. I inserted the top component at the top, the bottom component at the bottom, and a single leg component in the center. This gave me a starting point where I could see how the components would interact with each other and verify that the joints aligned properly.

To create the five-legged design, I then used the Circular Pattern feature on the leg component. Rather than manually positioning each leg, I right-clicked on the leg component in the model tree and selected Circular Pattern. This opened a dialog where I could specify the number of copies I wanted (4 additional copies, making 5 total) and the center axis of the pattern. I set the pattern to repeat around the Z-axis so that the legs would be evenly distributed around the table. Fusion 360 then automatically created 4 duplicate legs spaced equally around the center axis, with each leg rotated 72 degrees from the previous one.

With the legs properly distributed around the top and bottom, I was able to verify that each leg joint matched up with its corresponding slot. The parametric design meant that all the dimensions were already aligned, so the assembly came together without any gaps or misalignments. Everything fit together perfectly, which was a testament to the power of parametric design and derived parameters.

Exporting for Machining

Once the Fusion 360 design was complete and I was satisfied with the assembly, I needed to export it in a format that the CNC machine could understand. I exported the design as a .dxf file, which is a standard file format for CNC machines and CAM software. To do this, I navigated to File > Export in Fusion 360 and selected .dxf as the file format. This gave me options to choose which components to export and how to organize them in the file.

Before exporting, I made sure to flatten the design or export it in a way that would work with the CNC software. The .dxf file preserves all the geometry from my Fusion 360 design, including the leg profiles, the circular top and bottom, and all the joinery slots. With the .dxf file exported, I then loaded it into Aspire to prepare the toolpath for CNC machining.

Aspire and Toolpath Preparation

[This section will be completed in a separate documentation update]