0028028: Solid becomes invalid after scaling
authorazv <azv@opencascade.com>
Sat, 29 Oct 2016 08:23:05 +0000 (11:23 +0300)
committerapn <apn@opencascade.com>
Tue, 8 Nov 2016 12:15:18 +0000 (15:15 +0300)
The shape after scaling contains PCurves with incorrect parametrization, because of too large tolerance given.

1. Set Precision::PConfution() as a tolerance for GeomLib::SameRange.
2. Do not take into account tolerances of vertices while calculating tolerance of transformed PCurve for edge.
3. Test case bugs/modalg_6/bug28028

src/BRepTools/BRepTools_TrsfModification.cxx
tests/bugs/modalg_6/bug28028 [new file with mode: 0644]

index 36e812a..8aea7b8 100644 (file)
@@ -204,9 +204,10 @@ Standard_Boolean BRepTools_TrsfModification::NewCurve2d
   TopExp::Vertices(E,V1,V2);
   TopoDS_Shape initEFOR = E.Oriented(TopAbs_FORWARD); // skl
   TopoDS_Edge EFOR = TopoDS::Edge(initEFOR/*E.Oriented(TopAbs_FORWARD)*/); //skl
-  NewParameter(V1,EFOR,f,Tol);
-  NewParameter(V2,EFOR,l,Tol);
-  GeomLib::SameRange(Tol,NewC,newf,newl,f,l,C);
+  Standard_Real aTolV;
+  NewParameter(V1, EFOR, f, aTolV);
+  NewParameter(V2, EFOR, l, aTolV);
+  GeomLib::SameRange(Precision::PConfusion(), NewC, newf, newl, f, l, C);
   
   return Standard_True;
 }
diff --git a/tests/bugs/modalg_6/bug28028 b/tests/bugs/modalg_6/bug28028
new file mode 100644 (file)
index 0000000..8460e76
--- /dev/null
@@ -0,0 +1,19 @@
+puts "========"
+puts "OCC28028"
+puts "========"
+puts ""
+#################################################
+# Solid becomes invalid after scaling
+#################################################
+
+pload XDE
+
+testreadstep [locate_data_file bug28028_stamp.stp] s
+
+tcopy s result
+checkshape s
+
+tscale result 0 0 0 3
+checkshape result
+
+checkprops result -s 2197.19 -v 5026.59
\ No newline at end of file