summaryrefslogtreecommitdiff
path: root/inc/IntCurvesFace_Intersector.hxx
blob: c5fb4aa418fdc0c50ac47fd42eef1e52518421c3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
// This file is generated by WOK (CPPExt).
// Please do not edit this file; modify original file instead.
// The copyright and license terms as defined for the original file apply to 
// this header file considered to be the "object code" form of the original source.

#ifndef _IntCurvesFace_Intersector_HeaderFile
#define _IntCurvesFace_Intersector_HeaderFile

#ifndef _Standard_HeaderFile
#include <Standard.hxx>
#endif
#ifndef _Standard_Macro_HeaderFile
#include <Standard_Macro.hxx>
#endif

#ifndef _Handle_BRepTopAdaptor_TopolTool_HeaderFile
#include <Handle_BRepTopAdaptor_TopolTool.hxx>
#endif
#ifndef _Handle_BRepAdaptor_HSurface_HeaderFile
#include <Handle_BRepAdaptor_HSurface.hxx>
#endif
#ifndef _Standard_Real_HeaderFile
#include <Standard_Real.hxx>
#endif
#ifndef _IntCurveSurface_SequenceOfPnt_HeaderFile
#include <IntCurveSurface_SequenceOfPnt.hxx>
#endif
#ifndef _TColStd_SequenceOfInteger_HeaderFile
#include <TColStd_SequenceOfInteger.hxx>
#endif
#ifndef _Standard_Boolean_HeaderFile
#include <Standard_Boolean.hxx>
#endif
#ifndef _Standard_Integer_HeaderFile
#include <Standard_Integer.hxx>
#endif
#ifndef _TopoDS_Face_HeaderFile
#include <TopoDS_Face.hxx>
#endif
#ifndef _Standard_Address_HeaderFile
#include <Standard_Address.hxx>
#endif
#ifndef _Handle_Adaptor3d_HCurve_HeaderFile
#include <Handle_Adaptor3d_HCurve.hxx>
#endif
#ifndef _GeomAbs_SurfaceType_HeaderFile
#include <GeomAbs_SurfaceType.hxx>
#endif
#ifndef _IntCurveSurface_TransitionOnCurve_HeaderFile
#include <IntCurveSurface_TransitionOnCurve.hxx>
#endif
#ifndef _TopAbs_State_HeaderFile
#include <TopAbs_State.hxx>
#endif
class BRepTopAdaptor_TopolTool;
class BRepAdaptor_HSurface;
class TopoDS_Face;
class gp_Lin;
class Adaptor3d_HCurve;
class gp_Pnt;
class IntCurveSurface_HInter;
class gp_Pnt2d;
class Bnd_Box;



class IntCurvesFace_Intersector  {
public:

  void* operator new(size_t,void* anAddress) 
  {
    return anAddress;
  }
  void* operator new(size_t size) 
  {
    return Standard::Allocate(size); 
  }
  void  operator delete(void *anAddress) 
  {
    if (anAddress) Standard::Free((Standard_Address&)anAddress); 
  }

  //! Load a Face. <br>
//! <br>
//!          The Tolerance <Tol> is used to determine if the <br>
//!          first point of the segment is near the face. In <br>
//!          that case, the parameter of the intersection point <br>
//!          on the line can be a negative value (greater than -Tol). <br>
  Standard_EXPORT   IntCurvesFace_Intersector(const TopoDS_Face& F,const Standard_Real aTol);
  //! Perform the intersection between the <br>
//!          segment L and the loaded face. <br>
//! <br>
//!          PInf is the smallest parameter on the line <br>
//!          PSup is the highest  parmaeter on the line <br>
//! <br>
//!          For an infinite line PInf and PSup can be <br>
//!          +/- RealLast. <br>
  Standard_EXPORT     void Perform(const gp_Lin& L,const Standard_Real PInf,const Standard_Real PSup) ;
  //! same method for a HCurve from Adaptor3d. <br>
//!           PInf an PSup can also be - and + INF. <br>
  Standard_EXPORT     void Perform(const Handle(Adaptor3d_HCurve)& HCu,const Standard_Real PInf,const Standard_Real PSup) ;
  //! Return the surface type <br>
  Standard_EXPORT     GeomAbs_SurfaceType SurfaceType() const;
  //! True is returned when the intersection have been computed. <br>
        Standard_Boolean IsDone() const;
  
        Standard_Integer NbPnt() const;
  //! Returns the U parameter of the ith intersection point <br>
//!          on the surface. <br>
        Standard_Real UParameter(const Standard_Integer I) const;
  //! Returns the V parameter of the ith intersection point <br>
//!          on the surface. <br>
        Standard_Real VParameter(const Standard_Integer I) const;
  //! Returns the parameter of the ith intersection point <br>
//!          on the line. <br>
        Standard_Real WParameter(const Standard_Integer I) const;
  //! Returns the geometric point of the ith intersection <br>
//!          between the line and the surface. <br>
       const gp_Pnt& Pnt(const Standard_Integer I) const;
  //! Returns the ith transition of the line on the surface. <br>
        IntCurveSurface_TransitionOnCurve Transition(const Standard_Integer I) const;
  //! Returns the ith state of the point on the face. <br>
//!          The values can be either TopAbs_IN <br>
//!             ( the point is in the face) <br>
//!           or TopAbs_ON <br>
//!             ( the point is on a boudary of the face). <br>
        TopAbs_State State(const Standard_Integer I) const;
  //! Returns the significant face used to determine <br>
//!          the intersection. <br>
//! <br>
       const TopoDS_Face& Face() const;
  
  Standard_EXPORT     TopAbs_State ClassifyUVPoint(const gp_Pnt2d& Puv) const;
  
  Standard_EXPORT     Bnd_Box Bounding() const;
  
  Standard_EXPORT     void Destroy() ;
~IntCurvesFace_Intersector()
{
  Destroy();
}





protected:





private:

  
  Standard_EXPORT     void InternalCall(const IntCurveSurface_HInter& HICS,const Standard_Real pinf,const Standard_Real psup) ;


Handle_BRepTopAdaptor_TopolTool myTopolTool;
Handle_BRepAdaptor_HSurface Hsurface;
Standard_Real Tol;
IntCurveSurface_SequenceOfPnt SeqPnt;
TColStd_SequenceOfInteger mySeqState;
Standard_Boolean done;
Standard_Integer nbpnt;
TopoDS_Face face;
Standard_Address PtrOnPolyhedron;
Standard_Address PtrOnBndBounding;


};


#include <IntCurvesFace_Intersector.lxx>



// other Inline functions and methods (like "C++: function call" methods)


#endif