Do not report a compute error if a node on VERTEX is not shared by any
segment because segments on seam EDGE are assigned later
This commit is contained in:
eap 2013-08-23 16:26:29 +00:00
parent b14fd3f9bd
commit b860f3ffbd

View File

@ -226,7 +226,7 @@ bool StdMeshers_Import_1D2D::Compute(SMESH_Mesh & theMesh, const TopoDS_Shape &
typedef SMDS_StdIterator< const SMDS_MeshNode*, SMDS_NodeIteratorPtr > iterator; typedef SMDS_StdIterator< const SMDS_MeshNode*, SMDS_NodeIteratorPtr > iterator;
existingNodes.insert( iterator( eSM->GetNodes() ), iterator() ); existingNodes.insert( iterator( eSM->GetNodes() ), iterator() );
} }
} }
} }
// octree to find existing nodes // octree to find existing nodes
SMESH_OctreeNode existingNodeOcTr( existingNodes ); SMESH_OctreeNode existingNodeOcTr( existingNodes );
@ -513,7 +513,7 @@ bool StdMeshers_Import_1D2D::Compute(SMESH_Mesh & theMesh, const TopoDS_Shape &
int sId = editor.FindShape( edge ); int sId = editor.FindShape( edge );
nbEdges += subShapeIDs.count( sId ); nbEdges += subShapeIDs.count( sId );
} }
if ( nbEdges < 2 ) if ( nbEdges < 2 && !helper.IsRealSeam( s ))
return false; // weird return false; // weird
if ( nbEdges > 2 ) if ( nbEdges > 2 )
return error( COMPERR_BAD_INPUT_MESH, "Source elements overlap one another"); return error( COMPERR_BAD_INPUT_MESH, "Source elements overlap one another");
@ -601,8 +601,8 @@ bool StdMeshers_Import_1D2D::Compute(SMESH_Mesh & theMesh, const TopoDS_Shape &
for ( size_t iE = 0; iE < edges.size(); ++iE ) for ( size_t iE = 0; iE < edges.size(); ++iE )
{ {
SMESH_subMesh * sm = theMesh.GetSubMesh( edges[iE] ); SMESH_subMesh * sm = theMesh.GetSubMesh( edges[iE] );
if ( SMESH_Algo::isDegenerated( edges[iE] )) // if ( SMESH_Algo::isDegenerated( edges[iE] ))
sm->SetIsAlwaysComputed( true ); // sm->SetIsAlwaysComputed( true );
sm->ComputeStateEngine(SMESH_subMesh::CHECK_COMPUTE_STATE); sm->ComputeStateEngine(SMESH_subMesh::CHECK_COMPUTE_STATE);
if ( sm->GetComputeState() != SMESH_subMesh::COMPUTE_OK ) if ( sm->GetComputeState() != SMESH_subMesh::COMPUTE_OK )
return error(SMESH_Comment("Failed to create segments on the edge ") return error(SMESH_Comment("Failed to create segments on the edge ")