Open CASCADE Technology  7.5.0
Public Member Functions | Protected Member Functions | Static Protected Member Functions | Protected Attributes
IntTools_EdgeEdge Class Reference

The class provides Edge/Edge intersection algorithm based on the intersection between edges bounding boxes. More...

#include <IntTools_EdgeEdge.hxx>

Public Member Functions

 IntTools_EdgeEdge ()
 Empty contructor. More...
 
 ~IntTools_EdgeEdge ()
 Destructor. More...
 
 IntTools_EdgeEdge (const TopoDS_Edge &theEdge1, const TopoDS_Edge &theEdge2)
 Contructor. More...
 
 IntTools_EdgeEdge (const TopoDS_Edge &theEdge1, const Standard_Real aT11, const Standard_Real aT12, const TopoDS_Edge &theEdge2, const Standard_Real aT21, const Standard_Real aT22)
 Contructor. More...
 
void SetEdge1 (const TopoDS_Edge &theEdge)
 Sets the first edge. More...
 
void SetEdge1 (const TopoDS_Edge &theEdge, const Standard_Real aT1, const Standard_Real aT2)
 Sets the first edge and its range. More...
 
void SetRange1 (const IntTools_Range &theRange1)
 Sets the range for the first edge. More...
 
void SetRange1 (const Standard_Real aT1, const Standard_Real aT2)
 Sets the range for the first edge. More...
 
void SetEdge2 (const TopoDS_Edge &theEdge)
 Sets the second edge. More...
 
void SetEdge2 (const TopoDS_Edge &theEdge, const Standard_Real aT1, const Standard_Real aT2)
 Sets the first edge and its range. More...
 
void SetRange2 (const IntTools_Range &theRange)
 Sets the range for the second edge. More...
 
void SetRange2 (const Standard_Real aT1, const Standard_Real aT2)
 Sets the range for the second edge. More...
 
void SetFuzzyValue (const Standard_Real theFuzz)
 Sets the Fuzzy value. More...
 
void Perform ()
 Performs the intersection between edges. More...
 
Standard_Boolean IsDone () const
 Returns TRUE if common part(s) is(are) found. More...
 
Standard_Real FuzzyValue () const
 Returns Fuzzy value. More...
 
const IntTools_SequenceOfCommonPrtsCommonParts () const
 Returns common parts. More...
 
void UseQuickCoincidenceCheck (const Standard_Boolean bFlag)
 Sets the flag myQuickCoincidenceCheck. More...
 
Standard_Boolean IsCoincidenceCheckedQuickly ()
 Returns the flag myQuickCoincidenceCheck. More...
 

Protected Member Functions

void CheckData ()
 Checks the data. More...
 
void Prepare ()
 Prepares the data. More...
 
void ComputeLineLine ()
 Computes Line/Line intersection. More...
 
void FindSolutions (IntTools_SequenceOfRanges &theRanges1, IntTools_SequenceOfRanges &theRanges2, Standard_Boolean &bSplit2)
 Intermediate function. More...
 
void FindSolutions (const IntTools_Range &theR1, const Bnd_Box &theBox1, const IntTools_Range &theR2, const Bnd_Box &theBox2, IntTools_SequenceOfRanges &theRanges1, IntTools_SequenceOfRanges &theRanges2)
 Looking for the exact intersection ranges. More...
 
void MergeSolutions (const IntTools_SequenceOfRanges &theRanges1, const IntTools_SequenceOfRanges &theRanges2, const Standard_Boolean bSplit2)
 Merges found solutions. More...
 
Standard_Integer CheckCoincidence (const Standard_Real aT11, const Standard_Real aT12, const Standard_Real aT21, const Standard_Real aT22, const Standard_Real theCriteria, const Standard_Real theCurveRes1)
 Checks if edges coincide on the ranges. More...
 
void AddSolution (const Standard_Real aT11, const Standard_Real aT12, const Standard_Real aT21, const Standard_Real aT22, const TopAbs_ShapeEnum theType)
 Adds common part of the given type to myCommonParts. More...
 
void FindBestSolution (const Standard_Real aT11, const Standard_Real aT12, const Standard_Real aT21, const Standard_Real aT22, Standard_Real &aT1, Standard_Real &aT2)
 Looking for the minimal distance between edges on the ranges. More...
 
Standard_Boolean IsIntersection (const Standard_Real aT11, const Standard_Real aT12, const Standard_Real aT21, const Standard_Real aT22)
 Checks is there an intersection between edges on the given ranges (for nearly conicident edges) More...
 
Standard_Boolean IsCoincident ()
 Checks if the edges are coincident really. More...
 

Static Protected Member Functions

static Standard_Boolean FindParameters (const BRepAdaptor_Curve &theBAC, const Standard_Real aT1, const Standard_Real aT2, const Standard_Real theTol, const Standard_Real theRes, const Standard_Real thePTol, const Standard_Real theResCoeff, const Bnd_Box &theCBox, Standard_Real &aTB1, Standard_Real &aTB2)
 Looking for the range of the edge which is in the box. More...
 

Protected Attributes

TopoDS_Edge myEdge1
 
TopoDS_Edge myEdge2
 
Handle< Geom_CurvemyGeom1
 
Handle< Geom_CurvemyGeom2
 
BRepAdaptor_Curve myCurve1
 
BRepAdaptor_Curve myCurve2
 
Standard_Real myTol1
 
Standard_Real myTol2
 
Standard_Real myTol
 
Standard_Real myFuzzyValue
 
Standard_Real myRes1
 
Standard_Real myRes2
 
Standard_Real myResCoeff1
 
Standard_Real myResCoeff2
 
Standard_Real myPTol1
 
Standard_Real myPTol2
 
IntTools_Range myRange1
 
IntTools_Range myRange2
 
Standard_Boolean mySwap
 
Standard_Integer myErrorStatus
 
IntTools_SequenceOfCommonPrts myCommonParts
 
Standard_Boolean myQuickCoincidenceCheck
 Allows avoiding use Edge-Edge intersection algorithm (i.e. speeding up the Boolean algorithm) if the edges are coincided really. If it is not evidently set of this flag should be avoided (otherwise, the performance of Boolean algorithm will be slower). More...
 

Detailed Description

The class provides Edge/Edge intersection algorithm based on the intersection between edges bounding boxes.

Constructor & Destructor Documentation

◆ IntTools_EdgeEdge() [1/3]

IntTools_EdgeEdge::IntTools_EdgeEdge ( )

Empty contructor.

◆ ~IntTools_EdgeEdge()

IntTools_EdgeEdge::~IntTools_EdgeEdge ( )

Destructor.

◆ IntTools_EdgeEdge() [2/3]

IntTools_EdgeEdge::IntTools_EdgeEdge ( const TopoDS_Edge theEdge1,
const TopoDS_Edge theEdge2 
)

Contructor.

◆ IntTools_EdgeEdge() [3/3]

IntTools_EdgeEdge::IntTools_EdgeEdge ( const TopoDS_Edge theEdge1,
const Standard_Real  aT11,
const Standard_Real  aT12,
const TopoDS_Edge theEdge2,
const Standard_Real  aT21,
const Standard_Real  aT22 
)

Contructor.

Member Function Documentation

◆ AddSolution()

void IntTools_EdgeEdge::AddSolution ( const Standard_Real  aT11,
const Standard_Real  aT12,
const Standard_Real  aT21,
const Standard_Real  aT22,
const TopAbs_ShapeEnum  theType 
)
protected

Adds common part of the given type to myCommonParts.

◆ CheckCoincidence()

Standard_Integer IntTools_EdgeEdge::CheckCoincidence ( const Standard_Real  aT11,
const Standard_Real  aT12,
const Standard_Real  aT21,
const Standard_Real  aT22,
const Standard_Real  theCriteria,
const Standard_Real  theCurveRes1 
)
protected

Checks if edges coincide on the ranges.

◆ CheckData()

void IntTools_EdgeEdge::CheckData ( )
protected

Checks the data.

◆ CommonParts()

const IntTools_SequenceOfCommonPrts& IntTools_EdgeEdge::CommonParts ( ) const

Returns common parts.

◆ ComputeLineLine()

void IntTools_EdgeEdge::ComputeLineLine ( )
protected

Computes Line/Line intersection.

◆ FindBestSolution()

void IntTools_EdgeEdge::FindBestSolution ( const Standard_Real  aT11,
const Standard_Real  aT12,
const Standard_Real  aT21,
const Standard_Real  aT22,
Standard_Real aT1,
Standard_Real aT2 
)
protected

Looking for the minimal distance between edges on the ranges.

◆ FindParameters()

static Standard_Boolean IntTools_EdgeEdge::FindParameters ( const BRepAdaptor_Curve theBAC,
const Standard_Real  aT1,
const Standard_Real  aT2,
const Standard_Real  theTol,
const Standard_Real  theRes,
const Standard_Real  thePTol,
const Standard_Real  theResCoeff,
const Bnd_Box theCBox,
Standard_Real aTB1,
Standard_Real aTB2 
)
staticprotected

Looking for the range of the edge which is in the box.

◆ FindSolutions() [1/2]

void IntTools_EdgeEdge::FindSolutions ( IntTools_SequenceOfRanges theRanges1,
IntTools_SequenceOfRanges theRanges2,
Standard_Boolean bSplit2 
)
protected

Intermediate function.

◆ FindSolutions() [2/2]

void IntTools_EdgeEdge::FindSolutions ( const IntTools_Range theR1,
const Bnd_Box theBox1,
const IntTools_Range theR2,
const Bnd_Box theBox2,
IntTools_SequenceOfRanges theRanges1,
IntTools_SequenceOfRanges theRanges2 
)
protected

Looking for the exact intersection ranges.

◆ FuzzyValue()

Standard_Real IntTools_EdgeEdge::FuzzyValue ( ) const

Returns Fuzzy value.

◆ IsCoincidenceCheckedQuickly()

Standard_Boolean IntTools_EdgeEdge::IsCoincidenceCheckedQuickly ( )
inline

Returns the flag myQuickCoincidenceCheck.

◆ IsCoincident()

Standard_Boolean IntTools_EdgeEdge::IsCoincident ( )
protected

Checks if the edges are coincident really.

◆ IsDone()

Standard_Boolean IntTools_EdgeEdge::IsDone ( ) const

Returns TRUE if common part(s) is(are) found.

◆ IsIntersection()

Standard_Boolean IntTools_EdgeEdge::IsIntersection ( const Standard_Real  aT11,
const Standard_Real  aT12,
const Standard_Real  aT21,
const Standard_Real  aT22 
)
protected

Checks is there an intersection between edges on the given ranges (for nearly conicident edges)

◆ MergeSolutions()

void IntTools_EdgeEdge::MergeSolutions ( const IntTools_SequenceOfRanges theRanges1,
const IntTools_SequenceOfRanges theRanges2,
const Standard_Boolean  bSplit2 
)
protected

Merges found solutions.

◆ Perform()

void IntTools_EdgeEdge::Perform ( )

Performs the intersection between edges.

◆ Prepare()

void IntTools_EdgeEdge::Prepare ( )
protected

Prepares the data.

◆ SetEdge1() [1/2]

void IntTools_EdgeEdge::SetEdge1 ( const TopoDS_Edge theEdge)

Sets the first edge.

◆ SetEdge1() [2/2]

void IntTools_EdgeEdge::SetEdge1 ( const TopoDS_Edge theEdge,
const Standard_Real  aT1,
const Standard_Real  aT2 
)

Sets the first edge and its range.

◆ SetEdge2() [1/2]

void IntTools_EdgeEdge::SetEdge2 ( const TopoDS_Edge theEdge)

Sets the second edge.

◆ SetEdge2() [2/2]

void IntTools_EdgeEdge::SetEdge2 ( const TopoDS_Edge theEdge,
const Standard_Real  aT1,
const Standard_Real  aT2 
)

Sets the first edge and its range.

◆ SetFuzzyValue()

void IntTools_EdgeEdge::SetFuzzyValue ( const Standard_Real  theFuzz)

Sets the Fuzzy value.

◆ SetRange1() [1/2]

void IntTools_EdgeEdge::SetRange1 ( const IntTools_Range theRange1)

Sets the range for the first edge.

◆ SetRange1() [2/2]

void IntTools_EdgeEdge::SetRange1 ( const Standard_Real  aT1,
const Standard_Real  aT2 
)

Sets the range for the first edge.

◆ SetRange2() [1/2]

void IntTools_EdgeEdge::SetRange2 ( const IntTools_Range theRange)

Sets the range for the second edge.

◆ SetRange2() [2/2]

void IntTools_EdgeEdge::SetRange2 ( const Standard_Real  aT1,
const Standard_Real  aT2 
)

Sets the range for the second edge.

◆ UseQuickCoincidenceCheck()

void IntTools_EdgeEdge::UseQuickCoincidenceCheck ( const Standard_Boolean  bFlag)
inline

Sets the flag myQuickCoincidenceCheck.

Field Documentation

◆ myCommonParts

IntTools_SequenceOfCommonPrts IntTools_EdgeEdge::myCommonParts
protected

◆ myCurve1

BRepAdaptor_Curve IntTools_EdgeEdge::myCurve1
protected

◆ myCurve2

BRepAdaptor_Curve IntTools_EdgeEdge::myCurve2
protected

◆ myEdge1

TopoDS_Edge IntTools_EdgeEdge::myEdge1
protected

◆ myEdge2

TopoDS_Edge IntTools_EdgeEdge::myEdge2
protected

◆ myErrorStatus

Standard_Integer IntTools_EdgeEdge::myErrorStatus
protected

◆ myFuzzyValue

Standard_Real IntTools_EdgeEdge::myFuzzyValue
protected

◆ myGeom1

Handle< Geom_Curve > IntTools_EdgeEdge::myGeom1
protected

◆ myGeom2

Handle< Geom_Curve > IntTools_EdgeEdge::myGeom2
protected

◆ myPTol1

Standard_Real IntTools_EdgeEdge::myPTol1
protected

◆ myPTol2

Standard_Real IntTools_EdgeEdge::myPTol2
protected

◆ myQuickCoincidenceCheck

Standard_Boolean IntTools_EdgeEdge::myQuickCoincidenceCheck
protected

Allows avoiding use Edge-Edge intersection algorithm (i.e. speeding up the Boolean algorithm) if the edges are coincided really. If it is not evidently set of this flag should be avoided (otherwise, the performance of Boolean algorithm will be slower).

◆ myRange1

IntTools_Range IntTools_EdgeEdge::myRange1
protected

◆ myRange2

IntTools_Range IntTools_EdgeEdge::myRange2
protected

◆ myRes1

Standard_Real IntTools_EdgeEdge::myRes1
protected

◆ myRes2

Standard_Real IntTools_EdgeEdge::myRes2
protected

◆ myResCoeff1

Standard_Real IntTools_EdgeEdge::myResCoeff1
protected

◆ myResCoeff2

Standard_Real IntTools_EdgeEdge::myResCoeff2
protected

◆ mySwap

Standard_Boolean IntTools_EdgeEdge::mySwap
protected

◆ myTol

Standard_Real IntTools_EdgeEdge::myTol
protected

◆ myTol1

Standard_Real IntTools_EdgeEdge::myTol1
protected

◆ myTol2

Standard_Real IntTools_EdgeEdge::myTol2
protected

The documentation for this class was generated from the following file: