![]() |
Open CASCADE Technology Reference Manual 8.0.0
|
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_Point & | Point (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. | |
This class provides a generic algorithm to intersect 2 surfaces.
| IntPatch_Intersection::IntPatch_Intersection | ( | ) |
| 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::IntPatch_Intersection | ( | const occ::handle< Adaptor3d_Surface > & | S1, |
| const occ::handle< Adaptor3d_TopolTool > & | D1, | ||
| const double | TolArc, | ||
| const double | TolTang ) |
|
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.
|
static |
Calculates recommended value for myUVMaxStep depending on surfaces and their domains.
| 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.
| bool IntPatch_Intersection::IsDone | ( | ) | const |
Returns True if the calculus was successful.
| bool IntPatch_Intersection::IsEmpty | ( | ) | const |
Returns true if the is no intersection.
| 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.
| int IntPatch_Intersection::NbLines | ( | ) | const |
Returns the number of intersection lines.
| int IntPatch_Intersection::NbPnts | ( | ) | const |
Returns the number of "single" points.
| 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.
| 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.
| 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).
| 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).
| 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.
| 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.
|
static |
Prepares surfaces for intersection.
| const NCollection_Sequence< occ::handle< IntPatch_Line > > & IntPatch_Intersection::SequenceOfLine | ( | ) | const |
| 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.
| 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.