A knowledge-based system, for automatically dimensioning a given 3D CAD model, is described. It was found that 1. 1. dimensioning should preferably be based upon manufacturing features which are sets of surfaces in specified 3d relationships 2. 2. several different kinds of rules are needed 2.1. (a) for each feature, rules for generation of dimensions onto sets of surfaces comprising it 2.2. (b) for each surface, the generation of linear dimension forms 2.3. (c) for each such form, the instantiation of the dimension onto an explicit 3d linear element 2.4. (d) the selection of 3d linear elements to express in 2d views, and the selection of views to use 2.5. (e) the layout of the 2d dimensions generated. 3. 3. a large amount of redundancy occurred, which had to be managed and retained, until final decision on selection and placement of 2D dimensions were made. The system works by a sequence of applications of rules, which construct a set of prioritized goals connected by a network of redundancy relationships. Rules of types (a), (b) and (c) are successively applied, starting with the 3D model, to produce linear dimensioning goals, with redundancy relations among them. View selection and 2D layout involve rules of types (d) and (e), and a complex evaluation of each individual 2D dimensioning choice for each 3D linear dimensioning goal. The system was written in Prolog, using the UCLA CADLOG intelligent CAD system.