|Analysis Situs ./features/define wireframe model|
A typical reverse engineering scenario consists of the following main steps:
Interactive segmentation gives the user all means to outline the feature lines of the model manually. Given the mesh model as the input data, the user draws a network of curves which compose loops defining the patches. The wireframe model defines the layout of the surfaces (topology).
Internally, the wireframe model is defined as a directed hierarchical graph. The root elements in this graph are the patches. A patch contains an ordered list of coedges which are the lightweighted entries of edges plus "same sense" flags which allow to agree or disagree with the as-constructed orientation of an edge. The coedge-based wireframe structure allows for non-manifold surface modeling which can sometimes be useful.
In our reverse engineering workflow, the wireframe model is the master model. Manipulating with wireframe patches is easy because you only need to modify edges, and the surface patches will be refitted correspondingly. Another simplification of this wireframe approach is the lack of p-curves. As a result, there is no need to synchronize different curve representations to keep the model consistent. As a downside, such a representation scheme is not directly suitable for data interoperability as it is not fully compliant with, for example, STEP standard. To solve the interoperability issue and also to enable further modeling operations, the reverse engineering model is eventually converted to B-Rep scheme of OpenCascade.
Contour lines are defined interactively via define-contour command. Analysis Situs projects the straight line segments between the picked points onto mesh. Projection is performed with a certain precision which defines the max allowed distance between the subsequent points. Projection is performed non-recursively (to avoid stack overflows) with a controlled number of iterations. To speed up computations, BVH (bounding volume hierarchy) structure is used.