mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-04-10 18:51:21 +03:00
0028886: infinite loop at intersecting two faces / surfaces
The reason of constantly increasing/decreasing steps has been eliminated for the problem case.
This commit is contained in:
parent
161e0e95b7
commit
03a3ba9ebe
@ -836,7 +836,7 @@ void IntWalk_PWalking::Perform(const TColStd_Array1OfReal& ParDep,
|
|||||||
SvParam[3]=Param(4);
|
SvParam[3]=Param(4);
|
||||||
//
|
//
|
||||||
Standard_Integer aTryNumber = 0;
|
Standard_Integer aTryNumber = 0;
|
||||||
Standard_Real isBadPoint = Standard_False;
|
Standard_Boolean isBadPoint = Standard_False;
|
||||||
IntImp_ConstIsoparametric aBestIso = ChoixIso;
|
IntImp_ConstIsoparametric aBestIso = ChoixIso;
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
@ -1280,6 +1280,15 @@ void IntWalk_PWalking::Perform(const TColStd_Array1OfReal& ParDep,
|
|||||||
pasSav[1] = pasuv[1];
|
pasSav[1] = pasuv[1];
|
||||||
pasSav[2] = pasuv[2];
|
pasSav[2] = pasuv[2];
|
||||||
pasSav[3] = pasuv[3];
|
pasSav[3] = pasuv[3];
|
||||||
|
|
||||||
|
if ((aPrevStatus == IntWalk_PasTropGrand) &&
|
||||||
|
(LevelOfIterWithoutAppend > 0))
|
||||||
|
{
|
||||||
|
pasInit[0] = pasuv[0];
|
||||||
|
pasInit[1] = pasuv[1];
|
||||||
|
pasInit[2] = pasuv[2];
|
||||||
|
pasInit[3] = pasuv[3];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}//005 if(!Arrive)
|
}//005 if(!Arrive)
|
||||||
|
35
tests/perf/modalg/bug28886
Normal file
35
tests/perf/modalg/bug28886
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
puts "============"
|
||||||
|
puts "OCC28886"
|
||||||
|
puts "============"
|
||||||
|
puts ""
|
||||||
|
###############################
|
||||||
|
## infinite loop at intersecting two faces / surfaces
|
||||||
|
###############################
|
||||||
|
|
||||||
|
cpulimit 60
|
||||||
|
|
||||||
|
restore [locate_data_file bug28886_Faces.brep] ff
|
||||||
|
explode ff f
|
||||||
|
mksurface ss1 ff_1
|
||||||
|
mksurface ss2 ff_2
|
||||||
|
|
||||||
|
smallview
|
||||||
|
clear
|
||||||
|
|
||||||
|
dchrono h2 restart
|
||||||
|
set CurveNumb [intersect result ss1 ss2]
|
||||||
|
dchrono h2 stop counter bug28886CNB
|
||||||
|
|
||||||
|
if { [llength ${CurveNumb}] < 1 } {
|
||||||
|
puts "Error : Bad intersection"
|
||||||
|
} else {
|
||||||
|
puts "OK : Good intersection"
|
||||||
|
}
|
||||||
|
|
||||||
|
fit
|
||||||
|
disp ss1 ss2
|
||||||
|
nbiso ss1 ss2 4 4
|
||||||
|
clpoles ss1
|
||||||
|
clpoles ss2
|
||||||
|
|
||||||
|
checkview -screenshot -2d -path ${imagedir}/${test_image}.png
|
Loading…
x
Reference in New Issue
Block a user