]> SALOME platform Git repositories - modules/geom.git/commitdiff
Salome HOME
0020149: EDF GEOM: Basic disk and face do not have the same orientation at construction
authordmv <dmv@opencascade.com>
Tue, 3 Feb 2009 10:57:01 +0000 (10:57 +0000)
committerdmv <dmv@opencascade.com>
Tue, 3 Feb 2009 10:57:01 +0000 (10:57 +0000)
src/GEOMImpl/GEOMImpl_DiskDriver.cxx

index f5bf05cd10c279df9a572d68a015b3f98c95a0ed..5804a77acd5c5a83eea499e1cd322b7209a8169b 100755 (executable)
@@ -93,7 +93,7 @@ Standard_Integer GEOMImpl_DiskDriver::Execute(TFunction_Logbook& log) const
       TopExp::Vertices(anE, V1, V2, Standard_True);
       if (!V1.IsNull() && !V2.IsNull()) {
         gp_Vec aV (BRep_Tool::Pnt(V1), BRep_Tool::Pnt(V2));
-        gp_Ax2 anAxes (aP, aV);
+        gp_Ax2 anAxes (aP, -aV);
         gp_Circ aCirc (anAxes, aCI.GetRadius());
        TopoDS_Shape aCircle = BRepBuilderAPI_MakeEdge(aCirc).Edge();
        BRepBuilderAPI_MakeWire MW;
@@ -122,7 +122,7 @@ Standard_Integer GEOMImpl_DiskDriver::Execute(TFunction_Logbook& log) const
         Standard_ConstructionError::Raise("Disk creation aborted: coincident points given");
       if (gp_Vec(aP1, aP2).IsParallel(gp_Vec(aP1, aP3), Precision::Angular()))
         Standard_ConstructionError::Raise("Disk creation aborted: points lay on one line");
-      Handle(Geom_Circle) aCirc = GC_MakeCircle(aP1, aP2, aP3).Value();
+      Handle(Geom_Circle) aCirc = GC_MakeCircle(aP3, aP2, aP1).Value();
       TopoDS_Shape aCircle = BRepBuilderAPI_MakeEdge(aCirc).Edge();
       BRepBuilderAPI_MakeWire MW;
       MW.Add(TopoDS::Edge(aCircle));
@@ -141,7 +141,7 @@ Standard_Integer GEOMImpl_DiskDriver::Execute(TFunction_Logbook& log) const
     else if (anOrient == 3)
       aV = gp::DY();
 
-    gp_Ax2 anAxes (aP, aV);
+    gp_Ax2 anAxes (aP, -aV);
     gp_Circ aCirc (anAxes, aCI.GetRadius());
     TopoDS_Shape aCircle = BRepBuilderAPI_MakeEdge(aCirc).Edge();
     BRepBuilderAPI_MakeWire MW;