||This work looks at the milling of complex pockets bounded by NURBS surface. The bulk of the material removal is achieved during rough milling, which is followed by semi-finishing and finishing operations. The former usually takes up the bulk of the machining time, and therefore it is interesting to study methods to reduce rough milling time. Earlier research has studied this problem in terms of optimization of tool paths for a given tool. We propose that in most cases, proper selection of multiple tools can reduce this time significantly. The greedy tool heuristic presented in this thesis is a new approach for determination of the machining volume that should be allocated to different tools selected from among a large set of available tools. Subsequent machining planning can then be performed by repeated application of standard 2D milling algorithms. This new approach in milling of complex shapes promises, such as modern moulds and casting patterns will reduce machining time. We implemented our approach into a prototype NC milling planning software. A machining simulation of our algorithm and comparison with other system (CASCAM) also presented.