1
0
mirror of https://git.dev.opencascade.org/repos/occt.git synced 2025-04-03 17:56:21 +03:00

0029144: Modeling Algorithms - BOP PaveFiller hangs in some case

Changed decreasing aDeltaRestrictor to division by 2 instead of value assignment to aDelta if point does not found.
Changed wrong comparison of two Standard_Real values.
This commit is contained in:
akaftasev 2024-05-24 11:40:51 +01:00
parent 4c8faa5e2d
commit 2d950d5b03
3 changed files with 34 additions and 5 deletions

View File

@ -1166,7 +1166,7 @@ void IntTools_BeanFaceIntersector::ComputeRangeFromStartPoint(const Standard_Boo
if(anExtrema.IsDone()) {
if(anExtrema.SquareDistance() < myCriteria * myCriteria) {
Extrema_POnSurf aPOnSurf = anExtrema.Point();
aPOnSurf.Parameter(U, V);
aPOnSurf.Parameter(U, V);
pointfound = Standard_True;
}
}
@ -1182,13 +1182,13 @@ void IntTools_BeanFaceIntersector::ComputeRangeFromStartPoint(const Standard_Boo
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);
aDelta *= (pointfound) ? 2.0 : 0.5;
aDelta = (aDelta < aDeltaRestrictor) ? aDelta : aDeltaRestrictor;
aCurPar = (ToIncreaseParameter) ? (aPrevPar + aDelta) : (aPrevPar - aDelta);
@ -1197,8 +1197,10 @@ void IntTools_BeanFaceIntersector::ComputeRangeFromStartPoint(const Standard_Boo
// 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());

View File

@ -18,6 +18,6 @@ bapibop result 2
checkshape result
checkprops result -v 1.52043e+7
checknbshapes result -vertex 234 -edge 354 -wire 122 -face 121 -shell 1 -solid 1 -compsolid 0 -compound 1 -shape 834
checknbshapes result -vertex 235 -edge 355 -wire 122 -face 121 -shell 1 -solid 1 -compsolid 0 -compound 1 -shape 836
checkview -display result -2d -path ${imagedir}/${test_image}.png

View File

@ -0,0 +1,27 @@
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