The diagram below depicts the non-manifold topological (NMT) boundary representation. The NMT data structure allows the representation of objects impossible to represent using traditional manifold topological structures.   Non-Manifold Topology

The feature list includes the important high level tools and is not an exhaustive list. For a comprehensive list of all of the classes and associated methods see our SOLIDS++ documentation license form which is online. Click "Documentation" to the left.


High Level Feature List


Solids++ Object Diagram



The SOLIDS++ Boolean is able to handle Union, Intersection and Difference of traditional manifold solid objects plus the various combinations of curve, solid, surface and non-manifold objects. They handle the very difficult coincident and tangency cases extremely well. They support results which are inherently non-manifold. We think that they are the most reliable, precise, NURBS based Booleans anywhere. There is also a tool for 2-D Booleans.


The Merge tool is like a general case of the Boolean which simply combines two objects into a single topological network. In fact, the Boolean is implemented by "Merge" plus selection and deletion of the unneeded topological elements. The Merge tool can be used in many other ways. For example, we utilize it in our Shelling and Filleting to resolve self-intersection cases.


SOLIDS++ has both Surface Filleting and Topological Filleting. The surface filleting takes two surfaces and produces one or more fillets between them. There are many options to control the type of surface created and how it is trimmed. The Topological Filleting tool rounds edges of Brep object which may be either a closed solid, open shell or non-manifold object. Highlights include: variable radius filleting, G2 & G3 blending surfaces, large radius cases.

Shelling & Offsetting

SOLIDS++ can shell (hollow out) or offset objects using both an extended surface or rounding algorithm. The extended surface algorithm extends and re-intersects surfaces at convex edges. For example, the extended offset of a box is a bigger box. The rounding algorithm produces a precise offset volume. For example, the rounded offset of a box is a filleted box. The shelling algorithm also supports extended shelling of open objects and can be used to produce an offset solid from an open shell.

Tessellation Engine

The Tessellation Engine takes a NURBS based boundary representation (Brep) and creates a polygonal approximation. All of the tolerances used to create the approximation can be set by the user to achieve a very large variety of meshes suitable to the given application. It is able to produce "water tight" meshes without cracks or gaps when the original object is a solid. Go to the POPLib page for more detailed information.

Local Operations

SOLIDS++ has a Local Operation Tool to replace the surface of one or more face and re-compute the surrounding edges by extension and intersection. For example, it is possible to replace a planar face of a box by a free form surface.

Advanced Surfacing Tools

The Advanced Surfacing Tools give the user a set of tools to create higher surfaces with higher continuity connections between adjacent surfaces. It is possible to produce G2 and G3 blending curves and surfaces with these tools. Higher continuity surface creation tools are essential for many Industrial Design applications where visual quality is very important.

Precise Hidden Curve Removal

The SOLIDS++ hidden curve removal tool can determine the visibility of the edges of a Brep object from a given view point. It works directly on the precise 3-D geometry not a display approximation. The results are therefore suitable for drawing productions applications.

NURBS Ray-Firing

SOLIDS++ has a highly optimized NURBS Ray-Firing utility that is able to fire tens of thousands of rays per second at NURBS surfaces and Brep objects. We have many existing customers using our tools to do optical analysis because no other kernel matches our ray-firing performance.

NC Machining Tools

We have recently started development of a set of tools to leverage our geometry tools in the NC Machining arena. Our existing tools include cross-cut finish machining, a cutter surface, 2-D offsetting.

Sweeping & Primitive Creation

SOLIDS++ supports a large variety of sweeping and primitive creation tools. Included are: Box, Cylinder, Cone, Torus, Revolution, Extrusion, Sweep along Curve, Loft, Swung and Planar.

Topology Solver

The Topology Solver supports a variety of solver operations between two Brep objects or between a Brep and a surface, curve or point. Solver operations supported include: minimize, normalize, maximize, directed minimize, directed maximize, projected minimize, projected maximize, signed directed minimize, and 3D signed directed minimize.


SOLIDS++ has a powerful sewing tool that can be used to combine trimmed surfaces into solids or open shells. The tool can sew an entire Brep object or just a selected set of edges. The sew tool does a lot of work to determine the optimal edge to utilize when combining two edges. The Sew is able to sew even very difficult models with relative large gaps between adjacent edges.


There is a comprehensive set of tools for intersecting things. You can intersect the various combinations of Brep objects, surfaces, curves, and points.

Trimming Tools

The Trimming Tools allow users to create Brep faces from a large variety of input. It handles periodic surfaces, 3-D trimming curves, 2-D trimming curves, surfaces with C0 continuity, and many other difficult trimming problems often associated with importing data from different systems.

Polygonal Modeling Kernel

SOLIDS++ includes fully functional polygonal modeling kernel. Operations include: Booleans, Decimation, Mesh Cleanup, Quad-Meshing, Ray-Firing, topological queries, and much more. Go to the MESHLib page for more detailed information.

Database IO

It is possible to serialize the SOLIDS++ Brep and Polygon objects by supplying the low level read/write methods associated with your native database. It is also possible to read/write the Brep and Polygon objects to/from files and i/o streams.