Salome HOME
use helper.GetCommonAncestor()
authoreap <eap@opencascade.com>
Thu, 13 Oct 2011 05:34:25 +0000 (05:34 +0000)
committereap <eap@opencascade.com>
Thu, 13 Oct 2011 05:34:25 +0000 (05:34 +0000)
src/StdMeshers/StdMeshers_Import_1D2D.cxx
src/StdMeshers/StdMeshers_Prism_3D.cxx

index b5486304e8b90fb091e6b10070720cdaf3a806c0..2ecf6c1d7ac286b997aab265b45c6325177a7717 100644 (file)
@@ -429,14 +429,9 @@ bool StdMeshers_Import_1D2D::Compute(SMESH_Mesh & theMesh, const TopoDS_Shape &
         if ( bndShapes.back().ShapeType() != TopAbs_EDGE )
         {
           // find geom edge by two vertices
         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() )
-          {
-            geomEdge = *(edgeIt->next());
-            if ( !helper.IsSubShape( bndShapes.front(), geomEdge ))
-              geomEdge.Nullify();
-          }
+          TopoDS_Shape geomEdge = helper.GetCommonAncestor( bndShapes.back(),
+                                                            bndShapes.front(),
+                                                            theMesh, TopAbs_EDGE );
           if ( geomEdge.IsNull() )
             break; // vertices belong to different edges -> error: free internal link
           bndShapes.push_back( geomEdge );
           if ( geomEdge.IsNull() )
             break; // vertices belong to different edges -> error: free internal link
           bndShapes.push_back( geomEdge );
index af0185cded7c2390acc70d67ec65745deaeb4338..0d70042c86983d07adbe75a477725dff88c6776f 100644 (file)
@@ -2201,16 +2201,9 @@ TopoDS_Edge StdMeshers_PrismAsBlock::TSideFace::GetEdge(const int iEdge) const
   TopoDS_Shape V2 = myHelper->GetSubShapeByNode( node, meshDS );
   if ( V2.ShapeType() == TopAbs_VERTEX && !V2.IsSame( V1 ))
   {
   TopoDS_Shape V2 = myHelper->GetSubShapeByNode( node, meshDS );
   if ( V2.ShapeType() == TopAbs_VERTEX && !V2.IsSame( V1 ))
   {
-    TopTools_ListIteratorOfListOfShape ancestIt =
-      myHelper->GetMesh()->GetAncestors( V1 );
-    for ( ; ancestIt.More(); ancestIt.Next() )
-    {
-      const TopoDS_Shape & ancestor = ancestIt.Value();
-      if ( ancestor.ShapeType() == TopAbs_EDGE )
-        for ( TopExp_Explorer e( ancestor, TopAbs_VERTEX ); e.More(); e.Next() )
-          if ( V2.IsSame( e.Current() ))
-            return TopoDS::Edge( ancestor );
-    }
+    TopoDS_Shape ancestor = myHelper->GetCommonAncestor( V1, V2, *myHelper->GetMesh(), TopAbs_EDGE);
+    if ( !ancestor.IsNull() )
+      return TopoDS::Edge( ancestor );
   }
   return TopoDS_Edge();
 }
   }
   return TopoDS_Edge();
 }