1
0
mirror of https://git.dev.opencascade.org/repos/occt.git synced 2025-08-09 13:22:24 +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
2022-11-09 15:00:30 +03:00
parent d404757de0
commit a5860f47ca
2 changed files with 32 additions and 8 deletions

View File

@@ -1154,7 +1154,6 @@ void IntTools_BeanFaceIntersector::ComputeRangeFromStartPoint(const Standard_Boo
Standard_Boolean isboundaryindex = Standard_False;
Standard_Boolean isvalidindex = Standard_True;
while((aDelta >= aMinDelta) && (loopcounter <= 10)) {
Standard_Boolean pointfound = Standard_False;
@@ -1182,13 +1181,11 @@ 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);
// Increase step if point was found, decrease otherwise
aDelta *= (pointfound ? 2. : 0.5);
aDelta = (aDelta < aDeltaRestrictor) ? aDelta : aDeltaRestrictor;
aCurPar = (ToIncreaseParameter) ? (aPrevPar + aDelta) : (aPrevPar - aDelta);
@@ -1197,7 +1194,7 @@ 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

@@ -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