Salome HOME
SALOME_TESTS/Grids/smesh/mesh_Projection_2D_00/A0
authoreap <eap@opencascade.com>
Mon, 28 Apr 2014 13:41:59 +0000 (17:41 +0400)
committereap <eap@opencascade.com>
Mon, 28 Apr 2014 13:41:59 +0000 (17:41 +0400)
  Fix association EDGE <-> closed EDGE

src/StdMeshers/StdMeshers_Prism_3D.cxx
src/StdMeshers/StdMeshers_ProjectionUtils.cxx

index 579cbe5..79fd9f8 100644 (file)
@@ -1487,7 +1487,7 @@ bool StdMeshers_Prism_3D::computeWalls(const Prism_3D::TPrismTopo& thePrism)
           // compute nodes on VERTEXes
           SMESH_subMeshIteratorPtr smIt = tgtSM->getDependsOnIterator(/*includeSelf=*/false);
           while ( smIt->more() )
-            smIt->next()->ComputeSubMeshStateEngine( SMESH_subMesh::COMPUTE );
+            smIt->next()->ComputeStateEngine( SMESH_subMesh::COMPUTE );
           // project segments
           DBGOUT( "COMPUTE H edge (proj) " << tgtSM->GetId());
           projector1D->myHyp.SetSourceEdge( TopoDS::Edge( srcSM->GetSubShape() ));
index 6079b0c..8d4e172 100644 (file)
@@ -1169,9 +1169,13 @@ bool StdMeshers_ProjectionUtils::FindSubShapeAssociation(const TopoDS_Shape& the
       RETURN_BAD_RESULT("Different nb of vertices");
   }
 
-  if ( vMap1.Extent() == 1 ) {
+  if ( vMap1.Extent() == 1 || vMap2.Extent() == 1 ) {
     InsertAssociation( vMap1(1), vMap2(1), theMap );
     if ( theShape1.ShapeType() == TopAbs_EDGE ) {
+      if ( vMap1.Extent() == 2 )
+        InsertAssociation( vMap1(2), vMap2(1), theMap );
+      else if ( vMap2.Extent() == 2 )
+        InsertAssociation( vMap2(2), vMap1(1), theMap );
       InsertAssociation( theShape1, theShape2, theMap );
       return true;
     }