<<< Modeling Support | Chapters | Partitions and Rollback >>> |
Parasolid includes the following support for simplifying models:
Parasolid provides two functions that you can use to simplify the geometry in a body:
These functions attempt the following simplifications for the geometry shown:
Geometry | Original form | Simplified form |
---|---|---|
These functions are particularly useful for simplifying all or part of a body after importing it into Parasolid. See Chapter 44, "Data Import", for more information.
You can use PK_BODY_find_facesets to find sets of faces bounded by a given set of edges in a body. These facesets can then be deleted from the body, if desired, as described in Section 40.5, "Deleting facesets".
PK_BODY_find_facesets receives and returns the following arguments:
The options that you can specify are as follows:
Option | Description |
---|---|
selector |
Specifies which facesets to return if one or more |
alternate |
Whether or not to return alternating facesets, starting with the supplied selecting_topol. Default: PK_LOGICAL_false. See Section 40.2.2, "Returning alternating facesets", for more information. |
n_selecting_topol selecting_topol |
An array of topologies that are used to select which facesets are returned, together with the number of elements in the array. The precise facesets that are returned depends on the value of
If |
want_bounds |
Whether to return the bounding edges of each faceset. Default: PK_LOGICAL_false. |
You can use the
selector
and
selecting_topol
options to choose exactly which facesets are returned by PK_BODY_find_facesets.
The
selector
option takes the following values:
This is illustrated in Figure 40-1.
Figure 40-1 Choosing which facesets to return
If a given topology in
selecting_topol
belongs to several facesets, then they are all selected or not selected, depending on the value of
selector
.
Note: The above description applies only if
alternate
is PK_LOGICAL_false (the default). Section 40.2.2, "Returning alternating facesets", describes the behavior of
selector
and
selecting_topol
when alternate is PK_LOGICAL_true. |
If the
alternate
option is PK_LOGICAL_true, you can return alternate facesets in a body. The behavior of this option depends on the value of
selector
, and requires that
selecting_topol
contains a single topological entity, which is used to identify the "root" faceset in a body from which alternating facesets are calculated.
Consider the body shown in Figure 40-2. The "root" faceset is the innermost faceset that contains the selecting topology.
selector
is PK_boolean_include_c, the "root" faceset is returned, the next outermost faceset is not returned, the next outermost faceset is returned, and so on.
selector
is PK_boolean_exclude_c, the "root" faceset is
not returned, the next outermost faceset
is returned, the next outermost faceset is not returned, and so on.
selector
is PK_boolean_off_c, all facesets are returned, regardless of the value of
alternate
.Figure 40-2 Returning alternating facesets
You can use the function PK_BODY_identify_details to identify specific types of details in a body. The function returns each detail of a specified type as a faceset, which you might then delete from the model as described in Section 40.5.
PK_BODY_identify_details receives and returns the following arguments:
Argument | Description |
---|---|
body |
|
details n_details |
The types of detail you want to identify, together with the number of types of detail. |
options |
|
Returned | Description |
results |
You should delete any redundant topology before calling this function, using PK_TOPOL_delete_redundant.
The types of detail that you can identify can be any of the following:
Detail | Description |
---|---|
PK_BODY_identify_details returns a PK_identify_details_r_t structure that includes an array of identified
facesets
, together with an array of
details
. Each detail in the
details
array describes the type of detail represented by the corresponding faceset in the
facesets
array. The returned detail values may be any of the following:
Detail | Description |
---|---|
A cylindrical hole with two closed ends (i.e. enclosing a cavity). |
|
A cylindrical hole contains at least one face with the following restrictions:
A cylindrical hole may also have additional faces, so long as each additional face has two loops and a ruled surface. Additional faces make it possible to identify cylindrical holes that contain countersinks and counterbores.
Cylindrical holes can be closed by any face that has a ruled surface, in particular a plane or cone.
You can use the
hole_cyl_radius
option in PK_BODY_identify_details_o_t to constrain PK_BODY_identify_details to only return cylindrical holes with a radius of less than a specified value.
You can use PK_FACE_identify_blends to identify blends within a body. This function lets you specify a number of constraints to control the characteristics of the blend faces that are returned.
Note: PK_FACE_identify_blends can only identify constant radius blends with a rolling-ball cross section plane. However, the blends need not necessarily be
specified as constant radius rolling-ball blends. For example, a B-surface, or even a variable radius rolling-ball blend, may be correctly identified if its radius only varies along the extent of the blend within a specified tolerance. |
PK_FACE_identify_blends receives and returns the following arguments:
Received | Description |
---|---|
n_faces faces |
The number of faces from which to search for blends, and the faces themselves. |
ident_type |
How to identify blends from the supplied
|
options |
|
Returned | Description |
results |
A return structure containing details about
the blend facesets identified from the supplied |
The PK_FACE_identify_blends_o_t options structure contains the following fields:
Option | Description |
---|---|
limit_radii |
Control which blends are returned based on their radii. See Section 40.4.3, "Identifying blends based on radius" for information. Default: Return all identified blends, regardless of size. |
convexity |
Control which blends are returned based on their convexity. See Section 40.4.4, "Identifying blends based on convexity" for information. Default: Return all identified blends, regardless of convexity. |
tolerance |
A tolerance. This is used when checking the constraints specified by |
want_radii |
Whether to return the radius of each identified chain of blends. See Section 40.4.5, "Controlling returned information" for information. Default: PK_LOGICAL_false. |
want_convexities |
Whether to return the convexity of each identified chain of blends. See Section 40.4.5, "Controlling returned information" for information. Default: PK_LOGICAL_false. |
PK_FACE_identify_blends works by identifying and returning chains of connected blend faces. For each blend face in the supplied
faces
, PK_FACE_identify_blends can find other blend faces that are connected to it (whether or not they are in
faces
).
In a chain of blends, a branch face is a blend face that splits the chain into two or more branches.
You use the
ident_type
argument of PK_FACE_identify_blends to control how chains of blends are returned, with respect to the branch faces in the chain and the supplied
faces
. This can take one of the following values:
Value | Description |
---|---|
Only return chains of blends that are contained in the supplied |
|
Return a minimal chain of connected blends, excluding branch faces. This option looks for chains of blends starting from the supplied faces. If a branch face is identified outside the specified |
|
This is the same as PK_blend_identify_exc_chain_c, except that branch faces outside the specified faces are also included in the returned blends. |
|
Return a maximal chain of blends. This option makes the chains as long as possible. If a branch face is identified, it is included in the returned blend faces, and the function continues the chain of blends along each branch. |
|
Return chains of blends that are not within the supplied |
The difference between these values is illustrated in Figure 40-3. Note in particular the difference between PK_blend_identify_inc_chain_c, which returns branch faces that are not in the supplied
faces
, and PK_blend_identify_exc_chain_c, which only returns branch faces if they are in the supplied
faces
.
Figure 40-3 Choosing how to identify blends in the supplied set of faces
PK_FACE_identify_blends contains powerful controls to let you control whether or not a given chain of blends is returned based on its radius. These controls are available in the
limit_radii
field of PK_FACE_identify_blends_o_t.
The
limit_radii
structure contains two elements:
interval
containing a low and a high value.
comparison
operator that describes how the values in
interval
should be compared.
When PK_FACE_identify_blends identifies a chain of blends, the radius of the blends in the chain is tested using the supplied
interval
and
comparison
. If the result of this comparison is true, then the chain of blends is returned by PK_FACE_identify_blends. If the result is false, then the chain of blends is not returned.
The comparison operations available are as follows:
Note: PK_FACE_identify_blends only finds blends with a constant radius. It cannot be used to identify any blend whose radius varies by more than the
tolerance
specified in the options structure. |
You can use the
convexity
field in PK_FACE_identify_blends_o_t to ensure that only chains of blends with a particular convexity are returned. This can take the following values:
Value | Description |
---|---|
You can control the information that PK_FACE_identify_blends returns using the
want_radii
and
want_convexities
fields in PK_FACE_identify_blends_o_t.
want_radii
is PK_LOGICAL_true, then the radius of each blend returned by PK_FACE_identify_blends is returned.
want_convexities
is PK_LOGICAL_true, then the convexity of each blend returned by PK_FACE_identify_blends is returned
In each case, the information is returned in the PK_FACE_identify_blends_r_t return structure as an array parallel to the
blend_facesets
array.
You can use PK_FACE_delete_facesets to delete facesets from a body. These facesets could typically be those identified by calls to either PK_BODY_find_facesets, PK_BODY_identify_details, or PK_FACE_identify_blends.
PK_FACE_delete_facesets receives and returns the following arguments:
PK_FACE_delete_facesets takes a number of options, available in PK_FACE_delete_facesets_o_t. The options available are as follows:
Option | Description |
---|---|
allow_disjoint |
If PK_LOGICAL_true, PK_FACE_delete_facesets returns a disjoint body if deleting facesets splits the body into two or more components. Default: PK_LOGICAL_false. |
heal_action |
If PK_FACE_heal_yes_c, PK_FACE_delete_facesets attempts to heal the body using any available method after deleting the facesets. If PK_FACE_heal_no, wounds are not healed, and each deleted faceset is replace by a single rubber face. If any other value, only the specified heal_action will be attempted. See Section 14.2, "Methods for healing wounds" for details about the available values. Default: PK_FACE_heal_yes_c. |
n_details details |
These options are used to pass detail types to PK_FACE_delete_facesets for the facesets you want to delete. If you know the detail type of each of the facesets you are passing into the function, passing this information as well can help performance.
The
Setting |
<<< Modeling Support | Chapters | Partitions and Rollback >>> |