Throw exception and fix a step case

This commit is contained in:
eap 2017-10-04 19:00:38 +03:00
parent a67fa462c7
commit d115566909

View File

@ -13177,7 +13177,8 @@ namespace // utils for MakePolyLine
throw SALOME_Exception(LOCALIZED( "Infinite loop in MakePolyLine()")); throw SALOME_Exception(LOCALIZED( "Infinite loop in MakePolyLine()"));
} }
return; if ( myPaths[ iSeg ].myPoints.empty() )
throw SALOME_Exception( SMESH_Comment("Can't find a full path for PolySegment #") << iSeg );
} // PolyPathCompute::Compute() } // PolyPathCompute::Compute()
@ -13227,15 +13228,16 @@ void SMESH_MeshEditor::MakePolyLine( TListOfPolySegments& theSegments,
gp_XYZ pMid = 0.5 * ( p1 + p2 ); gp_XYZ pMid = 0.5 * ( p1 + p2 );
const SMDS_MeshElement* face; const SMDS_MeshElement* face;
polySeg.myMidProjPoint = searcher->Project( pMid, SMDSAbs_Face, &face ); polySeg.myMidProjPoint = searcher->Project( pMid, SMDSAbs_Face, &face );
polySeg.myVector = polySeg.myMidProjPoint.XYZ() - pMid;
if ( polySeg.myMidProjPoint.Distance( pMid ) < Precision::Confusion() ) gp_XYZ faceNorm;
SMESH_MeshAlgos::FaceNormal( face, faceNorm );
if ( polySeg.myVector.Magnitude() < Precision::Confusion() ||
polySeg.myVector * faceNorm < Precision::Confusion() )
{ {
SMESH_MeshAlgos::FaceNormal( face, const_cast< gp_XYZ& >( polySeg.myVector.XYZ() )); polySeg.myVector = faceNorm;
polySeg.myMidProjPoint = pMid + polySeg.myVector.XYZ() * ( p1 - p2 ).Modulus() * planarCoef; polySeg.myMidProjPoint = pMid + faceNorm * ( p1 - p2 ).Modulus() * planarCoef;
}
else
{
polySeg.myVector = polySeg.myMidProjPoint.XYZ() - pMid;
} }
} }
else else