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
Group {<‘name’>|<id>} add [Surface | Curve | Vertex] with is_merged
Group {<’name’>|<id>} add [Surface | Curve | Vertex] with is_merged = 0
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
On the Command Panel, click on Geometry and then Volume.
Click on the Imprint Merge action button.
Select Imprint from the drop-down menu.
Enter in the appropriate values for Body ID(s). This can also be done using the Pick Widget function.
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
On the Command Panel, click on Geometry and then Volume.
Click on the Imprint Merge action button.
Select Imprint from the drop-down menu.
Enter in the appropriate values for Body ID(s). This can also be done using the Pick Widget function.
Click the box With.
Select Curve ID(s), Vertex ID(s) or Location. and enter in the appropriate values.
If Location is selected, click on the Location... button. Another window will appear to specify setting.
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]
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
On the Command Panel, click on Geometry and then Volume.
Click on the Imprint Merge action button.
Select Tolerant Imprint from the drop-down menu.
Enter in the appropriate values for Body ID(s). This can also be done using the Pick Widget function.
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
On the Command Panel, click on Geometry and then Surface.
Click on the Imprint Merge action button.
Select Tolerant Imprint from the drop-down menu.
Select With Curve ID(s).
Enter in the appropriate values for Body ID(s) and With Curve ID(s). This can also be done using the Pick Widget function.
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>]
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
Imprint Mesh {Body | Volume} <id_list>
4.7.2.4 Imprint Settings
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
On the Command Panel, click on Geometry.
Click Volume, Surface, Curve or Vertex.
Click on the Imprint Merge action button.
Select Merge from the drop-down menu.
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.
Select Set Tolerance and enter in the appropriate value for Tolerance.
Click Apply.
Merge Tolerance <val>
4.7.3.1 Finding Nearly Coincident Entities
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:
Check lower order geometry, merge if possible
Check topology of current entities
Check geometry of current entities
If both entities are meshed, check topology of meshes.
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}
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
On the Command Panel, click on Geometry.
Click Volume,Surface or Curve.
Click on the Imprint Merge action button.
Select Unmerge from the drop-down menu.
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.
Click Apply.
Unmerge {all|<entity_list> [only]}
[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 neither entity has meshed parent entities, the mesh is kept on one of the two entities.
If one entity has a meshed parent entity, the mesh is kept on
that entity.If both entities have meshed parents, the mesh is kept on one
and copied on the other.
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.