There is an ISO definition of what a robot is, as one of the answers to the (second) original questions also point out.
The second question raises the Robot vs. Machine question, which I think is the valid question, so marking as a duplicate question I think was OK.
Machine tools and industrial robots are quite similar from every point of view. Their control system has the same structure. Their programming methods are similar. G-Code as a programming language is sometimes also used for programming robots.
The apealing definition "I know a wobot when I see one" leads probably to a definition which takes into account the design of the system (mechanical design, since electrical and software design is almost the same). The mechanical design of a system takes into account the intended task of the system, and I think this is the main and only significant difference between robots and machines, their intended task which reflects in their mechanical structure and design.
Machine tools are designed for cutting and deforming materials, robots are designed for manipulation tasks (incl. welding). Both designs are a trade-off. Robots are trading off precision, machine tools are trading off workspace size against cost.
According to this logic, 3D printers are machine tools since they are trading off workspace size against cost. Also, it feels right to categorize them as machine tools and not robots.
Obviously, there are robots which assume the tasks of machine tools (e.g. Kuka.CNC) (and maybe vice-versa) but their desing reflects a different purpose, and I think this is what counts.