0025858: Incorrect result of open offset on single edge based on BSpline curve
authorjgv <jgv@opencascade.com>
Thu, 5 Mar 2015 11:59:21 +0000 (14:59 +0300)
committerbugmaster <bugmaster@opencascade.com>
Thu, 5 Mar 2015 12:48:49 +0000 (15:48 +0300)
Test cases for issue CR25858

src/BRepFill/BRepFill_OffsetWire.cxx
tests/bugs/modalg_5/bug25858_1 [new file with mode: 0644]
tests/bugs/modalg_5/bug25858_2 [new file with mode: 0644]

index 32d9920..5d21673 100644 (file)
@@ -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 (file)
index 0000000..9e6bef9
--- /dev/null
@@ -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 (file)
index 0000000..186b646
--- /dev/null
@@ -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