- TopoDS_Edge edge = TopoDS::Edge( subMesh->GetSubShape() );
- TopoDS_Vertex V1, V2;
- TopExp::Vertices( edge, V1, V2 );
- bool noVertexNode1 = ( !SMESH_Algo::VertexNode( V1, meshDS ));
- bool noVertexNode2 = ( !SMESH_Algo::VertexNode( V2, meshDS ));
- if ( noVertexNode1 || noVertexNode2 ) {
- TopoDS_Face face;
- auto_ptr< StdMeshers_FaceSide > side
- ( StdMeshers_CompositeSegment_1D::GetFaceSide(*subMesh->GetFather(),
- edge, face, false ));
- if ( side->NbSegments() )
- careOfSubMeshes( *side, this );
+ if ( meshDS->NbNodes() > 0 ) {
+ // check if there are nodes on all vertices
+ bool hasNodesOnVerext = true;
+ SMESH_subMeshIteratorPtr smIt = subMesh->getDependsOnIterator(false,false);
+ while ( hasNodesOnVerext && smIt->more() ) {
+ SMESH_subMesh* sm = smIt->next();
+ hasNodesOnVerext = ( sm->GetSubMeshDS() && sm->GetSubMeshDS()->NbNodes() );
+ }
+ if ( !hasNodesOnVerext ) {
+ // check if an edge is a part of a complex side
+ TopoDS_Face face;
+ TopoDS_Edge edge = TopoDS::Edge( subMesh->GetSubShape() );
+ auto_ptr< StdMeshers_FaceSide > side
+ ( StdMeshers_CompositeSegment_1D::GetFaceSide(*subMesh->GetFather(),
+ edge, face, false ));
+ if ( side->NbEdges() > 1 && side->NbSegments() )
+ careOfSubMeshes( *side, this );
+ }