Disclaimer
Questions about other machines is still in kind of a grey area right now 06/2016 and your question is, in my opinion, a bit too broad. However, I think it's a great topic to perhaps help direct the scope of this community.
The lowdown
- 3D printers, CNC Mills, CNC Lathes, CNC Routers, and Lasers are all very different! There are certainly areas where each of these may overlap, but the methodology is very different overall.
- Software is not always interchangeable across machines (even within the same machine type) due to hardware requirements/communication.
- Hardware is not always interchangeable across machines (even within the same machine type) due to design/scope of the purpose of the machine.
Things to consider
(In a nut-shell)
3D Printers
Hardware
- Minimal speed/torque requirements compared to subtractive machine tools.
- Good designs focus on temperature control via enclosures and/or electronics.
- (Typically) uses heat block/nozzle/stepper motor to control material size/flow.
Software
- Emphasis on "plug-n-play" UI/UX
- Conceptually easier to generate tool paths. STL's provide outlines and software fills in the blanks like a coloring book.
- Focus is on understanding material properties and temperature variability.
Common Variability
- Material quality/shape
- Environment temperature
CNC Mills/Routers/Lathes
Hardware
- Maximum speed/torque requirements.
- Good designs focus on rigid designs and handling harmonics.
- Tighter tolerance components to ensure mechanical repeatability.
- Relies on cutting tool size/shape to control material size/flow.
Software
- Requires more manual input (typically) to account for where its tool is located. The mathematics heavily depend on accurate dimensions for the cutting tools, otherwise you could damage your part or the machine.
- Good software allows many different "canned" tool paths for efficiency, tool types, and achieving desired surface finish.
- Focus is on variability in cutting tool and speeds/feeds (as recommended by cutting tool suppliers for materials)
Common Variability
- Material shape/hardness
- Cutting tool shape/hardness
- Cutting tool path
Lasers
Hardware
- Minimal speed/torque requirements.
- Good designs focus on consistent beam quality and spot focus, which is relative to constant power.
- Uses focusing lens (sets spot size) to control material size.
Software
- Emphasis on "plug-n-play" UI/UX and interoperability.
- Dimensions are easier to achieve as less variability in the process compared to 3D printing/machining.
- Focus is on laser power (typically for material type and depth).
Common Variability
- Laser type
- Spot size
- Power supply
Summary
Overall there are many, very different variables to consider between these technologies. I only focused on variables you might see out of a hobbyist-style machine and if you've operated any of these you'll know that there are many more variables that pop up for any of these machines.
So, do not expect such a plug-n-play solution as each machine requires quality construction of its hardware, the ability to handle the variability of the process in its software, and, above all, an operator that understands the correlation and balance of these components.
All of that being said, there are some machines that seem to be tailored to this such as the machine by Diyouware and ZMorph (No affiliation, just examples). However, notice that they have created their own software to meet a lot of these communication requirements.
Update
I forgot to mention the fact that a kink in creating a interchangeable machine is the control interface. The controller converts the "software speak" into an easily parsed series of functions (typically G-Code) for the small computer to process its predetermined hardware processes. Ie, The slicer or CAM software determines that a layer of a circle be 3D printed, milled, routered, or lasered, so the controller should G02I2 which could parse to (For all intents and purposes in javascript, not a practical language) CWCircularInterpolation(2,null,null,null,null,null)
and run as:
function CWCircularInterpolation(i,j,k,x,y,z){
//Some code to take current position and command to create a canned circle path
}
The point is that the software needs to handle the conditions and constraints of a different machining process and provide a well-equipped machine with the right commands. There are a lot of different things to consider in attempting to combine these machining techniques into a single machine and get quality results.