Open CASCADE Technology 7.8.2.dev
IntPatch_Intersection Class Reference

This class provides a generic algorithm to intersect 2 surfaces. More...

#include <IntPatch_Intersection.hxx>

Public Member Functions

 IntPatch_Intersection ()
 
 IntPatch_Intersection (const Handle< Adaptor3d_Surface > &S1, const Handle< Adaptor3d_TopolTool > &D1, const Handle< Adaptor3d_Surface > &S2, const Handle< Adaptor3d_TopolTool > &D2, const Standard_Real TolArc, const Standard_Real TolTang)
 
 IntPatch_Intersection (const Handle< Adaptor3d_Surface > &S1, const Handle< Adaptor3d_TopolTool > &D1, const Standard_Real TolArc, const Standard_Real TolTang)
 
void SetTolerances (const Standard_Real TolArc, const Standard_Real TolTang, const Standard_Real UVMaxStep, const Standard_Real Fleche)
 Set the tolerances used by the algorithms: — Implicit - Parametric — Parametric - Parametric — Implicit - Implicit.
 
void Perform (const Handle< Adaptor3d_Surface > &S1, const Handle< Adaptor3d_TopolTool > &D1, const Handle< Adaptor3d_Surface > &S2, const Handle< Adaptor3d_TopolTool > &D2, const Standard_Real TolArc, const Standard_Real TolTang, const Standard_Boolean isGeomInt=Standard_True, const Standard_Boolean theIsReqToKeepRLine=Standard_False, const Standard_Boolean theIsReqToPostWLProc=Standard_True)
 Flag theIsReqToKeepRLine has been entered only for compatibility with TopOpeBRep package. It shall be deleted after deleting TopOpeBRep. When intersection result returns IntPatch_RLine and another IntPatch_Line (not restriction) we (in case of theIsReqToKeepRLine==TRUE) will always keep both lines even if they are coincided. Flag theIsReqToPostWLProc has been entered only for compatibility with TopOpeBRep package. It shall be deleted after deleting TopOpeBRep. If theIsReqToPostWLProc == FALSE, then we will work with Walking-line obtained after intersection algorithm directly (without any post-processing).
 
void Perform (const Handle< Adaptor3d_Surface > &S1, const Handle< Adaptor3d_TopolTool > &D1, const Handle< Adaptor3d_Surface > &S2, const Handle< Adaptor3d_TopolTool > &D2, const Standard_Real TolArc, const Standard_Real TolTang, IntSurf_ListOfPntOn2S &LOfPnts, const Standard_Boolean isGeomInt=Standard_True, const Standard_Boolean theIsReqToKeepRLine=Standard_False, const Standard_Boolean theIsReqToPostWLProc=Standard_True)
 If isGeomInt == Standard_False, then method Param-Param intersection will be used. Flag theIsReqToKeepRLine has been entered only for compatibility with TopOpeBRep package. It shall be deleted after deleting TopOpeBRep. When intersection result returns IntPatch_RLine and another IntPatch_Line (not restriction) we (in case of theIsReqToKeepRLine==TRUE) will always keep both lines even if they are coincided. Flag theIsReqToPostWLProc has been entered only for compatibility with TopOpeBRep package. It shall be deleted after deleting TopOpeBRep. If theIsReqToPostWLProc == FALSE, then we will work with Walking-line obtained after intersection algorithm directly (without any post-processing).
 
void Perform (const Handle< Adaptor3d_Surface > &S1, const Handle< Adaptor3d_TopolTool > &D1, const Handle< Adaptor3d_Surface > &S2, const Handle< Adaptor3d_TopolTool > &D2, const Standard_Real U1, const Standard_Real V1, const Standard_Real U2, const Standard_Real V2, const Standard_Real TolArc, const Standard_Real TolTang)
 Perform with start point.
 
void Perform (const Handle< Adaptor3d_Surface > &S1, const Handle< Adaptor3d_TopolTool > &D1, const Standard_Real TolArc, const Standard_Real TolTang)
 Uses for finding self-intersected surfaces.
 
Standard_Boolean IsDone () const
 Returns True if the calculus was successful.
 
Standard_Boolean IsEmpty () const
 Returns true if the is no intersection.
 
Standard_Boolean TangentFaces () const
 Returns True if the two patches are considered as entirely tangent, i-e every restriction arc of one patch is inside the geometric base of the other patch.
 
Standard_Boolean OppositeFaces () const
 Returns True when the TangentFaces returns True and the normal vectors evaluated at a point on the first and the second surface are opposite. The exception DomainError is raised if TangentFaces returns False.
 
Standard_Integer NbPnts () const
 Returns the number of "single" points.
 
const IntPatch_PointPoint (const Standard_Integer Index) const
 Returns the point of range Index. An exception is raised if Index<=0 or Index>NbPnt.
 
Standard_Integer NbLines () const
 Returns the number of intersection lines.
 
const Handle< IntPatch_Line > & Line (const Standard_Integer Index) const
 Returns the line of range Index. An exception is raised if Index<=0 or Index>NbLine.
 
const IntPatch_SequenceOfLineSequenceOfLine () const
 
void Dump (const Standard_Integer Mode, const Handle< Adaptor3d_Surface > &S1, const Handle< Adaptor3d_TopolTool > &D1, const Handle< Adaptor3d_Surface > &S2, const Handle< Adaptor3d_TopolTool > &D2) const
 Dump of each result line. Mode for more accurate dumps.
 

Static Public Member Functions

static Standard_Boolean CheckSingularPoints (const Handle< Adaptor3d_Surface > &theS1, const Handle< Adaptor3d_TopolTool > &theD1, const Handle< Adaptor3d_Surface > &theS2, Standard_Real &theDist)
 Checks if surface theS1 has degenerated boundary (dS/du or dS/dv = 0) and calculates minimal distance between corresponding singular points and surface theS2 If singular point exists the method returns "true" and stores minimal distance in theDist.
 
static Standard_Real DefineUVMaxStep (const Handle< Adaptor3d_Surface > &theS1, const Handle< Adaptor3d_TopolTool > &theD1, const Handle< Adaptor3d_Surface > &theS2, const Handle< Adaptor3d_TopolTool > &theD2)
 Calculates recommended value for myUVMaxStep depending on surfaces and their domains.
 
static void PrepareSurfaces (const Handle< Adaptor3d_Surface > &theS1, const Handle< Adaptor3d_TopolTool > &theD1, const Handle< Adaptor3d_Surface > &theS2, const Handle< Adaptor3d_TopolTool > &theD2, const Standard_Real Tol, NCollection_Vector< Handle< Adaptor3d_Surface > > &theSeqHS1, NCollection_Vector< Handle< Adaptor3d_Surface > > &theSeqHS2)
 Prepares surfaces for intersection.
 

Detailed Description

This class provides a generic algorithm to intersect 2 surfaces.

Constructor & Destructor Documentation

◆ IntPatch_Intersection() [1/3]

IntPatch_Intersection::IntPatch_Intersection ( )

◆ IntPatch_Intersection() [2/3]

IntPatch_Intersection::IntPatch_Intersection ( const Handle< Adaptor3d_Surface > & S1,
const Handle< Adaptor3d_TopolTool > & D1,
const Handle< Adaptor3d_Surface > & S2,
const Handle< Adaptor3d_TopolTool > & D2,
const Standard_Real TolArc,
const Standard_Real TolTang )

◆ IntPatch_Intersection() [3/3]

IntPatch_Intersection::IntPatch_Intersection ( const Handle< Adaptor3d_Surface > & S1,
const Handle< Adaptor3d_TopolTool > & D1,
const Standard_Real TolArc,
const Standard_Real TolTang )

Member Function Documentation

◆ CheckSingularPoints()

static Standard_Boolean IntPatch_Intersection::CheckSingularPoints ( const Handle< Adaptor3d_Surface > & theS1,
const Handle< Adaptor3d_TopolTool > & theD1,
const Handle< Adaptor3d_Surface > & theS2,
Standard_Real & theDist )
static

Checks if surface theS1 has degenerated boundary (dS/du or dS/dv = 0) and calculates minimal distance between corresponding singular points and surface theS2 If singular point exists the method returns "true" and stores minimal distance in theDist.

◆ DefineUVMaxStep()

static Standard_Real IntPatch_Intersection::DefineUVMaxStep ( const Handle< Adaptor3d_Surface > & theS1,
const Handle< Adaptor3d_TopolTool > & theD1,
const Handle< Adaptor3d_Surface > & theS2,
const Handle< Adaptor3d_TopolTool > & theD2 )
static

Calculates recommended value for myUVMaxStep depending on surfaces and their domains.

◆ Dump()

void IntPatch_Intersection::Dump ( const Standard_Integer Mode,
const Handle< Adaptor3d_Surface > & S1,
const Handle< Adaptor3d_TopolTool > & D1,
const Handle< Adaptor3d_Surface > & S2,
const Handle< Adaptor3d_TopolTool > & D2 ) const

Dump of each result line. Mode for more accurate dumps.

◆ IsDone()

Standard_Boolean IntPatch_Intersection::IsDone ( ) const

Returns True if the calculus was successful.

◆ IsEmpty()

Standard_Boolean IntPatch_Intersection::IsEmpty ( ) const

Returns true if the is no intersection.

◆ Line()

const Handle< IntPatch_Line > & IntPatch_Intersection::Line ( const Standard_Integer Index) const

Returns the line of range Index. An exception is raised if Index<=0 or Index>NbLine.

◆ NbLines()

Standard_Integer IntPatch_Intersection::NbLines ( ) const

Returns the number of intersection lines.

◆ NbPnts()

Standard_Integer IntPatch_Intersection::NbPnts ( ) const

Returns the number of "single" points.

◆ OppositeFaces()

Standard_Boolean IntPatch_Intersection::OppositeFaces ( ) const

Returns True when the TangentFaces returns True and the normal vectors evaluated at a point on the first and the second surface are opposite. The exception DomainError is raised if TangentFaces returns False.

◆ Perform() [1/4]

void IntPatch_Intersection::Perform ( const Handle< Adaptor3d_Surface > & S1,
const Handle< Adaptor3d_TopolTool > & D1,
const Handle< Adaptor3d_Surface > & S2,
const Handle< Adaptor3d_TopolTool > & D2,
const Standard_Real TolArc,
const Standard_Real TolTang,
const Standard_Boolean isGeomInt = Standard_True,
const Standard_Boolean theIsReqToKeepRLine = Standard_False,
const Standard_Boolean theIsReqToPostWLProc = Standard_True )

Flag theIsReqToKeepRLine has been entered only for compatibility with TopOpeBRep package. It shall be deleted after deleting TopOpeBRep. When intersection result returns IntPatch_RLine and another IntPatch_Line (not restriction) we (in case of theIsReqToKeepRLine==TRUE) will always keep both lines even if they are coincided. Flag theIsReqToPostWLProc has been entered only for compatibility with TopOpeBRep package. It shall be deleted after deleting TopOpeBRep. If theIsReqToPostWLProc == FALSE, then we will work with Walking-line obtained after intersection algorithm directly (without any post-processing).

◆ Perform() [2/4]

void IntPatch_Intersection::Perform ( const Handle< Adaptor3d_Surface > & S1,
const Handle< Adaptor3d_TopolTool > & D1,
const Handle< Adaptor3d_Surface > & S2,
const Handle< Adaptor3d_TopolTool > & D2,
const Standard_Real TolArc,
const Standard_Real TolTang,
IntSurf_ListOfPntOn2S & LOfPnts,
const Standard_Boolean isGeomInt = Standard_True,
const Standard_Boolean theIsReqToKeepRLine = Standard_False,
const Standard_Boolean theIsReqToPostWLProc = Standard_True )

If isGeomInt == Standard_False, then method Param-Param intersection will be used. Flag theIsReqToKeepRLine has been entered only for compatibility with TopOpeBRep package. It shall be deleted after deleting TopOpeBRep. When intersection result returns IntPatch_RLine and another IntPatch_Line (not restriction) we (in case of theIsReqToKeepRLine==TRUE) will always keep both lines even if they are coincided. Flag theIsReqToPostWLProc has been entered only for compatibility with TopOpeBRep package. It shall be deleted after deleting TopOpeBRep. If theIsReqToPostWLProc == FALSE, then we will work with Walking-line obtained after intersection algorithm directly (without any post-processing).

◆ Perform() [3/4]

void IntPatch_Intersection::Perform ( const Handle< Adaptor3d_Surface > & S1,
const Handle< Adaptor3d_TopolTool > & D1,
const Handle< Adaptor3d_Surface > & S2,
const Handle< Adaptor3d_TopolTool > & D2,
const Standard_Real U1,
const Standard_Real V1,
const Standard_Real U2,
const Standard_Real V2,
const Standard_Real TolArc,
const Standard_Real TolTang )

Perform with start point.

◆ Perform() [4/4]

void IntPatch_Intersection::Perform ( const Handle< Adaptor3d_Surface > & S1,
const Handle< Adaptor3d_TopolTool > & D1,
const Standard_Real TolArc,
const Standard_Real TolTang )

Uses for finding self-intersected surfaces.

◆ Point()

const IntPatch_Point & IntPatch_Intersection::Point ( const Standard_Integer Index) const

Returns the point of range Index. An exception is raised if Index<=0 or Index>NbPnt.

◆ PrepareSurfaces()

static void IntPatch_Intersection::PrepareSurfaces ( const Handle< Adaptor3d_Surface > & theS1,
const Handle< Adaptor3d_TopolTool > & theD1,
const Handle< Adaptor3d_Surface > & theS2,
const Handle< Adaptor3d_TopolTool > & theD2,
const Standard_Real Tol,
NCollection_Vector< Handle< Adaptor3d_Surface > > & theSeqHS1,
NCollection_Vector< Handle< Adaptor3d_Surface > > & theSeqHS2 )
static

Prepares surfaces for intersection.

◆ SequenceOfLine()

const IntPatch_SequenceOfLine & IntPatch_Intersection::SequenceOfLine ( ) const

◆ SetTolerances()

void IntPatch_Intersection::SetTolerances ( const Standard_Real TolArc,
const Standard_Real TolTang,
const Standard_Real UVMaxStep,
const Standard_Real Fleche )

Set the tolerances used by the algorithms: — Implicit - Parametric — Parametric - Parametric — Implicit - Implicit.

TolArc is used to compute the intersections between the restrictions of a surface and a walking line.

TolTang is used to compute the points on a walking line, and in geometric algorithms.

Fleche is a parameter used in the walking algorithms to provide small curvatures on a line.

UVMaxStep is a parameter used in the walking algorithms to compute the distance between to points in their respective parametric spaces.

◆ TangentFaces()

Standard_Boolean IntPatch_Intersection::TangentFaces ( ) const

Returns True if the two patches are considered as entirely tangent, i-e every restriction arc of one patch is inside the geometric base of the other patch.


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