0021472: EDF 2080 SMESH: Projection1D2D on a Voronoi structure fails

fix merging new and old nodes in case if not all edges are meshed
This commit is contained in:
eap 2012-01-18 12:01:40 +00:00
parent 025e264849
commit 4f5cf5faab

View File

@ -196,8 +196,7 @@ namespace {
// only by faces created by mapper // only by faces created by mapper
//if ( is1DComputed ) //if ( is1DComputed )
{ {
SMDS_ElemIteratorPtr invEdge = node->GetInverseElementIterator(SMDSAbs_Edge); bool isOld = node->NbInverseElements(SMDSAbs_Edge) > 0;
bool isOld = invEdge->more();
return isOld; return isOld;
} }
// else // else
@ -224,7 +223,7 @@ namespace {
void Release() { sm = 0; } // mesh will not be removed void Release() { sm = 0; } // mesh will not be removed
static void Clean( SMESH_subMesh* sm, bool withSub=true ) static void Clean( SMESH_subMesh* sm, bool withSub=true )
{ {
if ( !sm ) return; if ( !sm || !sm->GetSubMeshDS() ) return;
// PAL16567, 18920. Remove face nodes as well // PAL16567, 18920. Remove face nodes as well
// switch ( sm->GetSubShape().ShapeType() ) { // switch ( sm->GetSubShape().ShapeType() ) {
// case TopAbs_VERTEX: // case TopAbs_VERTEX:
@ -936,9 +935,10 @@ bool StdMeshers_Projection_2D::Compute(SMESH_Mesh& theMesh, const TopoDS_Shape&
{ {
SMESH_subMesh* sm = smIt->next(); SMESH_subMesh* sm = smIt->next();
SMESHDS_SubMesh* smDS = sm->GetSubMeshDS(); SMESHDS_SubMesh* smDS = sm->GetSubMeshDS();
if ( !sm->IsMeshComputed() )
if ( !is1DComputed && sm->GetSubShape().ShapeType() == TopAbs_EDGE )
break; break;
//if ( !is1DComputed && sm->GetSubShape().ShapeType() == TopAbs_EDGE )
//break;
// Sort new and old nodes of a submesh separately // Sort new and old nodes of a submesh separately
@ -996,8 +996,7 @@ bool StdMeshers_Projection_2D::Compute(SMESH_Mesh& theMesh, const TopoDS_Shape&
continue; continue;
if ( u2nodesMaps[ OLD_NODES ].size() == 0 && if ( u2nodesMaps[ OLD_NODES ].size() == 0 &&
sm->GetSubShape().ShapeType() == TopAbs_VERTEX && sm->GetSubShape().ShapeType() == TopAbs_VERTEX )
!is1DComputed )
// old nodes are optional on vertices in the case of 1D-2D projection // old nodes are optional on vertices in the case of 1D-2D projection
continue; continue;