summaryrefslogtreecommitdiff
path: root/inc/BOP_FaceBuilder.hxx
blob: 6d663906fd67b7030f04b4770be60e50018be501 (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
182
183
184
185
186
187
188
189
190
191
192
// 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 _BOP_FaceBuilder_HeaderFile
#define _BOP_FaceBuilder_HeaderFile

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

#ifndef _TopoDS_Face_HeaderFile
#include <TopoDS_Face.hxx>
#endif
#ifndef _BOP_LoopSet_HeaderFile
#include <BOP_LoopSet.hxx>
#endif
#ifndef _BOP_BlockIterator_HeaderFile
#include <BOP_BlockIterator.hxx>
#endif
#ifndef _BOP_BlockBuilder_HeaderFile
#include <BOP_BlockBuilder.hxx>
#endif
#ifndef _BOP_FaceAreaBuilder_HeaderFile
#include <BOP_FaceAreaBuilder.hxx>
#endif
#ifndef _BOP_PWireEdgeSet_HeaderFile
#include <BOP_PWireEdgeSet.hxx>
#endif
#ifndef _TopTools_ListOfShape_HeaderFile
#include <TopTools_ListOfShape.hxx>
#endif
#ifndef _Standard_Integer_HeaderFile
#include <Standard_Integer.hxx>
#endif
#ifndef _Standard_Boolean_HeaderFile
#include <Standard_Boolean.hxx>
#endif
#ifndef _TColStd_SequenceOfInteger_HeaderFile
#include <TColStd_SequenceOfInteger.hxx>
#endif
class BOP_WireEdgeSet;
class TopTools_ListOfShape;
class TopoDS_Shape;
class TopoDS_Wire;
class TopoDS_Edge;



//!   The  algorithm to   construct Faces from a WireEdgeSet <br>
//! <br>
class BOP_FaceBuilder  {
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   BOP_FaceBuilder();
  
//! Launches the algorithm consisting of four steps <br>
//! 1.  Split the WES on wires <br>
//! 2.  Make Loops from wires <br>
//! 3.  Make Areas from Loops <br>
//! 4.  Make Faces from Areas <br>
  Standard_EXPORT     void Do(const BOP_WireEdgeSet& aWES,const Standard_Boolean aForceClass = Standard_True) ;
  
//! Selector <br>
  Standard_EXPORT    const BOP_WireEdgeSet& WES() const;
  
//! Selector <br>
  Standard_EXPORT    const TopTools_ListOfShape& NewFaces() const;
  
//! Modifier <br>
//! 0 -Treat internal edges, <br>
//! 1 -Do not treat internal edges <br>
  Standard_EXPORT     void SetTreatment(const Standard_Integer aTreatment) ;
  
//! Modifier <br>
  Standard_EXPORT     void SetManifoldFlag(const Standard_Boolean aMFlag) ;
  
//! Modifier <br>
//! 1 -Treat scale configured same domain faces, <br>
//! 0 -Do not treat them. <br>
  Standard_EXPORT     void SetTreatSDScales(const Standard_Integer aTreatment) ;
  
//! Selector <br>
  Standard_EXPORT     Standard_Boolean ManifoldFlag() const;
  
//! Selector <br>
  Standard_EXPORT     Standard_Integer Treatment() const;
  
//! Selector <br>
  Standard_EXPORT     Standard_Integer TreatSDScales() const;
  
  Standard_EXPORT     Standard_Integer InitFace() ;
  
  Standard_EXPORT     Standard_Boolean MoreFace() const;
  
//! <br>
//! <br>
//! Wires' iterator <br>
//! <br>
  Standard_EXPORT     void NextFace() ;
  
  Standard_EXPORT     Standard_Integer InitWire() ;
  
  Standard_EXPORT     Standard_Boolean MoreWire() const;
  
  Standard_EXPORT     void NextWire() ;
  
  Standard_EXPORT     Standard_Boolean IsOldWire() const;
  
  Standard_EXPORT    const TopoDS_Shape& OldWire() const;
  
//! <br>
  Standard_EXPORT    const TopoDS_Wire& Wire() const;
  
  Standard_EXPORT     void FindNextValidElement() ;
  
  Standard_EXPORT     Standard_Integer InitEdge() ;
  
  Standard_EXPORT     Standard_Boolean MoreEdge() const;
  
  Standard_EXPORT     void NextEdge() ;
  
  Standard_EXPORT    const TopoDS_Edge& Edge() const;





protected:





private:

  
//! Processes internal edges if they exists <br>
  Standard_EXPORT     void DoInternalEdges() ;
  
//! Make Faces from Areas <br>
  Standard_EXPORT     void BuildNewFaces() ;
  
//! Make Loops from wires <br>
  Standard_EXPORT     void MakeLoops(BOP_WireEdgeSet& SS) ;
  
//! Treatment SD faces with a "scale" <br>
  Standard_EXPORT     void SDScales() ;


TopoDS_Face myFace;
BOP_LoopSet myLoopSet;
BOP_BlockIterator myBlockIterator;
BOP_BlockBuilder myBlockBuilder;
BOP_FaceAreaBuilder myFaceAreaBuilder;
BOP_PWireEdgeSet myWES;
TopTools_ListOfShape myNewFaces;
Standard_Integer myTreatment;
Standard_Boolean myManifoldFlag;
Standard_Integer myTreatSDScales;
TColStd_SequenceOfInteger myNegatives;


};





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


#endif