X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=src%2FSMESH_I%2FSMESH_MEDMesh_i.cxx;h=05ffe67013732b830356bd4234fbe0fc15c2db1e;hp=cfbea781a3c1db8d1154be8a7d15b10914170120;hb=104ff7b2818ce4d0f8a38d840abd3e5c70190668;hpb=341338ff083c4c6f4ab2839c626833818c2b6c42 diff --git a/src/SMESH_I/SMESH_MEDMesh_i.cxx b/src/SMESH_I/SMESH_MEDMesh_i.cxx index cfbea781a..05ffe6701 100644 --- a/src/SMESH_I/SMESH_MEDMesh_i.cxx +++ b/src/SMESH_I/SMESH_MEDMesh_i.cxx @@ -17,14 +17,13 @@ // 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // // File : SMESH_MEDMesh_i.cxx // Module : SMESH -using namespace std; #include "SMESH_MEDMesh_i.hxx" #include "SMESH_Mesh_i.hxx" @@ -54,11 +53,15 @@ using namespace std; # include "Utils_ORB_INIT.hxx" # include "Utils_SINGLETON.hxx" +# include "Utils_ExceptHandlers.hxx" + extern "C" { #include } +using namespace std; + //============================================================================= /*! * Default constructor @@ -86,13 +89,17 @@ SMESH_MEDMesh_i::~SMESH_MEDMesh_i() */ //============================================================================= SMESH_MEDMesh_i::SMESH_MEDMesh_i(::SMESH_Mesh_i * m_i):_meshId(""), -_compte(false), -_creeFamily(false), _famIdent(0), _indexElts(0), _indexEnts(0) + _compte(false), + _creeFamily(false), + _famIdent(0), + _indexElts(0), + _indexEnts(0) { + BEGIN_OF("Constructor SMESH_MEDMesh_i"); + _mesh_i = m_i; _meshDS = _mesh_i->GetImpl().GetMeshDS(); - BEGIN_OF("Constructor SMESH_MEDMesh_i"); END_OF("Constructor SMESH_MEDMesh_i"); } @@ -250,7 +257,7 @@ SALOME_MED::double_array * SMESH_MEDMesh_i::getCoordinates( myseq->length(nbNodes * spaceDimension); int i = 0; - SMDS_Iterator * itNodes=_meshDS->nodesIterator(); + SMDS_NodeIteratorPtr itNodes=_meshDS->nodesIterator(); while(itNodes->more()) { const SMDS_MeshNode* node = itNodes->next(); @@ -276,7 +283,6 @@ SALOME_MED::double_array * SMESH_MEDMesh_i::getCoordinates( } i++; } - delete itNodes; } catch(...) { @@ -478,13 +484,14 @@ CORBA::Long SMESH_MEDMesh_i::getNumberOfElements(SALOME_MED:: if (_mapIndToSeqElts.find(geomElement) != _mapIndToSeqElts.end()) { int index = _mapIndToSeqElts[geomElement]; + retour = _seq_elemId[index]->length(); } return retour; } catch(...) { - MESSAGE("Exception en accedant au nombre d élements"); + MESSAGE("Exception en accedant au nombre d élements"); THROW_SALOME_CORBA_EXCEPTION("Unable to acces Mesh C++ Object", SALOME::INTERNAL_ERROR); } @@ -518,6 +525,7 @@ SMESH_MEDMesh_i::getConnectivity(SALOME_MED::medModeSwitch typeSwitch, SALOME::BAD_PARAM); int index = _mapIndToSeqElts[geomElement]; + return _seq_elemId[index]._retn(); } @@ -943,7 +951,7 @@ void SMESH_MEDMesh_i::calculeNbElts() throw(SALOME::SALOME_Exception) int trouveSeg3 = 0; SALOME_MED::medGeometryElement medElement; - SMDS_Iterator * itEdges=_meshDS->edgesIterator(); + SMDS_EdgeIteratorPtr itEdges=_meshDS->edgesIterator(); while(itEdges->more()) { const SMDS_MeshEdge* elem = itEdges->next(); @@ -977,16 +985,15 @@ void SMESH_MEDMesh_i::calculeNbElts() throw(SALOME::SALOME_Exception) int index = _mapIndToSeqElts[medElement]; SCRUTE(index); // Traitement de l arete + int longueur = _seq_elemId[index]->length(); _seq_elemId[index]->length(longueur + nb_of_nodes); - SMDS_Iterator * itn=_meshDS->nodesIterator(); + SMDS_NodeIteratorPtr itn=_meshDS->nodesIterator(); for(int k=0; itn->more(); k++) _seq_elemId[index][longueur + k] = itn->next()->GetID()+1; - delete itn; } - delete itEdges; _mapNbTypes[SALOME_MED::MED_EDGE] = trouveSeg2 + trouveSeg3; @@ -1001,7 +1008,7 @@ void SMESH_MEDMesh_i::calculeNbElts() throw(SALOME::SALOME_Exception) _mapIndToSeqElts[SALOME_MED::MED_QUAD4] = _indexElts++; _mapIndToVectTypes[SALOME_MED::MED_FACE] = _indexEnts++; - SMDS_Iterator * itFaces=_meshDS->facesIterator(); + SMDS_FaceIteratorPtr itFaces=_meshDS->facesIterator(); while(itFaces->more()) { const SMDS_MeshFace * elem = itFaces->next(); @@ -1047,18 +1054,16 @@ void SMESH_MEDMesh_i::calculeNbElts() throw(SALOME::SALOME_Exception) SCRUTE(index); // Traitement de la face - // Attention La numérotation des noeuds Med commence a 1 + // Attention La numérotation des noeuds Med commence a 1 int longueur = _seq_elemId[index]->length(); _seq_elemId[index]->length(longueur + nb_of_nodes); - SMDS_Iterator * itn=_meshDS->nodesIterator(); + SMDS_NodeIteratorPtr itn=_meshDS->nodesIterator(); for(int k=0; itn->more(); k++) _seq_elemId[index][longueur + k] = itn->next()->GetID()+1; - delete itn; } //itFaces - delete itFaces; _mapNbTypes[SALOME_MED::MED_FACE] = trouveTria3 + trouveTria6 + trouveQuad4; @@ -1069,14 +1074,14 @@ void SMESH_MEDMesh_i::calculeNbElts() throw(SALOME::SALOME_Exception) int trouveHexa8 = 0; - SMDS_Iterator * itVolumes=_meshDS->volumesIterator(); + SMDS_VolumeIteratorPtr itVolumes=_meshDS->volumesIterator(); while(itVolumes->more()) { const SMDS_MeshVolume * elem = itVolumes->next(); int nb_of_nodes = elem->NbNodes(); medElement = SALOME_MED::MED_HEXA8; - ASSERT(nb_of_nodes = 8); + ASSERT(nb_of_nodes == 8); if (trouveHexa8 == 0) { @@ -1087,12 +1092,10 @@ void SMESH_MEDMesh_i::calculeNbElts() throw(SALOME::SALOME_Exception) int longueur = _seq_elemId[index]->length(); _seq_elemId[index]->length(longueur + nb_of_nodes); - SMDS_Iterator * itn=_meshDS->nodesIterator(); + SMDS_NodeIteratorPtr itn=_meshDS->nodesIterator(); for(int k=0; itn->more(); k++) _seq_elemId[index][longueur + k] = itn->next()->GetID()+1; - delete itn; } - delete itVolumes; _mapNbTypes[SALOME_MED::MED_CELL] = trouveHexa8; _mapNbTypes[SALOME_MED::MED_ALL_ENTITIES] @@ -1109,6 +1112,7 @@ void SMESH_MEDMesh_i::calculeNbElts() throw(SALOME::SALOME_Exception) //============================================================================= void SMESH_MEDMesh_i::createFamilies() throw(SALOME::SALOME_Exception) { + Unexpect aCatch(SALOME_SalomeException); string famDes = ("Je ne sais pas"); string famName0 = "Famille_"; string famName; @@ -1117,7 +1121,7 @@ void SMESH_MEDMesh_i::createFamilies() throw(SALOME::SALOME_Exception) if (_creeFamily == false) { _creeFamily = true; - SMESH_subMesh_i *subMeshServant; + //SMESH_subMesh_i *subMeshServant; map < int, SMESH_subMesh_i * >::iterator it; for (it = _mesh_i->_mapSubMesh_i.begin(); @@ -1198,5 +1202,5 @@ SMESH_MEDMesh_i::getElementType(SALOME_MED::medEntityMesh entity, THROW_SALOME_CORBA_EXCEPTION("Unimplemented Method", SALOME::BAD_PARAM); - return 0; + return (SALOME_MED::medGeometryElement) 0; }