ReDo parts are measured in cells of 10 mm. A block is 1, 2 or 6 cells long; a plate is 4 × 3 cells. Because every part is a whole number of cells, any two of them can sit side by side or on top of each other with their holes lined up.
Where the holes go
- One hole in the middle of every cell: 5 mm from the edge, then every 10 mm.
- A block has holes right through it in all three directions, so it can be fastened from its top, its sides or its ends.
In ReDo.Core, span(n) is the length of n cells and hole_at(i) is the middle of cell i:
include <redo_constants.scad>
difference() {
cube([span(3), span(2), 5]);
for (i = [0 : 2], j = [0 : 1]) translate([hole_at(i), hole_at(j), 0]) hole(THRU_HOLE_D);
}

Smaller steps for printed parts
Where a printed part cannot be a whole number of cells, its sizes fall on 7.5, 5 or 2.5 mm, never an odd size like 7.19 mm. The same goes for how far one face sits from the part it meets.
- Plates come in three thicknesses: 2.5, 5 and 10 mm.
- A round part is drawn 0.2 mm under its size, so a 10 mm shaft is 9.8 mm and fits a 10 mm hole.
What is not on the grid
- A bought part keeps its own sizes. A servo or a circuit board is what it is; the case or bracket around it is rounded out to the grid.
- A rod is cut to the gap it spans, so its length is free.