diff --git a/FileIO/Legacy/OGSIOVer4.cpp b/FileIO/Legacy/OGSIOVer4.cpp index d7de162b91c5b0f22201dc11ba28545ccbd4c86f..39fafc11b7d840da4bfb4156778656dee9c48af8 100644 --- a/FileIO/Legacy/OGSIOVer4.cpp +++ b/FileIO/Legacy/OGSIOVer4.cpp @@ -616,6 +616,42 @@ void writeGLIFileV4 (const std::string& fname, } } + // writing surfaces as TIN files + const std::string path = BaseLib::extractPath(fname); + std::size_t sfcs_cnt (0); + const GeoLib::SurfaceVec* sfcs_vec (geo.getSurfaceVecObj (geo_name])); + if (sfcs_vec) { + const std::vector<GeoLib::Surface*>* sfcs (sfcs_vec->getVector()); + for (std::size_t k(0); k < sfcs->size(); k++) + { + os << "#SURFACE" << "\n"; + std::string sfc_name; + if (sfcs_vec->getNameOfElementByID (sfcs_cnt, sfc_name)) { + os << "\t$NAME " << "\n" << "\t\t" << sfc_name << "\n"; + } else { + os << "\t$NAME " << "\n" << "\t\t" << sfcs_cnt << "\n"; + sfc_name = std::to_string (sfcs_cnt); + } + sfc_name += ".tin"; + os << "\t$TIN" << "\n"; + os << "\t\t" << sfc_name << "\n"; + // create tin file + sfc_name = path + sfc_name; + std::ofstream tin_os (sfc_name.c_str()); + GeoLib::Surface const& sfc (*(*sfcs)[k]); + const std::size_t n_tris (sfc.getNTriangles()); + for (std::size_t l(0); l < n_tris; l++) { + GeoLib::Triangle const& tri (*(sfc[l])); + tin_os << l << " " << *(tri.getPoint(0)) << " " << + *(tri.getPoint(1)) << " " << *(tri.getPoint(2)) << + "\n"; + } + tin_os.close(); + + sfcs_cnt++; + } + } + os << "#STOP" << "\n"; os.close (); }