// 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
{
const char* interfaceName );
// Destructor
virtual ~SMESH_Gen_i();
-
+
// *****************************************
// Interface methods
// *****************************************
+ //GEOM::GEOM_Gen_ptr SetGeomEngine( const char* containerLoc );
+ void SetGeomEngine( GEOM::GEOM_Gen_ptr geomcompo );
+
+ // Set current study
+ void SetEmbeddedMode( CORBA::Boolean theMode );
+ // Get current study
+ CORBA::Boolean IsEmbeddedMode();
// Set current study
void SetCurrentStudy( SALOMEDS::Study_ptr theStudy );
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 );
// Compute mesh on a shape
CORBA::Boolean Compute( SMESH::SMESH_Mesh_ptr theMesh,
- GEOM::GEOM_Object_ptr theShapeObject )
+ GEOM::GEOM_Object_ptr theShapeObject )
+ throw ( SALOME::SALOME_Exception );
+ /*!
+ * \brief Return errors of mesh computation
+ */
+ SMESH::compute_error_array* GetComputeErrors(SMESH::SMESH_Mesh_ptr theMesh,
+ GEOM::GEOM_Object_ptr theShapeObject )
throw ( SALOME::SALOME_Exception );
// Returns true if mesh contains enough data to be computed
GEOM::GEOM_Object_ptr theSubObject )
throw ( SALOME::SALOME_Exception );
+ // Return mesh elements preventing computation of a subshape
+ SMESH::MeshPreviewStruct* GetBadInputElements( SMESH::SMESH_Mesh_ptr theMesh,
+ CORBA::Short theSubShapeID )
+ 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 );
+
+ // Concatenate the given meshes into one mesh
+ SMESH::SMESH_Mesh_ptr ConcatenateCommon(const SMESH::mesh_array& theMeshesArray,
+ CORBA::Boolean theUniteIdenticalGroups,
+ CORBA::Boolean theMergeNodesAndElements,
+ CORBA::Double theMergeTolerance,
+ CORBA::Boolean theCommonGroups)
+ throw ( SALOME::SALOME_Exception );
+
+ // Concatenate the given meshes into one mesh
+ SMESH::SMESH_Mesh_ptr Concatenate(const SMESH::mesh_array& theMeshesArray,
+ CORBA::Boolean theUniteIdenticalGroups,
+ CORBA::Boolean theMergeNodesAndElements,
+ CORBA::Double theMergeTolerance)
+ throw ( SALOME::SALOME_Exception );
+
+ // Concatenate the given meshes into one mesh
+ // Create the groups of all elements from initial meshes
+ SMESH::SMESH_Mesh_ptr ConcatenateWithGroups(const SMESH::mesh_array& theMeshesArray,
+ CORBA::Boolean theUniteIdenticalGroups,
+ CORBA::Boolean theMergeNodesAndElements,
+ CORBA::Double theMergeTolerance)
+ throw ( SALOME::SALOME_Exception );
// ****************************************************
// Interface inherited methods (from SALOMEDS::Driver)
void SavePython (SALOMEDS::Study_ptr theStudy);
- TCollection_AsciiString DumpPython_impl (int theStudyID,
+ TCollection_AsciiString DumpPython_impl (SALOMEDS::Study_ptr theStudy,
Resource_DataMapOfAsciiStringAsciiString& theObjectNames,
Resource_DataMapOfAsciiStringAsciiString& theNames,
bool isPublished,
// Register an object in a StudyContext; return object id
int RegisterObject(CORBA::Object_ptr theObject);
+ // Return id of registered object
+ CORBA::Long 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(); }
+
+ /*!
+ * \brief Find SObject for an algo
+ */
+ SALOMEDS::SObject_ptr GetAlgoSO(const ::SMESH_Algo* algo);
+
+ void UpdateParameters(CORBA::Object_ptr theObject, const char* theParameters);
+ char* GetParameters(CORBA::Object_ptr theObject);
+
private:
// Create hypothesis of given type
static void loadGeomData( SALOMEDS::SComponent_ptr theCompRoot );
private:
-
+ static GEOM::GEOM_Gen_var myGeomGen;
static CORBA::ORB_var myOrb; // ORB reference
static PortableServer::POA_var myPoa; // POA reference
static SALOME_NamingService* myNS; // Naming Service
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;