0032557: Modeling Data - Use of BRepBuilderAPI_NurbsConvert create 2d p-curves with...
authorifv <ifv@opencascade.com>
Fri, 24 Sep 2021 13:24:34 +0000 (16:24 +0300)
committersmoskvin <smoskvin@opencascade.com>
Tue, 28 Sep 2021 17:10:04 +0000 (20:10 +0300)
BRepTools/BRepTools_NurbsConvertModification.cxx -
 Checking domain of 2dCurves if surfaces are periodic is improved

tests/bugs/moddata_3/bug32557 - test case added

src/BRepTools/BRepTools_NurbsConvertModification.cxx
tests/bugs/mesh/bug30008_2
tests/bugs/moddata_3/bug32557 [new file with mode: 0644]

index bd05b03..6756518 100644 (file)
@@ -493,11 +493,23 @@ Standard_Boolean BRepTools_NurbsConvertModification::NewCurve2d
       {
         //Surface is periodic, checking curve2d domain 
         //Old domain
-        gp_Pnt2d aPf = C2d->Value(f2d);
+        Standard_Real aMinDist = Precision::Infinite();
+        if (S->IsUPeriodic())
+        {
+          aMinDist = Min(0.5 * S->UPeriod(), aMinDist);
+        }
+        if (S->IsVPeriodic())
+        {
+          aMinDist = Min(0.5 * S->VPeriod(), aMinDist);
+        }
+        aMinDist *= aMinDist;
+        //Old domain
+        Standard_Real t = 0.5 * (f2d + l2d);
+        gp_Pnt2d aPf = C2d->Value(t);
         //New domain
-        gp_Pnt2d aNewPf = Curve2d->Value(f2d);
+        gp_Pnt2d aNewPf = Curve2d->Value(t);
         gp_Vec2d aT(aNewPf, aPf);
-        if (aT.SquareMagnitude() > Precision::SquarePConfusion())
+        if (aT.SquareMagnitude() > aMinDist)
         {
           Curve2d = Handle(Geom2d_Curve)::DownCast(Curve2d->Translated(aT));
         }
index 7a57cef..ffffa6b 100644 (file)
@@ -19,7 +19,7 @@ nurbsconvert result result
 incmesh result 0.15 -a 20
 
 tricheck result
-checktrinfo result -tri 191 -nod 146 -defl 0.052300780129031083 -tol_abs_defl 1.0e-6
+checktrinfo result -tri 193 -nod 147 -defl 0.052300780129031083 -tol_abs_defl 1.0e-6
 
 vinit
 
diff --git a/tests/bugs/moddata_3/bug32557 b/tests/bugs/moddata_3/bug32557
new file mode 100644 (file)
index 0000000..374a129
--- /dev/null
@@ -0,0 +1,10 @@
+puts "==========================================================="
+puts "0032557: Modeling Data - Use of BRepBuilderAPI_NurbsConvert create 2d p-curves with gaps"
+puts "==========================================================="
+puts ""
+
+restore [locate_data_file bug32557.brep] f
+
+nurbsconvert bf f
+checkmaxtol bf -ref 1.1e-7
+