summaryrefslogtreecommitdiff
path: root/inc/IntCurvesFace_ShapeIntersector.hxx
blob: 59000b9e1928de1342bc8573ee85fdcef4c560ca (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
// 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_ShapeIntersector_HeaderFile
#define _IntCurvesFace_ShapeIntersector_HeaderFile

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

#ifndef _Standard_Boolean_HeaderFile
#include <Standard_Boolean.hxx>
#endif
#ifndef _Standard_Integer_HeaderFile
#include <Standard_Integer.hxx>
#endif
#ifndef _Standard_Address_HeaderFile
#include <Standard_Address.hxx>
#endif
#ifndef _BRepTopAdaptor_SeqOfPtr_HeaderFile
#include <BRepTopAdaptor_SeqOfPtr.hxx>
#endif
#ifndef _TColStd_SequenceOfInteger_HeaderFile
#include <TColStd_SequenceOfInteger.hxx>
#endif
#ifndef _TColStd_SequenceOfReal_HeaderFile
#include <TColStd_SequenceOfReal.hxx>
#endif
#ifndef _Standard_Real_HeaderFile
#include <Standard_Real.hxx>
#endif
#ifndef _Handle_Adaptor3d_HCurve_HeaderFile
#include <Handle_Adaptor3d_HCurve.hxx>
#endif
#ifndef _IntCurveSurface_TransitionOnCurve_HeaderFile
#include <IntCurveSurface_TransitionOnCurve.hxx>
#endif
#ifndef _TopAbs_State_HeaderFile
#include <TopAbs_State.hxx>
#endif
class TopoDS_Shape;
class gp_Lin;
class Adaptor3d_HCurve;
class gp_Pnt;
class TopoDS_Face;



class IntCurvesFace_ShapeIntersector  {
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); 
  }

  
  Standard_EXPORT   IntCurvesFace_ShapeIntersector();
  
  Standard_EXPORT     void Load(const TopoDS_Shape& Sh,const Standard_Real Tol) ;
  //! Perform the intersection between the <br>
//!          segment L and the loaded shape. <br>
//! <br>
//!          PInf is the smallest parameter on the line <br>
//!          PSup is the highest  parammter 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) ;
  //! Perform the intersection between the <br>
//!          segment L and the loaded shape. <br>
//! <br>
//!          PInf is the smallest parameter on the line <br>
//!          PSup is the highest  parammter on the line <br>
//! <br>
//!          For an infinite line PInf and PSup can be <br>
//!          +/- RealLast. <br>
  Standard_EXPORT     void PerformNearest(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) ;
  //! 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_Integer I) const;
  //! Internal method. Sort the result on the Curve <br>
//!          parameter. <br>
  Standard_EXPORT     void SortResult() ;
  
  Standard_EXPORT     void Destroy() ;
~IntCurvesFace_ShapeIntersector()
{
  Destroy();
}





protected:





private:



Standard_Boolean done;
Standard_Integer nbfaces;
Standard_Address PtrJetons;
Standard_Address PtrJetonsIndex;
BRepTopAdaptor_SeqOfPtr PtrIntersector;
TColStd_SequenceOfInteger IndexPt;
TColStd_SequenceOfInteger IndexFace;
TColStd_SequenceOfInteger IndexIntPnt;
TColStd_SequenceOfReal IndexPar;


};


#include <IntCurvesFace_ShapeIntersector.lxx>



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


#endif