About: I have my own rapid prototype company.
Hello world!
Ever since I was very very small I love Lego. Those sweet memories of me and my mom sitting together on the floor surrounded by Lego's, following instructions and building our Lego city together. I have been playing with Lego since my first memories.
As I grew older I promised myself, like any other tinker person would. That one day I would make my own Lego's.

So now it is time to cash in on that promise.

I noticed that a lot of people like to cut up a.k.a. mess up Lego's for all sorts of USB projects and then some.
Like every other Lego enthousiast I consider this one of the largest sins ever. So "YOU PEOPLE" no need any more to destroy perfectly good Lego's, MAKE YOUR OWN. Of course when making our own Lego's you can make them out of all sorts of cool materials too; wood, steel, plastics, aluminum etc. etc.
The only thing we can not do is put the Lego trademark on our blocks, well you can but I do not want to infringe up on the Lego trademark.

Here is a time lapse of the build

Step 1: Aids, Tools and Materials

A bunch of new Lego blocks

Trusted CNC mill
Clamping tools
Swivel gauge (if any body knows the correct English name for this tool)
40mm face mill
2mm flat end mill
1mm flat end mill (optional)
Cleaning wheel and cleaning paste
Polishing rag and some polishing paste.

A block of something
(well I don't want to limit your mind here)
I will be using some aluminium scraps, or maybe some wood scraps, I'll decide later in this Instructable.

Step 2: The Measure of LEGO

General Lego is brilliantly simple designed. I have discovered one small change between my old Lego (20 plus years old) and my new lego. The stub size has been increased from 4.8mm to 4.9mm. 
As I have dug around the world wide web, I found quite some sites with measures of Lego.
I can only advise you to do your own measurements, mine work for me :-D

A Lego consists out of three basic parts, the Stub, the main body and the cavity in the main body.
Out comes the calliper. (All measures are the average of at least 3 measurements of the same part on different blocks)

The Stub has an outer diameter of 4.9mm and is 2.1mm high.
Stubs are spaced 8.014mm apart hart to hart, there is 3.114mm between each stub
The main body measures N times the diameter plus N times the space between the stubs minus 0.1mm. According to Lego there should be 100 microns between each block. I measured the same. So every block will be 0.05mm smaller on each side. 
(Ok atleast to my self it makes sense, I have included pics and files for a reason)

A full block of Lego has a main body hight of 9.6mm and a total hight of 11.7mm.

Mix the measures with Sketchup to create some virtual blocks, check out the file.

Please note that the extension of the Sketchupfile is wrong I put it here with an TXT so instructables lets me upload it. It should ofcourse have the extension SKP. I have not figured out why but every time i try to upload a different format than txt or jpg it gives me an HTTP error.  So please change the extensions of the data files.

Step 3: Mill Files

As you might have noticed in the Sketchup file, my Lego block is not as hollow as a normal Lego blok.
This is for two reasons, it is much stronger this way and you don't have to mill as deep with very small tools.
Usually the deeper you reach with the smaller tool the bigger the chance it snaps. A more sturdy block will allow for easier clamping without accidentally deforming the workpiece.
As of yet I have not decided what I will make my block out of, but I am leaning in the direction of Aluminium to make an extraordinary shiny block.

Work procedure:
First step is to face a precise block to the absolute external dimensions of our Lego block
This block will be 15.928mm x 31.956mm x 11.700 (15.93mm x 31.96 x 11.70 as of yet I can not reliably measure real microns so ten micron steps will have to do)

Second step:
Mill the stubs

Third step:
Mill the bottom cavities

Fourth step:
deburr and polish

The first file you need for this is a facing operation. A shallow wide cut to make your block the right dimensions.
I will use a 40mm face mill for this operation which can cut the entire block in a single pass. This is because I prefer to mount the longest side of the work piece to the Y axis bit mill in de X direction. (You find the file in the next step on instructables labled. 1step...)

In all the files you touche of on the surface of your block as Z=0. The left bottom corner of the model is x,y=0,0
The file allows you to cut away 1mm in 3 steps, one -0.9mm cut and two -0.05mm cuts this will give you a superbly accurate surface.

You can use this file on all sides of your block. If your block is some what small and for example only needs a 0.5mm deep cut, you can touch of on the surface of the block, move 0.5mm up and set that as Z=0. Use your Z=0 to give your block the right dimensions using a single milling program touching off 0 a set value above your acutal surface.
For example mil the side, between milling operations you measure your block is 0.085mm to large. 1-0.085= 0.915mm, Touch off on the surface of your workpiece, move up in the Z direction 0.915mm and set as Z=0.
I cut with 7500 rpm, 600mm/min 6 teeth 40mm indexable face mill, under cooling fluid. This is a light cut with a feed of 0.013mm.

Cutting the stubs, for this you can use the file labeled as 2Step.
Insert a 2mm flat end mill, again the top of your block is Z=0. I like to do an angular contour with a constant feed.
Your 2mm flatend mill will do 4 passes, 1 primary cut, 1 secondary cut with 0.8mm spacing and two finishing cuts with 0.05mm spacing. In a helical motion with a constant 1mm deep feed. After the stubs it will remove the rest material from between the stubs.

I cut with 7500 rpm 400mm/min 4 teeth 2mm coated carbide flat end mill. This is a medium cut for the tool with a feed of 0.013mm 1mm deep. I mainly wrote the programs this way so I am flexible in my material choice later.

Immediately after putting on the stubs my brain recognizes it as Lego.

Last is the bottom cavities. Step 3
I love consistancy, flip the block bottom side up in the clamp. And touch of the top (which is the bottom facing up) as Z=0, bottom left corner of the block is x,y=0,0
Same mill bit, same settings

All mill files have a TXT extension, this is because of problems I have with uploading. For some reason I get an HTTP error when uploading .NC files. But since they are basically txt files I re-extended them as txt. You can change this back to the NC extension after downloading.

Step 4: Facing

First cut a rough block of material, my first blocks will be made fom some aluminum scraps.
You will want a block that is about L*W*H 34*18*14 mm,  I just cut a very rough block. Then use a few facing operations to get it to the right size. Especially because I lend my band saw to a colleague and I did not get it back yet. So today will be old school manual labour. 

I normally square the machine vise with a swivel gauge, then touch of the machine x,y = 0,0 on the left beak of the vise. On the same corner the gauge is in the picture. Doing so allows me to change parts while keeping a solid x,y= 0,0.

Put in the facing tool, touch of Z=0 and your good to go.

Step 5: Milling the Top and Bottom

After facing the blocks, change to a 2mm flat end mill and use step 2 and 3.
Optionally I have added a fourth step, this is a 1mm flat end mill operation to give the bottom that little extra.
In the end I decided not to use this step, as I am a lazy bastard. ...

Touch of the top of your block as Z=0 Insert the right tool and your good to go.

Step 6: Give It a Polish

You already have fully functional Lego blocks now, in my case from aluminium.
I used the back of a scalpel to deburr all the edges. You can ofcourse use a small key file or the like, to gently get the sharp edges off. Can you imagine I managed to cut myself on my own Lego's, because I could not wait for finishing them before playing with them.

I decided to give them an extra shine. 
Mine came out of the mill very smooth already, so I felt no need to to sand them over.
I just cleaned them with some cleaning paste and a sisal wheel in the bench drill and gave them a quick shine with a cotton rag and some polishing paste. 

See here the end result :P

Step 7: Endless Possibilities

As an after thought;

Now having a grasp on Lego technologie opens a world of opportunity.
Since we are now able to make correct Lego blocks in any size, the possibilities are endless. With some time and effort you can integrate your Arduino project into LEGO.

Making parts out of plastic with metal pins which you can contact easy from the inside you can get easy acces to all your Arduino functions with the universal Lego system. This would be Mindstorms but completely open source, as what you can do for your Arduino, you can do for all sensors, motors LED's, etc.

Unfortunately I have never done anything with Arduino, so if any one would like to start a joint operation?

More after thoughts;
I advise against aluminium Lego's, There is a reason why real Lego's are made from ABS.
Aluminium is more shiney but way less flexible, bendable, etc. You need this material flexability inorder for the lego's to function like proper Lego's. Ofcourse mine are fully functional just pulling them appart takes some what stronger fingers.  
Hurricane Lasers Contest

Finalist in the
Hurricane Lasers Contest