Salome HOME
Merge from V6_main 13/12/2012
[modules/smesh.git] / src / StdMeshers / StdMeshers_Projection_2D.cxx
index 60917a9fcd4be63af82cf9d32e1dcbd1de7a2031..ad6f45e572bdb05ebb40db1b893de3c05d572e1b 100644 (file)
@@ -794,8 +794,18 @@ bool StdMeshers_Projection_2D::Compute(SMESH_Mesh& theMesh, const TopoDS_Shape&
   if ( !TAssocTool::FindSubShapeAssociation( tgtFace, tgtMesh, srcShape, srcMesh,
                                              shape2ShapeMap)  ||
        !shape2ShapeMap.IsBound( tgtFace ))
+  {
+    if ( srcShape.ShapeType() == TopAbs_FACE )
+    {
+      int nbE1 = TAssocTool::Count( tgtFace, TopAbs_EDGE, /*ignoreSame=*/true );
+      int nbE2 = TAssocTool::Count( srcShape, TopAbs_EDGE, /*ignoreSame=*/true );
+      if ( nbE1 != nbE2 )
+        return error(COMPERR_BAD_SHAPE,
+                     SMESH_Comment("Different number of edges in source and target faces: ")
+                     << nbE2 << " and " << nbE1 );
+    }
     return error(COMPERR_BAD_SHAPE,"Topology of source and target faces seems different" );
-
+  }
   TopoDS_Face srcFace = TopoDS::Face( shape2ShapeMap( tgtFace ).Oriented(TopAbs_FORWARD));
 
   // ----------------------------------------------