TSNLib is based on a Non-Manifold Topology (NMT) structure. Understanding the class/object heirarchy utilized to represent geometric and topological information is essential to effectively use TSNLib.
IwBrep – A Boundary Representation with a Non-Manifold Topology (NMT) structure containing the objects below.
IwRegion – A region represents a bounded volume. There can be more than one region in an IwBrep. In addition, there is always an infinite region that represents all space not contained by the other regions. For example, a plane has only the inifinite region. A cube has the inifinite region plus the bounded region.
IwShell – A shell can be a single IwVertex, or a connected set of wire edges (IwEdge), or a connected set of faceuses (IwFaceuse), or some combination of connected faceuses and connected wire edges.
IwFace – A face or trimmed surface is defined by a surface (IwSurface) and is bounded by one or more loops (IwLoop). Each face must have one and only one outer loop. The UV domain of the face contained in the face object and is represented by an IwExtent2d object. The domain of the face can be smaller than the natural domain of the surface but must completely contain the parameter space curves generated by projection of the 3D curves onto the surface. Each surface may have one or more faces that reference it. In the case where there is more than one, a composite face (IwCFace) will exist to manage that relationship.
IwLoop – A loop is a connected set of edges on a face which represent a trimming boundary. A loop can also be a single unconnected vertex on a face. A loop may or may not be closed.
IwEdge – This topological element is represented geometrically by a curve (IwCurve). The curve may have one or more edges that reference it. In the case where there is more than one, a composite edge (IwCEdge) will exist to manage the relationship. An edge may be a wire edge (no faces), a lamina edge (only one face on one side of it), a manifold edge (either two faces or the same face used twice), or a non-manifold edge (more than two faces). An edge may be bounded by one vertex in the case of a self-loop edge or it may be bounded by two different vertices. The interval of the curve defined by the edge is represented by an IwExtent1d object.
IwVertex – This topological element is represented geometrically by a point object (IwPoint3d). A vertex is defined as a zero manifold point in space.
IwFaceuse – There are always two faceuses per face. Conceptually speaking, one faceuse lies on the positive normal side of the surface (upper faceuse) and the other lies on the negative normal side of the surface (lower faceuse). A faceuse is bounded by loopuses.
IwLoopuse – There are always two loopuses per loop. A loopuse can be either a single vertex on the face or a connected set of edgeuses (IwEdgeuse) on the face. The outer loopuse of the upper faceuse goes counter-clockwise looking from the side of the surface of the positive normals. The inner loopuses of the upper faceuse go clockwise or have no orientation at all if they are not closed.
IwEdgeuse – Edgeuses appear in pairs. There can be one pair or more per edge. In the case where the edgeuse is part of a loopuse there is one edgeuse on either loopuse. The orientation of an edgeuse is always the opposite to that of its mate. Each edgeuse has one vertexuse connected to the beginning of the edgeuse. The edgeuses on the upper faceuse may have associated trim curves. The trim curves are always IwBSplineCurve objects.
IwVertexuse – There can be one or more vertexuses per vertex. A vertexuse primarily exists to connect edges to the vertex.
IwPoly – Polygon related classes include: IwPolyBrep, IwPolyRegion, IwPolyShell, IwPolyFace, IwPolyLoop, IwPolyEdge, IwPolyVertex, IwPolyDecimate, IwPolySolver, IwPolygonOutputCallback, IwPoly, IwPolyIntersector, IwPolyMerge, IwPolyLocalSolver, IwPolyPlaneSolver, IwPolySLAOutput, IwPolySLPOutput.