Index: /trunk/SophyaPI/PIext/basexecut.cc
===================================================================
--- /trunk/SophyaPI/PIext/basexecut.cc	(revision 2637)
+++ /trunk/SophyaPI/PIext/basexecut.cc	(revision 2638)
@@ -164,7 +164,11 @@
   }
 else if ((kw == "addline") || (kw == "addrect") || (kw == "addfrect") ||
+         (kw == "addoval") || (kw == "addfoval") || 
 	 (kw == "addarrow") ) {
   if (tokens.size() < 4) { 
-    cout << "Usage: addline/addrect/addfrect x1 y1 x2 y2 [colatt] [fgnc]" << endl;  
+    if ( (kw == "addoval") || (kw == "addfoval") )
+      cout << "Usage  addoval/addfoval/addarrow xc yc dx dy [colatt] [fgnc]" << endl;  
+    else 
+      cout << "Usage: addline/addrect/addfrect/addarrow x1 y1 x2 y2 [colatt] [fgnc]" << endl;  
     return(0); 
   }
@@ -178,7 +182,9 @@
   if (kw == "addline") mImgApp->AddLine(xp1, yp1, xp2, yp2, sop, false, fgnc);
   else if (kw == "addarrow") mImgApp->AddLine(xp1, yp1, xp2, yp2, sop, true, fgnc);
-  else {
-    bool fgfill = (kw == "addrect") ? false : true;
-    mImgApp->AddRectangle(xp1, yp1, xp2, yp2, sop, fgfill, fgnc);
+  else { 
+    bool fgfill = ((kw == "addrect") || (kw == "addoval")) ? false : true;
+    if ( (kw == "addrect") || (kw == "addfrect") )
+      mImgApp->AddRectangle(xp1, yp1, xp2, yp2, sop, fgfill, fgnc);
+    else  mImgApp->AddOval(xp1, yp1, xp2, yp2, sop, fgfill, fgnc);
   }
 }
@@ -1339,4 +1345,26 @@
 usage += "\n  Related commands: addtext addline addarrow addfrect addfrect";
 usage += "\n       addcirc addarc addfarc addpoly addfpoly graphicatt";  
+mpiac->RegisterCommand(kw, usage, this, "Graphic-Elts");
+
+kw = "addoval";
+usage = "Adds an oval (ellipse) to the current graphic object";
+usage += "\n centered on xc,yc - semi-axis ds,dy (+ graphic attribute)";
+usage += "\n The Base/AxesDrawer is used to handle added rectangle"; 
+usage += "\n Alt<E> to remove added element";
+usage += "\n  Usage: addoval xc yc dx dy [GraphicAtt] [fgnc=false/true]";
+usage += "\n  if fgnc==true : Normalized 0..1 coordinates specification (def=false)";
+usage += "\n  Related commands: addfoval addline addarrow addfrect addcirc addfcirc";
+usage += "\n       addcirc addfcirc addarc addfarc addpoly addfpoly graphicatt";  
+mpiac->RegisterCommand(kw, usage, this, "Graphic-Elts");
+
+kw = "addfoval";
+usage = "Adds a filled oval (ellipse) to the current graphic object";
+usage += "\n centered on xc,yc - semi-axis ds,dy (+ graphic attribute)";
+usage += "\n The Base/AxesDrawer is used to handle added rectangle"; 
+usage += "\n Alt<E> to remove added element";
+usage += "\n  Usage: addfoval xc yc dx dy [GraphicAtt] [fgnc=false/true]";
+usage += "\n  if fgnc==true : Normalized 0..1 coordinates specification (def=false)";
+usage += "\n  Related commands: addoval addline addarrow addfrect addcirc addfcirc";
+usage += "\n       addcirc addfcirc addarc addfarc addpoly addfpoly graphicatt";  
 mpiac->RegisterCommand(kw, usage, this, "Graphic-Elts");
 
Index: /trunk/SophyaPI/PIext/pistdimgapp.cc
===================================================================
--- /trunk/SophyaPI/PIext/pistdimgapp.cc	(revision 2637)
+++ /trunk/SophyaPI/PIext/pistdimgapp.cc	(revision 2638)
@@ -1148,4 +1148,30 @@
 }
 /* --Methode-- */
+void PIStdImgApp::AddOval(double xp, double yp, double dx, double dy, 
+			  string const& sop, bool fgfill, bool fgcn)
+{
+// <ZThread> global PIApplication event loop synchronisation
+ZSync zs(thr_glsyn, 2);  
+
+PIDrawer *eld=CurrentElDrawer();
+if (eld == NULL) return;
+PIElDrawer* eld2 = dynamic_cast<PIElDrawer *>(eld);
+PIElDrawer3D* eld3 = dynamic_cast<PIElDrawer3D *>(eld);
+if ((eld2 == NULL) && (eld3 == NULL)) return;
+PIElDrwMgr* elmgr = NULL;
+if (eld2) elmgr = &(eld2->ElDrwMgr());
+else if (eld3) elmgr = &(eld3->ElDrwMgr());
+
+
+vector<string> opts;
+ParseDisplayOption(sop, opts);
+PIGraphicAtt gratt(opts);
+
+if (fgfill) elmgr->ElAddFOval(xp, yp, dx, dy, gratt, fgcn);
+else elmgr->ElAddOval(xp, yp, dx, dy, gratt, fgcn);
+eld->Refresh();
+}
+
+/* --Methode-- */
 void PIStdImgApp::AddArc(double xc, double yc, double r, double a, double da, 
 			 string const& sop, bool fgfill, bool fgcn)
Index: /trunk/SophyaPI/PIext/pistdimgapp.h
===================================================================
--- /trunk/SophyaPI/PIext/pistdimgapp.h	(revision 2637)
+++ /trunk/SophyaPI/PIext/pistdimgapp.h	(revision 2638)
@@ -90,4 +90,6 @@
      void AddCircle(double xc, double yc, double r, string const& opt, 
 		    bool fgfill=false, bool fgcn=false);
+     void AddOval(double xp, double yp, double dx, double dy, string const& opt, 
+		  bool fgfill=false, bool fgcn=false);
      void AddArc(double xc, double yc, double r, double a, double da, 
 		 string const& opt, bool fgfill=false, bool fgcn=false);
