diff --git a/Common/DefaultOptions.h b/Common/DefaultOptions.h
index cbc3fc936d5a054d964134aca596fe44fbfcc86e..0435792db5212c08c5e61fc08ec69c3ec767c2d3 100644
--- a/Common/DefaultOptions.h
+++ b/Common/DefaultOptions.h
@@ -98,7 +98,7 @@ StringXNumber GeneralOptions_Number[] = {
   { F|O, "AlphaBlending" , opt_general_alpha_blending , 0. },
   { F|O, "Trackball" , opt_general_trackball , 1. },
   { F|O, "ZoomFactor" , opt_general_zoom_factor , 1.1 }, 
-  { F|O, "DefaultPlugins" , opt_general_default_plugins , 1. }, 
+  { F|O, "DefaultPlugins" , opt_general_default_plugins , 0. }, 
   { F, "Clip0" , opt_general_clip0 , 0. },
   { F, "Clip0A" , opt_general_clip0a , 0.0 }, 
   { F, "Clip0B" , opt_general_clip0b , 0.0 }, 
diff --git a/Common/Views.cpp b/Common/Views.cpp
index bc3f25fb13d74654e8efd01692ff380e38d4eccb..ab19c31d46e83d6a11f6cf9a10010f6014f084a9 100644
--- a/Common/Views.cpp
+++ b/Common/Views.cpp
@@ -1,4 +1,4 @@
-// $Id: Views.cpp,v 1.34 2001-04-08 20:36:49 geuzaine Exp $
+// $Id: Views.cpp,v 1.35 2001-04-17 06:55:47 geuzaine Exp $
 
 #include <set>
 #include "Gmsh.h"
@@ -7,9 +7,12 @@
 #include "Options.h"
 #include "ColorTable.h"
 
+// this static stuff should be removed
+int         Post_ViewForceNumber = 0, Post_ViewComputeBBox = 0;
 List_T     *Post_ViewList = NULL;
 Post_View  *Post_ViewReference = NULL, *ActualView;
 
+
 extern Context_T   CTX ;
 
 static int  ActualViewNum=0, ActualViewIndex=0;
@@ -27,18 +30,19 @@ int fcmpPostViewDuplicateOf(const void *v1, const void *v2){
   return (((Post_View *)v1)->DuplicateOf - ((Post_View *)v2)->DuplicateOf);
 }
 
-void BeginView(int allocate, int force_number){
+void BeginView(int allocate){
   Post_View v;
+  int i;
 
   if(!Post_ViewList) Post_ViewList = List_Create(100,1,sizeof(Post_View));
 
-  if(!force_number){
+  if(!Post_ViewForceNumber){
     // each view MUST have a unique, non-reattributable, number
     v.Num = ++ActualViewNum;
     List_Add(Post_ViewList, &v);
   }
   else{
-    v.Num = force_number;    
+    v.Num = Post_ViewForceNumber;    
     List_Replace(Post_ViewList,&v,fcmpPostViewNum);
   }
 
@@ -90,6 +94,10 @@ void BeginView(int allocate, int force_number){
   ActualView->DuplicateOf = 0;
   ActualView->ScalarOnly = 1;
   ActualView->normals = NULL;
+  for(i=0;i<3;i++){
+    ActualView->BBox[2*i] = 1.e200;
+    ActualView->BBox[2*i+1] = -1.e200;
+  }
   ActualView->CT.size = 255;
   ActualView->CT.ipar[COLORTABLE_MODE] = COLORTABLE_RGB;
   ColorTable_InitParam(1, &ActualView->CT, 1, 1);
@@ -97,7 +105,7 @@ void BeginView(int allocate, int force_number){
 
 }
 
-void Stat_ScalarSimplex(int nbnod, int N, double *V){
+void Stat_ScalarSimplex(int nbnod, int N, double *X, double *Y, double *Z, double *V){
   int i;
 
   if(!NbPoints && !NbLines && !NbTriangles && !NbTetrahedra){
@@ -113,6 +121,17 @@ void Stat_ScalarSimplex(int nbnod, int N, double *V){
     if(V[i] > ActualView->Max) ActualView->Max = V[i] ;
   }
 
+  if(Post_ViewComputeBBox){
+    for(i=0 ; i<nbnod ; i++){
+      if(X[i] < ActualView->BBox[0]) ActualView->BBox[0] = X[i] ;
+      if(X[i] > ActualView->BBox[1]) ActualView->BBox[1] = X[i] ;
+      if(Y[i] < ActualView->BBox[2]) ActualView->BBox[2] = Y[i] ;
+      if(Y[i] > ActualView->BBox[3]) ActualView->BBox[3] = Y[i] ;
+      if(Z[i] < ActualView->BBox[4]) ActualView->BBox[4] = Z[i] ;
+      if(Z[i] > ActualView->BBox[5]) ActualView->BBox[5] = Z[i] ;
+    }
+  }
+
   switch(nbnod){
   case 1 : NbPoints++; break;
   case 2 : NbLines++; break;
@@ -121,7 +140,7 @@ void Stat_ScalarSimplex(int nbnod, int N, double *V){
   }
 }
 
-void Stat_VectorSimplex(int nbnod, int N, double *V){
+void Stat_VectorSimplex(int nbnod, int N, double *X, double *Y, double *Z, double *V){
   double l0;
   int i;
 
@@ -140,6 +159,17 @@ void Stat_VectorSimplex(int nbnod, int N, double *V){
     if(l0 > ActualView->Max) ActualView->Max = l0 ;
   }
 
+  if(Post_ViewComputeBBox){
+    for(i=0 ; i<nbnod ; i++){
+      if(X[i] < ActualView->BBox[0]) ActualView->BBox[0] = X[i] ;
+      if(X[i] > ActualView->BBox[1]) ActualView->BBox[1] = X[i] ;
+      if(Y[i] < ActualView->BBox[2]) ActualView->BBox[2] = Y[i] ;
+      if(Y[i] > ActualView->BBox[3]) ActualView->BBox[3] = Y[i] ;
+      if(Z[i] < ActualView->BBox[4]) ActualView->BBox[4] = Z[i] ;
+      if(Z[i] > ActualView->BBox[5]) ActualView->BBox[5] = Z[i] ;
+    }
+  }
+
   ActualView->ScalarOnly = 0;
 
   switch(nbnod){
@@ -150,12 +180,12 @@ void Stat_VectorSimplex(int nbnod, int N, double *V){
   }
 }
 
-void Stat_TensorSimplex(int nbnod, int N, double *v){
+void Stat_TensorSimplex(int nbnod, int N, double *X, double *Y, double *Z, double *v){
   Msg(GERROR, "Tensor field views not implemented yet");
 }
 
 
-void EndView(int add_in_gui, int force_number, char *file_name, char *name){
+void EndView(int add_in_gui, char *file_name, char *name){
   int i, nb;
   double d;
   extern int AddViewInUI(int , char *, int);
@@ -165,17 +195,29 @@ void EndView(int add_in_gui, int force_number, char *file_name, char *name){
   if(ActualView->NbSP){
     nb = List_Nbr(ActualView->SP) / ActualView->NbSP ;
     for(i = 0 ; i < List_Nbr(ActualView->SP) ; i+=nb)
-      Stat_ScalarSimplex(1, nb-3, (double*)List_Pointer(ActualView->SP,i+3));
+      Stat_ScalarSimplex(1, nb-3, 
+			 (double*)List_Pointer_Fast(ActualView->SP,i),
+			 (double*)List_Pointer_Fast(ActualView->SP,i+1),
+			 (double*)List_Pointer_Fast(ActualView->SP,i+2),
+			 (double*)List_Pointer_Fast(ActualView->SP,i+3));
   }
   if(ActualView->NbVP){
     nb = List_Nbr(ActualView->VP) / ActualView->NbVP ;
     for(i = 0 ; i < List_Nbr(ActualView->VP) ; i+=nb)
-      Stat_VectorSimplex(1, nb-3, (double*)List_Pointer(ActualView->VP,i+3));
+      Stat_VectorSimplex(1, nb-3, 
+			 (double*)List_Pointer_Fast(ActualView->VP,i),
+			 (double*)List_Pointer_Fast(ActualView->VP,i+1),
+			 (double*)List_Pointer_Fast(ActualView->VP,i+2),
+			 (double*)List_Pointer_Fast(ActualView->VP,i+3));
   }
   if(ActualView->NbTP){
     nb = List_Nbr(ActualView->TP) / ActualView->NbTP ;
     for(i = 0 ; i < List_Nbr(ActualView->TP) ; i+=nb)
-      Stat_TensorSimplex(1, nb-3, (double*)List_Pointer(ActualView->TP,i+3));
+      Stat_TensorSimplex(1, nb-3, 
+			 (double*)List_Pointer_Fast(ActualView->TP,i),
+			 (double*)List_Pointer_Fast(ActualView->TP,i+1),
+			 (double*)List_Pointer_Fast(ActualView->TP,i+2),
+			 (double*)List_Pointer_Fast(ActualView->TP,i+3));
   }
 
   // Lines
@@ -183,17 +225,29 @@ void EndView(int add_in_gui, int force_number, char *file_name, char *name){
   if(ActualView->NbSL){
     nb = List_Nbr(ActualView->SL) / ActualView->NbSL ;
     for(i = 0 ; i < List_Nbr(ActualView->SL) ; i+=nb)
-      Stat_ScalarSimplex(2, nb-6, (double*)List_Pointer(ActualView->SL,i+6));
+      Stat_ScalarSimplex(2, nb-6,
+			 (double*)List_Pointer_Fast(ActualView->SL,i),
+			 (double*)List_Pointer_Fast(ActualView->SL,i+2),
+			 (double*)List_Pointer_Fast(ActualView->SL,i+4),
+			 (double*)List_Pointer_Fast(ActualView->SL,i+6));
   }
   if(ActualView->NbVL){
     nb = List_Nbr(ActualView->VL) / ActualView->NbVL ;
     for(i = 0 ; i < List_Nbr(ActualView->VL) ; i+=nb)
-      Stat_VectorSimplex(2, nb-6, (double*)List_Pointer(ActualView->VL,i+6));
+      Stat_VectorSimplex(2, nb-6, 
+			 (double*)List_Pointer_Fast(ActualView->VL,i),
+			 (double*)List_Pointer_Fast(ActualView->VL,i+2),
+			 (double*)List_Pointer_Fast(ActualView->VL,i+4),
+			 (double*)List_Pointer_Fast(ActualView->VL,i+6));
   }
   if(ActualView->NbTL){
     nb = List_Nbr(ActualView->TL) / ActualView->NbTL ;
     for(i = 0 ; i < List_Nbr(ActualView->TL) ; i+=nb)
-      Stat_TensorSimplex(2, nb-6, (double*)List_Pointer(ActualView->TL,i+6));
+      Stat_TensorSimplex(2, nb-6, 
+			 (double*)List_Pointer_Fast(ActualView->TL,i),
+			 (double*)List_Pointer_Fast(ActualView->TL,i+2),
+			 (double*)List_Pointer_Fast(ActualView->TL,i+4),
+			 (double*)List_Pointer_Fast(ActualView->TL,i+6));
   }
 
   // Triangles
@@ -201,17 +255,29 @@ void EndView(int add_in_gui, int force_number, char *file_name, char *name){
   if(ActualView->NbST){
     nb = List_Nbr(ActualView->ST) / ActualView->NbST ;
     for(i = 0 ; i < List_Nbr(ActualView->ST) ; i+=nb)
-      Stat_ScalarSimplex(3, nb-9, (double*)List_Pointer(ActualView->ST,i+9));
+      Stat_ScalarSimplex(3, nb-9, 
+			 (double*)List_Pointer_Fast(ActualView->ST,i),
+			 (double*)List_Pointer_Fast(ActualView->ST,i+3),
+			 (double*)List_Pointer_Fast(ActualView->ST,i+6),
+			 (double*)List_Pointer_Fast(ActualView->ST,i+9));
   }
   if(ActualView->NbVT){
     nb = List_Nbr(ActualView->VT) / ActualView->NbVT ;
     for(i = 0 ; i < List_Nbr(ActualView->VT) ; i+=nb)
-      Stat_VectorSimplex(3, nb-9, (double*)List_Pointer(ActualView->VT,i+9));
+      Stat_VectorSimplex(3, nb-9, 
+			 (double*)List_Pointer_Fast(ActualView->VT,i),
+			 (double*)List_Pointer_Fast(ActualView->VT,i+3),
+			 (double*)List_Pointer_Fast(ActualView->VT,i+6),
+			 (double*)List_Pointer_Fast(ActualView->VT,i+9));
   }
   if(ActualView->NbTT){
     nb = List_Nbr(ActualView->TT) / ActualView->NbTT ;
     for(i = 0 ; i < List_Nbr(ActualView->TT) ; i+=nb)
-      Stat_TensorSimplex(3, nb-9, (double*)List_Pointer(ActualView->TT,i+9));
+      Stat_TensorSimplex(3, nb-9,
+			 (double*)List_Pointer_Fast(ActualView->TT,i),
+			 (double*)List_Pointer_Fast(ActualView->TT,i+3),
+			 (double*)List_Pointer_Fast(ActualView->TT,i+6),
+			 (double*)List_Pointer_Fast(ActualView->TT,i+9));
   }
 
   // Tetrahedra
@@ -219,17 +285,29 @@ void EndView(int add_in_gui, int force_number, char *file_name, char *name){
   if(ActualView->NbSS){
     nb = List_Nbr(ActualView->SS) / ActualView->NbSS ;
     for(i = 0 ; i < List_Nbr(ActualView->SS) ; i+=nb)
-      Stat_ScalarSimplex(4, nb-12, (double*)List_Pointer(ActualView->SS,i+12));
+      Stat_ScalarSimplex(4, nb-12, 
+			 (double*)List_Pointer_Fast(ActualView->SS,i),
+			 (double*)List_Pointer_Fast(ActualView->SS,i+4),
+			 (double*)List_Pointer_Fast(ActualView->SS,i+8),
+			 (double*)List_Pointer_Fast(ActualView->SS,i+12));
   }
   if(ActualView->NbVS){
     nb = List_Nbr(ActualView->VS) / ActualView->NbVS ;
     for(i = 0 ; i < List_Nbr(ActualView->VS) ; i+=nb)
-      Stat_VectorSimplex(4, nb-12, (double*)List_Pointer(ActualView->VS,i+12));
+      Stat_VectorSimplex(4, nb-12,
+			 (double*)List_Pointer_Fast(ActualView->VS,i),
+			 (double*)List_Pointer_Fast(ActualView->VS,i+4),
+			 (double*)List_Pointer_Fast(ActualView->VS,i+8),
+			 (double*)List_Pointer_Fast(ActualView->VS,i+12));
   }
   if(ActualView->NbTS){
     nb = List_Nbr(ActualView->TS) / ActualView->NbTS ;
     for(i = 0 ; i < List_Nbr(ActualView->TS) ; i+=nb)
-      Stat_TensorSimplex(4, nb-12, (double*)List_Pointer(ActualView->TS,i+12));
+      Stat_TensorSimplex(4, nb-12, 
+			 (double*)List_Pointer_Fast(ActualView->TS,i),
+			 (double*)List_Pointer_Fast(ActualView->TS,i+4),
+			 (double*)List_Pointer_Fast(ActualView->TS,i+8),
+			 (double*)List_Pointer_Fast(ActualView->TS,i+12));
   }
 
   // Dummy time values if using old parsed format...
@@ -257,7 +335,7 @@ void EndView(int add_in_gui, int force_number, char *file_name, char *name){
 
   if(CTX.post.smooth) ActualView->smooth();
 
-  if(!force_number && add_in_gui)
+  if(!Post_ViewForceNumber && add_in_gui)
     AddViewInUI(List_Nbr(Post_ViewList), ActualView->Name, ActualView->Num);
 }
 
@@ -383,8 +461,6 @@ void Print_ColorTable(int num, char *prefix, FILE *file){
 /*  R e a d _ V i e w                                                       */
 /* ------------------------------------------------------------------------ */
 
-extern int Force_ViewNumber;
-
 void Read_View(FILE *file, char *filename){
   char   str[NAME_STR_L], name[NAME_STR_L];
   int    nb, format, size, testone, swap;
@@ -430,7 +506,7 @@ void Read_View(FILE *file, char *filename){
 
     if (!strncmp(&str[1], "View", 4)) {
 
-      BeginView(0, Force_ViewNumber);
+      BeginView(0);
 
       fscanf(file, "%s %d %d %d %d %d %d %d %d %d %d %d %d %d\n", 
              name, &ActualView->NbTimeStep,
@@ -506,7 +582,7 @@ void Read_View(FILE *file, char *filename){
           List_Nbr(ActualView->ST), List_Nbr(ActualView->VT), List_Nbr(ActualView->TT), 
           List_Nbr(ActualView->SS), List_Nbr(ActualView->VS), List_Nbr(ActualView->TS));
 
-      EndView(1, Force_ViewNumber, filename, name); 
+      EndView(1, filename, name); 
     }
 
     do {
diff --git a/Common/Views.h b/Common/Views.h
index 8295b6ca8e37bb26d631a7e9d12a02f6a41bd01f..78c21a865e7ddb495c21a0de0b268edf83772f5c 100644
--- a/Common/Views.h
+++ b/Common/Views.h
@@ -24,7 +24,7 @@ class Post_View{
   int NbSS, NbVS, NbTS;
   List_T *SS, *VS, *TS; // tetrahedra
   int NbTimeStep, ScalarOnly;
-  double Min, Max;
+  double Min, Max, BBox[6];
 
   // options
   char   Format[NAME_STR_L];
@@ -56,9 +56,12 @@ class Post_View{
 
 extern List_T *Post_ViewList;
 
-// Reference view storing default options
+// Reference view storing default options and the static options
 
 extern Post_View *Post_ViewReference;
+extern int        Post_ViewForceNumber, Post_ViewComputeBBox;
+
+
 
 // IntervalsType
 #define DRAW_POST_ISO          1
@@ -91,8 +94,8 @@ extern Post_View *Post_ViewReference;
 int fcmpPostViewNum(const void *v1, const void *v2);
 int fcmpPostViewDuplicateOf(const void *v1, const void *v2);
 
-void BeginView (int alloc, int Number);
-void EndView (int AddInUI, int Number, char *FileName, char *Name);
+void BeginView (int alloc);
+void EndView (int AddInUI, char *FileName, char *Name);
 void FreeView(Post_View *v);
 bool FreeView(int);
 void Read_View(FILE *file, char *filename);
diff --git a/Fltk/Callbacks.cpp b/Fltk/Callbacks.cpp
index 5016616f1917993c8c09e531030b61c42038c0d5..5f160cefaaa82a160e7371e4333eaef044f1ad73 100644
--- a/Fltk/Callbacks.cpp
+++ b/Fltk/Callbacks.cpp
@@ -1,4 +1,4 @@
-// $Id: Callbacks.cpp,v 1.42 2001-04-08 20:36:49 geuzaine Exp $
+// $Id: Callbacks.cpp,v 1.43 2001-04-17 06:55:47 geuzaine Exp $
 
 #include <map>
 #include "Gmsh.h"
@@ -1315,7 +1315,6 @@ void view_reload_all_cb(CALLBACK_ARGS) {
 void view_reload_cb(CALLBACK_ARGS){
   Post_View tmp ;
   char filename[NAME_STR_L];
-  extern int Force_ViewNumber;
 
   if(!Post_ViewList) return;
 
@@ -1323,10 +1322,10 @@ void view_reload_cb(CALLBACK_ARGS){
   strcpy(filename, v->FileName);
   CopyViewOptions(v, &tmp);
 
-  Force_ViewNumber = v->Num ;
+  Post_ViewForceNumber = v->Num ;
   FreeView(v);
   MergeProblem(filename);
-  Force_ViewNumber = 0 ;
+  Post_ViewForceNumber = 0 ;
   
   v = (Post_View*)List_Pointer(Post_ViewList,(int)data);
   CopyViewOptions(&tmp, v);
@@ -1384,8 +1383,8 @@ static void _duplicate_view(int num, int options){
 
   v1 = (Post_View*)List_Pointer(Post_ViewList,num);
 
-  BeginView(0, 0);
-  EndView(0, 0, v1->FileName, v1->Name);
+  BeginView(0);
+  EndView(0, v1->FileName, v1->Name);
 
   v2 = (Post_View*)List_Pointer(Post_ViewList,List_Nbr(Post_ViewList)-1);
 
diff --git a/Geo/MinMax.cpp b/Geo/MinMax.cpp
index ff01d11eccb426418a99705f7d58c84b81fabd19..851d89fff62431f659eb65fe0f93866aa1cb5fe1 100644
--- a/Geo/MinMax.cpp
+++ b/Geo/MinMax.cpp
@@ -1,4 +1,4 @@
-// $Id: MinMax.cpp,v 1.4 2001-01-08 08:05:42 geuzaine Exp $
+// $Id: MinMax.cpp,v 1.5 2001-04-17 06:55:47 geuzaine Exp $
 
 #include "Gmsh.h"
 #include "Const.h"
@@ -22,24 +22,32 @@ void minmax(void *a , void*b){
   CTX.max[2] = (CTX.max[2] > v->Pos.Z) ? CTX.max[2] : v->Pos.Z;
 }
 
-void CalculateMinMax (Tree_T *t){
+void CalculateMinMax (Tree_T *t, double *bbox){
   Vertex   *v;
   double   frac;
   int      exp;
 
   if(!Tree_Nbr(t)){
-    CTX.min[0] = CTX.min[1] = CTX.min[2] = -1.;
-    CTX.max[0] = CTX.max[1] = CTX.max[2] =  1.;
-    CTX.range[0] = CTX.range[1] = CTX.range[2] = 0.;
-    CTX.lc = CTX.lc_middle = 1.;
-    return;
+    if(!bbox || (bbox[0] > bbox[1])){ //the bbox is wrong
+      CTX.min[0] = CTX.min[1] = CTX.min[2] = -1.;
+      CTX.max[0] = CTX.max[1] = CTX.max[2] =  1.;
+      CTX.range[0] = CTX.range[1] = CTX.range[2] = 0.;
+      CTX.lc = CTX.lc_middle = 1.;
+      return;
+    }
+    else{
+      CTX.min[0] = bbox[0] ; CTX.max[0] = bbox[1] ;
+      CTX.min[1] = bbox[2] ; CTX.max[1] = bbox[3] ;
+      CTX.min[2] = bbox[4] ; CTX.max[2] = bbox[5] ;
+    }
+  }
+  else{
+    Tree_Right(t,&v);
+    CTX.min[0] = CTX.max[0] = v->Pos.X;
+    CTX.min[1] = CTX.max[1] = v->Pos.Y;
+    CTX.min[2] = CTX.max[2] = v->Pos.Z;
+    Tree_Action(t,minmax);
   }
-
-  Tree_Right(t,&v);
-  CTX.min[0] = CTX.max[0] = v->Pos.X;
-  CTX.min[1] = CTX.max[1] = v->Pos.Y;
-  CTX.min[2] = CTX.max[2] = v->Pos.Z;
-  Tree_Action(t,minmax);
 
   CTX.range[0] = CTX.max[0]-CTX.min[0]; 
   CTX.range[1] = CTX.max[1]-CTX.min[1]; 
diff --git a/Geo/MinMax.h b/Geo/MinMax.h
index a2abe8b8b417e78f9b7f2608033c26a0c26cc4a1..0cf17cf830aec529d3fc16c788795850f26116de 100644
--- a/Geo/MinMax.h
+++ b/Geo/MinMax.h
@@ -1,6 +1,6 @@
 #ifndef _MINMAX_H_
 #define _MINMAX_H_
 
-void CalculateMinMax (Tree_T *t);
+void CalculateMinMax (Tree_T *t, double *bbox);
 
 #endif
diff --git a/Graphics/Draw.cpp b/Graphics/Draw.cpp
index a864583b76033c08cd1d5d1c8e19a5ec1e57df13..b88f2157474cf1dd1dbfe4b8443f57c7a46e863f 100644
--- a/Graphics/Draw.cpp
+++ b/Graphics/Draw.cpp
@@ -1,4 +1,4 @@
-// $Id: Draw.cpp,v 1.23 2001-02-23 19:51:11 geuzaine Exp $
+// $Id: Draw.cpp,v 1.24 2001-04-17 06:55:47 geuzaine Exp $
 
 #include "Gmsh.h"
 #include "GmshUI.h"
@@ -194,7 +194,7 @@ void InitPosition(void){
 /* n'est plus utilise que dans les cas ou des points peuvent etre
    ajoutes dans la base de donnee -> dans cb_geom */
 void Replot(void){
-  CalculateMinMax(M.Points);
+  CalculateMinMax(M.Points,NULL);
   Draw();
 }
 
diff --git a/Graphics/Mesh.cpp b/Graphics/Mesh.cpp
index 6d054e1c496a41f55ade8050a3f28e79a6130a28..6a0a496db82ff0c9d2b10bec7f993630804129c5 100644
--- a/Graphics/Mesh.cpp
+++ b/Graphics/Mesh.cpp
@@ -1,4 +1,4 @@
-// $Id: Mesh.cpp,v 1.21 2001-02-17 22:08:56 geuzaine Exp $
+// $Id: Mesh.cpp,v 1.22 2001-04-17 06:55:47 geuzaine Exp $
 
 #include "Gmsh.h"
 #include "GmshUI.h"
@@ -26,7 +26,7 @@ void draw_polygon_2d (double r, double g, double b, int n,
                       double *x, double *y, double *z){
   int i ;
 
-  CalculateMinMax(THEM->Points);
+  CalculateMinMax(THEM->Points,NULL);
   InitOpengl();
   InitPosition();
 
diff --git a/Mesh/Generator.cpp b/Mesh/Generator.cpp
index 1c68682b42da8790fa76c5cfbf232d3e15b16dca..4d3e984b412ec81bd62be6eab64a1a1467fc6653 100644
--- a/Mesh/Generator.cpp
+++ b/Mesh/Generator.cpp
@@ -1,4 +1,4 @@
-// $Id: Generator.cpp,v 1.13 2001-04-14 06:55:15 geuzaine Exp $
+// $Id: Generator.cpp,v 1.14 2001-04-17 06:55:47 geuzaine Exp $
 
 #include "Gmsh.h"
 #include "Const.h"
@@ -192,8 +192,6 @@ void mai3d (Mesh * M, int Asked){
     return;
   }
 
-  CTX.threads_lock = 1 ;
-
   M->MeshParams.DelaunayAlgorithm = CTX.mesh.algo ;
   M->MeshParams.NbSmoothing = CTX.mesh.nb_smoothing ;
   M->MeshParams.InteractiveDelaunay = CTX.mesh.interactive ;
@@ -207,6 +205,8 @@ void mai3d (Mesh * M, int Asked){
     OpenProblem (CTX.filename);
     M->status = 0;
   }
+
+  CTX.threads_lock = 1 ;
   
   /* Maillage 1-D */
   
diff --git a/Mesh/Read_Mesh.cpp b/Mesh/Read_Mesh.cpp
index 091107b9eb8210a08118c0454248d24ac8101f7e..3696ab8dae3b23c9b4756d7970d8f3e95f07bec7 100644
--- a/Mesh/Read_Mesh.cpp
+++ b/Mesh/Read_Mesh.cpp
@@ -1,4 +1,4 @@
-// $Id: Read_Mesh.cpp,v 1.10 2001-04-08 20:36:50 geuzaine Exp $
+// $Id: Read_Mesh.cpp,v 1.11 2001-04-17 06:55:47 geuzaine Exp $
 
 #include "Gmsh.h"
 #include "Geo.h"
@@ -210,8 +210,6 @@ void Read_Mesh_MSH (Mesh *M, FILE *File_GEO){
   else
     M->status = -1 ;
 
-  CalculateMinMax(M->Points);
-  
 }
 
 /* ------------------------------------------------------------------------ */
diff --git a/Mesh/SMS.cpp b/Mesh/SMS.cpp
index fe867f86c9217801b9aee5aba68d0bb81cac5515..f8c872a5b0ee40a775c817f84bbe14383a362b4f 100644
--- a/Mesh/SMS.cpp
+++ b/Mesh/SMS.cpp
@@ -112,7 +112,7 @@ void Read_VTK_File (char *file, Mesh *m)
 void Read_Mesh_SMS (Mesh *m, FILE *in)
 {
   char line[1023];
-  int i,j,patch,nbPts;
+  int i,patch,nbPts;
   int NbRegions,NbFaces,NbEdges,NbVertices,NbPoints,
     GEntityType,GEntityId,EntityNbConnections,Dummy,
     Edge1,Edge2,Edge3,Edge4,Face1,Face2,Face3,Face4;
@@ -134,12 +134,12 @@ void Read_Mesh_SMS (Mesh *m, FILE *in)
       if(GEntityId)
 	{
 	  fscanf(in,"%d %d %lf %lf %lf",&GEntityType,&EntityNbConnections,&x,&y,&z); 
-	  Vertex *v = Create_Vertex(i,x,y,z,1.0,1.0);
-	  Tree_Add(m->Vertices,&v);
+	  Vertex *vert = Create_Vertex(i,x,y,z,1.0,1.0);
+	  Tree_Add(m->Vertices,&vert);
 	  switch(GEntityType)
 	    {
 	    case 0:
-	      Tree_Add(m->Points,&v);
+	      Tree_Add(m->Points,&vert);
 	      break;
 	    case 1:
 	      fscanf(in,"%le",&u);
@@ -161,8 +161,6 @@ void Read_Mesh_SMS (Mesh *m, FILE *in)
     {
       fscanf(in,"%d",&GEntityId);
 
-      int NbPts;
-
       if(GEntityId)
 	{
 	  fscanf(in,"%d %d %d %d %d",&GEntityType, &VertexId1,&VertexId2,&EntityNbConnections,&nbPts); 
@@ -549,7 +547,7 @@ void Write_DMG_FILE (Mesh *m, char *filename)
   Vertex *v;
   Curve *c;
   Surface *s;
-  Volume *vol;
+  //Volume *vol;
   int k;
 
   l = Tree2List(m->Points);
diff --git a/Motif/CbPost.cpp b/Motif/CbPost.cpp
index dcbdf0f72f3b001eab5ffdbabd045e77c8975fef..51f2501f2f2120bd84e9c3ca100289c1fa2be3b6 100644
--- a/Motif/CbPost.cpp
+++ b/Motif/CbPost.cpp
@@ -1,4 +1,4 @@
-// $Id: CbPost.cpp,v 1.5 2001-02-12 17:38:03 geuzaine Exp $
+// $Id: CbPost.cpp,v 1.6 2001-04-17 06:55:47 geuzaine Exp $
 
 #include "Gmsh.h"
 #include "GmshUI.h"
@@ -21,7 +21,6 @@ extern Widgets_T  WID ;
 extern Context_T  CTX ;
 extern XContext_T XCTX ;
 extern Mesh       *THEM;
-extern int         Force_ViewNumber;
 
 static double      ADAPTATION_ERROR=10. ;
 static int         ADAPTATION_METHOD=3 ;
@@ -104,8 +103,8 @@ void DuplicateViewCb (Widget w, XtPointer client_data, XtPointer call_data){
 
   v1 = (Post_View*)List_Pointer(Post_ViewList,(long int)client_data-1);
 
-  BeginView(0, 0);
-  EndView(0, 0, v1->FileName, v1->Name);
+  BeginView(0);
+  EndView(0, v1->FileName, v1->Name);
 
   v2 = (Post_View*)List_Pointer(Post_ViewList,List_Nbr(Post_ViewList)-1);
 
@@ -161,10 +160,10 @@ void ReloadViewCb (Widget w, XtPointer client_data, XtPointer call_data){
   strcpy(filename, v->FileName);
   CopyViewOptions(v, &tmp);
 
-  Force_ViewNumber = v->Num ;
+  Post_ViewForceNumber = v->Num ;
   FreeView(v);
   MergeProblem(filename);
-  Force_ViewNumber = 0 ;
+  Post_ViewForceNumber = 0 ;
   
   v = (Post_View*)List_Pointer(Post_ViewList,(long int)client_data-1);
   CopyViewOptions(&tmp, v);
diff --git a/Parser/Gmsh.tab.cpp b/Parser/Gmsh.tab.cpp
index ecbdceed6ff6eef78404ec56f2e9db2afcbcde64..33b96838899d0e47129f2a0e71ddaac2e1dc9e3c 100644
--- a/Parser/Gmsh.tab.cpp
+++ b/Parser/Gmsh.tab.cpp
@@ -169,7 +169,7 @@
 #line 1 "Gmsh.y"
  
 
-// $Id: Gmsh.tab.cpp,v 1.83 2001-04-08 20:36:50 geuzaine Exp $
+// $Id: Gmsh.tab.cpp,v 1.84 2001-04-17 06:55:47 geuzaine Exp $
 
 #include <stdarg.h>
 
@@ -197,7 +197,6 @@
 #include <alloca.h>
 #endif
 
-int     Force_ViewNumber = 0 ;
 List_T *Symbol_L;
 
 extern Context_T  CTX;
@@ -232,7 +231,7 @@ void  yyerror (char *s);
 void  vyyerror (char *fmt, ...);
 void  skip_until (char *skip, char *until);
 
-#line 67 "Gmsh.y"
+#line 66 "Gmsh.y"
 typedef union {
   char    *c;
   int      i;
@@ -566,40 +565,40 @@ static const short yyrhs[] = {   185,
 
 #if YYDEBUG != 0
 static const short yyrline[] = { 0,
-   150,   152,   153,   154,   161,   163,   166,   174,   188,   200,
-   202,   205,   207,   208,   211,   217,   222,   223,   224,   227,
-   231,   234,   240,   245,   251,   259,   264,   268,   274,   279,
-   283,   288,   292,   295,   300,   304,   308,   312,   317,   321,
-   324,   328,   332,   336,   340,   344,   348,   351,   355,   358,
-   362,   365,   374,   378,   384,   386,   387,   388,   389,   390,
-   391,   392,   393,   394,   395,   396,   399,   404,   433,   439,
-   446,   451,   452,   453,   454,   455,   456,   457,   458,   459,
-   460,   461,   462,   465,   468,   472,   478,   484,   487,   491,
-   497,   503,   506,   510,   516,   522,   525,   529,   537,   543,
-   546,   550,   558,   564,   567,   571,   579,   585,   588,   592,
-   604,   610,   613,   617,   629,   635,   638,   642,   654,   660,
-   663,   667,   680,   686,   689,   693,   706,   712,   715,   719,
-   732,   744,   746,   747,   748,   749,   751,   753,   755,   786,
-   820,   867,   882,   891,   906,   918,   932,   955,   979,   991,
-  1005,  1017,  1031,  1047,  1069,  1080,  1086,  1105,  1116,  1124,
-  1130,  1136,  1155,  1161,  1177,  1184,  1190,  1196,  1202,  1208,
-  1227,  1239,  1245,  1264,  1285,  1293,  1299,  1305,  1311,  1323,
-  1329,  1335,  1347,  1353,  1358,  1363,  1370,  1372,  1373,  1376,
-  1381,  1392,  1410,  1418,  1423,  1434,  1489,  1509,  1513,  1533,
-  1549,  1563,  1588,  1613,  1639,  1645,  1650,  1655,  1659,  1669,
-  1675,  1681,  1685,  1689,  1693,  1697,  1702,  1709,  1713,  1718,
-  1739,  1749,  1768,  1786,  1804,  1826,  1847,  1868,  1886,  1911,
-  1916,  1927,  1929,  1930,  1931,  1932,  1935,  1937,  1938,  1939,
-  1940,  1941,  1942,  1943,  1944,  1951,  1952,  1953,  1954,  1955,
-  1956,  1957,  1958,  1959,  1960,  1961,  1962,  1963,  1964,  1965,
-  1966,  1967,  1968,  1969,  1970,  1971,  1972,  1973,  1974,  1975,
-  1976,  1977,  1978,  1979,  1980,  1981,  1982,  1987,  1992,  1996,
-  2007,  2024,  2035,  2054,  2070,  2086,  2102,  2119,  2126,  2139,
-  2144,  2148,  2152,  2156,  2161,  2166,  2170,  2174,  2180,  2184,
-  2189,  2193,  2198,  2202,  2206,  2212,  2218,  2225,  2230,  2234,
-  2244,  2250,  2254,  2268,  2284,  2304,  2328,  2333,  2337,  2344,
-  2355,  2368,  2385,  2406,  2411,  2415,  2420,  2425,  2443,  2448,
-  2461,  2467,  2473,  2478,  2482
+   149,   151,   152,   153,   160,   162,   165,   173,   187,   199,
+   201,   204,   206,   207,   210,   216,   221,   222,   223,   226,
+   230,   233,   239,   244,   250,   258,   263,   267,   273,   278,
+   282,   287,   291,   294,   299,   303,   307,   311,   316,   320,
+   323,   327,   331,   335,   339,   343,   347,   350,   354,   357,
+   361,   364,   373,   377,   383,   385,   386,   387,   388,   389,
+   390,   391,   392,   393,   394,   395,   398,   403,   432,   438,
+   445,   450,   451,   452,   453,   454,   455,   456,   457,   458,
+   459,   460,   461,   464,   467,   471,   477,   483,   486,   490,
+   496,   502,   505,   509,   515,   521,   524,   528,   536,   542,
+   545,   549,   557,   563,   566,   570,   578,   584,   587,   591,
+   603,   609,   612,   616,   628,   634,   637,   641,   653,   659,
+   662,   666,   679,   685,   688,   692,   705,   711,   714,   718,
+   731,   743,   745,   746,   747,   748,   750,   752,   754,   785,
+   819,   866,   881,   890,   905,   917,   931,   954,   978,   990,
+  1004,  1016,  1030,  1046,  1068,  1079,  1085,  1104,  1115,  1123,
+  1129,  1135,  1154,  1160,  1176,  1183,  1189,  1195,  1201,  1207,
+  1226,  1238,  1244,  1263,  1284,  1292,  1298,  1304,  1310,  1322,
+  1328,  1334,  1346,  1352,  1357,  1362,  1369,  1371,  1372,  1375,
+  1380,  1391,  1409,  1417,  1422,  1433,  1488,  1508,  1512,  1532,
+  1548,  1562,  1587,  1612,  1638,  1644,  1649,  1654,  1658,  1668,
+  1674,  1680,  1684,  1688,  1692,  1696,  1701,  1708,  1712,  1717,
+  1738,  1748,  1767,  1785,  1803,  1825,  1846,  1867,  1885,  1910,
+  1915,  1926,  1928,  1929,  1930,  1931,  1934,  1936,  1937,  1938,
+  1939,  1940,  1941,  1942,  1943,  1950,  1951,  1952,  1953,  1954,
+  1955,  1956,  1957,  1958,  1959,  1960,  1961,  1962,  1963,  1964,
+  1965,  1966,  1967,  1968,  1969,  1970,  1971,  1972,  1973,  1974,
+  1975,  1976,  1977,  1978,  1979,  1980,  1981,  1986,  1991,  1995,
+  2006,  2023,  2034,  2053,  2069,  2085,  2101,  2118,  2125,  2138,
+  2143,  2147,  2151,  2155,  2160,  2165,  2169,  2173,  2179,  2183,
+  2188,  2192,  2197,  2201,  2205,  2211,  2217,  2224,  2229,  2233,
+  2243,  2249,  2253,  2267,  2283,  2303,  2327,  2332,  2336,  2343,
+  2354,  2367,  2384,  2405,  2410,  2414,  2419,  2424,  2442,  2447,
+  2460,  2466,  2472,  2477,  2481
 };
 #endif
 
@@ -2971,19 +2970,19 @@ yyreduce:
   switch (yyn) {
 
 case 4:
-#line 154 "Gmsh.y"
+#line 153 "Gmsh.y"
 { yyerrok ; return 1; ;
     break;}
 case 5:
-#line 162 "Gmsh.y"
+#line 161 "Gmsh.y"
 { yyval.d = yyvsp[0].d; ;
     break;}
 case 6:
-#line 163 "Gmsh.y"
+#line 162 "Gmsh.y"
 { yyval.d = -yyvsp[0].d; ;
     break;}
 case 7:
-#line 168 "Gmsh.y"
+#line 167 "Gmsh.y"
 {
       Msg(PARSER_INFO,"STL file format");
       STL_Surf = Create_Surface(1,MSH_SURF_STL,1);
@@ -2992,7 +2991,7 @@ case 7:
     ;
     break;}
 case 8:
-#line 182 "Gmsh.y"
+#line 181 "Gmsh.y"
 {
       STL_Surf->STL->Add_Facet( yyvsp[-12].d, yyvsp[-11].d, yyvsp[-10].d,
 				yyvsp[-8].d, yyvsp[-7].d, yyvsp[-6].d,
@@ -3001,7 +3000,7 @@ case 8:
     ;
     break;}
 case 9:
-#line 189 "Gmsh.y"
+#line 188 "Gmsh.y"
 {
       Msg(PARSER_INFO,"STL file format read");
       Tree_Add(THEM->Surfaces, &STL_Surf);
@@ -3009,79 +3008,79 @@ case 9:
     ;
     break;}
 case 12:
-#line 206 "Gmsh.y"
+#line 205 "Gmsh.y"
 { return 1; ;
     break;}
 case 13:
-#line 207 "Gmsh.y"
+#line 206 "Gmsh.y"
 { return 1; ;
     break;}
 case 14:
-#line 208 "Gmsh.y"
+#line 207 "Gmsh.y"
 { return 1; ;
     break;}
 case 15:
-#line 213 "Gmsh.y"
+#line 212 "Gmsh.y"
 {
       Msg(PARSER_INFO,"Step Iso-10303-21 file format");
       Create_Step_Solid_BRep();
     ;
     break;}
 case 16:
-#line 218 "Gmsh.y"
+#line 217 "Gmsh.y"
 {
       Msg(PARSER_INFO,"Step Iso-10303-21 file format read");
       Resolve_BREP ();
     ;
     break;}
 case 20:
-#line 229 "Gmsh.y"
+#line 228 "Gmsh.y"
 {
     ;
     break;}
 case 21:
-#line 232 "Gmsh.y"
+#line 231 "Gmsh.y"
 {
     ;
     break;}
 case 22:
-#line 236 "Gmsh.y"
+#line 235 "Gmsh.y"
 {
    ;
     break;}
 case 23:
-#line 242 "Gmsh.y"
+#line 241 "Gmsh.y"
 {
         Add_Cartesian_Point((int)yyvsp[-8].d,yyvsp[-4].c,yyvsp[-2].v[0],yyvsp[-2].v[1],yyvsp[-2].v[2]);
     ;
     break;}
 case 24:
-#line 248 "Gmsh.y"
+#line 247 "Gmsh.y"
 {
        Add_BSpline_Curve_With_Knots ((int)yyvsp[-22].d, yyvsp[-18].c, (int) yyvsp[-16].d, yyvsp[-14].l,	yyvsp[-6].l, yyvsp[-4].l, 0., 1.);
     ;
     break;}
 case 25:
-#line 255 "Gmsh.y"
+#line 254 "Gmsh.y"
 {
       Add_BSpline_Surface_With_Knots ((int)yyvsp[-30].d, yyvsp[-26].c, (int) yyvsp[-24].d, (int) yyvsp[-22].d, yyvsp[-20].l, yyvsp[-10].l,
 				      yyvsp[-8].l, yyvsp[-6].l, yyvsp[-4].l, 0., 1., 0., 1. );
     ;
     break;}
 case 26:
-#line 261 "Gmsh.y"
+#line 260 "Gmsh.y"
 {
       Add_Edge_Curve ((int)yyvsp[-14].d, yyvsp[-10].c , (int)yyvsp[-8].d , (int)yyvsp[-6].d, (int)yyvsp[-4].d);
     ;
     break;}
 case 27:
-#line 265 "Gmsh.y"
+#line 264 "Gmsh.y"
 {
       Add_Face_Outer_Bound((int)yyvsp[-10].d,yyvsp[-6].c,(int)yyvsp[-4].d,yyvsp[-2].i,1);
     ;
     break;}
 case 28:
-#line 269 "Gmsh.y"
+#line 268 "Gmsh.y"
 {
       /* La je dois voir la norme ! Face_Bound : trou externe a la surface ! */
       Msg(PARSER_INFO,"Found a face bound");
@@ -3089,207 +3088,207 @@ case 28:
     ;
     break;}
 case 29:
-#line 276 "Gmsh.y"
+#line 275 "Gmsh.y"
 {
       Add_Oriented_Edge((int)yyvsp[-14].d,yyvsp[-10].c,(int)yyvsp[-4].d,yyvsp[-2].i);
     ;
     break;}
 case 30:
-#line 280 "Gmsh.y"
+#line 279 "Gmsh.y"
 {
       Add_Edge_Loop((int)yyvsp[-8].d,yyvsp[-4].c,yyvsp[-2].l);
     ;
     break;}
 case 31:
-#line 285 "Gmsh.y"
+#line 284 "Gmsh.y"
 {
       Add_Advanced_Face((int)yyvsp[-12].d,yyvsp[-8].c,yyvsp[-6].l,(int)yyvsp[-4].d,yyvsp[-2].i);
     ;
     break;}
 case 32:
-#line 289 "Gmsh.y"
+#line 288 "Gmsh.y"
 {
       Add_Vertex_Point((int)yyvsp[-8].d,yyvsp[-4].c,(int)yyvsp[-2].d);
     ;
     break;}
 case 33:
-#line 293 "Gmsh.y"
+#line 292 "Gmsh.y"
 {
     ;
     break;}
 case 34:
-#line 297 "Gmsh.y"
+#line 296 "Gmsh.y"
 {
       Add_Axis2_Placement3D  ( (int)yyvsp[-12].d, (int)yyvsp[-4].d, (int)yyvsp[-2].d, (int)yyvsp[-6].d);
     ;
     break;}
 case 35:
-#line 301 "Gmsh.y"
+#line 300 "Gmsh.y"
 {
       Add_Direction((int)yyvsp[-8].d , yyvsp[-4].c, yyvsp[-2].v[0], yyvsp[-2].v[1], yyvsp[-2].v[2]);
     ;
     break;}
 case 36:
-#line 305 "Gmsh.y"
+#line 304 "Gmsh.y"
 {
       Add_Plane((int)yyvsp[-8].d,yyvsp[-4].c,(int)yyvsp[-2].d);
     ;
     break;}
 case 37:
-#line 309 "Gmsh.y"
+#line 308 "Gmsh.y"
 {
       Add_Line ((int)yyvsp[-10].d, yyvsp[-6].c , (int) yyvsp[-4].d, (int)yyvsp[-2].d);
     ;
     break;}
 case 38:
-#line 313 "Gmsh.y"
+#line 312 "Gmsh.y"
 {
       Msg(PARSER_INFO,"Found a closed shell");
       Add_Closed_Shell((int)yyvsp[-8].d, yyvsp[-4].c , yyvsp[-2].l);
     ;
     break;}
 case 39:
-#line 319 "Gmsh.y"
+#line 318 "Gmsh.y"
 {
     ;
     break;}
 case 40:
-#line 322 "Gmsh.y"
+#line 321 "Gmsh.y"
 {
     ;
     break;}
 case 41:
-#line 325 "Gmsh.y"
+#line 324 "Gmsh.y"
 {
       Add_Cylinder ((int)yyvsp[-10].d, yyvsp[-6].c , (int)yyvsp[-4].d, yyvsp[-2].d);
     ;
     break;}
 case 42:
-#line 329 "Gmsh.y"
+#line 328 "Gmsh.y"
 {
       Add_Cone ((int)yyvsp[-12].d, yyvsp[-8].c , (int)yyvsp[-6].d, yyvsp[-4].d,yyvsp[-2].d);
     ;
     break;}
 case 43:
-#line 333 "Gmsh.y"
+#line 332 "Gmsh.y"
 {
       Add_Torus ((int)yyvsp[-12].d, yyvsp[-8].c , (int)yyvsp[-6].d, yyvsp[-4].d,yyvsp[-2].d);
     ;
     break;}
 case 44:
-#line 337 "Gmsh.y"
+#line 336 "Gmsh.y"
 {
       Add_Circle((int) yyvsp[-10].d, yyvsp[-6].c, (int) yyvsp[-4].d, yyvsp[-2].d);
     ;
     break;}
 case 45:
-#line 341 "Gmsh.y"
+#line 340 "Gmsh.y"
 {
       Add_Ellipsis((int) yyvsp[-12].d, yyvsp[-8].c, (int) yyvsp[-6].d, yyvsp[-4].d, yyvsp[-2].d);
     ;
     break;}
 case 46:
-#line 346 "Gmsh.y"
+#line 345 "Gmsh.y"
 {
     ;
     break;}
 case 47:
-#line 349 "Gmsh.y"
+#line 348 "Gmsh.y"
 {
     ;
     break;}
 case 48:
-#line 353 "Gmsh.y"
+#line 352 "Gmsh.y"
 {
     ;
     break;}
 case 49:
-#line 356 "Gmsh.y"
+#line 355 "Gmsh.y"
 {
     ;
     break;}
 case 50:
-#line 360 "Gmsh.y"
+#line 359 "Gmsh.y"
 {
     ;
     break;}
 case 51:
-#line 363 "Gmsh.y"
+#line 362 "Gmsh.y"
 {
     ;
     break;}
 case 52:
-#line 366 "Gmsh.y"
+#line 365 "Gmsh.y"
 {
     ;
     break;}
 case 53:
-#line 376 "Gmsh.y"
+#line 375 "Gmsh.y"
 {
   ;
     break;}
 case 54:
-#line 379 "Gmsh.y"
+#line 378 "Gmsh.y"
 {
       Msg(PARSER_INFO,"Gmsh file format read");
     ;
     break;}
 case 55:
-#line 385 "Gmsh.y"
+#line 384 "Gmsh.y"
 { return 1; ;
     break;}
 case 56:
-#line 386 "Gmsh.y"
+#line 385 "Gmsh.y"
 { return 1; ;
     break;}
 case 57:
-#line 387 "Gmsh.y"
+#line 386 "Gmsh.y"
 { return 1; ;
     break;}
 case 58:
-#line 388 "Gmsh.y"
+#line 387 "Gmsh.y"
 { return 1; ;
     break;}
 case 59:
-#line 389 "Gmsh.y"
+#line 388 "Gmsh.y"
 { return 1; ;
     break;}
 case 60:
-#line 390 "Gmsh.y"
+#line 389 "Gmsh.y"
 { return 1; ;
     break;}
 case 61:
-#line 391 "Gmsh.y"
+#line 390 "Gmsh.y"
 { return 1; ;
     break;}
 case 62:
-#line 392 "Gmsh.y"
+#line 391 "Gmsh.y"
 { return 1; ;
     break;}
 case 63:
-#line 393 "Gmsh.y"
+#line 392 "Gmsh.y"
 { return 1; ;
     break;}
 case 64:
-#line 394 "Gmsh.y"
+#line 393 "Gmsh.y"
 { return 1; ;
     break;}
 case 65:
-#line 395 "Gmsh.y"
+#line 394 "Gmsh.y"
 { return 1; ;
     break;}
 case 66:
-#line 396 "Gmsh.y"
+#line 395 "Gmsh.y"
 { return 1; ;
     break;}
 case 67:
-#line 401 "Gmsh.y"
+#line 400 "Gmsh.y"
 {
       Msg(DIRECT, yyvsp[-2].c);
     ;
     break;}
 case 68:
-#line 405 "Gmsh.y"
+#line 404 "Gmsh.y"
 {
       for(i = 0 ; i<List_Nbr(yyvsp[-2].l) ; i++){
 	if(!i){
@@ -3314,98 +3313,98 @@ case 68:
     ;
     break;}
 case 69:
-#line 435 "Gmsh.y"
+#line 434 "Gmsh.y"
 { 
       if(!strcmp(yyvsp[-5].c, "View"))
-	EndView(1, Force_ViewNumber, yyname, yyvsp[-4].c); 
+	EndView(1, yyname, yyvsp[-4].c); 
     ;
     break;}
 case 70:
-#line 440 "Gmsh.y"
+#line 439 "Gmsh.y"
 {
       if(!strcmp(yyvsp[-7].c, "View"))
-	EndView(1, Force_ViewNumber, yyname, yyvsp[-6].c);
+	EndView(1, yyname, yyvsp[-6].c);
     ;
     break;}
 case 71:
-#line 448 "Gmsh.y"
+#line 447 "Gmsh.y"
 {
-      BeginView(1, Force_ViewNumber); 
+      BeginView(1); 
     ;
     break;}
 case 84:
-#line 467 "Gmsh.y"
+#line 466 "Gmsh.y"
 { List_Add(ActualView->SP, &yyvsp[0].d) ; ;
     break;}
 case 85:
-#line 469 "Gmsh.y"
+#line 468 "Gmsh.y"
 { List_Add(ActualView->SP, &yyvsp[0].d) ; ;
     break;}
 case 86:
-#line 474 "Gmsh.y"
+#line 473 "Gmsh.y"
 { 
       List_Add(ActualView->SP, &yyvsp[-5].d); List_Add(ActualView->SP, &yyvsp[-3].d);
       List_Add(ActualView->SP, &yyvsp[-1].d);
     ;
     break;}
 case 87:
-#line 479 "Gmsh.y"
+#line 478 "Gmsh.y"
 {
       ActualView->NbSP++ ;
     ;
     break;}
 case 88:
-#line 486 "Gmsh.y"
+#line 485 "Gmsh.y"
 { List_Add(ActualView->VP, &yyvsp[0].d) ; ;
     break;}
 case 89:
-#line 488 "Gmsh.y"
+#line 487 "Gmsh.y"
 { List_Add(ActualView->VP, &yyvsp[0].d) ; ;
     break;}
 case 90:
-#line 493 "Gmsh.y"
+#line 492 "Gmsh.y"
 { 
       List_Add(ActualView->VP, &yyvsp[-5].d); List_Add(ActualView->VP, &yyvsp[-3].d);
       List_Add(ActualView->VP, &yyvsp[-1].d); 
     ;
     break;}
 case 91:
-#line 498 "Gmsh.y"
+#line 497 "Gmsh.y"
 {
       ActualView->NbVP++ ;
     ;
     break;}
 case 92:
-#line 505 "Gmsh.y"
+#line 504 "Gmsh.y"
 { List_Add(ActualView->TP, &yyvsp[0].d) ; ;
     break;}
 case 93:
-#line 507 "Gmsh.y"
+#line 506 "Gmsh.y"
 { List_Add(ActualView->TP, &yyvsp[0].d) ; ;
     break;}
 case 94:
-#line 512 "Gmsh.y"
+#line 511 "Gmsh.y"
 { 
       List_Add(ActualView->TP, &yyvsp[-5].d); List_Add(ActualView->TP, &yyvsp[-3].d);
       List_Add(ActualView->TP, &yyvsp[-1].d);
     ;
     break;}
 case 95:
-#line 517 "Gmsh.y"
+#line 516 "Gmsh.y"
 {
       ActualView->NbTP++ ;
     ;
     break;}
 case 96:
-#line 524 "Gmsh.y"
+#line 523 "Gmsh.y"
 { List_Add(ActualView->SL, &yyvsp[0].d) ; ;
     break;}
 case 97:
-#line 526 "Gmsh.y"
+#line 525 "Gmsh.y"
 { List_Add(ActualView->SL, &yyvsp[0].d) ; ;
     break;}
 case 98:
-#line 532 "Gmsh.y"
+#line 531 "Gmsh.y"
 { 
       List_Add(ActualView->SL, &yyvsp[-11].d); List_Add(ActualView->SL, &yyvsp[-5].d);
       List_Add(ActualView->SL, &yyvsp[-9].d); List_Add(ActualView->SL, &yyvsp[-3].d);
@@ -3413,21 +3412,21 @@ case 98:
     ;
     break;}
 case 99:
-#line 538 "Gmsh.y"
+#line 537 "Gmsh.y"
 {
       ActualView->NbSL++ ;
     ;
     break;}
 case 100:
-#line 545 "Gmsh.y"
+#line 544 "Gmsh.y"
 { List_Add(ActualView->VL, &yyvsp[0].d) ; ;
     break;}
 case 101:
-#line 547 "Gmsh.y"
+#line 546 "Gmsh.y"
 { List_Add(ActualView->VL, &yyvsp[0].d) ; ;
     break;}
 case 102:
-#line 553 "Gmsh.y"
+#line 552 "Gmsh.y"
 { 
       List_Add(ActualView->VL, &yyvsp[-11].d); List_Add(ActualView->VL, &yyvsp[-5].d);
       List_Add(ActualView->VL, &yyvsp[-9].d); List_Add(ActualView->VL, &yyvsp[-3].d);
@@ -3435,21 +3434,21 @@ case 102:
     ;
     break;}
 case 103:
-#line 559 "Gmsh.y"
+#line 558 "Gmsh.y"
 {
       ActualView->NbVL++ ;
     ;
     break;}
 case 104:
-#line 566 "Gmsh.y"
+#line 565 "Gmsh.y"
 { List_Add(ActualView->TL, &yyvsp[0].d) ; ;
     break;}
 case 105:
-#line 568 "Gmsh.y"
+#line 567 "Gmsh.y"
 { List_Add(ActualView->TL, &yyvsp[0].d) ; ;
     break;}
 case 106:
-#line 574 "Gmsh.y"
+#line 573 "Gmsh.y"
 { 
       List_Add(ActualView->TL, &yyvsp[-11].d); List_Add(ActualView->TL, &yyvsp[-5].d);
       List_Add(ActualView->TL, &yyvsp[-9].d); List_Add(ActualView->TL, &yyvsp[-3].d);
@@ -3457,21 +3456,21 @@ case 106:
     ;
     break;}
 case 107:
-#line 580 "Gmsh.y"
+#line 579 "Gmsh.y"
 {
       ActualView->NbTL++ ;
     ;
     break;}
 case 108:
-#line 587 "Gmsh.y"
+#line 586 "Gmsh.y"
 { List_Add(ActualView->ST, &yyvsp[0].d) ; ;
     break;}
 case 109:
-#line 589 "Gmsh.y"
+#line 588 "Gmsh.y"
 { List_Add(ActualView->ST, &yyvsp[0].d) ; ;
     break;}
 case 110:
-#line 596 "Gmsh.y"
+#line 595 "Gmsh.y"
 { 
       List_Add(ActualView->ST, &yyvsp[-17].d); List_Add(ActualView->ST, &yyvsp[-11].d);
       List_Add(ActualView->ST, &yyvsp[-5].d);
@@ -3482,21 +3481,21 @@ case 110:
     ;
     break;}
 case 111:
-#line 605 "Gmsh.y"
+#line 604 "Gmsh.y"
 {
       ActualView->NbST++ ;
     ;
     break;}
 case 112:
-#line 612 "Gmsh.y"
+#line 611 "Gmsh.y"
 { List_Add(ActualView->VT, &yyvsp[0].d) ; ;
     break;}
 case 113:
-#line 614 "Gmsh.y"
+#line 613 "Gmsh.y"
 { List_Add(ActualView->VT, &yyvsp[0].d) ; ;
     break;}
 case 114:
-#line 621 "Gmsh.y"
+#line 620 "Gmsh.y"
 { 
       List_Add(ActualView->VT, &yyvsp[-17].d); List_Add(ActualView->VT, &yyvsp[-11].d);
       List_Add(ActualView->VT, &yyvsp[-5].d);
@@ -3507,21 +3506,21 @@ case 114:
     ;
     break;}
 case 115:
-#line 630 "Gmsh.y"
+#line 629 "Gmsh.y"
 {
       ActualView->NbVT++ ;
     ;
     break;}
 case 116:
-#line 637 "Gmsh.y"
+#line 636 "Gmsh.y"
 { List_Add(ActualView->TT, &yyvsp[0].d) ; ;
     break;}
 case 117:
-#line 639 "Gmsh.y"
+#line 638 "Gmsh.y"
 { List_Add(ActualView->TT, &yyvsp[0].d) ; ;
     break;}
 case 118:
-#line 646 "Gmsh.y"
+#line 645 "Gmsh.y"
 { 
       List_Add(ActualView->TT, &yyvsp[-17].d); List_Add(ActualView->TT, &yyvsp[-11].d);
       List_Add(ActualView->TT, &yyvsp[-5].d);
@@ -3532,21 +3531,21 @@ case 118:
     ;
     break;}
 case 119:
-#line 655 "Gmsh.y"
+#line 654 "Gmsh.y"
 {
       ActualView->NbTT++ ;
     ;
     break;}
 case 120:
-#line 662 "Gmsh.y"
+#line 661 "Gmsh.y"
 { List_Add(ActualView->SS, &yyvsp[0].d) ; ;
     break;}
 case 121:
-#line 664 "Gmsh.y"
+#line 663 "Gmsh.y"
 { List_Add(ActualView->SS, &yyvsp[0].d) ; ;
     break;}
 case 122:
-#line 672 "Gmsh.y"
+#line 671 "Gmsh.y"
 { 
       List_Add(ActualView->SS, &yyvsp[-23].d);  List_Add(ActualView->SS, &yyvsp[-17].d);
       List_Add(ActualView->SS, &yyvsp[-11].d); List_Add(ActualView->SS, &yyvsp[-5].d);
@@ -3557,21 +3556,21 @@ case 122:
     ;
     break;}
 case 123:
-#line 681 "Gmsh.y"
+#line 680 "Gmsh.y"
 {
       ActualView->NbSS++ ;
     ;
     break;}
 case 124:
-#line 688 "Gmsh.y"
+#line 687 "Gmsh.y"
 { List_Add(ActualView->VS, &yyvsp[0].d) ; ;
     break;}
 case 125:
-#line 690 "Gmsh.y"
+#line 689 "Gmsh.y"
 { List_Add(ActualView->VS, &yyvsp[0].d) ; ;
     break;}
 case 126:
-#line 698 "Gmsh.y"
+#line 697 "Gmsh.y"
 { 
       List_Add(ActualView->VS, &yyvsp[-23].d);  List_Add(ActualView->VS, &yyvsp[-17].d);
       List_Add(ActualView->VS, &yyvsp[-11].d); List_Add(ActualView->VS, &yyvsp[-5].d);
@@ -3582,21 +3581,21 @@ case 126:
     ;
     break;}
 case 127:
-#line 707 "Gmsh.y"
+#line 706 "Gmsh.y"
 {
       ActualView->NbVS++ ;
     ;
     break;}
 case 128:
-#line 714 "Gmsh.y"
+#line 713 "Gmsh.y"
 { List_Add(ActualView->TS, &yyvsp[0].d) ; ;
     break;}
 case 129:
-#line 716 "Gmsh.y"
+#line 715 "Gmsh.y"
 { List_Add(ActualView->TS, &yyvsp[0].d) ; ;
     break;}
 case 130:
-#line 724 "Gmsh.y"
+#line 723 "Gmsh.y"
 { 
       List_Add(ActualView->TS, &yyvsp[-23].d);  List_Add(ActualView->TS, &yyvsp[-17].d);
       List_Add(ActualView->TS, &yyvsp[-11].d); List_Add(ActualView->TS, &yyvsp[-5].d);
@@ -3607,41 +3606,41 @@ case 130:
     ;
     break;}
 case 131:
-#line 733 "Gmsh.y"
+#line 732 "Gmsh.y"
 {
       ActualView->NbTS++ ;
     ;
     break;}
 case 132:
-#line 745 "Gmsh.y"
+#line 744 "Gmsh.y"
 { yyval.i = 0 ; ;
     break;}
 case 133:
-#line 746 "Gmsh.y"
+#line 745 "Gmsh.y"
 { yyval.i = 1 ; ;
     break;}
 case 134:
-#line 747 "Gmsh.y"
+#line 746 "Gmsh.y"
 { yyval.i = 2 ; ;
     break;}
 case 135:
-#line 748 "Gmsh.y"
+#line 747 "Gmsh.y"
 { yyval.i = 3 ; ;
     break;}
 case 136:
-#line 749 "Gmsh.y"
+#line 748 "Gmsh.y"
 { yyval.i = 4 ; ;
     break;}
 case 137:
-#line 752 "Gmsh.y"
+#line 751 "Gmsh.y"
 { yyval.i = 1 ; ;
     break;}
 case 138:
-#line 753 "Gmsh.y"
+#line 752 "Gmsh.y"
 { yyval.i = -1 ; ;
     break;}
 case 139:
-#line 760 "Gmsh.y"
+#line 759 "Gmsh.y"
 {
       TheSymbol.Name = yyvsp[-3].c;
       if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))){
@@ -3669,7 +3668,7 @@ case 139:
     ;
     break;}
 case 140:
-#line 787 "Gmsh.y"
+#line 786 "Gmsh.y"
 {
       TheSymbol.Name = yyvsp[-6].c;
       if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))){
@@ -3704,7 +3703,7 @@ case 140:
     ;
     break;}
 case 141:
-#line 821 "Gmsh.y"
+#line 820 "Gmsh.y"
 {
       if(List_Nbr(yyvsp[-5].l) != List_Nbr(yyvsp[-1].l))
 	vyyerror("Incompatible array dimensions in affectation");
@@ -3752,7 +3751,7 @@ case 141:
     ;
     break;}
 case 142:
-#line 868 "Gmsh.y"
+#line 867 "Gmsh.y"
 {
       TheSymbol.Name = yyvsp[-5].c;
       if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))){
@@ -3768,7 +3767,7 @@ case 142:
     ;
     break;}
 case 143:
-#line 883 "Gmsh.y"
+#line 882 "Gmsh.y"
 {
       TheSymbol.Name = yyvsp[-2].c;
       if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols)))
@@ -3778,7 +3777,7 @@ case 143:
     ;
     break;}
 case 144:
-#line 892 "Gmsh.y"
+#line 891 "Gmsh.y"
 {
       TheSymbol.Name = yyvsp[-5].c ;
       if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols)))
@@ -3792,7 +3791,7 @@ case 144:
     ;
     break;}
 case 145:
-#line 907 "Gmsh.y"
+#line 906 "Gmsh.y"
 { 
       if(!(pStrCat = Get_StringOptionCategory(yyvsp[-5].c)))
 	vyyerror("Unknown String Option Class '%s'", yyvsp[-5].c);
@@ -3805,7 +3804,7 @@ case 145:
     ;
     break;}
 case 146:
-#line 919 "Gmsh.y"
+#line 918 "Gmsh.y"
 { 
       if(!(pStrCat = Get_StringOptionCategory(yyvsp[-8].c)))
 	vyyerror("Unknown String Option Class '%s'", yyvsp[-8].c);
@@ -3818,7 +3817,7 @@ case 146:
     ;
     break;}
 case 147:
-#line 933 "Gmsh.y"
+#line 932 "Gmsh.y"
 {
       if(!(pNumCat = Get_NumberOptionCategory(yyvsp[-5].c)))
 	vyyerror("Unknown Numeric Option Class '%s'", yyvsp[-5].c);
@@ -3842,7 +3841,7 @@ case 147:
     ;
     break;}
 case 148:
-#line 956 "Gmsh.y"
+#line 955 "Gmsh.y"
 {
       if(!(pNumCat = Get_NumberOptionCategory(yyvsp[-8].c)))
 	vyyerror("Unknown Numeric Option Class '%s'", yyvsp[-8].c);
@@ -3867,7 +3866,7 @@ case 148:
     ;
     break;}
 case 149:
-#line 980 "Gmsh.y"
+#line 979 "Gmsh.y"
 {
       if(!(pNumCat = Get_NumberOptionCategory(yyvsp[-4].c)))
 	vyyerror("Unknown Numeric Option Class '%s'", yyvsp[-4].c);
@@ -3880,7 +3879,7 @@ case 149:
     ;
     break;}
 case 150:
-#line 992 "Gmsh.y"
+#line 991 "Gmsh.y"
 {
       if(!(pNumCat = Get_NumberOptionCategory(yyvsp[-7].c)))
 	vyyerror("Unknown Numeric Option Class '%s'", yyvsp[-7].c);
@@ -3893,7 +3892,7 @@ case 150:
     ;
     break;}
 case 151:
-#line 1006 "Gmsh.y"
+#line 1005 "Gmsh.y"
 {
       if(!(pColCat = Get_ColorOptionCategory(yyvsp[-7].c)))
 	vyyerror("Unknown Color Option Class '%s'", yyvsp[-7].c);
@@ -3906,7 +3905,7 @@ case 151:
     ;
     break;}
 case 152:
-#line 1018 "Gmsh.y"
+#line 1017 "Gmsh.y"
 {
       if(!(pColCat = Get_ColorOptionCategory(yyvsp[-10].c)))
 	vyyerror("Unknown Color Option Class '%s'", yyvsp[-10].c);
@@ -3919,7 +3918,7 @@ case 152:
     ;
     break;}
 case 153:
-#line 1032 "Gmsh.y"
+#line 1031 "Gmsh.y"
 {
       ColorTable *ct = Get_ColorTable(0);
       if(!ct)
@@ -3936,7 +3935,7 @@ case 153:
     ;
     break;}
 case 154:
-#line 1048 "Gmsh.y"
+#line 1047 "Gmsh.y"
 {
       ColorTable *ct = Get_ColorTable((int)yyvsp[-6].d);
       if(!ct)
@@ -3953,7 +3952,7 @@ case 154:
     ;
     break;}
 case 155:
-#line 1074 "Gmsh.y"
+#line 1073 "Gmsh.y"
 {
       Cdbpts101((int)yyvsp[-4].d,yyvsp[-1].v[0],yyvsp[-1].v[1],yyvsp[-1].v[2],yyvsp[-1].v[3],yyvsp[-1].v[4]);
       yyval.s.Type = MSH_POINT;
@@ -3961,7 +3960,7 @@ case 155:
     ;
     break;}
 case 156:
-#line 1081 "Gmsh.y"
+#line 1080 "Gmsh.y"
 {
       Cdbz101((int)yyvsp[-4].d,MSH_PHYSICAL_POINT,0,0,0,0,0,NULL,yyvsp[-1].l,NULL);
       yyval.s.Type = MSH_PHYSICAL_POINT;
@@ -3969,7 +3968,7 @@ case 156:
     ;
     break;}
 case 157:
-#line 1087 "Gmsh.y"
+#line 1086 "Gmsh.y"
 {
       Vertex *v;
       Attractor *a;
@@ -3990,7 +3989,7 @@ case 157:
     ;
     break;}
 case 158:
-#line 1106 "Gmsh.y"
+#line 1105 "Gmsh.y"
 {
       for(i=0;i<List_Nbr(yyvsp[-3].l);i++){
 	List_Read(yyvsp[-3].l,i,&d);
@@ -4003,14 +4002,14 @@ case 158:
     ;
     break;}
 case 159:
-#line 1117 "Gmsh.y"
+#line 1116 "Gmsh.y"
 {
       yyval.s.Type = MSH_POINT;
       yyval.s.Num  = (int)yyvsp[-2].d;
     ;
     break;}
 case 160:
-#line 1125 "Gmsh.y"
+#line 1124 "Gmsh.y"
 {
       Cdbseg101((int)yyvsp[-4].d,MSH_SEGM_LINE,1,yyvsp[-1].l,NULL,-1,-1,0.,1.,NULL,NULL,NULL);
       yyval.s.Type = MSH_SEGM_LINE;
@@ -4018,7 +4017,7 @@ case 160:
     ;
     break;}
 case 161:
-#line 1131 "Gmsh.y"
+#line 1130 "Gmsh.y"
 {
       Cdbseg101((int)yyvsp[-4].d,MSH_SEGM_SPLN,3,yyvsp[-1].l,NULL,-1,-1,0.,1.,NULL,NULL,NULL);
       yyval.s.Type = MSH_SEGM_SPLN;
@@ -4026,7 +4025,7 @@ case 161:
     ;
     break;}
 case 162:
-#line 1137 "Gmsh.y"
+#line 1136 "Gmsh.y"
 {
       Curve *c;
       Attractor *a;
@@ -4047,7 +4046,7 @@ case 162:
     ;
     break;}
 case 163:
-#line 1156 "Gmsh.y"
+#line 1155 "Gmsh.y"
 {
       Cdbseg101((int)yyvsp[-4].d,MSH_SEGM_CIRC,2,yyvsp[-1].l,NULL,-1,-1,0.,1.,NULL,NULL,NULL);
       yyval.s.Type = MSH_SEGM_CIRC ;
@@ -4055,7 +4054,7 @@ case 163:
     ;
     break;}
 case 164:
-#line 1162 "Gmsh.y"
+#line 1161 "Gmsh.y"
 {
       List_T *temp;
       int i,j;
@@ -4073,7 +4072,7 @@ case 164:
     ;
     break;}
 case 165:
-#line 1179 "Gmsh.y"
+#line 1178 "Gmsh.y"
 {
       Cdbseg101((int)yyvsp[-14].d,MSH_SEGM_PARAMETRIC,2,NULL,NULL,-1,-1,yyvsp[-10].d,yyvsp[-8].d,yyvsp[-6].c,yyvsp[-4].c,yyvsp[-2].c);
       yyval.s.Type = MSH_SEGM_PARAMETRIC ;
@@ -4081,7 +4080,7 @@ case 165:
     ;
     break;}
 case 166:
-#line 1185 "Gmsh.y"
+#line 1184 "Gmsh.y"
 {
       Cdbseg101((int)yyvsp[-4].d,MSH_SEGM_ELLI,2,yyvsp[-1].l,NULL,-1,-1,0.,1.,NULL,NULL,NULL);
       yyval.s.Type = MSH_SEGM_ELLI ;
@@ -4089,7 +4088,7 @@ case 166:
     ;
     break;}
 case 167:
-#line 1191 "Gmsh.y"
+#line 1190 "Gmsh.y"
 {
       Cdbz101((int)yyvsp[-4].d,MSH_PHYSICAL_LINE,0,0,0,0,0,NULL,yyvsp[-1].l,NULL);
       yyval.s.Type = MSH_PHYSICAL_LINE;
@@ -4097,7 +4096,7 @@ case 167:
     ;
     break;}
 case 168:
-#line 1197 "Gmsh.y"
+#line 1196 "Gmsh.y"
 {
       yyval.s.Type = MSH_SEGM_LOOP;
       Cdbz101((int)yyvsp[-4].d,yyval.s.Type,0,0,0,0,0,NULL,yyvsp[-1].l,NULL);
@@ -4105,7 +4104,7 @@ case 168:
     ;
     break;}
 case 169:
-#line 1203 "Gmsh.y"
+#line 1202 "Gmsh.y"
 {
       Cdbseg101((int)yyvsp[-4].d,MSH_SEGM_BSPLN,2,yyvsp[-1].l,NULL,-1,-1,0.,1.,NULL,NULL,NULL);
       yyval.s.Type = MSH_SEGM_BSPLN;
@@ -4113,7 +4112,7 @@ case 169:
     ;
     break;}
 case 170:
-#line 1209 "Gmsh.y"
+#line 1208 "Gmsh.y"
 {
       List_T *Temp;
       int i;
@@ -4134,7 +4133,7 @@ case 170:
     ;
     break;}
 case 171:
-#line 1228 "Gmsh.y"
+#line 1227 "Gmsh.y"
 {
       yyval.s.Num = (int)yyvsp[-2].d;
       Curve *c = FindCurve(yyval.s.Num,THEM);
@@ -4145,7 +4144,7 @@ case 171:
     ;
     break;}
 case 172:
-#line 1240 "Gmsh.y"
+#line 1239 "Gmsh.y"
 {
       Cdbz101((int)yyvsp[-4].d,MSH_SURF_PLAN,0,0,0,0,0,NULL,yyvsp[-1].l,NULL);
       yyval.s.Type = MSH_SURF_PLAN;
@@ -4153,7 +4152,7 @@ case 172:
     ;
     break;}
 case 173:
-#line 1246 "Gmsh.y"
+#line 1245 "Gmsh.y"
 {
       Surface *s,*support;
       support = FindSurface((int)yyvsp[-4].d,THEM);
@@ -4174,7 +4173,7 @@ case 173:
     ;
     break;}
 case 174:
-#line 1265 "Gmsh.y"
+#line 1264 "Gmsh.y"
 {
       List_Read(yyvsp[-1].l,0,&d);
       i = (int)d;
@@ -4197,7 +4196,7 @@ case 174:
     ;
     break;}
 case 175:
-#line 1288 "Gmsh.y"
+#line 1287 "Gmsh.y"
 {
       CreateNurbsSurface ( (int) yyvsp[-16].d , (int)yyvsp[-4].d , (int)yyvsp[-2].d  , yyvsp[-13].l, yyvsp[-10].l, yyvsp[-8].l);
       yyval.s.Type  = MSH_SURF_NURBS;
@@ -4205,13 +4204,13 @@ case 175:
     ;
     break;}
 case 176:
-#line 1296 "Gmsh.y"
+#line 1295 "Gmsh.y"
 {
       CreateNurbsSurfaceSupport ((int)yyvsp[-16].d, (int) yyvsp[-4].d , (int) yyvsp[-2].d , yyvsp[-13].l, yyvsp[-10].l, yyvsp[-8].l);
     ;
     break;}
 case 177:
-#line 1300 "Gmsh.y"
+#line 1299 "Gmsh.y"
 {
       Cdbz101((int)yyvsp[-4].d,MSH_PHYSICAL_SURFACE,0,0,0,0,0,NULL,yyvsp[-1].l,NULL);
       yyval.s.Type = MSH_PHYSICAL_SURFACE;
@@ -4219,7 +4218,7 @@ case 177:
     ;
     break;}
 case 178:
-#line 1306 "Gmsh.y"
+#line 1305 "Gmsh.y"
 {
       Cdbz101((int)yyvsp[-4].d,MSH_SURF_LOOP,0,0,0,0,0,NULL,yyvsp[-1].l,NULL);
       yyval.s.Type = MSH_SURF_LOOP;
@@ -4227,7 +4226,7 @@ case 178:
     ;
     break;}
 case 179:
-#line 1312 "Gmsh.y"
+#line 1311 "Gmsh.y"
 {
       yyval.s.Num = (int)yyvsp[-2].d;
       Surface *s = FindSurface(yyval.s.Num,THEM);
@@ -4238,7 +4237,7 @@ case 179:
      ;
     break;}
 case 180:
-#line 1324 "Gmsh.y"
+#line 1323 "Gmsh.y"
 {
       Cdbz101((int)yyvsp[-4].d,MSH_VOLUME,0,0,0,0,0,NULL,yyvsp[-1].l,NULL);
       yyval.s.Type = MSH_VOLUME;
@@ -4246,7 +4245,7 @@ case 180:
     ;
     break;}
 case 181:
-#line 1330 "Gmsh.y"
+#line 1329 "Gmsh.y"
 {
       Cdbz101((int)yyvsp[-4].d,MSH_VOLUME,0,0,0,0,0,NULL,yyvsp[-1].l,NULL);
       yyval.s.Type = MSH_VOLUME;
@@ -4254,7 +4253,7 @@ case 181:
     ;
     break;}
 case 182:
-#line 1336 "Gmsh.y"
+#line 1335 "Gmsh.y"
 {
       Cdbz101((int)yyvsp[-4].d,MSH_PHYSICAL_VOLUME,0,0,0,0,0,NULL,yyvsp[-1].l,NULL);
       yyval.s.Type = MSH_PHYSICAL_VOLUME;
@@ -4262,60 +4261,60 @@ case 182:
     ;
     break;}
 case 183:
-#line 1349 "Gmsh.y"
+#line 1348 "Gmsh.y"
 {
       TranslateShapes (yyvsp[-3].v[0],yyvsp[-3].v[1],yyvsp[-3].v[2],yyvsp[-1].l,1);
       yyval.l = yyvsp[-1].l;
     ;
     break;}
 case 184:
-#line 1354 "Gmsh.y"
+#line 1353 "Gmsh.y"
 {
       RotateShapes(yyvsp[-8].v[0],yyvsp[-8].v[1],yyvsp[-8].v[2],yyvsp[-6].v[0],yyvsp[-6].v[1],yyvsp[-6].v[2],yyvsp[-4].d,yyvsp[-1].l);
       yyval.l = yyvsp[-1].l;
     ;
     break;}
 case 185:
-#line 1359 "Gmsh.y"
+#line 1358 "Gmsh.y"
 {
       SymmetryShapes(yyvsp[-3].v[0],yyvsp[-3].v[1],yyvsp[-3].v[2],yyvsp[-3].v[3],yyvsp[-1].l,1);
       yyval.l = yyvsp[-1].l;
     ;
     break;}
 case 186:
-#line 1364 "Gmsh.y"
+#line 1363 "Gmsh.y"
 {
       DilatShapes(yyvsp[-6].v[0],yyvsp[-6].v[1],yyvsp[-6].v[2],yyvsp[-4].d,yyvsp[-1].l,1);
       yyval.l = yyvsp[-1].l;
     ;
     break;}
 case 187:
-#line 1371 "Gmsh.y"
+#line 1370 "Gmsh.y"
 { yyval.l = yyvsp[0].l; ;
     break;}
 case 188:
-#line 1372 "Gmsh.y"
+#line 1371 "Gmsh.y"
 { yyval.l = yyvsp[0].l; ;
     break;}
 case 189:
-#line 1373 "Gmsh.y"
+#line 1372 "Gmsh.y"
 { yyval.l = yyvsp[0].l; ;
     break;}
 case 190:
-#line 1378 "Gmsh.y"
+#line 1377 "Gmsh.y"
 {
       yyval.l = List_Create(3,3,sizeof(Shape));
     ;
     break;}
 case 191:
-#line 1382 "Gmsh.y"
+#line 1381 "Gmsh.y"
 {
       List_Add(yyval.l,&yyvsp[0].s);
       yyval.l = yyvsp[-1].l;
     ;
     break;}
 case 192:
-#line 1394 "Gmsh.y"
+#line 1393 "Gmsh.y"
 {
       yyval.l = List_Create(3,3,sizeof(Shape));
       for(i=0;i<List_Nbr(yyvsp[-1].l);i++){
@@ -4327,7 +4326,7 @@ case 192:
     ;
     break;}
 case 193:
-#line 1412 "Gmsh.y"
+#line 1411 "Gmsh.y"
 {
       for(i=0;i<List_Nbr(yyvsp[-1].l);i++){
 	List_Read (yyvsp[-1].l,i,&TheShape);
@@ -4336,20 +4335,20 @@ case 193:
     ;
     break;}
 case 194:
-#line 1419 "Gmsh.y"
+#line 1418 "Gmsh.y"
 {
 	if(!strcmp(yyvsp[-4].c, "View"))
 	  FreeView((int)yyvsp[-2].d);
       ;
     break;}
 case 195:
-#line 1424 "Gmsh.y"
+#line 1423 "Gmsh.y"
 {
       Init_Mesh(THEM, 1);
     ;
     break;}
 case 196:
-#line 1436 "Gmsh.y"
+#line 1435 "Gmsh.y"
 {
       if(!strcmp(yyvsp[-2].c, "Include")){
 
@@ -4405,7 +4404,7 @@ case 196:
     ;
     break;}
 case 197:
-#line 1490 "Gmsh.y"
+#line 1489 "Gmsh.y"
 {
       if(!strcmp(yyvsp[-2].c, "Sleep")){
 
@@ -4427,13 +4426,13 @@ case 197:
     ;
     break;}
 case 198:
-#line 1510 "Gmsh.y"
+#line 1509 "Gmsh.y"
 {
       exit(0);
     ;
     break;}
 case 199:
-#line 1514 "Gmsh.y"
+#line 1513 "Gmsh.y"
 {
       if(!CTX.batch){ // we're in interactive mode
 	if(Tree_Nbr(THEM->Points) != Last_NumberOfPoints){
@@ -4449,7 +4448,7 @@ case 199:
     ;
     break;}
 case 200:
-#line 1536 "Gmsh.y"
+#line 1535 "Gmsh.y"
 {
       FILE* ff;
       if(RecursionLevel)
@@ -4465,7 +4464,7 @@ case 200:
     ;
     break;}
 case 201:
-#line 1550 "Gmsh.y"
+#line 1549 "Gmsh.y"
 {
       FILE* ff;
       if(RecursionLevel)
@@ -4481,7 +4480,7 @@ case 201:
     ;
     break;}
 case 202:
-#line 1564 "Gmsh.y"
+#line 1563 "Gmsh.y"
 {
       FILE* ff;
       if(RecursionLevel)
@@ -4508,7 +4507,7 @@ case 202:
     ;
     break;}
 case 203:
-#line 1589 "Gmsh.y"
+#line 1588 "Gmsh.y"
 {
       FILE* ff;
       if(RecursionLevel)
@@ -4535,7 +4534,7 @@ case 203:
     ;
     break;}
 case 204:
-#line 1614 "Gmsh.y"
+#line 1613 "Gmsh.y"
 {
       if(LoopControlVariablesTab[ImbricatedLoop-1][1] >  
 	 LoopControlVariablesTab[ImbricatedLoop-1][0]){
@@ -4563,7 +4562,7 @@ case 204:
     ;
     break;}
 case 205:
-#line 1640 "Gmsh.y"
+#line 1639 "Gmsh.y"
 {
       if(!FunctionManager::Instance()->createFunction(yyvsp[0].c,yyin,yylineno))
 	vyyerror("Redefinition of function %s",yyvsp[0].c);
@@ -4571,39 +4570,39 @@ case 205:
     ;
     break;}
 case 206:
-#line 1646 "Gmsh.y"
+#line 1645 "Gmsh.y"
 {
       if(!FunctionManager::Instance()->leaveFunction(&yyin,yylineno))
 	vyyerror("Error while exiting function");
     ;
     break;}
 case 207:
-#line 1651 "Gmsh.y"
+#line 1650 "Gmsh.y"
 {
       if(!FunctionManager::Instance()->enterFunction(yyvsp[-1].c,&yyin,yylineno))
 	vyyerror("Unknown Function %s",yyvsp[-1].c);
     ;
     break;}
 case 208:
-#line 1656 "Gmsh.y"
+#line 1655 "Gmsh.y"
 {
       if(!yyvsp[-1].d) skip_until("If", "EndIf");
     ;
     break;}
 case 209:
-#line 1660 "Gmsh.y"
+#line 1659 "Gmsh.y"
 {
     ;
     break;}
 case 210:
-#line 1671 "Gmsh.y"
+#line 1670 "Gmsh.y"
 {
       Curve *pc, *prc;
       Extrude_ProtudePoint(1,(int)yyvsp[-4].d,yyvsp[-2].v[0],yyvsp[-2].v[1],yyvsp[-2].v[2],0.,0.,0.,0.,&pc,&prc,NULL);
     ;
     break;}
 case 211:
-#line 1676 "Gmsh.y"
+#line 1675 "Gmsh.y"
 {
       Curve *pc, *prc;
       Extrude_ProtudePoint(0,(int)yyvsp[-8].d,yyvsp[-6].v[0],yyvsp[-6].v[1],yyvsp[-6].v[2],yyvsp[-4].v[0],yyvsp[-4].v[1],yyvsp[-4].v[2],yyvsp[-2].d,
@@ -4611,55 +4610,55 @@ case 211:
     ;
     break;}
 case 212:
-#line 1682 "Gmsh.y"
+#line 1681 "Gmsh.y"
 {
       Extrude_ProtudeCurve(1,(int)yyvsp[-4].d,yyvsp[-2].v[0],yyvsp[-2].v[1],yyvsp[-2].v[2],0.,0.,0.,0.,NULL);
     ;
     break;}
 case 213:
-#line 1686 "Gmsh.y"
+#line 1685 "Gmsh.y"
 {
       Extrude_ProtudeCurve(0,(int)yyvsp[-8].d,yyvsp[-6].v[0],yyvsp[-6].v[1],yyvsp[-6].v[2],yyvsp[-4].v[0],yyvsp[-4].v[1],yyvsp[-4].v[2],yyvsp[-2].d,NULL);
     ;
     break;}
 case 214:
-#line 1690 "Gmsh.y"
+#line 1689 "Gmsh.y"
 {
       Extrude_ProtudeSurface(1,(int)yyvsp[-4].d,yyvsp[-2].v[0],yyvsp[-2].v[1],yyvsp[-2].v[2],0.,0.,0.,0.,0,NULL);
     ;
     break;}
 case 215:
-#line 1694 "Gmsh.y"
+#line 1693 "Gmsh.y"
 {
       Extrude_ProtudeSurface(0,(int)yyvsp[-8].d,yyvsp[-6].v[0],yyvsp[-6].v[1],yyvsp[-6].v[2],yyvsp[-4].v[0],yyvsp[-4].v[1],yyvsp[-4].v[2],yyvsp[-2].d,0,NULL);
     ;
     break;}
 case 216:
-#line 1698 "Gmsh.y"
+#line 1697 "Gmsh.y"
 {
     int vol = NEWREG();
     Extrude_ProtudeSurface(1,(int)yyvsp[-7].d,yyvsp[-5].v[0],yyvsp[-5].v[1],yyvsp[-5].v[2],0.,0.,0.,0.,vol,&extr);
   ;
     break;}
 case 217:
-#line 1703 "Gmsh.y"
+#line 1702 "Gmsh.y"
 {
     int vol = NEWREG();
     Extrude_ProtudeSurface(0,(int)yyvsp[-11].d,yyvsp[-9].v[0],yyvsp[-9].v[1],yyvsp[-9].v[2],yyvsp[-7].v[0],yyvsp[-7].v[1],yyvsp[-7].v[2],yyvsp[-5].d,vol,&extr);
   ;
     break;}
 case 218:
-#line 1711 "Gmsh.y"
+#line 1710 "Gmsh.y"
 {
     ;
     break;}
 case 219:
-#line 1714 "Gmsh.y"
+#line 1713 "Gmsh.y"
 {
     ;
     break;}
 case 220:
-#line 1720 "Gmsh.y"
+#line 1719 "Gmsh.y"
 {
       double d;
       int j;
@@ -4681,13 +4680,13 @@ case 220:
     ;
     break;}
 case 221:
-#line 1740 "Gmsh.y"
+#line 1739 "Gmsh.y"
 {
       extr.mesh.Recombine = true;
     ;
     break;}
 case 222:
-#line 1751 "Gmsh.y"
+#line 1750 "Gmsh.y"
 {
       Curve *c;
       for(i=0;i<List_Nbr(yyvsp[-3].l);i++){
@@ -4707,7 +4706,7 @@ case 222:
     ;
     break;}
 case 223:
-#line 1769 "Gmsh.y"
+#line 1768 "Gmsh.y"
 {
       Curve *c;
       for(i=0;i<List_Nbr(yyvsp[-6].l);i++){
@@ -4727,7 +4726,7 @@ case 223:
     ;
     break;}
 case 224:
-#line 1787 "Gmsh.y"
+#line 1786 "Gmsh.y"
 {
       Curve *c;
       for(i=0;i<List_Nbr(yyvsp[-6].l);i++){
@@ -4747,7 +4746,7 @@ case 224:
     ;
     break;}
 case 225:
-#line 1805 "Gmsh.y"
+#line 1804 "Gmsh.y"
 {
       Surface *s = FindSurface((int)yyvsp[-4].d,THEM);
       if(!s)
@@ -4771,7 +4770,7 @@ case 225:
     ;
     break;}
 case 226:
-#line 1827 "Gmsh.y"
+#line 1826 "Gmsh.y"
 {
       Surface *s = FindSurface((int)yyvsp[-4].d,THEM);
       if(!s)
@@ -4794,7 +4793,7 @@ case 226:
     ;
     break;}
 case 227:
-#line 1848 "Gmsh.y"
+#line 1847 "Gmsh.y"
 {
       Volume *v = FindVolume((int)yyvsp[-4].d,THEM);
       if(!v)
@@ -4817,7 +4816,7 @@ case 227:
     ;
     break;}
 case 228:
-#line 1869 "Gmsh.y"
+#line 1868 "Gmsh.y"
 {
       Surface *s;
       for(i=0;i<List_Nbr(yyvsp[-3].l);i++){
@@ -4837,7 +4836,7 @@ case 228:
     ;
     break;}
 case 229:
-#line 1887 "Gmsh.y"
+#line 1886 "Gmsh.y"
 {
       Surface *s;
       for(i=0;i<List_Nbr(yyvsp[-1].l);i++){
@@ -4857,71 +4856,71 @@ case 229:
     ;
     break;}
 case 230:
-#line 1913 "Gmsh.y"
+#line 1912 "Gmsh.y"
 { 
       Coherence_PS();
     ;
     break;}
 case 231:
-#line 1917 "Gmsh.y"
+#line 1916 "Gmsh.y"
 { 
       IntersectAllSegmentsTogether();
     ;
     break;}
 case 232:
-#line 1928 "Gmsh.y"
+#line 1927 "Gmsh.y"
 {yyval.i = 1;;
     break;}
 case 233:
-#line 1929 "Gmsh.y"
+#line 1928 "Gmsh.y"
 {yyval.i = 0;;
     break;}
 case 234:
-#line 1930 "Gmsh.y"
+#line 1929 "Gmsh.y"
 {yyval.i = -1;;
     break;}
 case 235:
-#line 1931 "Gmsh.y"
+#line 1930 "Gmsh.y"
 {yyval.i = -1;;
     break;}
 case 236:
-#line 1932 "Gmsh.y"
+#line 1931 "Gmsh.y"
 {yyval.i = -1;;
     break;}
 case 237:
-#line 1936 "Gmsh.y"
+#line 1935 "Gmsh.y"
 { yyval.d = yyvsp[0].d;           ;
     break;}
 case 238:
-#line 1937 "Gmsh.y"
+#line 1936 "Gmsh.y"
 { yyval.d = yyvsp[-1].d ;          ;
     break;}
 case 239:
-#line 1938 "Gmsh.y"
+#line 1937 "Gmsh.y"
 { yyval.d = -yyvsp[0].d ;         ;
     break;}
 case 240:
-#line 1939 "Gmsh.y"
+#line 1938 "Gmsh.y"
 { yyval.d = yyvsp[0].d;           ;
     break;}
 case 241:
-#line 1940 "Gmsh.y"
+#line 1939 "Gmsh.y"
 { yyval.d = !yyvsp[0].d ;         ;
     break;}
 case 242:
-#line 1941 "Gmsh.y"
+#line 1940 "Gmsh.y"
 { yyval.d = yyvsp[-2].d - yyvsp[0].d ;     ;
     break;}
 case 243:
-#line 1942 "Gmsh.y"
+#line 1941 "Gmsh.y"
 { yyval.d = yyvsp[-2].d + yyvsp[0].d ;     ;
     break;}
 case 244:
-#line 1943 "Gmsh.y"
+#line 1942 "Gmsh.y"
 { yyval.d = yyvsp[-2].d * yyvsp[0].d ;     ;
     break;}
 case 245:
-#line 1945 "Gmsh.y"
+#line 1944 "Gmsh.y"
 { 
       if(!yyvsp[0].d)
 	vyyerror("Division by Zero in '%g / %g'", yyvsp[-2].d, yyvsp[0].d);
@@ -4930,143 +4929,143 @@ case 245:
     ;
     break;}
 case 246:
-#line 1951 "Gmsh.y"
+#line 1950 "Gmsh.y"
 { yyval.d = (int)yyvsp[-2].d % (int)yyvsp[0].d ;  ;
     break;}
 case 247:
-#line 1952 "Gmsh.y"
+#line 1951 "Gmsh.y"
 { yyval.d = pow(yyvsp[-2].d,yyvsp[0].d) ;  ;
     break;}
 case 248:
-#line 1953 "Gmsh.y"
+#line 1952 "Gmsh.y"
 { yyval.d = yyvsp[-2].d < yyvsp[0].d ;     ;
     break;}
 case 249:
-#line 1954 "Gmsh.y"
+#line 1953 "Gmsh.y"
 { yyval.d = yyvsp[-2].d > yyvsp[0].d ;     ;
     break;}
 case 250:
-#line 1955 "Gmsh.y"
+#line 1954 "Gmsh.y"
 { yyval.d = yyvsp[-2].d <= yyvsp[0].d ;    ;
     break;}
 case 251:
-#line 1956 "Gmsh.y"
+#line 1955 "Gmsh.y"
 { yyval.d = yyvsp[-2].d >= yyvsp[0].d ;    ;
     break;}
 case 252:
-#line 1957 "Gmsh.y"
+#line 1956 "Gmsh.y"
 { yyval.d = yyvsp[-2].d == yyvsp[0].d ;    ;
     break;}
 case 253:
-#line 1958 "Gmsh.y"
+#line 1957 "Gmsh.y"
 { yyval.d = yyvsp[-2].d != yyvsp[0].d ;    ;
     break;}
 case 254:
-#line 1959 "Gmsh.y"
+#line 1958 "Gmsh.y"
 { yyval.d = yyvsp[-2].d && yyvsp[0].d ;    ;
     break;}
 case 255:
-#line 1960 "Gmsh.y"
+#line 1959 "Gmsh.y"
 { yyval.d = yyvsp[-2].d || yyvsp[0].d ;    ;
     break;}
 case 256:
-#line 1961 "Gmsh.y"
+#line 1960 "Gmsh.y"
 { yyval.d = yyvsp[-4].d? yyvsp[-2].d : yyvsp[0].d ; ;
     break;}
 case 257:
-#line 1962 "Gmsh.y"
+#line 1961 "Gmsh.y"
 { yyval.d = exp(yyvsp[-1].d);      ;
     break;}
 case 258:
-#line 1963 "Gmsh.y"
+#line 1962 "Gmsh.y"
 { yyval.d = log(yyvsp[-1].d);      ;
     break;}
 case 259:
-#line 1964 "Gmsh.y"
+#line 1963 "Gmsh.y"
 { yyval.d = log10(yyvsp[-1].d);    ;
     break;}
 case 260:
-#line 1965 "Gmsh.y"
+#line 1964 "Gmsh.y"
 { yyval.d = sqrt(yyvsp[-1].d);     ;
     break;}
 case 261:
-#line 1966 "Gmsh.y"
+#line 1965 "Gmsh.y"
 { yyval.d = sin(yyvsp[-1].d);      ;
     break;}
 case 262:
-#line 1967 "Gmsh.y"
+#line 1966 "Gmsh.y"
 { yyval.d = asin(yyvsp[-1].d);     ;
     break;}
 case 263:
-#line 1968 "Gmsh.y"
+#line 1967 "Gmsh.y"
 { yyval.d = cos(yyvsp[-1].d);      ;
     break;}
 case 264:
-#line 1969 "Gmsh.y"
+#line 1968 "Gmsh.y"
 { yyval.d = acos(yyvsp[-1].d);     ;
     break;}
 case 265:
-#line 1970 "Gmsh.y"
+#line 1969 "Gmsh.y"
 { yyval.d = tan(yyvsp[-1].d);      ;
     break;}
 case 266:
-#line 1971 "Gmsh.y"
+#line 1970 "Gmsh.y"
 { yyval.d = atan(yyvsp[-1].d);     ;
     break;}
 case 267:
-#line 1972 "Gmsh.y"
+#line 1971 "Gmsh.y"
 { yyval.d = atan2(yyvsp[-3].d,yyvsp[-1].d); ;
     break;}
 case 268:
-#line 1973 "Gmsh.y"
+#line 1972 "Gmsh.y"
 { yyval.d = sinh(yyvsp[-1].d);     ;
     break;}
 case 269:
-#line 1974 "Gmsh.y"
+#line 1973 "Gmsh.y"
 { yyval.d = cosh(yyvsp[-1].d);     ;
     break;}
 case 270:
-#line 1975 "Gmsh.y"
+#line 1974 "Gmsh.y"
 { yyval.d = tanh(yyvsp[-1].d);     ;
     break;}
 case 271:
-#line 1976 "Gmsh.y"
+#line 1975 "Gmsh.y"
 { yyval.d = fabs(yyvsp[-1].d);     ;
     break;}
 case 272:
-#line 1977 "Gmsh.y"
+#line 1976 "Gmsh.y"
 { yyval.d = floor(yyvsp[-1].d);    ;
     break;}
 case 273:
-#line 1978 "Gmsh.y"
+#line 1977 "Gmsh.y"
 { yyval.d = ceil(yyvsp[-1].d);     ;
     break;}
 case 274:
-#line 1979 "Gmsh.y"
+#line 1978 "Gmsh.y"
 { yyval.d = fmod(yyvsp[-3].d,yyvsp[-1].d);  ;
     break;}
 case 275:
-#line 1980 "Gmsh.y"
+#line 1979 "Gmsh.y"
 { yyval.d = fmod(yyvsp[-3].d,yyvsp[-1].d);  ;
     break;}
 case 276:
-#line 1981 "Gmsh.y"
+#line 1980 "Gmsh.y"
 { yyval.d = sqrt(yyvsp[-3].d*yyvsp[-3].d+yyvsp[-1].d*yyvsp[-1].d); ;
     break;}
 case 277:
-#line 1982 "Gmsh.y"
+#line 1981 "Gmsh.y"
 { yyval.d = yyvsp[-1].d*(double)rand()/(double)RAND_MAX; ;
     break;}
 case 278:
-#line 1991 "Gmsh.y"
+#line 1990 "Gmsh.y"
 { yyval.d = yyvsp[0].d; ;
     break;}
 case 279:
-#line 1992 "Gmsh.y"
+#line 1991 "Gmsh.y"
 { yyval.d = 3.141592653589793; ;
     break;}
 case 280:
-#line 1997 "Gmsh.y"
+#line 1996 "Gmsh.y"
 {
       TheSymbol.Name = yyvsp[0].c ;
       if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) {
@@ -5078,7 +5077,7 @@ case 280:
     ;
     break;}
 case 281:
-#line 2008 "Gmsh.y"
+#line 2007 "Gmsh.y"
 {
       TheSymbol.Name = yyvsp[-3].c ;
       if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) {
@@ -5096,7 +5095,7 @@ case 281:
     ;
     break;}
 case 282:
-#line 2025 "Gmsh.y"
+#line 2024 "Gmsh.y"
 {
       TheSymbol.Name = yyvsp[-1].c ;
       if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) {
@@ -5108,7 +5107,7 @@ case 282:
     ;
     break;}
 case 283:
-#line 2036 "Gmsh.y"
+#line 2035 "Gmsh.y"
 {
       TheSymbol.Name = yyvsp[-4].c ;
       if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) {
@@ -5126,7 +5125,7 @@ case 283:
     ;
     break;}
 case 284:
-#line 2055 "Gmsh.y"
+#line 2054 "Gmsh.y"
 {
       if(!(pNumCat = Get_NumberOptionCategory(yyvsp[-2].c))){
 	vyyerror("Unknown Numeric Option Class '%s'", yyvsp[-2].c);
@@ -5143,7 +5142,7 @@ case 284:
     ;
     break;}
 case 285:
-#line 2071 "Gmsh.y"
+#line 2070 "Gmsh.y"
 {
       if(!(pNumCat = Get_NumberOptionCategory(yyvsp[-5].c))){
 	vyyerror("Unknown Numeric Option Class '%s'", yyvsp[-5].c);
@@ -5160,7 +5159,7 @@ case 285:
     ;
     break;}
 case 286:
-#line 2087 "Gmsh.y"
+#line 2086 "Gmsh.y"
 {
       if(!(pNumCat = Get_NumberOptionCategory(yyvsp[-3].c))){
 	vyyerror("Unknown Numeric Option Class '%s'", yyvsp[-3].c);
@@ -5177,7 +5176,7 @@ case 286:
     ;
     break;}
 case 287:
-#line 2103 "Gmsh.y"
+#line 2102 "Gmsh.y"
 {
       if(!(pNumCat = Get_NumberOptionCategory(yyvsp[-6].c))){
 	vyyerror("Unknown Numeric Option Class '%s'", yyvsp[-6].c);
@@ -5194,7 +5193,7 @@ case 287:
     ;
     break;}
 case 288:
-#line 2121 "Gmsh.y"
+#line 2120 "Gmsh.y"
 { 
       yyval.l = List_Create(2,1,sizeof(double)) ; 
       for(d=yyvsp[-2].d ; (yyvsp[-2].d<yyvsp[0].d)?(d<=yyvsp[0].d):(d>=yyvsp[0].d) ; (yyvsp[-2].d<yyvsp[0].d)?(d+=1.):(d-=1.)) 
@@ -5202,7 +5201,7 @@ case 288:
     ;
     break;}
 case 289:
-#line 2127 "Gmsh.y"
+#line 2126 "Gmsh.y"
 {
       yyval.l = List_Create(2,1,sizeof(double)) ; 
       if(!yyvsp[0].d || (yyvsp[-4].d<yyvsp[-2].d && yyvsp[0].d<0) || (yyvsp[-4].d>yyvsp[-2].d && yyvsp[0].d>0)){
@@ -5215,123 +5214,123 @@ case 289:
    ;
     break;}
 case 290:
-#line 2141 "Gmsh.y"
+#line 2140 "Gmsh.y"
 {
       memcpy(yyval.v, yyvsp[0].v, 5*sizeof(double)) ;
     ;
     break;}
 case 291:
-#line 2145 "Gmsh.y"
+#line 2144 "Gmsh.y"
 {
       for(i=0 ; i<5 ; i++) yyval.v[i] = -yyvsp[0].v[i] ;
     ;
     break;}
 case 292:
-#line 2149 "Gmsh.y"
+#line 2148 "Gmsh.y"
 { 
       for(i=0 ; i<5 ; i++) yyval.v[i] = yyvsp[0].v[i];
     ;
     break;}
 case 293:
-#line 2153 "Gmsh.y"
+#line 2152 "Gmsh.y"
 { 
       for(i=0 ; i<5 ; i++) yyval.v[i] = yyvsp[-2].v[i] - yyvsp[0].v[i] ;
     ;
     break;}
 case 294:
-#line 2157 "Gmsh.y"
+#line 2156 "Gmsh.y"
 {
       for(i=0 ; i<5 ; i++) yyval.v[i] = yyvsp[-2].v[i] + yyvsp[0].v[i] ;
     ;
     break;}
 case 295:
-#line 2163 "Gmsh.y"
+#line 2162 "Gmsh.y"
 { 
       yyval.v[0]=yyvsp[-9].d;  yyval.v[1]=yyvsp[-7].d;  yyval.v[2]=yyvsp[-5].d;  yyval.v[3]=yyvsp[-3].d; yyval.v[4]=yyvsp[-1].d;
     ;
     break;}
 case 296:
-#line 2167 "Gmsh.y"
+#line 2166 "Gmsh.y"
 { 
       yyval.v[0]=yyvsp[-7].d;  yyval.v[1]=yyvsp[-5].d;  yyval.v[2]=yyvsp[-3].d;  yyval.v[3]=yyvsp[-1].d; yyval.v[4]=1.0;
     ;
     break;}
 case 297:
-#line 2171 "Gmsh.y"
+#line 2170 "Gmsh.y"
 {
       yyval.v[0]=yyvsp[-5].d;  yyval.v[1]=yyvsp[-3].d;  yyval.v[2]=yyvsp[-1].d;  yyval.v[3]=0.0; yyval.v[4]=1.0;
     ;
     break;}
 case 298:
-#line 2175 "Gmsh.y"
+#line 2174 "Gmsh.y"
 {
       yyval.v[0]=yyvsp[-5].d;  yyval.v[1]=yyvsp[-3].d;  yyval.v[2]=yyvsp[-1].d;  yyval.v[3]=0.0; yyval.v[4]=1.0;
     ;
     break;}
 case 299:
-#line 2182 "Gmsh.y"
+#line 2181 "Gmsh.y"
 {
     ;
     break;}
 case 300:
-#line 2185 "Gmsh.y"
+#line 2184 "Gmsh.y"
 {
     ;
     break;}
 case 301:
-#line 2191 "Gmsh.y"
+#line 2190 "Gmsh.y"
 {
     ;
     break;}
 case 302:
-#line 2194 "Gmsh.y"
+#line 2193 "Gmsh.y"
 {
     ;
     break;}
 case 303:
-#line 2200 "Gmsh.y"
+#line 2199 "Gmsh.y"
 {
     ;
     break;}
 case 304:
-#line 2203 "Gmsh.y"
+#line 2202 "Gmsh.y"
 {
        yyval.l=yyvsp[-1].l;
     ;
     break;}
 case 305:
-#line 2207 "Gmsh.y"
+#line 2206 "Gmsh.y"
 {
        yyval.l=yyvsp[-1].l;
     ;
     break;}
 case 306:
-#line 2214 "Gmsh.y"
+#line 2213 "Gmsh.y"
 {
       yyval.l = List_Create(2,1,sizeof(List_T*)) ;
       List_Add(yyval.l, &(yyvsp[0].l)) ;
     ;
     break;}
 case 307:
-#line 2219 "Gmsh.y"
+#line 2218 "Gmsh.y"
 {
       List_Add(yyval.l, &(yyvsp[0].l)) ;
     ;
     break;}
 case 308:
-#line 2227 "Gmsh.y"
+#line 2226 "Gmsh.y"
 {
       yyval.l = yyvsp[0].l ;
     ;
     break;}
 case 309:
-#line 2231 "Gmsh.y"
+#line 2230 "Gmsh.y"
 {
       yyval.l=yyvsp[-1].l;
     ;
     break;}
 case 310:
-#line 2235 "Gmsh.y"
+#line 2234 "Gmsh.y"
 {
       yyval.l=yyvsp[-1].l;
       for(i=0 ; i<List_Nbr(yyval.l) ; i++){
@@ -5341,20 +5340,20 @@ case 310:
     ;
     break;}
 case 311:
-#line 2246 "Gmsh.y"
+#line 2245 "Gmsh.y"
 {
       yyval.l = List_Create(2,1,sizeof(double)) ;
       List_Add(yyval.l, &(yyvsp[0].d)) ;
     ;
     break;}
 case 312:
-#line 2251 "Gmsh.y"
+#line 2250 "Gmsh.y"
 { 
       yyval.l = yyvsp[0].l;
     ;
     break;}
 case 313:
-#line 2255 "Gmsh.y"
+#line 2254 "Gmsh.y"
 {
       yyval.l = List_Create(2,1,sizeof(double)) ;
       TheSymbol.Name = yyvsp[-2].c ;
@@ -5370,7 +5369,7 @@ case 313:
     ;
     break;}
 case 314:
-#line 2269 "Gmsh.y"
+#line 2268 "Gmsh.y"
 {
       yyval.l = List_Create(2,1,sizeof(double)) ;
       TheSymbol.Name = yyvsp[-2].c ;
@@ -5388,7 +5387,7 @@ case 314:
     ;
     break;}
 case 315:
-#line 2285 "Gmsh.y"
+#line 2284 "Gmsh.y"
 {
       yyval.l = List_Create(2,1,sizeof(double)) ;
       TheSymbol.Name = yyvsp[-5].c ;
@@ -5410,7 +5409,7 @@ case 315:
     ;
     break;}
 case 316:
-#line 2305 "Gmsh.y"
+#line 2304 "Gmsh.y"
 {
       yyval.l = List_Create(2,1,sizeof(double)) ;
       TheSymbol.Name = yyvsp[-5].c ;
@@ -5434,19 +5433,19 @@ case 316:
     ;
     break;}
 case 317:
-#line 2330 "Gmsh.y"
+#line 2329 "Gmsh.y"
 {
       yyval.l = yyvsp[0].l ;
     ;
     break;}
 case 318:
-#line 2334 "Gmsh.y"
+#line 2333 "Gmsh.y"
 {
       List_Add(yyval.l, &(yyvsp[0].d)) ;
     ;
     break;}
 case 319:
-#line 2338 "Gmsh.y"
+#line 2337 "Gmsh.y"
 {
       for(i=0 ; i<List_Nbr(yyvsp[0].l) ; i++){
 	List_Read(yyvsp[0].l, i, &d) ;
@@ -5455,7 +5454,7 @@ case 319:
     ;
     break;}
 case 320:
-#line 2345 "Gmsh.y"
+#line 2344 "Gmsh.y"
 {
       TheSymbol.Name = yyvsp[-2].c ;
       if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) {
@@ -5468,7 +5467,7 @@ case 320:
     ;
     break;}
 case 321:
-#line 2356 "Gmsh.y"
+#line 2355 "Gmsh.y"
 {
       TheSymbol.Name = yyvsp[-2].c ;
       if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) {
@@ -5483,7 +5482,7 @@ case 321:
     ;
     break;}
 case 322:
-#line 2369 "Gmsh.y"
+#line 2368 "Gmsh.y"
 {
       TheSymbol.Name = yyvsp[-5].c ;
       if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) {
@@ -5502,7 +5501,7 @@ case 322:
     ;
     break;}
 case 323:
-#line 2386 "Gmsh.y"
+#line 2385 "Gmsh.y"
 {
       TheSymbol.Name = yyvsp[-5].c ;
       if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) {
@@ -5523,33 +5522,33 @@ case 323:
     ;
     break;}
 case 324:
-#line 2408 "Gmsh.y"
+#line 2407 "Gmsh.y"
 {
       yyval.u = PACK_COLOR((int)yyvsp[-7].d, (int)yyvsp[-5].d, (int)yyvsp[-3].d, (int)yyvsp[-1].d);
     ;
     break;}
 case 325:
-#line 2412 "Gmsh.y"
+#line 2411 "Gmsh.y"
 {
       yyval.u = PACK_COLOR((int)yyvsp[-5].d, (int)yyvsp[-3].d, (int)yyvsp[-1].d, 255);
     ;
     break;}
 case 326:
-#line 2416 "Gmsh.y"
+#line 2415 "Gmsh.y"
 {
       yyval.u = Get_ColorForString(ColorString, (int)yyvsp[-1].d, yyvsp[-3].c, &flag);
       if(flag) vyyerror("Unknown Color '%s'", yyvsp[-3].c);
     ;
     break;}
 case 327:
-#line 2421 "Gmsh.y"
+#line 2420 "Gmsh.y"
 {
       yyval.u = Get_ColorForString(ColorString, -1, yyvsp[0].c, &flag);
       if(flag) vyyerror("Unknown Color '%s'", yyvsp[0].c);
     ;
     break;}
 case 328:
-#line 2426 "Gmsh.y"
+#line 2425 "Gmsh.y"
 {
       if(!(pColCat = Get_ColorOptionCategory(yyvsp[-4].c))){
 	vyyerror("Unknown Color Option Class '%s'", yyvsp[-4].c);
@@ -5567,13 +5566,13 @@ case 328:
     ;
     break;}
 case 329:
-#line 2445 "Gmsh.y"
+#line 2444 "Gmsh.y"
 {
       yyval.l = yyvsp[-1].l;
     ;
     break;}
 case 330:
-#line 2449 "Gmsh.y"
+#line 2448 "Gmsh.y"
 {
       yyval.l = List_Create(256,10,sizeof(unsigned int)) ;
       ColorTable *ct = Get_ColorTable((int)yyvsp[-3].d);
@@ -5586,32 +5585,32 @@ case 330:
     ;
     break;}
 case 331:
-#line 2463 "Gmsh.y"
+#line 2462 "Gmsh.y"
 {
       yyval.l = List_Create(256,10,sizeof(unsigned int)) ;
       List_Add(yyval.l, &(yyvsp[0].u)) ;
     ;
     break;}
 case 332:
-#line 2468 "Gmsh.y"
+#line 2467 "Gmsh.y"
 {
       List_Add(yyval.l, &(yyvsp[0].u)) ;
     ;
     break;}
 case 333:
-#line 2475 "Gmsh.y"
+#line 2474 "Gmsh.y"
 {
       yyval.c = yyvsp[0].c;
     ;
     break;}
 case 334:
-#line 2479 "Gmsh.y"
+#line 2478 "Gmsh.y"
 {
       yyval.c = yyvsp[-1].c;
     ;
     break;}
 case 335:
-#line 2483 "Gmsh.y"
+#line 2482 "Gmsh.y"
 {
       for(i = 0 ; i<List_Nbr(yyvsp[-1].l) ; i++){
 	if(!i){
@@ -5858,7 +5857,7 @@ yyerrhandle:
     }
   return 1;
 }
-#line 2508 "Gmsh.y"
+#line 2507 "Gmsh.y"
 
 
 void InitSymbols(void){
diff --git a/Parser/Gmsh.y b/Parser/Gmsh.y
index fca83100d966c9a556cff6c0948c337cfb6c3579..90523d96f493e01614612d99a82ace7e06418e69 100644
--- a/Parser/Gmsh.y
+++ b/Parser/Gmsh.y
@@ -1,6 +1,6 @@
 %{ 
 
-// $Id: Gmsh.y,v 1.73 2001-04-08 20:36:50 geuzaine Exp $
+// $Id: Gmsh.y,v 1.74 2001-04-17 06:55:48 geuzaine Exp $
 
 #include <stdarg.h>
 
@@ -28,7 +28,6 @@
 #include <alloca.h>
 #endif
 
-int     Force_ViewNumber = 0 ;
 List_T *Symbol_L;
 
 extern Context_T  CTX;
@@ -434,19 +433,19 @@ View :
     tSTRING tBIGSTR '{' Views '}' tEND
     { 
       if(!strcmp($1, "View"))
-	EndView(1, Force_ViewNumber, yyname, $2); 
+	EndView(1, yyname, $2); 
     }
   | tSTRING tBIGSTR tSTRING VExpr '{' Views '}' tEND
     {
       if(!strcmp($1, "View"))
-	EndView(1, Force_ViewNumber, yyname, $2);
+	EndView(1, yyname, $2);
     }  
 ;
 
 Views :
     /* none */
     {
-      BeginView(1, Force_ViewNumber); 
+      BeginView(1); 
     }
   | Views ScalarPoint
   | Views VectorPoint
diff --git a/Parser/Gmsh.yy.cpp b/Parser/Gmsh.yy.cpp
index ab0de752b40a553ef08008cc38eaed02b61ea86e..15b3aaa376b68b68044950ae596f2beedaf3cd20 100644
--- a/Parser/Gmsh.yy.cpp
+++ b/Parser/Gmsh.yy.cpp
@@ -2,7 +2,7 @@
 /* A lexical scanner generated by flex */
 
 /* Scanner skeleton version:
- * $Header: /cvsroot/gmsh/Parser/Gmsh.yy.cpp,v 1.83 2001-04-08 20:36:50 geuzaine Exp $
+ * $Header: /cvsroot/gmsh/Parser/Gmsh.yy.cpp,v 1.84 2001-04-17 06:55:48 geuzaine Exp $
  */
 
 #define FLEX_SCANNER
@@ -978,7 +978,7 @@ char *yytext;
 #define INITIAL 0
 #line 2 "Gmsh.l"
 
-// $Id: Gmsh.yy.cpp,v 1.83 2001-04-08 20:36:50 geuzaine Exp $
+// $Id: Gmsh.yy.cpp,v 1.84 2001-04-17 06:55:48 geuzaine Exp $
 
 #include <stdio.h>
 #include <stdlib.h>
diff --git a/Parser/OpenFile.cpp b/Parser/OpenFile.cpp
index 767af420d8bf5c79cde975d077bb0fc3a0d2ab76..d70d457715db21a9bf0745a1ca73993236022839 100644
--- a/Parser/OpenFile.cpp
+++ b/Parser/OpenFile.cpp
@@ -1,4 +1,4 @@
-// $Id: OpenFile.cpp,v 1.10 2001-04-14 06:55:15 geuzaine Exp $
+// $Id: OpenFile.cpp,v 1.11 2001-04-17 06:55:48 geuzaine Exp $
 #include "Gmsh.h"
 #include "Const.h"
 #include "Context.h"
@@ -26,15 +26,16 @@ extern GUI *WID;
 extern Mesh      *THEM, M;
 extern Context_T  CTX;
 
-void ParseFile(char *f){
+int ParseFile(char *f){
   char String[256];
+  int status;
 
   strncpy(yyname,f,NAME_STR_L);
   yyerrorstate=0;
   yylineno=1;
 
   if(!(yyin = fopen(yyname,"r")))
-    return;
+    return 0;
   
   Msg(STATUS2, "Loading '%s'", yyname); 
 
@@ -48,22 +49,27 @@ void ParseFile(char *f){
      !strncmp(String, "$ELM", 4)){
     if(THEM->status < 0) mai3d(THEM, 0);
     Read_Mesh(THEM, yyin, FORMAT_MSH);
+    status = THEM->status;
   }
   else if(!strncmp(String, "sms", 3))
   {
     if(THEM->status < 0) mai3d(THEM, 0);
     Read_Mesh(THEM, yyin, FORMAT_SMS);
+    status = THEM->status;
   }
   else if(!strncmp(String, "$PostFormat", 11) ||
           !strncmp(String, "$View", 5)){
     Read_View(yyin, yyname);
+    status = 0;
   }
   else{
     while(!feof(yyin)) yyparse();
+    status = 0;
   }
   fclose(yyin);
 
   Msg(STATUS2, "Loaded '%s'", yyname); 
+  return status;
 }
 
 void MergeProblem(char *name){
@@ -81,6 +87,7 @@ void MergeProblem(char *name){
 
 void OpenProblem(char *name){
   char ext[6];
+  int status;
 
   if(CTX.threads_lock){
     Msg(INFO, "I'm busy! Ask me that later...");
@@ -96,7 +103,7 @@ void OpenProblem(char *name){
   strcpy(ext,name+(strlen(name)-4));
   if(!strcmp(ext,".GEO") || 
      !strcmp(ext,".geo") || 
-     //!strcmp(ext,".msh") || 
+     !strcmp(ext,".msh") || 
      !strcmp(ext,".pos")
      ){
     CTX.basefilename[strlen(name)-4] = '\0';
@@ -118,17 +125,30 @@ void OpenProblem(char *name){
 #endif
   }
 
-  ParseFile(CTX.filename);  
+  Post_ViewComputeBBox = 1;
+  int nb = List_Nbr(Post_ViewList);
+
+  status = ParseFile(CTX.filename);  
+
+  Post_ViewComputeBBox = 0;
 
   ApplyLcFactor(THEM);
-  mai3d(THEM,0);  
+
+  if(!status) mai3d(THEM,0);  
+
   Maillage_Dimension_0(&M);
 
 #ifndef _BLACKBOX
   ZeroHighlight(&M); 
 #endif
-
-  CalculateMinMax(THEM->Points);  
+  
+  if(List_Nbr(Post_ViewList) > nb)
+    CalculateMinMax(NULL, ((Post_View*)List_Pointer
+			   (Post_ViewList,List_Nbr(Post_ViewList)-1))->BBox);
+  else if(!status) 
+    CalculateMinMax(THEM->Points,NULL);
+  else
+    CalculateMinMax(THEM->Vertices,NULL);
 
 #ifndef _BLACKBOX
   if (!EntitesVisibles) {
diff --git a/Parser/OpenFile.h b/Parser/OpenFile.h
index d89e36d0b505989551be06019f2a19bbd724e452..0cddf0bb8585a46ebc713ba522ba21a6d140046e 100644
--- a/Parser/OpenFile.h
+++ b/Parser/OpenFile.h
@@ -3,7 +3,7 @@
 
 #include "Const.h"
 
-void ParseFile(char *filename);
+int  ParseFile(char *filename);
 void OpenProblem(char *filename);
 void MergeProblem(char *filename);
 
diff --git a/Plugin/CutMap.cpp b/Plugin/CutMap.cpp
index de1bdb99a750d05274e50af032d0b316f37b20a4..949c3a39f0d8e0b36a20e126f6469de9a8e31ad2 100644
--- a/Plugin/CutMap.cpp
+++ b/Plugin/CutMap.cpp
@@ -2,6 +2,7 @@
 
 double opt_cut_map_A(OPT_ARGS_NUM)
 {
+  return 0;
 }
 
 StringXNumber CutMapOptions_Number[] = {
@@ -13,7 +14,7 @@ extern "C"
 {
   GMSH_Plugin *GMSH_RegisterCutMapPlugin ()
   {
-    return new GMSH_CutMapPlugin (1.0,1.);
+    return new GMSH_CutMapPlugin (1.0,1);
   }
 }
 
diff --git a/Plugin/CutPlane.cpp b/Plugin/CutPlane.cpp
index d0dbb20f5e3cec9125db63a63ed77f982f12fab1..04b1b0a540a3e4c0f7da306e1d693761fa25d318 100644
--- a/Plugin/CutPlane.cpp
+++ b/Plugin/CutPlane.cpp
@@ -8,6 +8,7 @@
 
 double opt_cut_plane_A(OPT_ARGS_NUM)
 {
+  return 0;
 }
 
 StringXNumber CutPlaneOptions_Number[] = {
diff --git a/Plugin/CutSphere.cpp b/Plugin/CutSphere.cpp
index 7f863895bf65fc0d2823c7b77bdfd5c230dc2c90..c2ec163448c6b9f01ca5710a5fc634038d46d6a7 100644
--- a/Plugin/CutSphere.cpp
+++ b/Plugin/CutSphere.cpp
@@ -4,6 +4,7 @@
 
 double opt_cut_sphere_Xc(OPT_ARGS_NUM)
 {
+  return 0;
 }
 
 StringXNumber CutSphereOptions_Number[] = {
diff --git a/Plugin/LevelsetPlugin.cpp b/Plugin/LevelsetPlugin.cpp
index 33c1ae34eb7c85294b3aadac05a483693ea0306f..63025f1025919b94fdda4ed4f4b4776d6d2fb65e 100644
--- a/Plugin/LevelsetPlugin.cpp
+++ b/Plugin/LevelsetPlugin.cpp
@@ -16,7 +16,7 @@ Post_View *GMSH_LevelsetPlugin::execute (Post_View *v)
   //   for all scalar simplices 
   if(v->NbSS)
     {
-      BeginView(1,0);
+      BeginView(1);
       nb = List_Nbr(v->SS) / v->NbSS ;
       for(i = 0 ; i < List_Nbr(v->SS) ; i+=nb)
 	{
@@ -68,7 +68,7 @@ Post_View *GMSH_LevelsetPlugin::execute (Post_View *v)
       char name[1024],filename[1024];
       sprintf(name,"cut-%s",v->Name);
       sprintf(filename,"cut-%s",v->FileName);
-      EndView(1, 0, filename, name);
+      EndView(1, filename, name);
       return ActualView;
     }
   return 0;
diff --git a/doc/VERSIONS b/doc/VERSIONS
index 9326b39bca81733f44dbc252e881c6559404a4b3..92687a0c97b276b9204ed88e7654d2c4ef855622 100644
--- a/doc/VERSIONS
+++ b/doc/VERSIONS
@@ -1,11 +1,12 @@
-$Id: VERSIONS,v 1.6 2001-04-08 12:49:31 geuzaine Exp $
+$Id: VERSIONS,v 1.7 2001-04-17 06:55:48 geuzaine Exp $
 
 New in 1.17: Corrected physical points saving; fixed parsing of DOS
 files (carriage return problems); easier geometrical selections
-(cursor change); plugin manager; Fatal error dialog; enhanced variable
-arrays (sublist selection and affectation); line loop check; New arrow
-display; reduced number of 'fatal' errors + better handling in
-interactive mode;
+(cursor change); plugin manager; enhanced variable arrays (sublist
+selection and affectation); line loop check; New arrow display;
+reduced number of 'fatal' errors + better handling in interactive
+mode; fixed bug when opening meshes; enhanced File->Open behaviour for
+meshes and post-processing views;
 
 New in 1.16: Added single/double buffer selection (only useful for
 Unix versions of Gmsh run from remote hosts without GLX); fixed a bug