![]() |
Clash Detection Of Bodies |
<<< Calculating Minimum And Maximum Distance | Chapters | Checking >>> |
You can use PK_TOPOL_clash to detect clashes between any combination of solids, sheets, and wire bodies. This function receives two sets of topologies, and returns any entities that are found to clash, together with (optionally) information about the nature of each clash.
For an example of this functionality, see the code example in the
C++\Code Examples\Inquiries\Model Analysis\Clashing
folder, located in
example_applications
in your Parasolid installation folder.
Note: This functionality offers partial support for facet geometry.See PK_TOPOL_clash for more information. |
Options available with this clash detection function for controlling the output are:
find_all |
If PK_LOGICAL_true, find all the clashes between the two topologies. If PK_LOGICAL_false, stop after the first clash. (Default: PK_LOGICAL_false) |
find_intersect |
If PK_LOGICAL_true, classify each clash between the two topologies, and return the information in the |
mul_target_tf mul_tool_tf |
You can specify transforms to apply to the targets and tools supplied to PK_TOPOL_clash using the |
target_owner tool_owner |
In the case of face clashes, clash information returned by PK_TOPOL_clash is based on the interaction of the clashing faces. If you pass in the owning bodies of the target and tool using these options, then clash information returned is based on the interaction between these owning bodies instead. (Default: null) |
If
find_intersect
is PK_LOGICAL_true, PK_TOPOL_clash returns information that classifies each type of clash detected. This information is returned in the
clash_type
structure (PK_TOPOL_clash_type_t) of the
clashes
return structure.
Any clash can be classified as one of three types:
The precise meaning of each type of clash depends on the nature of the entities you are examining for clashes, as described in the rest of this section.
Note: When detecting clashes which involve vertices, no attempt is made to describe the type of clash. |
When detecting clashes in entities of the same dimension,
clash_type
is classified according to the behaviour of the bounding topology of the entities.
For different types of entities,
clash_type
is as follows:
As in the case for entities of the same dimension, when detecting clashes between bodies of different dimensions,
clash_type
is classified according to the behaviour of the bounding topology of the entities
Clash detection in sheet bodies and wire bodies is treated as a special case, since it does not depend solely on the interaction of the bounding topologies of the bodies in which you are looking for clashes.
Two sheet bodies only interfere if they actually cross each other (as shown in Figure 29-1(a)). Two sheet bodies that lie coincident within the same plane will abut ( Figure 29-1(b)).
Note: Sheet bodies behave differently to faces. For faces,
Figure 29-1(b) would be classed as interference, rather than abutment. |
Figure 29-1 Detecting clashes in sheet bodies
When two wire bodies clash, they are not classified, since any classification is meaningless. Instead, the
clash_type
is returned as PK_TOPOL_clash_exists for any wire body clashes.
PK_TOPOL_clash returns any entities in the two sets of topologies that are found to clash. The types of those entities depends on both:
The following table shows what entities are returned if a clash exists.
The second column shows the entities that are returned if interference or abutment is detected. The third column shows the entities that are returned if one set of topologies is entirely contained by the other.
Note: When looking for clashes between bodies of different topological dimensions, the entity with the lowest possible dimension is returned first. When seeking clashes between solid and wire bodies, two types of entity may be returned:
|
Face clashes can go undetected in either of the following situations:
<<< Calculating Minimum And Maximum Distance | Chapters | Checking >>> |