]> SALOME platform Git repositories - modules/visu.git/commitdiff
Salome HOME
To implement Slice of the points coordinates
authorapo <apo@opencascade.com>
Thu, 21 Jul 2005 13:32:31 +0000 (13:32 +0000)
committerapo <apo@opencascade.com>
Thu, 21 Jul 2005 13:32:31 +0000 (13:32 +0000)
src/CONVERTOR/VISUConvertor.cxx
src/CONVERTOR/VISU_Convertor_impl.cxx
src/CONVERTOR/VISU_Convertor_impl.hxx
src/CONVERTOR/VISU_MedConvertor.cxx

index e43e8c0bbdb67618a5cc6eff2d09970e5af2e31a..22aa9c729058c8162dd7a116b5ce0c5801be4375 100644 (file)
@@ -44,7 +44,9 @@ static int MYDEBUG = 0;
 #endif
 
 void parseFile(const char* theFileName) {
+#ifndef _DEBUG_
   try{
+#endif
     MSG(MYDEBUG,"'"<<theFileName<<"'...");
     auto_ptr<VISU_Convertor> aCon(CreateConvertor(theFileName));
     //aCon->GetSize();
@@ -105,37 +107,33 @@ void parseFile(const char* theFileName) {
       }
     }
     MSG(MYDEBUG,"OK");
-   }catch(std::exception& exc){
+#ifndef _DEBUG_
+  }catch(std::exception& exc){
     MSG(MYDEBUG,"Follow exception was occured in file:"<<theFileName<<"\n"<<exc.what());
-   }catch(...){
+  }catch(...){
     MSG(MYDEBUG,"Unknown exception was occured in VISU_Convertor_impl in file:"<<theFileName);
-   } 
+  } 
+#endif
 }
 
 int main(int argc, char** argv){ 
-  try{
-    if(argc > 1){
-      QFileInfo fi(argv[1]);
-      for(int i = 0; i < 1; i++){
-       if(fi.exists()){
-          if(fi.isDir()){
-           QDir aDir(fi.absFilePath());
-           QStringList aStringList = aDir.entryList("*.med",QDir::Files);
-           int jEnd = aStringList.count();
-           for(int j = 0; j < jEnd; j++){
-              parseFile(aDir.filePath(aStringList[j]).latin1());
-           }
-          }else{
-           parseFile(argv[1]);
+  if(argc > 1){
+    QFileInfo fi(argv[1]);
+    for(int i = 0; i < 1; i++){
+      if(fi.exists()){
+       if(fi.isDir()){
+         QDir aDir(fi.absFilePath());
+         QStringList aStringList = aDir.entryList("*.med",QDir::Files);
+         int jEnd = aStringList.count();
+         for(int j = 0; j < jEnd; j++){
+           parseFile(aDir.filePath(aStringList[j]).latin1());
          }
+       }else{
+         parseFile(argv[1]);
        }
       }
-      return 0;
     }
-  }catch(std::exception& exc){
-    MSG(MYDEBUG,"Follow exception was occured :\n"<<exc.what());
-  }catch(...){
-    MSG(MYDEBUG,"Unknown exception was occured in VISU_Convertor_impl");
-  } 
+    return 0;
+  }
   return 1;
 }
index bb55d5e630c365c8372beb0a82f66002404db425..1a5a9f4a3b2162efb62af20f6a6f17ee9152415d 100644 (file)
@@ -78,6 +78,36 @@ namespace VISU
   }
 
 
+  //---------------------------------------------------------------
+  void
+  TPoints
+  ::Init(vtkIdType theDim)
+  {
+    myDim = theDim;
+  }
+
+  vtkIdType
+  TPoints
+  ::size() const
+  {
+    return myCoord.size()/myDim;
+  }
+
+  TCPointSlice 
+  TPoints
+  ::GetPointSlice(vtkIdType theElemId) const
+  {
+    return TCPointSlice(myCoord,std::slice(theElemId*myDim,myDim,1));
+  }
+  
+  TPointSlice 
+  TPoints
+  ::GetPointSlice(vtkIdType theElemId)
+  {
+    return TPointSlice(myCoord,std::slice(theElemId*myDim,myDim,1));
+  }
+
+
   //---------------------------------------------------------------
   TMeshImpl::TMeshImpl():
     myPoints(vtkPoints::New()),
@@ -214,11 +244,11 @@ namespace
 
   //---------------------------------------------------------------
   enum ECoordName{eX, eY, eZ, eNone};
-  typedef VISU::TCoord (*TGetCoord)(const VISU::TMeshImpl::TPointsCoord&, int);
+  typedef VISU::TCoord (*TGetCoord)(const VISU::TPointsCoord&, int);
   
   template<ECoordName TheCoordId>
   VISU::TCoord 
-  GetCoord(const VISU::TMeshImpl::TPointsCoord& thePointsCoord, 
+  GetCoord(const VISU::TPointsCoord& thePointsCoord, 
           int theStartPos)
   {
     return thePointsCoord[theStartPos+TheCoordId];
@@ -226,7 +256,7 @@ namespace
   
   template<>
   VISU::TCoord 
-  GetCoord<eNone>(const VISU::TMeshImpl::TPointsCoord& thePointsCoord, 
+  GetCoord<eNone>(const VISU::TPointsCoord& thePointsCoord, 
                  int theStartPos)
   {
     return 0.0;
@@ -279,10 +309,10 @@ namespace
 
   
   class TCoordHelper{
-    const VISU::TMeshImpl::TPointsCoord& myPointsCoord;
+    const VISU::TPointsCoord& myPointsCoord;
     TGetCoord* myGetCoord;
   public:
-    TCoordHelper(const VISU::TMeshImpl::TPointsCoord& thePointsCoord,
+    TCoordHelper(const VISU::TPointsCoord& thePointsCoord,
                 TGetCoord* theGetCoord):
       myPointsCoord(thePointsCoord),
       myGetCoord(theGetCoord)
@@ -305,7 +335,7 @@ namespace
 
     if(!theMesh->myIsInitialized){
       TCoordHelperPtr aCoordHelperPtr;
-      const VISU::TMeshImpl::TPointsCoord& anArray = theMesh->myPointsCoord;
+      const VISU::TPointsCoord& anArray = theMesh->myPointsCoord;
       {
        int aMeshDimension = theMesh->myDim;
        bool anIsDimPresent[3] = {false, false, false};
index 6cadc0ba4111de17b8f6dfefc5cfb26c1b3e6ce0..c1d97dbfe718d98463c46275e3c8fdea3ddd29f5 100644 (file)
@@ -9,8 +9,6 @@
 #ifndef VISU_Convertor_impl_HeaderFile
 #define VISU_Convertor_impl_HeaderFile
 
-#include "VISU_Convertor.hxx"
-
 #include <vtkSystemIncludes.h>
 
 #include <vtkSmartPointer.h>
@@ -21,9 +19,15 @@ class vtkPoints;
 class vtkAppendFilter;
 class vtkUnstructuredGrid;
 
+#include "VISU_Convertor.hxx"
+#include "MED_SliceArray.hxx"
+
 namespace VISU
 {
 
+  using MED::TCSlice;
+  using MED::TSlice;
+
   typedef vtkSmartPointer<vtkPoints> TVTKPoints;
   typedef vtkSmartPointer<vtkUnstructuredGrid> TVTKSource;
   typedef vtkSmartPointer<vtkAppendFilter> TVTKAppendFilter;
@@ -42,11 +46,37 @@ namespace VISU
     bool myIsInitialized;
   };
 
+  
+  //---------------------------------------------------------------
+  typedef std::vector<TCoord> TPointsCoord;
+  typedef TSlice<TPointsCoord> TPointSlice;
+  typedef TCSlice<TPointsCoord> TCPointSlice;
+
+  struct TPoints: virtual TBaseStructure
+  {
+    vtkIdType myDim;
+
+    TPointsCoord myCoord;
+
+  public:
+
+    TCPointSlice
+    GetPointSlice(vtkIdType theElemId) const;
+
+    TPointSlice 
+    GetPointSlice(vtkIdType theElemId);
+
+    void
+    Init(vtkIdType theDim);
+
+    vtkIdType
+    size() const;
+  };
+
 
   //---------------------------------------------------------------
   struct TMeshImpl: virtual TMesh
   {
-    typedef std::vector<TCoord> TPointsCoord;
     TPointsCoord myPointsCoord;
 
     typedef std::vector<std::string> TPointsDim;
index 10af20dc2a3bfff41a250f79e6a9522f09c1a3f2..8b27ec3d540a936b3e86c5b6ccc76e69f7daeeb1 100644 (file)
@@ -854,7 +854,7 @@ VISU_MedConvertor
       for(int iDim = 0; iDim < theMesh->myDim; iDim++)
        aPointsDim[iDim] = aNodeInfo->GetCoordName(iDim);
       
-      VISU::TMeshImpl::TPointsCoord& aPointsCoord = theMesh->myPointsCoord;
+      VISU::TPointsCoord& aPointsCoord = theMesh->myPointsCoord;
       aPointsCoord.resize(aNbElem*theMesh->myDim);
       for (int iElem = 0; iElem < aNbElem; iElem++) 
        for(int iDim = 0, iElem2Dim = iElem*theMesh->myDim; iDim < theMesh->myDim; iDim++, iElem2Dim++)