Ensuring Watertightness
When modeling solid geometry through any surface-based process, steps must be taken to ensure the validity of the intended boundary description, either through the addition of topological data, or through consistency checks. A boundary representation is regarded as "watertight" when it completely encompasses a volume with no seams, naked edges, or self-intersections.
Part of Rhinoceros , Rhinoceros for OSX
Part Type Method
Screenshot

Ensuring Watertightness

What is a "watertight" model?

A watertight model, in the simplest sense, is a completely enclosed volume. In other words, if you took the object, cut a small opening, poured some water into the middle of it, and closed up the opening, none of the water would drip out from anywhere.

In Rhino, it is slightly more complicated, because the geometries are rarely simple and have often been created over many days (if not weeks or months). Therefore, there are many parts that do not always fit together perfectly.

in NURBS

The goal with NURBS surfaces is to join all surfaces and polysurfaces into a single, non-overlapping, non-repetitive polysurface. This can be done in many ways. Some common commands that will be helpful with this are split or splitsurface , boolean2objects (often, but not exclusively, the boolean union ), and trim .

in Meshes

This video explains about the direction of meshes, joining smaller mesh elements into a single mesh, flipping the mesh direction, finding (and eliminating) naked edges, and welding meshes. These are all necessary components to making a watertight model using meshes.

Given that most meshes are more complicated than this example, here are some other commands which can be very helpful in making a mesh watertight. UnifyMeshNormals does a good job of flipping most of the meshes to the same direction, once they are joined. However, they may not all be in the same direction and then the composite mesh would need to be unjoined, the individual mesh faces flipped so all are pointing the same direction, and then joined again.

In addition to showing if individual mesh faces are not in the same direction, analyzing the mesh will show all naked edges, either because the meshes have not been joined, or because there is a gap in the mesh.