The
Stitch Component (STITCH), in the stitch directory, provides a way to stitch - or sew - separate faces together to make a sheet or solid body that is topologically complete. Stitching essentially involves replacing coincident groups of edges or vertices in the data with a single edge or vertex.
|
|
There are three forms of stitching - Exact Stitching, Tolerant Stitching and Restricted Tolerant Stitching. All these forms of stitching require input models which check. Exact stitching is intended for edges that have been constructed to be coincident, while tolerant stitching is intended for stitching models that may have gaps, such as translated models. Restricted Tolerant Stitching uses the same algorithm as Tolerant Stitching except that only a specific list of edges are candidates for stitching.
|
|
Exact Stitching allows stitching of faces with edges that are coincident within
ACIS tolerance. It should only be used to reconnect faces that have been split by boolean operations or to connect faces that have been explicitly constructed to have coincident edges. Tolerant Stitching should be used when non-coincident edges are expected.
|
|
Exact Stitching also requires compatible topology between the entities being stitched. Two edges (and their corresponding co-edges) are considered incompatible when they have coincident geometry but belong to single-sided faces of incompatible orientation (i.e., they have the same coedge direction, and thus incompatible face normals). In ACIS R10 and later releases, exact stitching will return an error from
api_stitch if incompatible edges are encountered. When calling a pre-R10 version of
api_stitch, stitching continues to completion, but incompatible edges are not stitched and vertices that lie on incompatible coedges are also not stitched, despite the fact that they are coincident. Consequently, the resulting body may be invalid. Any other combination of faces that share coincident edges are stitched, even if the final edge has more than two faces around it after the stitch; i.e. is nonmanifold. If incompatible edges are encountered in exact stitching, it is recommended that the user attempt to stitch the model using tolerant stitching, which will perform the appropriate face reversals.
|
|
Exact Stitching provides a flag to control whether an edge should be split when it is coincident with another edge along only part of its length.
|
|
|
|
Figure 1-1. Exact Stitching - with no split option
|
|
In figure 1-1, CD is stitched to FG, but AB is not stitched to EDGH because of the split at D/G.
|
|
|
|
Figure 1-2. Exact Stitching - with split option
|
|
In figure 1-2, Vertex I is inserted by stitcher and AI & IB are stitched to ED and GH, respectively.
|
|
Tolerant stitching stitches two faces only if the common edges/vertices have approximately the same geometry. After stitching is completed, the resulting model is checked for gaps and edges or vertices with gaps are replaced with TEDGEs and TVERTEXs. This form of stitching should be used in situations where gaps exist between edges that should be stitched together. This situation typically arises with models translated into
ACIS from another modeler.
|
|
Tolerant stitching has following characteristics:
|
|
|
1.
|
Handles varying gaps.
|
|
|
2.
|
Resolves multiple vertices.
|
|
|
3.
|
Splits edges appropriately
|
|
|
4.
|
Ensures consistent face normals.
|
|
|
|
Figure 1-3. A difficult tolerant stitching example
|
|
Tolerant stitching uses an incremental algorithm, which takes place in a continuous manner. Stitching attempts to stitch the body together by starting with a small tolerance (the minimum tolerance) and stitching together as many faces as possible. Then, the tolerance is increased by a small amount and as many remaining faces are stitched as possible. At each tolerance value, edges that are smaller than the tolerance are either removed or merged, depending on their relationship to the adjoining edges. This process is continued until the entire set of faces can be stitched together, or the maximum tolerance is reached. This algorithm provides robustness against difficult stitching problems that can arise, like the one illustrated in Figure 1-3.
|
|
|
Note
|
Coincident faces and non-manifold configurations (i.e., more than 2 coedges per edge in resulting body) of faces should not be stitched using tolerant stitching. Attempting to stitch such models will result in undefined behavior.
|
|
Restricted Tolerant Stitching uses the same algorithm as "Regular" Tolerant Stitching, except that the user specifies a list of candidate edges. All unlisted edges in the model are ignored by the stitch algorithm. This functionality is intended as a performance enhancement when stitching single faces or sheets into large (i.e., many face) models.
|
|
When using Restricted Tolerant Stitching. users should ensure that no stitch attributes are already attached to the incoming model. If there is a possibility that such attributes may be attached, a flag may be set in the
edge_tolstitch_options argument that tells
api_stitch to search for and remove them before stitching.
|
|
At the end of "regular" tolerant stitching, a check is made to ensure that face normals are correctly oriented, i.e. they point outwards from the body. If the user is sure that all face normals being passed in the restricted tolerant stitching are already correct, then this final check can be turned off by setting a flag in the
edge_tolstitch_options object.
|