diff --git a/src/BRepFill/BRepFill_OffsetWire.cxx b/src/BRepFill/BRepFill_OffsetWire.cxx index 32d9920f2f..5d216732b8 100644 --- a/src/BRepFill/BRepFill_OffsetWire.cxx +++ b/src/BRepFill/BRepFill_OffsetWire.cxx @@ -233,7 +233,6 @@ static Standard_Boolean KPartCircle BRepFill_IndexedDataMapOfOrientedShapeListOfShape& myMap, Standard_Boolean& myIsDone) { - // The only contour which is a closed circle TopExp_Explorer exp(mySpine,TopAbs_EDGE); Standard_Integer NbEdges = 0; TopoDS_Edge E; @@ -263,13 +262,15 @@ static Standard_Boolean KPartCircle Handle(Geom2d_Curve) OC; if (AHC->GetType() == GeomAbs_Line) { - if (E.Orientation() == TopAbs_REVERSED) anOffset *= -1; + if (E.Orientation() == TopAbs_REVERSED) + anOffset *= -1; Adaptor3d_OffsetCurve Off(AHC,anOffset); OC = new Geom2d_Line(Off.Line()); } else if (AHC->GetType() == GeomAbs_Circle) { - if (E.Orientation() == TopAbs_FORWARD) anOffset *= -1; + if (E.Orientation() == TopAbs_FORWARD) + anOffset *= -1; gp_Circ2d theCirc = AHC->Circle(); if (anOffset > 0. || Abs(anOffset) < theCirc.Radius()) OC = new Geom2d_Circle (theCirc.Position(), theCirc.Radius() + anOffset); @@ -281,7 +282,8 @@ static Standard_Boolean KPartCircle } else { - if (E.Orientation() == TopAbs_REVERSED) anOffset *= -1; + if (E.Orientation() == TopAbs_FORWARD) + anOffset *= -1; Handle(Geom2d_TrimmedCurve) G2dT = new Geom2d_TrimmedCurve(aPCurve, f, l); OC = new Geom2d_OffsetCurve( G2dT, anOffset); } diff --git a/tests/bugs/modalg_5/bug25858_1 b/tests/bugs/modalg_5/bug25858_1 new file mode 100644 index 0000000000..9e6bef988e --- /dev/null +++ b/tests/bugs/modalg_5/bug25858_1 @@ -0,0 +1,37 @@ +puts "========" +puts "OCC25858" +puts "========" +puts "" +########################################################################################################## +# Incorrect result of open offset on single edge based on BSpline curve +########################################################################################################## + +restore [locate_data_file bug25858_hf2d.brep] ff + +explode ff + +smallview +donly ff_1 +fit +display ff + +openoffset res ff 1 0.1 +renamevar res_1 result + +set length 0.879164 + +set nbshapes_expected " +Number of shapes in shape + VERTEX : 2 + EDGE : 1 + WIRE : 1 + FACE : 0 + SHELL : 0 + SOLID : 0 + COMPSOLID : 0 + COMPOUND : 0 + SHAPE : 4 +" +checknbshapes result ${nbshapes_expected} 1 "Result of open offset on single edge based on BSpline curve" + +set only_screen_axo 1 diff --git a/tests/bugs/modalg_5/bug25858_2 b/tests/bugs/modalg_5/bug25858_2 new file mode 100644 index 0000000000..186b646537 --- /dev/null +++ b/tests/bugs/modalg_5/bug25858_2 @@ -0,0 +1,38 @@ +puts "========" +puts "OCC25858" +puts "========" +puts "" +########################################################################################################## +# Incorrect result of open offset on single edge based on BSpline curve +########################################################################################################## + +restore [locate_data_file bug25858_hf2d.brep] ff + +invert ff +explode ff + +smallview +donly ff_1 +fit +display ff + +openoffset res ff 1 0.1 +renamevar res_1 result + +set length 0.879164 + +set nbshapes_expected " +Number of shapes in shape + VERTEX : 2 + EDGE : 1 + WIRE : 1 + FACE : 0 + SHELL : 0 + SOLID : 0 + COMPSOLID : 0 + COMPOUND : 0 + SHAPE : 4 +" +checknbshapes result ${nbshapes_expected} 1 "Result of open offset on single edge based on BSpline curve" + +set only_screen_axo 1