diff --git a/Applications/DataExplorer/VtkVis/VtkVisImageItem.cpp b/Applications/DataExplorer/VtkVis/VtkVisImageItem.cpp index e149727d410b73227267b9adc427da8ee7ef1477..ccfbf3b1f12af3188dfd4525b95320c405262423 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 40e18a8ed777147c7b9cb0b29cc4b9face07a31e..da88986b71470c66ffaabb1c84b7e4e2df42b04a 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 07962740387d78356a519a8363d06fe4e140cee2..bdfa3c975112014e0a38c53728613705c5771fc5 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; }