0026937: Eliminate NO_CXX_EXCEPTION macro support
[occt.git] / src / GC / GC_MakeConicalSurface.cxx
1 // Created on: 1992-10-02
2 // Created by: Remi GILET
3 // Copyright (c) 1992-1999 Matra Datavision
4 // Copyright (c) 1999-2014 OPEN CASCADE SAS
5 //
6 // This file is part of Open CASCADE Technology software library.
7 //
8 // This library is free software; you can redistribute it and/or modify it under
9 // the terms of the GNU Lesser General Public License version 2.1 as published
10 // by the Free Software Foundation, with special exception defined in the file
11 // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
12 // distribution for complete text of the license and disclaimer of any warranty.
13 //
14 // Alternatively, this file may be used under the terms of Open CASCADE
15 // commercial license or contractual agreement.
16
17
18 #include <GC_MakeConicalSurface.hxx>
19 #include <gce_MakeCone.hxx>
20 #include <Geom_ConicalSurface.hxx>
21 #include <gp.hxx>
22 #include <gp_Ax1.hxx>
23 #include <gp_Ax2.hxx>
24 #include <gp_Cone.hxx>
25 #include <gp_Lin.hxx>
26 #include <gp_Pnt.hxx>
27 #include <Standard_NotImplemented.hxx>
28 #include <StdFail_NotDone.hxx>
29
30 GC_MakeConicalSurface::GC_MakeConicalSurface(const gp_Ax2&       A2    ,
31                                                const Standard_Real Ang   ,
32                                                const Standard_Real Radius)
33 {
34   if (Radius < 0.) { TheError = gce_NegativeRadius; }
35   else if (Ang <= gp::Resolution() || Ang >= M_PI/2. - gp::Resolution()) {
36     TheError = gce_BadAngle;
37   }
38   else {
39     TheError = gce_Done;
40     TheCone = new Geom_ConicalSurface(A2,Ang,Radius);
41   }
42 }
43
44 GC_MakeConicalSurface::GC_MakeConicalSurface(const gp_Cone& C)
45 {
46   TheError = gce_Done;
47   TheCone = new Geom_ConicalSurface(C);
48 }
49
50 //=========================================================================
51 //   Creation of a cone by four points.                                +
52 //   two first give the axis.                                     +
53 //   the third gives the base radius.                              +
54 //   the third and the fourth the half-angle.                          +
55 //=========================================================================
56
57 GC_MakeConicalSurface::GC_MakeConicalSurface(const gp_Pnt& P1 ,
58                                                const gp_Pnt& P2 ,
59                                                const gp_Pnt& P3 ,
60                                                const gp_Pnt& P4 ) 
61 {
62   gce_MakeCone C = gce_MakeCone(P1,P2,P3,P4);
63   TheError = C.Status();
64   if (TheError == gce_Done) {
65     TheCone = new Geom_ConicalSurface(C.Value());
66   }
67 }
68
69
70 //=========================================================================
71 //=========================================================================
72
73 GC_MakeConicalSurface::GC_MakeConicalSurface(const gp_Pnt&       P1 ,
74                                                const gp_Pnt&       P2 ,
75                                                const Standard_Real R1 ,
76                                                const Standard_Real R2 ) 
77 {
78   gce_MakeCone C = gce_MakeCone(P1,P2,R1,R2);
79   TheError = C.Status();
80   if (TheError == gce_Done) {
81     TheCone = new Geom_ConicalSurface(C);
82   }
83 }
84
85 const Handle(Geom_ConicalSurface)& GC_MakeConicalSurface::Value() const
86
87   StdFail_NotDone_Raise_if(TheError != gce_Done,"");
88   return TheCone;
89 }