class SALOME_LifeCycleCORBA;
// ===========================================================
-// Study context - stores study-connected objects references
+// Study context - store study-connected objects references
// ==========================================================
class SMESH_I_EXPORT StudyContext
{
public:
// constructor
StudyContext() {}
-
// register object in the internal map and return its id
- int addObject( std::string theIOR )
- {
- int nextId = getNextId();
- mapIdToIOR.Bind( nextId, theIOR );
- return nextId;
- }
+ int addObject( const std::string& theIOR );
// find the object id in the internal map by the IOR
- int findId( std::string theIOR )
- {
- TInt2StringMap::iterator imap;
- for ( imap = mapIdToIOR.begin(); imap != mapIdToIOR.end(); ++imap ) {
- if ( *imap == theIOR )
- return imap.Iterator().Key();
- }
- return 0;
- }
+ int findId( const std::string& theIOR );
// get object's IOR by id
- std::string getIORbyId( const int theId )
- {
- if ( mapIdToIOR.IsBound( theId ) )
- return mapIdToIOR( theId );
- return std::string();
- }
+ std::string getIORbyId( const int theId );
// get object's IOR by old id
- std::string getIORbyOldId( const int theOldId )
- {
- if ( mapIdToId.IsBound( theOldId ) )
- return getIORbyId( mapIdToId( theOldId ));
- return std::string();
- }
+ std::string getIORbyOldId( const int theOldId );
// maps old object id to the new one (used when restoring data)
- void mapOldToNew( const int oldId, const int newId ) {
- mapIdToId.Bind( oldId, newId );
- }
+ void mapOldToNew( const int oldId, const int newId );
// get old id by a new one
- int getOldId( const int newId ) {
- TInt2IntMap::iterator imap;
- for ( imap = mapIdToId.begin(); imap != mapIdToId.end(); ++imap ) {
- if ( *imap == newId )
- return imap.Iterator().Key();
- }
- return 0;
- }
+ int getOldId( const int newId );
+ // clear data
+ void Clear();
private:
// get next free object identifier
- int getNextId()
- {
- return mapIdToIOR.Extent() + 1;
- }
+ int getNextId() { return mapIdToIOR.Extent() + 1; }
TInt2StringMap mapIdToIOR; // persistent-to-transient map
TInt2IntMap mapIdToId; // to translate object from persistent to transient form
// Get the SALOMEDS::SObject corresponding to a CORBA object
static SALOMEDS::SObject_ptr ObjectToSObject(CORBA::Object_ptr theObject);
// Get the SALOMEDS::Study from naming service
- static SALOMEDS::Study_ptr getStudyServant();
+ static SALOMEDS::Study_var getStudyServant();
// Get GEOM Object corresponding to TopoDS_Shape
GEOM::GEOM_Object_ptr ShapeToGeomObject (const TopoDS_Shape& theShape );
// Get TopoDS_Shape corresponding to GEOM_Object
SMESH::SMESH_Mesh_ptr CopyMesh(SMESH::SMESH_IDSource_ptr meshPart,
const char* meshName,
CORBA::Boolean toCopyGroups,
- CORBA::Boolean toKeepIDs);
+ CORBA::Boolean toKeepIDs)
+ throw ( SALOME::SALOME_Exception );
- // Compute mesh on a shape
+ // Create a mesh by copying definitions of another mesh to a given geometry
+ CORBA::Boolean CopyMeshWithGeom( SMESH::SMESH_Mesh_ptr sourceMesh,
+ GEOM::GEOM_Object_ptr newGeometry,
+ const char* meshName,
+ CORBA::Boolean toCopyGroups,
+ CORBA::Boolean toReuseHypotheses,
+ CORBA::Boolean toCopyElements,
+ SMESH::SMESH_Mesh_out newMesh,
+ SMESH::ListOfGroups_out newGroups,
+ SMESH::submesh_array_out newSubmeshes,
+ SMESH::ListOfHypothesis_out newHypotheses,
+ SMESH::string_array_out invalidEntries)
+ throw ( SALOME::SALOME_Exception );
+
+ // Compute mesh on a shape
CORBA::Boolean Compute( SMESH::SMESH_Mesh_ptr theMesh,
GEOM::GEOM_Object_ptr theShapeObject )
throw ( SALOME::SALOME_Exception );
// Get MED version of the file by its name
char* GetMEDVersion(const char* theFileName);
- // Check compatibility of file with MED format being used.
+ // Check compatibility of file with MED format being used, read only.
CORBA::Boolean CheckCompatibility(const char* theFileName);
+ // Check compatibility of file with MED format being used, for append on write.
+ CORBA::Boolean CheckWriteCompatibility(const char* theFileName);
+
// Get names of meshes defined in file with the specified name
SMESH::string_array* GetMeshNames(const char* theFileName);
SMESH::SMESH_GroupBase_ptr theGroup,
GEOM::GEOM_Object_ptr theShapeObject,
const char* theName = 0);
+ void UpdateIcons(SMESH::SMESH_Mesh_ptr theMesh);
+ void HighLightInvalid(CORBA::Object_ptr theObject, bool isInvalid);
bool AddHypothesisToShape(SMESH::SMESH_Mesh_ptr theMesh,
GEOM::GEOM_Object_ptr theShapeObject,
SMESH::SMESH_Hypothesis_ptr theHyp);
SMESH::SMESH_Mesh_ptr createMesh()
throw ( SALOME::SALOME_Exception );
+ // Create a sub-mesh on a geometry that is not a sub-shape of the main shape
+ // for the case where a valid sub-shape not found by CopyMeshWithGeom()
+ SMESH::SMESH_subMesh_ptr createInvalidSubMesh( SMESH::SMESH_Mesh_ptr mesh,
+ GEOM::GEOM_Object_ptr strangerGeom,
+ const char* name );
+
+ void highLightInvalid( SALOMEDS::SObject_ptr theSObject, bool isInvalid );
+
static void loadGeomData( SALOMEDS::SComponent_ptr theCompRoot );
SMESH::mesh_array* CreateMeshesFromMEDorSAUV( const char* theFileName,