From d255896603f3a68319e85ecfd58bbc115e3c68b0 Mon Sep 17 00:00:00 2001 From: rahv <karsten.rink@ufz.de> Date: Mon, 9 Feb 2015 15:22:41 +0100 Subject: [PATCH] added correct handling of file extension during vtk export --- .../DataExplorer/VtkVis/VtkVisImageItem.cpp | 9 ++++--- .../VtkVis/VtkVisPipelineView.cpp | 2 +- .../VtkVis/VtkVisPointSetItem.cpp | 26 +++++++++---------- 3 files changed, 20 insertions(+), 17 deletions(-) diff --git a/Applications/DataExplorer/VtkVis/VtkVisImageItem.cpp b/Applications/DataExplorer/VtkVis/VtkVisImageItem.cpp index e149727d410..ccfbf3b1f12 100644 --- a/Applications/DataExplorer/VtkVis/VtkVisImageItem.cpp +++ b/Applications/DataExplorer/VtkVis/VtkVisImageItem.cpp @@ -18,6 +18,8 @@ // ThirdParty/logog #include "logog/include/logog.hpp" +#include "BaseLib/FileTools.h" + #include "VtkAlgorithmProperties.h" #include "VtkGeoImageSource.h" @@ -140,15 +142,16 @@ void VtkVisImageItem::setVtkProperties(VtkAlgorithmProperties* vtkProps) int VtkVisImageItem::callVTKWriter(vtkAlgorithm* algorithm, const std::string &filename) const { + std::string file_name_cpy(filename); vtkImageAlgorithm* algID = dynamic_cast<vtkImageAlgorithm*>(algorithm); if (algID) { vtkSmartPointer<vtkXMLImageDataWriter> iWriter = vtkSmartPointer<vtkXMLImageDataWriter>::New(); iWriter->SetInputData(algID->GetOutputDataObject(0)); - std::string filenameWithExt = filename; - filenameWithExt.append(".vti"); - iWriter->SetFileName(filenameWithExt.c_str()); + if (BaseLib::getFileExtension(filename).compare("vti") != 0) + file_name_cpy.append(".vti"); + iWriter->SetFileName(file_name_cpy.c_str()); return iWriter->Write(); } ERR("VtkVisPipelineItem::writeToFile() - Unknown data type."); diff --git a/Applications/DataExplorer/VtkVis/VtkVisPipelineView.cpp b/Applications/DataExplorer/VtkVis/VtkVisPipelineView.cpp index 40e18a8ed77..da88986b714 100644 --- a/Applications/DataExplorer/VtkVis/VtkVisPipelineView.cpp +++ b/Applications/DataExplorer/VtkVis/VtkVisPipelineView.cpp @@ -142,7 +142,7 @@ void VtkVisPipelineView::exportSelectedPipelineItemAsVtk() QModelIndex idx = this->selectionModel()->currentIndex(); QString filename = QFileDialog::getSaveFileName(this, "Export object to vtk-file", settings.value("lastExportedFileDirectory").toString(), - "All files (* *.*)"); + "VTK file (*.*)"); if (!filename.isEmpty()) { static_cast<VtkVisPipelineItem*>(static_cast<VtkVisPipeline*>(this->model())-> diff --git a/Applications/DataExplorer/VtkVis/VtkVisPointSetItem.cpp b/Applications/DataExplorer/VtkVis/VtkVisPointSetItem.cpp index 07962740387..bdfa3c97511 100644 --- a/Applications/DataExplorer/VtkVis/VtkVisPointSetItem.cpp +++ b/Applications/DataExplorer/VtkVis/VtkVisPointSetItem.cpp @@ -25,6 +25,8 @@ // ThirdParty/logog #include "logog/include/logog.hpp" +#include "BaseLib/FileTools.h" + #include "VtkAlgorithmProperties.h" #include "VtkCompositeFilter.h" #include "VtkCompositeContourFilter.h" @@ -212,33 +214,31 @@ void VtkVisPointSetItem::setVtkProperties(VtkAlgorithmProperties* vtkProps) int VtkVisPointSetItem::callVTKWriter(vtkAlgorithm* algorithm, const std::string &filename) const { + std::string file_name_cpy(filename); vtkPolyDataAlgorithm* algPD = dynamic_cast<vtkPolyDataAlgorithm*>(algorithm); - vtkUnstructuredGridAlgorithm* algUG = dynamic_cast<vtkUnstructuredGridAlgorithm*>(algorithm); if (algPD) { -// vtkGenericDataObjectWriter* pdWriter = vtkGenericDataObjectWriter::New(); vtkSmartPointer<vtkXMLPolyDataWriter> pdWriter = vtkSmartPointer<vtkXMLPolyDataWriter>::New(); pdWriter->SetInputData(algPD->GetOutputDataObject(0)); - //pdWriter->SetDataModeToAscii(); - //pdWriter->SetCompressorTypeToNone(); - std::string filenameWithExt = filename; - filenameWithExt.append(".vtp"); - pdWriter->SetFileName(filenameWithExt.c_str()); + if (BaseLib::getFileExtension(filename).compare("vtp") != 0) + file_name_cpy.append(".vtp"); + pdWriter->SetFileName(file_name_cpy.c_str()); return pdWriter->Write(); } - else if (algUG) + + vtkUnstructuredGridAlgorithm* algUG = dynamic_cast<vtkUnstructuredGridAlgorithm*>(algorithm); + if (algUG) { vtkSmartPointer<vtkXMLUnstructuredGridWriter> ugWriter = vtkSmartPointer<vtkXMLUnstructuredGridWriter>::New(); ugWriter->SetInputData(algUG->GetOutputDataObject(0)); - //ugWriter->SetDataModeToAscii(); - //ugWriter->SetCompressorTypeToNone(); - std::string filenameWithExt = filename; - filenameWithExt.append(".vtu"); - ugWriter->SetFileName(filenameWithExt.c_str()); + if (BaseLib::getFileExtension(filename).compare("vtu") != 0) + file_name_cpy.append(".vtu"); + ugWriter->SetFileName(file_name_cpy.c_str()); return ugWriter->Write(); } + WARN("VtkVisPipelineItem::writeToFile(): Unknown data type."); return 0; } -- GitLab