The second (and current) generation is the 3-D modeller, where the computer records a full representation of the shape of the design, in terms of 3-dimensional geometric primitives such as cylinders and laminae. This enables complete sets of manufacturing information to be generated, and allows limited automatic analysis of the design: the computer can detect whether two parts of the design will clash, but still needs further information from the user before it can calculate (for instance) stress levels within the design. In particular, it is unable to give proactive help in deciding whether the design will work, as it has no information about what it is intended to achieve.
The third generation is the functional modeller, in which the computer records the functional intent of each part of the design, in addition to its 3-D shape. It is therefore in a position to vary the shapes in the design so as to optimize some performance criterion (e.g. cost of manufacture) without compromising the intended functionality and without continual reference to the user.