summaryrefslogtreecommitdiff
path: root/inc/BOP_WireEdgeSet.hxx
blob: 5e5eb7a4290931cc58fb2ca4fa542d81d5cc3a8f (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
// 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_WireEdgeSet_HeaderFile
#define _BOP_WireEdgeSet_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 _Standard_Integer_HeaderFile
#include <Standard_Integer.hxx>
#endif
#ifndef _BOP_ShapeSet_HeaderFile
#include <BOP_ShapeSet.hxx>
#endif
#ifndef _Standard_Boolean_HeaderFile
#include <Standard_Boolean.hxx>
#endif
#ifndef _TopAbs_Orientation_HeaderFile
#include <TopAbs_Orientation.hxx>
#endif
class TopoDS_Face;
class TopoDS_Shape;
class TopTools_ListOfShape;
class TopoDS_Edge;
class TopoDS_Vertex;
class gp_Pnt2d;
class gp_Vec2d;


//! The class containing data and methods <br>
//!          for a set of edges and wires <br>
class BOP_WireEdgeSet  : public BOP_ShapeSet {
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_WireEdgeSet();
  
//! Creates a WES to build edges connected by vertices <br>
//! on face F. Edges of the WireEdgeSet must have a representation <br>
//! on surface of face F. <br>
  Standard_EXPORT   BOP_WireEdgeSet(const TopoDS_Face& F);
  
//! Initialize a WES to build edges connected by vertices <br>
//! on face F. Edges of the WireEdgeSet must have a representation <br>
//! on surface of face F. <br>
  Standard_EXPORT     void Initialize(const TopoDS_Face& F) ;
  
//! Selector <br>
  Standard_EXPORT    const TopoDS_Face& Face() const;
  
//! See  in  base  class,  please <br>
  Standard_EXPORT   virtual  void AddShape(const TopoDS_Shape& S) ;
  
//! See  in  base  class,  please <br>
  Standard_EXPORT   virtual  void AddStartElement(const TopoDS_Shape& S) ;
  
//! See  in  base  class,  please <br>
  Standard_EXPORT   virtual  void AddElement(const TopoDS_Shape& S) ;
  
//! Internal  usage <br>
  Standard_EXPORT   virtual  void InitNeighbours(const TopoDS_Shape& E) ;
  
//! Build the list of neighbour edges of edge myCurrentShape <br>
//! Initialize iterator of neighbour edges to edge myCurrentShape <br>
  Standard_EXPORT   virtual  void FindNeighbours() ;
  
  Standard_EXPORT   virtual const TopTools_ListOfShape& MakeNeighboursList(const TopoDS_Shape& E,const TopoDS_Shape& V) ;
  
//! Internal  usage <br>
  Standard_EXPORT   static  void IsUVISO(const TopoDS_Edge& E,const TopoDS_Face& F,Standard_Boolean& uiso,Standard_Boolean& viso) ;
  
//! Removes the edge aE from the WES <br>
  Standard_EXPORT     void RemoveEdgeFromWES(const TopoDS_Edge& aE) ;
  
//! Returns TRUE if the edge aE has been kept twice <br>
//! in  the WES <br>
  Standard_EXPORT     Standard_Boolean KeptTwice(const TopoDS_Edge& aE) const;





protected:





private:

  
//! Indicates whether vertex V is a good connexity vertex between <br>
//! edges E1 and E2. <br>
//! i.e, returns True if V is shared by E1 and E2 and if V has different <br>
//! orientations on E1 and E2. <br>
//! If V is shared by E1 and E2, returns the orientation of V on E1 and E2 <br>
  Standard_EXPORT     Standard_Boolean VertexConnectsEdges(const TopoDS_Shape& V,const TopoDS_Shape& E1,const TopoDS_Shape& E2,TopAbs_Orientation& O1,TopAbs_Orientation& O2) const;
  
//! Internal  usage <br>
  Standard_EXPORT     Standard_Boolean VertexConnectsEdgesClosing(const TopoDS_Shape& V,const TopoDS_Shape& E1,const TopoDS_Shape& E2) const;
  
//! Internal  usage <br>
  Standard_EXPORT     Standard_Integer NbClosingShapes(const TopTools_ListOfShape& L) const;
  
//! Internal  usage <br>
  Standard_EXPORT     void LocalD1(const TopoDS_Face& F,const TopoDS_Edge& E,const TopoDS_Vertex& V,gp_Pnt2d& P2,gp_Vec2d& V2) const;
  
//! indicates if the edge <E> is a closing edge of myFace <br>
//! Internal  usage <br>
  Standard_EXPORT     Standard_Boolean IsClosed(const TopoDS_Shape& E) const;
  
//! indicates if the edge <E> is a closing edge on U of myFace <br>
//! Internal  usage <br>
  Standard_EXPORT     Standard_Boolean IsUClosed(const TopoDS_Shape& E) const;
  
//! indicates if the edge <E> is a closing edge on V of myFace <br>
//! Internal  usage <br>
  Standard_EXPORT     Standard_Boolean IsVClosed(const TopoDS_Shape& E) const;


TopoDS_Face myFace;
Standard_Integer myDEBVertexIndex;


};





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


#endif