<<< Manifold Bodies | Chapters | Checking >>> |
General bodies are an alternative way of representing models to manifold bodies. In addition to all the manifold body stages, general bodies can contain
generalized topology that allows any combination of non-manifold, cellular, or mixed-dimension parts in a single, valid body.General bodies allow Parasolid to model parts with the following structures, which would be considered invalid when modeling only in manifold terms.
Internal partition faces in bodies enable:
Figure 7-1 General body partitioned by an internal face
To enable idealized representations of bodies. For example, a cooling hole in a body may be represented by a wire edge (i.e. no thickness).
Figure 7-2 General body of mixed dimensions
This is a state of modeling that can often be achieved at an intermediate stage, e.g. during a boolean.
In Figure 7-3 the edge between the two bosses is non-manifold - there are four faces meeting at this edge.
A general body consists of the following.
A general body has one or more regions. These, together with their boundaries, make up the whole of 3-space, and do not overlap. One region in the body is distinguished as the exterior region, which is therefore infinite; all the other regions in a general body are finite.
A general body may have zero or any number of faces. A face is on the boundary of one or two regions; if it is on the boundary of one region only, then the face is a 2-dimensional 'cut' subtracted from the region.
A general body may have zero or any number of edges. An edge may be part of the boundary of zero or any number of faces; if it is not part of the boundary of any face, an edge is part of exactly one shell (in which case it is called a wireframe edge, and is a 1-dimensional 'cut' subtracted from the region of which the shell forms part of the boundary).
A general body may have zero or any number of vertices. A vertex may form part of the boundary of zero or any number of edges, and of zero or any number of faces.
If it is not part of the boundary of any edge or face, the vertex forms a single shell. Such a shell can be referred to as an acorn shell, and consists of a single acorn vertex. The acorn shell forms part of the boundary of its region, and therefore represents a single point subtracted from that region.
General bodies may be generated by performing modeling operations on existing manifold or general bodies.
The results of some of these operations depend on whether PK_SESSION_set_general_topology has been called. This may affect the type of the result body, if the operation would cause a body to become, for example, non-manifold or disconnected.
The status of the generalized topology setting is output by PK_SESSION_ask_general_topology.
If generalized topology is enabled in the session, PK_BODY_boolean returns a single general body (even if the result could be a manifold body or bodies).
The resulting body or bodies can be recovered by PK_BODY_make_manifold_bodies. This process is described in detail later in this chapter.
A set of topological entities of an existing body, either manifold or general, can be copied to make a new general body, using PK_TOPOL_make_general_body.
The topology selected can be any combination of regions, faces, edges and vertices, which are copied into the new body along with the attached geometry and associated data. Any new regions or shells required to make the new body valid are also created.
A body can be transferred into a void region of another body, thereby creating a disjoint body.
If a body is broken into more than one piece by this function it becomes a disjoint general body.
A disjoint general body can be split into individual general bodies. Each new body contains a connected point-set of the original body.
General bodies with only one region and no edges with more than two faces can be swept and spun. The body is copied and the copy is transformed, then new edges and faces are added to connect corresponding vertices and edges.
This function may return a body with generalized topology as the result, if this is allowed in the session.
This function may be used on an interior void of a solid body, in which case the body becomes general.
PK_EDGE_make_faces_from_wire can be used to attach rubber faces to loops of wireframe edges in wire or general bodies. If the body is wire and there are wireframe edges remaining, then the body becomes general.
The manifold components of a general body can be extracted into individual manifold bodies using PK_BODY_make_manifold_bodies. This could be used, for example, when a boolean operation has returned a general body containing manifold components. The manifold parts can be recovered so that a greater range of modeling operations can be performed on them.
The general body is split into manifold components as follows:
Figure 7-4 Converting general bodies to manifold bodies
PK_BODY_make_manifold_bodies may create bodies which are topologically manifold, but are not valid for geometric reasons. The following cases show configurations where this might occur.
Figure 7-5 represents a general body with a single solid region, viewed from above. It contains a non-manifold edge where four faces meet.
Figure 7-5 Body with non-manifold edge
If PK_BODY_make_manifold_bodies is passed this body, it creates one manifold solid body, which is:
The result body does not pass PK_BODY_check, returning PK_FACE_state_bad_face_face_c. The application needs to split the body, or perform a modeling operation which edits or removes the offending region, to make the body valid.
Note: If Figure 7-5 represents a
sheet body with a non-manifold vertex, it creates a valid manifold body, as non-manifold vertices are allowed in sheets. |
Figure 7-6 represents a general body with a single solid region, viewed from above. It contains an extra face which cuts into the solid area.
Figure 7-6 Body with face 'cut' in solid region
If PK_BODY_make_manifold_bodies is passed this body, it creates one manifold solid body, which is:
Once again, this result body does not pass PK_BODY_check. The application needs to perform a modeling operation which edits or removes the offending faces, to make the body valid.
Alternatively, the extra face could be removed from the original body before extracting the solid body, using PK_FACE_delete_from_gen_body (see the following section, "Deleting entities from general bodies").
Note: If Figure 7-6 is a
sheet body with an edge cutting into it, it generates a valid manifold sheet body with a wireframe edge imprinted onto it. |
PK_FACE_delete_from_gen_body can be used to remove unwanted faces from a general body. This function might be used particularly when a general body is to be converted to a manifold body, to prevent:
Figure 7-7 Faces which might be deleted from a general body
PK_EDGE_delete_wireframe can be used to remove unwanted wirefame edges from a general body.
PK_VERTEX_delete_acorn removes acorn vertices from a general body.
Most Parasolid operations can be performed on bodies containing generalized topology. However, there are some restrictions.
Vertices can be added to edges, faces and regions using the imprinting functions.
Sweeping and Spinning are the only other local operations which can be performed, and they can only be applied to the whole body - individual entities within a general body cannot be swept or spun.
See Chapter 22, "Local Ops: Adding a Vertex to Topology" and "Topology changes" in Chapter 12, "Local Operations".
No other local operations work on general bodies.
It is not possible to perform blending on edges or faces of a general body.
There are some limitations to the Boolean functionality:
Note: Limitations which apply to general bodies are described in the documentation of the individual functions where applicable. |
<<< Manifold Bodies | Chapters | Checking >>> |