diff --git a/Common/DefaultOptions.h b/Common/DefaultOptions.h
index a50ddc3b950ab52ea6f3d5d011ee183721849fbd..6c5153898494f6bab87ad8a8e3382fa8a4ebc5df 100644
--- a/Common/DefaultOptions.h
+++ b/Common/DefaultOptions.h
@@ -1033,8 +1033,8 @@ StringXNumber MeshOptions_Number[] = {
   { F|O, "NewtonConvergenceTestXYZ" , opt_mesh_newton_convergence_test_xyz , 0. ,
     "Force inverse surface mapping algorithm (Newton-Raphson) to converge in real coordinates (experimental)" },
   { F|O, "Format" , opt_mesh_file_format , FORMAT_AUTO ,
-    "Mesh output format (1=msh, 2=unv, 10=automatic, 19=vrml, 27=stl, 30=mesh, 31=bdf, "
-    "32=cgns, 33=med, 40=ply2)" },
+    "Mesh output format (1=msh, 2=unv, 10=automatic, 19=vrml, 26=pos statistics, 27=stl, "
+    "30=mesh, 31=bdf, 32=cgns, 33=med, 39=inp, 40=ply2)" },
 
   { F|O, "Hexahedra" , opt_mesh_hexahedra , 1. ,
     "Display mesh hexahedra?" },
diff --git a/Geo/GModel.h b/Geo/GModel.h
index e5e43093412365a6bfd81448bf285684cd1a6c56..7fc00f5e61ba5f7667d6dcc4f6b73869d6d68160 100644
--- a/Geo/GModel.h
+++ b/Geo/GModel.h
@@ -614,6 +614,10 @@ class GModel
   int writeOCCSTEP(const std::string &name);
   int writeOCCBREP(const std::string &name);
   int importOCCShape(const void *shape);
+  GVertex *getVertexForOCCShape(const void *shape);
+  GEdge *getEdgeForOCCShape(const void *shape);
+  GFace *getFaceForOCCShape(const void *shape);
+  GRegion *getRegionForOCCShape(const void *shape);
 
   // ACIS Model
   int readACISSAT(const std::string &name);
diff --git a/Geo/GModelIO_OCC.cpp b/Geo/GModelIO_OCC.cpp
index 060e18405e34a0125e1c0a272a91bf46a6f37818..a74091f88d03b06486915ebc7429b3fb81fcedea 100644
--- a/Geo/GModelIO_OCC.cpp
+++ b/Geo/GModelIO_OCC.cpp
@@ -1100,6 +1100,30 @@ int GModel::importOCCShape(const void *shape)
   return 1;
 }
 
+GVertex* GModel::getVertexForOCCShape(const void *shape)
+{
+  if(!_occ_internals) return 0;
+  return _occ_internals->getOCCVertexByNativePtr(this, *(TopoDS_Vertex*)shape);
+}
+
+GEdge* GModel::getEdgeForOCCShape(const void *shape)
+{
+  if(!_occ_internals) return 0;
+  return _occ_internals->getOCCEdgeByNativePtr(this, *(TopoDS_Edge*)shape);
+}
+
+GFace* GModel::getFaceForOCCShape(const void *shape)
+{
+  if(!_occ_internals) return 0;
+  return _occ_internals->getOCCFaceByNativePtr(this, *(TopoDS_Face*)shape);
+}
+
+GRegion* GModel::getRegionForOCCShape(const void *shape)
+{
+  if(!_occ_internals) return 0;
+  return _occ_internals->getOCCRegionByNativePtr(this, *(TopoDS_Solid*)shape);
+}
+
 #else
 
 void GModel::_deleteOCCInternals()
@@ -1148,4 +1172,28 @@ int GModel::importOCCShape(const void *shape)
   return 0;
 }
 
+GVertex* GModel::getVertexForOCCShape(const void *shape)
+{
+  Msg::Error("Gmsh must be compiled with Open CASCADE support to query OCC shape");
+  return 0;
+}
+
+GEdge* GModel::getEdgeForOCCShape(const void *shape)
+{
+  Msg::Error("Gmsh must be compiled with Open CASCADE support to query OCC shape");
+  return 0;
+}
+
+GFace* GModel::getFaceForOCCShape(const void *shape)
+{
+  Msg::Error("Gmsh must be compiled with Open CASCADE support to query OCC shape");
+  return 0;
+}
+
+GRegion* GModel::getRegionForOCCShape(const void *shape)
+{
+  Msg::Error("Gmsh must be compiled with Open CASCADE support to query OCC shape");
+  return 0;
+}
+
 #endif