====== The Path from a 2D/3D Model to a CNC Milling Machine ====== **//"How do I send my design to a CNC milling machine?"//** This is a frequently asked question by people who are just getting into prototyping or production of digitally created models. The common misconception is that a CNC milling machine can simply import a complete 2D or 3D model and automatically produce a part. This misconception is aided by the fact that there are now 3D printing processes that can just about do that. Practically all you have to do is hit the **Print3D** button... **//Unfortunately, this is __not__ the case with CNC milling...// ** CNC milling is considerably more complex than 3D printing. You cannot send **designs** to a CNC mill. You need to send specific machine code that tells the machine exactly what steps to execute in what order to make your part. In most cases, this code is alphanumeric (a text file) and can be read and understood by ordinary humans as well. ====The machine code to make your part is generated in several steps==== **1.** Your Rhino **designs** (2D or 3D) are used by some CAM software (which can run inside Rhino or as an external application) to generate **toolpaths**. This step needs your input to some degree. (This depends on what CAM software you're using and the complexity of the part.) Generally you need to at least choose a tool or tools, a type of machining strategy to use, feeds and speeds, etc. All this info together defines the **machining parameters** for the operation. Some CAM are more automatic than others in generating toolpaths, but, in any case, you do need to decide certain things. **2.** Once the toolpaths are generated with the correct parameters, you can see them on the screen, optionally edit them, simulate them, etc. until you are satisfied with the result. **3.** When the result is correct on the screen, you then run the entire machining sequence through another piece of software called a **postprocessor**. This software is generally running inside the CAM program and is a translator from the generic toolpath format built into the software to your specific machine/CNC control combination (such as a Bridgeport model XXX mill with a Fanuc model YYY control). The postprocessor does the the translation based on a custom configuration file for your machine -- usually called a "post". The configuration will be different for every machine/control combination, so there are literally thousands of posts available. CAM software manufacturers usually provide a set of standard posts that can be customized, as well as a way of creating your own from scratch. The correct post config file allows the postprocessor software to output a text file with exactly the code the machine needs to generate the part. **4.** If you desire, edit this code before sending to the machine -- it's just text. You can review it in any text editor like Notepad, but there are also specific NC code editors which have specialized functions that make editing easier. There are more or less sophisticated NC editors available, ranging from free to moderately expensive. **5.** The final code is transmitted to the machine. Often this is via a direct serial connection from the computer to the machine. In other cases (more recent controls) the machine is actually on the network, and the file is transferred via Ethernet. In the first case (more common), there is another small piece of software that manages computer-machine serial communication. For NC files, this is normally called DNC software (Direct Numerical Control). Depending on the sophistication DNC software can handle from one to hundreds of machines simultaneously. If you only have one machine, although it's a bit more cumbersome, you can even use something like built-in Windows Hyperterminal to transmit files. There are also some free DNC programs out there, and DNC is sometimes included in an NC code editing program. If the machine //can// receive files via Ethernet, DNC is not necessary.