X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=src%2FSMESH_I%2FSMESH_Gen_i.hxx;h=b288eec86d3784c4dd7dbff3d78cfdd83b57b818;hp=a72c466f31c9f97daff0038896330d1ced30e95f;hb=6472eab132825fec572beda8276947593f85ffa1;hpb=bd4e115a78b52e3fbc016e5e30bb0e19b2a9e7d6 diff --git a/src/SMESH_I/SMESH_Gen_i.hxx b/src/SMESH_I/SMESH_Gen_i.hxx index a72c466f3..b288eec86 100644 --- a/src/SMESH_I/SMESH_Gen_i.hxx +++ b/src/SMESH_I/SMESH_Gen_i.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2019 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 @@ -6,7 +6,7 @@ // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either -// version 2.1 of the License. +// version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -36,17 +36,20 @@ #include CORBA_CLIENT_HEADER(SALOMEDS) #include CORBA_CLIENT_HEADER(SALOMEDS_Attributes) +#include "SMESH_Gen.hxx" #include "SMESH_Mesh_i.hxx" #include "SMESH_Hypothesis_i.hxx" -#include "SALOME_Component_i.hxx" -#include "SALOME_NamingService.hxx" -#include "SMESH_Gen.hxx" -#include "GEOM_Client.hxx" +#include +#include +#include + +#include #include #include #include +#include #include #include @@ -55,76 +58,36 @@ class SMESH_Mesh_i; class SALOME_LifeCycleCORBA; // =========================================================== -// Study context - stores study-connected objects references +// Study context - store study-connected objects references // ========================================================== class SMESH_I_EXPORT StudyContext { + typedef NCollection_DataMap< int, std::string > TInt2StringMap; + typedef NCollection_DataMap< int, int > TInt2IntMap; public: // constructor StudyContext() {} - // destructor - ~StudyContext() - { - mapIdToIOR.clear(); - mapIdToId.clear(); - } // register object in the internal map and return its id - int addObject( string theIOR ) - { - int nextId = getNextId(); - mapIdToIOR[ nextId ] = theIOR; - return nextId; - } + int addObject( const std::string& theIOR ); // find the object id in the internal map by the IOR - int findId( string theIOR ) - { - map::iterator imap; - for ( imap = mapIdToIOR.begin(); imap != mapIdToIOR.end(); ++imap ) { - if ( imap->second == theIOR ) - return imap->first; - } - return 0; - } + int findId( const std::string& theIOR ); // get object's IOR by id - string getIORbyId( const int theId ) - { - if ( mapIdToIOR.find( theId ) != mapIdToIOR.end() ) - return mapIdToIOR[ theId ]; - return string( "" ); - } + std::string getIORbyId( const int theId ); // get object's IOR by old id - string getIORbyOldId( const int theOldId ) - { - if ( mapIdToId.find( theOldId ) != mapIdToId.end() ) - return getIORbyId( mapIdToId[ theOldId ] ); - return 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[ oldId ] = newId; - } + void mapOldToNew( const int oldId, const int newId ); // get old id by a new one - int getOldId( const int newId ) { - map::iterator imap; - for ( imap = mapIdToId.begin(); imap != mapIdToId.end(); ++imap ) { - if ( imap->second == newId ) - return imap->first; - } - return 0; - } + int getOldId( const int newId ); + // clear data + void Clear(); private: // get next free object identifier - int getNextId() - { - int id = 1; - while( mapIdToIOR.find( id ) != mapIdToIOR.end() ) - id++; - return id; - } + int getNextId() { return mapIdToIOR.Extent() + 1; } - map mapIdToIOR; // persistent-to-transient map - map mapIdToId; // used to translate object from persistent to transient form + TInt2StringMap mapIdToIOR; // persistent-to-transient map + TInt2IntMap mapIdToId; // to translate object from persistent to transient form }; // =========================================================== @@ -146,17 +109,19 @@ public: // Get SALOME_LifeCycleCORBA object static SALOME_LifeCycleCORBA* GetLCC(); // Retrieve and get GEOM engine reference - static GEOM::GEOM_Gen_ptr GetGeomEngine(); + static GEOM::GEOM_Gen_var GetGeomEngine( bool isShaper ); + static GEOM::GEOM_Gen_var GetGeomEngine( GEOM::GEOM_Object_ptr ); // Get object of the CORBA reference static PortableServer::ServantBase_var GetServant( CORBA::Object_ptr theObject ); // Get CORBA object corresponding to the SALOMEDS::SObject static CORBA::Object_var SObjectToObject( SALOMEDS::SObject_ptr theSObject ); // Get the SALOMEDS::SObject corresponding to a CORBA object - static SALOMEDS::SObject_ptr ObjectToSObject(SALOMEDS::Study_ptr theStudy, - CORBA::Object_ptr theObject); - // Get GEOM Object correspoding to TopoDS_Shape + static SALOMEDS::SObject_ptr ObjectToSObject(CORBA::Object_ptr theObject); + // Get the SALOMEDS::Study from naming service + static SALOMEDS::Study_var getStudyServant(); + // Get GEOM Object corresponding to TopoDS_Shape GEOM::GEOM_Object_ptr ShapeToGeomObject (const TopoDS_Shape& theShape ); - // Get TopoDS_Shape correspoding to GEOM_Object + // Get TopoDS_Shape corresponding to GEOM_Object TopoDS_Shape GeomObjectToShape(GEOM::GEOM_Object_ptr theGeomObject); // Default constructor @@ -180,29 +145,53 @@ public: //GEOM::GEOM_Gen_ptr SetGeomEngine( const char* containerLoc ); void SetGeomEngine( GEOM::GEOM_Gen_ptr geomcompo ); - // Set current study + // Set embedded mode void SetEmbeddedMode( CORBA::Boolean theMode ); - // Get current study + // Check embedded mode CORBA::Boolean IsEmbeddedMode(); - // Set current study - void SetCurrentStudy( SALOMEDS::Study_ptr theStudy ); - // Get current study - SALOMEDS::Study_ptr GetCurrentStudy(); + // Set enable publishing in the study + void SetEnablePublish( CORBA::Boolean theIsEnablePublish ); + + // Check enable publishing + CORBA::Boolean IsEnablePublish(); + + // Update study + void UpdateStudy(); - // Create hypothesis/algorothm of given type + // Do provide info on objects + bool hasObjectInfo(); + + // Return an information for a given object + char* getObjectInfo(const char* entry); + + // Create hypothesis/algorithm of given type SMESH::SMESH_Hypothesis_ptr CreateHypothesis (const char* theHypType, const char* theLibName) throw ( SALOME::SALOME_Exception ); + SMESH::SMESH_Hypothesis_ptr CreateHypothesisByAverageLength( const char* theHypType, + const char* theLibName, + CORBA::Double theAverageLength, + CORBA::Boolean theQuadDominated) + 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, - CORBA::Boolean byMesh) + SMESH::SMESH_Hypothesis_ptr + GetHypothesisParameterValues (const char* theHypType, + const char* theLibName, + SMESH::SMESH_Mesh_ptr theMesh, + GEOM::GEOM_Object_ptr theGeom, + const SMESH::HypInitParams& theWay) throw ( SALOME::SALOME_Exception ); + /* + * Returns True if a hypothesis is assigned to a sole sub-mesh in a current Study + */ + CORBA::Boolean GetSoleSubMeshUsingHyp( SMESH::SMESH_Hypothesis_ptr theHyp, + SMESH::SMESH_Mesh_out theMesh, + GEOM::GEOM_Object_out theShape); + // Preferences // ------------ /*! @@ -238,7 +227,7 @@ public: SMESH::SMESH_Mesh_ptr CreateEmptyMesh() throw ( SALOME::SALOME_Exception ); - // Create mesh(es) and import data from UNV fileter + // Create a mesh and import data from an UNV file SMESH::SMESH_Mesh_ptr CreateMeshesFromUNV( const char* theFileName ) throw ( SALOME::SALOME_Exception ); @@ -252,7 +241,7 @@ public: SMESH::DriverMED_ReadStatus& theStatus ) throw ( SALOME::SALOME_Exception ); - // Create mesh(es) and import data from STL file + // Create a mesh and import data from a STL file SMESH::SMESH_Mesh_ptr CreateMeshesFromSTL( const char* theFileName ) throw ( SALOME::SALOME_Exception ); @@ -261,13 +250,34 @@ public: SMESH::DriverMED_ReadStatus& theStatus ) throw ( SALOME::SALOME_Exception ); + // Create a mesh and import data from a GMF file + SMESH::SMESH_Mesh_ptr CreateMeshesFromGMF( const char* theFileName, + CORBA::Boolean theMakeRequiredGroups, + SMESH::ComputeError_out theError) + throw ( SALOME::SALOME_Exception ); + // Copy a part of mesh 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 ); + + // 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 + // Compute mesh on a shape CORBA::Boolean Compute( SMESH::SMESH_Mesh_ptr theMesh, GEOM::GEOM_Object_ptr theShapeObject ) throw ( SALOME::SALOME_Exception ); @@ -308,16 +318,22 @@ public: SMESH::long_array& theShapesId ) throw ( SALOME::SALOME_Exception ); - // Returns errors of hypotheses definintion + // Returns errors of hypotheses definition SMESH::algo_error_array* GetAlgoState( SMESH::SMESH_Mesh_ptr theMesh, GEOM::GEOM_Object_ptr theSubObject ) - throw ( SALOME::SALOME_Exception ); + 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 ); + // Create groups of elements preventing computation of a sub-shape + SMESH::ListOfGroups* MakeGroupsOfBadInputElements( SMESH::SMESH_Mesh_ptr theMesh, + CORBA::Short theSubShapeID, + const char* theGroupName) + 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 ) @@ -335,31 +351,42 @@ public: 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) + SMESH::SMESH_Mesh_ptr ConcatenateCommon(const SMESH::ListOfIDSources& meshesArray, + CORBA::Boolean uniteIdenticalGroups, + CORBA::Boolean mergeNodesAndElements, + CORBA::Double mergeTolerance, + CORBA::Boolean commonGroups, + SMESH::SMESH_Mesh_ptr meshToAppendTo) 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) + SMESH::SMESH_Mesh_ptr Concatenate(const SMESH::ListOfIDSources& meshesArray, + CORBA::Boolean uniteIdenticalGroups, + CORBA::Boolean mergeNodesAndElements, + CORBA::Double mergeTolerance, + SMESH::SMESH_Mesh_ptr meshToAppendTo) 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) + SMESH::SMESH_Mesh_ptr ConcatenateWithGroups(const SMESH::ListOfIDSources& meshesArray, + CORBA::Boolean uniteIdenticalGroups, + CORBA::Boolean mergeNodesAndElements, + CORBA::Double mergeTolerance, + SMESH::SMESH_Mesh_ptr meshToAppendTo) throw ( SALOME::SALOME_Exception ); + // Get version of MED format being used. + char* GetMEDFileVersion(); + // Get MED version of the file by its name - CORBA::Boolean GetMEDVersion(const char* theFileName, - SMESH::MED_VERSION& theVersion); + char* GetMEDVersion(const char* theFileName); + + // 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); @@ -416,8 +443,7 @@ public: // Returns true if object can be published in the study bool CanPublishInStudy( CORBA::Object_ptr theIOR ); // Publish object in the study - SALOMEDS::SObject_ptr PublishInStudy( SALOMEDS::Study_ptr theStudy, - SALOMEDS::SObject_ptr theSObject, + SALOMEDS::SObject_ptr PublishInStudy( SALOMEDS::SObject_ptr theSObject, CORBA::Object_ptr theObject, const char* theName ) throw ( SALOME::SALOME_Exception ); @@ -425,7 +451,7 @@ public: // Copy-paste methods - returns true if object can be copied to the clipboard CORBA::Boolean CanCopy( SALOMEDS::SObject_ptr theObject ) { return false; } // Copy-paste methods - copy object to the clipboard - SALOMEDS::TMPFile* CopyFrom( SALOMEDS::SObject_ptr theObject, CORBA::Long& theObjectID ) { return false; } + SALOMEDS::TMPFile* CopyFrom( SALOMEDS::SObject_ptr theObject, CORBA::Long& theObjectID ) { return NULL; } // Copy-paste methods - returns true if object can be pasted from the clipboard CORBA::Boolean CanPaste( const char* theComponentName, CORBA::Long theObjectID ) { return false; } // Copy-paste methods - paste object from the clipboard @@ -436,34 +462,37 @@ public: return aResultSO._retn(); } + // ============ + // Version information + // ============ + + virtual char* getVersion(); + // ============ // Dump python // ============ - virtual Engines::TMPFile* DumpPython(CORBA::Object_ptr theStudy, - CORBA::Boolean isPublished, + virtual Engines::TMPFile* DumpPython(CORBA::Boolean isPublished, CORBA::Boolean isMultiFile, CORBA::Boolean& isValidScript); - void AddToPythonScript (int theStudyID, const TCollection_AsciiString& theString); + void AddToPythonScript (const TCollection_AsciiString& theString); - void RemoveLastFromPythonScript (int theStudyID); + void RemoveLastFromPythonScript(); - void SavePython (SALOMEDS::Study_ptr theStudy); + void SavePython(); - TCollection_AsciiString DumpPython_impl (SALOMEDS::Study_ptr theStudy, - Resource_DataMapOfAsciiStringAsciiString& theObjectNames, + TCollection_AsciiString DumpPython_impl (Resource_DataMapOfAsciiStringAsciiString& theObjectNames, Resource_DataMapOfAsciiStringAsciiString& theNames, bool isPublished, bool isMultiFile, bool isHistoricalDump, bool& aValidScript, - const TCollection_AsciiString& theSavedTrace); + TCollection_AsciiString& theSavedTrace); - TCollection_AsciiString GetNewPythonLines (int theStudyID); - - void CleanPythonTrace (int theStudyID); + TCollection_AsciiString GetNewPythonLines(); + void CleanPythonTrace(); // ***************************************** // Internal methods @@ -493,33 +522,29 @@ public: static long GetBallElementsGroupsTag(); // publishing methods - SALOMEDS::SComponent_ptr PublishComponent(SALOMEDS::Study_ptr theStudy); - SALOMEDS::SObject_ptr PublishMesh (SALOMEDS::Study_ptr theStudy, - SMESH::SMESH_Mesh_ptr theMesh, + SALOMEDS::SComponent_ptr PublishComponent(); + SALOMEDS::SObject_ptr PublishMesh (SMESH::SMESH_Mesh_ptr theMesh, const char* theName = 0); - SALOMEDS::SObject_ptr PublishHypothesis (SALOMEDS::Study_ptr theStudy, - SMESH::SMESH_Hypothesis_ptr theHyp, + SALOMEDS::SObject_ptr PublishHypothesis (SMESH::SMESH_Hypothesis_ptr theHyp, const char* theName = 0); - SALOMEDS::SObject_ptr PublishSubMesh (SALOMEDS::Study_ptr theStudy, - SMESH::SMESH_Mesh_ptr theMesh, + SALOMEDS::SObject_ptr PublishSubMesh (SMESH::SMESH_Mesh_ptr theMesh, SMESH::SMESH_subMesh_ptr theSubMesh, GEOM::GEOM_Object_ptr theShapeObject, const char* theName = 0); - SALOMEDS::SObject_ptr PublishGroup (SALOMEDS::Study_ptr theStudy, - SMESH::SMESH_Mesh_ptr theMesh, + SALOMEDS::SObject_ptr PublishGroup (SMESH::SMESH_Mesh_ptr theMesh, SMESH::SMESH_GroupBase_ptr theGroup, GEOM::GEOM_Object_ptr theShapeObject, const char* theName = 0); - bool AddHypothesisToShape(SALOMEDS::Study_ptr theStudy, - SMESH::SMESH_Mesh_ptr theMesh, + void UpdateIcons(SMESH::SMESH_Mesh_ptr theMesh); + void HighLightInvalid(CORBA::Object_ptr theObject, bool isInvalid); + bool IsInvalid(SALOMEDS::SObject_ptr theObject); + bool AddHypothesisToShape(SMESH::SMESH_Mesh_ptr theMesh, GEOM::GEOM_Object_ptr theShapeObject, SMESH::SMESH_Hypothesis_ptr theHyp); - bool RemoveHypothesisFromShape(SALOMEDS::Study_ptr theStudy, - SMESH::SMESH_Mesh_ptr theMesh, + bool RemoveHypothesisFromShape(SMESH::SMESH_Mesh_ptr theMesh, GEOM::GEOM_Object_ptr theShapeObject, SMESH::SMESH_Hypothesis_ptr theHyp); - SALOMEDS::SObject_ptr GetMeshOrSubmeshByShape (SALOMEDS::Study_ptr theStudy, - SMESH::SMESH_Mesh_ptr theMesh, + SALOMEDS::SObject_ptr GetMeshOrSubmeshByShape (SMESH::SMESH_Mesh_ptr theMesh, GEOM::GEOM_Object_ptr theShape); static void SetName(SALOMEDS::SObject_ptr theSObject, const char* theName, @@ -529,7 +554,7 @@ public: const char* thePixMap); // Get study context - StudyContext* GetCurrentStudyContext(); + StudyContext* GetStudyContext(); // Register an object in a StudyContext; return object id int RegisterObject(CORBA::Object_ptr theObject); @@ -539,48 +564,104 @@ public: // Return an object that previously had an oldID template - typename TInterface::_var_type GetObjectByOldId( const int oldID ) + typename TInterface::_var_type GetObjectByOldId( const int oldID ) { - if ( StudyContext* myStudyContext = GetCurrentStudyContext() ) { - string ior = myStudyContext->getIORbyOldId( oldID ); + if ( myStudyContext ) { + std::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(); - /*! * \brief Find SObject for an algo */ SALOMEDS::SObject_ptr GetAlgoSO(const ::SMESH_Algo* algo); - void UpdateParameters(/*CORBA::Object_ptr theObject,*/ const char* theParameters); + void UpdateParameters(CORBA::Object_ptr theObject, const char* theParameters); char* GetParameters(CORBA::Object_ptr theObject); - char* ParseParameters(const char* theParameters); + //char* ParseParameters(const char* theParameters); + const std::vector< int >& GetLastParamIndices() const { return myLastParamIndex; } const std::vector< std::string >& GetLastParameters() const { return myLastParameters; } + const std::string & GetLastObjEntry() const { return myLastObj; } + std::vector< std::string > GetAllParameters(const std::string& theObjectEntry) const; + + // Move objects to the specified position + void Move( const SMESH::sobject_list& what, + SALOMEDS::SObject_ptr where, + CORBA::Long row ); + + CORBA::Boolean IsApplicable ( const char* theAlgoType, + const char* theLibName, + GEOM::GEOM_Object_ptr theShapeObject, + CORBA::Boolean toCheckAll); + + SMESH::long_array* GetInsideSphere( SMESH::SMESH_IDSource_ptr meshPart, + SMESH::ElementType theElemType, + CORBA::Double theX, + CORBA::Double theY, + CORBA::Double theZ, + CORBA::Double theR); + + SMESH::long_array* GetInsideBox( SMESH::SMESH_IDSource_ptr meshPart, + SMESH::ElementType theElemType, + CORBA::Double theX1, + CORBA::Double theY1, + CORBA::Double theZ1, + CORBA::Double theX2, + CORBA::Double theY2, + CORBA::Double theZ2); + + SMESH::long_array* GetInsideCylinder( SMESH::SMESH_IDSource_ptr meshPart, + SMESH::ElementType theElemType, + CORBA::Double theX, + CORBA::Double theY, + CORBA::Double theZ, + CORBA::Double theDX, + CORBA::Double theDY, + CORBA::Double theDZ, + CORBA::Double theH, + CORBA::Double theR ); + + SMESH::long_array* GetInside( SMESH::SMESH_IDSource_ptr meshPart, + SMESH::ElementType theElemType, + GEOM::GEOM_Object_ptr theGeom, + CORBA::Double theTolerance ); private: + // Get hypothesis creator + GenericHypothesisCreator_i* getHypothesisCreator( const char* theHypName, + const char* theLibName, + std::string& thePlatformLibName) + throw ( SALOME::SALOME_Exception ); // Create hypothesis of given type SMESH::SMESH_Hypothesis_ptr createHypothesis( const char* theHypName, - const char* theLibName) - throw ( SALOME::SALOME_Exception ); - + const char* theLibName); // Create empty mesh on shape SMESH::SMESH_Mesh_ptr createMesh() throw ( SALOME::SALOME_Exception ); - static void loadGeomData( SALOMEDS::SComponent_ptr theCompRoot ); + // Check mesh icon + bool isGeomModifIcon( SMESH::SMESH_Mesh_ptr mesh ); + + // 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 ); SMESH::mesh_array* CreateMeshesFromMEDorSAUV( const char* theFileName, SMESH::DriverMED_ReadStatus& theStatus, const char* theCommandNameForPython, const char* theFileNameForPython); - void setCurrentStudy( SALOMEDS::Study_ptr theStudy, - bool theStudyIsBeingClosed=false); + std::vector _GetInside(SMESH::SMESH_IDSource_ptr meshPart, + SMESH::ElementType theElemType, + TopoDS_Shape& aShape, + double* theTolerance = NULL); private: static GEOM::GEOM_Gen_var myGeomGen; @@ -592,21 +673,26 @@ private: ::SMESH_Gen myGen; // SMESH_Gen local implementation // hypotheses managing - map myHypCreatorMap; + std::map myHypCreatorMap; - map myStudyContextMap; // Map of study context objects + StudyContext* myStudyContext; // study context - GEOM_Client* myShapeReader; // Shape reader - SALOMEDS::Study_var myCurrentStudy; // Current study - CORBA::Boolean myIsEmbeddedMode; // Current mode + GEOM_Client* myShapeReader; // Shape reader + CORBA::Boolean myIsEmbeddedMode; // Current mode + CORBA::Boolean myIsEnablePublish; // Enable publishing + + // Default color of groups + std::string myDefaultGroupColor; // To load full mesh data from study at hyp modification or not bool myToForgetMeshDataOnHypModif; // Dump Python: trace of API methods calls - std::map < int, Handle(TColStd_HSequenceOfAsciiString) > myPythonScripts; - bool myIsHistoricalPythonDump; - std::vector< std::string > myLastParameters; + Handle(TColStd_HSequenceOfAsciiString) myPythonScript; + bool myIsHistoricalPythonDump; + std::vector< int > myLastParamIndex; + std::vector< std::string > myLastParameters; + std::string myLastObj; }; @@ -618,6 +704,15 @@ namespace SMESH { return dynamic_cast(SMESH_Gen_i::GetServant(theArg).in()); } + + /*! + * \brief Function used in SMESH_CATCH to convert a caught exception to + * SALOME::SALOME_Exception + */ + inline void throwCorbaException(const char* excText) + { + THROW_SALOME_CORBA_EXCEPTION( excText, SALOME::INTERNAL_ERROR ); + } }