Salome HOME
PAL13639 (EDF PAL 317 : SMESH : Create "0D Hypothesis")
authoreap <eap@opencascade.com>
Mon, 19 Feb 2007 15:35:40 +0000 (15:35 +0000)
committereap <eap@opencascade.com>
Mon, 19 Feb 2007 15:35:40 +0000 (15:35 +0000)
   ignore shape orientation at hypothesis addition/removal

src/SMESHDS/SMESHDS_Mesh.cxx

index d8a1d5942edec2e52f8f4d7a50f5eb302c419f7c..6a82e05c519c5b7270fb164edbc809b0ec4ca954 100644 (file)
@@ -105,18 +105,18 @@ void SMESHDS_Mesh::ShapeToMesh(const TopoDS_Shape & S)
 //=======================================================================
 
 bool SMESHDS_Mesh::AddHypothesis(const TopoDS_Shape & SS,
-       const SMESHDS_Hypothesis * H)
+                                 const SMESHDS_Hypothesis * H)
 {
-       list<const SMESHDS_Hypothesis *>& alist=myShapeToHypothesis[SS];
+  list<const SMESHDS_Hypothesis *>& alist=
+    myShapeToHypothesis[SS.Oriented(TopAbs_FORWARD)]; // ignore orientation of SS
 
-       //Check if the Hypothesis is still present
-       list<const SMESHDS_Hypothesis*>::iterator ith=alist.begin();
+  //Check if the Hypothesis is still present
+  list<const SMESHDS_Hypothesis*>::iterator ith=find(alist.begin(),alist.end(), H );
 
-       for (; ith!=alist.end(); ith++)
-               if (H == *ith) return false;
+  if (alist.end() != ith) return false;
 
-       alist.push_back(H);
-       return true;
+  alist.push_back(H);
+  return true;
 }
 
 //=======================================================================
@@ -124,22 +124,23 @@ bool SMESHDS_Mesh::AddHypothesis(const TopoDS_Shape & SS,
 //purpose  : 
 //=======================================================================
 
-bool SMESHDS_Mesh::RemoveHypothesis(const TopoDS_Shape & S,
-       const SMESHDS_Hypothesis * H)
+bool SMESHDS_Mesh::RemoveHypothesis(const TopoDS_Shape &       S,
+                                    const SMESHDS_Hypothesis * H)
 {
-       ShapeToHypothesis::iterator its=myShapeToHypothesis.find(S);
-       if(its!=myShapeToHypothesis.end())
-       {
-               list<const SMESHDS_Hypothesis*>::iterator ith=(*its).second.begin();
+  ShapeToHypothesis::iterator its=
+    myShapeToHypothesis.find(S.Oriented(TopAbs_FORWARD)); // ignore orientation of S
 
-               for (; ith!=(*its).second.end(); ith++)
-                       if (H == *ith)
-                       {
-                               (*its).second.erase(ith);
-                               return true;
-                       }
-       }
-       return false;
+  if(its!=myShapeToHypothesis.end())
+  {
+    list<const SMESHDS_Hypothesis *>& alist=(*its).second;
+    list<const SMESHDS_Hypothesis*>::iterator ith=find(alist.begin(),alist.end(), H );
+    if (ith != alist.end())
+    {
+      alist.erase(ith);
+      return true;
+    }
+  }
+  return false;
 }
 
 //=======================================================================
@@ -1015,14 +1016,16 @@ list<int> SMESHDS_Mesh::SubMeshIndices()
 //purpose  : 
 //=======================================================================
 
-const list<const SMESHDS_Hypothesis*>& SMESHDS_Mesh::GetHypothesis(
-       const TopoDS_Shape & S) const
+const list<const SMESHDS_Hypothesis*>&
+SMESHDS_Mesh::GetHypothesis(const TopoDS_Shape & S) const
 {
-       if (myShapeToHypothesis.find(S)!=myShapeToHypothesis.end())
-               return myShapeToHypothesis.find(S)->second;
+  ShapeToHypothesis::const_iterator its=
+    myShapeToHypothesis.find(S.Oriented(TopAbs_FORWARD)); // ignore orientation of S
+  if (its!=myShapeToHypothesis.end())
+    return its->second;
 
-       static list<const SMESHDS_Hypothesis*> empty;
-       return empty;
+  static list<const SMESHDS_Hypothesis*> empty;
+  return empty;
 }
 
 //=======================================================================
@@ -1060,7 +1063,7 @@ bool SMESHDS_Mesh::HasMeshElements(const TopoDS_Shape & S)
 //=======================================================================
 bool SMESHDS_Mesh::HasHypothesis(const TopoDS_Shape & S)
 {
-       return myShapeToHypothesis.find(S)!=myShapeToHypothesis.end();
+  return myShapeToHypothesis.find(S.Oriented(TopAbs_FORWARD))!=myShapeToHypothesis.end();
 }
 
 //=======================================================================