Salome HOME
Merge branch 'occ/new_mg_licnese'
[modules/smesh.git] / src / DriverGMF / DriverGMF_Read.cxx
index 175d8100d3fcfa638f75b0cffbdff4ee0b86a5bd..c85abbf3c8e831b1542933e6734c430528ded7ee 100644 (file)
@@ -537,3 +537,37 @@ Driver_Mesh::Status DriverGMF_Read::storeBadNodeIds(const char* gmfKwd, int elem
   }
   return DRS_OK;
 }
+
+//================================================================================
+/*!
+ * \brief Return number of mesh entities in a file
+ */
+//================================================================================
+
+bool DriverGMF_Read::GetMeshInfo(smIdType & nbNodes,
+                                 smIdType & nbEdges,
+                                 smIdType & nbFaces,
+                                 smIdType & nbVols)
+{
+  nbNodes = nbEdges = nbFaces = nbVols = 0;
+
+  Kernel_Utils::Localizer loc;
+
+  int dim, version;
+  int meshID = GmfOpenMesh( myFile.c_str(), GmfRead, &version, &dim );
+  if ( !meshID )
+    return false;
+
+  DriverGMF::MeshCloser aMeshCloser( meshID ); // An object closing GMF mesh at destruction
+
+  nbNodes =   GmfStatKwd(meshID, GmfVertices       );
+  nbEdges =   GmfStatKwd(meshID, GmfEdges          );
+  nbFaces = ( GmfStatKwd(meshID, GmfTriangles      ) +
+              GmfStatKwd(meshID, GmfQuadrilaterals ));
+  nbVols  = ( GmfStatKwd(meshID, GmfTetrahedra     ) +
+              GmfStatKwd(meshID, GmfPyramids       ) +
+              GmfStatKwd(meshID, GmfHexahedra      ) +
+              GmfStatKwd(meshID, GmfPrisms         ));
+
+  return true;
+}