So a little primer on how to go from STL file to gcode to run the desktop cnc mill. First, make sure you are absolutely happy with the STL file. If you export the file with too few facets then your machine paths will also be blocky. So this really is one of those circumstances where what you see is what you get. Also, I like to go ahead and reassemble the stl files together into it’s own model to check that the alignment is good, also that the coordinate system is in the right place and generally things are going to work out the way I like it. The picture shows that I’ve placed the origin at the lower left of the pattern and I’m showing the cope on top and the drag underneath. Maybe you can see that the knife sections line up and the corner of the mold lock matches as well. 
Next import these into your preferred gcode tool. Let me take a short aside on that topic because these are not as simple as the wealth of information on plastic 3D printing. In 3D printing looking at the free software world alone you can choose from Repetier Host, Cura, Slic3r, Skeinforge, just to name a few. These support gcode generation for many different 3D printer flavors and have many options for support materials, overhangs, and infill. I highly recommend looking at all of these if you are interested in 3D printing. Confusingly for experts in 3D printing, the cnc world breaks down into 2D, 2.5D, and for lack of better word 2.5D+ which would include the 3 axis mill and beyond. If you are just getting started with desktop CNC milling then I would suggest looking specifically at 2D such as jscut, FlatCAM, and PyCAM. Remember those tools are only going to cut completely through material, so they can be used for the mill, plasma cutter, laser, water jet, etc. For patternmaking, I’m interested in 2.5D machining which basically exercises the same muscles as the 3D plastic printing changing profiles from layer to layer in the height. It is similar to the 3D printing but instead of building up from 0 to the full height; it is subtractive taking from the full height down to the bottom.
For my 2.5D approach to the desktop cnc mill, I am using several tools because I haven’t settled on the best approach to teach with. First, Kiri:Moto is kind of amazing. If you even have a little interest in this stuff, you should check it out. Easy to set up, shows the machine paths, lots of default values that make sense, even integrated directly into Onshape. My experience with Kiri:Moto has been good, works quickly, and is useful for the initial check if you are going in the right direction. I have high hopes that this tool continues to get some love and attention because it is awesome! As is my style, I have broken it as well both when adding in new complicated stl files as well as on the export side. Unfortunately, there is not a lot of easy to debug log information about why the slicing or export fails. So, there are other alternatives… HeeksCNC, FreeMill, and for the low budget (but not free) hobbyist MeshCAM. I went ahead and bought a license of MeshCAM because the other alternatives I mentioned above are only Windows based, awkward to install, or a little gimmicky (as in not clear what the terms and capabilities were) I’m sure all of these issues could be overcome if I had more time. There of course are other established programs like GibbsCAM or MasterCAM. I hope to revisit this specifically in the future, pending I find a solution I like.
My simple instructions are assuming you are using Kiri:Moto and you don’t run into the issues that I faced with exporting the final gcode. So… In the menu on the left, choose your mode, in my case CNC milling. Second, choose the device, in my case it is a tinyg mill. Then, choose the tool and I have a 1/8″ end mill installed on the desktop mill which they already have some parameters for. Make sure this tool is selected in all the slicing steps you have activated on the right. So use the dropdown tabs to select the 1/8″ tool. Make sure you’ve loaded the geometry and rotated it into position. At this point, I can slice the geometry and see what the path looks like for the cutting tool. Once it completes the path generation, you can even use the slider at the bottom of the page to watch the cutting layer by layer. If you like it, then you can export the gcode for the mill. I love the little bar at the bottom of the screen where you can scroll through the roughing and finishing steps to see exactly where the tool goes.

Finally, if you can save the gcode out from whatever package you have then it’s time to setup the mill. I used the wood that I prepared yesterday and secured it to the spoiler board. I’m pretty novice at setting this up so hopefully someone will school me in the comments on the best way to prepare the spoiler board and setting up the workpiece. Basically, I moved the end mill within the approximate operating range and setup rails that I could secure the workpiece to so that it would stay in my preferred location and give me the most access to machining my features. For running the desktop mill, which is an OX CNC, it interprets gcode through a tinyg controller which is hosted by a json server. Honestly, seeing the other options I think the GBRL controller seems a little more common, but you have to walk in the shoes you own. You can move the machine with coolterm but I just jumped straight into Chilipeppr for sending gcode instructions to the tinyg controller. Again, my advice if you are getting started with this is go to Chilipeppr’s website and start pressing buttons and trying it. I was pretty impressed with the ease of use once I finally got the communications side hooked up. In the end, for the drag side of the knife pattern I started milling today as shown in the picture.

Some concluding remarks, the milling above failed today. First, the hold downs you see there were not adequate to secure the wood while the tool was traveling (thanks to Kat Steel for noticing my overconfidence). Second, my first gcode was stepping down 1mm deep each pass for the roughing cut. This stalled the machine because it was too much for the little 300W router on my system. Third, when I started the shopvac to vacuum some of the sawdust… it popped the circuit breaker on the power strip I was using and stopped the mill. So with those three interruptions, I decided to call it quits on the mill today and start it early tomorrow morning to see if I can finish something to show. Given the above discussion, I’m sure I’ll need to add some posts about setting up the machining parameters and other details but later on that.