0023588: [CEA 2272] : GEOM test failed after transition to OCC 7.3

This commit is contained in:
vsr 2018-09-11 11:57:18 +03:00
parent 151029c42d
commit 81364d3f21
2 changed files with 24 additions and 18 deletions

View File

@ -2126,21 +2126,9 @@ Standard_Integer GEOMImpl_IMeasureOperations::ClosestPoints (Handle(GEOM_Object)
// skl 30.06.2008
// additional workaround for bugs 19899, 19908 and 19910 from Mantis
gp_Pnt P1, P2;
double dist = GEOMUtils::GetMinDistanceSingular(aShape1, aShape2, P1, P2);
if (dist > -1.0) {
nbSolutions = 1;
theDoubles->Append(P1.X());
theDoubles->Append(P1.Y());
theDoubles->Append(P1.Z());
theDoubles->Append(P2.X());
theDoubles->Append(P2.Y());
theDoubles->Append(P2.Z());
SetErrorCode(OK);
return nbSolutions;
}
gp_Pnt P1s, P2s;
double dist = GEOMUtils::GetMinDistanceSingular(aShape1, aShape2, P1s, P2s);
bool singularBetter = dist > -1.0;
BRepExtrema_DistShapeShape dst (aShape1, aShape2);
if (dst.IsDone()) {
@ -2151,15 +2139,32 @@ Standard_Integer GEOMImpl_IMeasureOperations::ClosestPoints (Handle(GEOM_Object)
for (int i = 1; i <= nbSolutions; i++) {
P1 = dst.PointOnShape1(i);
P2 = dst.PointOnShape2(i);
theDoubles->Append(P1.X());
theDoubles->Append(P1.Y());
theDoubles->Append(P1.Z());
theDoubles->Append(P2.X());
theDoubles->Append(P2.Y());
theDoubles->Append(P2.Z());
Standard_Real Dist = P1.Distance(P2);
singularBetter = dist < Dist;
}
}
if (singularBetter) {
if (theDoubles.IsNull()) theDoubles = new TColStd_HSequenceOfReal;
else theDoubles->Clear();
nbSolutions = 1;
theDoubles->Append(P1s.X());
theDoubles->Append(P1s.Y());
theDoubles->Append(P1s.Z());
theDoubles->Append(P2s.X());
theDoubles->Append(P2s.Y());
theDoubles->Append(P2s.Z());
}
}
catch (Standard_Failure& aFail) {
SetErrorCode(aFail.GetMessageString());

View File

@ -994,12 +994,13 @@ Standard_Real GEOMUtils::GetMinDistance
// skl 30.06.2008
// additional workaround for bugs 19899, 19908 and 19910 from Mantis
double dist = GEOMUtils::GetMinDistanceSingular
(theShape1, theShape2, thePnt1, thePnt2);
aResult = GEOMUtils::GetMinDistanceSingular(theShape1, theShape2, thePnt1, thePnt2);
/*
if (dist > -1.0) {
return dist;
}
*/
BRepExtrema_DistShapeShape dst (theShape1, theShape2);
if (dst.IsDone()) {