Intelligent CNC Programming of Machine Tools: Artificial Techniques