MeshLib::Mesh* readMeshFromFile(const std::string &file_name) { if (BaseLib::hasFileExtension("msh", file_name)) { Legacy::MeshIO meshIO; return meshIO.loadMeshFromFile(file_name); } if (BaseLib::hasFileExtension("vtu", file_name)) return BoostVtuInterface::readVTUFile(file_name); ERR("readMeshFromFile(): Unknown mesh file format in file %s.", file_name.c_str()); return nullptr; }
MeshLib::Mesh* readMeshFromFile(const std::string &file_name) { #ifdef USE_PETSC NodePartitionedMeshReader read_pmesh(PETSC_COMM_WORLD); std::string const file_name_base = boost::erase_last_copy(file_name, ".vtk"); return read_pmesh.read(file_name_base); #else if (BaseLib::hasFileExtension("msh", file_name)) { Legacy::MeshIO meshIO; return meshIO.loadMeshFromFile(file_name); } if (BaseLib::hasFileExtension("vtu", file_name)) return VtuInterface::readVTUFile(file_name); ERR("readMeshFromFile(): Unknown mesh file format in file %s.", file_name.c_str()); return nullptr; #endif }
bool XmlGspInterface::write() { GeoLib::GEOObjects* geoObjects = _project.getGEOObjects(); QFileInfo fi(QString::fromStdString(_filename)); std::string path((fi.absolutePath()).toStdString() + "/"); _out << "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n"; // xml definition _out << "<?xml-stylesheet type=\"text/xsl\" href=\"OpenGeoSysProject.xsl\"?>\n\n"; // stylefile definition QDomDocument doc("OGS-PROJECT-DOM"); QDomElement root = doc.createElement("OpenGeoSysProject"); root.setAttribute( "xmlns:ogs", "http://www.opengeosys.org" ); root.setAttribute( "xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance" ); root.setAttribute( "xsi:noNamespaceSchemaLocation", "http://www.opengeosys.org/images/xsd/OpenGeoSysProject.xsd" ); doc.appendChild(root); // GML std::vector<std::string> geoNames; geoObjects->getGeometryNames(geoNames); for (std::vector<std::string>::const_iterator it(geoNames.begin()); it != geoNames.end(); ++it) { // write GLI file XmlGmlInterface gml(*geoObjects); std::string name(*it); gml.setNameForExport(name); if (gml.writeToFile(std::string(path + name + ".gml"))) { // write entry in project file QDomElement geoTag = doc.createElement("geo"); root.appendChild(geoTag); QDomElement fileNameTag = doc.createElement("file"); geoTag.appendChild(fileNameTag); QDomText fileNameText = doc.createTextNode(QString::fromStdString(name + ".gml")); fileNameTag.appendChild(fileNameText); } } // MSH const std::vector<MeshLib::Mesh*> msh_vec = _project.getMeshObjects(); for (std::vector<MeshLib::Mesh*>::const_iterator it(msh_vec.begin()); it != msh_vec.end(); ++it) { // write mesh file Legacy::MeshIO meshIO; meshIO.setMesh(*it); std::string fileName(path + (*it)->getName()); meshIO.writeToFile(fileName); // write entry in project file QDomElement mshTag = doc.createElement("msh"); root.appendChild(mshTag); QDomElement fileNameTag = doc.createElement("file"); mshTag.appendChild(fileNameTag); QDomText fileNameText = doc.createTextNode(QString::fromStdString((*it)->getName())); fileNameTag.appendChild(fileNameText); } // STN std::vector<std::string> stnNames; geoObjects->getStationVectorNames(stnNames); for (std::vector<std::string>::const_iterator it(stnNames.begin()); it != stnNames.end(); ++it) { // write STN file XmlStnInterface stn(*geoObjects); std::string name(*it); stn.setNameForExport(name); if (stn.writeToFile(path + name + ".stn")) { // write entry in project file QDomElement geoTag = doc.createElement("stn"); root.appendChild(geoTag); QDomElement fileNameTag = doc.createElement("file"); geoTag.appendChild(fileNameTag); QDomText fileNameText = doc.createTextNode(QString::fromStdString(name + ".stn")); fileNameTag.appendChild(fileNameText); } else ERR("XmlGspInterface::writeFile(): Error writing stn-file \"%s\".", name.c_str()); } std::string xml = doc.toString().toStdString(); _out << xml; return true; }