mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-08-09 13:22:24 +03:00
0023733: PCurve for edge on face creation failure
Adding test case for this fix
This commit is contained in:
@@ -228,8 +228,9 @@ Method:
|
||||
Us = Sol.Value(NoSol);
|
||||
Cu = ElCLib::Value(Us,C);
|
||||
mySqDist[myNbExt] = Cu.SquareDistance(P);
|
||||
myIsMin[myNbExt] = (NoSol == 1);
|
||||
myPoint[myNbExt] = Extrema_POnCurv(Us,Cu);
|
||||
Cu = ElCLib::Value(Us + 0.1, C);
|
||||
myIsMin[myNbExt] = mySqDist[myNbExt] < Cu.SquareDistance(P);
|
||||
myNbExt++;
|
||||
}
|
||||
myDone = Standard_True;
|
||||
|
@@ -363,7 +363,13 @@ void Extrema_ExtPRevS::Perform(const gp_Pnt& P)
|
||||
newV = ElCLib::InPeriod(V, myvinf, myvinf + 2. * M_PI);
|
||||
|
||||
if (newV > myvsup) {
|
||||
newV = myvsup;
|
||||
newV -= 2. * M_PI;
|
||||
|
||||
if (newV + mytolv < myvinf) {
|
||||
newV = myvsup;
|
||||
} else if (newV < myvinf) {
|
||||
newV = myvinf;
|
||||
}
|
||||
}
|
||||
}
|
||||
V = newV;
|
||||
@@ -382,8 +388,15 @@ void Extrema_ExtPRevS::Perform(const gp_Pnt& P)
|
||||
(anACurve->GetType() == GeomAbs_Ellipse)) {
|
||||
newV = ElCLib::InPeriod(V, myvsup - 2. * M_PI, myvsup);
|
||||
|
||||
if(newV < myvinf)
|
||||
newV = myvinf;
|
||||
if(newV < myvinf) {
|
||||
newV += 2. * M_PI;
|
||||
|
||||
if (newV - mytolv > myvsup) {
|
||||
newV = myvinf;
|
||||
} else if (newV > myvsup) {
|
||||
newV = myvsup;
|
||||
}
|
||||
}
|
||||
}
|
||||
V = newV;
|
||||
|
||||
@@ -422,7 +435,13 @@ void Extrema_ExtPRevS::Perform(const gp_Pnt& P)
|
||||
newV = ElCLib::InPeriod(V, myvinf, myvinf + 2. * M_PI);
|
||||
|
||||
if (newV > myvsup) {
|
||||
newV = myvsup;
|
||||
newV -= 2. * M_PI;
|
||||
|
||||
if (newV + mytolv < myvinf) {
|
||||
newV = myvsup;
|
||||
} else if (newV < myvinf) {
|
||||
newV = myvinf;
|
||||
}
|
||||
}
|
||||
}
|
||||
V = newV;
|
||||
@@ -438,8 +457,15 @@ void Extrema_ExtPRevS::Perform(const gp_Pnt& P)
|
||||
(anACurve->GetType() == GeomAbs_Ellipse)) {
|
||||
newV = ElCLib::InPeriod(V, myvsup - 2. * M_PI, myvsup);
|
||||
|
||||
if(newV < myvinf)
|
||||
newV = myvinf;
|
||||
if(newV < myvinf) {
|
||||
newV += 2. * M_PI;
|
||||
|
||||
if (newV - mytolv > myvsup) {
|
||||
newV = myvinf;
|
||||
} else if (newV > myvsup) {
|
||||
newV = myvsup;
|
||||
}
|
||||
}
|
||||
}
|
||||
V = newV;
|
||||
|
||||
|
Reference in New Issue
Block a user