本文主要是介绍VTP转OFF,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
将.vtp
格式的文件转为.off
格式:
1. CMakeLists.txt
cmake_minimum_required(VERSION 3.17)PROJECT(VtpToOFF)find_package(VTK REQUIRED)
include(${VTK_USE_FILE})add_executable(VtpToOFF MACOSX_BUNDLE VtpToOFF vtkOFFWriter.cxx)if(VTK_LIBRARIES)target_link_libraries(VtpToOFF ${VTK_LIBRARIES})
else()target_link_libraries(VtpToOFF vtkHybrid)
endif()
2. VTKOffWriter.h
#ifndef __vtkOFFWriter_h
#define __vtkOFFWriter_h#include "vtkPolyDataWriter.h"class vtkOFFWriter : public vtkPolyDataWriter
{
public:static vtkOFFWriter *New();vtkTypeMacro(vtkOFFWriter,vtkPolyDataWriter);void PrintSelf(ostream& os, vtkIndent indent);protected:vtkOFFWriter();~vtkOFFWriter();void WriteData();void WriteAsciiOFF(vtkPolyData *pd);void WriteBinaryOFF(vtkPolyData *pd);private:vtkOFFWriter(const vtkOFFWriter&); // Not implemented.void operator=(const vtkOFFWriter&); // Not implemented.
};#endif
3. VTKOffWriter.cxx
#include <vtkPolyData.h>
#include <vtkSmartPointer.h>
#include <vtksys/SystemTools.hxx>
#include <vtkXMLPolyDataReader.h>#include "vtkOFFWriter.h"#include <string>int main(int argc, char *argv[])
{if (argc != 2){std::cerr << "Usage: " << argv[0] << " Filename(.vtp)" << std::endl;return EXIT_FAILURE;}std::string inputFilename = argv[1];std::string outputFilename= vtksys::SystemTools::GetFilenameWithoutExtension(inputFilename) + ".off";vtkSmartPointer<vtkXMLPolyDataReader> reader =vtkSmartPointer<vtkXMLPolyDataReader>::New();reader->SetFileName(inputFilename.c_str());reader->Update();vtkSmartPointer<vtkOFFWriter> writer =vtkSmartPointer<vtkOFFWriter>::New();writer->SetFileName(outputFilename.c_str());writer->SetInputConnection(reader->GetOutputPort());writer->Write();return EXIT_SUCCESS;
}
4. VtpToOff.cxx
#include <vtkPolyData.h>
#include <vtkSmartPointer.h>
#include <vtksys/SystemTools.hxx>
#include <vtkXMLPolyDataReader.h>#include "vtkOFFWriter.h"#include <string>int main(int argc, char *argv[])
{if (argc != 2){std::cerr << "Usage: " << argv[0] << " Filename(.vtp)" << std::endl;return EXIT_FAILURE;}std::string inputFilename = argv[1];std::string outputFilename= vtksys::SystemTools::GetFilenameWithoutExtension(inputFilename) + ".off";vtkSmartPointer<vtkXMLPolyDataReader> reader =vtkSmartPointer<vtkXMLPolyDataReader>::New();reader->SetFileName(inputFilename.c_str());reader->Update();vtkSmartPointer<vtkOFFWriter> writer =vtkSmartPointer<vtkOFFWriter>::New();writer->SetFileName(outputFilename.c_str());writer->SetInputConnection(reader->GetOutputPort());writer->Write();return EXIT_SUCCESS;
}
这篇关于VTP转OFF的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!