Natural hierarchy of data rewrites:
In several cases, there exists a natural hierarchy of data rewrites. In the Extrusion example above, the rewrite into a blind extrusion is not the last one that can be attempted. If a blind extrusion does not succeed, it can be rewritten into a 'glue faces' operation. This operation can be implemented by computing the set of faces generated by the original feature (in this case, if the associative extrusion and the blind extrusion generate an equivalent set of faces) and gluing them into the model. This rewrite is possible while the target CAD system supports a 'glue faces' operation.
Note that in the two given examples, an actual execution of the rewrite requires data that is not necessarily exported into the unified data type. In the first example, we would need the length of the extrusion, and in the second example the set of faces generated by the extrusion. There are three main alternatives for dealing with such data: it can be computed during export, requested during run-time from the CAD system from which the data had been exported, or computed during import. The last alternative is usually not feasible, because the data usually depends on internal implementation in the source CAD system. The first alternative is the most general but also the most demanding in terms of export efficiency and storage size. The second alternative is the most flexible but it requires access to the source CAD system during import into the target CAD system, which complicates the operating environment of the architecture as well as possibly increasing its cost due to the additional CAD licenses required.