File indexing completed on 2025-01-18 10:04:06
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_SequenceOfPnt.hxx>
0024 #include <IntCurveSurface_ThePolyhedronOfHInter.hxx>
0025 #include <TColStd_SequenceOfInteger.hxx>
0026 #include <TopoDS_Face.hxx>
0027 #include <GeomAbs_SurfaceType.hxx>
0028 #include <IntCurveSurface_TransitionOnCurve.hxx>
0029 #include <TopAbs_State.hxx>
0030
0031 #include <memory>
0032
0033 class BRepTopAdaptor_TopolTool;
0034 class gp_Lin;
0035 class gp_Pnt;
0036 class IntCurveSurface_HInter;
0037 class gp_Pnt2d;
0038 class Bnd_Box;
0039
0040 DEFINE_STANDARD_HANDLE(IntCurvesFace_Intersector, Standard_Transient)
0041
0042
0043 class IntCurvesFace_Intersector : public Standard_Transient
0044 {
0045 DEFINE_STANDARD_RTTIEXT(IntCurvesFace_Intersector, Standard_Transient)
0046
0047 public:
0048
0049 DEFINE_STANDARD_ALLOC
0050
0051
0052
0053
0054
0055
0056
0057
0058
0059
0060
0061
0062
0063
0064 Standard_EXPORT IntCurvesFace_Intersector(const TopoDS_Face& F, const Standard_Real aTol,
0065 const Standard_Boolean aRestr = Standard_True,
0066 const Standard_Boolean UseBToler = Standard_True);
0067
0068
0069
0070
0071
0072
0073
0074
0075
0076 Standard_EXPORT void Perform (const gp_Lin& L, const Standard_Real PInf, const Standard_Real PSup);
0077
0078
0079
0080 Standard_EXPORT void Perform (const Handle(Adaptor3d_Curve)& HCu, const Standard_Real PInf, const Standard_Real PSup);
0081
0082
0083 Standard_EXPORT GeomAbs_SurfaceType SurfaceType() const;
0084
0085
0086 Standard_Boolean IsDone() const;
0087
0088 Standard_Integer NbPnt() const;
0089
0090
0091
0092 Standard_Real UParameter (const Standard_Integer I) const;
0093
0094
0095
0096 Standard_Real VParameter (const Standard_Integer I) const;
0097
0098
0099
0100 Standard_Real WParameter (const Standard_Integer I) const;
0101
0102
0103
0104 const gp_Pnt& Pnt (const Standard_Integer I) const;
0105
0106
0107 IntCurveSurface_TransitionOnCurve Transition (const Standard_Integer I) const;
0108
0109
0110
0111
0112
0113
0114 TopAbs_State State (const Standard_Integer I) const;
0115
0116
0117
0118
0119 Standard_Boolean 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(Standard_Boolean UseBToler );
0131
0132
0133 Standard_EXPORT Standard_Boolean GetUseBoundToler() const;
0134
0135 Standard_EXPORT virtual ~IntCurvesFace_Intersector();
0136
0137 protected:
0138
0139
0140
0141
0142
0143 private:
0144
0145
0146 Standard_EXPORT void InternalCall (const IntCurveSurface_HInter& HICS, const Standard_Real pinf, const Standard_Real psup);
0147
0148
0149 Handle(BRepTopAdaptor_TopolTool) myTopolTool;
0150 Handle(BRepAdaptor_Surface) Hsurface;
0151 Standard_Real Tol;
0152 IntCurveSurface_SequenceOfPnt SeqPnt;
0153 TColStd_SequenceOfInteger mySeqState;
0154 Standard_Boolean done;
0155 Standard_Boolean myReady;
0156 Standard_Integer nbpnt;
0157 TopoDS_Face face;
0158 std::unique_ptr<IntCurveSurface_ThePolyhedronOfHInter> myPolyhedron;
0159 std::unique_ptr<Bnd_BoundSortBox> myBndBounding;
0160 Standard_Boolean myUseBoundTol;
0161 Standard_Boolean myIsParallel;
0162
0163
0164
0165
0166 };
0167
0168
0169 #include <IntCurvesFace_Intersector.lxx>
0170
0171
0172
0173
0174
0175 #endif