File indexing completed on 2026-09-21 09:17:36
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017 #ifndef _IntCurvesFace_Intersector_HeaderFile
0018 #define _IntCurvesFace_Intersector_HeaderFile
0019
0020 #include <Adaptor3d_Curve.hxx>
0021 #include <Bnd_BoundSortBox.hxx>
0022 #include <BRepAdaptor_Surface.hxx>
0023 #include <IntCurveSurface_IntersectionPoint.hxx>
0024 #include <NCollection_Sequence.hxx>
0025 #include <IntCurveSurface_ThePolyhedronOfHInter.hxx>
0026 #include <Standard_Integer.hxx>
0027 #include <TopoDS_Face.hxx>
0028 #include <GeomAbs_SurfaceType.hxx>
0029 #include <IntCurveSurface_TransitionOnCurve.hxx>
0030 #include <TopAbs_State.hxx>
0031
0032 #include <memory>
0033
0034 class BRepTopAdaptor_TopolTool;
0035 class gp_Lin;
0036 class gp_Pnt;
0037 class IntCurveSurface_HInter;
0038 class gp_Pnt2d;
0039 class Bnd_Box;
0040
0041 class IntCurvesFace_Intersector : public Standard_Transient
0042 {
0043 DEFINE_STANDARD_RTTIEXT(IntCurvesFace_Intersector, Standard_Transient)
0044
0045 public:
0046 DEFINE_STANDARD_ALLOC
0047
0048
0049
0050
0051
0052
0053
0054
0055
0056
0057
0058
0059
0060
0061 Standard_EXPORT IntCurvesFace_Intersector(const TopoDS_Face& F,
0062 const double aTol,
0063 const bool aRestr = true,
0064 const bool UseBToler = true);
0065
0066
0067
0068
0069
0070
0071
0072
0073
0074 Standard_EXPORT void Perform(const gp_Lin& L, const double PInf, const double PSup);
0075
0076
0077
0078 Standard_EXPORT void Perform(const occ::handle<Adaptor3d_Curve>& HCu,
0079 const double PInf,
0080 const double PSup);
0081
0082
0083 Standard_EXPORT GeomAbs_SurfaceType SurfaceType() const;
0084
0085
0086 bool IsDone() const;
0087
0088 int NbPnt() const;
0089
0090
0091
0092 double UParameter(const int I) const;
0093
0094
0095
0096 double VParameter(const int I) const;
0097
0098
0099
0100 double WParameter(const int I) const;
0101
0102
0103
0104 const gp_Pnt& Pnt(const int I) const;
0105
0106
0107 IntCurveSurface_TransitionOnCurve Transition(const int I) const;
0108
0109
0110
0111
0112
0113
0114 TopAbs_State State(const int I) const;
0115
0116
0117
0118
0119 bool IsParallel() const;
0120
0121
0122
0123 const TopoDS_Face& Face() const;
0124
0125 Standard_EXPORT TopAbs_State ClassifyUVPoint(const gp_Pnt2d& Puv) const;
0126
0127 Standard_EXPORT Bnd_Box Bounding() const;
0128
0129
0130 Standard_EXPORT void SetUseBoundToler(bool UseBToler);
0131
0132
0133 Standard_EXPORT bool GetUseBoundToler() const;
0134
0135 Standard_EXPORT ~IntCurvesFace_Intersector() override;
0136
0137 private:
0138 Standard_EXPORT void InternalCall(const IntCurveSurface_HInter& HICS,
0139 const double pinf,
0140 const double psup);
0141
0142 occ::handle<BRepTopAdaptor_TopolTool> myTopolTool;
0143 occ::handle<BRepAdaptor_Surface> Hsurface;
0144 double Tol;
0145 NCollection_Sequence<IntCurveSurface_IntersectionPoint> SeqPnt;
0146 NCollection_Sequence<int> mySeqState;
0147 bool done;
0148 bool myReady;
0149 int nbpnt;
0150 TopoDS_Face face;
0151 std::unique_ptr<IntCurveSurface_ThePolyhedronOfHInter> myPolyhedron;
0152 std::unique_ptr<Bnd_BoundSortBox> myBndBounding;
0153 bool myUseBoundTol;
0154 bool myIsParallel;
0155
0156
0157 };
0158
0159 #include <IntCurvesFace_Intersector.lxx>
0160
0161 #endif