-using namespace std;
-//=============================================================================
-// File : SMESH_MEDMesh_i.cxx
-// Project : SALOME
-// Copyright : EDF 2001
-//=============================================================================
-
+// Copyright (C) 2007-2008 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.
+//
+// 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
+//
+// SMESH SMESH_I : idl implementation based on 'SMESH' unit's calsses
+// File : SMESH_MEDMesh_i.cxx
+// Module : SMESH
+//
#include "SMESH_MEDMesh_i.hxx"
+#include "SMESH_Gen_i.hxx"
#include "SMESH_Mesh_i.hxx"
#include "SMESHDS_Mesh.hxx"
#include "SMESHDS_SubMesh.hxx"
-#include "SMDS_MapIteratorOfExtendedMap.hxx"
-#include "SMDS_MapOfMeshElement.hxx"
-
#include <TopExp.hxx>
#include <TopExp_Explorer.hxx>
#include <TopoDS.hxx>
# include "Utils_ORB_INIT.hxx"
# include "Utils_SINGLETON.hxx"
+# include "Utils_ExceptHandlers.hxx"
+
extern "C"
{
#include <stdio.h>
}
+using namespace std;
//=============================================================================
/*!
BEGIN_OF("Default Constructor SMESH_MEDMesh_i");
END_OF("Default Constructor SMESH_MEDMesh_i");
}
+
//=============================================================================
/*!
* Destructor
SMESH_MEDMesh_i::~SMESH_MEDMesh_i()
{
}
+
//=============================================================================
/*!
* Constructor
*/
//=============================================================================
-SMESH_MEDMesh_i::SMESH_MEDMesh_i( ::SMESH_Mesh_i* m_i ) :_meshId(""),
- _compte(false),
- _creeFamily(false),
- _famIdent(0),
- _indexElts(0),
- _indexEnts(0)
+SMESH_MEDMesh_i::SMESH_MEDMesh_i(::SMESH_Mesh_i * m_i):_meshId(""),
+ _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");
}
* CORBA: Accessor for Name
*/
//=============================================================================
-char * SMESH_MEDMesh_i::getName()
- throw (SALOME::SALOME_Exception)
+char *SMESH_MEDMesh_i::getName() throw(SALOME::SALOME_Exception)
{
if (_meshDS == NULL)
- THROW_SALOME_CORBA_EXCEPTION("No associated Mesh", \
- SALOME::INTERNAL_ERROR);
+ THROW_SALOME_CORBA_EXCEPTION("No associated Mesh",
+ SALOME::INTERNAL_ERROR);
try
- {
- // A COMPLETER PAR LE NOM DU MAILLAGE
- //return CORBA::string_dup(_mesh_i->getName().c_str());
+ {
+ SMESH_Gen_i* gen = SMESH_Gen_i::GetSMESHGen();
+ SALOMEDS::Study_var study = gen->GetCurrentStudy();
+ SALOMEDS::SObject_var meshSO = gen->ObjectToSObject( study, _mesh_i->_this());
+ if ( meshSO->_is_nil() )
return CORBA::string_dup("toto");
- }
+
+ CORBA::String_var name = meshSO->GetName();
+ return CORBA::string_dup( name.in() );
+ }
catch(...)
- {
- MESSAGE("Exception en accedant au nom");
- THROW_SALOME_CORBA_EXCEPTION("Unable to acces Mesh C++ Object"\
- ,SALOME::INTERNAL_ERROR);
- }
+ {
+ MESSAGE("Exception en accedant au nom");
+ THROW_SALOME_CORBA_EXCEPTION("Unable to acces Mesh C++ Object",
+ SALOME::INTERNAL_ERROR);
+ }
+ return 0;
}
+
//=============================================================================
/*!
* CORBA: Accessor for corbaindex cuisine interne
*/
//=============================================================================
-CORBA::Long SMESH_MEDMesh_i::getCorbaIndex()
- throw (SALOME::SALOME_Exception)
+CORBA::Long SMESH_MEDMesh_i::getCorbaIndex()throw(SALOME::SALOME_Exception)
{
MESSAGE("Non Implemente");
- THROW_SALOME_CORBA_EXCEPTION("Unimplemented Method"\
- ,SALOME::BAD_PARAM);
+ THROW_SALOME_CORBA_EXCEPTION("Unimplemented Method", SALOME::BAD_PARAM);
}
+
//=============================================================================
/*!
* CORBA: Accessor for Space Dimension
*/
//=============================================================================
-CORBA::Long SMESH_MEDMesh_i::getSpaceDimension()
- throw (SALOME::SALOME_Exception)
+CORBA::Long SMESH_MEDMesh_i::getSpaceDimension()throw(SALOME::SALOME_Exception)
{
// PN : Il semblerait que la dimension soit fixee a 3
if (_mesh_i == 0)
- THROW_SALOME_CORBA_EXCEPTION("No associated Mesh", \
- SALOME::INTERNAL_ERROR);
+ THROW_SALOME_CORBA_EXCEPTION("No associated Mesh",
+ SALOME::INTERNAL_ERROR);
return 3;
}
+
//=============================================================================
/*!
* CORBA: Accessor for Mesh Dimension
*/
//=============================================================================
-CORBA::Long SMESH_MEDMesh_i::getMeshDimension()
- throw (SALOME::SALOME_Exception)
+CORBA::Long SMESH_MEDMesh_i::getMeshDimension()throw(SALOME::SALOME_Exception)
{
if (_mesh_i == 0)
- THROW_SALOME_CORBA_EXCEPTION("No associated Mesh", \
- SALOME::INTERNAL_ERROR);
+ THROW_SALOME_CORBA_EXCEPTION("No associated Mesh",
+ SALOME::INTERNAL_ERROR);
// PN : Il semblerait que la dimension soit fixee a 3
if (_mesh_i == 0)
- THROW_SALOME_CORBA_EXCEPTION("No associated Mesh", \
- SALOME::INTERNAL_ERROR);
+ THROW_SALOME_CORBA_EXCEPTION("No associated Mesh",
+ SALOME::INTERNAL_ERROR);
return 3;
}
//=============================================================================
/*!
- * CORBA: Accessor for Coordinates System
+ * CORBA: Accessor for the boolean _isAGrid
*/
//=============================================================================
-char * SMESH_MEDMesh_i::getCoordinateSystem()
+CORBA::Boolean SMESH_MEDMesh_i::getIsAGrid() throw (SALOME::SALOME_Exception)
+{
+ MESSAGE("!!!!!! NOT YET IMPLEMENTED !!!!!!");
+
+ THROW_SALOME_CORBA_EXCEPTION("Unimplemented Method", SALOME::BAD_PARAM);
+
+ return false;
+}
+//=============================================================================
+/*!
+ * CORBA: Accessor for the connectivities, to see if they exist
+ */
+//=============================================================================
+CORBA::Boolean
+SMESH_MEDMesh_i::existConnectivity(SALOME_MED::medConnectivity connectivityType,
+ SALOME_MED::medEntityMesh entity)
+ throw (SALOME::SALOME_Exception)
+{
+ MESSAGE("!!!!!! IMPLEMENTED BUT ONLY PARTIALLY !!!!!!");
+
+
+ return false;
+
+}
+//=============================================================================
+/*!
+ * CORBA: Accessor for Coordinate
+ */
+//=============================================================================
+CORBA::Double SMESH_MEDMesh_i::getCoordinate(CORBA::Long Number, CORBA::Long Axis)
throw (SALOME::SALOME_Exception)
+{
+ MESSAGE("!!!!!! NOT YET IMPLEMENTED !!!!");
+
+ THROW_SALOME_CORBA_EXCEPTION("Unimplemented Method", SALOME::BAD_PARAM);
+
+ return 0.0;
+}
+//=============================================================================
+/*!
+ * CORBA: Accessor for Coordinates System
+ */
+//=============================================================================
+char *SMESH_MEDMesh_i::getCoordinatesSystem() throw(SALOME::SALOME_Exception)
{
if (_mesh_i == 0)
- THROW_SALOME_CORBA_EXCEPTION("No associated Mesh", \
- SALOME::INTERNAL_ERROR);
+ THROW_SALOME_CORBA_EXCEPTION("No associated Mesh",
+ SALOME::INTERNAL_ERROR);
// PN : En dur. Non encore prevu
try
- {
- string systcoo="CARTESIEN";
- return CORBA::string_dup(systcoo.c_str());
- }
+ {
+ string systcoo = "CARTESIEN";
+ return CORBA::string_dup(systcoo.c_str());
+ }
catch(...)
- {
- MESSAGE("Exception en accedant au maillage");
- THROW_SALOME_CORBA_EXCEPTION("Unable to acces Mesh C++ Object"\
- ,SALOME::INTERNAL_ERROR);
- }
+ {
+ MESSAGE("Exception en accedant au maillage");
+ THROW_SALOME_CORBA_EXCEPTION("Unable to acces Mesh C++ Object",
+ SALOME::INTERNAL_ERROR);
+ }
}
+
//=============================================================================
/*!
* CORBA: Accessor for Coordinates
*/
//=============================================================================
-Engines::double_array * SMESH_MEDMesh_i::getCoordinates(SALOME_MED::medModeSwitch typeSwitch)
- throw (SALOME::SALOME_Exception)
+SALOME_MED::double_array * SMESH_MEDMesh_i::getCoordinates
+(SALOME_MED::medModeSwitch typeSwitch) throw(SALOME::SALOME_Exception)
{
if (_mesh_i == 0)
- THROW_SALOME_CORBA_EXCEPTION("No associated Mesh", \
- SALOME::INTERNAL_ERROR);
- Engines::double_array_var myseq = new Engines::double_array;
+ THROW_SALOME_CORBA_EXCEPTION("No associated Mesh",
+ SALOME::INTERNAL_ERROR);
+ SALOME_MED::double_array_var myseq = new SALOME_MED::double_array;
try
+ {
+ // PN : En dur
+ int spaceDimension = 3;
+ int nbNodes = _meshDS->NbNodes();
+ SCRUTE(nbNodes);
+ myseq->length(nbNodes * spaceDimension);
+ int i = 0;
+
+ SMDS_NodeIteratorPtr itNodes=_meshDS->nodesIterator();
+ while(itNodes->more())
{
- // PN : En dur
- int spaceDimension=3;
- int nbNodes=_meshDS->NbNodes();
- SCRUTE(nbNodes);
- myseq->length(nbNodes*spaceDimension);
- int i = 0;
- SMDS_MeshNodesIterator itNodes(_meshDS);
- for (;itNodes.More();itNodes.Next())
- {
-
- const Handle(SMDS_MeshElement)& elem = itNodes.Value();
- const Handle(SMDS_MeshNode)& node =_meshDS->GetNode(1,elem);
-
- if (typeSwitch == SALOME_MED::MED_FULL_INTERLACE)
- {
- myseq[i*3]=node->X();
- myseq[i*3+1]=node->Y();
- myseq[i*3+2]=node->Z();
- SCRUTE(myseq[i*3]);
- SCRUTE(myseq[i*3+1]);
- SCRUTE(myseq[i*3+2]);
- }
- else
- {
- ASSERT(typeSwitch == SALOME_MED::MED_NO_INTERLACE);
- myseq[i]=node->X();
- myseq[i+nbNodes]=node->Y();
- myseq[i+(nbNodes*2)]=node->Z();
- SCRUTE(myseq[i]);
- SCRUTE(myseq[i+nbNodes]);
- SCRUTE(myseq[i+(nbNodes*2)]);
- }
- i++;
- }
+ const SMDS_MeshNode* node = itNodes->next();
+
+ if (typeSwitch == SALOME_MED::MED_FULL_INTERLACE)
+ {
+ myseq[i * 3] = node->X();
+ myseq[i * 3 + 1] = node->Y();
+ myseq[i * 3 + 2] = node->Z();
+ SCRUTE(myseq[i * 3]);
+ SCRUTE(myseq[i * 3 + 1]);
+ SCRUTE(myseq[i * 3 + 2]);
+ }
+ else
+ {
+ ASSERT(typeSwitch == SALOME_MED::MED_NO_INTERLACE);
+ myseq[i] = node->X();
+ myseq[i + nbNodes] = node->Y();
+ myseq[i + (nbNodes * 2)] = node->Z();
+ SCRUTE(myseq[i]);
+ SCRUTE(myseq[i + nbNodes]);
+ SCRUTE(myseq[i + (nbNodes * 2)]);
+ }
+ i++;
}
+ }
catch(...)
- {
- MESSAGE("Exception en accedant aux coordonnees");
- THROW_SALOME_CORBA_EXCEPTION("Unable to acces Mesh C++ Object"\
- ,SALOME::INTERNAL_ERROR);
- }
+ {
+ MESSAGE("Exception en accedant aux coordonnees");
+ THROW_SALOME_CORBA_EXCEPTION("Unable to acces Mesh C++ Object",
+ SALOME::INTERNAL_ERROR);
+ }
return myseq._retn();
}
+
//=============================================================================
/*!
* CORBA: Accessor for Coordinates Names
*/
//=============================================================================
-Engines::string_array * SMESH_MEDMesh_i::getCoordinatesNames()
- throw (SALOME::SALOME_Exception)
+SALOME_MED::string_array *
+SMESH_MEDMesh_i::getCoordinatesNames()throw(SALOME::SALOME_Exception)
{
if (_mesh_i == 0)
- THROW_SALOME_CORBA_EXCEPTION("No associated Mesh", \
- SALOME::INTERNAL_ERROR);
- Engines::string_array_var myseq = new Engines::string_array;
+ THROW_SALOME_CORBA_EXCEPTION("No associated Mesh",
+ SALOME::INTERNAL_ERROR);
+ SALOME_MED::string_array_var myseq = new SALOME_MED::string_array;
try
- {
- // PN : en dur
- int spaceDimension=3;
- myseq->length(spaceDimension);
- myseq[0]=CORBA::string_dup("x");
- myseq[1]=CORBA::string_dup("y");
- myseq[2]=CORBA::string_dup("z");
- }
+ {
+ // PN : en dur
+ int spaceDimension = 3;
+ myseq->length(spaceDimension);
+ myseq[0] = CORBA::string_dup("x");
+ myseq[1] = CORBA::string_dup("y");
+ myseq[2] = CORBA::string_dup("z");
+ }
catch(...)
- {
- MESSAGE("Exception en accedant aux noms des coordonnees");
- THROW_SALOME_CORBA_EXCEPTION("Unable to acces Mesh C++ Object"\
- ,SALOME::INTERNAL_ERROR);
- }
+ {
+ MESSAGE("Exception en accedant aux noms des coordonnees");
+ THROW_SALOME_CORBA_EXCEPTION("Unable to acces Mesh C++ Object",
+ SALOME::INTERNAL_ERROR);
+ }
return myseq._retn();
}
+
//=============================================================================
/*!
* CORBA: Accessor for Coordinates Units
*/
//=============================================================================
-Engines::string_array * SMESH_MEDMesh_i::getCoordinatesUnits()
- throw (SALOME::SALOME_Exception)
+SALOME_MED::string_array *
+SMESH_MEDMesh_i::getCoordinatesUnits()throw(SALOME::SALOME_Exception)
{
if (_mesh_i == 0)
- THROW_SALOME_CORBA_EXCEPTION("No associated Mesh", \
- SALOME::INTERNAL_ERROR);
- Engines::string_array_var myseq = new Engines::string_array;
+ THROW_SALOME_CORBA_EXCEPTION("No associated Mesh",
+ SALOME::INTERNAL_ERROR);
+ SALOME_MED::string_array_var myseq = new SALOME_MED::string_array;
try
- {
- // PN : en dur
- int spaceDimension=3;
- myseq->length(spaceDimension);
- myseq[0]=CORBA::string_dup("m");
- myseq[1]=CORBA::string_dup("m");
- myseq[2]=CORBA::string_dup("m");
- }
+ {
+ // PN : en dur
+ int spaceDimension = 3;
+ myseq->length(spaceDimension);
+ myseq[0] = CORBA::string_dup("m");
+ myseq[1] = CORBA::string_dup("m");
+ myseq[2] = CORBA::string_dup("m");
+ }
catch(...)
- {
- MESSAGE("Exception en accedant aux unites des coordonnees");
- THROW_SALOME_CORBA_EXCEPTION("Unable to acces Mesh C++ Object"\
- ,SALOME::INTERNAL_ERROR);
- }
+ {
+ MESSAGE("Exception en accedant aux unites des coordonnees");
+ THROW_SALOME_CORBA_EXCEPTION("Unable to acces Mesh C++ Object",
+ SALOME::INTERNAL_ERROR);
+ }
return myseq._retn();
}
+
//=============================================================================
/*!
* CORBA: Accessor for Number of Nodes
*/
//=============================================================================
-CORBA::Long SMESH_MEDMesh_i::getNumberOfNodes()
- throw (SALOME::SALOME_Exception)
+CORBA::Long SMESH_MEDMesh_i::getNumberOfNodes()throw(SALOME::SALOME_Exception)
{
if (_mesh_i == 0)
- THROW_SALOME_CORBA_EXCEPTION("No associated Mesh", \
- SALOME::INTERNAL_ERROR);
+ THROW_SALOME_CORBA_EXCEPTION("No associated Mesh",
+ SALOME::INTERNAL_ERROR);
try
- {
- return _meshDS->NbNodes();
- }
+ {
+ return _meshDS->NbNodes();
+ }
catch(...)
- {
- MESSAGE("Exception en accedant au nombre de noeuds");
- THROW_SALOME_CORBA_EXCEPTION("Unable to acces Mesh C++ Object"\
- ,SALOME::INTERNAL_ERROR);
- }
+ {
+ MESSAGE("Exception en accedant au nombre de noeuds");
+ THROW_SALOME_CORBA_EXCEPTION("Unable to acces Mesh C++ Object",
+ SALOME::INTERNAL_ERROR);
+ }
}
+
//=============================================================================
/*!
* CORBA: Accessor for number of Types
*/
//=============================================================================
-CORBA::Long SMESH_MEDMesh_i::getNumberOfTypes(SALOME_MED::medEntityMesh entity)
- throw (SALOME::SALOME_Exception)
+CORBA::Long SMESH_MEDMesh_i::getNumberOfTypes(SALOME_MED::medEntityMesh entity)
+ throw(SALOME::SALOME_Exception)
{
if (_mesh_i == 0)
- THROW_SALOME_CORBA_EXCEPTION("No associated Mesh", \
- SALOME::INTERNAL_ERROR);
+ THROW_SALOME_CORBA_EXCEPTION("No associated Mesh",
+ SALOME::INTERNAL_ERROR);
try
- {
- if (! _compte)
- calculeNbElts();
- int retour = 0;
- if ( _mapNbTypes.find(entity)!=_mapNbTypes.end())
- retour=_mapNbTypes[entity];
- return retour;
- }
+ {
+ if (!_compte)
+ calculeNbElts();
+ int retour = 0;
+ if (_mapNbTypes.find(entity) != _mapNbTypes.end())
+ retour = _mapNbTypes[entity];
+ return retour;
+ }
catch(...)
- {
- MESSAGE("Exception en accedant au nombre de Types");
- THROW_SALOME_CORBA_EXCEPTION("Unable to acces Mesh C++ Object"\
- ,SALOME::INTERNAL_ERROR);
- }
+ {
+ MESSAGE("Exception en accedant au nombre de Types");
+ THROW_SALOME_CORBA_EXCEPTION("Unable to acces Mesh C++ Object",
+ SALOME::INTERNAL_ERROR);
+ }
}
//=============================================================================
/*!
* CORBA: Accessor for existing geometry element types
- * Not implemented for MED_ALL_ENTITIES
+ * Not implemented for MED_ALL_ENTITIES
*/
//=============================================================================
-SALOME_MED::medGeometryElement_array * SMESH_MEDMesh_i::getTypes (SALOME_MED::medEntityMesh entity)
- throw (SALOME::SALOME_Exception)
+SALOME_MED::medGeometryElement_array *
+SMESH_MEDMesh_i::getTypes(SALOME_MED::medEntityMesh entity) throw(SALOME::
+ SALOME_Exception)
{
if (_mesh_i == 0)
- THROW_SALOME_CORBA_EXCEPTION("No associated Mesh", \
- SALOME::INTERNAL_ERROR);
- if (entity ==SALOME_MED::MED_ALL_ENTITIES)
- THROW_SALOME_CORBA_EXCEPTION("Not implemented for MED_ALL_ENTITIES",\
- SALOME::BAD_PARAM);
- if (! _compte)
+ THROW_SALOME_CORBA_EXCEPTION("No associated Mesh",
+ SALOME::INTERNAL_ERROR);
+ if (entity == SALOME_MED::MED_ALL_ENTITIES)
+ THROW_SALOME_CORBA_EXCEPTION("Not implemented for MED_ALL_ENTITIES",
+ SALOME::BAD_PARAM);
+ if (!_compte)
calculeNbElts();
- SALOME_MED::medGeometryElement_array_var myseq =
+ SALOME_MED::medGeometryElement_array_var myseq =
new SALOME_MED::medGeometryElement_array;
try
+ {
+ if (_mapNbTypes.find(entity) == _mapNbTypes.end())
+ THROW_SALOME_CORBA_EXCEPTION("No Such Entity in the mesh",
+ SALOME::BAD_PARAM);
+ int nbTypes = _mapNbTypes[entity];
+
+ myseq->length(nbTypes);
+
+ if (_mapIndToVectTypes.find(entity) == _mapIndToVectTypes.end())
+ THROW_SALOME_CORBA_EXCEPTION("No Such Entity in the mesh",
+ SALOME::INTERNAL_ERROR);
+
+ int index = _mapIndToVectTypes[entity];
+ ASSERT(_TypesId[index].size() != 0);
+ int i = 0;
+ vector < SALOME_MED::medGeometryElement >::iterator it;
+ for (it = _TypesId[index].begin(); it != _TypesId[index].end(); it++)
{
- if ( _mapNbTypes.find(entity) ==_mapNbTypes.end())
- THROW_SALOME_CORBA_EXCEPTION("No Such Entity in the mesh"\
- ,SALOME::BAD_PARAM);
- int nbTypes=_mapNbTypes[entity];
-
- myseq->length(nbTypes);
-
- if ( _mapIndToVectTypes.find(entity) ==_mapIndToVectTypes.end())
- THROW_SALOME_CORBA_EXCEPTION("No Such Entity in the mesh"\
- ,SALOME::INTERNAL_ERROR);
-
- int index=_mapIndToVectTypes[entity];
- ASSERT( _TypesId[index].size()!=0);
- int i=0;
- vector<SALOME_MED::medGeometryElement>::iterator it;
- for (it=_TypesId[index].begin();it!=_TypesId[index].end();it++)
- {
- myseq[i++]=*it;
- };
- }
+ myseq[i++] = *it;
+ };
+ }
catch(...)
- {
- MESSAGE("Exception en accedant aux differents types");
- THROW_SALOME_CORBA_EXCEPTION("Unable to acces Mesh C++ Object"\
- ,SALOME::INTERNAL_ERROR);
- }
+ {
+ MESSAGE("Exception en accedant aux differents types");
+ THROW_SALOME_CORBA_EXCEPTION("Unable to acces Mesh C++ Object",
+ SALOME::INTERNAL_ERROR);
+ }
return myseq._retn();
}
+
//=============================================================================
/*!
* CORBA: Returns number of elements of type medGeometryElement
- * Not implemented for MED_ALL_ELEMENTS
- * implemented for MED_ALL_ENTITIES
+ * Not implemented for MED_ALL_ELEMENTS
+ * implemented for MED_ALL_ENTITIES
*
* Dans cette implementation, il n est pas prevu de tenir compte du entity
* qui ne doit pas pouvoir avoir deux valeurs differentes pour un geomElement
*/
//=============================================================================
-CORBA::Long SMESH_MEDMesh_i::getNumberOfElements(SALOME_MED::medEntityMesh entity,
- SALOME_MED::medGeometryElement geomElement)
- throw (SALOME::SALOME_Exception)
+CORBA::Long SMESH_MEDMesh_i::getNumberOfElements(SALOME_MED::
+ medEntityMesh entity,
+ SALOME_MED::medGeometryElement geomElement) throw(SALOME::SALOME_Exception)
{
if (_mesh_i == 0)
- THROW_SALOME_CORBA_EXCEPTION("No associated Mesh", \
- SALOME::INTERNAL_ERROR);
+ THROW_SALOME_CORBA_EXCEPTION("No associated Mesh",
+ SALOME::INTERNAL_ERROR);
if (geomElement == SALOME_MED::MED_ALL_ELEMENTS)
- THROW_SALOME_CORBA_EXCEPTION("Not implemented for MED_ALL_ELEMENTS", \
- SALOME::BAD_PARAM);
- if (! _compte)
+ THROW_SALOME_CORBA_EXCEPTION("Not implemented for MED_ALL_ELEMENTS",
+ SALOME::BAD_PARAM);
+ if (!_compte)
calculeNbElts();
try
+ {
+ int retour = 0;
+ if (_mapIndToSeqElts.find(geomElement) != _mapIndToSeqElts.end())
{
- int retour = 0;
- if ( _mapIndToSeqElts.find(geomElement)!=_mapIndToSeqElts.end())
- {
- int index = _mapIndToSeqElts[geomElement];
- retour=_seq_elemId[index]->length();
- }
- return retour;
+ int index = _mapIndToSeqElts[geomElement];
+
+ retour = _seq_elemId[index]->length();
}
+ return retour;
+ }
catch(...)
- {
- MESSAGE("Exception en accedant au nombre d élements");
- THROW_SALOME_CORBA_EXCEPTION("Unable to acces Mesh C++ Object"\
- ,SALOME::INTERNAL_ERROR);
- }
+ {
+ MESSAGE("Exception en accedant au nombre d élements");
+ THROW_SALOME_CORBA_EXCEPTION("Unable to acces Mesh C++ Object",
+ SALOME::INTERNAL_ERROR);
+ }
}
+
//=============================================================================
/*!
* CORBA: Accessor for connectivities
*/
//=============================================================================
-Engines::long_array * SMESH_MEDMesh_i::getConnectivity(SALOME_MED::medModeSwitch typeSwitch,
- SALOME_MED::medConnectivity mode,
- SALOME_MED::medEntityMesh entity,
- SALOME_MED::medGeometryElement geomElement)
- throw (SALOME::SALOME_Exception)
+SALOME_MED::long_array *
+SMESH_MEDMesh_i::getConnectivity(SALOME_MED::medModeSwitch typeSwitch,
+ SALOME_MED::medConnectivity mode,
+ SALOME_MED::medEntityMesh entity,
+ SALOME_MED::medGeometryElement geomElement)
+ throw(SALOME::SALOME_Exception)
{
if (_mesh_i == 0)
- THROW_SALOME_CORBA_EXCEPTION("No associated Mesh", \
- SALOME::INTERNAL_ERROR);
+ THROW_SALOME_CORBA_EXCEPTION("No associated Mesh",
+ SALOME::INTERNAL_ERROR);
if (mode != SALOME_MED::MED_NODAL)
- THROW_SALOME_CORBA_EXCEPTION("Not Implemented",\
- SALOME::BAD_PARAM);
+ THROW_SALOME_CORBA_EXCEPTION("Not Implemented", SALOME::BAD_PARAM);
if (typeSwitch == SALOME_MED::MED_NO_INTERLACE)
- THROW_SALOME_CORBA_EXCEPTION("Not Yet Implemented",\
- SALOME::BAD_PARAM);
- if (! _compte)
+ THROW_SALOME_CORBA_EXCEPTION("Not Yet Implemented", SALOME::BAD_PARAM);
+ if (!_compte)
calculeNbElts();
// Faut-il renvoyer un pointeur vide ???
- if ( _mapIndToSeqElts.find(geomElement)!=_mapIndToSeqElts.end())
- THROW_SALOME_CORBA_EXCEPTION("No Such Element in the mesh"\
- ,SALOME::BAD_PARAM);
+ if (_mapIndToSeqElts.find(geomElement) != _mapIndToSeqElts.end())
+ THROW_SALOME_CORBA_EXCEPTION("No Such Element in the mesh",
+ SALOME::BAD_PARAM);
+
+ int index = _mapIndToSeqElts[geomElement];
- int index=_mapIndToSeqElts[geomElement];
return _seq_elemId[index]._retn();
}
+
//=============================================================================
/*!
* CORBA: Accessor for connectivities
*/
//=============================================================================
-Engines::long_array* SMESH_MEDMesh_i::getConnectivityIndex(SALOME_MED::medConnectivity mode,
- SALOME_MED::medEntityMesh entity)
- throw (SALOME::SALOME_Exception)
+SALOME_MED::long_array *
+SMESH_MEDMesh_i::getConnectivityIndex(SALOME_MED::medConnectivity mode,
+ SALOME_MED::medEntityMesh entity)
+ throw(SALOME::SALOME_Exception)
{
MESSAGE("Pas Implemente dans SMESH");
- THROW_SALOME_CORBA_EXCEPTION("Unimplemented Method"\
- ,SALOME::BAD_PARAM);
+ THROW_SALOME_CORBA_EXCEPTION("Unimplemented Method", SALOME::BAD_PARAM);
return 0;
}
+
//=============================================================================
/*!
* CORBA: Find an element corresponding to the given connectivity
*/
//=============================================================================
-CORBA::Long SMESH_MEDMesh_i::getElementNumber(SALOME_MED::medConnectivity mode,
- SALOME_MED::medEntityMesh entity,
- SALOME_MED::medGeometryElement type,
- const Engines::long_array & connectivity
-)
- throw (SALOME::SALOME_Exception)
+CORBA::Long
+SMESH_MEDMesh_i::getElementNumber(SALOME_MED::medConnectivity mode,
+ SALOME_MED::medEntityMesh entity,
+ SALOME_MED::medGeometryElement type,
+ const SALOME_MED::long_array & connectivity)
+ throw(SALOME::SALOME_Exception)
{
- const char * LOC = "getElementNumber ";
- MESSAGE(LOC<<"Pas Implemente dans SMESH");
- THROW_SALOME_CORBA_EXCEPTION("Unimplemented Method"\
- ,SALOME::BAD_PARAM);
+ const char *LOC = "getElementNumber ";
+ MESSAGE(LOC << "Pas Implemente dans SMESH");
+ THROW_SALOME_CORBA_EXCEPTION("Unimplemented Method", SALOME::BAD_PARAM);
return -1;
}
+
//=============================================================================
/*!
* CORBA: Accessor for Ascendant connectivities
* not implemented for MED_ALL_ENTITIES and MED_MAILLE
*/
//=============================================================================
-Engines::long_array* SMESH_MEDMesh_i::getReverseConnectivity(SALOME_MED::medConnectivity mode)
- throw (SALOME::SALOME_Exception)
+SALOME_MED::long_array *
+SMESH_MEDMesh_i::getReverseConnectivity(SALOME_MED::
+ medConnectivity mode) throw(SALOME::SALOME_Exception)
{
MESSAGE("Pas Implemente dans SMESH");
- THROW_SALOME_CORBA_EXCEPTION("Unimplemented Method"\
- ,SALOME::BAD_PARAM);
+ THROW_SALOME_CORBA_EXCEPTION("Unimplemented Method", SALOME::BAD_PARAM);
return 0;
}
+
//=============================================================================
/*!
* CORBA: Accessor for connectivities
*/
//=============================================================================
-Engines::long_array* SMESH_MEDMesh_i::getReverseConnectivityIndex(SALOME_MED::medConnectivity mode)
- throw (SALOME::SALOME_Exception)
+SALOME_MED::long_array *
+SMESH_MEDMesh_i::getReverseConnectivityIndex(SALOME_MED::
+ medConnectivity mode) throw(SALOME::SALOME_Exception)
{
MESSAGE("Pas Implemente dans SMESH");
- THROW_SALOME_CORBA_EXCEPTION("Unimplemented Method"\
- ,SALOME::BAD_PARAM);
+ THROW_SALOME_CORBA_EXCEPTION("Unimplemented Method", SALOME::BAD_PARAM);
return 0;
}
+
//=============================================================================
/*!
* CORBA: Returns number of families within the mesh
*/
//=============================================================================
-CORBA::Long SMESH_MEDMesh_i::getNumberOfFamilies(SALOME_MED::medEntityMesh entity)
- throw (SALOME::SALOME_Exception)
+CORBA::Long SMESH_MEDMesh_i::getNumberOfFamilies(SALOME_MED::
+ medEntityMesh entity) throw(SALOME::SALOME_Exception)
{
if (_creeFamily == false)
createFamilies();
if (_mesh_i == 0)
- THROW_SALOME_CORBA_EXCEPTION("No associated Mesh", \
- SALOME::INTERNAL_ERROR);
+ THROW_SALOME_CORBA_EXCEPTION("No associated Mesh",
+ SALOME::INTERNAL_ERROR);
return _families.size();
}
+
//=============================================================================
/*!
* CORBA: Returns number of groups within the mesh
*/
//=============================================================================
-CORBA::Long SMESH_MEDMesh_i::getNumberOfGroups(SALOME_MED::medEntityMesh entity)
- throw (SALOME::SALOME_Exception)
+CORBA::Long SMESH_MEDMesh_i::getNumberOfGroups(SALOME_MED::medEntityMesh entity)
+ throw(SALOME::SALOME_Exception)
{
if (_mesh_i == 0)
- THROW_SALOME_CORBA_EXCEPTION("No associated Mesh", \
- SALOME::INTERNAL_ERROR);
+ THROW_SALOME_CORBA_EXCEPTION("No associated Mesh",
+ SALOME::INTERNAL_ERROR);
MESSAGE(" Pas d implementation des groupes dans SMESH");
return 0;
}
+
//=============================================================================
/*!
* CORBA: Returns references for families within the mesh
*/
//=============================================================================
-SALOME_MED::Family_array * SMESH_MEDMesh_i::getFamilies(SALOME_MED::medEntityMesh entity)
- throw (SALOME::SALOME_Exception)
+SALOME_MED::Family_array *
+SMESH_MEDMesh_i::getFamilies(SALOME_MED::
+ medEntityMesh entity) throw(SALOME::SALOME_Exception)
{
if (_creeFamily == false)
createFamilies();
if (_mesh_i == 0)
- THROW_SALOME_CORBA_EXCEPTION("No associated Mesh", \
- SALOME::INTERNAL_ERROR);
+ THROW_SALOME_CORBA_EXCEPTION("No associated Mesh",
+ SALOME::INTERNAL_ERROR);
SALOME_MED::Family_array_var myseq = new SALOME_MED::Family_array;
- int nbfam= _families.size();
+ int nbfam = _families.size();
myseq->length(nbfam);
int i = 0;
- vector<SALOME_MED::FAMILY_ptr>::iterator it;
- for (it=_families.begin();it!=_families.end();it++)
- {
- myseq[i++]=*it;
- };
+ vector < SALOME_MED::FAMILY_ptr >::iterator it;
+ for (it = _families.begin(); it != _families.end(); it++)
+ {
+ myseq[i++] = *it;
+ };
return myseq._retn();
}
+
//=============================================================================
/*!
* CORBA: Returns references for family i within the mesh
*/
//=============================================================================
-SALOME_MED::FAMILY_ptr SMESH_MEDMesh_i::getFamily(SALOME_MED::medEntityMesh entity,
- CORBA::Long i)
- throw (SALOME::SALOME_Exception)
+SALOME_MED::FAMILY_ptr SMESH_MEDMesh_i::getFamily(SALOME_MED::
+ medEntityMesh entity, CORBA::Long i) throw(SALOME::SALOME_Exception)
{
if (_creeFamily == false)
createFamilies();
if (_mesh_i == 0)
- THROW_SALOME_CORBA_EXCEPTION("No associated Mesh", \
- SALOME::INTERNAL_ERROR);
+ THROW_SALOME_CORBA_EXCEPTION("No associated Mesh",
+ SALOME::INTERNAL_ERROR);
SCRUTE(_families[i]->getName());
- MESSAGE ( " SMESH_MEDMesh_i::getFamily " << i )
- return _families[i];
+ MESSAGE(" SMESH_MEDMesh_i::getFamily " << i) return _families[i];
}
+
//=============================================================================
/*!
* CORBA: Returns references for groups within the mesh
*/
//=============================================================================
-SALOME_MED::Group_array * SMESH_MEDMesh_i::getGroups(SALOME_MED::medEntityMesh entity)
- throw (SALOME::SALOME_Exception)
+SALOME_MED::Group_array *
+SMESH_MEDMesh_i::getGroups(SALOME_MED::medEntityMesh entity) throw(SALOME::
+ SALOME_Exception)
{
if (_mesh_i == 0)
- THROW_SALOME_CORBA_EXCEPTION("No associated Mesh", \
- SALOME::INTERNAL_ERROR);
+ THROW_SALOME_CORBA_EXCEPTION("No associated Mesh",
+ SALOME::INTERNAL_ERROR);
MESSAGE(" Pas d implementation des groupes dans SMESH");
- THROW_SALOME_CORBA_EXCEPTION("No group implementation"\
- ,SALOME::BAD_PARAM);
+ THROW_SALOME_CORBA_EXCEPTION("No group implementation", SALOME::BAD_PARAM);
}
+
//=============================================================================
/*!
* CORBA: Returns references for group i within the mesh
*/
//=============================================================================
-SALOME_MED::GROUP_ptr SMESH_MEDMesh_i::getGroup(SALOME_MED::medEntityMesh entity,
- CORBA::Long i)
- throw (SALOME::SALOME_Exception)
+SALOME_MED::GROUP_ptr SMESH_MEDMesh_i::getGroup(SALOME_MED::
+ medEntityMesh entity, CORBA::Long i) throw(SALOME::SALOME_Exception)
{
if (_mesh_i == 0)
- THROW_SALOME_CORBA_EXCEPTION("No associated Mesh", \
- SALOME::INTERNAL_ERROR);
+ THROW_SALOME_CORBA_EXCEPTION("No associated Mesh",
+ SALOME::INTERNAL_ERROR);
MESSAGE(" Pas d implementation des groupes dans SMESH");
- THROW_SALOME_CORBA_EXCEPTION("No group implementation"\
- ,SALOME::BAD_PARAM);
+ THROW_SALOME_CORBA_EXCEPTION("No group implementation", SALOME::BAD_PARAM);
}
//=============================================================================
/*!
- * CORBA:
+ * CORBA: Returns references for the global numbering index
+ */
+//=============================================================================
+SALOME_MED::long_array*
+SMESH_MEDMesh_i::getGlobalNumberingIndex(SALOME_MED::medEntityMesh entity)
+ throw (SALOME::SALOME_Exception)
+{
+ MESSAGE("!!!! NOT YET IMPLEMENTED !!!!!");
+
+ THROW_SALOME_CORBA_EXCEPTION("Unimplemented Method", SALOME::BAD_PARAM);
+
+ return NULL;
+}
+//=============================================================================
+/*!
+ * CORBA: Returns references for the support of boundary elements of type
+ * entity
*/
//=============================================================================
-SALOME_MED::FIELD_ptr SMESH_MEDMesh_i::getVolume(SALOME_MED::SUPPORT_ptr mySupport)
+SALOME_MED::SUPPORT_ptr
+SMESH_MEDMesh_i::getBoundaryElements(SALOME_MED::medEntityMesh entity)
throw (SALOME::SALOME_Exception)
+{
+ MESSAGE("!!!! NOT YET IMPLEMENTED !!!!!");
+
+ THROW_SALOME_CORBA_EXCEPTION("Unimplemented Method", SALOME::BAD_PARAM);
+
+ return NULL;
+}
+//=============================================================================
+/*!
+ * CORBA: Method return a reference on a support define on all the element of
+ * an entity.
+ */
+//=============================================================================
+SALOME_MED::SUPPORT_ptr
+SMESH_MEDMesh_i::getSupportOnAll(SALOME_MED::medEntityMesh entity)
+ throw (SALOME::SALOME_Exception)
+{
+ MESSAGE("!!!! NOT YET IMPLEMENTED !!!!!");
+
+ THROW_SALOME_CORBA_EXCEPTION("Unimplemented Method", SALOME::BAD_PARAM);
+
+ return NULL;
+}
+//=============================================================================
+/*!
+ * CORBA: Returns references for the support of the skin of the support
+ * mySupport3D
+ */
+//=============================================================================
+SALOME_MED::SUPPORT_ptr
+SMESH_MEDMesh_i::getSkin(SALOME_MED::SUPPORT_ptr mySupport3D)
+ throw (SALOME::SALOME_Exception)
+{
+ MESSAGE("!!!! NOT YET IMPLEMENTED !!!!!");
+
+ THROW_SALOME_CORBA_EXCEPTION("Unimplemented Method", SALOME::BAD_PARAM);
+
+ return NULL;
+}
+//=============================================================================
+/*!
+ * CORBA:
+ */
+//=============================================================================
+SALOME_MED::FIELD_ptr SMESH_MEDMesh_i::getVolume(SALOME_MED::
+ SUPPORT_ptr mySupport) throw(SALOME::SALOME_Exception)
{
MESSAGE("Pas Implemente dans SMESH");
- THROW_SALOME_CORBA_EXCEPTION("Unimplemented Method"\
- ,SALOME::BAD_PARAM);
+ THROW_SALOME_CORBA_EXCEPTION("Unimplemented Method", SALOME::BAD_PARAM);
return 0;
}
+
//=============================================================================
/*!
* CORBA:
*/
//=============================================================================
-SALOME_MED::FIELD_ptr SMESH_MEDMesh_i::getArea(SALOME_MED::SUPPORT_ptr mySupport)
- throw (SALOME::SALOME_Exception)
+SALOME_MED::FIELD_ptr SMESH_MEDMesh_i::getArea(SALOME_MED::
+ SUPPORT_ptr mySupport) throw(SALOME::SALOME_Exception)
{
MESSAGE("Pas Implemente dans SMESH");
- THROW_SALOME_CORBA_EXCEPTION("Unimplemented Method"\
- ,SALOME::BAD_PARAM);
+ THROW_SALOME_CORBA_EXCEPTION("Unimplemented Method", SALOME::BAD_PARAM);
return 0;
}
+
//=============================================================================
/*!
* CORBA:
*/
//=============================================================================
-SALOME_MED::FIELD_ptr SMESH_MEDMesh_i::getLength(SALOME_MED::SUPPORT_ptr mySupport)
- throw (SALOME::SALOME_Exception)
+SALOME_MED::FIELD_ptr SMESH_MEDMesh_i::getLength(SALOME_MED::
+ SUPPORT_ptr mySupport) throw(SALOME::SALOME_Exception)
{
MESSAGE("Pas Implemente dans SMESH");
- THROW_SALOME_CORBA_EXCEPTION("Unimplemented Method"\
- ,SALOME::BAD_PARAM);
+ THROW_SALOME_CORBA_EXCEPTION("Unimplemented Method", SALOME::BAD_PARAM);
return 0;
}
+
//=============================================================================
/*!
* CORBA:
*/
//=============================================================================
-SALOME_MED::FIELD_ptr SMESH_MEDMesh_i::getNormal(SALOME_MED::SUPPORT_ptr mySupport)
- throw (SALOME::SALOME_Exception)
+SALOME_MED::FIELD_ptr SMESH_MEDMesh_i::getNormal(SALOME_MED::
+ SUPPORT_ptr mySupport) throw(SALOME::SALOME_Exception)
{
MESSAGE("Pas Implemente dans SMESH");
- THROW_SALOME_CORBA_EXCEPTION("Unimplemented Method"\
- ,SALOME::BAD_PARAM);
+ THROW_SALOME_CORBA_EXCEPTION("Unimplemented Method", SALOME::BAD_PARAM);
return 0;
}
+
//=============================================================================
/*!
* CORBA:
*/
//=============================================================================
-SALOME_MED::FIELD_ptr SMESH_MEDMesh_i::getBarycenter(SALOME_MED::SUPPORT_ptr mySupport)
- throw (SALOME::SALOME_Exception)
+SALOME_MED::FIELD_ptr SMESH_MEDMesh_i::getBarycenter(SALOME_MED::
+ SUPPORT_ptr mySupport) throw(SALOME::SALOME_Exception)
{
MESSAGE("Pas Implemente dans SMESH");
- THROW_SALOME_CORBA_EXCEPTION("Unimplemented Method"\
- ,SALOME::BAD_PARAM);
+ THROW_SALOME_CORBA_EXCEPTION("Unimplemented Method", SALOME::BAD_PARAM);
return 0;
}
+
//=============================================================================
/*!
* CORBA:
*/
//=============================================================================
-SALOME_MED::FIELD_ptr SMESH_MEDMesh_i::getNeighbourhood(SALOME_MED::SUPPORT_ptr mySupport)
- throw (SALOME::SALOME_Exception)
+SALOME_MED::FIELD_ptr SMESH_MEDMesh_i::getNeighbourhood(SALOME_MED::
+ SUPPORT_ptr mySupport) throw(SALOME::SALOME_Exception)
{
MESSAGE("Non Implemente");
- THROW_SALOME_CORBA_EXCEPTION("Unimplemented Method"\
- ,SALOME::BAD_PARAM);
+ THROW_SALOME_CORBA_EXCEPTION("Unimplemented Method", SALOME::BAD_PARAM);
return 0;
}
+
//=============================================================================
/*!
* CORBA: add the Mesh in the StudyManager
*/
//=============================================================================
void SMESH_MEDMesh_i::addInStudy(SALOMEDS::Study_ptr myStudy,
- SALOME_MED::MESH_ptr myIor)
- throw (SALOME::SALOME_Exception)
+ SALOME_MED::MESH_ptr myIor) throw(SALOME::SALOME_Exception)
{
BEGIN_OF("MED_Mesh_i::addInStudy");
- if ( _meshId != "" )
- {
- MESSAGE("Mesh already in Study");
- THROW_SALOME_CORBA_EXCEPTION("Mesh already in Study", \
- SALOME::BAD_PARAM);
- };
+ if (_meshId != "")
+ {
+ MESSAGE("Mesh already in Study");
+ THROW_SALOME_CORBA_EXCEPTION("Mesh already in Study",
+ SALOME::BAD_PARAM);
+ };
/*
- SALOMEDS::StudyBuilder_var myBuilder = myStudy->NewBuilder();
-
- // Create SComponent labelled 'MED' if it doesn't already exit
- SALOMEDS::SComponent_var medfather = myStudy->FindComponent("MED");
- if ( CORBA::is_nil(medfather) )
- {
- MESSAGE("Add Component MED");
- medfather = myBuilder->NewComponent("MED");
- //myBuilder->AddAttribute (medfather,SALOMEDS::Name,"MED");
- SALOMEDS::AttributeName_var aName = SALOMEDS::AttributeName::_narrow(
- myBuilder->FindOrCreateAttribute(medfather, "AttributeName"));
- aName->SetValue("MED");
-
- myBuilder->DefineComponentInstance(medfather,myIor);
-
- } ;
-
- MESSAGE("Add a mesh Object under MED");
- myBuilder->NewCommand();
- SALOMEDS::SObject_var newObj = myBuilder->NewObject(medfather);
-
- ORB_INIT &init = *SINGLETON_<ORB_INIT>::Instance() ;
- ASSERT(SINGLETON_<ORB_INIT>::IsAlreadyExisting()) ;
- CORBA::ORB_var &orb = init(0,0);
- string iorStr = orb->object_to_string(myIor);
- //myBuilder->AddAttribute(newObj,SALOMEDS::IOR,iorStr.c_str());
- SALOMEDS::AttributeIOR_var aIOR = SALOMEDS::AttributeIOR::_narrow(
- myBuilder->FindOrCreateAttribute(newObj, "AttributeIOR"));
- aIOR->SetValue(iorStr.c_str());
-
- //myBuilder->AddAttribute(newObj,SALOMEDS::Name,_mesh_i->getName().c_str());
- SALOMEDS::AttributeName_var aName = SALOMEDS::AttributeName::_narrow(
- myBuilder->FindOrCreateAttribute(newObj, "AttributeName"));
- aName->SetValue(_mesh_i->getName().c_str());
-
- _meshId = newObj->GetID();
- myBuilder->CommitCommand();
-
- */
+ * SALOMEDS::StudyBuilder_var myBuilder = myStudy->NewBuilder();
+ *
+ * // Create SComponent labelled 'MED' if it doesn't already exit
+ * SALOMEDS::SComponent_var medfather = myStudy->FindComponent("MED");
+ * if ( CORBA::is_nil(medfather) )
+ * {
+ * MESSAGE("Add Component MED");
+ * medfather = myBuilder->NewComponent("MED");
+ * //myBuilder->AddAttribute (medfather,SALOMEDS::Name,"MED");
+ * SALOMEDS::AttributeName_var aName = SALOMEDS::AttributeName::_narrow(
+ * myBuilder->FindOrCreateAttribute(medfather, "AttributeName"));
+ * aName->SetValue("MED");
+ *
+ * myBuilder->DefineComponentInstance(medfather,myIor);
+ *
+ * } ;
+ *
+ * MESSAGE("Add a mesh Object under MED");
+ * myBuilder->NewCommand();
+ * SALOMEDS::SObject_var newObj = myBuilder->NewObject(medfather);
+ *
+ * ORB_INIT &init = *SINGLETON_<ORB_INIT>::Instance() ;
+ * ASSERT(SINGLETON_<ORB_INIT>::IsAlreadyExisting()) ;
+ * CORBA::ORB_var &orb = init(0,0);
+ * CORBA::String_var iorStr = orb->object_to_string(myIor);
+ * //myBuilder->AddAttribute(newObj,SALOMEDS::IOR,iorStr.in());
+ * SALOMEDS::AttributeIOR_var aIOR = SALOMEDS::AttributeIOR::_narrow(
+ * myBuilder->FindOrCreateAttribute(newObj, "AttributeIOR"));
+ * aIOR->SetValue(iorStr.c_str());
+ *
+ * //myBuilder->AddAttribute(newObj,SALOMEDS::Name,_mesh_i->getName().c_str());
+ * SALOMEDS::AttributeName_var aName = SALOMEDS::AttributeName::_narrow(
+ * myBuilder->FindOrCreateAttribute(newObj, "AttributeName"));
+ * aName->SetValue(_mesh_i->getName().c_str());
+ *
+ * _meshId = newObj->GetID();
+ * myBuilder->CommitCommand();
+ *
+ */
END_OF("Mesh_i::addInStudy(SALOMEDS::Study_ptr myStudy)");
}
+
//=============================================================================
/*!
* CORBA: write mesh in a med file
*/
//=============================================================================
-void SMESH_MEDMesh_i::write(CORBA::Long i, const char* driverMeshName)
- throw (SALOME::SALOME_Exception)
+void SMESH_MEDMesh_i::write(CORBA::Long i, const char *driverMeshName)
+ throw(SALOME::SALOME_Exception)
{
MESSAGE("Non Implemente");
- THROW_SALOME_CORBA_EXCEPTION("Unimplemented Method"\
- ,SALOME::BAD_PARAM);
+ THROW_SALOME_CORBA_EXCEPTION("Unimplemented Method", SALOME::BAD_PARAM);
}
+
//=============================================================================
/*!
* CORBA: read mesh in a med file
*/
//=============================================================================
-void SMESH_MEDMesh_i::read(CORBA::Long i)
- throw (SALOME::SALOME_Exception)
+void SMESH_MEDMesh_i::read(CORBA::Long i) throw(SALOME::SALOME_Exception)
{
MESSAGE("Non Implemente");
- THROW_SALOME_CORBA_EXCEPTION("Unimplemented Method"\
- ,SALOME::BAD_PARAM);
+ THROW_SALOME_CORBA_EXCEPTION("Unimplemented Method", SALOME::BAD_PARAM);
}
+
//=============================================================================
/*!
* CORBA : release driver
*/
//=============================================================================
-void SMESH_MEDMesh_i::rmDriver(CORBA::Long i)
- throw (SALOME::SALOME_Exception)
+void SMESH_MEDMesh_i::rmDriver(CORBA::Long i) throw(SALOME::SALOME_Exception)
{
MESSAGE("Non Implemente");
- THROW_SALOME_CORBA_EXCEPTION("Unimplemented Method"\
- ,SALOME::BAD_PARAM);
+ THROW_SALOME_CORBA_EXCEPTION("Unimplemented Method", SALOME::BAD_PARAM);
}
+
//=============================================================================
/*!
* CORBA : attach driver
*/
//=============================================================================
-CORBA::Long SMESH_MEDMesh_i::addDriver(SALOME_MED::medDriverTypes driverType,
- const char* fileName, const char* meshName)
- throw (SALOME::SALOME_Exception)
+CORBA::Long SMESH_MEDMesh_i::addDriver(SALOME_MED::medDriverTypes driverType,
+ const char *fileName, const char *meshName) throw(SALOME::SALOME_Exception)
{
MESSAGE("Non Implemente");
- THROW_SALOME_CORBA_EXCEPTION("Unimplemented Method"\
- ,SALOME::BAD_PARAM);
+ THROW_SALOME_CORBA_EXCEPTION("Unimplemented Method", SALOME::BAD_PARAM);
return 0;
}
+
//=============================================================================
/*!
* Calcule le Nb d'elements par entite geometrique
*/
//=============================================================================
-void SMESH_MEDMesh_i::calculeNbElts()
- throw (SALOME::SALOME_Exception)
+void SMESH_MEDMesh_i::calculeNbElts() throw(SALOME::SALOME_Exception)
{
- if (! _compte)
+ if (!_compte)
+ {
+ _compte = true;
+
+ _mapNbTypes[SALOME_MED::MED_NODE] = 1;
+ // On compte les aretes MED_SEG2 ou MED_SEG3
+ // On range les elements dans les vecteurs correspondants
+
+ _mapIndToSeqElts[SALOME_MED::MED_SEG2] = _indexElts++;
+ _mapIndToSeqElts[SALOME_MED::MED_SEG3] = _indexElts++;
+ _mapIndToVectTypes[SALOME_MED::MED_EDGE] = _indexEnts++;
+
+ int trouveSeg2 = 0;
+ int trouveSeg3 = 0;
+ SALOME_MED::medGeometryElement medElement;
+
+ SMDS_EdgeIteratorPtr itEdges=_meshDS->edgesIterator();
+ while(itEdges->more())
+ {
+ const SMDS_MeshEdge* elem = itEdges->next();
+ int nb_of_nodes = elem->NbNodes();
+
+ switch (nb_of_nodes)
+ {
+ case 2:
+ {
+ medElement = SALOME_MED::MED_SEG2;
+ if (trouveSeg2 == 0)
+ {
+ trouveSeg2 = 1;
+ _TypesId[SALOME_MED::MED_EDGE].
+ push_back(SALOME_MED::MED_SEG2);
+ }
+ break;
+ }
+ case 3:
+ {
+ medElement = SALOME_MED::MED_SEG3;
+ if (trouveSeg3 == 0)
+ {
+ trouveSeg3 = 1;
+ _TypesId[SALOME_MED::MED_EDGE].
+ push_back(SALOME_MED::MED_SEG3);
+ }
+ break;
+ }
+ }
+ 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_NodeIteratorPtr itn=_meshDS->nodesIterator();
+
+ for(int k=0; itn->more(); k++)
+ _seq_elemId[index][longueur + k] = itn->next()->GetID()+1;
+ }
+
+ _mapNbTypes[SALOME_MED::MED_EDGE] = trouveSeg2 + trouveSeg3;
+
+ // On compte les faces MED_TRIA3, MED_HEXA8, MED_TRIA6
+ // On range les elements dans les vecteurs correspondants
+ int trouveTria3 = 0;
+ int trouveTria6 = 0;
+ int trouveQuad4 = 0;
+
+ _mapIndToSeqElts[SALOME_MED::MED_TRIA3] = _indexElts++;
+ _mapIndToSeqElts[SALOME_MED::MED_TRIA6] = _indexElts++;
+ _mapIndToSeqElts[SALOME_MED::MED_QUAD4] = _indexElts++;
+ _mapIndToVectTypes[SALOME_MED::MED_FACE] = _indexEnts++;
+
+ SMDS_FaceIteratorPtr itFaces=_meshDS->facesIterator();
+ while(itFaces->more())
{
- _compte=true;
-
- _mapNbTypes[SALOME_MED::MED_NODE]=1;
- // On compte les aretes MED_SEG2 ou MED_SEG3
- // On range les elements dans les vecteurs correspondants
-
- _mapIndToSeqElts[SALOME_MED::MED_SEG2]=_indexElts++;
- _mapIndToSeqElts[SALOME_MED::MED_SEG3]=_indexElts++;
- _mapIndToVectTypes[SALOME_MED::MED_EDGE]=_indexEnts++;
-
- int trouveSeg2=0;
- int trouveSeg3=0;
- SALOME_MED::medGeometryElement medElement;
- SMDS_MeshEdgesIterator itEdges(_meshDS);
- for (;itEdges.More();itEdges.Next())
- {
- const Handle(SMDS_MeshElement)& elem = itEdges.Value();
- int nb_of_nodes = elem->NbNodes();
-
- switch (nb_of_nodes)
- {
- case 2 :
- {
- medElement=SALOME_MED::MED_SEG2;
- if (trouveSeg2==0)
- {
- trouveSeg2=1;
- _TypesId[SALOME_MED::MED_EDGE].push_back(SALOME_MED::MED_SEG2);
-
- }
- break;
- }
- case 3 :
- {
- medElement=SALOME_MED::MED_SEG3;
- if (trouveSeg3==0)
- {
- trouveSeg3=1;
- _TypesId[SALOME_MED::MED_EDGE].push_back(SALOME_MED::MED_SEG3);
- }
- break;
- }
- }
- int index=_mapIndToSeqElts[medElement];
- SCRUTE(index);
- // Traitement de l arete
- int longueur=_seq_elemId[index]->length();
- _seq_elemId[index]->length(longueur + nb_of_nodes);
-
- for (int k=0; k<nb_of_nodes; k++)
- {
- _seq_elemId[index][longueur+k]=elem->GetConnection(k+1) +1;
- }
- }
-
- _mapNbTypes[SALOME_MED::MED_EDGE]=trouveSeg2 + trouveSeg3;
-
- // On compte les faces MED_TRIA3, MED_HEXA8, MED_TRIA6
- // On range les elements dans les vecteurs correspondants
- int trouveTria3=0;
- int trouveTria6=0;
- int trouveQuad4=0;
-
- _mapIndToSeqElts[SALOME_MED::MED_TRIA3]=_indexElts++;
- _mapIndToSeqElts[SALOME_MED::MED_TRIA6]=_indexElts++;
- _mapIndToSeqElts[SALOME_MED::MED_QUAD4]=_indexElts++;
- _mapIndToVectTypes[SALOME_MED::MED_FACE]=_indexEnts++;
-
- SMDS_MeshFacesIterator itFaces(_meshDS);
- for (;itFaces.More();itFaces.Next())
- {
-
- const Handle(SMDS_MeshElement)& elem = itFaces.Value();
- int nb_of_nodes = elem->NbNodes();
-
- switch (nb_of_nodes)
- {
- case 3 :
- {
- medElement=SALOME_MED::MED_TRIA3;
- if (trouveTria3==0)
- {
- trouveTria3=1;
- _TypesId[SALOME_MED::MED_FACE].push_back(SALOME_MED::MED_TRIA3);
- }
- break;
- }
- case 4 :
- {
- medElement=SALOME_MED::MED_QUAD4;
- if (trouveQuad4==0)
- {
- trouveQuad4=1;
- _TypesId[SALOME_MED::MED_FACE].push_back(SALOME_MED::MED_QUAD4);
- }
- break;
- }
- case 6 :
- {
- medElement=SALOME_MED::MED_TRIA6;
- if (trouveTria6==0)
- {
- trouveTria6=1;
- _TypesId[SALOME_MED::MED_FACE].push_back(SALOME_MED::MED_TRIA6);
- }
- break;
- }
- }
- int index=_mapIndToSeqElts[medElement];
- SCRUTE(index);
-
- // Traitement de la face
- // Attention La numérotation des noeuds Med commence a 1
-
-
- int longueur = _seq_elemId[index]->length();
- _seq_elemId[index]->length(longueur+nb_of_nodes);
-
- for (int k=0; k<nb_of_nodes; k++)
- {
- _seq_elemId[index][longueur+k]=elem->GetConnection(k+1) +1;
- }
-
- }
- _mapNbTypes[SALOME_MED::MED_FACE]=trouveTria3 + trouveTria6 + trouveQuad4;
-
- _mapIndToSeqElts[SALOME_MED::MED_HEXA8]=_indexElts++;
- _mapIndToVectTypes[SALOME_MED::MED_CELL]=_indexEnts++;
- int index=_mapIndToSeqElts[medElement];
-
- int trouveHexa8=0;
- SMDS_MeshVolumesIterator itVolumes(_meshDS);
- for (;itVolumes.More();itVolumes.Next())
- {
- const Handle(SMDS_MeshElement)& elem = itVolumes.Value();
-
- int nb_of_nodes = elem->NbNodes();
- medElement=SALOME_MED::MED_HEXA8;
- ASSERT(nb_of_nodes=8);
-
- if (trouveHexa8 == 0)
- {
- trouveHexa8=1;
- _TypesId[SALOME_MED::MED_CELL].push_back(SALOME_MED::MED_HEXA8);
- };
- // Traitement de la maille
- int longueur=_seq_elemId[index]->length();
- _seq_elemId[index]->length(longueur+nb_of_nodes);
-
- for (int k=0; k<nb_of_nodes; k++)
- {
- _seq_elemId[index][longueur+k]=elem->GetConnection(k+1) +1;
- }
+ const SMDS_MeshFace * elem = itFaces->next();
+ int nb_of_nodes = elem->NbNodes();
+ switch (nb_of_nodes)
+ {
+ case 3:
+ {
+ medElement = SALOME_MED::MED_TRIA3;
+ if (trouveTria3 == 0)
+ {
+ trouveTria3 = 1;
+ _TypesId[SALOME_MED::MED_FACE].
+ push_back(SALOME_MED::MED_TRIA3);
+ }
+ break;
+ }
+ case 4:
+ {
+ medElement = SALOME_MED::MED_QUAD4;
+ if (trouveQuad4 == 0)
+ {
+ trouveQuad4 = 1;
+ _TypesId[SALOME_MED::MED_FACE].
+ push_back(SALOME_MED::MED_QUAD4);
+ }
+ break;
}
+ case 6:
+ {
+ medElement = SALOME_MED::MED_TRIA6;
+ if (trouveTria6 == 0)
+ {
+ trouveTria6 = 1;
+ _TypesId[SALOME_MED::MED_FACE].
+ push_back(SALOME_MED::MED_TRIA6);
+ }
+ break;
+ }
+ }
+ int index = _mapIndToSeqElts[medElement];
+ SCRUTE(index);
- _mapNbTypes[SALOME_MED::MED_CELL]=trouveHexa8;
- _mapNbTypes[SALOME_MED::MED_ALL_ENTITIES]
- =trouveHexa8 + trouveTria3 + trouveTria6 + trouveQuad4 + trouveSeg2 + trouveSeg3 ;
- } /* fin du _compte */
+ // Traitement de la face
+ // 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_NodeIteratorPtr itn=_meshDS->nodesIterator();
+
+ for(int k=0; itn->more(); k++)
+ _seq_elemId[index][longueur + k] = itn->next()->GetID()+1;
+ } //itFaces
+
+ _mapNbTypes[SALOME_MED::MED_FACE] =
+ trouveTria3 + trouveTria6 + trouveQuad4;
+
+ _mapIndToSeqElts[SALOME_MED::MED_HEXA8] = _indexElts++;
+ _mapIndToVectTypes[SALOME_MED::MED_CELL] = _indexEnts++;
+ int index = _mapIndToSeqElts[medElement];
+
+ int trouveHexa8 = 0;
+
+ 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);
+
+ if (trouveHexa8 == 0)
+ {
+ trouveHexa8 = 1;
+ _TypesId[SALOME_MED::MED_CELL].push_back(SALOME_MED::MED_HEXA8);
+ };
+ // Traitement de la maille
+ int longueur = _seq_elemId[index]->length();
+ _seq_elemId[index]->length(longueur + nb_of_nodes);
+
+ SMDS_NodeIteratorPtr itn=_meshDS->nodesIterator();
+ for(int k=0; itn->more(); k++)
+ _seq_elemId[index][longueur + k] = itn->next()->GetID()+1;
+ }
+
+ _mapNbTypes[SALOME_MED::MED_CELL] = trouveHexa8;
+ _mapNbTypes[SALOME_MED::MED_ALL_ENTITIES]
+ =
+ trouveHexa8 + trouveTria3 + trouveTria6 + trouveQuad4 + trouveSeg2 +
+ trouveSeg3;
+ }// fin du _compte
};
+
//=============================================================================
/*!
* Creation des familles
*/
//=============================================================================
-void SMESH_MEDMesh_i::createFamilies()
- throw (SALOME::SALOME_Exception)
+void SMESH_MEDMesh_i::createFamilies() throw(SALOME::SALOME_Exception)
{
- string famDes=("Je ne sais pas");
- string famName0="Famille_";
+ Unexpect aCatch(SALOME_SalomeException);
+ string famDes = ("Je ne sais pas");
+ string famName0 = "Famille_";
string famName;
char numero[10];
- if ( _creeFamily == false)
+ if (_creeFamily == false)
+ {
+ _creeFamily = true;
+ //SMESH_subMesh_i *subMeshServant;
+
+ map < int, SMESH_subMesh_i * >::iterator it;
+ for (it = _mesh_i->_mapSubMesh_i.begin();
+ it != _mesh_i->_mapSubMesh_i.end(); it++)
{
- _creeFamily = true;
- SMESH_subMesh_i* subMeshServant;
-
- map<int, SMESH_subMesh_i*>::iterator it;
- for (it = _mesh_i->_mapSubMesh_i.begin(); it != _mesh_i->_mapSubMesh_i.end(); it++) {
- SMESH_subMesh_i* submesh_i = (*it).second;
- int famIdent = (*it).first;
-
- ASSERT (famIdent<999999999);
- sprintf(numero,"%d\n",famIdent);
- famName=famName0 + numero;
-
- SMESH_MEDFamily_i * famservant= new SMESH_MEDFamily_i(famIdent, submesh_i,
- famName, famDes, SALOME_MED::MED_NODE);
- SALOME_MED::FAMILY_ptr famille =
- SALOME_MED::FAMILY::_narrow(famservant->POA_SALOME_MED::FAMILY::_this());
- _families.push_back(famille);
- }
- } /* fin du _compte */
+ SMESH_subMesh_i *submesh_i = (*it).second;
+ int famIdent = (*it).first;
+
+ ASSERT(famIdent < 999999999);
+ sprintf(numero, "%d\n", famIdent);
+ famName = famName0 + numero;
+
+ SMESH_MEDFamily_i *famservant =
+ new SMESH_MEDFamily_i(famIdent, submesh_i,
+ famName, famDes, SALOME_MED::MED_NODE);
+#ifdef WNT
+ SALOME_MED::FAMILY_ptr famille = SALOME_MED::FAMILY::_nil();
+ POA_SALOME_MED::FAMILY* servantbase = dynamic_cast<POA_SALOME_MED::FAMILY*>(famservant);
+ if ( servantbase )
+ famille = SALOME_MED::FAMILY::_narrow( servantbase->_this() );
+#else
+ SALOME_MED::FAMILY_ptr famille =
+ SALOME_MED::FAMILY::_narrow( famservant->POA_SALOME_MED::FAMILY::_this() );
+#endif
+ _families.push_back(famille);
+ }
+ }
};
+//=============================================================================
+/*!
+ * Gives informations of the considered mesh.
+ */
+//=============================================================================
+SALOME_MED::MESH::meshInfos * SMESH_MEDMesh_i::getMeshGlobal()
+ throw (SALOME::SALOME_Exception)
+{
+ MESSAGE("!!!! NOT YET IMPLEMENTED !!!!!");
+
+ THROW_SALOME_CORBA_EXCEPTION("Unimplemented Method", SALOME::BAD_PARAM);
+
+ return NULL;
+}
+//=============================================================================
+/*!
+ * Gives informations on coordinates of the considered mesh.
+ */
+//=============================================================================
+SALOME_MED::MESH::coordinateInfos * SMESH_MEDMesh_i::getCoordGlobal()
+ throw (SALOME::SALOME_Exception)
+{
+ MESSAGE("!!!! NOT YET IMPLEMENTED !!!!!");
+
+ THROW_SALOME_CORBA_EXCEPTION("Unimplemented Method", SALOME::BAD_PARAM);
+
+ return NULL;
+}
+//=============================================================================
+/*!
+ * Gives informations on connectivities of the considered mesh for the entity
+ * entity.
+ */
+//=============================================================================
+SALOME_MED::MESH::connectivityInfos *
+SMESH_MEDMesh_i::getConnectGlobal(SALOME_MED::medEntityMesh entity)
+ throw (SALOME::SALOME_Exception)
+{
+ MESSAGE("!!!! NOT YET IMPLEMENTED !!!!!");
+
+ THROW_SALOME_CORBA_EXCEPTION("Unimplemented Method", SALOME::BAD_PARAM);
+
+ return NULL;
+}
+//=============================================================================
+/*!
+ * Gives the type of the element number of entity entity
+ */
+//=============================================================================
+SALOME_MED::medGeometryElement
+SMESH_MEDMesh_i::getElementType(SALOME_MED::medEntityMesh entity,
+ CORBA::Long number)
+ throw (SALOME::SALOME_Exception)
+{
+ MESSAGE("!!!! NOT YET IMPLEMENTED !!!!!");
+ THROW_SALOME_CORBA_EXCEPTION("Unimplemented Method", SALOME::BAD_PARAM);
+
+ return (SALOME_MED::medGeometryElement) 0;
+}