1
0
mirror of https://git.dev.opencascade.org/repos/occt.git synced 2025-08-09 13:22:24 +03:00

Compare commits

..

1 Commits

Author SHA1 Message Date
akaftasev
a5860f47ca 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.
2022-11-09 17:10:47 +03:00
5 changed files with 35 additions and 11 deletions

View File

@@ -13,7 +13,7 @@
//
// Alternatively, this file may be used under the terms of Open CASCADE
// commercial license or contractual agreement.
// branch2
#include <Adaptor2d_Curve2d.hxx>
#include <Geom2d_BezierCurve.hxx>

View File

@@ -13,7 +13,7 @@
//
// Alternatively, this file may be used under the terms of Open CASCADE
// commercial license or contractual agreement.
// branch2
#include <Adaptor3d_Curve.hxx>
#include <Geom_BezierCurve.hxx>

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;
@@ -1166,7 +1165,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 +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

View File

@@ -1,5 +1,5 @@
@echo off
rem test1
rem Helper script to run procedure of automatic upgrade of application code
rem on newer version of OCCT on Windows.
rem Running it requires that Tcl should be in the PATH