Index: trunk/SophyaPI/PIext/basexecut.cc
===================================================================
--- trunk/SophyaPI/PIext/basexecut.cc	(revision 484)
+++ trunk/SophyaPI/PIext/basexecut.cc	(revision 486)
@@ -340,22 +340,21 @@
 
 else if (kw == "nt2d") {
-  if (tokens.size() < 5) { cout << "Usage: nt2d nameobj varx vary errx erry opt" << endl; return(0); }
-  string opt = "n";
-  if (tokens.size() > 5)  opt = tokens[5];
+  if (tokens.size() < 3) { 
+    cout << "Usage: nt2d nameobj varx vary [errx erry wt label opt]" << endl; 
+    return(0); 
+  }
+  while (tokens.size() < 8) tokens.push_back("");
   string ph = "";
-  mObjMgr->DisplayNT(tokens[0],tokens[1],tokens[2], ph, tokens[3], tokens[4], ph, opt);
-  }
-else if (kw == "nt2dw") {
-  if (tokens.size() < 6) { cout << "Usage: nt2dw nameobj varx vary varz errx erry opt" << endl; return(0); }
-  string opt = "n";
-  if (tokens.size() > 6)  opt = tokens[6];
-  string ph = "";
-  mObjMgr->DisplayNT(tokens[0],tokens[1],tokens[2], tokens[3], tokens[4], tokens[5], ph, opt, false);
+  mObjMgr->DisplayNT(tokens[0], tokens[1], tokens[2], ph, tokens[3], tokens[4], ph, 
+                     tokens[5], tokens[6], tokens[7], false);
   }
 else if (kw == "nt3d") {
-  if (tokens.size() < 7) { cout << "Usage: nt3d nameobj varx vary varz errx erry errz opt" << endl; return(0); }
-  string opt = "n";
-  if (tokens.size() > 7)  opt = tokens[7];
-  mObjMgr->DisplayNT(tokens[0],tokens[1],tokens[2], tokens[3], tokens[4], tokens[5], tokens[6], opt, true);
+  if (tokens.size() < 7) { 
+    cout << "Usage: nt3d nameobj varx vary varz [errx erry errz wt label opt]" << endl; 
+    return(0); 
+  }
+  while (tokens.size() < 10) tokens.push_back("");
+  mObjMgr->DisplayNT(tokens[0], tokens[1], tokens[2], tokens[3], tokens[4], tokens[5],
+                     tokens[6], tokens[7], tokens[8], tokens[9], true);
   }
 
@@ -825,18 +824,12 @@
 mpiac->RegisterCommand(kw, usage, this, "Obj. Display");
 kw = "nt2d";
-usage = "Displays Points (X-Y) [with error-bars] from an NTuple ";
-usage += "\n Usage : nt2d nameobj varx vary [errx erry] [graphic_attributes]";
-usage += "\n  Related commands: disp  surf  nt2dw nt3d  gfd2d ";  
-mpiac->RegisterCommand(kw, usage, this, "Obj. Display");
-kw = "nt2dw";
-usage = "Displays Points (X-Y) with weight [with error-bars] from an NTuple ";
-usage += "\n Usage : nt2d nameobj varx vary varz [errx erry] [graphic_attributes]";
-usage += "\n  Related commands: disp  surf  nt2d nt3d  gfd2d ";  
+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 ";  
 mpiac->RegisterCommand(kw, usage, this, "Obj. Display");
 kw = "nt3d";
-usage = "Displays 3D-Points (X-Y-Z) [with error-bars] from an NTuple ";
-usage += "\n Usage : nt3d nameobj varx vary varz [errx erry errz] [graphic_attributes]";
-usage += "\n  Related commands: disp  surf  nt2d nt2dw  gfd3d ";  
-usage += "\n  Related commands: disp  surf  nt2d nt2dw ";  
+usage = "Displays 3D-Points (X-Y-Z) [with error-bars / Weight / Label ] from an NTuple ";
+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");
 
Index: trunk/SophyaPI/PIext/nobjmgr.cc
===================================================================
--- trunk/SophyaPI/PIext/nobjmgr.cc	(revision 484)
+++ trunk/SophyaPI/PIext/nobjmgr.cc	(revision 486)
@@ -1021,5 +1021,6 @@
 /* --Methode-- */
 void NamedObjMgr::DisplayNT(string& nom, string& nmx, string& nmy, string& nmz,
-                            string& erx, string& ery, string& erz, string dopt, bool fg3d)
+                            string& erx, string& ery, string& erz, string& wt, 
+                            string& label, string dopt, bool fg3d)
 {
 AnyDataObj* obj=GetObj(nom);
@@ -1049,4 +1050,6 @@
   PINTuple3D* pin = new PINTuple3D(nt, false);
   pin->SelectXYZ(nmx.c_str(), nmy.c_str(), nmz.c_str());
+  pin->SelectWt(wt.c_str());
+  pin->SelectLabel(label.c_str());
   pin->SelectErrBar(erx.c_str(), ery.c_str(), erz.c_str());
   string titre = nmz + "%" + nmy + "%" + nmz;
@@ -1056,6 +1059,7 @@
   PINTuple* pin = new PINTuple(nt, false);
   pin->SelectXY(nmx.c_str(), nmy.c_str());
+  pin->SelectWt(wt.c_str());
+  pin->SelectLabel(label.c_str());
   pin->SelectErrBar(erx.c_str(), ery.c_str());
-  if ( nmz.length()>0 ) pin->SelectWt(nmz.c_str());
   string titre = nmy + "%" + nmx;
   wrsid = myImgApp->DispScDrawer( (PIDrawer*)pin, n1, opt, titre);
Index: trunk/SophyaPI/PIext/nobjmgr.h
===================================================================
--- trunk/SophyaPI/PIext/nobjmgr.h	(revision 484)
+++ trunk/SophyaPI/PIext/nobjmgr.h	(revision 486)
@@ -69,6 +69,6 @@
   virtual void          DisplaySurf3D(string & nom, string dopt="");
   virtual void          DisplayNT(string & nom, string& nmx, string& nmy, string& nmz,  
-                                  string& erx, string& ery, string& erz, 
-                                  string dopt="", bool fg3d=false);
+                                  string& erx, string& ery, string& erz, string& wt,
+                                  string& label, string dopt="", bool fg3d=false);
   virtual void          DisplayGFD(string & nom, string& numvarx, string& numvary, 
                                    string& err, string dopt="");
Index: trunk/SophyaPI/PIext/pintup3d.cc
===================================================================
--- trunk/SophyaPI/PIext/pintup3d.cc	(revision 484)
+++ trunk/SophyaPI/PIext/pintup3d.cc	(revision 486)
@@ -10,5 +10,7 @@
   mAdDO = ad; 
   SelectXYZ(NULL, NULL, NULL);
+  SelectWt(NULL, 1);
   SelectErrBar();
+  SelectLabel(NULL);
 }
 
@@ -29,4 +31,22 @@
 if (pz == NULL) zK = -1;
 else { name = pz; zK = mNT->ColumnIndex(name); }
+}
+
+/* --Methode-- */
+void  PINTuple3D::SelectWt(const char* pw, int nbins)
+{
+nWbins = (nbins > 0) ? nbins : 10;
+if (pw == NULL) wK = -1;  
+else { string name = pw;   wK = mNT->ColumnIndex(name);  }
+ 
+if (wK >= 0) mNT->GetMinMax(wK, wMin, wMax);
+else  { wMin = 0.; wMax = 1.; }
+}
+
+/* --Methode-- */
+void  PINTuple3D::SelectLabel(const char* plabel)
+{
+if (plabel == NULL) lK = -1;
+else {  string name = plabel;  lK = mNT->ColumnIndex(name);  }
 }
 
@@ -88,5 +108,5 @@
 void PINTuple3D::Draw(PIGraphicUC* g, double xmin, double ymin, double xmax, double ymax)
 {
-double xp,yp,zp,xer,yer,zer;
+double xp,yp,zp,wp,xer,yer,zer;
 double xl,yl,zl;
 int nok;
@@ -106,4 +126,16 @@
 if (mLAtt == PI_NotDefLineAtt)  g3->SelLine(PI_ThinLine);
 
+//  Pour tracer des markers avec taille fonction de Wt (poids)
+double dw = (wMax-wMin)/nWbins;
+if (dw < 1.e-19) dw = 1.e19;
+int msz,sz;
+
+PIMarker mrk;
+if (wK >= 0)  mrk = (mMrk != PI_NotDefMarker) ? mMrk : PI_CircleMarker;
+else   mrk = (mMrk != PI_NotDefMarker) ? mMrk : PI_DotMarker;
+msz = mMSz;
+if (msz < 1) msz = 1;
+g->SelMarker(msz, mrk);
+
 nok = 0;  
 xp = yp = zp = xl = yl = zl = 0;
@@ -116,5 +148,4 @@
     g3->DrawLine3D(xl, yl, zl, xp, yp, zp);
   nok++;
-  g3->DrawMarker3D(xp, yp, zp); 
   if ( xebK >= 0 ) {
     xer = mNT->GetCell(i, xebK);
@@ -129,4 +160,17 @@
     g3->DrawLine3D(xp, yp, zp-zer, xp, yp, zp+zer);
   }
+  if (wK >= 0) { // Taille de marker en fonction du poids
+    wp = mNT->GetCell(i, wK);
+    sz = (int)((wp-wMin)/dw);
+    if (sz < 0) sz = 0;
+    if (sz > nWbins)  sz = nWbins;
+    sz += msz;
+    if (sz < 2)  g->SelMarker(sz, PI_DotMarker);
+    else g->SelMarker(sz, mrk);
+  }
+  // Trace du marker
+  if ((wK >= 0)||(lK < 0)||(mMrk != PI_NotDefMarker))  g3->DrawMarker3D(xp, yp, zp); 
+  // Trace eventuel du label
+  if (lK >= 0) g3->DrawString3D(xp, yp, zp, mNT->GetCelltoString(i, lK).c_str());
 }
 
Index: trunk/SophyaPI/PIext/pintup3d.h
===================================================================
--- trunk/SophyaPI/PIext/pintup3d.h	(revision 484)
+++ trunk/SophyaPI/PIext/pintup3d.h	(revision 486)
@@ -13,6 +13,8 @@
   virtual void       UpdateLimits();
   
-          void       SelectXYZ(const char* px, const char* py, const char* pz);
-          void       SelectErrBar(const char* erbx=NULL, const char* erby=NULL, const char* erbz=NULL);
+  virtual void       SelectXYZ(const char* px, const char* py, const char* pz);
+  virtual void       SelectWt(const char* pw=NULL, int nbins=10);
+  virtual void       SelectErrBar(const char* erbx=NULL, const char* erby=NULL, const char* erbz=NULL);
+  virtual void       SelectLabel(const char* plabel);
 
        
@@ -22,4 +24,8 @@
   int xK, yK, zK;           // Index du nom de variable en X/Y/Z ds le ntuple
   int xebK, yebK, zebK;     // Index du nom de variable en ErrBarX/Y/Z ds le ntuple
+  int wK;                   // Index du nom de variable poids
+  int lK;                   // Index du nom de variable label (affiche en texte)
+  double wMin, wMax;        // Valeurs de poids min/max
+  int nWbins;               // Nombre de bins pour le poids (Wt)
 
 };
Index: trunk/SophyaPI/PIext/pintuple.cc
===================================================================
--- trunk/SophyaPI/PIext/pintuple.cc	(revision 484)
+++ trunk/SophyaPI/PIext/pintuple.cc	(revision 486)
@@ -12,4 +12,5 @@
   SelectWt(NULL, 1);
   SelectErrBar();
+  SelectLabel(NULL);
 }
 
@@ -39,4 +40,11 @@
 if (wK >= 0) mNT->GetMinMax(wK, wMin, wMax);
 else  { wMin = 0.; wMax = 1.; }
+}
+
+/* --Methode-- */
+void  PINTuple::SelectLabel(const char* plabel)
+{
+if (plabel == NULL) lK = -1;
+else {  string name = plabel;  lK = mNT->ColumnIndex(name);  }
 }
 
@@ -126,5 +134,9 @@
     else g->SelMarker(sz, mrk);
   }
-  g->DrawMarker(xp, yp); 
+  // Trace du marker
+  if ((wK >= 0)||(lK < 0)||(mMrk != PI_NotDefMarker))  g->DrawMarker(xp, yp); 
+  // Trace eventuel du label
+  if (lK >= 0) g->DrawString(xp, yp, mNT->GetCelltoString(i, lK).c_str());
+
 }
 
Index: trunk/SophyaPI/PIext/pintuple.h
===================================================================
--- trunk/SophyaPI/PIext/pintuple.h	(revision 484)
+++ trunk/SophyaPI/PIext/pintuple.h	(revision 486)
@@ -20,4 +20,5 @@
   virtual void       SelectWt(const char* pw=NULL, int nbins=10);
   virtual void       SelectErrBar(const char* erbx=NULL, const char* erby=NULL);
+  virtual void       SelectLabel(const char* plabel=NULL);
 
   virtual void       AppendTextInfo(string& info, double xmin, double ymin, double xmax, double ymax);
@@ -29,4 +30,5 @@
   int xebK, yebK;      // Index du nom de variable en ErrBarX/Y ds le ntuple
   int wK;              // Index du nom de variable poids
+  int lK;              // Index du nom de variable label (affiche en texte)
   double wMin, wMax;        // Valeurs de poids min/max
   int nWbins;               // Nombre de bins pour le poids (Wt)
