Skip to content
Snippets Groups Projects
Commit e4544050 authored by Ali Can Demiralp's avatar Ali Can Demiralp
Browse files

Added vtu to vti converter.

parent 85f9023c
No related branches found
No related tags found
No related merge requests found
*build/*
\ No newline at end of file
################################################## Project ##################################################
cmake_minimum_required(VERSION 3.10 FATAL_ERROR)
project (vtu_to_vti_converter VERSION 1.0 LANGUAGES C CXX)
list (APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake)
set_property (GLOBAL PROPERTY USE_FOLDERS ON)
set (CMAKE_CXX_STANDARD 17)
include (set_max_warning_level)
set_max_warning_level ()
################################################## Sources ##################################################
file(GLOB_RECURSE PROJECT_HEADERS include/*.h include/*.hpp)
file(GLOB_RECURSE PROJECT_SOURCES source/*.c source/*.cpp)
file(GLOB_RECURSE PROJECT_CMAKE_UTILS cmake/*.cmake)
file(GLOB_RECURSE PROJECT_MISC *.md *.txt)
set (PROJECT_FILES
${PROJECT_HEADERS}
${PROJECT_SOURCES}
${PROJECT_CMAKE_UTILS}
${PROJECT_MISC})
include (assign_source_group)
assign_source_group(${PROJECT_FILES})
################################################## Dependencies ##################################################
include(import_library)
find_package(VTK REQUIRED NO_MODULE)
include (${VTK_USE_FILE})
list (APPEND PROJECT_LIBRARIES ${VTK_LIBRARIES})
################################################## Targets ##################################################
add_executable(${PROJECT_NAME} ${PROJECT_FILES})
target_include_directories(${PROJECT_NAME} PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>
$<INSTALL_INTERFACE:include> PRIVATE source)
target_include_directories(${PROJECT_NAME} PUBLIC ${PROJECT_INCLUDE_DIRS})
target_link_libraries (${PROJECT_NAME} PUBLIC ${PROJECT_LIBRARIES})
target_compile_definitions(${PROJECT_NAME} PUBLIC ${PROJECT_COMPILE_DEFINITIONS})
set_target_properties (${PROJECT_NAME} PROPERTIES LINKER_LANGUAGE CXX)
vtk_module_autoinit (TARGETS ${PROJECT_NAME} MODULES ${VTK_LIBRARIES})
if(NOT BUILD_SHARED_LIBS)
string (TOUPPER ${PROJECT_NAME} PROJECT_NAME_UPPER)
set_target_properties(${PROJECT_NAME} PROPERTIES COMPILE_FLAGS -D${PROJECT_NAME_UPPER}_STATIC)
endif()
################################################## Installation ##################################################
install(TARGETS ${PROJECT_NAME} EXPORT ${PROJECT_NAME}-config
RUNTIME DESTINATION bin)
install(DIRECTORY include/ DESTINATION include)
install(EXPORT ${PROJECT_NAME}-config DESTINATION cmake)
export (TARGETS ${PROJECT_NAME} FILE ${PROJECT_NAME}-config.cmake)
# Assigns the given files to source groups identical to their location.
function(assign_source_group)
foreach(_SOURCE IN ITEMS ${ARGN})
if (IS_ABSOLUTE "${_SOURCE}")
file(RELATIVE_PATH _SOURCE_REL "${CMAKE_CURRENT_SOURCE_DIR}" "${_SOURCE}")
else()
set(_SOURCE_REL "${_SOURCE}")
endif()
get_filename_component(_SOURCE_PATH "${_SOURCE_REL}" PATH)
if(WIN32)
string(REPLACE "/" "\\" _SOURCE_PATH_MSVC "${_SOURCE_PATH}")
source_group("${_SOURCE_PATH_MSVC}" FILES "${_SOURCE}")
else()
source_group("${_SOURCE_PATH}" FILES "${_SOURCE}")
endif()
endforeach()
endfunction(assign_source_group)
# Imports a library which is not built with cmake.
# The include directories are appended to the PROJECT_INCLUDE_DIRS variable.
# The libraries are appended to the PROJECT_LIBRARIES variable.
# Usage:
# Header Only:
# import_library(INCLUDE_DIRS)
# Identical Debug and Release:
# import_library(INCLUDE_DIRS LIBRARIES)
# Separate Debug and Release:
# import_library(INCLUDE_DIRS DEBUG_LIBRARIES RELEASE_LIBRARIES)
function(import_library INCLUDE_DIRS)
set (PROJECT_INCLUDE_DIRS ${PROJECT_INCLUDE_DIRS} ${${INCLUDE_DIRS}} PARENT_SCOPE)
set (_EXTRA_ARGS ${ARGN})
list(LENGTH _EXTRA_ARGS _EXTRA_ARGS_LENGTH)
if (_EXTRA_ARGS_LENGTH EQUAL 1)
list(GET _EXTRA_ARGS 0 _LIBRARIES)
set (PROJECT_LIBRARIES ${PROJECT_LIBRARIES} ${${_LIBRARIES}} PARENT_SCOPE)
elseif(_EXTRA_ARGS_LENGTH EQUAL 2)
list(GET _EXTRA_ARGS 0 _DEBUG_LIBRARIES )
list(GET _EXTRA_ARGS 1 _RELEASE_LIBRARIES)
set (PROJECT_LIBRARIES ${PROJECT_LIBRARIES} debug ${${_DEBUG_LIBRARIES}} optimized ${${_RELEASE_LIBRARIES}} PARENT_SCOPE)
endif ()
endfunction(import_library)
function(set_max_warning_level)
if(MSVC)
if(CMAKE_CXX_FLAGS MATCHES "/W[0-4]")
string(REGEX REPLACE "/W[0-4]" "/W4" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
else()
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4")
endif()
else()
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wno-long-long -pedantic")
endif()
endfunction()
\ No newline at end of file
#include <cstdint>
#include <string>
#include <vtkXMLImageDataWriter.h>
#include <vtkResampleToImage.h>
#include <vtkXMLUnstructuredGridReader.h>
// Usage: ./vtu_to_vti_converter [VTU_FILEPATH] [X_RESOLUTION] [Y_RESOLUTION] [Z_RESOLUTION].
std::int32_t main(std::int32_t argc, char** argv)
{
auto filepath = std::string(argv[1]);
auto reader = vtkSmartPointer<vtkXMLUnstructuredGridReader>::New();
auto converter = vtkSmartPointer<vtkResampleToImage> ::New();
auto writer = vtkSmartPointer<vtkXMLImageDataWriter> ::New();
reader ->SetFileName (filepath.c_str());
reader ->SetInputArrayToProcess(0, 0, 0, vtkDataObject::FIELD_ASSOCIATION_CELLS, "Q");
converter->SetInputConnection (reader->GetOutputPort());
converter->SetUseInputBounds (true);
converter->SetSamplingDimensions (std::stoi(argv[2]), std::stoi(argv[3]), std::stoi(argv[4]));
writer ->SetInputConnection (converter->GetOutputPort());
writer ->SetFileName ((filepath.substr(0, filepath.size() - 3) + std::string("vti")).c_str());
writer ->Update ();
return 0;
}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment