Index: trunk/SophyaPI/PIext/basexecut.cc
===================================================================
--- trunk/SophyaPI/PIext/basexecut.cc	(revision 1524)
+++ trunk/SophyaPI/PIext/basexecut.cc	(revision 1525)
@@ -410,4 +410,11 @@
                      tokens[6], tokens[7], tokens[8], tokens[9], true);
   }
+else if (kw == "vecplot") {
+  if (tokens.size() < 2) { 
+    cout << "Usage: vecplot nameVecX nameVecY [opt]" << endl;
+  }
+  while (tokens.size() < 3) tokens.push_back("");
+  mObjMgr->DisplayVector(tokens[0], tokens[1], tokens[2]);
+}
 
 // Obsolete : ne pas virer SVP, cmv 26/7/99
@@ -915,18 +922,18 @@
 kw = "disp";
 usage = "Displays an object \n Usage: disp nameobj [graphic_attributes]";
-usage += "\n  Related commands: surf nt2d nt3d ";  
+usage += "\n  Related commands: surf nt2d nt3d vecplot";  
 mpiac->RegisterCommand(kw, usage, this, "Obj. Display");
 kw = "imag";
 usage = "Displays an object as an image \n Usage: imag nameobj [graphic_attributes]";
-usage += "\n  Related commands: disp surf nt2d nt3d ";  
+usage += "\n  Related commands: disp surf nt2d nt3d vecplot";  
 mpiac->RegisterCommand(kw, usage, this, "Obj. Display");
 kw = "surf";
 usage = "Displays an object as a 3D surface \n Usage: surf nameobj [graphic_attributes]";
-usage += "\n  Related commands: disp nt2d nt3d ";  
+usage += "\n  Related commands: disp nt2d nt3d vecplot";  
 mpiac->RegisterCommand(kw, usage, this, "Obj. Display");
 kw = "nt2d";
 usage = "Displays Points (X-Y) [with error-bar / Weight / Label ] from an NTuple ";
 usage += "\n Usage : nt2d nameobj varx vary [errx erry wt label graphic_attributes]";
-usage += "\n  Related commands: disp  surf  nt3d  gfd2d ";  
+usage += "\n  Related commands: disp  surf  nt3d  gfd2d vecplot";  
 mpiac->RegisterCommand(kw, usage, this, "Obj. Display");
 kw = "nt3d";
@@ -934,4 +941,9 @@
 usage += "\n Usage : nt3d nameobj varx vary varz [errx erry errz wt label graphic_attributes]";
 usage += "\n  Related commands: disp  surf  nt2d gfd3d ";  
+mpiac->RegisterCommand(kw, usage, this, "Obj. Display");
+kw = "vecplot";
+usage = "Displays Points (X-Y) with coordinates defined by two vectors ";
+usage += "\n Usage : vecplot nameVecX nameVecY [graphic_attributes]";
+usage += "\n  Related commands: disp nt2d ";  
 mpiac->RegisterCommand(kw, usage, this, "Obj. Display");
 
Index: trunk/SophyaPI/PIext/nobjmgr.cc
===================================================================
--- trunk/SophyaPI/PIext/nobjmgr.cc	(revision 1524)
+++ trunk/SophyaPI/PIext/nobjmgr.cc	(revision 1525)
@@ -24,4 +24,7 @@
 #else
 #include "fitsautoreader.h"
+#include "tvector.h"
+#include "pitvmaad.h"
+#include "piscdrawwdg.h"
 #endif
 
@@ -1361,4 +1364,79 @@
 }
 
+/* --Methode-- */ 
+void NamedObjMgr::DisplayVector(string & nomvx, string& nomvy, string dopt)
+//	Pour l'affichage 2-D de points avec coordonnees definies par deux vecteurs
+//   nomvx et nomvy
+{
+#ifdef SANS_EVOLPLANCK
+  cerr << " NamedObjMgr::DisplayVector() Error: Not implemented with PEIDA " << endl;
+#else
+
+if(!myImgApp) return; 
+
+AnyDataObj* obj;
+obj = GetObj(nomvx);
+if(obj == NULL) {
+  cout << "NamedObjMgr::DisplayVector() Error , No such object " << nomvx << endl; 
+  return;
+}
+Vector * vx = dynamic_cast<Vector *>(obj);
+if (vx == NULL) {
+  cout << "NamedObjMgr::DisplayVector() Error " << nomvx << " not a Vector ! " << endl;
+  return;  
+}
+
+obj = GetObj(nomvy);
+if(obj == NULL) {
+  cout << "NamedObjMgr::DisplayVector() Error , No such object " << nomvy << endl; 
+  return;
+}
+Vector * vy = dynamic_cast<Vector *>(obj);
+if (vy == NULL) {
+  cout << "NamedObjMgr::DisplayVector() Error " << nomvy << " not a Vector ! " << endl;
+  return;  
+}
+
+
+Vector * cvx, * cvy;
+
+if (vx->Size() != vy->Size()) {
+  cout << "NamedObjMgr::DisplayVector() Warning / Vx.Size() != Vy.Size() " << endl;
+  if (vx->Size() < vy->Size()) {
+    cvx = new Vector(*vx);
+    cvy = new Vector(vy->SubVector(Range(0, 0, vx->Size()-1)));
+  }
+  else {
+    cvx = new Vector(vx->SubVector(Range(0, 0, vy->Size()-1)));
+    cvy = new Vector(*vy);
+  }
+}
+else {
+  cvx = new Vector(*vx);
+  cvy = new Vector(*vy);
+}
+
+POVectorAdapter * avx = new POVectorAdapter(cvx, true);
+POVectorAdapter * avy = new POVectorAdapter(cvy, true);
+PIYfXDrawer * vxydrw = new PIYfXDrawer(avx, avy, true);
+
+// Decodage des options classiques
+bool fgsr = true;
+int opt = servnobjm->DecodeDispOption(dopt, fgsr);
+string nx,rx;
+ParseObjectName(nomvx, rx, nx);
+string ny,ry;
+ParseObjectName(nomvy, ry, ny);
+
+string title = ny + " (Y) vs. " + nx + " (X)";
+// display 2D
+int wrsid = myImgApp->DispScDrawer(vxydrw, title, opt);
+
+if (fgsr) myImgApp->RestoreGraphicAtt(); 
+return;
+
+#endif
+}
+
 /* --Methode-- 
 void NamedObjMgr::DisplayImage(string& nom, string dopt)
Index: trunk/SophyaPI/PIext/nobjmgr.h
===================================================================
--- trunk/SophyaPI/PIext/nobjmgr.h	(revision 1524)
+++ trunk/SophyaPI/PIext/nobjmgr.h	(revision 1525)
@@ -90,4 +90,6 @@
                                    string& err, string dopt="");
 
+  virtual void          DisplayVector(string & nomvx, string& nomvy, string dopt="");
+
   virtual void		SetGraphicAttributes(string gratt="");
   virtual void		SetGraphicWinZone(int nzx, int nzy, bool fcr=false);
