# SMLib™

## NURBS Solid Modeling Library

SMLib™ is an advanced 3D geometric solid modeling kernel based on NURBS curves and surfaces combined with a fully functional non-manifold topological structure. Since 1998, SMLib™ includes a powerful set of construction, modification, and evaluation tools for curves, surfaces, trimmed surfaces, and NURBS based as well as polygonal solids. Based on TSNLib™ and NLib™, SMLib™ also supports more advanced topologically based operations such as booleans, fillets, offsets, tessellations, deformable modeling, and much more.

## Key Features

**Code Distribution**– C++ library supporting NURBS and polygon modeling tools for creation, modification, evaluation of trimmed surfaces and solids.**Non-manifold topology**(NMT) – A pure implementation from the beginning giving users the versatility to model all the intermediate stages of the construction process.**Merge operator**– A powerful operator for surface model construction.**Boolean operator**– Robust operator for solid modeling.**Offset operator**– For topology based solid offset and shelling.**Fillet operator**– For extensive topology based fillet and blend capabilities.**Defeaturing**– now available in SMLib!**Tessellation**– Topology based tessellation for crack-free polygonal models.**Translators**– IGES, STEP, SAT, VDAFS, etc.

### Non-manifold Topology

The first solid modelers were based on constructive solid geometry (CSG) which was limited to simple shapes such as boxes, cones, cylinders and tori. It was almost impossible to use free form surfaces. The development of the twin edge boundary representation (BREP) enabled any surface definition to be used as a face of a solid. Solid modeling has always meant the modeling of 3-dimensional objects that could be manufactured as real parts. As the early solid modeling systems were being developed and used, it became very obvious that many of the familiar construction techniques used in the design process could not be implemented due to the limitations of the underlying geometric and topological representations. Additional methods were required for modeling the intermediate stages in the construction process.

For example, a model consisting of a cylinder lying on a box can not be manufactured since the region of contact between the two parts is just a line. Two planes that intersect in a line that is interior to each plane can also not be built yet both of these cases may arise as an intermediate step in the construction of a 3-D part. In 1986 Kevin Weiler published his PhD thesis titled “Topological Structures for Geometric Modeling” and in it he generalized the twin edge boundary edge representation into a radial edge representation together with the ability to include points and curves. Now it was possible to model almost any 3D object and as a result the intermediate steps in a construction process were valid objects. Mathematically he extended the boundary representation from a manifold to a non-manifold topology, hence the name NMT.

SMLib is one of the first pure NMT implementations. Pure in the sense that NMT was the main part of the original design of the underlying topological structures. SMLib’s NMT implementation was not an afterthought onto what was originally a manifold BREP structure. The power and usefulness of SMLib’s NMT structure and its ability to model all the intermediate stages of a construction process are discussed in the merge operator section below.

### Merge Operator – Constructing A Computer Mouse

In the figure at the right, a base plane and a vertical curved surface have been combined into a single well defined object with the Merge operator.

The third surface is added and merged into the first two surfaces to complete the sides of the mouse. The result is again a well defined object.

When the top surface is added and merged into the other surfaces, a volume has been enclosed and a new region has been defined. The merge operator notifies the user that a solid has been constructed.

The next operation easily identifies and removes all the extra surface pieces, the “fins”. Our mouse is a complete solid.

- One of the common steps required in order to manufacture such parts is to be able to split the part into its upper and lower halves. A splitting surface has been added and the merge operator divides the mouse maintaining a well defined object.
- The splitting surface can be trimmed back to leave the mouse divided into two halves.

In opposition to a manifold solid modeler, a non-manifold (NMT) representation is necessary in order to merge a surface into a model. With an NMT modeler, the intermediate stages of the construction process are not required to be a closed solid.

### The Boolean Operator

The merge operator allows any objects to be combined to form a more complex model. If the objects are solid models, boolean operations such as union, difference and intersection are just special cases of the merge operation. This in itself is a big advantage since if the boolean fails to complete, in many cases, the results are still a well defined NMT model and hence can be used for further processing. Several less common boolean operations are also available.

### The Offset Operator

The offset operator constructs a new surface for each face of an object. Offset distance and direction can be specified by the user outward in the direction of the surface normals or inward toward the inside of the solid. After offsetting each face of the solid, the offset operator works to resolve the offset surfaces into a new solid or shell. This can be called shelling. Each new offset surface is intersected and trimmed with other offset surfaces. When the offset solid is toward the outside, the offset operator can also resolve the gaps left between the offset surfaces with linear or circular transition surfaces.

### The Fillet Operator

The fillet operator uses the topology of an object to replace the twinned edges of an object with a transition surface that is tangent continuous with its neighboring faces. There are several possible transition surface types including circular fillet, linear chamfer, and blended surface. In addition, the fillet operator intersects and trims the transition surfaces where they approach a corner. Finally, the fillet operator constructs a corner surface to resolve the corner where several surfaces meet.

### Defeaturing now available in SMLib!

With the new defeaturing tool in SMLib you can separate features from your model while the model’s principal shape is rebuilt automatically. This tool makes your models easier to reuse, can simplify models prior to meshing for FEA, and can be used to inform your manufacturing processes. Properties of the feature, such as volume, can be calculated so that the time necessary for manufacturing is known for either additive or subtractive manufacturing processes. The new defeaturing tool works with fillets, blind features, and cut-through features; and will operate on multiple features at one time.