A method is presented for building model data for CAD and manufacturing purposes from existing parts using range data. These techniques can be used as a design aid, especially for designing complicated free-form surfaces. Furthermore, they can be used for reverse engineering if there exists no design data for a needed part, e.g., old machine part. The goal is to construct procedural CAD models, i.e., the set of commands that generate the part geometry, to be able to convey global shape properties in addition to low level geometric data. Sensor noise is attenuated using non-liner filters based on robust estimation theory. The data interpretation is obtained by fitting models. The CAD model building strategy and modeling primitives are selected based on the obtained volumetric and surface data descriptions and their quality. A superellipsoid model is recovered for each data set. Sculptured surfaces are approximated by recovering a NURBS control point mesh for the surface. An approach is proposed for estimating the size of the control point mesh automatically from sensor data. Parameterization issues and methods to recover B-spline surfaces of arbitrary topology are also studied. The obtained surface is refined to meet a user defined tolerance value. The model data is represented both in a procedural modeling language and IGES product data exchange format. Experimental results for standard geometric shapes and for sculptured free-form surfaces are presented using both real and synthetic range data.