3f5b1f9c4853a361cdcbf7120150e45c115b2221
[occt.git] / src / BRepLib / BRepLib_CheckCurveOnSurface.hxx
1 // Created by: Eugeny MALTCHIKOV
2 // Copyright (c) 2014 OPEN CASCADE SAS
3 //
4 // This file is part of Open CASCADE Technology software library.
5 //
6 // This library is free software; you can redistribute it and/or modify it under
7 // the terms of the GNU Lesser General Public License version 2.1 as published
8 // by the Free Software Foundation, with special exception defined in the file
9 // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
10 // distribution for complete text of the license and disclaimer of any warranty.
11 //
12 // Alternatively, this file may be used under the terms of Open CASCADE
13 // commercial license or contractual agreement.
14
15 #ifndef _BRepLib_CheckCurveOnSurface_HeaderFile
16 #define _BRepLib_CheckCurveOnSurface_HeaderFile
17
18 #include <Standard.hxx>
19 #include <Standard_DefineAlloc.hxx>
20 #include <Standard_Handle.hxx>
21
22 #include <Standard_Real.hxx>
23 #include <Standard_Integer.hxx>
24 #include <Standard_Boolean.hxx>
25 class Geom_Curve;
26 class Geom2d_Curve;
27 class Geom_Surface;
28 class TopoDS_Edge;
29 class TopoDS_Face;
30
31
32
33 //! Computes the max distance between edge and its
34 //! 2d representation on the face.
35 //!
36 //! The algorithm can be initialized in the following ways:
37 //! 1. Input args are Edge and Face;
38 //! 2. Input args are 3D curve, 2d curve, Surface and
39 //! parametric range of the curve (first and last values).
40 class BRepLib_CheckCurveOnSurface 
41 {
42 public:
43
44   DEFINE_STANDARD_ALLOC
45
46   
47
48   //! Empty contructor
49   Standard_EXPORT BRepLib_CheckCurveOnSurface();
50   
51
52   //! Contructor
53   Standard_EXPORT BRepLib_CheckCurveOnSurface(const TopoDS_Edge& theEdge, const TopoDS_Face& theFace);
54   
55
56   //! Contructor
57   Standard_EXPORT BRepLib_CheckCurveOnSurface(const Handle(Geom_Curve)& theCurve, const Handle(Geom2d_Curve)& thePCurve, const Handle(Geom_Surface)& theSurface, const Standard_Real theFirst, const Standard_Real theLast);
58   
59
60   //! Sets the data for the algorithm
61   Standard_EXPORT void Init (const TopoDS_Edge& theEdge, const TopoDS_Face& theFace);
62   
63
64   //! Sets the data for the algorithm
65   Standard_EXPORT void Init (const Handle(Geom_Curve)& theCurve, const Handle(Geom2d_Curve)& thePCurve, const Handle(Geom_Surface)& theSurface, const Standard_Real theFirst, const Standard_Real theLast);
66   
67
68   //! Returns my3DCurve
69     const Handle(Geom_Curve)& Curve() const;
70   
71
72   //! Returns my2DCurve
73     const Handle(Geom2d_Curve)& PCurve() const;
74   
75
76   //! Returns my2DCurve
77     const Handle(Geom2d_Curve)& PCurve2() const;
78   
79
80   //! Returns mySurface
81     const Handle(Geom_Surface)& Surface() const;
82   
83
84   //! Returns the range
85     void Range (Standard_Real& theFirst, Standard_Real& theLast);
86   
87
88   //! Performs the calculation
89   //! If isTheMultyTheadDisabled == TRUE then computation will be made
90   //! without any parallelization.
91   Standard_EXPORT void Perform (const Standard_Boolean isTheMultyTheradDisabled = Standard_False);
92   
93
94   //! Returns true if the max distance has been found
95     Standard_Boolean IsDone() const;
96   
97
98   //! Returns error status
99   //! The possible values are:
100   //! 0 - OK;
101   //! 1 - null curve or surface or 2d curve;
102   //! 2 - invalid parametric range;
103   //! 3 - error in calculations.
104     Standard_Integer ErrorStatus() const;
105   
106
107   //! Returns max distance
108     Standard_Real MaxDistance() const;
109   
110
111   //! Returns parameter in which the distance is maximal
112     Standard_Real MaxParameter() const;
113
114
115
116
117 protected:
118
119   
120
121   //! Checks the data
122   Standard_EXPORT void CheckData();
123   
124
125   //! Computes the max distance for the 3d curve <myCurve>
126   //! and 2d curve <thePCurve>
127   //! If isTheMultyTheadDisabled == TRUE then computation will be made
128   //! without any parallelization.
129   Standard_EXPORT void Compute (const Handle(Geom2d_Curve)& thePCurve, const Standard_Boolean isTheMultyTheradDisabled);
130
131
132
133
134 private:
135
136
137
138   Handle(Geom_Curve) myCurve;
139   Handle(Geom2d_Curve) myPCurve;
140   Handle(Geom2d_Curve) myPCurve2;
141   Handle(Geom_Surface) mySurface;
142   Standard_Real myFirst;
143   Standard_Real myLast;
144   Standard_Integer myErrorStatus;
145   Standard_Real myMaxDistance;
146   Standard_Real myMaxParameter;
147
148
149 };
150
151
152 #include <BRepLib_CheckCurveOnSurface.lxx>
153
154
155
156
157
158 #endif // _BRepLib_CheckCurveOnSurface_HeaderFile