X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=src%2FDriverDAT%2FDriverDAT_R_SMDS_Mesh.cxx;h=26742f7e93020fdd140dbcff3d67b970041a36c3;hp=72e0d30b6746851ebb6f68038128aaf5eebfd01f;hb=251f8c052dd12dd29922210dc901b295fe999a0e;hpb=0b959120c59670d73c0a1f6d46bfa72a6ceb49cf diff --git a/src/DriverDAT/DriverDAT_R_SMDS_Mesh.cxx b/src/DriverDAT/DriverDAT_R_SMDS_Mesh.cxx index 72e0d30b6..26742f7e9 100644 --- a/src/DriverDAT/DriverDAT_R_SMDS_Mesh.cxx +++ b/src/DriverDAT/DriverDAT_R_SMDS_Mesh.cxx @@ -1,175 +1,167 @@ -using namespace std; +// Copyright (C) 2007-2015 CEA/DEN, EDF R&D, OPEN CASCADE +// +// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// + +#include + #include "DriverDAT_R_SMDS_Mesh.h" +#include "SMDS_Mesh.hxx" #include "utilities.h" -DriverDAT_R_SMDS_Mesh::DriverDAT_R_SMDS_Mesh() { -; -} - -DriverDAT_R_SMDS_Mesh::~DriverDAT_R_SMDS_Mesh() { -; -} - -void DriverDAT_R_SMDS_Mesh::SetMesh(Handle(SMDS_Mesh)& aMesh) { - myMesh = aMesh; -} +#include -void DriverDAT_R_SMDS_Mesh::SetFile(string aFile) { - myFile = aFile; -} - -void DriverDAT_R_SMDS_Mesh::SetFileId(FILE* aFileId) { - myFileId = aFileId; -} - -void DriverDAT_R_SMDS_Mesh::SetMeshId(int aMeshId) { - myMeshId = aMeshId; -} - -void DriverDAT_R_SMDS_Mesh::Add() { - ; -} +using namespace std; -void DriverDAT_R_SMDS_Mesh::Read() { +Driver_Mesh::Status DriverDAT_R_SMDS_Mesh::Perform() +{ + Kernel_Utils::Localizer loc; + Status aResult = DRS_OK; - int i,j; - int nbNodes,nbCells; + int i, j; + int nbNodes, nbCells; int intNumPoint; float coordX, coordY, coordZ; int nbNoeuds; - - int intNumMaille,Degre; + + int intNumMaille, Degre; int ValElement; - int ValDegre; int NoeudsMaille[20]; int NoeudMaille; - - bool ok; - + MESSAGE("in DriverDAT_R_SMDS_Mesh::Read()"); /**************************************************************************** - * OUVERTURE DU FICHIER EN LECTURE * - ****************************************************************************/ - char* file2Read = (char*)myFile.c_str(); - myFileId = fopen(file2Read,"r"); - if (myFileId < 0) - { - fprintf(stderr,">> ERREUR : ouverture du fichier %s \n",file2Read); - exit(EXIT_FAILURE); - } - - fscanf(myFileId,"%d %d\n",&nbNodes,&nbCells); - + * OUVERTURE DU FICHIER EN LECTURE * + ****************************************************************************/ + char *file2Read = (char *)myFile.c_str(); + FILE* aFileId = fopen(file2Read, "r"); + if (aFileId < 0) { + fprintf(stderr, ">> ERREUR : ouverture du fichier %s \n", file2Read); + return DRS_FAIL; + } + + fscanf(aFileId, "%d %d\n", &nbNodes, &nbCells); + /**************************************************************************** - * LECTURE DES NOEUDS * - ****************************************************************************/ - fprintf(stdout,"\n(************************)\n"); - fprintf(stdout,"(* NOEUDS DU MAILLAGE : *)\n"); - fprintf(stdout,"(************************)\n"); - - for (i=0;iAddNodeWithID(coordX,coordY,coordZ,intNumPoint); + * LECTURE DES NOEUDS * + ****************************************************************************/ + fprintf(stdout, "\n(************************)\n"); + fprintf(stdout, "(* NOEUDS DU MAILLAGE : *)\n"); + fprintf(stdout, "(************************)\n"); + + for (i = 0; i < nbNodes; i++){ + fscanf(aFileId, "%d %e %e %e\n", &intNumPoint, &coordX, &coordY, &coordZ); + myMesh->AddNodeWithID(coordX, coordY, coordZ, intNumPoint); } - - fprintf(stdout,"%d noeuds\n",myMesh->NbNodes()); + + fprintf(stdout, "%d noeuds\n", myMesh->NbNodes()); /**************************************************************************** - * LECTURE DES ELEMENTS * - ****************************************************************************/ - fprintf(stdout,"\n(**************************)\n"); - fprintf(stdout,"(* ELEMENTS DU MAILLAGE : *)\n"); - fprintf(stdout,"(**************************)"); - - fprintf(stdout,"%d elements\n",nbCells); - - for (i=0; iAddEdgeWithID(NoeudsMaille[0],NoeudsMaille[1],intNumMaille); + case 102: + case 103: + nbNoeuds = 2; + myMesh->AddEdgeWithID(NoeudsMaille[0], NoeudsMaille[1], + intNumMaille); break; - } - case 204 : ; - case 208 : ; - { - ValDegre=9; - nbNoeuds=4; - ok = myMesh->AddFaceWithID(NoeudsMaille[0],NoeudsMaille[1],NoeudsMaille[2],NoeudsMaille[3],intNumMaille); + case 204: + case 208: + nbNoeuds = 4; + myMesh->AddFaceWithID(NoeudsMaille[0], NoeudsMaille[1], + NoeudsMaille[2], NoeudsMaille[3], + intNumMaille); break; - } - case 203 : ; - case 206 : ; - { - ValDegre=5; - nbNoeuds=3; - ok = myMesh->AddFaceWithID(NoeudsMaille[0],NoeudsMaille[1],NoeudsMaille[2],intNumMaille); + case 203: + case 206: + nbNoeuds = 3; + myMesh->AddFaceWithID(NoeudsMaille[0], NoeudsMaille[1], + NoeudsMaille[2], intNumMaille); break; - } - case 308 : ; - case 320 : ; - { - ValDegre=12; - nbNoeuds=8; - if (ValElement==320) { - //A voir, correspondance VTK - NoeudsMaille[4]=NoeudsMaille[8]; - NoeudsMaille[5]=NoeudsMaille[9]; - NoeudsMaille[6]=NoeudsMaille[10]; - NoeudsMaille[7]=NoeudsMaille[11]; + case 308: + case 320: + nbNoeuds = 8; + if (ValElement == 320){ + //A voir, correspondance VTK + NoeudsMaille[4] = NoeudsMaille[8]; + NoeudsMaille[5] = NoeudsMaille[9]; + NoeudsMaille[6] = NoeudsMaille[10]; + NoeudsMaille[7] = NoeudsMaille[11]; } - ok = myMesh->AddVolumeWithID(NoeudsMaille[0],NoeudsMaille[1],NoeudsMaille[2],NoeudsMaille[3],NoeudsMaille[4],NoeudsMaille[5],NoeudsMaille[6],NoeudsMaille[7],intNumMaille); - break; - } - case 304 : ; - case 310 : ; - { - ValDegre=10; - nbNoeuds=4; - if (ValElement==310) - NoeudsMaille[3]=NoeudsMaille[6]; - ok = myMesh->AddVolumeWithID(NoeudsMaille[0],NoeudsMaille[1],NoeudsMaille[2],NoeudsMaille[3],intNumMaille); - break; - } - case 306 : ; - case 315 : ; - { - ValDegre=12; - nbNoeuds=8; - if (ValElement==315) { - NoeudsMaille[3]=NoeudsMaille[6]; - NoeudsMaille[4]=NoeudsMaille[7]; - NoeudsMaille[5]=NoeudsMaille[8]; - } - NoeudsMaille[7]=NoeudsMaille[5]; - NoeudsMaille[6]=NoeudsMaille[5]; - NoeudsMaille[5]=NoeudsMaille[4]; - NoeudsMaille[4]=NoeudsMaille[3]; - NoeudsMaille[3]=NoeudsMaille[2]; - ok = myMesh->AddVolumeWithID(NoeudsMaille[0],NoeudsMaille[1],NoeudsMaille[2],NoeudsMaille[3],NoeudsMaille[4],NoeudsMaille[5],intNumMaille); + myMesh->AddVolumeWithID(NoeudsMaille[0], NoeudsMaille[1], + NoeudsMaille[2], NoeudsMaille[3], + NoeudsMaille[4], NoeudsMaille[5], + NoeudsMaille[6], NoeudsMaille[7], + intNumMaille); break; - } - + case 304: + case 310: + nbNoeuds = 4; + if (ValElement == 310) + NoeudsMaille[3] = NoeudsMaille[6]; + myMesh->AddVolumeWithID(NoeudsMaille[0], NoeudsMaille[1], + NoeudsMaille[2], NoeudsMaille[3], + intNumMaille); + break; + case 306: + case 315: + nbNoeuds = 8; + if (ValElement == 315) { + NoeudsMaille[3] = NoeudsMaille[6]; + NoeudsMaille[4] = NoeudsMaille[7]; + NoeudsMaille[5] = NoeudsMaille[8]; + } + NoeudsMaille[7] = NoeudsMaille[5]; + NoeudsMaille[6] = NoeudsMaille[5]; + NoeudsMaille[5] = NoeudsMaille[4]; + NoeudsMaille[4] = NoeudsMaille[3]; + NoeudsMaille[3] = NoeudsMaille[2]; + myMesh->AddVolumeWithID(NoeudsMaille[0], NoeudsMaille[1], + NoeudsMaille[2], NoeudsMaille[3], + NoeudsMaille[4], NoeudsMaille[5], + intNumMaille); + break; } } - /**************************************************************************** - * FERMETURE DU FICHIER * - ****************************************************************************/ - fclose(myFileId); - + * FERMETURE DU FICHIER * + ****************************************************************************/ + fclose(aFileId); + return aResult; }