mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-04-03 17:56:21 +03:00
0029682: Boolean intersection with fuzzy-option hangs
Algorithm of step re-computation has been improved.
This commit is contained in:
parent
4f7d41eac3
commit
698faabef3
@ -963,10 +963,21 @@ void IntWalk_PWalking::Perform(const TColStd_Array1OfReal& ParDep,
|
||||
}
|
||||
else
|
||||
{
|
||||
pasuv[0]*=0.5;
|
||||
pasuv[1]*=0.5;
|
||||
pasuv[2]*=0.5;
|
||||
pasuv[3]*=0.5;
|
||||
if (aStatus != IntWalk_StepTooSmall)
|
||||
{
|
||||
// Bug #0029682 (Boolean intersection with
|
||||
// fuzzy-option hangs).
|
||||
// If aStatus == IntWalk_StepTooSmall then
|
||||
// the counter "LevelOfIterWithoutAppend" will
|
||||
// be nulified in the future if the step is smaller
|
||||
// (see "case IntWalk_StepTooSmall:" below).
|
||||
// Here, we forbid this nulification and thereby provide out from
|
||||
// the algorithm.
|
||||
pasuv[0] *= 0.5;
|
||||
pasuv[1] *= 0.5;
|
||||
pasuv[2] *= 0.5;
|
||||
pasuv[3] *= 0.5;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -149,6 +149,9 @@ public:
|
||||
if (anIdx <= myTangentIdx)
|
||||
{
|
||||
myTangentIdx--;
|
||||
|
||||
if (myTangentIdx < 1)
|
||||
myTangentIdx = 1;
|
||||
}
|
||||
|
||||
line->RemovePoint(anIdx);
|
||||
@ -228,8 +231,14 @@ private:
|
||||
Standard_Boolean close;
|
||||
Standard_Boolean tgfirst;
|
||||
Standard_Boolean tglast;
|
||||
|
||||
//! Index of point on the surface boundary.
|
||||
//! It is used for transition computation
|
||||
Standard_Integer myTangentIdx;
|
||||
|
||||
//! Tangent to WLine in the point with index myTangentIdx
|
||||
gp_Dir tgdir;
|
||||
|
||||
Standard_Real fleche;
|
||||
Standard_Real pasMax;
|
||||
Standard_Real tolconf;
|
||||
|
38
tests/perf/modalg/bug29682
Normal file
38
tests/perf/modalg/bug29682
Normal file
@ -0,0 +1,38 @@
|
||||
puts "========"
|
||||
puts "OCC29682"
|
||||
puts "========"
|
||||
puts ""
|
||||
#################################################
|
||||
# Boolean intersection with fuzzy-option hangs
|
||||
#################################################
|
||||
|
||||
restore [locate_data_file bug29682_f1.brep] s1
|
||||
restore [locate_data_file bug29682_f2.brep] s2
|
||||
|
||||
copy s1 f1
|
||||
copy s2 f2
|
||||
|
||||
bfuzzyvalue 0.0
|
||||
dchrono h1 restart
|
||||
bsection r1 f1 f2
|
||||
dchrono h1 stop counter BSectionNoFV
|
||||
|
||||
checknbshapes r1 -vertex 2 -edge 1
|
||||
checkprops r1 -l 2995.33
|
||||
|
||||
copy s1 f1
|
||||
copy s2 f2
|
||||
|
||||
bfuzzyvalue 0.2
|
||||
dchrono h2 restart
|
||||
bsection r2 f1 f2
|
||||
dchrono h2 stop counter BSectionFV
|
||||
|
||||
checknbshapes r2 -vertex 2 -edge 1
|
||||
checkprops r2 -l 2995.33
|
||||
|
||||
smallview
|
||||
don s1 s2 r2
|
||||
fit
|
||||
|
||||
checkview -screenshot -2d -path ${imagedir}/${test_image}.png
|
Loading…
x
Reference in New Issue
Block a user