// 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
//
//
//
#ifndef _SMESH_GEN_I_HXX_
#define _SMESH_GEN_I_HXX_
+#include "SMESH.hxx"
+
#include <SALOMEconfig.h>
#include CORBA_SERVER_HEADER(SMESH_Gen)
#include CORBA_SERVER_HEADER(SMESH_Mesh)
// ===========================================================
// Study context - stores study-connected objects references
// ==========================================================
-class StudyContext
+class SMESH_I_EXPORT StudyContext
{
public:
// constructor
void mapOldToNew( const int oldId, const int newId ) {
mapIdToId[ oldId ] = newId;
}
+ // get old id by a new one
+ int getOldId( const int newId ) {
+ map<int, int>::iterator imap;
+ for ( imap = mapIdToId.begin(); imap != mapIdToId.end(); ++imap ) {
+ if ( imap->second == newId )
+ return imap->first;
+ }
+ return 0;
+ }
private:
// get next free object identifier
// ===========================================================
// SMESH module's engine
// ==========================================================
-class SMESH_Gen_i:
+class SMESH_I_EXPORT SMESH_Gen_i:
public virtual POA_SMESH::SMESH_Gen,
public virtual Engines_Component_i
{
// Interface methods
// *****************************************
+ // Set current study
+ void SetEmbeddedMode( CORBA::Boolean theMode );
+ // Get current study
+ CORBA::Boolean IsEmbeddedMode();
+
// Set current study
void SetCurrentStudy( SALOMEDS::Study_ptr theStudy );
// Get current study
const char* theLibName)
throw ( SALOME::SALOME_Exception );
+ // Return hypothesis of given type holding parameter values of the existing mesh
+ SMESH::SMESH_Hypothesis_ptr GetHypothesisParameterValues (const char* theHypType,
+ const char* theLibName,
+ SMESH::SMESH_Mesh_ptr theMesh,
+ GEOM::GEOM_Object_ptr theGeom)
+ throw ( SALOME::SALOME_Exception );
+
// Create empty mesh on a shape
SMESH::SMESH_Mesh_ptr CreateMesh( GEOM::GEOM_Object_ptr theShapeObject )
throw ( SALOME::SALOME_Exception );
+ // Create empty mesh
+ SMESH::SMESH_Mesh_ptr CreateEmptyMesh()
+ throw ( SALOME::SALOME_Exception );
+
// Create mesh(es) and import data from UNV file
SMESH::SMESH_Mesh_ptr CreateMeshesFromUNV( const char* theFileName )
throw ( SALOME::SALOME_Exception );
GEOM::GEOM_Object_ptr theShapeObject )
throw ( SALOME::SALOME_Exception );
+ // Returns errors of hypotheses definintion
+ SMESH::algo_error_array* GetAlgoState( SMESH::SMESH_Mesh_ptr theMesh,
+ GEOM::GEOM_Object_ptr theSubObject )
+ throw ( SALOME::SALOME_Exception );
+
// Get sub-shapes unique ID's list
SMESH::long_array* GetSubShapesId( GEOM::GEOM_Object_ptr theMainShapeObject,
const SMESH::object_array& theListOfSubShape )
throw ( SALOME::SALOME_Exception );
+ // Return geometrical object the given element is built on. Publish it in study.
+ GEOM::GEOM_Object_ptr GetGeometryByMeshElement( SMESH::SMESH_Mesh_ptr theMesh,
+ CORBA::Long theElementID,
+ const char* theGeomName)
+ throw ( SALOME::SALOME_Exception );
+
+ // Return geometrical object the given element is built on. Don't publish it in study.
+ GEOM::GEOM_Object_ptr FindGeometryByMeshElement( SMESH::SMESH_Mesh_ptr theMesh,
+ CORBA::Long theElementID)
+ throw ( SALOME::SALOME_Exception );
// ****************************************************
// Interface inherited methods (from SALOMEDS::Driver)
void RemoveLastFromPythonScript (int theStudyID);
- static void AddToCurrentPyScript (const TCollection_AsciiString& theString);
-
void SavePython (SALOMEDS::Study_ptr theStudy);
TCollection_AsciiString DumpPython_impl (int theStudyID,
void CleanPythonTrace (int theStudyID);
- // Dump python comfort methods
-
- static TCollection_AsciiString& AddObject(TCollection_AsciiString& theStr,
- CORBA::Object_ptr theObject);
- // add object to script string
-
- template <class _array>
- static TCollection_AsciiString& AddArray(TCollection_AsciiString& theStr,
- const _array & array)
- // put array contents into theStr like this: "[ 1, 2, 5 ]"
- {
- ostringstream sout; // can convert long int, and TCollection_AsciiString cant
- sout << "[ ";
- for (int i = 1; i <= array.length(); i++) {
- sout << array[i-1];
- if ( i < array.length() )
- sout << ", ";
- }
- sout << " ]";
- theStr += (char*) sout.str().c_str();
- return theStr;
- }
// *****************************************
// Internal methods
// Register an object in a StudyContext; return object id
int RegisterObject(CORBA::Object_ptr theObject);
+ // Return id of registered object
+ int GetObjectId(CORBA::Object_ptr theObject);
+
+ // Return an object that previously had an oldID
+ template<class TInterface>
+ typename TInterface::_var_type GetObjectByOldId( const int oldID )
+ {
+ if ( StudyContext* myStudyContext = GetCurrentStudyContext() ) {
+ string ior = myStudyContext->getIORbyOldId( oldID );
+ if ( !ior.empty() )
+ return TInterface::_narrow(GetORB()->string_to_object( ior.c_str() ));
+ }
+ return TInterface::_nil();
+ }
+
// Get current study ID
int GetCurrentStudyID()
{ return myCurrentStudy->_is_nil() ? -1 : myCurrentStudy->StudyId(); }
GEOM_Client* myShapeReader; // Shape reader
SALOMEDS::Study_var myCurrentStudy; // Current study
+ CORBA::Boolean myIsEmbeddedMode; // Current mode
// Dump Python: trace of API methods calls
std::map < int, Handle(TColStd_HSequenceOfAsciiString) > myPythonScripts;