]> SALOME platform Git repositories - modules/visu.git/commitdiff
Salome HOME
To unify ID's mapping as for TimeStamp as for Gauss Points
authorapo <apo@opencascade.com>
Fri, 2 Sep 2005 07:28:30 +0000 (07:28 +0000)
committerapo <apo@opencascade.com>
Fri, 2 Sep 2005 07:28:30 +0000 (07:28 +0000)
14 files changed:
src/CONVERTOR/Makefile.in
src/CONVERTOR/VISUConvertor.cxx
src/CONVERTOR/VISU_Convertor.hxx
src/CONVERTOR/VISU_Convertor_impl.cxx
src/CONVERTOR/VISU_Convertor_impl.hxx
src/CONVERTOR/VISU_IDMapper.cxx [new file with mode: 0644]
src/CONVERTOR/VISU_IDMapper.hxx
src/CONVERTOR/VISU_MedConvertor.cxx
src/PIPELINE/VISUPipeLine.cxx
src/PIPELINE/VISU_GaussPointsPL.cxx
src/PIPELINE/VISU_GaussPointsPL.hxx
src/VISU_I/VISU_CorbaMedConvertor.cxx
src/VISU_I/VISU_GaussPoints_i.cc
src/VISU_SWIG/VISU_Gen_s.cc

index c58487cbe069ec1364e15d3ba7436118a8851444..2c434283b1d259b7bfadbff2599494eb06457baa 100644 (file)
@@ -42,7 +42,9 @@ EXPORT_HEADERS = \
 # Libraries targets
 
 LIB = libVisuConvertor.la
-LIB_SRC = VISU_Convertor.cxx \
+LIB_SRC = \
+       VISU_IDMapper.cxx \
+       VISU_Convertor.cxx \
        VISU_Convertor_impl.cxx \
        VISU_ConvertorUtils.cxx \
        VISU_ExtractUnstructuredGrid.cxx \
index 8fc31f24c1c694f6c603276a642f7eae2bf615d1..897e7a81578b1a482966e4ecbfd41707b0cf5b7d 100644 (file)
@@ -85,10 +85,9 @@ void parseFile(const char* theFileName)
            int aTimeStamp = aValFieldIter->first;
 
            if(anEntity != VISU::NODE_ENTITY){
-             VISU::TVTKOutput* aDataSet = 
-               aCon->GetTimeStampOnGaussPts(aMeshName,anEntity,aFieldName,aTimeStamp);
              VISU::PGaussMesh aGaussMesh = 
-               aCon->GetGaussMesh(aMeshName,anEntity,aFieldName,aTimeStamp);
+               aCon->GetTimeStampOnGaussPts(aMeshName,anEntity,aFieldName,aTimeStamp);
+             VISU::TVTKOutput* aDataSet = aGaussMesh->GetVTKOutput();
              
              int aNbCells = aDataSet->GetNumberOfCells();
              for(int anCellId = 0; anCellId < aNbCells; anCellId++){
index 0240fb08449135cf86b7677cfd53d8cf4a637105..76e859aad5cb86247f0555fb10f12b18e68a3ba6 100644 (file)
@@ -149,7 +149,7 @@ namespace VISU
   typedef vtkIdType TLocalPntID;
   typedef std::pair<TCellID,TLocalPntID> TGaussPointID;
 
-  struct TGaussMesh: virtual TBaseStructure
+  struct TGaussMesh: virtual TIDMapper
   {
     virtual 
     TGaussPointID 
@@ -323,19 +323,12 @@ public:
                     int theStampsNum) = 0;
 
   virtual
-  TOutput* 
+  VISU::PGaussMesh 
   GetTimeStampOnGaussPts(const std::string& theMeshName, 
                         const VISU::TEntity& theEntity,
                         const std::string& theFieldName,
                         int theStampsNum) = 0;
    
-  virtual
-  VISU::PGaussMesh 
-  GetGaussMesh(const std::string& theMeshName, 
-              const VISU::TEntity& theEntity,
-              const std::string& theFieldName,
-              int theStampsNum) = 0; 
-
   virtual 
   float
   GetTimeStampSize(const std::string& theMeshName, 
index abd08dc06c6fbcb08a38b5f456831bb2fb4f0d44..fb4058aeff846e3c6470bbd1d3662eb9b720e062 100644 (file)
@@ -1806,7 +1806,7 @@ VISU_Convertor_impl
 
 
 //---------------------------------------------------------------
-VISU_Convertor::TOutput* 
+VISU::PGaussMesh 
 VISU_Convertor_impl
 ::GetTimeStampOnGaussPts(const string& theMeshName, 
                         const VISU::TEntity& theEntity,
@@ -1833,8 +1833,8 @@ VISU_Convertor_impl
   PFieldImpl aField = boost::get<3>(aFindTimeStamp);
 
   //Main part of code
-  TSource& aGaussPtsSource = aValForTime->myGaussPtsSource;
-  const TVTKSource& aSource = aGaussPtsSource.GetSource();
+  PGaussMeshImpl aGaussMesh = aValForTime->myGaussMesh;
+  TSource& aGaussPtsSource = aGaussMesh->mySource;
 #ifndef _DEXCEPT_
   try{
 #endif
@@ -1848,6 +1848,7 @@ VISU_Convertor_impl
       BuildGaussMesh(aMesh,aVTKMeshOnEntity,aGaussMesh);
       
       const TVTKAppendFilter& anAppendFilter = aGaussMesh->GetFilter();
+      const TVTKSource& aSource = aGaussPtsSource.GetSource();
       aSource->ShallowCopy(anAppendFilter->GetOutput());
       GetTimeStampOnGaussMesh(aSource,aField,aValForTime);
 
@@ -1879,30 +1880,9 @@ VISU_Convertor_impl
   }
 #endif
 
-  return aSource.GetPointer();
-}
-
-//---------------------------------------------------------------
-VISU::PGaussMesh 
-VISU_Convertor_impl
-::GetGaussMesh(const string& theMeshName, 
-              const VISU::TEntity& theEntity,
-              const string& theFieldName,
-              int theStampsNum)
-{
-  GetTimeStampOnGaussPts(theMeshName, theEntity, theFieldName, theStampsNum);
-
-  TFindTimeStamp aFindTimeStamp = FindTimeStamp(theMeshName,
-                                               theEntity,
-                                               theFieldName,
-                                               theStampsNum);
-  PValForTimeImpl aValForTime = boost::get<4>(aFindTimeStamp);
-  PGaussMeshImpl aGaussMesh=aValForTime->myGaussMesh;
-  
   return aGaussMesh;
 }
 
-
 //---------------------------------------------------------------
 VISU::PMeshImpl 
 VISU_Convertor_impl
index 44ff27695cf5901b3259408da0a53eff65d54307..dc300b42ff79f6e607a75085b65310086f93d414 100644 (file)
@@ -62,13 +62,15 @@ namespace VISU
     const TVTKSource& 
     GetSource() const;
 
+    virtual
     TVTKOutput* 
     GetVTKOutput();
   };
 
 
   //---------------------------------------------------------------
-  class TAppendFilter: public virtual TIsVTKDone
+  class TAppendFilter: public virtual TIsVTKDone,
+                      public virtual TIDMapper
   {
     mutable TVTKAppendFilter myFilter;
   public:
@@ -229,13 +231,6 @@ namespace VISU
     vtkCell* 
     GetElemCell(vtkIdType theObjID);
     
-    virtual
-    TVTKOutput* 
-    GetVTKOutput()
-    {
-      return mySource.GetVTKOutput();
-    }
-
     TID2ID myElemObj2VTKID;
     TSubProfileArr mySubProfileArr;
     PNamedPointCoords myNamedPointCoords;
@@ -286,6 +281,8 @@ namespace VISU
     GetObjID(int theVtkI) const;
 
     TGaussSubMeshArr myGaussSubMeshArr;
+
+    TSource mySource;
     TGeom2GaussSubMesh myGeom2GaussSubMesh;
   };
   typedef SharedPtr<TGaussMeshImpl> PGaussMeshImpl;
@@ -336,13 +333,6 @@ namespace VISU
     vtkIdType 
     GetElemObjID(vtkIdType theID) const;
 
-    virtual
-    TVTKOutput* 
-    GetVTKOutput()
-    {
-      return TAppendFilter::GetVTKOutput();
-    }
-
     TID2ID myElemObj2VTKID;
     TSubMeshArr mySubMeshArr;
     PNamedPointCoords myNamedPointCoords;
@@ -503,10 +493,7 @@ namespace VISU
     TMeshValue& 
     GetMeshValue(vtkIdType theGeom);
 
-    TSource myMeshSource;
-    TSource myGaussPtsSource;
-
-    int myNbGauss;
+    vtkIdType myNbGauss;
 
     virtual
     int
@@ -587,19 +574,12 @@ public:
                   int theStampsNum);
 
   virtual
-  TOutput* 
+  VISU::PGaussMesh 
   GetTimeStampOnGaussPts(const std::string& theMeshName, 
                         const VISU::TEntity& theEntity,
                         const std::string& theFieldName,
                         int theStampsNum);
   
-  virtual
-  VISU::PGaussMesh 
-  GetGaussMesh(const std::string& theMeshName, 
-              const VISU::TEntity& theEntity,
-              const std::string& theFieldName,
-              int theStampsNum);
-
   virtual 
   float 
   GetFieldOnMeshSize(const std::string& theMeshName, 
diff --git a/src/CONVERTOR/VISU_IDMapper.cxx b/src/CONVERTOR/VISU_IDMapper.cxx
new file mode 100644 (file)
index 0000000..c1f07b5
--- /dev/null
@@ -0,0 +1,77 @@
+//  VISU OBJECT : interactive object for VISU entities implementation
+//
+//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+// 
+//  This library is free software; you can redistribute it and/or 
+//  modify it under the terms of the GNU Lesser General Public 
+//  License as published by the Free Software Foundation; either 
+//  version 2.1 of the License. 
+// 
+//  This library is distributed in the hope that it will be useful, 
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+//  Lesser General Public License for more details. 
+// 
+//  You should have received a copy of the GNU Lesser General Public 
+//  License along with this library; if not, write to the Free Software 
+//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
+// 
+//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
+//
+//
+//  File:
+//  Author:
+//  Module : VISU
+
+#include "VISU_IDMapper.hxx"
+
+#include <vtkUnstructuredGrid.h>
+
+namespace VISU
+{
+  //---------------------------------------------------------------
+  float*  
+  TIDMapper
+  ::GetNodeCoord(vtkIdType theObjID)
+  {
+    vtkIdType aVTKID = GetNodeVTKID(theObjID);
+    return GetVTKOutput()->GetPoint(aVTKID);
+  }
+
+  vtkIdType
+  TIDMapper
+  ::GetNodeVTKID(vtkIdType theID) const
+  {
+    return theID;
+  }
+
+  vtkIdType
+  TIDMapper
+  ::GetNodeObjID(vtkIdType theID) const
+  {
+    return theID;
+  }
+
+  vtkCell* 
+  TIDMapper
+  ::GetElemCell(int theObjID)
+  {
+    vtkIdType aVtkID = GetElemVTKID(theObjID);
+    return GetVTKOutput()->GetCell(aVtkID);
+  }
+
+  vtkIdType
+  TIDMapper
+  ::GetElemVTKID(vtkIdType theID) const
+  {
+    return theID;
+  }
+
+  vtkIdType
+  TIDMapper
+  ::GetElemObjID(vtkIdType theID) const
+  {
+    return theID;
+  }  
+}
index 6bc0e1b185b03f7ee3c5a20eec497583d8a4a568..6b1e5a5016ea90c557843f492e9225abb9d1ed84 100644 (file)
@@ -53,27 +53,27 @@ namespace VISU
   {
     virtual 
     vtkIdType 
-    GetNodeObjID(vtkIdType theID) const = 0;
+    GetNodeObjID(vtkIdType theID) const;
 
     virtual 
     vtkIdType 
-    GetNodeVTKID(vtkIdType theID) const = 0;
+    GetNodeVTKID(vtkIdType theID) const;
 
     virtual
     float* 
-    GetNodeCoord(vtkIdType theObjID) = 0;
+    GetNodeCoord(vtkIdType theObjID);
 
     virtual 
     vtkIdType 
-    GetElemObjID(vtkIdType theID) const = 0;
+    GetElemObjID(vtkIdType theID) const;
 
     virtual 
     vtkIdType 
-    GetElemVTKID(vtkIdType theID) const = 0;
+    GetElemVTKID(vtkIdType theID) const;
 
     virtual
     vtkCell* 
-    GetElemCell(vtkIdType theObjID) = 0;
+    GetElemCell(vtkIdType theObjID);
 
     virtual
     TVTKOutput*
index c9d54906b77f9e795be97dba3eaebb1f5275dc88..eb9222d5c511ad2be450e5022aa118028c69c9e2 100644 (file)
@@ -1668,14 +1668,15 @@ VISU_MedConvertor
                       VISU::PMEDField theField, 
                       VISU::PMEDValForTime theValForTime)
 {
-  TSource& aMeshSource = theValForTime->myMeshSource;
+  PProfileImpl aProfile = theValForTime->myProfile;
+  TSource& aProfileSource = aProfile->mySource;
   return LoadValForTime(theMed,
                        theMesh,
                        theMeshOnEntity,
                        theField,
                        theValForTime,
                        false,
-                       aMeshSource.myIsDone);
+                       aProfileSource.myIsDone);
 }
 
 
@@ -1688,7 +1689,8 @@ VISU_MedConvertor
                           VISU::PMEDField theField, 
                           VISU::PMEDValForTime theValForTime)
 {
-  TSource& aGaussPtsSource = theValForTime->myGaussPtsSource;
+  PGaussMeshImpl aGaussMesh = theValForTime->myGaussMesh;
+  TSource& aGaussPtsSource = aGaussMesh->mySource;
   return LoadValForTime(theMed,
                        theMesh,
                        theMeshOnEntity,
index 5a7437e5188e49e727242dae851b0d8b0004d240..d5f2024a71841f0f41cd7a631a43c9ec6f00fcaa 100644 (file)
@@ -115,14 +115,13 @@ int main(int argc, char** argv){
          int aTimeStamp = aValFieldIter->first;
 
          VISU::PIDMapper anIDMapper;
-         VISU::TVTKOutput* aDataSet;
-         if(anEntity != VISU::NODE_ENTITY)
-           aDataSet = aConvertor->GetTimeStampOnGaussPts(aMeshName,anEntity,aFieldName,aTimeStamp);
-         else{
+         if(anEntity != VISU::NODE_ENTITY){
+           anIDMapper = aConvertor->GetTimeStampOnGaussPts(aMeshName,anEntity,aFieldName,aTimeStamp);
+         }else{
            continue;
            anIDMapper = aConvertor->GetTimeStampOnMesh(aMeshName,anEntity,aFieldName,aTimeStamp);
-           aDataSet = anIDMapper->GetVTKOutput();
          }
+         VISU::TVTKOutput* aDataSet = anIDMapper->GetVTKOutput();
 
          TPresent* aPresent = TPresent::New();
          aPresent->SetInput(aDataSet);
index 233d4e24283cd4ebd4c9c9e17ae220c60d51d27b..b11a2ab31fa80bcda45d354145ab81c0772a5253 100644 (file)
@@ -140,3 +140,19 @@ VISU_GaussPointsPL::~VISU_GaussPointsPL()
     this->myGeomFilter = NULL;
   }
 }
+
+//=======================================================================
+void
+VISU_GaussPointsPL
+::SetGaussMesh(const VISU::PGaussMesh& theGaussMesh)
+{
+  myGaussMesh = theGaussMesh;
+  SetIDMapper(myGaussMesh);
+}
+
+const VISU::PGaussMesh&  
+VISU_GaussPointsPL
+::GetGaussMesh() const
+{
+  return myGaussMesh;
+}
index 98b7780ce23afe778c0570281fc6c2f93eafcf3b..4d7b0beff2b0185c5bb9f4f275f49953999dfcf6 100644 (file)
@@ -29,6 +29,7 @@
 #define VISU_GaussPointsPL_HeaderFile
 
 #include "VISU_ScalarMapPL.hxx"
+#include "VISU_Convertor.hxx"
 
 class VISU_OpenGLPointSpriteMapper;
 
@@ -49,9 +50,16 @@ public:
   virtual void Build();
   virtual void Update();
 
+  void 
+  SetGaussMesh(const VISU::PGaussMesh& theGaussMesh);
+
+  const VISU::PGaussMesh&  
+  GetGaussMesh()const;
+
 protected:
   VISU_OpenGLPointSpriteMapper* myPSMapper;
   vtkGeometryFilter* myGeomFilter;
+  VISU::PGaussMesh myGaussMesh;
 };
   
 #endif
index 26b14fbf89bdadbbe924dd05d439db2cb26a465e..6106947b6d8fddbaf823c4194debd92b01277b30 100644 (file)
@@ -1258,7 +1258,8 @@ VISU_MEDConvertor::LoadField(VISU::PCMesh theMesh,
                             VISU::PCValForTime theValForTime)
 {
   //Check on loading already done
-  TSource& aMeshSource = theValForTime->myMeshSource;
+  PProfileImpl aProfile = theValForTime->myProfile;
+  TSource& aMeshSource = aProfile->mySource;
   if(aMeshSource.myIsDone) 
     return 0;
   
index e915e9d160a251db1ef10c06ea1b37c4f4aa15e9..5146b570219a00d3f1075d5cd31b6fc7a31e1416 100644 (file)
@@ -133,17 +133,19 @@ VISU::GaussPoints_i
 {
   if(theResult->GetInput() == NULL)
     throw std::runtime_error("Mesh_i::Build - theResult->GetInput() == NULL !!!");
+
   myField = theResult->GetInput()->GetField(myMeshName,myEntity,myFieldName);
   if(myField == NULL) 
     throw std::runtime_error("There is no Field with the parameters !!!");
 
-  VISU_Convertor::TOutput *anOutput = 
+  VISU::PGaussMesh aGaussMesh =
     theResult->GetInput()->GetTimeStampOnGaussPts(myMeshName,myEntity,myFieldName,myIteration);
 
-  if(anOutput == NULL
+  if(!aGaussMesh
     throw std::runtime_error("There is no TimeStamp with the parameters !!!");
-  myScalarMapPL->SetInput(anOutput);
-  myScalarMapPL->Build();
+
+  myGaussPointsPL->SetGaussMesh(aGaussMesh);
+  myGaussPointsPL->Build();
 }
 
 
index 1a499def1fdd5915a4e75281bf0bca59e717905f..ddad586a1833a5bfcdb3421275d6f1b47cf6f82a 100644 (file)
@@ -48,8 +48,9 @@ ScalarMap::ScalarMap(Convertor* theConvertor, const char* theMeshName, int theEn
   : myScalarMap(NULL)
 {
   if(VISU_Convertor* aConvertor = theConvertor->GetImpl()){
-    vtkUnstructuredGrid* aDataSet = 
+    VISU::PIDMapper anIDMapper = 
       aConvertor->GetTimeStampOnMesh(theMeshName,VISU::TEntity(theEntity),theFieldName,theIteration);
+    VISU::TVTKOutput* aDataSet = anIDMapper->GetVTKOutput();
     if(aDataSet){
       myScalarMap = VISU_ScalarMapPL::New();
       myScalarMap->SetInput(aDataSet);