2003-05-19 19:18:36 +06:00
|
|
|
using namespace std;
|
2003-03-07 19:55:31 +05:00
|
|
|
#include "DriverMED_R_SMESHDS_Document.h"
|
|
|
|
#include "DriverMED_R_SMESHDS_Mesh.h"
|
|
|
|
#include "utilities.h"
|
|
|
|
|
|
|
|
extern "C" {
|
|
|
|
Document_Reader* maker() {
|
|
|
|
return new DriverMED_R_SMESHDS_Document;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
DriverMED_R_SMESHDS_Document::DriverMED_R_SMESHDS_Document() {
|
|
|
|
;
|
|
|
|
}
|
|
|
|
|
|
|
|
DriverMED_R_SMESHDS_Document::~DriverMED_R_SMESHDS_Document() {
|
|
|
|
;
|
|
|
|
}
|
|
|
|
|
|
|
|
//void DriverMED_R_SMESHDS_Document::SetFile(string aFile) {
|
|
|
|
// myFile = aFile;
|
|
|
|
//}
|
|
|
|
|
|
|
|
void DriverMED_R_SMESHDS_Document::Read() {
|
|
|
|
|
|
|
|
med_err ret = 0;
|
|
|
|
med_idt fid;
|
|
|
|
med_int nmaa;
|
|
|
|
|
|
|
|
Standard_Integer myMeshId;
|
|
|
|
|
|
|
|
//string myFile = string("/home/home_users/cai/projects/salome_prev04/SALOME_ROOT/data/fra1.med");
|
|
|
|
|
|
|
|
/****************************************************************************
|
|
|
|
* OUVERTURE DU FICHIER EN LECTURE *
|
|
|
|
****************************************************************************/
|
|
|
|
char* file2Read = (char*)myFile.c_str();
|
|
|
|
fid = MEDouvrir(file2Read,MED_LECT);
|
|
|
|
if (fid < 0)
|
|
|
|
{
|
|
|
|
fprintf(stderr,">> ERREUR : ouverture du fichier %s \n",file2Read);
|
|
|
|
exit(EXIT_FAILURE);
|
|
|
|
}
|
|
|
|
|
|
|
|
/****************************************************************************
|
|
|
|
* COMBIEN DE MAILLAGES ? *
|
|
|
|
****************************************************************************/
|
|
|
|
nmaa = MEDnMaa(fid);
|
|
|
|
if (nmaa < 0)
|
|
|
|
{
|
|
|
|
fprintf(stderr,">> ERREUR : lecture du nombre de maillages \n");
|
|
|
|
exit(EXIT_FAILURE);
|
|
|
|
}
|
|
|
|
printf("Nombre de maillages = %d\n",nmaa);
|
|
|
|
|
|
|
|
string myClass = string("SMESHDS_Mesh");
|
|
|
|
string myExtension = string("MED");
|
|
|
|
|
|
|
|
|
|
|
|
for (int meshIt=1;meshIt<=nmaa;meshIt++) {
|
|
|
|
myMeshId = myDocument->NewMesh();
|
|
|
|
printf("MeshId = %d\n",myMeshId);
|
|
|
|
|
|
|
|
Handle(SMDS_Mesh) myMesh = myDocument->GetMesh(myMeshId);
|
|
|
|
SCRUTE(myMesh);
|
|
|
|
|
|
|
|
// Handle (SMDS_Mesh) MMM =.........
|
|
|
|
//ex Handle(SMESHDS_Mesh) myMesh2 =Handle(SMESHDS_Mesh)::DownCast(MMM);
|
|
|
|
|
|
|
|
DriverMED_R_SMESHDS_Mesh* myReader = new DriverMED_R_SMESHDS_Mesh;
|
|
|
|
|
|
|
|
myReader->SetMesh(myMesh);
|
|
|
|
myReader->SetMeshId(myMeshId);
|
|
|
|
|
|
|
|
//myReader->SetFile(myFile);
|
|
|
|
SCRUTE(fid);
|
|
|
|
myReader->SetFileId(fid);
|
|
|
|
|
|
|
|
myReader->Add();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
/****************************************************************************
|
|
|
|
* FERMETURE DU FICHIER *
|
|
|
|
****************************************************************************/
|
|
|
|
ret = MEDfermer(fid);
|
|
|
|
|
|
|
|
if (ret != 0)
|
|
|
|
fprintf(stderr,">> ERREUR : erreur a la fermeture du fichier %s\n",file2Read);
|
|
|
|
|
|
|
|
|
|
|
|
}
|