diff --git a/Applications/FileIO/GocadIO/GocadTSurfaceReader.cpp b/Applications/FileIO/GocadIO/GocadTSurfaceReader.cpp index 53bce760347b17e6e9eb6717cdb49674336ff369..90a96a541977d218ad02d8e904f973bbb56c2de2 100644 --- a/Applications/FileIO/GocadIO/GocadTSurfaceReader.cpp +++ b/Applications/FileIO/GocadIO/GocadTSurfaceReader.cpp @@ -36,7 +36,7 @@ bool GocadTSurfaceReader::readFile() std::ifstream in(_file_name.c_str()); if (!in.is_open()) { - ERR("GocadTSurfaceReader::allSfc2Mesh(): Could not open file %s.", + ERR("GocadTSurfaceReader::readFile(): Could not open file %s.", _file_name.c_str()); return false; } @@ -171,6 +171,7 @@ void GocadTSurfaceReader::writeData(std::string const& file_name, } if (idx < _mesh_vec.size()) { + INFO("Writing mesh \"%s\"", file_name.c_str()); int data_mode = (write_binary) ? 2 : 0; bool compressed = (write_binary) ? true : false; MeshLib::IO::VtuInterface vtu(_mesh_vec[idx], data_mode, compressed); @@ -181,6 +182,13 @@ void GocadTSurfaceReader::writeData(std::string const& file_name, return; } +std::string getDelim(std::string const& str) +{ + std::size_t const bslash = str.find_first_of('\\'); + char const delim = (bslash == str.npos) ? '/' : '\\'; + return (str.back() == delim) ? "" : std::string(1, delim); +} + void GocadTSurfaceReader::writeData(std::string const& dir, bool write_binary) const { @@ -190,10 +198,11 @@ void GocadTSurfaceReader::writeData(std::string const& dir, return; } std::size_t const n_meshes(_mesh_vec.size()); + + std::string const delim = getDelim(dir); for (std::size_t i = 0; i < n_meshes; ++i) { - std::string const delim = (dir.back() == '/') ? "" : "/"; - writeData(dir + delim + _mesh_vec[i]->getName(), i, write_binary); + writeData(dir + delim + _mesh_vec[i]->getName() + ".vtu", i, write_binary); } } diff --git a/Applications/Utils/FileConverter/CMakeLists.txt b/Applications/Utils/FileConverter/CMakeLists.txt index f0fb66a6decd66e249ff36066350f6ccd70c3971..1aadd39f884916d58ca63d9dcb5866678b42ddcb 100644 --- a/Applications/Utils/FileConverter/CMakeLists.txt +++ b/Applications/Utils/FileConverter/CMakeLists.txt @@ -52,6 +52,14 @@ target_link_libraries(GocadSGridReader ${Boost_LIBRARIES} ) +add_executable(GocadTSurfaceReader GocadTSurfaceReader.cpp) +set_target_properties(GocadTSurfaceReader PROPERTIES FOLDER Utilities) +target_link_libraries(GocadTSurfaceReader + MeshLib + ApplicationsFileIO + ${Boost_LIBRARIES} +) + add_executable(Mesh2Raster MeshToRaster.cpp) set_target_properties(Mesh2Raster PROPERTIES FOLDER Utilities) target_link_libraries(Mesh2Raster MeshLib) diff --git a/Applications/Utils/FileConverter/GocadTSurfaceReader.cpp b/Applications/Utils/FileConverter/GocadTSurfaceReader.cpp new file mode 100644 index 0000000000000000000000000000000000000000..b9778c1d6cad6f9c8c7fb551236fd0672f435790 --- /dev/null +++ b/Applications/Utils/FileConverter/GocadTSurfaceReader.cpp @@ -0,0 +1,53 @@ +/** + * + * @copyright + * Copyright (c) 2012-2019, OpenGeoSys Community (http://www.opengeosys.org) + * Distributed under a Modified BSD License. + * See accompanying file LICENSE.txt or + * http://www.opengeosys.org/LICENSE.txt + */ + +#include <tclap/CmdLine.h> + +#include "BaseLib/BuildInfo.h" +#include "Applications/ApplicationsLib/LogogSetup.h" +#include "Applications/FileIO/GocadIO/GocadTSurfaceReader.h" + +int main(int argc, char* argv[]) +{ + ApplicationsLib::LogogSetup logog_setup; + + TCLAP::CmdLine cmd( + "Reads a Gocad triangular surfaces file (*.ts) and writes the " + "data into one or more VTU unstructured grids.\n\n" + "OpenGeoSys-6 software, version " + + BaseLib::BuildInfo::ogs_version + + ".\n" + "Copyright (c) 2012-2019, OpenGeoSys Community " + "(http://www.opengeosys.org)", + ' ', BaseLib::BuildInfo::ogs_version); + + TCLAP::ValueArg<std::string> input_arg( + "i", "input-file", "Gocad triangular surfaces file (*.ts)", true, "", + "filename.ts"); + cmd.add(input_arg); + + TCLAP::ValueArg<std::string> output_arg( + "o", "output-dir", "output directory", true, "", + "output dir"); + cmd.add(output_arg); + + TCLAP::ValueArg<bool> write_binary_arg( + "b", "write-binary", + "if set, OGS-Meshes will be written in binary format", + false, false, "true/false"); + cmd.add(write_binary_arg); + + cmd.parse(argc, argv); + + FileIO::Gocad::GocadTSurfaceReader gcts(input_arg.getValue()); + gcts.readFile(); + gcts.writeData(output_arg.getValue(), write_binary_arg.getValue()); + + return 0; +}