X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=src%2FDriverUNV%2FDriverUNV_R_SMDS_Mesh.cxx;h=45dd99edf1b657018a39359db7266f1573c28e94;hp=b9de018aa527e1924b51caa26a54fbbe7b1c8d08;hb=2c23c066a72c031c846ae5d4721d3035cd2691c3;hpb=0b959120c59670d73c0a1f6d46bfa72a6ceb49cf diff --git a/src/DriverUNV/DriverUNV_R_SMDS_Mesh.cxx b/src/DriverUNV/DriverUNV_R_SMDS_Mesh.cxx index b9de018aa..45dd99edf 100644 --- a/src/DriverUNV/DriverUNV_R_SMDS_Mesh.cxx +++ b/src/DriverUNV/DriverUNV_R_SMDS_Mesh.cxx @@ -1,153 +1,153 @@ -using namespace std; #include "DriverUNV_R_SMDS_Mesh.h" +#include "SMDS_Mesh.hxx" #include "utilities.h" -DriverUNV_R_SMDS_Mesh::DriverUNV_R_SMDS_Mesh() { -; -} - -DriverUNV_R_SMDS_Mesh::~DriverUNV_R_SMDS_Mesh() { -; -} - -void DriverUNV_R_SMDS_Mesh::SetMesh(Handle(SMDS_Mesh)& aMesh) { - myMesh = aMesh; -} - -void DriverUNV_R_SMDS_Mesh::SetFile(string aFile) { - myFile = aFile; -} +#include "UNV2411_Structure.hxx" +#include "UNV2412_Structure.hxx" +#include "UNV_Utilities.hxx" -void DriverUNV_R_SMDS_Mesh::SetFileId(FILE* aFileId) { - myFileId = aFileId; -} +using namespace std; -void DriverUNV_R_SMDS_Mesh::SetMeshId(int aMeshId) { - myMeshId = aMeshId; -} -void DriverUNV_R_SMDS_Mesh::Add() { - ; -} +#ifdef _DEBUG_ +static int MYDEBUG = 0; +#else +static int MYDEBUG = 0; +#endif -void DriverUNV_R_SMDS_Mesh::Read() { - int cell=0,node=0,n1,n2,n3,n4,n_nodes,nodes[6],blockId,i; - char *s1,*s2,*s3; - string str1,str2,str3; - int i1=0; - bool ok, found_block2411, found_block2412; - - /**************************************************************************** - * OUVERTURE DU FICHIER EN LECTURE * - ****************************************************************************/ - char* file2Read = (char*)myFile.c_str(); - myFileId = fopen(file2Read,"r"); - if (myFileId < 0) +Driver_Mesh::Status DriverUNV_R_SMDS_Mesh::Perform() +{ + Status aResult = DRS_OK; + std::ifstream in_stream(myFile.c_str()); + try{ { - fprintf(stderr,">> ERREUR : ouverture du fichier %s \n",file2Read); - exit(EXIT_FAILURE); + using namespace UNV2411; + TDataSet aDataSet2411; + UNV2411::Read(in_stream,aDataSet2411); + if(MYDEBUG) MESSAGE("Perform - aDataSet2411.size() = "<first; + const TRecord& aRec = anIter->second; + myMesh->AddNodeWithID(aRec.coord[0],aRec.coord[1],aRec.coord[2],aLabel); + } } - - s1 = (char*) malloc(sizeof(char)*100); - s2 = (char*) malloc(sizeof(char)*100); - s3 = (char*) malloc(sizeof(char)*100); - - found_block2411 = false; - found_block2412 = false; - - do { - - while (i1==-1) { - fscanf(myFileId,"%d\n",&blockId); - switch (blockId) { - case 2411 : { - MESSAGE("BlockId "<AddNodeWithID(atof(str1.c_str()),atof(str2.c_str()),atof(str3.c_str()),node); - fscanf(myFileId,"%d",&node); - } - i1=0; - found_block2411 = true; - break; - } - case 2412 : { - MESSAGE("BlockId "<AddFaceWithID(nodes[0],nodes[1],nodes[2],cell); - } - else if (n_nodes==6) {//206 - for (i=1;i<=n_nodes;i++) - fscanf(myFileId,"%d",&nodes[i-1]); - ok = myMesh->AddFaceWithID(nodes[0],nodes[2],nodes[4],cell); - } + { + using namespace UNV2412; + in_stream.seekg(0); + TDataSet aDataSet2412; + UNV2412::Read(in_stream,aDataSet2412); + TDataSet::const_iterator anIter = aDataSet2412.begin(); + if(MYDEBUG) MESSAGE("Perform - aDataSet2412.size() = "<first; + const TRecord& aRec = anIter->second; + if(IsBeam(aRec.fe_descriptor_id)){ + anElement = myMesh->AddEdgeWithID(aRec.node_labels[0], + aRec.node_labels[1], + aLabel); + }else if(IsFace(aRec.fe_descriptor_id)){ + switch(aRec.fe_descriptor_id){ + case 71: // TRI3 + case 72: + case 74: + + case 41: // Plane Stress Linear Triangle - TRI3 + case 91: // Thin Shell Linear Triangle - TRI3 + + case 42: // Plane Stress Quadratic Triangle - TRI6 + case 92: // Thin Shell Quadratic Triangle - TRI6 + + anElement = myMesh->AddFaceWithID(aRec.node_labels[0], + aRec.node_labels[1], + aRec.node_labels[2], + aLabel); + break; + + case 44: // Plane Stress Linear Quadrilateral - QUAD4 + case 94: // Thin Shell Linear Quadrilateral - QUAD4 + + case 45: // Plane Stress Quadratic Quadrilateral - QUAD8 + case 95: // Thin Shell Quadratic Quadrilateral - QUAD8 + anElement = myMesh->AddFaceWithID(aRec.node_labels[0], + aRec.node_labels[1], + aRec.node_labels[2], + aRec.node_labels[3], + aLabel); + break; } - - else if ((n1==11)||(n1==21)||(n1==24)||(n1==25)) {//103 - fgets(s2,100,myFileId); - if (n_nodes==3) { - for (i=1;i<=n_nodes;i++) - fscanf(myFileId,"%d",&nodes[i-1]); - ok = myMesh->AddEdgeWithID(nodes[0],nodes[1],cell); - //MESSAGE("in 103 "<AddEdgeWithID(nodes[0],nodes[1],cell); - //MESSAGE("in 102 "<AddVolumeWithID(aRec.node_labels[0], + aRec.node_labels[2], + aRec.node_labels[1], + aRec.node_labels[3], + aLabel); + break; + + case 112: // Solid Linear Prism - PRISM6 + + anElement = myMesh->AddVolumeWithID(aRec.node_labels[0], + aRec.node_labels[2], + aRec.node_labels[1], + aRec.node_labels[3], + aRec.node_labels[5], + aRec.node_labels[4], + aLabel); + break; + + case 113: // Solid Quadratic Prism - PRISM15 + + anElement = myMesh->AddVolumeWithID(aRec.node_labels[0], + aRec.node_labels[4], + aRec.node_labels[2], + aRec.node_labels[9], + aRec.node_labels[13], + aRec.node_labels[11], + aLabel); + break; + + case 115: // Solid Linear Brick - HEX8 + anElement = myMesh->AddVolumeWithID(aRec.node_labels[0], + aRec.node_labels[3], + aRec.node_labels[2], + aRec.node_labels[1], + aRec.node_labels[4], + aRec.node_labels[7], + aRec.node_labels[6], + aRec.node_labels[5], + aLabel); + break; + + case 116: // Solid Quadratic Brick - HEX20 + + anElement = myMesh->AddVolumeWithID(aRec.node_labels[0], + aRec.node_labels[6], + aRec.node_labels[4], + aRec.node_labels[2], + aRec.node_labels[12], + aRec.node_labels[18], + aRec.node_labels[16], + aRec.node_labels[14], + aLabel); + break; } - - fscanf(myFileId,"\n"); - fscanf(myFileId,"%d",&cell); } - - i1=0; - found_block2412 = true; - break; - } - case -1 : { - break; - } - default: - MESSAGE("BlockId "<