diff --git a/src/IntWalk/IntWalk_IWalking_4.gxx b/src/IntWalk/IntWalk_IWalking_4.gxx index 849ce9080f..d059cbd056 100755 --- a/src/IntWalk/IntWalk_IWalking_4.gxx +++ b/src/IntWalk/IntWalk_IWalking_4.gxx @@ -51,8 +51,8 @@ void IntWalk_IWalking::ComputeCloseLine(const TColStd_SequenceOfReal& Umult, Standard_Real aBornInf[2], aBornSup[2], aUVap[2]; math_Vector BornInf(aBornInf,1,2), BornSup(aBornSup,1,2); math_Vector Uvap(aUVap,1,2);// parameters of current approach - Standard_Real PasC; // rate of advancement on the tangent - Standard_Real PasCu; // rate of advancement current by U + Standard_Real PasC; // step of advancement on the tangent + Standard_Real PasCu; // step of advancement current by U Standard_Real PasCv; // step of advancement current by V Standard_Real PasSav; // save first step of advancement Standard_Boolean Arrive;// show if line ends diff --git a/src/IntWalk/IntWalk_IWalking_5.gxx b/src/IntWalk/IntWalk_IWalking_5.gxx index 4fc36d9f9e..ffc883b06b 100755 --- a/src/IntWalk/IntWalk_IWalking_5.gxx +++ b/src/IntWalk/IntWalk_IWalking_5.gxx @@ -255,10 +255,15 @@ IntWalk_StatusDeflection IntWalk_IWalking::TestDeflection } else { -// if (FlecheCourante > fleche) { // not too great - if (FlecheCourante > fleche*fleche) { // not too great +// if (FlecheCourante > fleche) { // step too great + if (FlecheCourante > fleche*fleche) { // step too great Step = Step /2.; - Status = IntWalk_PasTropGrand; + StepU = Abs(Step*previousd2d.X()); + StepV = Abs(Step*previousd2d.Y()); + if (StepU < tolerance(1) && StepV < tolerance(2)) + Status = IntWalk_ArretSurPointPrecedent; + else + Status = IntWalk_PasTropGrand; } else { Standard_Real d2dx = Abs(sp.Direction2d().X()); diff --git a/tests/bugs/modalg_5/bug24360 b/tests/bugs/modalg_5/bug24360 new file mode 100644 index 0000000000..ce860493c7 --- /dev/null +++ b/tests/bugs/modalg_5/bug24360 @@ -0,0 +1,17 @@ +puts "============" +puts "OCC24360" +puts "============" +puts "" +###################################################### +# Hang up trying to intersect two faces +###################################################### + +restore [locate_data_file bug24360_Face_1.brep] b1 +restore [locate_data_file bug24360_Face_2.brep] b2 + +bop b1 b2 +bopfuse result + +set square 92255.4 +set 2dviewer 1 +