-// Copyright (C) 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE
//
// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
#include "SMESH_Gen.hxx"
#include "SMESH_MesherHelper.hxx"
+#include "SMESH_subMesh.hxx"
#include "SMESH_subMeshEventListener.hxx"
#include "StdMeshers_FaceSide.hxx"
#include "StdMeshers_ProjectionSource2D.hxx"
* \brief Structure used to temporary remove EventProparatorToEdges from faceSubMesh
* in order to prevent propagation of CLEAN event from FACE to EDGEs during
* StdMeshers_Projection_1D2D::Compute(). The CLEAN event is emmited by Pattern mapper
- * and causes removal of faces generated on adjacent FACEs.
+ * and causes removal of faces generated on adjacent FACEs.
*/
struct UnsetterOfEventProparatorToEdges
{
{
UnsetterOfEventProparatorToEdges eventBarrier( theMesh.GetSubMesh( theShape ));
+ // 1) Project faces
+
if ( !StdMeshers_Projection_2D::Compute(theMesh, theShape))
return false;
+ // 2) Create segments
+
SMESHDS_Mesh * meshDS = theMesh.GetMeshDS();
SMESHDS_SubMesh * faceSubMesh = meshDS->MeshElements( theShape );
meshDS->SetMeshElementOnShape( e, edgeID );
}
}
- }
+ }
return true;
}
if ( !srcMesh ) srcMesh = & theMesh;
SMESH_subMesh* srcFaceSM = srcMesh->GetSubMesh( srcFace );
- typedef StdMeshers_ProjectionUtils SPU;
+ namespace SPU = StdMeshers_ProjectionUtils;
SPU::TShapeShapeMap shape2ShapeMap;
- SPU::InitVertexAssociation( _sourceHypo, shape2ShapeMap, theShape );
+ SPU::InitVertexAssociation( _sourceHypo, shape2ShapeMap );
if ( !SPU::FindSubShapeAssociation( theShape, &theMesh, srcFace, srcMesh, shape2ShapeMap))
return error(COMPERR_BAD_SHAPE,"Topology of source and target faces seems different" );
if ( aVec.empty() )
return error(COMPERR_BAD_INPUT_MESH,"Source mesh is wrongly evaluated");
}
- TopoDS_Shape tgtEdge = shape2ShapeMap( srcSM->GetSubShape() );
+ TopoDS_Shape tgtEdge = shape2ShapeMap( srcSM->GetSubShape(), /*isSrc=*/true );
SMESH_subMesh* tgtSM = theMesh.GetSubMesh( tgtEdge );
aResMap.insert(std::make_pair(tgtSM,aVec));
}