-// Copyright (C) 2007-2019 CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2021 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
#include "SMESHDS_Mesh.hxx"
#include "SMESHDS_Script.hxx"
#include "SMESH_Mesh.hxx"
+#include "SMESH_Component_Generator.hxx"
#include "SALOME_NamingService.hxx"
#include "SALOME_LifeCycleCORBA.hxx"
#include <SALOMEconfig.h>
+#include <smIdType.hxx>
#include CORBA_SERVER_HEADER(SALOME_Component)
#include CORBA_SERVER_HEADER(SALOME_Exception)
//=======================================================================
inline void AddNodesWithID(SMDS_Mesh* theMesh,
SMESH::log_array_var& theSeq,
- CORBA::Long theId)
+ SMESH::smIdType theId)
{
const SMESH::double_array& aCoords = theSeq[theId].coords;
const SMESH::long_array& anIndexes = theSeq[theId].indexes;
- CORBA::Long anElemId = 0, aNbElems = theSeq[theId].number;
- if(3*aNbElems != (CORBA::Long) aCoords.length())
+ SMESH::smIdType anElemId = 0, aNbElems = theSeq[theId].number;
+ if(3*aNbElems != (SMESH::smIdType) aCoords.length())
EXCEPTION(runtime_error,"AddNodesWithID - 3*aNbElems != aCoords.length()");
- for(CORBA::Long aCoordId = 0; anElemId < aNbElems; anElemId++, aCoordId+=3){
+ for(SMESH::smIdType aCoordId = 0; anElemId < aNbElems; anElemId++, aCoordId+=3){
SMDS_MeshElement* anElem = theMesh->AddNodeWithID(aCoords[aCoordId],
aCoords[aCoordId+1],
aCoords[aCoordId+2],
//=======================================================================
inline void Add0DElementsWithID(SMDS_Mesh* theMesh,
SMESH::log_array_var& theSeq,
- CORBA::Long theId)
+ SMESH::smIdType theId)
{
const SMESH::long_array& anIndexes = theSeq[theId].indexes;
- CORBA::Long anElemId = 0, aNbElems = theSeq[theId].number;
- if (2*aNbElems != (CORBA::Long) anIndexes.length())
+ SMESH::smIdType anElemId = 0, aNbElems = theSeq[theId].number;
+ if (2*aNbElems != (SMESH::smIdType) anIndexes.length())
EXCEPTION(runtime_error,"AddEdgeWithID - 2*aNbElems != aCoords.length()");
- CORBA::Long anIndexId = 0;
+ SMESH::smIdType anIndexId = 0;
for (; anElemId < aNbElems; anElemId++, anIndexId+=2)
{
SMDS_MeshElement* anElem = theMesh->Add0DElementWithID(anIndexes[anIndexId+1],
//=======================================================================
inline void AddBallsWithID(SMDS_Mesh* theMesh,
SMESH::log_array_var& theSeq,
- CORBA::Long theId)
+ SMESH::smIdType theId)
{
const SMESH::double_array& aDiameter = theSeq[theId].coords;
const SMESH::long_array& anIndexes = theSeq[theId].indexes;
- CORBA::Long anElemId = 0, aNbElems = theSeq[theId].number;
- if (2*aNbElems != (CORBA::Long) anIndexes.length() )
+ SMESH::smIdType anElemId = 0, aNbElems = theSeq[theId].number;
+ if (2*aNbElems != (SMESH::smIdType) anIndexes.length() )
EXCEPTION(runtime_error,"AddEdgeWithID - 2*aNbElems != anIndexes.length()");
- if (aNbElems != (CORBA::Long) aDiameter.length())
+ if (aNbElems != (SMESH::smIdType) aDiameter.length())
EXCEPTION(runtime_error,"AddEdgeWithID - aNbElems != aDiameter.length()");
- CORBA::Long anIndexId = 0;
+ SMESH::smIdType anIndexId = 0;
for (; anElemId < aNbElems; anElemId++, anIndexId+=2)
{
SMDS_MeshElement* anElem = theMesh->AddBallWithID(anIndexes[anIndexId+1],
//=======================================================================
inline void AddEdgesWithID(SMDS_Mesh* theMesh,
SMESH::log_array_var& theSeq,
- CORBA::Long theId)
+ SMESH::smIdType theId)
{
const SMESH::long_array& anIndexes = theSeq[theId].indexes;
- CORBA::Long anElemId = 0, aNbElems = theSeq[theId].number;
- if(3*aNbElems != (CORBA::Long) anIndexes.length())
+ SMESH::smIdType anElemId = 0, aNbElems = theSeq[theId].number;
+ if(3*aNbElems != (SMESH::smIdType) anIndexes.length())
EXCEPTION(runtime_error,"AddEdgeWithID - 3*aNbElems != aCoords.length()");
- for(CORBA::Long anIndexId = 0; anElemId < aNbElems; anElemId++, anIndexId+=3){
+ for(SMESH::smIdType anIndexId = 0; anElemId < aNbElems; anElemId++, anIndexId+=3){
SMDS_MeshElement* anElem = theMesh->AddEdgeWithID(anIndexes[anIndexId+1],
anIndexes[anIndexId+2],
anIndexes[anIndexId]);
//=======================================================================
inline void AddTriasWithID(SMDS_Mesh* theMesh,
SMESH::log_array_var& theSeq,
- CORBA::Long theId)
+ SMESH::smIdType theId)
{
const SMESH::long_array& anIndexes = theSeq[theId].indexes;
- CORBA::Long anElemId = 0, aNbElems = theSeq[theId].number;
- if(4*aNbElems != (CORBA::Long) anIndexes.length())
+ SMESH::smIdType anElemId = 0, aNbElems = theSeq[theId].number;
+ if(4*aNbElems != (SMESH::smIdType) anIndexes.length())
EXCEPTION(runtime_error,"AddTriasWithID - 4*aNbElems != anIndexes.length()");
- for(CORBA::Long anIndexId = 0; anElemId < aNbElems; anElemId++, anIndexId+=4){
+ for(SMESH::smIdType anIndexId = 0; anElemId < aNbElems; anElemId++, anIndexId+=4){
SMDS_MeshElement* anElem = theMesh->AddFaceWithID(anIndexes[anIndexId+1],
anIndexes[anIndexId+2],
anIndexes[anIndexId+3],
//=======================================================================
inline void AddQuadsWithID(SMDS_Mesh* theMesh,
SMESH::log_array_var theSeq,
- CORBA::Long theId)
+ SMESH::smIdType theId)
{
const SMESH::long_array& anIndexes = theSeq[theId].indexes;
- CORBA::Long anElemId = 0, aNbElems = theSeq[theId].number;
- if(5*aNbElems != (CORBA::Long) anIndexes.length())
+ SMESH::smIdType anElemId = 0, aNbElems = theSeq[theId].number;
+ if(5*aNbElems != (SMESH::smIdType) anIndexes.length())
EXCEPTION(runtime_error,"AddQuadsWithID - 4*aNbElems != anIndexes.length()");
- for(CORBA::Long anIndexId = 0; anElemId < aNbElems; anElemId++, anIndexId+=5){
+ for(SMESH::smIdType anIndexId = 0; anElemId < aNbElems; anElemId++, anIndexId+=5){
SMDS_MeshElement* anElem = theMesh->AddFaceWithID(anIndexes[anIndexId+1],
anIndexes[anIndexId+2],
anIndexes[anIndexId+3],
//=======================================================================
inline void AddPolygonsWithID(SMDS_Mesh* theMesh,
SMESH::log_array_var& theSeq,
- CORBA::Long theId)
+ SMESH::smIdType theId)
{
const SMESH::long_array& anIndexes = theSeq[theId].indexes;
- CORBA::Long anIndexId = 0, aNbElems = theSeq[theId].number;
+ SMESH::smIdType anIndexId = 0, aNbElems = theSeq[theId].number;
- for (CORBA::Long anElemId = 0; anElemId < aNbElems; anElemId++) {
- int aFaceId = anIndexes[anIndexId++];
+ for (SMESH::smIdType anElemId = 0; anElemId < aNbElems; anElemId++) {
+ smIdType aFaceId = anIndexes[anIndexId++];
int aNbNodes = anIndexes[anIndexId++];
- std::vector<int> nodes_ids (aNbNodes);
+ std::vector<smIdType> nodes_ids (aNbNodes);
for (int i = 0; i < aNbNodes; i++) {
nodes_ids[i] = anIndexes[anIndexId++];
}
//=======================================================================
inline void AddQuadPolygonsWithID(SMDS_Mesh* theMesh,
SMESH::log_array_var& theSeq,
- CORBA::Long theId)
+ SMESH::smIdType theId)
{
const SMESH::long_array& anIndexes = theSeq[theId].indexes;
- CORBA::Long anIndexId = 0, aNbElems = theSeq[theId].number;
+ SMESH::smIdType anIndexId = 0, aNbElems = theSeq[theId].number;
- for (CORBA::Long anElemId = 0; anElemId < aNbElems; anElemId++) {
- int aFaceId = anIndexes[anIndexId++];
+ for (SMESH::smIdType anElemId = 0; anElemId < aNbElems; anElemId++) {
+ smIdType aFaceId = anIndexes[anIndexId++];
int aNbNodes = anIndexes[anIndexId++];
- std::vector<int> nodes_ids (aNbNodes);
+ std::vector<smIdType> nodes_ids (aNbNodes);
for (int i = 0; i < aNbNodes; i++) {
nodes_ids[i] = anIndexes[anIndexId++];
}
//=======================================================================
inline void AddTetrasWithID(SMDS_Mesh* theMesh,
SMESH::log_array_var& theSeq,
- CORBA::Long theId)
+ SMESH::smIdType theId)
{
const SMESH::long_array& anIndexes = theSeq[theId].indexes;
- CORBA::Long anElemId = 0, aNbElems = theSeq[theId].number;
- if(5*aNbElems != (CORBA::Long) anIndexes.length())
+ SMESH::smIdType anElemId = 0, aNbElems = theSeq[theId].number;
+ if(5*aNbElems != (SMESH::smIdType) anIndexes.length())
EXCEPTION(runtime_error,"AddTetrasWithID - 5*aNbElems != anIndexes.length()");
- for(CORBA::Long anIndexId = 0; anElemId < aNbElems; anElemId++, anIndexId+=5){
+ for(SMESH::smIdType anIndexId = 0; anElemId < aNbElems; anElemId++, anIndexId+=5){
SMDS_MeshElement* anElem = theMesh->AddVolumeWithID(anIndexes[anIndexId+1],
anIndexes[anIndexId+2],
anIndexes[anIndexId+3],
//=======================================================================
inline void AddPiramidsWithID(SMDS_Mesh* theMesh,
SMESH::log_array_var& theSeq,
- CORBA::Long theId)
+ SMESH::smIdType theId)
{
const SMESH::long_array& anIndexes = theSeq[theId].indexes;
- CORBA::Long anElemId = 0, aNbElems = theSeq[theId].number;
- if(6*aNbElems != (CORBA::Long) anIndexes.length())
+ SMESH::smIdType anElemId = 0, aNbElems = theSeq[theId].number;
+ if(6*aNbElems != (SMESH::smIdType) anIndexes.length())
EXCEPTION(runtime_error,"AddPiramidsWithID - 6*aNbElems != anIndexes.length()");
- for(CORBA::Long anIndexId = 0; anElemId < aNbElems; anElemId++, anIndexId+=6){
+ for(SMESH::smIdType anIndexId = 0; anElemId < aNbElems; anElemId++, anIndexId+=6){
SMDS_MeshElement* anElem = theMesh->AddVolumeWithID(anIndexes[anIndexId+1],
anIndexes[anIndexId+2],
anIndexes[anIndexId+3],
//=======================================================================
inline void AddPrismsWithID(SMDS_Mesh* theMesh,
SMESH::log_array_var& theSeq,
- CORBA::Long theId)
+ SMESH::smIdType theId)
{
const SMESH::long_array& anIndexes = theSeq[theId].indexes;
CORBA::Long anElemId = 0, aNbElems = theSeq[theId].number;
CORBA::Long anIndexId = 0, aNbElems = theSeq[theId].number;
for (CORBA::Long anElemId = 0; anElemId < aNbElems; anElemId++) {
- int aFaceId = anIndexes[anIndexId++];
+ smIdType aFaceId = anIndexes[anIndexId++];
int aNbNodes = anIndexes[anIndexId++];
- std::vector<int> nodes_ids (aNbNodes);
+ std::vector<smIdType> nodes_ids (aNbNodes);
for (int i = 0; i < aNbNodes; i++) {
nodes_ids[i] = anIndexes[anIndexId++];
}
//=======================================================================
//function : ChangePolyhedronNodes
//=======================================================================
- inline void ChangePolyhedronNodes (SMDS_Mesh* theMesh,
+ inline void ChangePolyhedronNodes (SMDS_Mesh* theMesh,
SMESH::log_array_var& theSeq,
- CORBA::Long theId)
+ CORBA::Long theId)
{
- // const SMESH::long_array& anIndexes = theSeq[theId].indexes;
- // CORBA::Long iind = 0, aNbElems = theSeq[theId].number;
-
- // for (CORBA::Long anElemId = 0; anElemId < aNbElems; anElemId++)
- // {
- // // find element
- // const SMDS_MeshElement* elem = FindElement(theMesh, anIndexes[iind++]);
- // // nb nodes
- // int nbNodes = anIndexes[iind++];
- // // nodes
- // std::vector<const SMDS_MeshNode*> aNodes (nbNodes);
- // for (int iNode = 0; iNode < nbNodes; iNode++) {
- // aNodes[iNode] = FindNode(theMesh, anIndexes[iind++]);
- // }
- // // nb faces
- // int nbFaces = anIndexes[iind++];
- // // quantities
- // std::vector<int> quantities (nbFaces);
- // for (int iFace = 0; iFace < nbFaces; iFace++) {
- // quantities[iFace] = anIndexes[iind++];
- // }
- // // change
- // theMesh->ChangePolyhedronNodes(elem, aNodes, quantities);
- // }
+ const SMESH::long_array& anIndexes = theSeq[theId].indexes;
+ CORBA::Long iind = 0, aNbElems = theSeq[theId].number;
+
+ for (CORBA::Long anElemId = 0; anElemId < aNbElems; anElemId++)
+ {
+ // find element
+ const SMDS_MeshElement* elem = FindElement(theMesh, anIndexes[iind++]);
+ // nb nodes
+ int nbNodes = anIndexes[iind++];
+ // nodes
+ std::vector<const SMDS_MeshNode*> aNodes (nbNodes);
+ for (int iNode = 0; iNode < nbNodes; iNode++) {
+ aNodes[iNode] = FindNode(theMesh, anIndexes[iind++]);
+ }
+ // nb faces
+ int nbFaces = anIndexes[iind++];
+ // quantities
+ std::vector<int> quantities (nbFaces);
+ for (int iFace = 0; iFace < nbFaces; iFace++) {
+ quantities[iFace] = anIndexes[iind++];
+ }
+ // change
+ theMesh->ChangePolyhedronNodes(elem, aNodes, quantities);
+ }
}
}
{
static SMESH::SMESH_Gen_var aMeshGen;
- if(CORBA::is_nil(aMeshGen.in())){
+ if(CORBA::is_nil(aMeshGen.in()))
+ {
+ Engines::EngineComponent_var isCompoInSSLMode = GetSMESHInstanceHasThis();
+ if( CORBA::is_nil(isCompoInSSLMode) )
+ {
#ifdef WIN32
- long aClientPID = (long)_getpid();
+ long aClientPID = (long)_getpid();
#else
- long aClientPID = (long)getpid();
+ long aClientPID = (long)getpid();
#endif
- SALOME_NamingService aNamingService(theORB);
- SALOME_LifeCycleCORBA aLifeCycleCORBA(&aNamingService);
- Engines::EngineComponent_var aComponent = aLifeCycleCORBA.FindOrLoad_Component("FactoryServer","SMESH");
- aMeshGen = SMESH::SMESH_Gen::_narrow(aComponent);
+ SALOME_NamingService aNamingService(theORB);
+ SALOME_LifeCycleCORBA aLifeCycleCORBA(&aNamingService);
+ Engines::EngineComponent_var aComponent = aLifeCycleCORBA.FindOrLoad_Component("FactoryServer","SMESH");
+ aMeshGen = SMESH::SMESH_Gen::_narrow(aComponent);
- std::string aClientHostName = Kernel_Utils::GetHostname();
- Engines::Container_var aServerContainer = aMeshGen->GetContainerRef();
- CORBA::String_var aServerHostName = aServerContainer->getHostName();
- CORBA::Long aServerPID = aServerContainer->getPID();
- aMeshGen->SetEmbeddedMode((aClientPID == aServerPID) && (aClientHostName == aServerHostName.in()));
+ std::string aClientHostName = Kernel_Utils::GetHostname();
+ Engines::Container_var aServerContainer = aMeshGen->GetContainerRef();
+ CORBA::String_var aServerHostName = aServerContainer->getHostName();
+ CORBA::Long aServerPID = aServerContainer->getPID();
+ aMeshGen->SetEmbeddedMode((aClientPID == aServerPID) && (aClientHostName == aServerHostName.in()));
+ }
+ else
+ {
+ aMeshGen = SMESH::SMESH_Gen::_narrow(isCompoInSSLMode);
+ }
+
}
theIsEmbeddedMode = aMeshGen->IsEmbeddedMode();
-
return aMeshGen;
}