0020149: EDF GEOM: Basic disk and face do not have the same orientation at construction

This commit is contained in:
dmv 2009-02-03 10:57:01 +00:00
parent cc51fb6c0c
commit d5cd2a25fd

View File

@ -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;