summaryrefslogtreecommitdiff
path: root/inc/IntTools_FaceFace.hxx
blob: 12ced596ce67c38102f20dda3dbced1ec17fcc64 (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
// 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 _IntTools_FaceFace_HeaderFile
#define _IntTools_FaceFace_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 _IntPatch_Intersection_HeaderFile
#include <IntPatch_Intersection.hxx>
#endif
#ifndef _IntTools_LineConstructor_HeaderFile
#include <IntTools_LineConstructor.hxx>
#endif
#ifndef _Handle_GeomAdaptor_HSurface_HeaderFile
#include <Handle_GeomAdaptor_HSurface.hxx>
#endif
#ifndef _Standard_Integer_HeaderFile
#include <Standard_Integer.hxx>
#endif
#ifndef _Standard_Real_HeaderFile
#include <Standard_Real.hxx>
#endif
#ifndef _IntTools_SequenceOfCurves_HeaderFile
#include <IntTools_SequenceOfCurves.hxx>
#endif
#ifndef _TopoDS_Face_HeaderFile
#include <TopoDS_Face.hxx>
#endif
#ifndef _IntTools_SequenceOfPntOn2Faces_HeaderFile
#include <IntTools_SequenceOfPntOn2Faces.hxx>
#endif
#ifndef _IntSurf_ListOfPntOn2S_HeaderFile
#include <IntSurf_ListOfPntOn2S.hxx>
#endif
#ifndef _Handle_Adaptor3d_TopolTool_HeaderFile
#include <Handle_Adaptor3d_TopolTool.hxx>
#endif
class GeomAdaptor_HSurface;
class StdFail_NotDone;
class TopoDS_Face;
class IntTools_SequenceOfCurves;
class IntTools_SequenceOfPntOn2Faces;
class IntSurf_ListOfPntOn2S;
class Adaptor3d_TopolTool;


//! This class provides the intersection of <br>
//!	    face's underlying surfaces. <br>
class IntTools_FaceFace  {
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); 
  }

  
//! Empty constructor. <br>
  Standard_EXPORT   IntTools_FaceFace();
  
//! Modifier <br>
  Standard_EXPORT     void SetParameters(const Standard_Boolean ApproxCurves,const Standard_Boolean ComputeCurveOnS1,const Standard_Boolean ComputeCurveOnS2,const Standard_Real ApproximationTolerance) ;
  
//! Intersects underliing surfaces of F1 and F2 <br>
//! Use sum of tolerance of F1 and F2 as intersection <br>
//! criteria <br>
  Standard_EXPORT     void Perform(const TopoDS_Face& F1,const TopoDS_Face& F2) ;
  
//! Returns True if the intersection was successful <br>
  Standard_EXPORT     Standard_Boolean IsDone() const;
  
//! Returns sequence of 3d curves as result of intersection <br>
  Standard_EXPORT    const IntTools_SequenceOfCurves& Lines() const;
  
//! Returns sequence of 3d curves as result of intersection <br>
  Standard_EXPORT    const IntTools_SequenceOfPntOn2Faces& Points() const;
  
//! Returns tolerance reached during approximation. <br>
//! If approximation was not done, returns zero. <br>
  Standard_EXPORT     Standard_Real TolReached3d() const;
  
//! Returns tolerance reached during approximation. <br>
//! If approximation was not done, returns zero. <br>
  Standard_EXPORT     Standard_Real TolReached2d() const;
  
//! Returns first of processed faces <br>
  Standard_EXPORT    const TopoDS_Face& Face1() const;
  
//! Returns second of processed faces <br>
  Standard_EXPORT    const TopoDS_Face& Face2() const;
  
//! Returns True if faces are tangent <br>
//! <br>
  Standard_EXPORT     Standard_Boolean TangentFaces() const;
  
//! Provides post-processing the result lines. <br>
//! <bToSplit> - the flag. <br>
//!  In case of <bToSplit> is true the closed 3D-curves will be splitted <br>
//!  on parts. <br>
//!  In case of <bToSplit> is false the closed 3D-curves remain untouched. <br>
  Standard_EXPORT     void PrepareLines3D(const Standard_Boolean bToSplit = Standard_True) ;
  
  Standard_EXPORT     void SetList(IntSurf_ListOfPntOn2S& ListOfPnts) ;





protected:

  
  Standard_EXPORT     void MakeCurve(const Standard_Integer Index,const Handle(Adaptor3d_TopolTool)& D1,const Handle(Adaptor3d_TopolTool)& D2) ;
  
  Standard_EXPORT     void ComputeTolReached3d() ;




private:



Standard_Boolean myIsDone;
IntPatch_Intersection myIntersector;
IntTools_LineConstructor myLConstruct;
Handle_GeomAdaptor_HSurface myHS1;
Handle_GeomAdaptor_HSurface myHS2;
Standard_Integer myNbrestr;
Standard_Real myTolReached2d;
Standard_Real myTolReached3d;
Standard_Boolean myApprox;
Standard_Boolean myApprox1;
Standard_Boolean myApprox2;
Standard_Real myTolApprox;
IntTools_SequenceOfCurves mySeqOfCurve;
Standard_Boolean myTangentFaces;
TopoDS_Face myFace1;
TopoDS_Face myFace2;
IntTools_SequenceOfPntOn2Faces myPnts;
IntSurf_ListOfPntOn2S myListOfPnts;


};





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


#endif