From: dorlov Date: Fri, 10 Feb 2023 15:15:40 +0000 (+0000) Subject: 0033226: Data Exchange - Infinite loop in HLRBRep_InternalAlgo::Update() generating... X-Git-Url: http://git.dev.opencascade.org/gitweb/?a=commitdiff_plain;h=c5424696cf655bc4693d3752acc8ea5dade74c40;p=occt.git 0033226: Data Exchange - Infinite loop in HLRBRep_InternalAlgo::Update() generating 2D view of right hand side from STEP file Infinite loop is removed from IntWalk_IWalking::ComputeOpenLine method test case was created --- diff --git a/src/IntWalk/IntWalk_IWalking_3.gxx b/src/IntWalk/IntWalk_IWalking_3.gxx index 224d257508..7c9a7bfd00 100644 --- a/src/IntWalk/IntWalk_IWalking_3.gxx +++ b/src/IntWalk/IntWalk_IWalking_3.gxx @@ -193,7 +193,7 @@ void IntWalk_IWalking::ComputeOpenLine(const TColStd_SequenceOfReal& Umult, PasC = PasC / 2.0; PasCu = Abs(PasC*previousd2d.X()); PasCv = Abs(PasC*previousd2d.Y()); - if (PasCu <= tolerance(1) && PasCv <= tolerance(2)) { + if (PasCu <= tolerance(1) && PasCv <= tolerance(2) || Cadre) { if (CurrentLine->NbPoints() == 1) break; Arrive = Standard_True; CurrentLine->AddStatusLast(Standard_False); @@ -201,7 +201,7 @@ void IntWalk_IWalking::ComputeOpenLine(const TColStd_SequenceOfReal& Umult, Rajout = Standard_True; seqAlone.Append(lines.Length() + 1); seqAjout.Append(lines.Length() + 1); - } + } } else { // test stop Rsnld.Root(UVap); diff --git a/tests/hlr/exact_hlr/bug33226 b/tests/hlr/exact_hlr/bug33226 new file mode 100644 index 0000000000..2abc8c293d --- /dev/null +++ b/tests/hlr/exact_hlr/bug33226 @@ -0,0 +1,10 @@ +puts "=====================================" +puts "OCC33226: Data Exchange - Infinite loop in HLRBRep_InternalAlgo::Update() generating 2D view of right hand side from STEP file" +puts "=====================================" +puts "" + +set viewname "vright" +set length 45.4352 + +restore [locate_data_file bug33226_1189.brep] a +COMPUTE_HLR $viewname $algotype \ No newline at end of file