Salome HOME
60f3d5a5be6e5c8dade32494b2bed639453dbce4
[modules/smesh.git] / src / DriverMED / DriverMED_R_SMESHDS_Document.cxx
1 using namespace std;
2 #include "DriverMED_R_SMESHDS_Document.h"
3 #include "DriverMED_R_SMESHDS_Mesh.h"
4 #include "utilities.h"
5
6 extern "C" {
7   Document_Reader* maker() {
8     return new DriverMED_R_SMESHDS_Document;
9   }
10 }
11
12 DriverMED_R_SMESHDS_Document::DriverMED_R_SMESHDS_Document() {
13 ;
14 }
15
16 DriverMED_R_SMESHDS_Document::~DriverMED_R_SMESHDS_Document() {
17 ;
18 }
19
20 //void DriverMED_R_SMESHDS_Document::SetFile(string aFile) {
21 //  myFile = aFile;
22 //}
23
24 void DriverMED_R_SMESHDS_Document::Read() {
25
26   med_err ret = 0;
27   med_idt fid;
28   med_int nmaa;
29
30   Standard_Integer myMeshId;
31
32   //string myFile = string("/home/home_users/cai/projects/salome_prev04/SALOME_ROOT/data/fra1.med");
33
34 /****************************************************************************
35   *                      OUVERTURE DU FICHIER EN LECTURE                      *
36   ****************************************************************************/
37   char* file2Read = (char*)myFile.c_str();
38   fid = MEDouvrir(file2Read,MED_LECT);
39   if (fid < 0)
40     {
41       fprintf(stderr,">> ERREUR : ouverture du fichier %s \n",file2Read);
42       exit(EXIT_FAILURE);
43     }
44
45   /****************************************************************************
46   *                      COMBIEN DE MAILLAGES ?                               *
47   ****************************************************************************/
48   nmaa = MEDnMaa(fid);
49   if (nmaa < 0)
50     {
51       fprintf(stderr,">> ERREUR : lecture du nombre de maillages \n");
52       exit(EXIT_FAILURE);
53     }
54   printf("Nombre de maillages = %d\n",nmaa);
55
56   string myClass = string("SMESHDS_Mesh");
57   string myExtension = string("MED");
58
59
60   for (int meshIt=1;meshIt<=nmaa;meshIt++) {
61     myMeshId = myDocument->NewMesh();
62     printf("MeshId = %d\n",myMeshId);
63
64     Handle(SMDS_Mesh) myMesh = myDocument->GetMesh(myMeshId);
65   SCRUTE(myMesh);
66
67     // Handle (SMDS_Mesh) MMM =.........
68     //ex Handle(SMESHDS_Mesh) myMesh2 =Handle(SMESHDS_Mesh)::DownCast(MMM);
69
70     DriverMED_R_SMESHDS_Mesh* myReader = new DriverMED_R_SMESHDS_Mesh;
71
72     myReader->SetMesh(myMesh);
73     myReader->SetMeshId(myMeshId);
74
75     //myReader->SetFile(myFile);
76   SCRUTE(fid);
77     myReader->SetFileId(fid);
78
79     myReader->Add();
80
81   }
82
83   /****************************************************************************
84   *                      FERMETURE DU FICHIER                                 *
85   ****************************************************************************/
86   ret = MEDfermer(fid);
87   
88   if (ret != 0)
89     fprintf(stderr,">> ERREUR : erreur a la fermeture du fichier %s\n",file2Read);
90
91
92 }