Open CASCADE Technology 7.8.0
|
Tool class for detection of self-sections in the given shape. This class is based on BRepExtrema_OverlapTool and thus uses shape tessellation to detect incorrect mesh fragments (pairs of overlapped triangles belonging to different faces). Thus, a result depends critically on the quality of mesh generator (e.g., BREP mesh is not always a good choice, because it can contain gaps between adjacent face triangulations, which may not share vertices on common edge; thus false overlap can be detected). As a result, this tool can be used for relatively fast approximated test which provides sub-set of potentially overlapped faces. More...
#include <BRepExtrema_SelfIntersection.hxx>
Public Member Functions | |
BRepExtrema_SelfIntersection (const Standard_Real theTolerance=0.0) | |
Creates uninitialized self-intersection tool. | |
BRepExtrema_SelfIntersection (const TopoDS_Shape &theShape, const Standard_Real theTolerance=0.0) | |
Creates self-intersection tool for the given shape. | |
Standard_Real | Tolerance () const |
Returns tolerance value used for self-intersection test. | |
void | SetTolerance (const Standard_Real theTolerance) |
Sets tolerance value used for self-intersection test. | |
Standard_Boolean | LoadShape (const TopoDS_Shape &theShape) |
Loads shape for detection of self-intersections. | |
void | Perform () |
Performs detection of self-intersections. | |
Standard_Boolean | IsDone () const |
True if the detection is completed. | |
const BRepExtrema_MapOfIntegerPackedMapOfInteger & | OverlapElements () const |
Returns set of IDs of overlapped sub-shapes (started from 0). | |
const TopoDS_Face & | GetSubShape (const Standard_Integer theID) const |
Returns sub-shape from the shape for the given index (started from 0). | |
const Handle< BRepExtrema_TriangleSet > & | ElementSet () const |
Returns set of all the face triangles of the shape. | |
Public Member Functions inherited from BRepExtrema_ElementFilter | |
virtual | ~BRepExtrema_ElementFilter () |
Releases resources of element filter. | |
Protected Member Functions | |
virtual BRepExtrema_ElementFilter::FilterResult | PreCheckElements (const Standard_Integer theIndex1, const Standard_Integer theIndex2) |
Filter out correct adjacent mesh elements. | |
BRepExtrema_ElementFilter::FilterResult | isRegularSharedVertex (const BVH_Vec3d &theSharedVert, const BVH_Vec3d &theTrng1Vtxs1, const BVH_Vec3d &theTrng1Vtxs2, const BVH_Vec3d &theTrng2Vtxs1, const BVH_Vec3d &theTrng2Vtxs2) |
Checks if the given triangles have only single common vertex. | |
BRepExtrema_ElementFilter::FilterResult | isRegularSharedEdge (const BVH_Vec3d &theTrng1Vtxs0, const BVH_Vec3d &theTrng1Vtxs1, const BVH_Vec3d &theTrng1Vtxs2, const BVH_Vec3d &theTrng2Vtxs2) |
Checks if the given triangles have only single common edge. | |
Additional Inherited Members | |
Public Types inherited from BRepExtrema_ElementFilter | |
enum | FilterResult { NoCheck , Overlap , DoCheck } |
Result of filtering function. More... | |
Tool class for detection of self-sections in the given shape. This class is based on BRepExtrema_OverlapTool and thus uses shape tessellation to detect incorrect mesh fragments (pairs of overlapped triangles belonging to different faces). Thus, a result depends critically on the quality of mesh generator (e.g., BREP mesh is not always a good choice, because it can contain gaps between adjacent face triangulations, which may not share vertices on common edge; thus false overlap can be detected). As a result, this tool can be used for relatively fast approximated test which provides sub-set of potentially overlapped faces.
BRepExtrema_SelfIntersection::BRepExtrema_SelfIntersection | ( | const Standard_Real | theTolerance = 0.0 | ) |
Creates uninitialized self-intersection tool.
BRepExtrema_SelfIntersection::BRepExtrema_SelfIntersection | ( | const TopoDS_Shape & | theShape, |
const Standard_Real | theTolerance = 0.0 |
||
) |
Creates self-intersection tool for the given shape.
|
inline |
Returns set of all the face triangles of the shape.
|
inline |
Returns sub-shape from the shape for the given index (started from 0).
|
inline |
True if the detection is completed.
|
protected |
Checks if the given triangles have only single common edge.
|
protected |
Checks if the given triangles have only single common vertex.
Standard_Boolean BRepExtrema_SelfIntersection::LoadShape | ( | const TopoDS_Shape & | theShape | ) |
Loads shape for detection of self-intersections.
|
inline |
Returns set of IDs of overlapped sub-shapes (started from 0).
void BRepExtrema_SelfIntersection::Perform | ( | ) |
Performs detection of self-intersections.
|
protectedvirtual |
Filter out correct adjacent mesh elements.
Reimplemented from BRepExtrema_ElementFilter.
|
inline |
Sets tolerance value used for self-intersection test.
|
inline |
Returns tolerance value used for self-intersection test.