diff --git a/Geo/MLine.h b/Geo/MLine.h
index 884fd7822e6b512755970852ed0f50da68ab3cb0..05f33059ec4c1cc93f295d43043412b036de8350 100644
--- a/Geo/MLine.h
+++ b/Geo/MLine.h
@@ -206,6 +206,13 @@ class MLineN : public MLine {
     Msg::Error("no tag matches a line with %d vertices", 8+_vs.size());
     return 0;
   }
+  virtual void reverse()
+  {
+    MVertex *tmp = _v[0]; _v[0] = _v[1]; _v[1] = tmp;
+    std::vector<MVertex*> inv;
+    inv.insert(inv.begin(), _vs.rbegin(), _vs.rend());
+    _vs = inv;
+  }
   virtual void getNode(int num, double &u, double &v, double &w) const
   {
     num < 2 ? MLine::getNode(num, u, v, w) : MElement::getNode(num, u, v, w);