-// Copyright (C) 2007-2013 CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2014 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
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
-// version 2.1 of the License.
+// version 2.1 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
typedef SMDS_StdIterator< const SMDS_MeshNode*, SMDS_NodeIteratorPtr > iterator;
existingNodes.insert( iterator( eSM->GetNodes() ), iterator() );
}
- }
+ }
}
// octree to find existing nodes
SMESH_OctreeNode existingNodeOcTr( existingNodes );
{
// find a pre-existing node
dist2foundNodes.clear();
- if ( existingNodeOcTr.NodesAround( SMESH_TNodeXYZ( *node ), dist2foundNodes, groupTol ))
+ existingNodeOcTr.NodesAround( SMESH_TNodeXYZ( *node ), dist2foundNodes, groupTol );
+ if ( !dist2foundNodes.empty() )
(*n2nIt).second = dist2foundNodes.begin()->second;
}
if ( !n2nIt->second )
int sId = editor.FindShape( edge );
nbEdges += subShapeIDs.count( sId );
}
- if ( nbEdges < 2 )
+ if ( nbEdges < 2 && !helper.IsRealSeam( s ))
return false; // weird
if ( nbEdges > 2 )
return error( COMPERR_BAD_INPUT_MESH, "Source elements overlap one another");
for ( size_t iE = 0; iE < edges.size(); ++iE )
{
SMESH_subMesh * sm = theMesh.GetSubMesh( edges[iE] );
- if ( SMESH_Algo::isDegenerated( edges[iE] ))
- sm->SetIsAlwaysComputed( true );
+ // if ( SMESH_Algo::isDegenerated( edges[iE] ))
+ // sm->SetIsAlwaysComputed( true );
sm->ComputeStateEngine(SMESH_subMesh::CHECK_COMPUTE_STATE);
if ( sm->GetComputeState() != SMESH_subMesh::COMPUTE_OK )
return error(SMESH_Comment("Failed to create segments on the edge ")