On this page:
4.7.1 Examining Merged Entities
4.7.2 Imprinting Geometry
4.7.3 Merge Tolerance
4.7.4 Merging Geometry
4.7.5 Using Geometry Merging to Verify Geometry
4.7.6 Unmerging
2021.11

4.7 Geometry Imprinting and Merging

Geometry is created and imported in a manifold state. The process of converting manifold to non-manifold geometry is referred to as "geometry merging", since it involves merging multiple geometric entities into single ones. When importing mesh-based geometry, the merging step can be automatic. Imprinting is a necessary step in the merging process, which ensures that entities to be merged have identical topology.

4.7.1 Examining Merged Entities

There are several mechanisms for examining which entities have been merged. The most useful mechanism is assigning all merged or unmerged entities of a specified type to a group, and examining that group graphically. This process can be used to examine the outer shell of an assembly of volumes, for example to verify if all interior surfaces have been merged. To put all the merged or unmerged entities of a given type into a specified group, use the command:

Group {<‘name’>|<id>} add [Surface | Curve | Vertex] with is_merged

To put all the unmerged entities of a given type into a specified group, use the command:

Group {<’name’>|<id>} add [Surface | Curve | Vertex] with is_merged = 0

Entities can also be labeled in the graphics according to the state of their merge flag. See the Preventing geometry from merging section for information on controlling the merge flag. To turn merge labeling on for a specified entity type, use the command

Label {Vertex | Curve | Surface} Merge

4.7.2 Imprinting Geometry

To produce a non-manifold geometry model from a manifold geometry, coincident surfaces must be merged together (See Geometry Merging); this merge can only take place if the surfaces to be merged have like topology and geometry. While various parts of an assembly will typically have surfaces, which coincide geometrically, an imprint is necessary to make the surfaces have like topology.

To preview which surfaces can or should be imprinted, or to force imprints that the regular imprint command misses, the Find Overlap command can be used.

4.7.2.1 Regular Imprinting

To imprint bodies together

  1. On the Command Panel, click on Geometry and then Volume.

  2. Click on the Imprint Merge action button.

  3. Select Imprint from the drop-down menu.

  4. Enter in the appropriate values for Body ID(s). This can also be done using the Pick Widget function.

  5. Click Apply.

Imprint [Volume|BODY] <range> [with [Volume|BODY] <range>] [Keep]

A body can also be imprinted with curves, vertices or positions, and surfaces can be imprinted with curves. It is useful to imprint bodies or surfaces with curves to eliminate mesh skew, generate more favorable surfaces for meshing, or create hard lines for paving. Imprinting with a vertex or position can be useful to split curves for better control of the mesh or to create hard points for paving.

To imprint bodies with curves, vertices or positions

  1. On the Command Panel, click on Geometry and then Volume.

  2. Click on the Imprint Merge action button.

  3. Select Imprint from the drop-down menu.

  4. Enter in the appropriate values for Body ID(s). This can also be done using the Pick Widget function.

  5. Click the box With.

  6. Select Curve ID(s), Vertex ID(s) or Location. and enter in the appropriate values.

  7. If Location is selected, click on the Location... button. Another window will appear to specify setting.

  8. Click Apply.

Imprint Body <body_id_range> [with] Curve <curve_id_range> [Keep]

Imprint Body <body_id_range> [with] Vertex <vertex_id_range> [Keep]

Imprint {Volume|Body} [with] Position <coords> [position <coords> ... ]

Imprint Surface <surface_id_range> [with] Curve <curve_id_range> [Keep]

An Imprint All will imprint all bodies in the model pairwise; bounding boxes are used to filter out imprint calls for bodies which clearly don’t intersect.

Imprint [Body] All

4.7.2.2  Tolerant Imprinting

Normal imprinting may be ineffective for some assembly models that have tolerance problems, generating unwanted sliver entities or missing imprints altogether. Tolerant imprinting is useful for dealing with these tolerance challenged assemblies. To determine coincident and overlap entities, tolerant imprinting uses the merge tolerance. The commands also include an optional tolerance value that will be used for the purposes of the single command. Specifying an optional tolerance value will not change the default, system tolerance value.

A limitation of tolerant imprinting is that it cannot imprint intersecting surfaces onto one another, as normal imprinting can. Tolerant imprinting imprints only overlapping entities onto one other.

To tolerant imprint

  1. On the Command Panel, click on Geometry and then Volume.

  2. Click on the Imprint Merge action button.

  3. Select Tolerant Imprint from the drop-down menu.

  4. Enter in the appropriate values for Body ID(s). This can also be done using the Pick Widget function.

  5. Click Apply.

Imprint Tolerant {Body|Volume} <range> [tolerance <value>]

Tolerant imprinting can also be used to imprint curves onto surfaces, provided that the tolerance between surface and curve(s) falls within the merge tolerance. The ’merge’ option will merge the owning volume of the specified surface with all other volumes that share any curves with this surface.

To tolerant imprint curves onto surfaces

  1. On the Command Panel, click on Geometry and then Surface.

  2. Click on the Imprint Merge action button.

  3. Select Tolerant Imprint from the drop-down menu.

  4. Select With Curve ID(s).

  5. Enter in the appropriate values for Body ID(s) and With Curve ID(s). This can also be done using the Pick Widget function.

  6. Click Apply.

Imprint Tolerant Surface <id> with Curve <id_range> [merge] [tolerance <value>]

Imprint Tolerant Surface <id> <id> with Curve <id_range> [merge][tolerance <value>]

Imprint Tolerant Surface <id><id> [tolerance <value>]

The second form of the command imprints the specified bounding curves of one surface onto another surface and vice versa. Any specified curves that are not bounding either of the two specified surfaces will not be imprinted. The ’merge’ option will merge all the volumes sharing any curve of these two surfaces, after the imprint.

It is recommended that normal imprinting be used when possible and tolerant imprinting be used only when normal imprinting fails.

4.7.2.3 Mesh-Based Imprinting

Another form of the imprint command,

Imprint Mesh {Body | Volume} <id_list>

uses coincident mesh entities and virtual geometry to create imprints. See the Partitioned Geometry section for more information on this command.

4.7.2.4 Imprint Settings

After imprint operations, an effort is made to remove sliver entities: sliver curves and surfaces. Previously, all curves in participating bodies less than 0.001 were removed. Newer versions of Cubit changed this because there might be times when the user wants sliver curves/surfaces to be generated during an imprint operation. In order to give the user more control over the cleanup of these sliver entities after imprint operations, a command was implemented so that the user can set an ’imprint sliver cleanup tolerance’. The default tolerance for curves is the merge tolerance 0.0005. The default tolerance for surfaces is a suitable tolerance chosen internally based on the bounding box of the entity. Sliver surfaces are removed whose maximum gap distance among the long edges is smaller than the tolerance and who have at most three long edges. A long edge is an edge whose length is greater than the specified tolerance.

Set {Curve|Surface} Imprint Cleanup Tolerance <value>

4.7.3 Merge Tolerance

Geometric correspondence between entities is judged according to a specified absolute numerical tolerance. The particular kind of spatial check depends on the type of entity. Vertices are compared by comparing their spatial position; curves are tested geometrically by testing points 1/3 and 2/3 down the curve in terms of parameter value; surfaces are tested at several pre-determined points on the surface. In all cases, spatial checks are done comparing a given position on one entity with the closest point on the other entity. This allows merging of entities which correspond spatially but which have different parameterizations.

The default absolute merge tolerance used in Cubit is 5.0e-4. This means that points which are at least this close will pass the geometric correspondence test used for merging.

To specify the merge tolerance

  1. On the Command Panel, click on Geometry.

  2. Click Volume, Surface, Curve or Vertex.

  3. Click on the Imprint Merge action button.

  4. Select Merge from the drop-down menu.

  5. Enter in the appropriate values for Body ID(s), Surface ID(s), Curve ID(s) or Vertex ID(s). This can also be done using the Pick Widget function.

  6. Select Set Tolerance and enter in the appropriate value for Tolerance.

  7. Click Apply.

Merge Tolerance <val>

If the user does not enter a value, the current merge tolerance value will be printed to the screen. There is no upper bound to the merge tolerance, although in experience there are few cases where the merge tolerance has needed to be adjusted upward. The lower bound on the tolerance, which is tied to the accuracy of the solid modeling engine in Cubit, is 1e-6.

4.7.3.1 Finding Nearly Coincident Entities

These commands find vertex-vertex, vertex-curve and vertex-surface pairs whose separation is within the specified tolerance range. If a tolerance range isn’t specified the default will be from merge tolerance to 10*merge tolerance. It is useful for determining if you need to expand merge tolerance to accomodate sloppy geometry.

Find Near Coincident Vertex Vertex {Body|Volume} <id_range> [low_tol <value>] [high_tol <value>]

Find Near Coincident Vertex Curve {Body|Volume} <id_range> [low_tol <value>] [high_tol <value>]

Find Near Coincident Vertex Surface {Body|Volume} <id_range> [low_tol <value>] [high_tol <value>]

4.7.4 Merging Geometry

The steps of the geometry merging algorithm used in Cubit are outlined below:

  1. Check lower order geometry, merge if possible

  2. Check topology of current entities

  3. Check geometry of current entities

  4. If both entities are meshed, check topology of meshes.

  5. If geometric topology, geometry, and mesh topology are alike, merge.

Thus, in order for two entities to merge, the entities must correspond geometrically and topologically, and if both are meshed must have topologically equivalent meshes. The geometric correspondence usually comes from constructing the model that way. The topological correspondence can come from that process as well, but also can be accomplished in Cubit using Imprinting.

If both entities are meshed, they can only be merged if the meshes are topologically identical. This means that the entities must have the same number of each kind of mesh entity, and those mesh entities must be connected in the same way. The mesh on each entity need not have nodes in identical positions. If the node positions are not identical, the position of the nodes on the entity with the lowest ID will be used in the resulting merged mesh.

There are several options for merging geometry in Cubit.

4.7.4.1 Merge geometry automatically

Merge All [Group|Body|Surface|Curve|Vertex] [group_results][tolerance <value>]

All topological entities in the model or in the specified bodies are examined for geometric and topological correspondence, and are merged if they pass the test.

If a specific entity type is specified with the Merge all, only complete entities of that type are merged. For example, if Merge all surface is entered, only vertices which are part of corresponding surfaces being merged; vertices which correspond but which are not part of corresponding surfaces will not be merged. This command can be used to speed up the merging process for large models, but should be used with caution as it can hide problems with the geometry.

4.7.4.2 Test for merging in a specified group of geometry

Merge {Group|Body|Surface|Curve|Vertex} <id_range>[With {Group|Body|Surface|Curve|Vertex} <id_range>][group_results][tolerance<value>]

All topological entities in the specified entity list, as well as lower order topology belonging to those entities, are examined for merging. This command can be used to prevent merging of entities which correspond and would otherwise be merged, e.g. slide surfaces.

4.7.4.3 Force merge specified geometry entities

Merge Vertex <id> with Vertex <id> Force

Merge Curve <id> with Curve <id> Force

Merge Surface <id> with Surface <id> Force

This command results in the specified entities being merged, whether they pass the geometric correspondence test or not. This command should only be used with caution and when merging otherwise fails; instances where this is required should be reported to the Cubit development team.

4.7.4.4 Preventing geometry from merging

Body <id_range> Merge [On | Off]

Volume <id_range> Merge [On | Off]

Surface <id_range> Merge [On | Off]

Curve <id_range> Merge [On | Off]

Vertex <id_range> Merge [On | Off]

These commands provide a method for preventing entities from merging. If merging is set to off for an entity, merging commands (e.g. "merge all") will not merge that entity with any other.

4.7.4.5 Other Merge Commands

Set Merge Test BBox {on|OFF}

This is an additional test for merging to see if a pair of surfaces should merge. First, it creates a bounding box for each surface by summing individual bounding boxes of each of the surface’s curves. A comparison is then made to see if these two bounding boxes are within tolerance. This can help to weed out any potential incorrect merges that can result from non-tight bounding boxes.

Set Merge Test InternalSurf {on|OFF|spline}

This is an extra check when merging surfaces. A point on one surface, closest to its centroid is found. Another point, closest to this point is found on the other surface. If these two points are not within merge tolerance, the two surfaces will not be merged. If set to on, all surface types will be included in this check. If set with the spline option, then splines are only checked this way; analytic surfaces are excluded. This is another check to prevent incorrect merges from occurring.

4.7.5 Using Geometry Merging to Verify Geometry

Geometry merging is often used to verify the correctness of an assembly of volumes. For example, groups of unmerged surfaces can be used to verify the outer shell of the assembly (see Examining Merged Entities.) There is other information that comes from the merge all command that is useful for verifying geometry.

In typical geometric models, vertices and curves which get merged will usually be part of surfaces containing them which get merged. So, if a merge all command is used and the command reports that vertices and curves have been merged, this is usually an indication of a problem with geometry. In particular, it is often a sign that there are overlapping bodies in the model. The second most common problem indicated by merging curves and vertices is that the merge tolerance is set too high for a given model. In any event, merged vertices and curves should be examined closely.

4.7.6 Unmerging

The unmerge command is used to reverse the merging operation. This is often in cases where further geometry decomposition must be done.

To unmerge

  1. On the Command Panel, click on Geometry.

  2. Click Volume,Surface or Curve.

  3. Click on the Imprint Merge action button.

  4. Select Unmerge from the drop-down menu.

  5. Enter in the appropriate values for Body ID(s), Surface ID(s) or Curve ID(s). This can also be done using the Pick Widget function.

  6. Click Apply.

Unmerge {all|<entity_list> [only]}

Un-merging an entity means that the specified geometric entity and all lower-order (or child) entities will no longer share non-manifold topology with any other entities. For example, if a body is unmerged, that body will no longer share any surfaces, curves, or vertices with any other body.

[Set] Unmerge Duplicate_mesh {On|OFF}

If any meshed geometry is unmerged, the mesh is kept as necessary to keep the mesh of higher-order entities valid. For example, if a surface shared by two volumes is to be unmerged and only one of the volumes is meshed, the surface mesh will remain with whichever surface is part of the meshed volume.

When unmerging meshed entities, the default behavior of the code is that the placement if the mesh is determined by the following rules:

If unmerge duplicate_mesh is turned on, the rules described above are overwritten and whenever a meshed entity is unmerged the mesh is always copied such that both entities remain meshed.

To get back to the default behavior, turn unmerge duplicate_mesh off.