]> Creatis software - cpPlugins.git/blobdiff - lib/cpPlugins/Plugins/IO/MeshReader.cxx
...
[cpPlugins.git] / lib / cpPlugins / Plugins / IO / MeshReader.cxx
index 60bb57d4dfe4eb9c9f8dd95fa96ac0f7734e7b82..8dce5610aa72221d108b4f991b8b6767227c18dc 100644 (file)
@@ -1,8 +1,11 @@
 #include "MeshReader.h"
 #include <cpPlugins/Interface/Mesh.h>
 
+#include <cstring>
+
 #include <vtkPolyData.h>
 #include <vtkPolyDataReader.h>
+#include <vtkSTLReader.h>
 
 // -------------------------------------------------------------------------
 cpPlugins::IO::MeshReader::
@@ -67,16 +70,41 @@ _GD1( )
   // Get filename
   std::string fname = this->m_Parameters->GetOpenFileName( "FileName" );
 
-  vtkPolyDataReader* pdr = this->_CreateVTK< vtkPolyDataReader >( );
-  pdr->SetFileName( fname.c_str( ) );
-  pdr->Update( );
+  // Get file extension
+  std::istringstream fname_str( fname );
+  std::string token, ext;
+  while( std::getline( fname_str, token, '.' ) )
+    ext = token;
+  std::transform( ext.begin( ), ext.end( ), ext.begin( ), tolower );
+
+  // Real read
+  if( ext == "stl" )
+  {
+    vtkSTLReader* stlr = this->_CreateVTK< vtkSTLReader >( );
+    stlr->SetFileName( fname.c_str( ) );
+    stlr->Update( );
+
+    auto out = this->GetOutputData< cpPlugins::Interface::Mesh >( "Output" );
+    if( out != NULL )
+      out->SetVTK( stlr->GetOutput( ) );
+    else
+      return( "MeshReader: output not correctly created." );
+    return( "" );
+  }
+  else if( ext == "vtk" )
+  {
+    vtkPolyDataReader* pdr = this->_CreateVTK< vtkPolyDataReader >( );
+    pdr->SetFileName( fname.c_str( ) );
+    pdr->Update( );
+
+    auto out = this->GetOutputData< cpPlugins::Interface::Mesh >( "Output" );
+    if( out != NULL )
+      out->SetVTK( pdr->GetOutput( ) );
+    else
+      return( "MeshReader: output not correctly created." );
+    return( "" );
 
-  auto out = this->GetOutputData< cpPlugins::Interface::Mesh >( "Output" );
-  if( out != NULL )
-    out->SetVTK( pdr->GetOutput( ) );
-  else
-    return( "MeshReader: output not correctly created." );
-  return( "" );
+  } // fi
 }
 
 // eof - $RCSfile$