X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FStdMeshers%2FStdMeshers_ProjectionSource2D.cxx;h=720f90352b26298fa6e08139023a93079fdf5336;hb=c1cd01ddc8eadeaff7359f3e9828ce337f1e8ca0;hp=84cdc782b4f9c5e42a0313326d712c53a4dafa55;hpb=64dc48191ef730438509768f2dc231263b2abf05;p=modules%2Fsmesh.git diff --git a/src/StdMeshers/StdMeshers_ProjectionSource2D.cxx b/src/StdMeshers/StdMeshers_ProjectionSource2D.cxx index 84cdc782b..720f90352 100644 --- a/src/StdMeshers/StdMeshers_ProjectionSource2D.cxx +++ b/src/StdMeshers/StdMeshers_ProjectionSource2D.cxx @@ -28,6 +28,7 @@ #include "StdMeshers_ProjectionSource2D.hxx" #include "SMESH_Mesh.hxx" +#include "StdMeshers_ProjectionUtils.hxx" #include "utilities.h" @@ -103,17 +104,27 @@ void StdMeshers_ProjectionSource2D::SetVertexAssociation(const TopoDS_Shape& sou throw ( SALOME_Exception ) { if ( sourceVertex1.IsNull() != targetVertex1.IsNull() || - sourceVertex2.IsNull() != targetVertex2.IsNull() || - sourceVertex1.IsNull() != targetVertex2.IsNull() ) - throw SALOME_Exception(LOCALIZED("Two or none pairs of vertices must be provided")); + sourceVertex2.IsNull() != targetVertex2.IsNull() ) + throw SALOME_Exception(LOCALIZED("Vertices must be provided in couples")); - if ( !sourceVertex1.IsNull() ) { + if ( sourceVertex1.IsNull() != sourceVertex2.IsNull() ) + { + // possibly there is only 1 vertex in the face + if ( !_sourceFace.IsNull() && + StdMeshers_ProjectionUtils::Count( _sourceFace, TopAbs_VERTEX, /*ignoreSame=*/true) != 1 ) + throw SALOME_Exception(LOCALIZED("Two or none pairs of vertices must be provided")); + } + + if ( !sourceVertex1.IsNull() ) if ( sourceVertex1.ShapeType() != TopAbs_VERTEX || - sourceVertex2.ShapeType() != TopAbs_VERTEX || - targetVertex1.ShapeType() != TopAbs_VERTEX || + targetVertex1.ShapeType() != TopAbs_VERTEX ) + throw SALOME_Exception(LOCALIZED("Wrong shape type")); + + if ( !sourceVertex2.IsNull() ) + if ( sourceVertex2.ShapeType() != TopAbs_VERTEX || targetVertex2.ShapeType() != TopAbs_VERTEX ) throw SALOME_Exception(LOCALIZED("Wrong shape type")); - } + if ( !_sourceVertex1.IsSame( sourceVertex1 ) || !_sourceVertex2.IsSame( sourceVertex2 ) ||