Standard_Boolean isboundaryindex = Standard_False;
Standard_Boolean isvalidindex = Standard_True;
-
while((aDelta >= aMinDelta) && (loopcounter <= 10)) {
Standard_Boolean pointfound = Standard_False;
if(anExtrema.IsDone()) {
if(anExtrema.SquareDistance() < myCriteria * myCriteria) {
Extrema_POnSurf aPOnSurf = anExtrema.Point();
- aPOnSurf.Parameter(U, V);
+ aPOnSurf.Parameter(U, V);
pointfound = Standard_True;
}
}
break;
}
else {
- aDeltaRestrictor = aDelta;
+ aDeltaRestrictor *= 0.5;
}
- // if point found decide to increase aDelta using derivative of distance function
- //
-
- aDelta = (pointfound) ? (aDelta * 2.) : (aDelta * 0.5);
+ // Increase step if point was found, decrease otherwise
+ aDelta *= (pointfound ? 2. : 0.5);
aDelta = (aDelta < aDeltaRestrictor) ? aDelta : aDeltaRestrictor;
aCurPar = (ToIncreaseParameter) ? (aPrevPar + aDelta) : (aPrevPar - aDelta);
// prevent infinite loop when (aPrevPar +/- aDelta) == aPrevPar == 0.
//
- if( aCurPar == aPrevPar )
+ if (Abs (aCurPar - aPrevPar) < myCurveResolution)
break;
BoundaryCondition = (ToIncreaseParameter) ? (aCurPar > aCurrentRange.Last()) : (aCurPar < aCurrentRange.First());
--- /dev/null
+puts "========"
+puts "0029144: Modeling Algorithms - BOP PaveFiller hangs in some case"
+puts "========"
+puts ""
+
+puts "TODO OCC29145 ALL : Faulty shapes in variables faulty_1 to faulty_"
+
+bclearobjects;
+bcleartools;
+
+restore [locate_data_file bug29093_hung3.brep] a
+explode a So
+baddobjects a_7
+baddtools a_11
+
+dchrono cr restart
+
+bfillds
+bbuild result
+
+dchrono cr stop counter bbuild
+
+checkshape result
+checkprops result -s 1313890 -v 46778600
+checknbshapes result -vertex 9 -edge 20 -wire 12 -face 12 -shell 3 -solid 3
+
+checkview -display result -2d -path ${imagedir}/${test_image}.png