Documentation / Node reference / geo nodes

geo/ManifoldDisplay

Draws the edges where a mesh is not a closed surface, without changing the mesh.

Helpers

A watertight mesh has every edge shared by exactly two faces. This node draws the edges that are not: the ones used by a single face, which are the boundary of an open surface, and the ones used by more than two, which are where surfaces meet in a way no printer or boolean can make sense of. The result is overlay curves on top of the input, so nothing downstream changes. geo/Clean is what acts on the same information: what this draws as overshared is what its non-manifold pass deletes.

The same census is published as data, every time it runs: the stage attributes WATERTIGHT (1 when both counts are zero), OPEN_EDGES_COUNT and NON_MANIFOLD_EDGES_COUNT, summed over the meshes in the input. An expression reads any of them with stage(), which is how a configurator drives its own message rather than taking a node error.

Open edges usually mean the points were never welded, and today NO primitive in Polygon welds: each face carries its own corners, so a geo/Box reports 24 open edges and a geo/Sphere or a geo/Torus over a hundred each at default resolution, even though all three look like solids. geo/Fuse welds them and the same shape comes back closed. Expect to need one before any print export.

Only meshes can be counted: triangles, quads and hexes. Anything else in the input, a brep or a curve or a point cloud, is reported as NOT watertight rather than waved through, because the only honest answer about a shape whose edges were never counted is no. A brep in particular has to be triangulated first: its model can be a valid solid while the tessellation an exporter writes is not, and the tessellation is what gets printed.

Parameters

Name Type What it does
keepInput Bool Keep the input geometry and hang the overlay curves off it as children. Off emits only the curves, which is what you want when the mesh itself is in the way of seeing them.
unsharedEdges Bool Draw the edges used by a single face. On a closed solid there should be none; on an open sheet they are its border, which is correct rather than broken.
oversharedEdges Bool Draw the edges used by more than two faces. These are the ones that make a mesh unprintable and break booleans, and they are what geo/Clean deletes.
splitByConnectivity Bool Emit one object per connected run of edges instead of one object holding them all. Use it to count the separate holes, or to select one of them downstream. With keepInput off it is also how a watertight input becomes ZERO objects, which a geo/Condition can assert on with objectsCount=0 whatever the input's own object count is.
errorIfNotWatertight Bool Put the node in error when the input is not a closed solid, which stops the graph before an exporter downstream writes a file a slicer has to repair. Off by default, because a node whose job is to show you a problem must not refuse to run because it found one. Turn both draw toggles off and this on for a check that changes nothing and emits nothing. The counts are published as stage attributes either way.
allocator UInt8 TEMP · POOL · FLAT_POOL Which allocator the overlay geometry is built from.

See also

This page is generated from the engine, so it describes the release you can download. The same text is in the editor's Help panel next to the node itself.