Rewrites and Import Flow:
As emphasized above, a major guideline of the UPR is addressing functional and implementation incompatibilities. We answer this design goal by the concept of a rewrite of a data item as another data item. A data item rewrite is utilized during import, in two cases:
a. While the target CAD system does not have a compatible data type, and
b. While import has failed for some reason.
The implied import low is: if you do not succeed (for any reason) in importing the unified data item into a CAD system, rewrite it and try again.
A set of data type rewrites is attached to any unified type Rewrites usually modify the data itself, but they may also be purely functional, representing a different algorithm for importing the same data. While a rewrite modifies the data, the data type conversion is fairly possibly, but not always, semantically loss.
There are many situations where data type rewrites are highly applicable in the CAD domain. The main example involves loss of associability in some form. As an example take the common 'Extrusion' parametric feature. The Extrusion operation takes a 2-D set and extrudes it in 3-D space according to a given axis and a given size. The Extrusion feature usually offers many different parameters. Two useful parameters are related to the extrusion size: the size can be given explicitly as a distance (this is sometimes called a 'blind' extrusion), or it can be given by specifying the extrusion to end when the extruded 2-D set meets a certain geometric entity already present in the model (say, a Brep face of the solid model). This latter usage is termed 'associative' because the extrusion size is automatically modified when the geometric location of the target entity is modified. Suppose now that the unified data type representing the Extrusion operation contains a 'target entity' parameter. Suppose further that this capability is lacking in some CAD system. A data rewrite of the unified Extrusion can be defined by replacing the 'target entity' parameter by an 'absolute size' parameter. In effect, an 'Associative Extrusion' data type is converted into a 'Blind Extrusion' data type. Such a conversion makes sense from a data exchange perspective when the two operations are expected to possess similar geometric semantics (that is, when the geometric changes performed on the model is identical).