This page is an archive of iMAL's wiki that operated between 2012 and 2022. It documented projects, residencies and workshops mostly taking place at iMAL's Fablab.

Older & newer Fablab projects are now found at

CNC Milling: Introduction to Deskproto


DeskProto will allow you to machine 3D geometry (STL file), 2D drawing (DXF file, AI, EPS) as well as 3D reliefs based on photos (any bitmap file). It is not possible to create new geometry in DeskProto (it is not a CAD software).

Typical steps to create a NC program: Import geometry (Files or formats like .stl or .dxf) – Edit geometry (translate, rotate etc) – Enter milling parameters (strategy, type of cutting tool, speeds, precision, etc).

Then DeskProto will calculate the resulting milling paths that you can export creating a .cnc file.

This file uses Gcode, computer numerical control (CNC) programming language. It’s basically a series of instructions on where, how fast and through what path the cutting tool has to move. The most common situation is that a cutting tool is moved according to these instructions, cutting away excess material to leave only the finished workpiece. 

Finally you will import this file (.cnc) in wimpc to drive the fablab’s milling machine …

Compare geometry to toolpaths

Working with Deskproto at the beginning is a try and error process. Using its capabilities to simulate the resulting toolpaths, you can virtually try different strategies, tools and parameters before you mill the object with the fablab’s cnc machine. 

This is a very important point for all beginners: when you add, delete, change or edit any operation to the geometry, you have to visually monitor (with the view options) the resulting toolpaths that the cnc will make. This process of observing the differences between the original geometry (designed in a cad software) and the resulting toolpaths in deskproto, will guide you to understand if the cutting operations you are preparing, will correspond to the desired form you want to sculpt with the milling machine. This is the basic strategy to learn how to cnc milling.


original geometry geometry + resulting toolpaths

Chose to see geometry and / or Toolpaths in the View menu window to compare

Deskproto offers a straightforward wizard to quickly build your milling project. After you have completed the wizard, there are some manual settings that can be adjusted. For this tutorial we will review some basic configurations that you can do manually, avoiding the wizard for the moment. Once you have a quick review of the software’s editing possibilities, you can use the wizard at startup to configure easier and faster your milling projects. 

Basic Steps for 3D machining:

1. Checking the geometry

Once you load the geometry file you can check the geometry has shown in Deskproto to confirm that it’s as expected.

The dimensions can be checked using the button Geometry Information: the button on the DeskProto toolbar with the yellow [I].

An easy way to check the orientation is to use a predefined Views Layout: T/F/R/Def, in order to see four views: Top, Front, Right and default (3D).

2. Some parameters you can edit to make the right cutting operations.

In the Parameters menu you will see that three groups of parameters are present: a group called 'Project parameters', one called 'Part parameters' and another one called 'Operation parameters'.

You can edit all these parameters via the Project Tree: It can contain one project with one or several parts and for each part one or several operations.

2.1 Edit Project parameters

Project parameters:  You can basically edit the name of the geometry file and the names of all Parts.

2.2 Edit Part Parameters. 

Part Parameters define the geometry to be milled. A part can be an entire object to be milled, or a part of an object to be milled …  

When editing these parameters, in the general tab, you can check that the milling machine corresponds to the one you are using. If it’s not the case, you can change it here or using a more specific menu: Library of machines. In the Fablab we have the High-Z S-720, chose the default “High-Z S-1000” in the menu.

Other parameters you can change are the orientation of the model in the X/Y/Z axes. Defining the segment of the model you want to work on. Define the ambient around the model... etc

2.3 Edit Operation Parameters.

The Operation Parameters are the actual milling parameters, so the setting for the milling process.

Roughing, Finishing and Contouring are the typical operations when milling an object.

Roughing is meant to quickly remove material (using a large toolpath distance), finishing to create an accurate model with a smooth surface (using a small toolpath distance), and the final contouring will smoothen out most staircase steps that may be visible, using the strategy “Contour Only”.

Of course Roughing must be done before Finishing and Contouring, so in the “project tree” the sequence of operations can be defined from top to bottom (top = first, bottom = last).

2.3.1 General Tab

Which Cutter is best depends first on the geometry of the model. It is an optimization between many factors: - cutting speed (a larger cutter can remove material more quickly) - geometry characteristics (for freeform surfaces use a ballnose cutter, for horizontal and vertical surfaces use a flat tipped cutter). - Surface quality (a larger ballnose cutter will create a smoother surface) - small details (for small inner radii a small cutter is needed) - height of the model (small cutters are short) – you can also use the same cutter for all operations or do a tool change halfway the milling process.

The Library of Cutters, in the Options menu, is where you can define a new cutter, or modify an existing one to match your real tool.


Edit window of a cutter

Equally important are the Precision parameters. They determine the accuracy of the model, and also the time needed for both calculating and machining.

Same basic concepts to define the right precision are the Distance and Stepsize (Distance between toolpaths and Stepsize along toolpath):  

The first value is the distance between each toolpath. The second is the size of the linear movement, or step, of each toolpath.

These parameters are defined in values of d/x, which means the diameter of the cutter divided by a number x. For example if you chose a distance of d/3 for a ballnose tip of 6 mm diameter, the distance will be 2mm. Usually you should choose the same value for both parameters.

So the Precision (horizontal Distance between toolpaths) together with the Layer height (how deep the cutter may sink into the material) determine how much material is removed per toolpath. The default values of D/5 (precision) and half the cutting length of the cutter (layer height) will be OK for wood and tooling board. The default Speeds will do as well. For light materials (foam, light wood) precision D/3 will do, for materials like perspex and aluminum smaller values will be needed. You will have to find your own optimal values.

Finally it’s important to understand that the precision values used will be rounded. For example : In case the distance between the toolpaths is set to 1 mm and a cube of 10.5 mm has to be machined, then this is not possible as the resulting cube model will be either 10 or 11 mm (DeskProto will in fact make it 11).

Finally the Speed parameters depends in the material you chose in relationship with the chosen cutter.

For soft materials is "less important", but for hard materials these parameters are fondamental. The Best way to find the correct settings is to look on the web for "speeds and feeds chart". It's also eassy to find the formulas to calculate the proper values of these parameters. There are also software calculators. And finally most tool manufacturers will provide speed and feed reccomendations for their tools based on material ...


2.3.2 Strategy tab

A toolpath is a series of movements that the cutting tool follows as it removes material from the model.

They are created in Deskproto using imported CAD geometry. With the correct CAD geometry a combination of the toolpaths below will result in an efficiently milled and finished looking object.


Removes bulk of material from all surfaces.

The parallel toolpath moves the tool in equally spaced parallel passes in the X or Y plane across the surface. Like all rough toolpaths, it cuts the surface in several Z steps. Rough toolpaths are done with coarse tools and settings in order to remove material before cutting a finish pass with finer settings.

Detail settings for parallel are the following: Along X-axis means toolpaths parallel to the X-axis (so on constant Y), and Along Y-axis means toolpaths parallel to the Y-axis. For each of these two starting point are available: front versus back and left versus right. In addition an Angle with X-axis can be entered to create toolpaths that are not parallel to X and Y, but still parallel to one another.

This is the same as creating two operations where one of them uses parallel to X, and the other one uses parallel to Y. This option is useful in case the model you want to produce must have a very good surface quality: the staircase effect resulting from the parallel X toolpath will be removed by the parallel Y toolpath and vice-versa. 


The default Block strategy is optimal for most geometry, as it will minimize the number of positioning moves during the lower layers. When Roughing if the cutter moves in from the outside, at some point the remaining material in the center will be cut loose. That loose chunk of material may damage your model.

The Block strategy combines toolpaths parallel to X and Y to a sort of rectangular spiral. These are probably the most efficient toolpaths, very suited for roughing.


toolpath shows true circles, projected onto the 3D geometry. This strategy can very well be used for round geometries, like rings or cups.


Radial is the complement of circular: same Z-grid, radial toolpaths perpendicular to circular.

The radial toolpath cuts radial spokes out from a centerpoint. The spokes are arrayed every fixed number of degrees. As a result, the stepover and scallop height increase toward the outside. 

Although this is not a widely used toolpath, it can lead to some very interesting textures worthy of experiment.


Waterline machining produces toolpaths on a constant Z-level. They have a fixed Z-distance in-between each two toolpaths. Such strategy is also called contour machining or Z-plane machining. 


The last strategy Contour is the only who does not machine the complete part: only the outline of the geometry (outer contour) at ambient level is machined.  

The contour toolpath can be used to have the tool cut along a curve. The curve can be planar or 3D.

The contour toolpath can be used as a clean-up pass to remove scalloping from a previous surface milling operation, to smoothen the model.

2.3.3 Roughing Tab

Layer Height: instead of trying to remove all material at once, it will be done layer by layer. The default layer height equals the whole cutting length of the cutter. In most cases it is preferable to use a smaller custom-defined layer height, as with a tough material you do not want the cutter to use its total cutting length.

For light materials like foam the height can be equal or less than the cut length of the bit or cutter. For medium materials like mdf, plywood or solid wood it should be equal or less than the diameter of the bit.For strong materials like perspex or metal you will need to use smaller values.

(The first layer starts at the top of the segment. When your block is higher than the part you can set a Custom Part Segment with a higher Max Z value).

Skin thickness defines the depth of material to let and be removed during finishing. The default Skin thickness to use is 10% of the cutter diameter, which in most case will be OK.

For example, a 6 mm ballnose cutter and a soft wood you could use say 5 mm Layer and 0.5 mm Skin.

Finally The Ramping angle is used when starting to machine. Normally the cutter enters the material in a vertical downward movement. With this parameter you can cmooth how the cutters enters, to protect it from breaking.

After an roughing operation you always need a second operation which machines the same area more accurately: the finishing operation.

2.3.4 Borders Tab

In this tab you can edit how the cutter will work the contour of the part. It can work from the exterior, “extra for cutter” (all material inside the part will be leaved). From the center of the contour, “No extra”, cutter will cut half of its diameter inside and the other half outside of the part. And “Cutter stays within segment”, which means that the cutter makes the contour staying inside the part.

 Calculate Toolpaths

You can start the milling calculations by pressing the button Calculate Toolpaths. If the distance and stepsize are very small the milling calculations will take a more time. So while editing and testing different parameters, you can sometimes use momentarily bigger distance and stepsize values to go try things quicker in deskproto.  

The resulting toolpaths will be drawn in red lines. Now you can see the cutting movements that will be done by the cnc, the sequence of actions, the depth of the cutting … and above all, the resulting object that will be milled. You must edit all parameters until you see that the toolpaths will create the desired form.

To the milling machine

Once you have the desired form resulting from the toolpaths, you can export a .cnc file via the “write NC-program file” button.

2D Machining and Bitmap Machining

2D Machining is often used to engrave logos created as a 2D text, without depth information in the Z axe.

Original logo (2D text)

Original logo (2D text) + toolpath

You can best see the 2D toolpath as a pen-plotter operation: the pen (so here the cutter) will operate on two Z-levels. The pen will draw lines at pen-down level, and in-between it will make positioning moves at pen-up level. The same happens while 2D machining: the Machining level Z-value defines the pen-down level, and the Free Movement height on the third tab defines the pen-up level.

Bitmap Machining 

DeskProto has the ability to machine 3D reliefs based on Bitmap data. DeskProto converts the 2D bitmap information to a 3D geometry (a relief), and then calculates toolpaths over this geometry.

The conversion is in fact very simple: each pixel has a gray value, which can be black, white or some in-between shade of gray. This gray value will be converted to a Z-value. You need to define Z-levels for black and for white; all in-between Z-levels will be calculated automatically. This is called Gray-value to Z-height conversion.

Toolpath resulting form the image gray values analysis


This document is an attempt to make a quick introduction to the basics of cnc milling using deskproto. It has information from different sources; the main ones are the official reference manual and tutorial from deskproto. You can download the original documents at



Difficulty: ●●●○○


Last updated: August 2012