SMLib - An advanced geometric modeling kernel |
|
SMLib is an advanced geometric modeling kernel based on NURBS curves and surfaces combined with a fully functional non-manifold topological structure. SMLib has been released in source code1 since 1998 with rave reviews from its customers. The adaptive open source2 philosophy makes it easy to justify an investment in SMLib. Take a look at our White Paper3 comparing SMLib to ACIS and Parasolid. |
| Key Benefits |
|
- Includes NLib NURBS constructions and manipulations4
- Includes trimmed surface constructions and intersections
- A pure non-manifold topology5 implementation
- A powerful Merge operator6 for model construction
- The Boolean operator7 for construction of solid models
- Extensive Fillets and Blends capabilities
- Topology-based tessellation for crack-free tessellations8
- IGES, VDAFS, STEP, and SAT translation options
|
| Library Features |
|
- Includes NLib with a C++ interface
- Includes all of GSNLib9.
- Contains all of TSNLib functionality.
|
| Non-manifold Topology |
|
The major advancement in solid modeling in the last decade has been the development of methods for modeling the intermediate stages in the construction of solid models. For CAD, 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.
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.
In theory, BREP modelers could build any real part that could be manufactured. 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 3-D 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 it was the main part of the original design of the underlying topological structures. SMLib’s NMT was not added or bolted 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 in a construction process are discussed in the section covering the merge operator.
|
Merge Operator |
|
- The usefulness and power of the Merge operator can best be explained by following how surfaces can be combined to construct a simple 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. This information is returned to the program by the Merge operator so that the user can be notified that a solid has been constructed.
|
 |
|
- The next operation easily identifies and removes all the extra surface pieces, the "fins", and so we have built our mouse.
|
 |
|
- 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 pieces. So at the right, a splitting surface has been added and the Merge operator divides the mouse into this well defined object. Some applications may want to leave the model in this form.
- Or the splitting surface can be trimmed back to leave the mouse divided into two pieces.
|
 |
|
- Under a non-manifold modeler, it is important to note that the intermediate stages do not have to be a closed solid (as with a manifold solid modeler).
- The NMT representation is necessary in order to merge a surface into a model.
|
 |
|
| The Boolean Operator |
|
The merge operator allows any objects to be combined to form a more complex model. If the objects are solid models, the set theoretic Boolean operations, union, difference and intersection, are just special cases of the merge operation. Hence the implementation of the merge operator includes the Boolean operator and the Boolean process is a special case of the merge. 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.
|
| Polygonal Modeling |
|
SMLib contains a Polygonal Modeling toolkit. The performance makes it suitable for highly interactive applications. It offers the following major functionalities:
|
- Polygon Boolean Tools that provide volumetric Union, Intersection, and Difference. Also supported are Surface/Solid and Surface/Surface Boolean operations.
- Polygon Decimation (reduction) that simplifies complex polygon meshes to optimize them for display or other applications.
- Polygonal Ray Firing, Measurement, Interference Detection, and Sectioning are other tools which have been added to the 2.0 release of POPLib.
- Creation of Trimmed Surfaces, Shells and Solids via C++ interface. Trimmed surfaces can be created from 2D or 3D trimming curves and NURBS surfaces. (Note: Data File Translators10 are available to support many standard data formats.)
- Sewing of Trimmed Surfaces into connected sets such as Solids or Open Shells.
- Generation of Triangles to the following user specified criteria:
- Chord Height Tolerance
- Angular Tolerance
- Maximum Aspect Ratio
- Maximum Polygon Edge Length
- Minimum UV Polygon Edge Length
- Tessellation using proprietary algorithms to refine the tessellation only where required to produce a valid set of triangles.
- Object Oriented Curve and Surface Subdivision Classes to allow user modification of tessellation criteria during the tessellation process. For example, in a graphical application the user could adjust tessellation criteria based on distance from an "Eye Point" of the geometry being subdivided. This customizability feature enables the Tessellation Library to easily be adapted to different applications.
- Presentation of Output as follows:
- As a topological data structure which contains a connected set of polygons with 3D points, UV points and surface normals.
- User Call Backs of 3D points and surface normals. Output of Triangles, Quadrilaterals, and Triangle Strips.
- Stereo Lithography files and ProEngineer SLP files.
|
| Back To Top |
|
Copyright © SMLib, TSNLib, GSNLib, NLib, and VSLib are trademarks of Solid Modeling Solutions. All rights reserved. |
|