Short answer: it totally works and gives you nice clean lines. But make sure you nail the z-depth and feed speeds.
Ok, so you're going to need a couple of things here.
1. An X-Carve or other suitable milling machine
2. Circuit Board blanks, Inventables has them in 2x3" and 4x6" sizes, single and double-sided.
3. Good bits for circuit board milling. I recommend these.
Once you get all that assembled, design your circuit board. I used Eagle to set up a "stress test" of the machine, with progressively smaller component sizes and trace widths.
I then exported that as a .dxf, then used Adobe Illustrator to convert that to an .svg so I could import it into Makercam. If you're using a more professional CAM software, you could probably import the .dxf directly.
If you're unfamiliar with MakerCam, there's a good tutorial here and so I won't go into detail in this post.
Make sure you use a digital caliper and measure your bit size. It's going to matter a lot so get it right the first time and save yourself the headache.
I set up all the traces as an Outside Profile cut operation, with the cut depth as -0.25mm. You can experiment with your own settings, but I found that was the minimum depth necessary to have the bit penetrate the copper surface layer. You also want to do this in one clean pass, so set your stepdown to that same amount.
I also found that the speed settings for these boards are very touchy- there's a narrow window that works well and gives you clean edges, anything too far above or below that will give you ragged bits of copper sticking up. I recommend starting with around 150mm/min and adjusting as necessary for your machine.
Similarly, the spindle speed was a critical setting for getting clean edges. Using the stock Shapeoko spindle, I found that a speed setting of about 2.5 (between the two and the three on the rotary dial) worked best. To find the right setting, start your job and manually adjust the spindle speed until you see the edges come out clean. There's a certain amount of "tuning" here that you'll need to feel out.
Now that you've got your gcode generated, you need to plane your work area to make sure you get a consistent z-depth on the board you want to mill.
Use Makercam to generate a pocket cut for a rectangle slightly larger than your circuit board. You don't need to go very deep, only 1-2mm.
This is going to make a nice little pocket to hold your circuit board on the work surface, and since the machine is planing the bottom of that pocket, you can rest assured that that surface is as parallel to the machine's movement as you're going to get.
People have different techniques for holding the circuit board down, but I recommend using a good sticky tape like Gorilla Tape to hold down at least three corners. There won't be a lot of pressure on the board while you're milling it, but you don't want it to slip around at all.
And here's what the end result looked like:
The traces maintained integrity down to the 0402 surface mount package size, and the trace width could get down to .12mm before becoming inconsistent. I checked the pads and traces with a multimeter and there was complete isolation/continuity on all the "experiments" except for the leftmost one in the image above, which is pretty impressive.
I believe you could get the tolerance even tighter with a better spindle and a tighter-tuned machine, but that's an experiment for another day.
Any questions on this, drop a comment below or hit us up on Twitter or Facebook. I'm happy to discuss in more detail.