X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FStdMeshers%2FStdMeshers_Import_1D2D.cxx;h=cd8f4acfdb7c6983164df6fc9daf016fdcfe55db;hb=55899c73f312ac899f2ab04f299541b2fbbfd320;hp=b5486304e8b90fb091e6b10070720cdaf3a806c0;hpb=7133933036e28e7fd7d00f493a2b102e44918fe6;p=modules%2Fsmesh.git diff --git a/src/StdMeshers/StdMeshers_Import_1D2D.cxx b/src/StdMeshers/StdMeshers_Import_1D2D.cxx index b5486304e..cd8f4acfd 100644 --- a/src/StdMeshers/StdMeshers_Import_1D2D.cxx +++ b/src/StdMeshers/StdMeshers_Import_1D2D.cxx @@ -95,7 +95,7 @@ StdMeshers_Import_1D2D::StdMeshers_Import_1D2D(int hypId, int studyId, SMESH_Gen _shapeType = (1 << TopAbs_FACE); _compatibleHypothesis.push_back("ImportSource2D"); - _requireDescretBoundary = false; + _requireDiscreteBoundary = false; } //============================================================================= @@ -420,25 +420,27 @@ bool StdMeshers_Import_1D2D::Compute(SMESH_Mesh & theMesh, const TopoDS_Shape & } } if ( !nodesOnBoundary ) - break; // error: free internal link + { + error("free internal link"); // just for an easier debug + break; + } if ( bndShapes.front().ShapeType() == TopAbs_EDGE && bndShapes.front() != bndShapes.back() ) - break; // error: link nodes on different geom edges + // link nodes on different geom edges + return error(COMPERR_BAD_INPUT_MESH, "Source nodes mismatch target vertices"); // find geom edge the link is on if ( bndShapes.back().ShapeType() != TopAbs_EDGE ) { // find geom edge by two vertices - TopoDS_Shape geomEdge; - PShapeIteratorPtr edgeIt = helper.GetAncestors( bndShapes.back(), theMesh, TopAbs_EDGE ); - while ( edgeIt->more() ) + TopoDS_Shape geomEdge = helper.GetCommonAncestor( bndShapes.back(), + bndShapes.front(), + theMesh, TopAbs_EDGE ); + if ( geomEdge.IsNull() ) { - geomEdge = *(edgeIt->next()); - if ( !helper.IsSubShape( bndShapes.front(), geomEdge )) - geomEdge.Nullify(); + error("free internal link"); + break; // vertices belong to different edges } - if ( geomEdge.IsNull() ) - break; // vertices belong to different edges -> error: free internal link bndShapes.push_back( geomEdge ); } @@ -470,7 +472,7 @@ bool StdMeshers_Import_1D2D::Compute(SMESH_Mesh & theMesh, const TopoDS_Shape & } else if ( nbFaces > 2 ) { - return error( "Non-manifold source mesh"); + return error( COMPERR_BAD_INPUT_MESH, "Non-manifold source mesh"); } } isFaceMeshed = ( link2Nb == linkCount.end() && !linkCount.empty()); @@ -496,12 +498,13 @@ bool StdMeshers_Import_1D2D::Compute(SMESH_Mesh & theMesh, const TopoDS_Shape & if ( nbEdges < 2 ) return false; // weird if ( nbEdges > 2 ) - return error( "Source elements overlap one another"); + return error( COMPERR_BAD_INPUT_MESH, "Source elements overlap one another"); } } } if ( !isFaceMeshed ) - return error( "Source elements don't cover totally the geometrical face" ); + return error( COMPERR_BAD_INPUT_MESH, + "Source elements don't cover totally the geometrical face" ); if ( helper.HasSeam() ) {