Open CASCADE Technology Reference Manual 8.0.0
Loading...
Searching...
No Matches
Public Member Functions | Static Public Member Functions
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 occ::handle< Adaptor3d_Surface > &S1, const occ::handle< Adaptor3d_TopolTool > &D1, const occ::handle< Adaptor3d_Surface > &S2, const occ::handle< Adaptor3d_TopolTool > &D2, const double TolArc, const double TolTang)
 
 IntPatch_Intersection (const occ::handle< Adaptor3d_Surface > &S1, const occ::handle< Adaptor3d_TopolTool > &D1, const double TolArc, const double TolTang)
 
void SetTolerances (const double TolArc, const double TolTang, const double UVMaxStep, const double Fleche)
 Set the tolerances used by the algorithms: — Implicit - Parametric — Parametric - Parametric — Implicit - Implicit.
 
void Perform (const occ::handle< Adaptor3d_Surface > &S1, const occ::handle< Adaptor3d_TopolTool > &D1, const occ::handle< Adaptor3d_Surface > &S2, const occ::handle< Adaptor3d_TopolTool > &D2, const double TolArc, const double TolTang, const bool isGeomInt=true, const bool theIsReqToKeepRLine=false, const bool theIsReqToPostWLProc=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 occ::handle< Adaptor3d_Surface > &S1, const occ::handle< Adaptor3d_TopolTool > &D1, const occ::handle< Adaptor3d_Surface > &S2, const occ::handle< Adaptor3d_TopolTool > &D2, const double TolArc, const double TolTang, NCollection_List< IntSurf_PntOn2S > &LOfPnts, const bool isGeomInt=true, const bool theIsReqToKeepRLine=false, const bool theIsReqToPostWLProc=true)
 If isGeomInt == 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 occ::handle< Adaptor3d_Surface > &S1, const occ::handle< Adaptor3d_TopolTool > &D1, const occ::handle< Adaptor3d_Surface > &S2, const occ::handle< Adaptor3d_TopolTool > &D2, const double U1, const double V1, const double U2, const double V2, const double TolArc, const double TolTang)
 Perform with start point.
 
void Perform (const occ::handle< Adaptor3d_Surface > &S1, const occ::handle< Adaptor3d_TopolTool > &D1, const double TolArc, const double TolTang)
 Uses for finding self-intersected surfaces.
 
bool IsDone () const
 Returns True if the calculus was successful.
 
bool IsEmpty () const
 Returns true if the is no intersection.
 
bool 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.
 
bool 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.
 
int NbPnts () const
 Returns the number of "single" points.
 
const IntPatch_PointPoint (const int Index) const
 Returns the point of range Index. An exception is raised if Index<=0 or Index>NbPnt.
 
int NbLines () const
 Returns the number of intersection lines.
 
const occ::handle< IntPatch_Line > & Line (const int Index) const
 Returns the line of range Index. An exception is raised if Index<=0 or Index>NbLine.
 
const NCollection_Sequence< occ::handle< IntPatch_Line > > & SequenceOfLine () const
 
void Dump (const int Mode, const occ::handle< Adaptor3d_Surface > &S1, const occ::handle< Adaptor3d_TopolTool > &D1, const occ::handle< Adaptor3d_Surface > &S2, const occ::handle< Adaptor3d_TopolTool > &D2) const
 Dump of each result line. Mode for more accurate dumps.
 

Static Public Member Functions

static bool CheckSingularPoints (const occ::handle< Adaptor3d_Surface > &theS1, const occ::handle< Adaptor3d_TopolTool > &theD1, const occ::handle< Adaptor3d_Surface > &theS2, double &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 double DefineUVMaxStep (const occ::handle< Adaptor3d_Surface > &theS1, const occ::handle< Adaptor3d_TopolTool > &theD1, const occ::handle< Adaptor3d_Surface > &theS2, const occ::handle< Adaptor3d_TopolTool > &theD2)
 Calculates recommended value for myUVMaxStep depending on surfaces and their domains.
 
static void PrepareSurfaces (const occ::handle< Adaptor3d_Surface > &theS1, const occ::handle< Adaptor3d_TopolTool > &theD1, const occ::handle< Adaptor3d_Surface > &theS2, const occ::handle< Adaptor3d_TopolTool > &theD2, const double Tol, NCollection_DynamicArray< occ::handle< Adaptor3d_Surface > > &theSeqHS1, NCollection_DynamicArray< occ::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 occ::handle< Adaptor3d_Surface > & S1,
const occ::handle< Adaptor3d_TopolTool > & D1,
const occ::handle< Adaptor3d_Surface > & S2,
const occ::handle< Adaptor3d_TopolTool > & D2,
const double TolArc,
const double TolTang )

◆ IntPatch_Intersection() [3/3]

IntPatch_Intersection::IntPatch_Intersection ( const occ::handle< Adaptor3d_Surface > & S1,
const occ::handle< Adaptor3d_TopolTool > & D1,
const double TolArc,
const double TolTang )

Member Function Documentation

◆ CheckSingularPoints()

static bool IntPatch_Intersection::CheckSingularPoints ( const occ::handle< Adaptor3d_Surface > & theS1,
const occ::handle< Adaptor3d_TopolTool > & theD1,
const occ::handle< Adaptor3d_Surface > & theS2,
double & 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 double IntPatch_Intersection::DefineUVMaxStep ( const occ::handle< Adaptor3d_Surface > & theS1,
const occ::handle< Adaptor3d_TopolTool > & theD1,
const occ::handle< Adaptor3d_Surface > & theS2,
const occ::handle< Adaptor3d_TopolTool > & theD2 )
static

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

◆ Dump()

void IntPatch_Intersection::Dump ( const int Mode,
const occ::handle< Adaptor3d_Surface > & S1,
const occ::handle< Adaptor3d_TopolTool > & D1,
const occ::handle< Adaptor3d_Surface > & S2,
const occ::handle< Adaptor3d_TopolTool > & D2 ) const

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

◆ IsDone()

bool IntPatch_Intersection::IsDone ( ) const

Returns True if the calculus was successful.

◆ IsEmpty()

bool IntPatch_Intersection::IsEmpty ( ) const

Returns true if the is no intersection.

◆ Line()

const occ::handle< IntPatch_Line > & IntPatch_Intersection::Line ( const int Index) const

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

◆ NbLines()

int IntPatch_Intersection::NbLines ( ) const

Returns the number of intersection lines.

◆ NbPnts()

int IntPatch_Intersection::NbPnts ( ) const

Returns the number of "single" points.

◆ OppositeFaces()

bool 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 occ::handle< Adaptor3d_Surface > & S1,
const occ::handle< Adaptor3d_TopolTool > & D1,
const double TolArc,
const double TolTang )

Uses for finding self-intersected surfaces.

◆ Perform() [2/4]

void IntPatch_Intersection::Perform ( const occ::handle< Adaptor3d_Surface > & S1,
const occ::handle< Adaptor3d_TopolTool > & D1,
const occ::handle< Adaptor3d_Surface > & S2,
const occ::handle< Adaptor3d_TopolTool > & D2,
const double TolArc,
const double TolTang,
const bool isGeomInt = true,
const bool theIsReqToKeepRLine = false,
const bool theIsReqToPostWLProc = 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() [3/4]

void IntPatch_Intersection::Perform ( const occ::handle< Adaptor3d_Surface > & S1,
const occ::handle< Adaptor3d_TopolTool > & D1,
const occ::handle< Adaptor3d_Surface > & S2,
const occ::handle< Adaptor3d_TopolTool > & D2,
const double TolArc,
const double TolTang,
NCollection_List< IntSurf_PntOn2S > & LOfPnts,
const bool isGeomInt = true,
const bool theIsReqToKeepRLine = false,
const bool theIsReqToPostWLProc = true )

If isGeomInt == 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() [4/4]

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

Perform with start point.

◆ Point()

const IntPatch_Point & IntPatch_Intersection::Point ( const int 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 occ::handle< Adaptor3d_Surface > & theS1,
const occ::handle< Adaptor3d_TopolTool > & theD1,
const occ::handle< Adaptor3d_Surface > & theS2,
const occ::handle< Adaptor3d_TopolTool > & theD2,
const double Tol,
NCollection_DynamicArray< occ::handle< Adaptor3d_Surface > > & theSeqHS1,
NCollection_DynamicArray< occ::handle< Adaptor3d_Surface > > & theSeqHS2 )
static

Prepares surfaces for intersection.

◆ SequenceOfLine()

const NCollection_Sequence< occ::handle< IntPatch_Line > > & IntPatch_Intersection::SequenceOfLine ( ) const

◆ SetTolerances()

void IntPatch_Intersection::SetTolerances ( const double TolArc,
const double TolTang,
const double UVMaxStep,
const double 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()

bool 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: