Salome HOME
Issue 0020904: [CEA 411] export VTK in GEOM
[modules/geom.git] / src / GEOMImpl / GEOMImpl_EllipseDriver.cxx
index 176ba05df87847634b3b2a088a43aed4e89115f6..68235edd7998acdd2650311fe252ab0a782e23de 100644 (file)
@@ -1,4 +1,4 @@
-//  Copyright (C) 2007-2008  CEA/DEN, EDF R&D, OPEN CASCADE
+//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D, OPEN CASCADE
 //
 //  Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 //  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -19,6 +19,7 @@
 //
 //  See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+
 #include <Standard_Stream.hxx>
 
 #include <GEOMImpl_EllipseDriver.hxx>
@@ -103,8 +104,11 @@ Standard_Integer GEOMImpl_EllipseDriver::Execute(TFunction_Logbook& log) const
         }
       }
     }
+
+    // Axes
+    gp_Ax2 anAxes (aP, aV);
+
     // Main Axis vector
-    gp_Vec aVM = gp::DX();
     Handle(GEOM_Function) aRefVectorMaj = aCI.GetVectorMajor();
     if (!aRefVectorMaj.IsNull()) {
       TopoDS_Shape aShapeVec = aRefVectorMaj->GetValue();
@@ -116,20 +120,20 @@ Standard_Integer GEOMImpl_EllipseDriver::Execute(TFunction_Logbook& log) const
       TopoDS_Vertex V1, V2;
       TopExp::Vertices(anE, V1, V2, Standard_True);
       if (!V1.IsNull() && !V2.IsNull()) {
-        aVM = gp_Vec(BRep_Tool::Pnt(V1), BRep_Tool::Pnt(V2));
+        gp_Vec aVM (BRep_Tool::Pnt(V1), BRep_Tool::Pnt(V2));
         if (aVM.Magnitude() < gp::Resolution()) {
           Standard_ConstructionError::Raise
             ("Ellipse creation aborted: major axis vector of zero length is given");
         }
-       if (aV.IsParallel(aVM, Precision::Angular())) {
-         Standard_ConstructionError::Raise
-           ("Ellipse creation aborted: normal and major axis vectors are parallel");
-       }
+        if (aV.IsParallel(aVM, Precision::Angular())) {
+          Standard_ConstructionError::Raise
+            ("Ellipse creation aborted: normal and major axis vectors are parallel");
+        }
+        // Axes defined with main axis vector
+        anAxes  = gp_Ax2 (aP, aV, aVM);
       }
     }
 
-    // Axes
-    gp_Ax2 anAxes (aP, aV, aVM);
     // Ellipse
     gp_Elips anEll (anAxes, aCI.GetRMajor(), aCI.GetRMinor());
     aShape = BRepBuilderAPI_MakeEdge(anEll).Edge();
@@ -164,10 +168,10 @@ Standard_EXPORT Handle_Standard_Type& GEOMImpl_EllipseDriver_Type_()
 
   static Handle_Standard_Transient _Ancestors[]= {aType1,aType2,aType3,NULL};
   static Handle_Standard_Type _aType = new Standard_Type("GEOMImpl_EllipseDriver",
-                                                        sizeof(GEOMImpl_EllipseDriver),
-                                                        1,
-                                                        (Standard_Address)_Ancestors,
-                                                        (Standard_Address)NULL);
+                                                         sizeof(GEOMImpl_EllipseDriver),
+                                                         1,
+                                                         (Standard_Address)_Ancestors,
+                                                         (Standard_Address)NULL);
 
   return _aType;
 }