9643943ee6a56428aeca1ad2fc9f77d98b888678
[occt.git] / src / BRepPrim / BRepPrim_OneAxis.hxx
1 // Copyright (c) 1999-2014 OPEN CASCADE SAS
2 //
3 // This file is part of Open CASCADE Technology software library.
4 //
5 // This library is free software; you can redistribute it and/or modify it under
6 // the terms of the GNU Lesser General Public License version 2.1 as published
7 // by the Free Software Foundation, with special exception defined in the file
8 // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
9 // distribution for complete text of the license and disclaimer of any warranty.
10 //
11 // Alternatively, this file may be used under the terms of Open CASCADE
12 // commercial license or contractual agreement.
13
14 #ifndef _BRepPrim_OneAxis_HeaderFile
15 #define _BRepPrim_OneAxis_HeaderFile
16
17 #include <BRepPrim_Builder.hxx>
18 #include <gp_Ax2.hxx>
19 #include <TopoDS_Shell.hxx>
20 #include <TopoDS_Vertex.hxx>
21 #include <TopoDS_Edge.hxx>
22 #include <TopoDS_Wire.hxx>
23 #include <TopoDS_Face.hxx>
24
25 class Standard_DomainError;
26 class Standard_OutOfRange;
27 class TopoDS_Shell;
28 class TopoDS_Face;
29 class TopoDS_Wire;
30 class TopoDS_Edge;
31 class TopoDS_Vertex;
32 class BRepPrim_Builder;
33 class gp_Ax2;
34 class gp_Pnt2d;
35
36
37 #ifndef _Standard_HeaderFile
38 #include <Standard.hxx>
39 #endif
40 #ifndef _Standard_DefineAlloc_HeaderFile
41 #include <Standard_DefineAlloc.hxx>
42 #endif
43 #ifndef _Standard_Macro_HeaderFile
44 #include <Standard_Macro.hxx>
45 #endif
46
47 class BRepPrim_OneAxis  {
48
49 public:
50
51   DEFINE_STANDARD_ALLOC
52
53  // Methods PUBLIC
54  // 
55 Standard_EXPORT virtual  void Delete() ;
56 Standard_EXPORT virtual ~BRepPrim_OneAxis()
57 //Standard_EXPORT virtual ~()
58 {
59   Delete();
60 }
61
62 Standard_EXPORT   void SetMeridianOffset(const Standard_Real MeridianOffset = 0) ;
63 Standard_EXPORT  const gp_Ax2& Axes() const;
64 Standard_EXPORT   void Axes(const gp_Ax2& A) ;
65 Standard_EXPORT   Standard_Real Angle() const;
66 Standard_EXPORT   void Angle(const Standard_Real A) ;
67 Standard_EXPORT   Standard_Real VMin() const;
68 Standard_EXPORT   void VMin(const Standard_Real V) ;
69 Standard_EXPORT   Standard_Real VMax() const;
70 Standard_EXPORT   void VMax(const Standard_Real V) ;
71 Standard_EXPORT virtual  TopoDS_Face MakeEmptyLateralFace() const = 0;
72 Standard_EXPORT virtual  TopoDS_Edge MakeEmptyMeridianEdge(const Standard_Real Ang) const = 0;
73 Standard_EXPORT virtual  void SetMeridianPCurve(TopoDS_Edge& E,const TopoDS_Face& F) const = 0;
74 Standard_EXPORT virtual  gp_Pnt2d MeridianValue(const Standard_Real V) const = 0;
75 Standard_EXPORT virtual  Standard_Boolean MeridianOnAxis(const Standard_Real V) const;
76 Standard_EXPORT virtual  Standard_Boolean MeridianClosed() const;
77 Standard_EXPORT virtual  Standard_Boolean VMaxInfinite() const;
78 Standard_EXPORT virtual  Standard_Boolean VMinInfinite() const;
79 Standard_EXPORT virtual  Standard_Boolean HasTop() const;
80 Standard_EXPORT virtual  Standard_Boolean HasBottom() const;
81 Standard_EXPORT virtual  Standard_Boolean HasSides() const;
82 Standard_EXPORT  const TopoDS_Shell& Shell() ;
83 Standard_EXPORT  const TopoDS_Face& LateralFace() ;
84 Standard_EXPORT  const TopoDS_Face& TopFace() ;
85 Standard_EXPORT  const TopoDS_Face& BottomFace() ;
86 Standard_EXPORT  const TopoDS_Face& StartFace() ;
87 Standard_EXPORT  const TopoDS_Face& EndFace() ;
88 Standard_EXPORT  const TopoDS_Wire& LateralWire() ;
89 Standard_EXPORT  const TopoDS_Wire& LateralStartWire() ;
90 Standard_EXPORT  const TopoDS_Wire& LateralEndWire() ;
91 Standard_EXPORT  const TopoDS_Wire& TopWire() ;
92 Standard_EXPORT  const TopoDS_Wire& BottomWire() ;
93 Standard_EXPORT  const TopoDS_Wire& StartWire() ;
94 Standard_EXPORT  const TopoDS_Wire& AxisStartWire() ;
95 Standard_EXPORT  const TopoDS_Wire& EndWire() ;
96 Standard_EXPORT  const TopoDS_Wire& AxisEndWire() ;
97 Standard_EXPORT  const TopoDS_Edge& AxisEdge() ;
98 Standard_EXPORT  const TopoDS_Edge& StartEdge() ;
99 Standard_EXPORT  const TopoDS_Edge& EndEdge() ;
100 Standard_EXPORT  const TopoDS_Edge& StartTopEdge() ;
101 Standard_EXPORT  const TopoDS_Edge& StartBottomEdge() ;
102 Standard_EXPORT  const TopoDS_Edge& EndTopEdge() ;
103 Standard_EXPORT  const TopoDS_Edge& EndBottomEdge() ;
104 Standard_EXPORT  const TopoDS_Edge& TopEdge() ;
105 Standard_EXPORT  const TopoDS_Edge& BottomEdge() ;
106 Standard_EXPORT  const TopoDS_Vertex& AxisTopVertex() ;
107 Standard_EXPORT  const TopoDS_Vertex& AxisBottomVertex() ;
108 Standard_EXPORT  const TopoDS_Vertex& TopStartVertex() ;
109 Standard_EXPORT  const TopoDS_Vertex& TopEndVertex() ;
110 Standard_EXPORT  const TopoDS_Vertex& BottomStartVertex() ;
111 Standard_EXPORT  const TopoDS_Vertex& BottomEndVertex() ;
112
113
114
115
116
117 protected:
118
119  // Methods PROTECTED
120  // 
121 Standard_EXPORT BRepPrim_OneAxis(const BRepPrim_Builder& B,const gp_Ax2& A,const Standard_Real VMin,const Standard_Real VMax);
122
123
124  // Fields PROTECTED
125  //
126 BRepPrim_Builder myBuilder;
127
128
129 private: 
130
131  // Methods PRIVATE
132  // 
133
134
135  // Fields PRIVATE
136  //
137 gp_Ax2 myAxes;
138 Standard_Real myAngle;
139 Standard_Real myVMin;
140 Standard_Real myVMax;
141 Standard_Real myMeridianOffset;
142 TopoDS_Shell myShell;
143 Standard_Boolean ShellBuilt;
144 TopoDS_Vertex myVertices[6];
145 Standard_Boolean VerticesBuilt[6];
146 TopoDS_Edge myEdges[9];
147 Standard_Boolean EdgesBuilt[9];
148 TopoDS_Wire myWires[9];
149 Standard_Boolean WiresBuilt[9];
150 TopoDS_Face myFaces[5];
151 Standard_Boolean FacesBuilt[5];
152
153
154 };
155
156
157
158
159
160 // other Inline functions and methods (like "C++: function call" methods)
161 //
162
163
164 #endif