Computer-controlled machining

This article is part of: fabacademy2020.

CNC machine ↓

Fab stool/bench/table ↓

Created 11/03/2020

Updated 11/03/2020

CNC machine 


For this week's assignement we have to characterise the CNC machine. This was done when we had the opportunity to return to the lab after the lockdown situation due to the COVID-19 pandemic.

I had a chance to team up with my classmates Tue Ngo, Arman Naraji, David Prieto and Lynn Dika for this group assignment.

On this page, I will highlight the key point of the process. Tue has detailed everything on her page, please feel free to go there for the full documentation.

Full documentation

Personal notes


Unfortunately, Fab Lab Barcelona uses RhinoCAM (~1500€), a plug-in for Rhino3D (995€), to perform this task. Paying ~2495€ for a propriatary software that students can't get unless they crack it is a very bad idea for me, especially in the context of Fab Labs. But Fab Lab Barcelona made this choice and configured RhinoCAM with all the necessary parameters to work with the RaptorX-SL, the big CNC.

I hope that open-source solutions will evolve robustly in the near future to counter this proprietary monopoly.



To mill something with the CNC, we first have to screw a wooden board onto the machine bed to make sure it won't move during the process. But as we don't want to mill on a screw, which can cause a fire, we first have to place the screws on our drawing and generate a G-code (Machining Operation > Engraving) just for that. Then another g-code (Machining Operation > 2-axis Profiling) has to be generated with our design only.

What we need to know

  • the thickness of the material we are going to mill, and its chip load value (the thickness of material removed by each cutting edge during a cut)
  • the diameter of the endmill and the number of flutes it has (the sharp slots that corkscrew upwards along the length of a milling bit)
  • the spindle speed at which the spindle of the machine rotates

Tool's feed and speed

Feed rate = N x CPT x RPM is the formula used to calculate the tool's feed and speed. Where feed rate is the speed at which the cutter engages the part, N as the number of flutes, CPT as the chip load and RPM as the spindle speed at which the spindle of the machine rotates.

Machining with the RaptorX-SL

We used the Raptor X-SL 3200/S20 machine and its software KinetiC-NC to do the test. The detailed specs of the machine:

  • Working area: 3,200 x 2,010 x 300mm
  • Clamping area: X -3,500mm x Y -2,200mm
  • Positioning speed X+Y/Z: maximum 40,000mm/min
  • Working speed: maximum 20,000mm/min
  • Step width X: 0.0213mm
  • Step width Y+Z: 0.0113mm


The Raptor CNC machine is impressive in power and size. It can carry out large projects, but it can also be dangerous, which is why it is important to observe the safety rules:

  • Wear safety glasses
  • know where the emergency button is located
  • switch on the ventilation

It is also very important to know and understand all the data we have to deal with. Running the machine too fast can damage the material and the machine itself, too slow can produce too much heat and start a fire, etc. With this giant machine you don't play with rules and mathematics.

Making the toolpath (g-code) is the big part of working with the CNC, and because of the Rhino software that I don't have, because I use Linux and open source software, I'm not very confident in the process. I'm looking forward to doing my personal project to have more time to absorb the knowledge we need to know. See you at the next step!

Fab stool/bench/table 

I wanted to have a stool/bench/table for my apartment, a kind of furniture that can be different things because of its dimensions. So I designed and fabricated it using the large CNC at Fab Lab Barcelona.

I designed it with parametric values. This process can be useful for everyone, to adapt the furnitures (or anything else) to their needs and the context in which it will be used.


I first designed this project on paper and then in Freecad, my favorite open-source software for 3D modeling.

The stool/bench/table consists of a seat, two legs and a stretcher.

front view
front view
top view
top view

Parametric values

I used parametric values in order to easily modify values such as the lengths of the seat, the height of the legs, the thickness of the material, the endmill diameter I will use, the length of the slots, etc.

Once the document is well organised and the values in the part design workbench call up values from the datasheet, changing the values automatically changes the rest. This allows me to design without knowing everything in advance, such as the diameter of the milling cutter that will be used to mill the project, and above all it allows the design to be adapted quickly and almost frictionlessly to new constraints.

Preparing for production


It is strongly recommended to take a tolerance value into account when working with a CNC machine. This is because the machine will not produce a perfect result and if the cuts are too tight, there is a good chance that it will be almost impossible to put the project together.

Tolerance detail
Tolerance detail

In this case I used a tolerance value of 0.2 mm. This means that there is an extra 0.1 mm on each side of the cut to make sure that the parts fit together.

Update: the tolerance value I used wasn't enough, I had to sand the mortises in order to join the different elements together.


Right angles are not accessible by the endmills, which will produce an undesirable result.

To avoid this, it is common practice to create dog bone shapes by adding holes the size of the endmill in the right angles. The space left by the cut will then correspond to the piece that is supposed to fit into it.


When the different parts are well designed, take into account the tolerance of the CNC and have dogbones shapes to ensure that the actual measurements will be as expected, export all parts in a technical drawing sheet at the correct scale (1:1). This sheet should be exported as a .dxf file and then imported into RhinoCAM.


File import

  • Import the .dxf file into Rhino
  • Join the different paths together and Group them to be sure that no lines will float alone

Box stock

  • Create a rectangle the size of your material 2,400 mm x 1,250 mm
  • Stock > Box stock and select the rectangle
  • Select Height
  • Corner coordinates 0, 0, 0
  • Dimensions 2,400 x 1,250 x 15

Screw marks

  • Copy the material rectangle and offset it by 20mm
  • Create Points along the offset line to fix the material
  • Add more Points around the critical part that could move during the process. If it is needed to add a screw inside a pocket, make sure to place two of them to avoid any rotational movement.


  • Create a new Tool
  • Flat mill downcut
  • Number of flutes: 1
  • Tool diameter: 6 mm
  • Tool length: 35 mm
  • Shoulder length: 32 mm
  • Flute length: 30 mm
  • Feeds & Speeds
    • Speed: 18000 RPM (the machine can operate between 18000 and 24000 RPM, but the minimum is enough)
    • Cut speed: 5500
    • Plunge, approach , engage, retract, departure: 2500 (cut speed/2)
    • Transfer: Use rapid (and set 10000 for RhinoCAM simulation)
  • Save the new tool

To calculate the Cut speed value, check the chipload value of the material (for plywood, using a 6mm endmill, range is .011″-.013″, according to this calculator). Then RPM * number of flutes * minimum value * 25.4 (in to cm) = minimum cut speed. Then do the same for the maximum value. Finally, use a value in the middle to ensure the happiness of the machine.

Engraving, pocketing, profiling

Do each step on a different layer.

  • Control geometry: select the appropriate zones and generate
  • Tool: select the previoulsy created tool
  • Feeds and speeds: Load from tool
  • Clearance Plane: Stock Max Z + Dist: 20 mm for the screws (this will prevent the tool from scratching the material, if it's bent, during its movements) , then 10 mm for the rest
  • Cut Parameters:
  • Tolerance: 0.03 mm for the screws then 0.01 mm for the rest
  • Stock: 0
  • Cut direction: Climb (Down cut)
  • Start Point: Inside or Outside depending on the design
  • Stepover Distance: 25 %
  • Cut levels
  • Total Cut Depth: 3 for the screws, then 15.5 (material thickness + margin) for the rest
  • Rough Depth Cut: 3 (3 mm on each layer, we don't want to force the tool)
  • Entry/Exit: None and None, this is not needed for wood'()
  • Advanced Cut Parameters (for the profiling)
  • Bridges: Rectangular
  • Bidge Height: 4
  • Bidge Length: 4
  • Number of brigdes: Depends on the design
  • Sorting: Minimum Distance Sort
  • Generate

Export to G-code

Two files must be exported. The first one contains the screw data, which we will run first. Then all the other operations (pocketing, inner profiling, outer profiling) on the second file, which we will launch once the material is screwed to the machine bed.

  • Right click on a operation > Post
  • File name: something like 01-screws-6mm or 02-6mm
  • Save as type: *.nc
  • Current post: CNC_STEP_BCN (which contains all the information about the specific machine I will be using)


  1. Mount the material on the machine bed
  2. Mount the desired endmill and tighten it properly
  3. In the machine software (KinetiC-NC) go to Jog/Setup, move to zero position
  4. Set the Z position using the mechanical button: put the large button under the endmill and set the Z, the sotftware will know what the correct Z value is
  5. Run the first file to obtain the srew positions on the material
  6. Screw the material to the machine bed
  7. Re-set the Z because the material should be lower than before now that it is properly fixed
  8. Run the second file containing all the other instructions
  9. Cut the brigdes using an hammer and a chisel
  10. Unscrew the screws
  11. Sand the egdes of the pieces to obtain a nice result



It's really nice to design something knowing how it will be made afterwards. Designing with constraints, understanding the material and taking into account all the little details that can make a difference. That's part of the reason I'm doing this Fab Academy. CNC is a wonderful machine that can produce all kinds of results, and I'm looking forward to discovering them all.

At first it was intimidating. The machine is powerful and can be harmful if not used properly and there is a wide range of settings to know and understand to produce the right instructions for the machine (G-code). But once all this is demystified, all that remains is fun and new possibilities.