0023024: Update headers of OCCT files
[occt.git] / src / BRepPrimAPI / BRepPrimAPI_MakeBox.cxx
1 // Created on: 1993-07-23
2 // Created by: Remi LEQUETTE
3 // Copyright (c) 1993-1999 Matra Datavision
4 // Copyright (c) 1999-2012 OPEN CASCADE SAS
5 //
6 // The content of this file is subject to the Open CASCADE Technology Public
7 // License Version 6.5 (the "License"). You may not use the content of this file
8 // except in compliance with the License. Please obtain a copy of the License
9 // at http://www.opencascade.org and read it completely before using this file.
10 //
11 // The Initial Developer of the Original Code is Open CASCADE S.A.S., having its
12 // main offices at: 1, place des Freres Montgolfier, 78280 Guyancourt, France.
13 //
14 // The Original Code and all software distributed under the License is
15 // distributed on an "AS IS" basis, without warranty of any kind, and the
16 // Initial Developer hereby disclaims all such warranties, including without
17 // limitation, any warranties of merchantability, fitness for a particular
18 // purpose or non-infringement. Please see the License for the specific terms
19 // and conditions governing the rights and limitations under the License.
20
21
22
23 #include <BRepPrimAPI_MakeBox.ixx>
24 #include <BRepBuilderAPI.hxx>
25 #include <TopoDS.hxx>
26 #include <Primitives_Direction.hxx>
27
28
29 inline gp_Pnt pmin(const gp_Pnt& p, 
30                    const Standard_Real dx,
31                    const Standard_Real dy, 
32                    const Standard_Real dz)
33 {
34   gp_Pnt P = p;
35   if (dx < 0) P.SetX(P.X()+dx);
36   if (dy < 0) P.SetY(P.Y()+dy);
37   if (dz < 0) P.SetZ(P.Z()+dz);
38   return P;
39 }
40
41 //=======================================================================
42 //function : BRepPrimAPI_MakeBox
43 //purpose  : 
44 //=======================================================================
45
46 BRepPrimAPI_MakeBox::BRepPrimAPI_MakeBox(const Standard_Real dx,
47                                  const Standard_Real dy,
48                                  const Standard_Real dz) :
49        myWedge(gp_Ax2(pmin(gp_Pnt(0,0,0),dx,dy,dz),gp_Dir(0,0,1),gp_Dir(1,0,0)),
50                Abs(dx),Abs(dy),Abs(dz))
51 {
52 }
53
54
55 //=======================================================================
56 //function : BRepPrimAPI_MakeBox
57 //purpose  : 
58 //=======================================================================
59
60 BRepPrimAPI_MakeBox::BRepPrimAPI_MakeBox(const gp_Pnt& P, 
61                                  const Standard_Real dx,
62                                  const Standard_Real dy, 
63                                  const Standard_Real dz) :
64        myWedge(gp_Ax2(pmin(P,dx,dy,dz),gp_Dir(0,0,1),gp_Dir(1,0,0)),
65                Abs(dx),Abs(dy),Abs(dz))
66 {
67 }
68
69
70 //=======================================================================
71 //function : BRepPrimAPI_MakeBox
72 //purpose  : 
73 //=======================================================================
74
75 inline gp_Pnt pmin(const gp_Pnt& p1, const gp_Pnt& p2)
76 {
77   return gp_Pnt(Min(p1.X(),p2.X()),Min(p1.Y(),p2.Y()),Min(p1.Z(),p2.Z()));
78 }
79
80 BRepPrimAPI_MakeBox::BRepPrimAPI_MakeBox(const gp_Pnt& P1, const gp_Pnt& P2) :
81        myWedge(gp_Ax2(pmin(P1,P2),gp_Dir(0,0,1),gp_Dir(1,0,0)),
82                Abs(P2.X()-P1.X()),
83                Abs(P2.Y()-P1.Y()),
84                Abs(P2.Z()-P1.Z()))
85 {
86 }
87
88
89 //=======================================================================
90 //function : BRepPrimAPI_MakeBox
91 //purpose  : 
92 //=======================================================================
93
94 BRepPrimAPI_MakeBox::BRepPrimAPI_MakeBox(const gp_Ax2& Axes, 
95                                  const Standard_Real dx, 
96                                  const Standard_Real dy, 
97                                  const Standard_Real dz) :
98        myWedge(Axes,dx,dy,dz)
99 {
100 }
101
102
103 //=======================================================================
104 //function : Wedge
105 //purpose  : 
106 //=======================================================================
107
108 BRepPrim_Wedge&  BRepPrimAPI_MakeBox::Wedge()
109 {
110   return myWedge;
111 }
112
113
114 //=======================================================================
115 //function : Shell
116 //purpose  : 
117 //=======================================================================
118
119 const TopoDS_Shell&  BRepPrimAPI_MakeBox::Shell()
120 {
121   myShape = myWedge.Shell();
122   Done();
123   return TopoDS::Shell(myShape);
124 }
125
126 //=======================================================================
127 //function : Build
128 //purpose  : 
129 //=======================================================================
130
131 void BRepPrimAPI_MakeBox::Build()
132 {
133   Solid();
134 }
135
136 //=======================================================================
137 //function : Solid
138 //purpose  : 
139 //=======================================================================
140
141 const TopoDS_Solid&  BRepPrimAPI_MakeBox::Solid()
142 {
143   BRep_Builder B;
144   B.MakeSolid(TopoDS::Solid(myShape));
145   B.Add(myShape,myWedge.Shell());
146   Done();
147   return TopoDS::Solid(myShape);
148 }
149
150
151
152 //=======================================================================
153 //function : operator
154 //purpose  : 
155 //=======================================================================
156
157 BRepPrimAPI_MakeBox::operator TopoDS_Shell()
158 {
159   return Shell();
160 }
161
162 //=======================================================================
163 //function : operator
164 //purpose  : 
165 //=======================================================================
166
167 BRepPrimAPI_MakeBox::operator TopoDS_Solid()
168 {
169   return Solid();
170 }
171
172
173 //=======================================================================
174 //function : BottomFace
175 //purpose  : 
176 //=======================================================================
177
178 const TopoDS_Face& BRepPrimAPI_MakeBox::BottomFace () {
179
180  return myWedge.Face (Primitives_ZMin);
181 }
182
183
184
185 //=======================================================================
186 //function : BackFace
187 //purpose  : 
188 //=======================================================================
189
190 const TopoDS_Face& BRepPrimAPI_MakeBox::BackFace () {
191
192  return myWedge.Face (Primitives_XMin);
193 }
194
195
196 //=======================================================================
197 //function : FrontFace
198 //purpose  : 
199 //=======================================================================
200
201 const TopoDS_Face& BRepPrimAPI_MakeBox::FrontFace () {
202
203  return myWedge.Face (Primitives_XMax);
204 }
205
206
207 //=======================================================================
208 //function : LeftFace
209 //purpose  : 
210 //=======================================================================
211
212 const TopoDS_Face& BRepPrimAPI_MakeBox::LeftFace () {
213
214  return myWedge.Face (Primitives_YMin);
215 }
216
217
218 //=======================================================================
219 //function : RightFace
220 //purpose  : 
221 //=======================================================================
222
223 const TopoDS_Face& BRepPrimAPI_MakeBox::RightFace () {
224
225  return myWedge.Face (Primitives_YMax);
226 }
227
228
229 //=======================================================================
230 //function : TopFace
231 //purpose  : 
232 //=======================================================================
233
234 const TopoDS_Face& BRepPrimAPI_MakeBox::TopFace () {
235
236  return myWedge.Face (Primitives_ZMax);
237 }
238
239
240
241
242
243