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=53921ba6461aeb569e55cf72ae794b9fad957de6;hp=e4589b843e09c1051fa473d3018b22447e996caf;hb=264eeb2edd6977ccf2d2bd88cbb210353f63f7c9;hpb=b0a908c0d20341651771d0249fb10882f54b2aad diff --git a/src/SMESH_I/SMESH_Gen_i.hxx b/src/SMESH_I/SMESH_Gen_i.hxx index e4589b843..53921ba64 100644 --- a/src/SMESH_I/SMESH_Gen_i.hxx +++ b/src/SMESH_I/SMESH_Gen_i.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2014 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2016 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 @@ -71,16 +71,16 @@ public: mapIdToId.clear(); } // register object in the internal map and return its id - int addObject( string theIOR ) + int addObject( std::string theIOR ) { int nextId = getNextId(); mapIdToIOR[ nextId ] = theIOR; return nextId; } // find the object id in the internal map by the IOR - int findId( string theIOR ) + int findId( std::string theIOR ) { - map::iterator imap; + std::map::iterator imap; for ( imap = mapIdToIOR.begin(); imap != mapIdToIOR.end(); ++imap ) { if ( imap->second == theIOR ) return imap->first; @@ -88,18 +88,18 @@ public: return 0; } // get object's IOR by id - string getIORbyId( const int theId ) + std::string getIORbyId( const int theId ) { if ( mapIdToIOR.find( theId ) != mapIdToIOR.end() ) return mapIdToIOR[ theId ]; - return string( "" ); + return std::string( "" ); } // get object's IOR by old id - string getIORbyOldId( const int theOldId ) + std::string getIORbyOldId( const int theOldId ) { if ( mapIdToId.find( theOldId ) != mapIdToId.end() ) return getIORbyId( mapIdToId[ theOldId ] ); - return string( "" ); + return std::string( "" ); } // maps old object id to the new one (used when restoring data) void mapOldToNew( const int oldId, const int newId ) { @@ -107,7 +107,7 @@ public: } // get old id by a new one int getOldId( const int newId ) { - map::iterator imap; + std::map::iterator imap; for ( imap = mapIdToId.begin(); imap != mapIdToId.end(); ++imap ) { if ( imap->second == newId ) return imap->first; @@ -125,8 +125,8 @@ private: return id; } - map mapIdToIOR; // persistent-to-transient map - map mapIdToId; // used to translate object from persistent to transient form + std::map mapIdToIOR; // persistent-to-transient map + std::map mapIdToId; // to translate object from persistent to transient form }; // =========================================================== @@ -154,8 +154,9 @@ public: // 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); + static SALOMEDS::SObject_ptr ObjectToSObject(CORBA::Object_ptr theObject); + // Get the SALOMEDS::Study from naming service + static SALOMEDS::Study_ptr getStudyServant(); // Get GEOM Object correspoding to TopoDS_Shape GEOM::GEOM_Object_ptr ShapeToGeomObject (const TopoDS_Shape& theShape ); // Get TopoDS_Shape correspoding to GEOM_Object @@ -182,15 +183,19 @@ 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 SMESH::SMESH_Hypothesis_ptr CreateHypothesis (const char* theHypType, @@ -205,6 +210,13 @@ public: CORBA::Boolean byMesh) 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 // ------------ /*! @@ -349,26 +361,26 @@ 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) 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) 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) throw ( SALOME::SALOME_Exception ); // Get MED version of the file by its name @@ -430,8 +442,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 ); @@ -460,19 +471,17 @@ public: // 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, @@ -480,16 +489,9 @@ public: bool& aValidScript, TCollection_AsciiString& theSavedTrace); - TCollection_AsciiString GetNewPythonLines (int theStudyID); - - void CleanPythonTrace (int theStudyID); + TCollection_AsciiString GetNewPythonLines(); - // SIMAN-related functions (check out/check in) : import data to study - virtual Engines::ListOfIdentifiers* importData(CORBA::Long studyId, - Engines::DataContainer_ptr data, - const Engines::ListOfOptions& options); - // SIMAN-related functions (check out/check in) : get modified data - virtual Engines::ListOfData* getModifiedData(CORBA::Long studyId); + void CleanPythonTrace(); // ***************************************** // Internal methods @@ -519,33 +521,26 @@ 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, + 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, @@ -555,7 +550,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); @@ -567,17 +562,14 @@ public: template 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 */ @@ -596,12 +588,52 @@ public: 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 ); @@ -613,8 +645,10 @@ private: 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; @@ -626,25 +660,26 @@ private: ::SMESH_Gen myGen; // SMESH_Gen local implementation // hypotheses managing - map myHypCreatorMap; + std::map myHypCreatorMap; + + StudyContext* myStudyContext; // study context - map myStudyContextMap; // Map of study context objects + GEOM_Client* myShapeReader; // Shape reader + CORBA::Boolean myIsEmbeddedMode; // Current mode + CORBA::Boolean myIsEnablePublish; // Enable publishing - GEOM_Client* myShapeReader; // Shape reader - SALOMEDS::Study_var myCurrentStudy; // Current study - CORBA::Boolean myIsEmbeddedMode; // Current mode + // 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< int > myLastParamIndex; - std::vector< std::string > myLastParameters; - std::string myLastObj; - int myImportedStudyId; // SIMAN: identifier of the imported in importData study to keep no-modifiection flag for getModifiedData method - int myImportedStudyChanged; // SIMAN: flag that indicates that the imported study has been changed (by creation of the additional mesh) + Handle(TColStd_HSequenceOfAsciiString) myPythonScript; + bool myIsHistoricalPythonDump; + std::vector< int > myLastParamIndex; + std::vector< std::string > myLastParameters; + std::string myLastObj; };