diff --git a/Geo/GFace.cpp b/Geo/GFace.cpp index c78cb27e98e7755686fc8019862f830d9974e706..69ae4106583ba3465b4401412f9f665f407a87ca 100644 --- a/Geo/GFace.cpp +++ b/Geo/GFace.cpp @@ -75,11 +75,11 @@ int GFace::getMeshSizeFromBoundary() const int GFace::delEdge(GEdge *edge) { - const auto found = std::find(begin(l_edges), end(l_edges), edge); + const auto found = std::find(l_edges.begin(), l_edges.end(), edge); - if(found != end(l_edges)) { l_edges.erase(found); } + if(found != l_edges.end()) { l_edges.erase(found); } - const auto pos = std::distance(begin(l_edges), found); + const auto pos = std::distance(l_edges.begin(), found); if(l_dirs.empty()) { return 0; } @@ -89,16 +89,14 @@ int GFace::delEdge(GEdge *edge) } const auto orientation = l_dirs.at(pos); - l_dirs.erase(std::next(begin(l_dirs), pos)); - return orientation; } void GFace::setBoundEdges(const std::vector<int> &tagEdges) { std::vector<GEdge *> e; - for(std::size_t i = 0; i != tagEdges.size(); i++) { + for(std::size_t i = 0; i < tagEdges.size(); i++) { GEdge *ge = model()->getEdgeByTag(tagEdges[i]); if(ge) { e.push_back(ge); @@ -120,12 +118,14 @@ void GFace::setBoundEdges(const std::vector<int> &tagEdges, Msg::Error("Wrong number of curve signs in surface %d", tag()); setBoundEdges(tagEdges); } - for(std::vector<int>::size_type i = 0; i != tagEdges.size(); i++) { + for(std::vector<int>::size_type i = 0; i < tagEdges.size(); i++) { GEdge *ge = model()->getEdgeByTag(tagEdges[i]); if(ge) { - l_edges.push_back(ge); - l_dirs.push_back(signEdges[i]); - ge->addFace(this); + if(std::find(l_edges.begin(), l_edges.end(), ge) == l_edges.end()) { + l_edges.push_back(ge); + l_dirs.push_back(signEdges[i]); + ge->addFace(this); + } } else { Msg::Error("Unknown curve %d in surface %d", tagEdges[i], tag()); diff --git a/Geo/GRegion.cpp b/Geo/GRegion.cpp index 399fe4a25cc2eed8c5e82c3d297b77fb7fb3e454..19dc6a17ddf2264fc5fbc1930dda85241fb3ded1 100644 --- a/Geo/GRegion.cpp +++ b/Geo/GRegion.cpp @@ -268,11 +268,11 @@ void GRegion::setColor(unsigned int val, bool recursive) int GRegion::delFace(GFace *face) { - const auto found = std::find(begin(l_faces), end(l_faces), face); + const auto found = std::find(l_faces.begin(), l_faces.end(), face); - if(found != end(l_faces)) { l_faces.erase(found); } + if(found != l_faces.end()) { l_faces.erase(found); } - const auto pos = std::distance(begin(l_faces), found); + const auto pos = std::distance(l_faces.begin(), found); if(l_dirs.empty()) { return 0; } @@ -283,7 +283,7 @@ int GRegion::delFace(GFace *face) const auto orientation = l_dirs.at(pos); - l_dirs.erase(std::next(begin(l_dirs), pos)); + l_dirs.erase(std::next(l_dirs.begin(), pos)); return orientation; } @@ -291,10 +291,12 @@ int GRegion::delFace(GFace *face) void GRegion::setBoundFaces(const std::set<int> &tagFaces) { for(auto it = tagFaces.begin(); it != tagFaces.end(); ++it) { - GFace *face = model()->getFaceByTag(*it); - if(face) { - l_faces.push_back(face); - face->addRegion(this); + GFace *gf = model()->getFaceByTag(*it); + if(gf) { + if(std::find(l_faces.begin(), l_faces.end(), gf) == l_faces.end()) { + l_faces.push_back(gf); + gf->addRegion(this); + } } else { Msg::Error("Unknown surface %d in volume %d", *it, tag()); @@ -312,11 +314,13 @@ void GRegion::setBoundFaces(const std::vector<int> &tagFaces, setBoundFaces(tags); } for(std::size_t i = 0; i != tagFaces.size(); i++) { - GFace *face = model()->getFaceByTag(tagFaces[i]); - if(face) { - l_faces.push_back(face); - face->addRegion(this); - l_dirs.push_back(signFaces[i]); + GFace *gf = model()->getFaceByTag(tagFaces[i]); + if(gf) { + if(std::find(l_faces.begin(), l_faces.end(), gf) == l_faces.end()) { + l_faces.push_back(gf); + gf->addRegion(this); + l_dirs.push_back(signFaces[i]); + } } else { Msg::Error("Unknown surface %d in volume %d", tagFaces[i], tag());