OCCT3D OCCT 8.0.1
OCCT documentation

Search guides and API reference

Enter at least two characters.

    Open CASCADE Technology Reference Manual 8.0.1
    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()

    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()

    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()

    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: