7. Computer-Controlled Machining

This week I designed and fabricated a flat-pack plywood stool (~450 mm tall) on the lab's large-format CNC router. The individual assignment has two parts: demonstrate 2D design development for CNC milling production, and describe the workflows and operations for large-format CNC machining. My project uses press-fit cross-lap joints — three unique parts, no screws or glue.

Assignment checklist

  • Linked to the group assignment page
  • Demonstrated 2D design development for CNC milling production
  • Described workflows and operations for large-format CNC machining
  • Reflected on lab safety training and group characterization results
  • Documented problems encountered and how I fixed them

Project overview

The stool consists of a round seat and two leg panels that cross-lap together. All dimensions are driven by user parameters in Fusion 360 so I could adjust material thickness and joint clearance after the group characterization tests without redrawing geometry.

DimensionValue
Seat diameter360 mm
Overall stool height450 mm
Material thickness (wood_thick)18.288 mm (measured on sheet: 18.3 mm)
Slot width (with clearance)wood_thick + clearance
Cross-lap slot depthHalf of leg height
Sheet layoutNested on HDF half-sheet (1220 × 610 mm)

Group assignment

Before cutting final parts, our group completed CNC safety training and characterised the Tiancheng Xinli 3STX-1325A router (1300 × 2500 mm working area) on 18 mm HDF. We tested runout, alignment, fixturing, speeds, feeds, materials, and toolpaths, and recorded recommended parameters on the group page:

Week 7 Group Assignment — Chaihuo Fab Lab

Key numbers I applied directly to my individual project:

ParameterGroup resultHow I used it
Measured board thickness 18.3 mm (nominal 18 mm) Set wood_thick from caliper reading, not the label
Kerf ≈ 0.4 mm Added clearance to receiving slots in the 2D layout
Press-fit slot offset −0.4 mm per side Tuned slot width after a scrap test cut
Dog-bone radius Bit radius (3 mm for 6 mm tool) Added at all internal corners in the 2D sketch
Recommended feeds 24 000 rpm / 2000 mm/min / 6 mm per pass Used as starting values in MasterCAM
Tabs 3 mm tall × 5 mm wide at corners Kept parts attached until the outer contour finished

Personal reflections

CNC machining felt very different from laser cutting (Week 3). On the laser, kerf is small and a 0.1 mm tolerance is often enough; on the router, a 6 mm end mill removes much more material, the board can flex over a 2.4 m bed, and Z-zero must be set to the actual top surface — not the machine bed.

The group test that changed my design approach most was measuring real board thickness. Our HDF sheet read 18.3 mm, not 18.0 mm. Designing slots from the nominal size would have made assembly impossible. Parametric parameters let me update one value and regenerate both the 3D model and the 2D nesting layout.

Safety training with instructor Matthew reinforced habits I kept throughout the job: dust collector on before start, no loose clothing near the spindle, board fully screwed down before the first pass, and never leaving the machine unattended.

2D design development for CNC milling production

I followed a parametric flat-pack workflow in Fusion 360 — similar to the approach in Taylor Stein's flat-pack furniture tutorial. The goal was a robust 3D model that exports clean 2D profiles for MasterCAM, with joint clearance and dog-bone fillets built into the design rather than patched after the first cut.

Design concept

I chose a round-top stool with two crossed leg panels. Each leg has a slot from opposite ends so the panels interlock; the seat drops over the crossed legs through matching slots. Decorative arch cutouts on the legs reduce weight and give the piece a lighter look.

Early stool concept render

Early concept render — round seat with two crossed leg panels.

Step 1 — Set up user parameters

I created user parameters before sketching so every dimension could update from a single table:

ParameterExpressionPurpose
Seat_diameter360 mmRound seat diameter
wood_thick18.288 mmSheet thickness (linked to extrude depth)
clearance0.2 mmJoint clearance (tuned after group kerf tests)
stool_height450 mmOverall stool height
tool_diam6 mmEnd-mill diameter for dog-bone fillets
slot_widthwood_thick + clearanceCross-lap slot width
slot_depth(stool_height - wood_thick) / 2Half-lap depth
Fusion 360 user parameters linked to seat geometry

User parameters Seat_diameter and wood_thick drive the seat sketch and extrude — changing one value updates the whole model.

Step 2 — Model each part in its own component

  1. Seat component — Sketch a circle (Seat_diameter) on the bottom plane, extrude to wood_thick. Seat component extruded in Fusion 360

    Seat component: circular sketch extruded to wood_thick.

  2. Leg component — Create a new component, activate it, and sketch the leg profile on a side plane. Use Project to reference the seat edge so slot positions stay linked to the seat diameter. Projecting seat geometry into leg sketch

    Projecting seat geometry into the leg sketch with Projection Link enabled — if the seat size changes, the leg slots update automatically.

  3. Cross-lap slots — Sketch slot rectangles dimensioned with slot_width and slot_depth. Mirror about the centre line for symmetry. Cross-lap slots in leg component Cross-lap slots in leg component Cross-lap slots in leg component
  4. Second leg (Paste New) — Copy the leg component with Paste New (not Paste) so the two legs are independent instances. Rotate 90° and move the slot to the opposite end so the panels interlock top-to-bottom. Second leg created with Paste New
  5. Seat slots — Sketch two perpendicular slots through the seat centre, each dimensioned with slot_width, so the seat drops onto the crossed legs. Seat slots in seat component Seat slots in seat component
  6. Dog-bone fillets — At every internal 90° corner, sketch a dog-bone relief: 45° construction line, circle diameter = tool_diam, centre offset = tool_diam / 2 from the corner. A round bit cannot reach a true square inside corner; without this relief, the mating tab will not seat fully.

Step 3 — Assemble and verify in 3D

  1. Joint the two leg panels at 90° and confirm the cross-lap slots align.
  2. Place the seat on top and run Inspect → Interference to check for clashes.
  3. Change wood_thick to 18.3 mm (measured value) and confirm all joints still fit.
Completed flat-pack stool assembly in Fusion 360

Final parametric assembly — Seat, Leg, and Leg (1) components ready for 2D export.

Step 4 — Export the 2D nesting layout

I exported the flat profiles from Fusion 360, arranged them for cutting, and prepared the file for MasterCAM:

2D nesting layout in Fusion 360

Flat profiles projected and arranged in Fusion 360 before export.

  1. Create a CuttingLayout component with a sketch on the XY plane.
  2. Project each part's outer profile, slot, and dog-bone geometry into one sketch.
  3. Arrange all parts within 1220 × 610 mm with ≥ 10 mm spacing from edges and between parts.
  4. Export the sketch as a .dxf file.
  5. Import the DXF into LaserMaker to verify nesting and part spacing, then prepare the layout for the CNC workflow. Nesting layout in LaserMaker DXF export from LaserMaker LaserMaker nesting preview
  6. Import the final layout into MasterCAM X6 for toolpath generation and G-code posting.

The 2D layout is the production file — MasterCAM reads these profiles, assigns toolpaths, and posts G-code for the machine controller. Designing dog-bones and clearance in the sketch (not just in CAM) keeps the parametric model and the cut file in sync.

Workflows and operations for large-format CNC machining

The Chaihuo CNC router is a Tiancheng Xinli 3STX-1325A with a 1300 × 2500 mm bed, 3 kW water-cooled spindle (0–24 000 rpm), and G-code controller. Below is the full workflow I followed from CAM setup through assembly.

Safety training

TopicRule
Personal protectionSafety glasses, hearing protection, closed-toe shoes; no gloves or loose clothing near the spindle
Emergency stopKnow E-stop and main power disconnect location before starting
Dust collectionTurn on extraction before every job — fine wood dust is a health and fire hazard
FixturingBoard must be fully secured with screws into the sacrificial bed; a loose sheet is a safety hazard
SupervisionNever leave the machine running unattended; stay within reach of the E-stop
Tool handlingInspect the bit for chipping or wobble before running; never touch the cutter immediately after a job

Material preparation

  1. Selected an 18 mm HDF sheet (1220 × 2440 mm) and cut it to half-sheet (1220 × 610 mm).
  2. Inspected for warping, delamination, or surface defects.
  3. Measured actual thickness with calipers: 18.3 mm — updated wood_thick in Fusion 360 and re-exported the DXF.

CAM setup — Mastercam Mill X6

I designed and built an interlocking round stool from 18 mm MDF — two cross-lapping leg panels and one circular seat, friction-fit with no glue or fasteners. All three parts were nested on one sheet. CAM was done in Mastercam Mill X6 (JENNYCNCAPR21-FIXED.MCX-6), posted as JENNYCNC.nc (~16 500 lines) for the Tiancheng Xinli controller.

Steps 1–3 — Geometry, contour toolpath, chain selection

Closed 2D profiles (polylines and arcs) define the leg outlines, cross-lap slots, and circular seat. I used Toolpath → Contour (外形铣削) and selected closed chains — outside for part outlines, inside for slots. Slots were cut first to keep the sheet rigid; outer profiles last with holding tabs.

Mastercam interface with Toolpath Manager Chain selection for contour toolpath Second contour operation in Toolpath Manager

Mastercam setup: 2D geometry, contour toolpath type, and chain selection.

Steps 4–6 — Tool, cut parameters, and linking heights

ParameterValueNotes
End mill8 mm flat end mill2-flute; fits slot width, efficient in MDF
Spindle speed15 000 rpmCoolant / dust collection ON
Feed rate (XY)5000 mm/minFPT ≈ 0.083 mm (conservative for MDF)
Plunge rate (Z)500 mm/minRamp entry 3.0 mm depth / distance
CompensationComputer, leftClimb milling; outside / inside per feature
Wall stock to leave−0.2 mmSlight overcut for snug friction fit
Clearance / retract50 / 25 mmFeed plane 3 mm above stock
Final cut depth−18.2 mmThrough 18 mm MDF + 0.2 mm into spoilboard
Tabs3 mm × 5 mm at cornersNon-joint areas only
Tool selection in Mastercam Cut parameters — ramp entry and wall stock Linking parameters and Z-height diagram

Tool, cut parameters (ramp entry, −0.2 mm wall stock), and linking heights.

Steps 7–8 — Preview and post-process

I verified the generated toolpath — cyan tool-centre path offset ~4 mm outside geometry, yellow rapids, and ramp lead-ins — then post-processed to G-code (G21 metric, G90 absolute). Sample header: T1 M06, S15000 M03, G43 H01 Z50.0, multi-pass depths to −18.2 mm.

Toolpath preview on seat geometry

Toolpath preview: geometry (dark), tool centre path (cyan), rapid moves (yellow).

Machine setup, cutting, and finish

  1. Secured the MDF sheet to the sacrificial bed; set X/Y zero at front-left corner and Z zero on the board top surface.
  2. Loaded JENNYCNC.nc via USB; ran dust collection and spindle at 15 000 rpm.
  3. Executed pocket/contour operations (~3 mm per pass × 6 passes). Total time: ~15–20 minutes.
  4. After the job: vacuumed, broke tabs, sanded edges with 120-grit paper.
CNC router cutting the stool parts Cut parts removed from the sheet

CNC cutting in progress and parts after tab removal.

Assembly

  1. Cross-lap the legs — Slide Leg A (slot from top) and Leg B (slot from bottom) together at 90° to form an X-shaped base.
  2. Attach the seat — Align the cross-shaped slot with the leg tabs and press down; friction fit holds everything — no glue or screws.
  3. Load test — All four feet touched evenly; the stool held ~70 kg without wobble.

Problems and how I fixed them

Problem 1 — Slot too tight on first test

A scrap test cut with slot_width = wood_thick (no clearance) produced a joint that could not be assembled without excessive force.

Fix

Added a clearance parameter (0.2 mm) so slot_width = wood_thick + clearance. Because the model is parametric, one change updated every slot in both the 3D assembly and the 2D layout.

Problem 2 — Inside corners blocked assembly

Without dog-bone reliefs, square inside corners on the seat slots prevented the leg tabs from seating fully — the round bit cannot cut a true 90° internal corner.

Fix

Added dog-bone fillets at every internal corner, radius = tool_diam / 2 (3 mm for the 6 mm bit), following the group assignment recommendation. Re-exported the DXF and re-cut.

Problem 3 — Shallow final pass

On the first full sheet, some areas did not cut fully through — the board was slightly warped and Z-zero was set at one corner only.

Fix

Re-zeroed Z at the board centre, increased final cut depth to −18.5 mm (0.2 mm into the sacrificial board), and confirmed the sheet was screwed flat before the second run.

Reflection and key takeaways

  1. Measure, don't assume. Our HDF was 18.3 mm, not 18.0 mm. Joint design must start from caliper readings.
  2. Parametric design pays off twice — once during iteration in Fusion 360, and again when adjusting clearance after the group kerf tests.
  3. Design for the tool. Dog-bone fillets, kerf compensation, and cut order (inside before outside) belong in the design file, not as afterthoughts in CAM.
  4. Test before committing material. A single scrap joint test saved a full sheet of HDF.
  5. Large-format CNC demands respect. Fixturing, dust extraction, and staying at the E-stop are as important as feeds and speeds.

Design files

← Week 6 Back to Assignments Week 8 →