]> SALOME platform Git repositories - modules/visu.git/commitdiff
Salome HOME
To provide additional fix for Bug GVIEW10573
authorapo <apo@opencascade.com>
Thu, 24 Nov 2005 07:01:05 +0000 (07:01 +0000)
committerapo <apo@opencascade.com>
Thu, 24 Nov 2005 07:01:05 +0000 (07:01 +0000)
 time to load sandia file too long

To define new methods to control the Result calculations

idl/VISU_Gen.idl
src/CONVERTOR/VISU_Convertor.cxx
src/CONVERTOR/VISU_Convertor_impl.cxx
src/CONVERTOR/VISU_MedConvertor.cxx
src/CONVERTOR/VISU_MedConvertor.hxx
src/ENGINE/VISU_Engine_i.cc
src/ENGINE/VISU_Engine_i.hh

index 77e4921ef834866dea32e4f2a825100ed6849826..72b6829f6a25201644aa9bbfa4c49252cab93aa8 100644 (file)
@@ -1250,14 +1250,28 @@ module VISU {
    * for further construction of graphical presentations.
    */
   interface Result : RemovableObject, SALOME::GenericObj {
-    //interface Result : Base{
     /*! Reads all data from the corresponding sources. By default the data is loaded on demand.
      */
     boolean BuildAll();
 
+    /*! Start to parse the source MED file and publish all its entities into the study*/
+    boolean Build(in boolean theIsBuildAll, in boolean theIsAtOnce);
+
+    /*! Allow to check is all requested MED entites already loaded or not */
+    boolean IsDone();
+
+    /*! Allow to check is corresponding MED entites already loaded or not */
+    boolean IsEntitiesDone();
+
+    /*! Choose to parse MED fields and perform global min / max on the MED timestamps.*/
+    void SetBuildFields(in boolean theIsBuildFields, in boolean theIsCalculateMinMax);
+
     /*! Allow to check is corresponding MED fields already loaded or not */
     boolean IsFieldsDone();
 
+    /*! Choose to parse MED groups.*/
+    void SetBuildGroups(in boolean theIsBuildGroups);
+
     /*! Allow to check is corresponding MED groups and families already loaded or not */
     boolean IsGroupsDone();
 
@@ -1307,6 +1321,13 @@ module VISU {
      */
     Result ImportFile(in string theFileName);
 
+    /*!
+     * Create result and initialize its with the file. The access to this file will be conserved outside of the application.
+     * \param theFileName String parameter defining the name of the file
+     *                    from which the data will be imported.
+     */
+    Result CreateResult(in string theFileName);
+
     /*!
      * Imports data from a file. The access to this file will closed.
      * \param theFileName String parameter defining the name of the file
index 0a599cd16b24c98a9da882e7846ae4f2c3cc0ec0..f417ad07a5c079b770a87d1c2c9196039d062163 100644 (file)
@@ -56,7 +56,6 @@ const VISU::TMeshMap&
 VISU_Convertor
 ::GetMeshMap() 
 { 
-  if(!myIsDone) { myIsDone = true;  Build();}
   return myMeshMap;
 }
 
index e7e13a26500da67d599afc3d33ab1d4d1e1e85ff..fd4dbd114675f03a3dab8bf88ffd32f86f951b83 100644 (file)
@@ -1770,6 +1770,13 @@ VISU_Convertor*
 VISU_Convertor_impl
 ::Build() 
 { 
+  if(!myIsDone){ 
+    myIsDone = true;  
+    BuildEntities();
+    BuildFields();
+    BuildMinMax();
+    BuildGroups();
+  }
   return this;
 }
 
index 953b0c43deeee666edd0fbc6e7deaa7a517e4e46..5616c086f12a35f4fe767fc0b33ce1d6e94d37ca 100644 (file)
@@ -910,6 +910,20 @@ namespace
       return myElemInfo->GetElemName(theObjID);
     return TSubMeshImpl::GetElemName(theObjID);
   }
+
+  struct TSetIsDone
+  {
+    bool& myIsDone;
+    TSetIsDone(bool& theIsDone):
+      myIsDone(theIsDone)
+    {}
+
+    ~TSetIsDone()
+    {
+      myIsDone = true;
+    }
+
+  };
 }
 
 
@@ -922,7 +936,11 @@ CreateConvertor(const string& theFileName)
 }
 
 VISU_MedConvertor
-::VISU_MedConvertor(const string& theFileName)
+::VISU_MedConvertor(const string& theFileName):
+  myIsEntitiesDone(false),
+  myIsFieldsDone(false),
+  myIsGroupsDone(false),
+  myIsMinMaxDone(false)
 {
   myFileInfo.setFile(QString(theFileName.c_str()));
   myName = myFileInfo.baseName().latin1();
@@ -934,6 +952,10 @@ VISU_Convertor*
 VISU_MedConvertor
 ::BuildEntities()
 {
+  if(myIsEntitiesDone)
+    return this;
+
+  TSetIsDone aSetIsDone(myIsEntitiesDone);
   TTimerLog aTimerLog(MYDEBUG,"BuildEntities");
   MED::PWrapper aMed = MED::CrWrapper(myFileInfo.absFilePath().latin1());
 
@@ -1005,6 +1027,10 @@ VISU_Convertor*
 VISU_MedConvertor
 ::BuildFields()
 {
+  if(myIsFieldsDone)
+    return this;
+
+  TSetIsDone aSetIsDone(myIsFieldsDone);
   TTimerLog aTimerLog(MYDEBUG,"BuildFields");
   MED::PWrapper aMed = MED::CrWrapper(myFileInfo.absFilePath().latin1());
 
@@ -1062,6 +1088,10 @@ VISU_Convertor*
 VISU_MedConvertor
 ::BuildMinMax()
 {
+  if(myIsMinMaxDone)
+    return this;
+
+  TSetIsDone aSetIsDone(myIsMinMaxDone);
   TTimerLog aTimerLog(MYDEBUG,"BuildMinMax");
   MED::PWrapper aMed = MED::CrWrapper(myFileInfo.absFilePath().latin1());
 
@@ -1229,6 +1259,10 @@ VISU_Convertor*
 VISU_MedConvertor
 ::BuildGroups()
 {
+  if(myIsGroupsDone)
+    return this;
+
+  TSetIsDone aSetIsDone(myIsGroupsDone);
   TTimerLog aTimerLog(MYDEBUG,"BuildGroups");
   MED::PWrapper aMed = MED::CrWrapper(myFileInfo.absFilePath().latin1());
 
index 43416b95cf0a6687194cbfb03c0781a164e2bb14..082c237db1eff4ae5a9b1ec995a1cbb803aa0a77 100644 (file)
@@ -170,6 +170,11 @@ class VISU_MedConvertor: public VISU_Convertor_impl
   VISU_MedConvertor();
   VISU_MedConvertor(const VISU_MedConvertor&);
   
+  bool myIsEntitiesDone;
+  bool myIsFieldsDone;
+  bool myIsGroupsDone;
+  bool myIsMinMaxDone;
+
 public:
   VISU_MedConvertor(const std::string& theFileName);
 
index 77413b197499196af361282f86a8e30f19ed158d..45dc68bcc768c0fe181b93ffa050a39ba6c49ed8 100644 (file)
@@ -162,6 +162,11 @@ namespace VISU{
   }
 
 
+  Result_ptr VISU_Gen_i::CreateResult(const char* theFileName){
+    return myVisuGen->CreateResult(theFileName);
+  }
+
+
   Result_ptr VISU_Gen_i::CopyAndImportFile(const char* theFileName){
     return myVisuGen->CopyAndImportFile(theFileName);
   }
index fbcc3b48566d514c4d1fcc1a530d787c9081e39e..d9c665ac349c8dd55080c6cd4ebfb27cfe96ac1b 100644 (file)
@@ -57,6 +57,7 @@ namespace VISU{
 
     //Create Result
     virtual Result_ptr ImportFile(const char* theFileName);
+    virtual Result_ptr CreateResult(const char* theFileName);
     virtual Result_ptr CopyAndImportFile(const char* theFileName);
     virtual Result_ptr ImportMed(SALOMEDS::SObject_ptr theMedSObject);
     virtual Result_ptr ImportMedField(SALOME_MED::FIELD_ptr theField);