Salome HOME
refs #1330: basic implementation of the not zoomable polyline arrows
[modules/hydro.git] / src / HYDROData / HYDROData_GeomTool.cxx
index 8423f6d314083b7a514fdf993d29ea673841e2cb..a152909c98247f0e26f54693bd0f917b820c8ba7 100644 (file)
@@ -164,7 +164,7 @@ GEOM::GEOM_Object_ptr HYDROData_GeomTool::publishShapeInGEOM(
 GEOM::GEOM_Object_ptr HYDROData_GeomTool::ExplodeShapeInGEOMandPublish( GEOM::GEOM_Gen_var theGeomEngine, 
   SALOMEDS::Study_ptr theStudy, 
   const TopoDS_Shape& theShape,   
-  const NCollection_IndexedDataMap<TopoDS_Shape, QString>& aFacesToNameModif,  
+  const NCollection_IndexedDataMap<TopoDS_Shape, QString, TopTools_ShapeMapHasher>& aFacesToNameModif,  
   const QString& theName,
   QString& theGeomObjEntry)
 { 
@@ -175,6 +175,14 @@ GEOM::GEOM_Object_ptr HYDROData_GeomTool::ExplodeShapeInGEOMandPublish( GEOM::GE
 
   TopTools_MapOfShape mapShape;
 
+  NCollection_IndexedDataMap<TopoDS_Shape, QString, TopTools_ShapeMapHasher> aFF2N;
+  for (int i = 1; i <= aFacesToNameModif.Extent(); i++)
+  {
+    TopExp_Explorer exp (aFacesToNameModif.FindKey(i), TopAbs_FACE);
+    for (;exp.More(); exp.Next())
+      aFF2N.Add(exp.Current(), aFacesToNameModif.FindFromIndex(i));
+  }
+
   TopExp_Explorer exp (theShape, TopAbs_FACE);
   QVector<QString> Names;
   for (; exp.More(); exp.Next())
@@ -183,13 +191,18 @@ GEOM::GEOM_Object_ptr HYDROData_GeomTool::ExplodeShapeInGEOMandPublish( GEOM::GE
     if (mapShape.Add(csh))
     {
       //listShape.Append(csh);
-      QString Qstr = aFacesToNameModif.FindFromKey(csh);
+      QString Qstr = aFF2N.FindFromKey(csh);
       Names.push_back(Qstr);
     }
   }
 
   for (size_t i = 0; i < aFc->length(); i++)
-    GEOMBase::PublishSubObject(aFc->operator[](i), Names[i]);  
+  {
+    std::string name = Names[i].toStdString();
+    GEOM::GEOM_Object_ptr anObj = aFc->operator[](i);
+    //GEOMBase::PublishSubObject( anObj, name.c_str() );
+    theGeomEngine->AddInStudy( theStudy, anObj, name.c_str(), aGeomObj );
+  }
 
   return aGeomObj;
 }