From: rnv Date: Thu, 5 Oct 2017 07:35:32 +0000 (+0300) Subject: Merge changes X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=refs%2Fheads%2Fimn%2FIMACS;hp=7b169c2b16711220eca0066e66f8ac774ea6e19d;p=modules%2Fsmesh.git Merge changes --- diff --git a/src/SMESH/SMESH_MeshEditor.cxx b/src/SMESH/SMESH_MeshEditor.cxx index a3d2b226e..6accfe3d1 100644 --- a/src/SMESH/SMESH_MeshEditor.cxx +++ b/src/SMESH/SMESH_MeshEditor.cxx @@ -13119,8 +13119,7 @@ namespace // utils for MakePolyLine if ( path.SetCutAtCorner( polySeg.myNode1[ iP ], fIt->next(), plnNorm, plnOrig )) { if (( path.myDot1 * path.myDot2 != 0 ) || - ( nodes.insert( path.myNode1._node ).second && - nodes.insert( path.myNode2._node ).second )) + ( nodes.insert( path.myDot1 == 0 ? path.myNode1._node : path.myNode2._node ).second )) paths.push_back( path ); } } @@ -13178,7 +13177,8 @@ namespace // utils for 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() @@ -13228,15 +13228,16 @@ void SMESH_MeshEditor::MakePolyLine( TListOfPolySegments& theSegments, gp_XYZ pMid = 0.5 * ( p1 + p2 ); const SMDS_MeshElement* face; polySeg.myMidProjPoint = searcher->Project( pMid, SMDSAbs_Face, &face ); + polySeg.myVector = polySeg.myMidProjPoint.XYZ() - pMid; - if ( polySeg.myMidProjPoint.Distance( pMid ) < Precision::Confusion() ) - { - SMESH_MeshAlgos::FaceNormal( face, const_cast< gp_XYZ& >( polySeg.myVector.XYZ() )); - polySeg.myMidProjPoint = pMid + polySeg.myVector.XYZ() * ( p1 - p2 ).Modulus() * planarCoef; - } - else + gp_XYZ faceNorm; + SMESH_MeshAlgos::FaceNormal( face, faceNorm ); + + if ( polySeg.myVector.Magnitude() < Precision::Confusion() || + polySeg.myVector * faceNorm < Precision::Confusion() ) { - polySeg.myVector = polySeg.myMidProjPoint.XYZ() - pMid; + polySeg.myVector = faceNorm; + polySeg.myMidProjPoint = pMid + faceNorm * ( p1 - p2 ).Modulus() * planarCoef; } } else diff --git a/src/SMESH_SWIG_WITHIHM/libSMESH_Swig.i b/src/SMESH_SWIG_WITHIHM/libSMESH_Swig.i index aecaf8e0a..68b0e1ec5 100644 --- a/src/SMESH_SWIG_WITHIHM/libSMESH_Swig.i +++ b/src/SMESH_SWIG_WITHIHM/libSMESH_Swig.i @@ -107,10 +107,6 @@ class SMESH_Swig std::vector getSelected( const char* Mesh_Entry ); std::vector > getSelectedEdgeOfCell( const char* Mesh_Entry ); - void setSelectionMode( SelectionMode selectionMode); - std::vector getSelected( const char* Mesh_Entry ); - std::vector > getSelectedEdgeOfCell( const char* Mesh_Entry ); - // --------------------- for the test purposes ----------------------- SelectionMode getSelectionMode(); void select( const char *id, std::vector ids, bool append = false );