25d05025edf8e5dd191971fffe92e04904d7e53f
[occt.git] / src / GeomToStep / GeomToStep_MakeHyperbola.cxx
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 #include <GeomToStep_MakeHyperbola.ixx>
15
16 #include <StepGeom_Hyperbola.hxx>
17 #include <gp_Hypr.hxx>
18 #include <gp_Hypr2d.hxx>
19 #include <Geom_Hyperbola.hxx>
20 #include <GeomToStep_MakeAxis2Placement2d.hxx>
21 #include <GeomToStep_MakeAxis2Placement3d.hxx>
22 #include <StdFail_NotDone.hxx>
23 #include <TCollection_HAsciiString.hxx>
24 #include <UnitsMethods.hxx>
25
26
27 //=============================================================================
28 // Creation d'une hyperbola de prostep a partir d'une hyperbola de
29 // Geom2d
30 //=============================================================================
31
32 GeomToStep_MakeHyperbola::GeomToStep_MakeHyperbola(const Handle(Geom2d_Hyperbola)& C)
33 {
34   gp_Hypr2d gpHyp;
35   gpHyp = C->Hypr2d();
36
37   Handle(StepGeom_Hyperbola) HStep = new StepGeom_Hyperbola;
38   StepGeom_Axis2Placement            Ax2;
39   Handle(StepGeom_Axis2Placement2d)  Ax2Step;
40   Standard_Real                   majorR, minorR;
41   
42   GeomToStep_MakeAxis2Placement2d MkAxis2(gpHyp.Axis());
43   Ax2Step = MkAxis2.Value();
44   majorR = gpHyp.MajorRadius();
45   minorR = gpHyp.MinorRadius();
46   Ax2.SetValue(Ax2Step);
47   Handle(TCollection_HAsciiString) name = new TCollection_HAsciiString("");
48   HStep->Init(name, Ax2,majorR,minorR);
49   theHyperbola = HStep;
50   done = Standard_True;
51 }
52
53 //=============================================================================
54 // Creation d'une hyperbola de prostep a partir d'une hyperbola de
55 // Geom
56 //=============================================================================
57
58  GeomToStep_MakeHyperbola::GeomToStep_MakeHyperbola(const Handle(Geom_Hyperbola)& C)
59 {
60   gp_Hypr gpHyp;
61   gpHyp = C->Hypr();
62
63   Handle(StepGeom_Hyperbola) HStep = new StepGeom_Hyperbola;
64   StepGeom_Axis2Placement            Ax2;
65   Handle(StepGeom_Axis2Placement3d)  Ax2Step;
66   Standard_Real                   majorR, minorR;
67   
68   GeomToStep_MakeAxis2Placement3d MkAxis2(gpHyp.Position());
69   Ax2Step = MkAxis2.Value();
70   majorR = gpHyp.MajorRadius();
71   minorR = gpHyp.MinorRadius();
72   Ax2.SetValue(Ax2Step);
73   Handle(TCollection_HAsciiString) name = new TCollection_HAsciiString("");
74   Standard_Real fact = UnitsMethods::LengthFactor();
75   HStep->Init(name, Ax2,majorR/fact,minorR/fact);
76   theHyperbola = HStep;
77   done = Standard_True;
78 }
79
80 //=============================================================================
81 // return the result
82 //=============================================================================
83
84 const Handle(StepGeom_Hyperbola)& GeomToStep_MakeHyperbola::Value() const 
85 {
86   StdFail_NotDone_Raise_if(!done, "");
87   return theHyperbola;
88 }
89