]> SALOME platform Git repositories - modules/smesh.git/commitdiff
Salome HOME
Implementation of 2.6.3/2.6.4 improvements
authorema <elena.mozokhina@opencascade.com>
Tue, 25 Nov 2014 12:56:20 +0000 (15:56 +0300)
committerema <elena.mozokhina@opencascade.com>
Tue, 25 Nov 2014 12:56:20 +0000 (15:56 +0300)
idl/SMESH_Mesh.idl
src/SMESH_I/SMESH_Filter_i.hxx
src/SMESH_I/SMESH_Group_i.hxx
src/SMESH_I/SMESH_MeshEditor_i.cxx
src/SMESH_I/SMESH_Mesh_i.cxx
src/SMESH_I/SMESH_Mesh_i.hxx
src/SMESH_I/SMESH_subMesh_i.hxx

index 593272ab041154ef960366d3ce0ec1811e91858a..ead2ef3ef6b4695109350b35f154be43b8987328 100644 (file)
@@ -313,6 +313,10 @@ module SMESH
      * happen if mesh data is not yet fully loaded from the file of study.
      */
     boolean IsMeshInfoCorrect();
+    /*!
+     * Returns mesh unstructed grid information.
+     */
+    SALOMEDS::TMPFile GetVtkUgStream();
   };
 
   interface SMESH_Group;
index 92c4618df1bc21d77a11d057c435f77639c83331..14769b0886ad6e01b43555f30e1755ffc856da19 100644 (file)
@@ -952,7 +952,7 @@ namespace SMESH
     virtual SMESH::array_of_ElementType* GetTypes();
     virtual SMESH::SMESH_Mesh_ptr        GetMesh();
     virtual bool                         IsMeshInfoCorrect() { return true; }
-
+    virtual SALOMEDS::TMPFile* GetVtkUgStream(){ return NULL; }
     /*!
      * \brief Object notified on change of predicate
      */
index f08e51b2440772c3d89ebf24d132797766a2b968..6c6df5e32985368b133d256d4a890e71d7208f83 100644 (file)
@@ -95,6 +95,10 @@ class SMESH_I_EXPORT SMESH_GroupBase_i:
    * happen if mesh data is not yet fully loaded from the file of study.
    */
   virtual bool IsMeshInfoCorrect();
+  /*!
+   * Returns mesh unstructed grid information.
+   */
+  virtual SALOMEDS::TMPFile* GetVtkUgStream(){ return NULL; }
 
   // Internal C++ interface
   int GetLocalID() const { return myLocalID; }
index 763f976e4e758859ae76dff901ed5877fb8bd8c2..d3ef483327dbfbf736c4ee9721c3f97fccc4650e 100644 (file)
@@ -779,6 +779,7 @@ struct SMESH_MeshEditor_i::_IDSource : public virtual POA_SMESH::SMESH_IDSource,
     }
     return types._retn();
   }
+  SALOMEDS::TMPFile* GetVtkUgStream(){ return NULL; }
 };
 
 SMESH::SMESH_IDSource_ptr SMESH_MeshEditor_i::MakeIDSource(const SMESH::long_array& ids,
index a5ed1ac3cc05f09eda82048861185dcef174f648..e8febe2310da6ee861d634872414c0bd7b209720 100644 (file)
@@ -79,6 +79,8 @@
 #include <iostream>
 #include <sstream>
 
+#include <vtkUnstructuredGridWriter.h>
+
 // to pass CORBA exception through SMESH_TRY
 #define SMY_OWN_CATCH catch( SALOME::SALOME_Exception& se ) { throw se; }
 
@@ -5048,6 +5050,43 @@ void SMESH_Mesh_i::CollectMeshInfo(const SMDS_ElemIteratorPtr theItr,
   while (theItr->more())
     theInfo[ theItr->next()->GetEntityType() ]++;
 }
+//=============================================================================
+/*
+ * Returns mesh unstructed grid information.
+ */
+//=============================================================================
+
+SALOMEDS::TMPFile* SMESH_Mesh_i::GetVtkUgStream()
+{
+       if ( SMESHDS_Mesh* aMeshDS = _impl->GetMeshDS() )
+       {
+               vtkUnstructuredGrid* aCopy;
+               SMDS_UnstructuredGrid* aGrid = aMeshDS->getGrid();
+               if(aGrid)
+               {
+                       aCopy = aGrid->NewInstance();
+                       aCopy->ShallowCopy(aGrid);
+                       vtkUnstructuredGridWriter* aWriter = vtkUnstructuredGridWriter::New();
+                       aWriter->WriteToOutputStringOn();
+                       aWriter->SetInputData(aCopy);
+                       aWriter->SetFileTypeToBinary();
+                       aWriter->Write();
+                       char* str = aWriter->GetOutputString();
+                       int size = aWriter->GetOutputStringLength();
+
+                       //Allocate octect buffer of required size
+                       CORBA::Octet* OctetBuf = SALOMEDS::TMPFile::allocbuf(size);
+                       //Copy ostrstream content to the octect buffer
+                       memcpy(OctetBuf, str, size);
+                       //Create and return TMPFile
+                       SALOMEDS::TMPFile_var SeqFile = new SALOMEDS::TMPFile(size, size, OctetBuf, 1);
+
+                       aWriter->Delete();
+                       return SeqFile._retn();
+               }
+       }
+ return NULL;
+}
 
 //=============================================================================
 namespace /* Iterators used in SMESH_Mesh_i::GetElements(SMESH::SMESH_IDSource_var obj,
index e4c1b634a93defe52ba8eaf37db6d731178ff546..9c36bb40e37eea39660f56d8db8093d3b47e31e4 100644 (file)
@@ -650,6 +650,10 @@ public:
    * happen if mesh data is not yet fully loaded from the file of study.
    */
   bool IsMeshInfoCorrect();
+   /*!
+    * Returns mesh unstructed grid information.
+    */
+   virtual SALOMEDS::TMPFile* GetVtkUgStream();
 
   std::map<int, SMESH_subMesh_i*> _mapSubMesh_i; //NRI
   std::map<int, ::SMESH_subMesh*> _mapSubMesh;   //NRI
index 69fdcd72ec323a6ad002ac4fa2c39036fd2ee45f..bd8a9846e15abf27b1202025bc3f1a6960cf1fac 100644 (file)
@@ -110,6 +110,10 @@ public:
    * happen if mesh data is not yet fully loaded from the file of study.
    */
   virtual bool IsMeshInfoCorrect();
+  /*!
+   * Returns mesh unstructed grid information.
+   */
+  virtual SALOMEDS::TMPFile* GetVtkUgStream(){ return NULL; }
 
 
 protected: