Mantis issue 0020961: Error with GetShapesOnCylinder applied to a pipe T-Shape.

This commit is contained in:
jfa 2010-09-01 12:30:30 +00:00
parent 0b304ad8b2
commit 562fd50bd9

View File

@ -2005,9 +2005,31 @@ Handle(TColStd_HSequenceOfInteger)
return aSeqOfIDs; return aSeqOfIDs;
} }
// BEGIN: Mantis issue 0020961: Error on a pipe T-Shape
// Compute tolerance
Standard_Real T, VertMax = -RealLast();
try {
#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060100
OCC_CATCH_SIGNALS;
#endif
for (TopExp_Explorer ExV (theShape, TopAbs_VERTEX); ExV.More(); ExV.Next()) {
TopoDS_Vertex Vertex = TopoDS::Vertex(ExV.Current());
T = BRep_Tool::Tolerance(Vertex);
if (T > VertMax)
VertMax = T;
}
}
catch (Standard_Failure) {
Handle(Standard_Failure) aFail = Standard_Failure::Caught();
SetErrorCode(aFail->GetMessageString());
return aSeqOfIDs;
}
// END: Mantis issue 0020961
// Call algo // Call algo
GEOMAlgo_FinderShapeOn1 aFinder; GEOMAlgo_FinderShapeOn1 aFinder;
Standard_Real aTol = 0.0001; // default value //Standard_Real aTol = 0.0001; // default value
Standard_Real aTol = VertMax; // Mantis issue 0020961
aFinder.SetShape(theShape); aFinder.SetShape(theShape);
aFinder.SetTolerance(aTol); aFinder.SetTolerance(aTol);
@ -2640,7 +2662,7 @@ Handle(TColStd_HSequenceOfInteger) GEOMImpl_IShapesOperations::GetShapesOnCylind
aSeq = getShapesOnSurfaceIDs( aCylinder, aShape, aShapeType, theState ); aSeq = getShapesOnSurfaceIDs( aCylinder, aShape, aShapeType, theState );
// The GetShapesOnCylinder() doesn't change object so no new function is required. // The GetShapesOnCylinder() doesn't change object so no new function is required.
Handle(GEOM_Function) aFunction = Handle(GEOM_Function) aFunction =
GEOM::GetCreatedLast(theShape, GEOM::GetCreatedLast(thePnt,theAxis))->GetLastFunction(); GEOM::GetCreatedLast(theShape, GEOM::GetCreatedLast(thePnt,theAxis))->GetLastFunction();
// Make a Python command // Make a Python command