Geometric Modeler |
Topology |
Topology ConceptsWhat is Topology |
Technical Article |
AbstractThis paper presents the general topological concepts that are supported by CATIA V5. After defining the topology, the basic entities (cell, domain, body) are precisely described. Then, non-manifold topologies are introduced and illustrated. A summarized chart allows the reader to visualize the links between those different concepts. |
Topology allows to represent objects, by detailing their boundaries and the connections between their different parts. This figure shows an example of the topological description of a simple shell object.
|
"Regular" objects are called manifold. Objects presenting "hairs" or "scales", are called non-manifold. The use of non manifold topology is very useful to simplify the representation of objects: in an early stage of design, a thin stiffener of a solid object may be represented as a 2D element ("scale").
In this object, a stiffener has been modelized as a 2D topological element (the face F).
The edge E1 is an external boundary of the face F, but is also immersed into a face of the 3D
object V: this is a non-manifold configuration.
The object B without the face F is manifold. |
See The Manifold and Non Manifold Concepts for a detailed presentation of these concepts.
CGM uses the technology called "cell complexes" (see the paper of Rossignac for instance), which allows to:
[Top]
The topology manages three types of entities:
We detail here these entities.
[Top]
A cell is a connected limitation of an underlying geometry.
There are four types of cells according to the dimension of the space in which they lie.
Space Dimension | Cell Type | Associated geometry |
---|---|---|
0 | Vertex | Point |
1 | Edge | Curve |
2 | Face | Surface |
3 | Volume | 3D Space |
Cells of upper dimensions are bounded by cells of lower dimensions: a volume is the limitation of the 3D space by faces, a face is the limitation of a surface by edges and an edge is the limitation of a curve by vertices.
[Top]
A domain is a set of cells of dimension n connected by cells of dimension n-1. A domain can possibly contain only one cell.
Domains are useful to manipulate altogether the boundaries of a cell of upper dimension. If a face, for instance, is bounded by four connected edges, all those edges are conveniently grouped into a domain. Like cells, domains bear specific names according to what they actually contain.
A ... | is a set of ... | bounding ... |
---|---|---|
loop | edges connected by vertices | a face |
vertex in face | one vertex | a face |
lump | volumes connected by faces | the 3D space |
shell | faces connected by edges | the 3D space or a volume |
wire | edges connected by vertices | the 3D Space |
vertex in volume | one vertex | the 3D Space or a volume |
Lumps, shells, wires and vertices in volume are boundaries of 3D entities. Loops and vertices in faces are boundaries of 2D entities. No domain is associated to the boundaries of edges (1D entities): vertices directly bounds edges, because such domain does not bring any added value to the model.
|
Domains can define outer, inner, or immersed frontiers: vertex in face or vertex in volume are typical immersed boundaries. Notice that loops (resp. shell) can also be immersed into a face (resp. volume), but this type of domain is always called a loop (resp. shell) and not a "edge in face" (resp. "face in volume").
Reading the different definitions of the domains, you can see that two faces (resp. two volumes) cannot be connected only by a vertex (resp. by an edge or a vertex). In this case, it will be necessary to have two shells (resp. two lumps). Domains define manifold components inside non-manifold objects.
|
[Top]
A body is a set of domains non necessarily connected (with non common boundary of any dimension). Bodies must satisfy the following properties:
Property 1: Let F1 be a face of the body B. The edge E, boundary of F1, has also to belong to the body B. Property 2: |
The body only references domains, even if there is only one cell in the domain. See the example of the following section: the body contains only one volume, but it contains it through the lump domain.
[Top]
This example shows the breaking up into cells and domains of a body representing a cuboid with a cavity. In order to keep things clear, some relations have not been displayed.
The body is composed of a Lump made of one Volume.
The Volume has two shell boundaries: an inner and an outer Shell. Each Shell is made of six Faces. Each Face is bounded by a Loop. Each Loop owns 4 Edges and each Edge is bounded by two Vertices. Notice that each edge is used by two faces and each vertex is also referred three times. |
[Top]
CGM allows you to create and use manifold and non-manifold bodies. Mathematically speaking, a N-manifold object is a set of points which neighborhood is represented by a N-dimensional bowl. Take a lump domain (resp. shell, loop). If for each point of this domain, there exists a neighborhood of the domain equivalent to only one piece of a sphere (resp. disk, segment), the lump (resp. shell, loop) is 3D (resp. 2D, 1D ) -manifold. Otherwise, it is non manifold.
The following figures shows examples of manifold and non manifold objects. The place where there are non manifold are highlighted. The bodies can be:
manifold | non manifold | |
1D_ | ||
2D_ | ||
3D_ |
The non-manifold topology offers several benefits:
[Top]
When a body contains non connected cells, or non-manifold configurations, it will be necessary to divide it into several manifold domains. The following steps insure the unique decomposition of a body into domains:
The body references two domains:
The face F6 (resp. F7) has two loops: one for the external boundary, the other for defining the "edge on face" E1 (resp. E2). This edge is also referenced as a boundary of the face Face: this allows the connection between the 3D and 2D domains. (In order to keep things clear, some relations have not been displayed.) |
The two faces F1 and F2 have only the vertex V in common: Each face has is own shell.
The edge E14, E15, E21, E22 have the vertex V in common: this vertex allows the connection between the two domains. (In order to keep things clear, some relations have not been displayed.) |
The edge E21 of the face F2 also bounds the face F1. It is then referenced by two
loops, Loop2 for F2 and L defining an immersed domain of the face F1
(In order to keep things clear, some relations have not been displayed.) |
The edge E is no more immersed: it is part of the external boundaries of the three
faces. In this case, the body has three shells.
If the body only contains the two faces F1 and F2, it would only have a one shell made of the two faces. (In order to keep things clear, some relations have not been displayed.) |
[Top]
Most operations can be performed on non-manifold bodies, but not all. The trend is to allow the user to check whether he accepts to generate a non-manifold result. For example, you won't be able to extrude or fill a profile which has a closed portion but exhibits a free edge and unless you uncheck the "Manifold" check box, you won't be able to join a non-manifold body to another body.
If you try to manipulate non-manifold bodies by using a CATIA interactive command, you will get a message warning you that the body is non-manifold. Usually, you won't be able to complete the intended operation unless you make your initial body manifold. CATIA dialogs allow you to remove sub-elements in order to obtain appropriate manifold bodies. But the operation which consists in removing sub-elements can only be applied to manifold domains. If your body is not made up of correct manifold domains, you won't be able to clean or transform your initial body. This is why "Dividing a Body into Domains" is of importance.
Note that CGM services allow you to create non-manifold bodies while usually the CATIA workbenches will "break" the created bodies into appropriate domains. That way, the resulting bodies are non-manifold-like but contain sub-elements easy to be manipulated. The examples below illustrate this strategy.
Example 1: Using a NON-MANIFOLD Body in a Join Operation
Create a three-edge body (see figure on the right-hand side)
by assembling three concurrent wires (use CATTopWire then CATHybAssemble). This body is
made up of four vertices and three edges. It is clearly non-manifold. You can check
this by using the CATBody::GetCellsHighestDimension method. If you try to join the highlighted body (a line) with the three-edge body by using the Join interactive command, you will get the message: "Update error: Non Manifold Body".
|
|
Now, if you try to remove the edge that makes the resulting
body non-manifold (use the "Sub-Elements to Remove" tab in the "Join Definition" dialog
box), you will get the message: "Bad topology". This message tells you that the sub-element to be deleted is not fully contained into a domain. Actually, it shares a vertex with two other wires. You cannot go further in your operation, you must rebuild the initial body to make it manifold or divide it into manifold domains as indicated above. In this case, the best would consist in dividing the body into three single-edge wires not sharing any vertices. |
Example 2: Using a MANIFOLD Body in a Join Operation (to be compared with Example 1)
Given a three-edge manifold body looking like the one above
but made up of three wires and six vertices, if you try to join the highlighted body (a
line) with the three-edge body, you will get also the message: "Update error: Non Manifold Body". But now, if you try to remove the edge that makes the resulting body non-manifold (use the "Sub-Elements to Remove" tab in the "Join Definition" dialog box), CATIA will remove it and the join operation will complete. |
|
When you try to create a non-manifold body by using the Sketcher commands, the created body will be non-manifold-like, but actually it will be automatically divided into manifold domains so that further operations requiring to remove unappropriate elements will be made easier. The Sketcher sticks to this strategy. |
[Top]
[Top]
[1] | The CGM Objects |
[Top] |
Version: 1 [Mar 2000] | Document created |
[Top] |
Copyright © 2000, Dassault Systèmes. All rights reserved.