mirror of
https://git.salome-platform.org/gitpub/modules/smesh.git
synced 2025-01-29 04:10:33 +05:00
First implementation of iterator
This commit is contained in:
parent
3d4fc4e1e2
commit
e88352f46f
@ -170,6 +170,10 @@ module SMESH
|
|||||||
*/
|
*/
|
||||||
boolean IsEnablePublish();
|
boolean IsEnablePublish();
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* void SetAlgoIterator(in long long ptAlgoPy);
|
||||||
|
*/
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* Create a hypothesis that can be shared by different parts of the mesh.
|
* Create a hypothesis that can be shared by different parts of the mesh.
|
||||||
* An hypothesis is either:
|
* An hypothesis is either:
|
||||||
|
@ -776,6 +776,9 @@ module SMESH
|
|||||||
*/
|
*/
|
||||||
double GetComputeProgress();
|
double GetComputeProgress();
|
||||||
|
|
||||||
|
void SetAlgoIterator(in long long ptAlgoPy)
|
||||||
|
raises (SALOME::SALOME_Exception);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* Get information about mesh contents
|
* Get information about mesh contents
|
||||||
*/
|
*/
|
||||||
|
@ -61,6 +61,7 @@ SET(_link_LIBRARIES
|
|||||||
${GEOM_NMTTools}
|
${GEOM_NMTTools}
|
||||||
${GEOM_GEOMUtils}
|
${GEOM_GEOMUtils}
|
||||||
${Boost_LIBRARIES}
|
${Boost_LIBRARIES}
|
||||||
|
${PYTHON_LIBRARIES}
|
||||||
SMESHDS
|
SMESHDS
|
||||||
SMESHControls
|
SMESHControls
|
||||||
MeshDriverDAT
|
MeshDriverDAT
|
||||||
@ -124,6 +125,11 @@ SET(SMESHimpl_SOURCES
|
|||||||
SMESH_MeshLocker.cxx
|
SMESH_MeshLocker.cxx
|
||||||
)
|
)
|
||||||
|
|
||||||
|
SET(SMESH_ENGINE_PY
|
||||||
|
smesh_algoIterator.py
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
# --- rules ---
|
# --- rules ---
|
||||||
|
|
||||||
ADD_LIBRARY(SMESHimpl ${SMESHimpl_SOURCES})
|
ADD_LIBRARY(SMESHimpl ${SMESHimpl_SOURCES})
|
||||||
@ -136,3 +142,5 @@ TARGET_LINK_LIBRARIES(SMESHimpl ${_link_LIBRARIES} )
|
|||||||
INSTALL(TARGETS SMESHimpl EXPORT ${PROJECT_NAME}TargetGroup DESTINATION ${SALOME_INSTALL_LIBS})
|
INSTALL(TARGETS SMESHimpl EXPORT ${PROJECT_NAME}TargetGroup DESTINATION ${SALOME_INSTALL_LIBS})
|
||||||
|
|
||||||
INSTALL(FILES ${SMESHimpl_HEADERS} DESTINATION ${SALOME_INSTALL_HEADERS})
|
INSTALL(FILES ${SMESHimpl_HEADERS} DESTINATION ${SALOME_INSTALL_HEADERS})
|
||||||
|
|
||||||
|
SALOME_INSTALL_SCRIPTS("${SMESH_ENGINE_PY}" ${SALOME_INSTALL_PYTHON}/salome/smesh DEF_PERMS)
|
||||||
|
@ -39,6 +39,7 @@
|
|||||||
#include "SMESH_Hypothesis.hxx"
|
#include "SMESH_Hypothesis.hxx"
|
||||||
#include "SMESH_subMesh.hxx"
|
#include "SMESH_subMesh.hxx"
|
||||||
|
|
||||||
|
#include "PythonCppUtils.hxx"
|
||||||
#include "utilities.h"
|
#include "utilities.h"
|
||||||
|
|
||||||
#include "DriverDAT_W_SMDS_Mesh.h"
|
#include "DriverDAT_W_SMDS_Mesh.h"
|
||||||
@ -97,6 +98,12 @@ class SMESH_Mesh::SubMeshHolder : public SMESHDS_TSubMeshHolder< SMESH_subMesh >
|
|||||||
{
|
{
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct SMESH_Mesh::PyImpl
|
||||||
|
{
|
||||||
|
AutoPyRef pyref;
|
||||||
|
operator PyObject *() { return pyref; }
|
||||||
|
};
|
||||||
|
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
/*!
|
/*!
|
||||||
*
|
*
|
||||||
@ -107,7 +114,7 @@ SMESH_Mesh::SMESH_Mesh(int theLocalId,
|
|||||||
SMESH_Gen* theGen,
|
SMESH_Gen* theGen,
|
||||||
bool theIsEmbeddedMode,
|
bool theIsEmbeddedMode,
|
||||||
SMESHDS_Document* theDocument):
|
SMESHDS_Document* theDocument):
|
||||||
_groupId( 0 ), _nbSubShapes( 0 )
|
_groupId( 0 ), _nbSubShapes( 0 ), _pAlgoIt(new SMESH_Mesh::PyImpl)
|
||||||
{
|
{
|
||||||
MESSAGE("SMESH_Mesh::SMESH_Mesh(int localId)");
|
MESSAGE("SMESH_Mesh::SMESH_Mesh(int localId)");
|
||||||
_id = theLocalId;
|
_id = theLocalId;
|
||||||
@ -158,7 +165,8 @@ SMESH_Mesh::SMESH_Mesh():
|
|||||||
_isAutoColor( false ),
|
_isAutoColor( false ),
|
||||||
_isModified( false ),
|
_isModified( false ),
|
||||||
_shapeDiagonal( 0.0 ),
|
_shapeDiagonal( 0.0 ),
|
||||||
_callUp( 0 )
|
_callUp( 0 ),
|
||||||
|
_pAlgoIt(new SMESH_Mesh::PyImpl)
|
||||||
{
|
{
|
||||||
_subMeshHolder = new SubMeshHolder;
|
_subMeshHolder = new SubMeshHolder;
|
||||||
}
|
}
|
||||||
@ -233,6 +241,7 @@ SMESH_Mesh::~SMESH_Mesh()
|
|||||||
int result=pthread_create(&thread, NULL, deleteMeshDS, (void*)_meshDS);
|
int result=pthread_create(&thread, NULL, deleteMeshDS, (void*)_meshDS);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
delete _pAlgoIt;
|
||||||
}
|
}
|
||||||
|
|
||||||
//================================================================================
|
//================================================================================
|
||||||
@ -2588,6 +2597,38 @@ bool SMESH_Mesh::IsOrderOK( const SMESH_subMesh* smBefore,
|
|||||||
return true; // no order imposed to given sub-meshes
|
return true; // no order imposed to given sub-meshes
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void *SMESH_Mesh::getAlgoIt()
|
||||||
|
{
|
||||||
|
return (PyObject *)this->_pAlgoIt->pyref;
|
||||||
|
}
|
||||||
|
|
||||||
|
void SMESH_Mesh::SetAlgoIterator(void *pAlgoItVoid)
|
||||||
|
{
|
||||||
|
PyObject *pAlgoIt = reinterpret_cast<PyObject *>(pAlgoItVoid);
|
||||||
|
AutoGIL gstate;
|
||||||
|
|
||||||
|
if(pAlgoIt){
|
||||||
|
|
||||||
|
_pAlgoIt->pyref = pAlgoIt;
|
||||||
|
|
||||||
|
std::cout << "pAlgoIt OK " << std::endl;
|
||||||
|
|
||||||
|
//seg fault
|
||||||
|
//PyObject *pGetPath = PyObject_GetAttrString(_pAlgoIt, "getItPath");
|
||||||
|
|
||||||
|
AutoPyRef name_attr = PyObject_GetAttrString(*_pAlgoIt, "path");
|
||||||
|
|
||||||
|
if (!!name_attr && PyUnicode_Check(name_attr)) {
|
||||||
|
const char* name = PyUnicode_AsUTF8(name_attr);
|
||||||
|
std::cout << "name: " << name << std::endl;
|
||||||
|
} else {
|
||||||
|
std::cerr << "Error: Attribute 'name' not found" << std::endl;
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
std::cerr << "pAlgoIt KO" << std::endl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
/*!
|
/*!
|
||||||
* \brief sort submeshes according to stored mesh order
|
* \brief sort submeshes according to stored mesh order
|
||||||
|
@ -392,6 +392,10 @@ class SMESH_EXPORT SMESH_Mesh
|
|||||||
|
|
||||||
std::ostream& Dump(std::ostream & save);
|
std::ostream& Dump(std::ostream & save);
|
||||||
|
|
||||||
|
void* getAlgoIt();
|
||||||
|
|
||||||
|
void SetAlgoIterator(void* pAlgoIt);
|
||||||
|
|
||||||
// Parallel computation functions
|
// Parallel computation functions
|
||||||
|
|
||||||
virtual void Lock(){};
|
virtual void Lock(){};
|
||||||
@ -459,9 +463,11 @@ protected:
|
|||||||
// when group removal is invoked by hyp modification (issue 0020918)
|
// when group removal is invoked by hyp modification (issue 0020918)
|
||||||
// 2) to forget not loaded mesh data at hyp modification
|
// 2) to forget not loaded mesh data at hyp modification
|
||||||
TCallUp* _callUp;
|
TCallUp* _callUp;
|
||||||
|
struct PyImpl;
|
||||||
|
PyImpl *_pAlgoIt = nullptr; // python iterator object of each mesh to generate a json
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
SMESH_Mesh();
|
SMESH_Mesh();
|
||||||
SMESH_Mesh(const SMESH_Mesh&) {};
|
SMESH_Mesh(const SMESH_Mesh&) { _pAlgoIt = nullptr; }
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
@ -76,8 +76,12 @@ void SMESH_ParallelMesh::cleanup()
|
|||||||
//=============================================================================
|
//=============================================================================
|
||||||
bool SMESH_ParallelMesh::keepingTmpFolfer()
|
bool SMESH_ParallelMesh::keepingTmpFolfer()
|
||||||
{
|
{
|
||||||
|
const char* envSALOME_SMESH_DEBUG = std::getenv("SALOME_SMESH_DEBUG");
|
||||||
|
if(!!envSALOME_SMESH_DEBUG){
|
||||||
|
setenv("SMESH_KEEP_TMP", "1", 1); //1 to overwrite
|
||||||
|
}
|
||||||
const char* envVar = std::getenv("SMESH_KEEP_TMP");
|
const char* envVar = std::getenv("SMESH_KEEP_TMP");
|
||||||
|
|
||||||
if (envVar && (envVar[0] != '\0'))
|
if (envVar && (envVar[0] != '\0'))
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
|
19
src/SMESH/smesh_algoIterator.py
Normal file
19
src/SMESH/smesh_algoIterator.py
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
#testing import
|
||||||
|
import salome
|
||||||
|
import SMESH
|
||||||
|
import json
|
||||||
|
import os
|
||||||
|
|
||||||
|
class AlgoIterator:
|
||||||
|
|
||||||
|
def __init__(self, path):
|
||||||
|
self.path = path
|
||||||
|
self.jsonData = []
|
||||||
|
|
||||||
|
def getNumberOfAlgoCalls(self):
|
||||||
|
return len(self.jsonData)
|
||||||
|
|
||||||
|
def getItPath(self):
|
||||||
|
return self.path
|
||||||
|
|
||||||
|
|
@ -724,6 +724,11 @@ void SMESH_Gen_i::SetEnablePublish( CORBA::Boolean theIsEnablePublish )
|
|||||||
myIsEnablePublish = theIsEnablePublish;
|
myIsEnablePublish = theIsEnablePublish;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// void SMESH_Gen_i::SetAlgoIterator( CORBA::LongLong ptAlgoPy )
|
||||||
|
// {
|
||||||
|
// std::cout << "Mathoissssssssssssssssssssssss " << ptAlgoPy << std::endl;
|
||||||
|
// }
|
||||||
|
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
/*!
|
/*!
|
||||||
* SMESH_Gen_i::IsEnablePublish
|
* SMESH_Gen_i::IsEnablePublish
|
||||||
|
@ -165,6 +165,8 @@ public:
|
|||||||
// Set enable publishing in the study
|
// Set enable publishing in the study
|
||||||
void SetEnablePublish( CORBA::Boolean theIsEnablePublish );
|
void SetEnablePublish( CORBA::Boolean theIsEnablePublish );
|
||||||
|
|
||||||
|
//void SetAlgoIterator( CORBA::LongLong ptAlgoPy);
|
||||||
|
|
||||||
// Check enable publishing
|
// Check enable publishing
|
||||||
CORBA::Boolean IsEnablePublish();
|
CORBA::Boolean IsEnablePublish();
|
||||||
|
|
||||||
|
@ -23,6 +23,8 @@
|
|||||||
// Author : Paul RASCLE, EDF
|
// Author : Paul RASCLE, EDF
|
||||||
// Module : SMESH
|
// Module : SMESH
|
||||||
|
|
||||||
|
#include <Python.h>
|
||||||
|
|
||||||
#include "SMESH_Mesh_i.hxx"
|
#include "SMESH_Mesh_i.hxx"
|
||||||
|
|
||||||
#include "DriverMED_R_SMESHDS_Mesh.h"
|
#include "DriverMED_R_SMESHDS_Mesh.h"
|
||||||
@ -4638,6 +4640,22 @@ CORBA::Double SMESH_Mesh_i::GetComputeProgress()
|
|||||||
return 0.;
|
return 0.;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void SMESH_Mesh_i::SetAlgoIterator( CORBA::LongLong ptAlgoPy )
|
||||||
|
{
|
||||||
|
SMESH_TRY;
|
||||||
|
std::cout << "SMESH_Mesh_i.cxx::SetAlgoIterator -> " << ptAlgoPy << std::endl;
|
||||||
|
|
||||||
|
PyObject* pAlgoIt = reinterpret_cast<PyObject*>(ptAlgoPy);
|
||||||
|
std::cout << "SMESH_Mesh_i.cxx::SetAlgoIterator 2 -> " << pAlgoIt << std::endl;
|
||||||
|
|
||||||
|
|
||||||
|
_impl->SetAlgoIterator(pAlgoIt);
|
||||||
|
|
||||||
|
|
||||||
|
SMESH_CATCH( SMESH::throwCorbaException );
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
//================================================================================
|
//================================================================================
|
||||||
/*!
|
/*!
|
||||||
* \brief Return nb of nodes
|
* \brief Return nb of nodes
|
||||||
|
@ -277,6 +277,8 @@ public:
|
|||||||
|
|
||||||
CORBA::Double GetComputeProgress();
|
CORBA::Double GetComputeProgress();
|
||||||
|
|
||||||
|
void SetAlgoIterator( CORBA::LongLong ptAlgoPy);
|
||||||
|
|
||||||
SMESH::smIdType NbNodes();
|
SMESH::smIdType NbNodes();
|
||||||
|
|
||||||
SMESH::smIdType NbElements();
|
SMESH::smIdType NbElements();
|
||||||
|
@ -20,6 +20,8 @@
|
|||||||
# Author : Francis KLOSS, OCC
|
# Author : Francis KLOSS, OCC
|
||||||
# Module : SMESH
|
# Module : SMESH
|
||||||
|
|
||||||
|
import ctypes
|
||||||
|
|
||||||
import salome
|
import salome
|
||||||
from salome.geom import geomBuilder
|
from salome.geom import geomBuilder
|
||||||
|
|
||||||
@ -8082,6 +8084,21 @@ class ParallelMesh(Mesh):
|
|||||||
param2d = algo2d.Parameters()
|
param2d = algo2d.Parameters()
|
||||||
copy_param(2, param2d, hyp)
|
copy_param(2, param2d, hyp)
|
||||||
|
|
||||||
|
def setAlgoIterator(self, it):
|
||||||
|
"""
|
||||||
|
doc : to do
|
||||||
|
"""
|
||||||
|
|
||||||
|
print(id(it))
|
||||||
|
print(hex(id(it)))
|
||||||
|
ctypes.pythonapi.Py_IncRef(ctypes.py_object(it))
|
||||||
|
|
||||||
|
self.mesh.SetAlgoIterator(id(it))
|
||||||
|
|
||||||
|
#to be continued
|
||||||
|
parallelMeshIt = it.jsonData
|
||||||
|
print(parallelMeshIt)
|
||||||
|
|
||||||
pass # End of ParallelMesh
|
pass # End of ParallelMesh
|
||||||
|
|
||||||
class meshProxy(SMESH._objref_SMESH_Mesh):
|
class meshProxy(SMESH._objref_SMESH_Mesh):
|
||||||
|
Loading…
Reference in New Issue
Block a user